commit 7c17aa78436538241c09fc7d633904d3c063011e Author: kurogeek Date: Tue Nov 11 14:55:29 2025 +0700 initial commit diff --git a/think-backend.greaterchiangmai.com/.editorconfig b/think-backend.greaterchiangmai.com/.editorconfig new file mode 100644 index 0000000..8f0de65 --- /dev/null +++ b/think-backend.greaterchiangmai.com/.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/think-backend.greaterchiangmai.com/.env.example b/think-backend.greaterchiangmai.com/.env.example new file mode 100644 index 0000000..ea0665b --- /dev/null +++ b/think-backend.greaterchiangmai.com/.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/think-backend.greaterchiangmai.com/.gitattributes b/think-backend.greaterchiangmai.com/.gitattributes new file mode 100644 index 0000000..fcb21d3 --- /dev/null +++ b/think-backend.greaterchiangmai.com/.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/think-backend.greaterchiangmai.com/.gitignore b/think-backend.greaterchiangmai.com/.gitignore new file mode 100644 index 0000000..e2d7594 --- /dev/null +++ b/think-backend.greaterchiangmai.com/.gitignore @@ -0,0 +1,20 @@ +/.phpunit.cache +/node_modules +/public/build +/public/hot +/public/uploads +/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/think-backend.greaterchiangmai.com/.htaccess b/think-backend.greaterchiangmai.com/.htaccess new file mode 100644 index 0000000..1190d1d --- /dev/null +++ b/think-backend.greaterchiangmai.com/.htaccess @@ -0,0 +1,9 @@ + + + RewriteEngine On + RewriteRule ^.well-known/ - [L,NC] + RewriteCond %{HTTPS} !=on + RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] + RewriteRule ^(.*)$ public/$1 [L] + + \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/README.md b/think-backend.greaterchiangmai.com/README.md new file mode 100644 index 0000000..1a4c26b --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/app/.DS_Store b/think-backend.greaterchiangmai.com/app/.DS_Store new file mode 100644 index 0000000..cab28ab Binary files /dev/null and b/think-backend.greaterchiangmai.com/app/.DS_Store differ diff --git a/think-backend.greaterchiangmai.com/app/Console/Kernel.php b/think-backend.greaterchiangmai.com/app/Console/Kernel.php new file mode 100644 index 0000000..e6b9960 --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Console/Kernel.php @@ -0,0 +1,27 @@ +command('inspire')->hourly(); + } + + /** + * Register the commands for the application. + */ + protected function commands(): void + { + $this->load(__DIR__.'/Commands'); + + require base_path('routes/console.php'); + } +} diff --git a/think-backend.greaterchiangmai.com/app/Exceptions/Handler.php b/think-backend.greaterchiangmai.com/app/Exceptions/Handler.php new file mode 100644 index 0000000..56af264 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/app/Http/.DS_Store b/think-backend.greaterchiangmai.com/app/Http/.DS_Store new file mode 100644 index 0000000..fe38c0c Binary files /dev/null and b/think-backend.greaterchiangmai.com/app/Http/.DS_Store differ diff --git a/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/AdminController.php b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/AdminController.php new file mode 100644 index 0000000..b01d38d --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/AdminController.php @@ -0,0 +1,77 @@ +where('category_id', 1)->get(); + foreach ($subCateNoWhereElse as $item) { + $subCateId = $item->id; + + $articleCount = ArticleModel::where('active', 1) + ->where('category_id', 1) + ->whereRaw('FIND_IN_SET(?, sub_category_ids)', [$subCateId]) + ->count(); + + $data["sub_category_no_where_else"][] = [ + 'id' => $subCateId, + 'name' => $item->name, + 'article_count' => $articleCount, + ]; + } + + // Query for subcategories where category_id is 2 + $subCateQueryWhereElse = SubCategoryModel::where('active', 1)->where('category_id', 2)->get(); + foreach ($subCateQueryWhereElse as $item) { + $subCateId = $item->id; + + $articleCount = ArticleModel::where('active', 1) + ->where('category_id', 2) + ->whereRaw('FIND_IN_SET(?, sub_category_ids)', [$subCateId]) + ->count(); + + $data["sub_category_where_else"][] = [ + 'id' => $subCateId, + 'name' => $item->name, + 'article_count' => $articleCount, + ]; + } + + + // Optionally, you can calculate the total number of articles for each set + $data["total_articles_no_where_else"] = array_sum(array_column($data["sub_category_no_where_else"], 'article_count')); + $data["total_articles_where_else"] = array_sum(array_column($data["sub_category_where_else"], 'article_count')); + + $cVideo = FileVideoModel::count(); + $cSound = FileSoundModel::count(); + $cImage = FileImageModel::count(); + $cDocument = FileDocumentModel::count(); + + return View::make('backend/dashboard') + ->with('countVideoView', $cVideo) + ->with('countSoundView', $cSound) + ->with('countImageView', $cImage) + ->with('countDocumentView', $cDocument) + ->with('itemView', $data); + } + +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/ArticleController.php b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/ArticleController.php new file mode 100644 index 0000000..d683afd --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/ArticleController.php @@ -0,0 +1,353 @@ +fileHelper = $fileHelperAccess; + } + + public function index($subId = null, $fromDate = null, $toDate = null) + { + $fromDateFormatted = $fromDate ? date('Y-m-d', strtotime($fromDate)) . ' 00:00:00' : null; + $toDateFormatted = $toDate ? date('Y-m-d', strtotime($toDate)) . ' 23:59:59' : null; + + $query = ArticleModel::where('active', 1); + + if ($subId != null) { + $query->whereRaw('FIND_IN_SET(?, sub_category_ids)', [$subId]); + } + + if ($fromDate || $toDate) { + $dateConditions = []; + if ($fromDate) { + $dateConditions[] = ['article.due_date', '>=', $fromDateFormatted]; + } + if ($toDate) { + $dateConditions[] = ['article.due_date', '<=', $toDateFormatted]; + } + $query->where($dateConditions); + } + + + // Execute the query and get the results + $data = $query + ->where('category_id', 1) + ->orderBy('id', 'DESC') + ->get(); + + return View::make("backend/article/index") + ->with('itemView', $data) + ->with('fromDateView', $fromDate) + ->with('toDateView', $toDate); + } + + public function add() + { + $subCategories = SubCategoryModel::where('category_id', 1)->where('active', 1)->get(); + return View::make("backend/article/add") + ->with('subCategoriesView', $subCategories); + } + + public function insert(Request $request) + { + // keep data en + $avatar = $request->file('avatar'); + $sub_categories = $request->input('sub_categories'); + $due_date = $request->input('due_date'); + $name = $request->input('name'); + $name_en = $request->input('name_en'); + $description = $request->input('description'); + $description_en = $request->input('description_en'); + + // validate + $validator = Validator::make($request->all(), [ + 'sub_categories' => 'required', + 'due_date' => 'required', + 'name' => 'required', + 'name_en' => 'required', + 'description' => 'required', + 'description_en' => 'required', + ]); + + if ($validator->fails()) { + return Redirect::to("no-where-else/add-article") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", "Data can't empty"); + } + + if (empty($avatar)) { + return Redirect::to("no-where-else/add-article") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", "Please choose picture"); + } + // check file + if (!empty($avatar)) { + $isFileTooLarge = $this->fileHelper->checkFileSize5MB($avatar->getSize()); + if ($isFileTooLarge) { + return Redirect::to("no-where-else/add-article") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'File too large, file less then 10MB'); + } + } + + $dateObject = DateTime::createFromFormat('d-m-Y', $due_date); + $formattedDate = $dateObject->format('Y-m-d'); // Convert to YYYY-MM-DD + + + // prepared data + $data = [ + 'category_id' => 1, + 'sub_category_ids' => implode(", ", $sub_categories), + 'due_date' => $formattedDate, + 'name' => $name, + 'name_en' => $name_en, + 'description' => $description, + 'description_en' => $description_en, + 'created_at' => new DateTime(), + 'updated_at' => new DateTime(), + ]; + + // insert to database + $result = ArticleModel::insertGetId($data); + if ($result > 0) { // insert success then return ID + + // Image + if (!empty($avatar)) { + $this->uploadImageAvatar($request, $result); + } + + // redirect with message + return Redirect::to("no-where-else/article") + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Added success'); + } else { // insert fail + return Redirect::to("no-where-else/add-article") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Added category fail'); + } + } + + public function edit($id) + { + // get by id + $data = ArticleModel::where('id', $id)->first(); + if (is_null($data)) { // not found + return Redirect::to("no-where-else/article") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Not found data'); + } + + $sub_categories = SubCategoryModel::where('category_id', 1)->where('active', 1)->get(); + return View::make('backend/article/edit') + ->with('idView', $id) + ->with('itemView', $data) + ->with('subCategoriesView', $sub_categories); + } + + public function update(Request $request) + { + // keep data en + $id = $request->input('id'); + $sub_categories = $request->input('sub_categories'); + $due_date = $request->input('due_date'); + $name = $request->input('name'); + $name_en = $request->input('name_en'); + $description = $request->input('description'); + $description_en = $request->input('description_en'); + + $active = $request->input('active'); + + $avatar = $request->file('avatar'); + $imgReq = $avatar ? 'required|image|mimes:jpeg,png,jpg|max:10240' : ''; + + // validate + $validator = Validator::make($request->all(), [ + 'sub_categories' => 'required', + 'due_date' => 'required', + 'name' => 'required', + 'name_en' => 'required', + 'description' => 'required', + 'description_en' => 'required', + 'avatar' => $imgReq + ]); + + if ($validator->fails()) { + return Redirect::to("no-where-else/edit-article/" . $id) + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Data cannot be empty'); + } + + + $dateObject = DateTime::createFromFormat('d-m-Y', $due_date); + $formattedDate = $dateObject->format('Y-m-d'); // Convert to YYYY-MM-DD + $data = [ + 'category_id' => 1, + 'sub_category_ids' => implode(", ", $sub_categories), + 'due_date' => $formattedDate, + 'active' => $active, + 'name' => $name, + 'name_en' => $name_en, + 'description' => $description, + 'description_en' => $description_en, + 'active' => $active, + 'updated_at' => new DateTime(), + ]; + + // update to database + ArticleModel::where('id', $id) + ->update($data); + + if (!empty($avatar)) { + $this->uploadImageAvatar($request, $id); + } + + // redirect with message + return Redirect::to("no-where-else/article") + ->withInput() + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Updated success'); + } + + public function delete(Request $request) + { + $id = $request->input('item_id'); + ArticleModel::where('id', '=', $id)->delete(); + return response()->json([ + 'status' => true, + 'message' => "Deleted success" + ]); + } + + public function uploadImageAvatar($request, $id) + { + // local path + $localPath = '/uploads/article/' . $id; + + // request + $image = $request->file('avatar'); + + // rename + $imgName = time() . '.' . $image->extension(); + + // destination + $destinationUrl = url($localPath); + $destinationPath = public_path($localPath); + + // create folder + if (File::isDirectory($destinationPath . '/original') == false) { + File::makeDirectory($destinationPath . '/original', 0777, true); + } + if (File::isDirectory($destinationPath . '/thumbnail') == false) { + File::makeDirectory($destinationPath . '/thumbnail', 0777, true); + } + + // call lib + $img = Image::make($image->path()); + + // save original + $img->save($destinationPath . '/original/' . $imgName); + + // save thumbnail + $img->resize(1200, 1200, function ($constraint) { + $constraint->aspectRatio(); + })->save($destinationPath . '/thumbnail/' . $imgName); + + // update db + $dataImage = [ + 'image_url' => $destinationUrl, + 'image_name' => $imgName + ]; + ArticleModel::where('id', $id) + ->update($dataImage); + } + + + // Handle file or URL upload based on ImageTool configuration + public function uploadImage(Request $request) + { + if ($request->hasFile('image')) { + return $this->handleFileUpload($request); + } elseif ($request->has('url')) { + return $this->handleUrlUpload($request->input('url')); + } + + return response()->json(['error' => 'No valid input provided'], 400); + } + + // Handle file upload + private function handleFileUpload($request) + { + $image = $request->file('image'); + $imgName = uniqid() . time() . '.' . $image->extension(); + $localPath = '/uploads/article/'; + + $destinationUrl = url($localPath . $imgName); + $destinationPath = public_path($localPath); + + // Ensure directory exists + if (!File::isDirectory($destinationPath)) { + File::makeDirectory($destinationPath, 0777, true); + } + + // Save original image + $img = Image::make($image->path()); + $img->save($destinationPath . $imgName); + + return response()->json([ + 'success' => 1, + 'file' => [ + 'url' => $destinationUrl + ] + ]); + } + + // Handle image upload by URL + private function handleUrlUpload($url) + { + $imgName = uniqid() . time() . '.jpg'; + $localPath = '/uploads/article/'; + $destinationUrl = url($localPath . $imgName); + $destinationPath = public_path($localPath); + + // Ensure directory exists + if (!File::isDirectory($destinationPath)) { + File::makeDirectory($destinationPath, 0777, true); + } + + // Download image from the provided URL + $img = Image::make($url); + $img->save($destinationPath . $imgName); + + return response()->json([ + 'success' => 1, + 'file' => [ + 'url' => $destinationUrl + ] + ]); + } +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/ArticleWhereElseController.php b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/ArticleWhereElseController.php new file mode 100644 index 0000000..0ed44bc --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/ArticleWhereElseController.php @@ -0,0 +1,353 @@ +fileHelper = $fileHelperAccess; + } + + public function index($subId = null, $fromDate = null, $toDate = null) + { + $fromDateFormatted = date('Y-m-d', strtotime($fromDate ?? date('Y-m-d'))) . ' 00:00:00'; + $toDateFormatted = date('Y-m-d', strtotime($toDate ?? date('Y-m-d'))) . ' 23:59:59'; + + $query = ArticleModel::where('active', 1); + + if ($subId != null) { + $query->whereRaw('FIND_IN_SET(?, sub_category_ids)', [$subId]); + } + + if ($fromDate || $toDate) { + $dateConditions = []; + if ($fromDate) { + $dateConditions[] = ['article.due_date', '>=', $fromDateFormatted]; + } + if ($toDate) { + $dateConditions[] = ['article.due_date', '<=', $toDateFormatted]; + } + $query->where($dateConditions); + } + + // Execute the query and get the results + $data = $query + ->where('category_id', 2) + ->orderBy('id', 'DESC') + ->get(); + + return View::make("backend/article-where-else/index") + ->with('itemView', $data) + ->with('fromDateView', $fromDate) + ->with('toDateView', $toDate); + } + + public function add() + { + $subCategories = SubCategoryModel::where('category_id', 2)->where('active', 1)->get(); + return View::make("backend/article-where-else/add") + ->with('subCategoriesView', $subCategories); + } + + public function insert(Request $request) + { + // keep data en + $avatar = $request->file('avatar'); + $sub_categories = $request->input('sub_categories'); + $due_date = $request->input('due_date'); + $name = $request->input('name'); + $name_en = $request->input('name_en'); + $description = $request->input('description'); + $description_en = $request->input('description_en'); + + // validate + $validator = Validator::make($request->all(), [ + 'sub_categories' => 'required', + 'due_date' => 'required', + 'name' => 'required', + 'name_en' => 'required', + 'description' => 'required', + 'description_en' => 'required', + ]); + + if ($validator->fails()) { + return Redirect::to("where-else/add-article") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", "Data can't empty"); + } + + if (empty($avatar)) { + return Redirect::to("where-else/add-article") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", "Please choose picture"); + } + // check file + if (!empty($avatar)) { + $isFileTooLarge = $this->fileHelper->checkFileSize5MB($avatar->getSize()); + if ($isFileTooLarge) { + return Redirect::to("where-else/add-article") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'File too large, file less then 10MB'); + } + } + + + $dateObject = DateTime::createFromFormat('d-m-Y', $due_date); + $formattedDate = $dateObject->format('Y-m-d'); // Convert to YYYY-MM-DD + + // prepared data + $data = [ + 'category_id' => 2, + 'sub_category_ids' => implode(", ", $sub_categories), + 'due_date' => $formattedDate, + 'name' => $name, + 'name_en' => $name_en, + 'description' => $description, + 'description_en' => $description_en, + 'created_at' => new DateTime(), + 'updated_at' => new DateTime(), + ]; + + // insert to database + $result = ArticleModel::insertGetId($data); + if ($result > 0) { // insert success then return ID + + // Image + if (!empty($avatar)) { + $this->uploadImageAvatar($request, $result); + } + + // redirect with message + return Redirect::to("where-else/article") + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Added success'); + } else { // insert fail + return Redirect::to("where-else/add-article") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Added category fail'); + } + } + + public function edit($id) + { + // get by id + $data = ArticleModel::where('id', $id)->first(); + if (is_null($data)) { // not found + return Redirect::to("where-else/article") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Not found data'); + } + + $sub_categories = SubCategoryModel::where('category_id', 2)->where('active', 1)->get(); + return View::make('backend/article-where-else/edit') + ->with('idView', $id) + ->with('itemView', $data) + ->with('subCategoriesView', $sub_categories); + } + + public function update(Request $request) + { + // keep data en + $id = $request->input('id'); + $sub_categories = $request->input('sub_categories'); + $due_date = $request->input('due_date'); + $name = $request->input('name'); + $name_en = $request->input('name_en'); + $description = $request->input('description'); + $description_en = $request->input('description_en'); + + $active = $request->input('active'); + + $avatar = $request->file('avatar'); + $imgReq = $avatar ? 'required|image|mimes:jpeg,png,jpg|max:10240' : ''; + + // validate + $validator = Validator::make($request->all(), [ + 'sub_categories' => 'required', + 'due_date' => 'required', + 'name' => 'required', + 'name_en' => 'required', + 'description' => 'required', + 'description_en' => 'required', + 'avatar' => $imgReq + ]); + + if ($validator->fails()) { + return Redirect::to("where-else/edit-article/" . $id) + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Data cannot be empty'); + } + + + $dateObject = DateTime::createFromFormat('d-m-Y', $due_date); + $formattedDate = $dateObject->format('Y-m-d'); // Convert to YYYY-MM-DD + $data = [ + 'category_id' => 2, + 'sub_category_ids' => implode(", ", $sub_categories), + 'due_date' => $formattedDate, + 'active' => $active, + 'name' => $name, + 'name_en' => $name_en, + 'description' => $description, + 'description_en' => $description_en, + 'active' => $active, + 'updated_at' => new DateTime(), + ]; + + // update to database + ArticleModel::where('id', $id) + ->update($data); + + if (!empty($avatar)) { + $this->uploadImageAvatar($request, $id); + } + + // redirect with message + return Redirect::to("where-else/article") + ->withInput() + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Updated success'); + } + + public function delete(Request $request) + { + $id = $request->input('item_id'); + ArticleModel::where('id', '=', $id)->delete(); + return response()->json([ + 'status' => true, + 'message' => "Deleted success" + ]); + } + + public function uploadImageAvatar($request, $id) + { + // local path + $localPath = '/uploads/article/' . $id; + + // request + $image = $request->file('avatar'); + + // rename + $imgName = time() . '.' . $image->extension(); + + // destination + $destinationUrl = url($localPath); + $destinationPath = public_path($localPath); + + // create folder + if (File::isDirectory($destinationPath . '/original') == false) { + File::makeDirectory($destinationPath . '/original', 0777, true); + } + if (File::isDirectory($destinationPath . '/thumbnail') == false) { + File::makeDirectory($destinationPath . '/thumbnail', 0777, true); + } + + // call lib + $img = Image::make($image->path()); + + // save original + $img->save($destinationPath . '/original/' . $imgName); + + // save thumbnail + $img->resize(1200, 1200, function ($constraint) { + $constraint->aspectRatio(); + })->save($destinationPath . '/thumbnail/' . $imgName); + + // update db + $dataImage = [ + 'image_url' => $destinationUrl, + 'image_name' => $imgName + ]; + ArticleModel::where('id', $id) + ->update($dataImage); + } + + + // Handle file or URL upload based on ImageTool configuration + public function uploadImage(Request $request) + { + if ($request->hasFile('image')) { + return $this->handleFileUpload($request); + } elseif ($request->has('url')) { + return $this->handleUrlUpload($request->input('url')); + } + + return response()->json(['error' => 'No valid input provided'], 400); + } + + // Handle file upload + private function handleFileUpload($request) + { + $image = $request->file('image'); + $imgName = uniqid() . time() . '.' . $image->extension(); + $localPath = '/uploads/article/'; + + $destinationUrl = url($localPath . $imgName); + $destinationPath = public_path($localPath); + + // Ensure directory exists + if (!File::isDirectory($destinationPath)) { + File::makeDirectory($destinationPath, 0777, true); + } + + // Save original image + $img = Image::make($image->path()); + $img->save($destinationPath . $imgName); + + return response()->json([ + 'success' => 1, + 'file' => [ + 'url' => $destinationUrl + ] + ]); + } + + // Handle image upload by URL + private function handleUrlUpload($url) + { + $imgName = uniqid() . time() . '.jpg'; + $localPath = '/uploads/article/'; + $destinationUrl = url($localPath . $imgName); + $destinationPath = public_path($localPath); + + // Ensure directory exists + if (!File::isDirectory($destinationPath)) { + File::makeDirectory($destinationPath, 0777, true); + } + + // Download image from the provided URL + $img = Image::make($url); + $img->save($destinationPath . $imgName); + + return response()->json([ + 'success' => 1, + 'file' => [ + 'url' => $destinationUrl + ] + ]); + } + +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/AuthenticateController.php b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/AuthenticateController.php new file mode 100644 index 0000000..47d43bf --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/AuthenticateController.php @@ -0,0 +1,226 @@ +exceptionPage = response()->view('errors/500', [], 500); + $this->emailHelper = $emailHelpAccess; + } + + public function index() + { + if (!Auth::check()) { + return Redirect::to('login'); + } else { + return Redirect::to('dashboard'); + } + } + + /* Login */ + public function login() + { + // logged + if (!Auth::check()) { + return View::make('backend/login'); + } else { + return Redirect::to('dashboard'); + } + } + + /* Authenticate */ + public function authenticate(Request $request) + { + $email = $request->input('email'); + $password = $request->input('password'); + $rememberMe = $request->input('remember_me'); + + if ($email == '' && $password == '') { + return response()->json([ + 'status' => "Fail", + 'message' => "Email and Password is required" + ]); + } else if ($email == '') { + return response()->json([ + 'status' => "Fail", + 'message' => "Email is required" + ]); + } else if ($password == '') { + return response()->json([ + 'status' => "Fail", + 'message' => "Password is required" + ]); + } + + $us = UserModel::where('email', $email) + ->first(); + if ($us == null) { + return response()->json([ + 'status' => "Fail", + 'message' => "Email was not found" + ]); + } + + if (Auth::attempt(['email' => $email, 'password' => $password], $rememberMe)) { + return response()->json([ + 'status' => "Success", + 'message' => "Success" + ]); + } else { + return response()->json([ + 'status' => "Fail", + 'message' => "Email or Password was incorrect" + ]); + } + } + + public function logout() + { + Auth::logout(); + return Redirect::to(''); + } + + public function forgotPassword() + { + return View::make('backend/forgot_password'); + } + + public function updateForgotPassword(Request $request) + { + if ($request->isMethod('post')) { + + // get data + $email = $request->input('email'); + + // get user by email + try { + + $userObject = UserModel::where('email', $email) + ->first(); + + // not found with email + if (is_null($userObject)) { + + return response()->json([ + 'status' => "Fail", + 'message' => "Not found an Email" + ]); + } + + // not an admin + if ($userObject->role == 1) { + return response()->json([ + 'status' => "Fail", + 'message' => "No permission" + ]); + } + + // create token + $token = Str::random(10); + $dataUpdate = [ + 'forgot_password_token' => $token, + 'forgot_password_date' => new DateTime() + ]; + + // update token + UserModel::where('id', $userObject->id)->update($dataUpdate); + + // send Email + if (!env('TEST_LOCAL')) { + $this->emailHelper->sendEmailForgotPassword($email, $token); + } + + return response()->json([ + 'status' => "Success", + 'message' => "Please check your email" + ]); + } catch (Exception $e) { + return response()->json([ + 'status' => "Fail", + 'message' => "Forgot password unsuccessfully" + ]); + } + } else { + return View::make('backend/forgot_password'); + } + } + + public function resetPassword($token) + { + // check token in database + try { + $userObjectByToken = UserModel::where('forgot_password_token', $token) + ->first(); + + // not found with email + if ($userObjectByToken == null) { + return redirect('no-permission') + ->with('messageFail', 'Fail') + ->with('messageDetail', 'No have permission'); + } + + return View::make('backend/reset_password') + ->with('userIdView', $userObjectByToken->id ?? 1); + } catch (Exception $e) { + // return response()->json([ + // 'status' => "Fail", + // 'message' => "Reset password unsuccessfully" + // ]); + } + } + + public function updateResetPassword(Request $request) + { + $userId = $request->input('userId'); + $newPassword = $request->input('password'); + + try { + $userObj = UserModel::where('id', $userId) + ->first(); + + $data = [ + 'password' => Hash::make($newPassword), + 'forgot_password_token' => '', + 'forgot_password_date' => null + ]; + + + // set new password + UserModel::where('id', $userId)->update($data); + + // send Email new password + if (!env('TEST_LOCAL')) { + $this->emailHelper->sendEmailResetPassword($userObj->email, $newPassword); + } + + return response()->json([ + 'status' => "Success", + 'message' => "Reset password success" + ]); + } catch (Exception $e) { + return response()->json([ + 'status' => "Fail", + 'message' => "Reset password unsuccessfully" + ]); + } + } +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/CategoryController.php b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/CategoryController.php new file mode 100644 index 0000000..a1307d8 --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/CategoryController.php @@ -0,0 +1,275 @@ +fileHelper = $fileHelperAccess; + } + + public function index() + { + $data = CategoryModel::get(); + return View::make("backend/category/index") + ->with('itemView', $data); + } + + public function add() + { + return View::make("backend/category/add"); + } + + public function insert(Request $request) + { + // keep data en + $name = $request->input('name'); + $name_en = $request->input('name_en'); + $avatar = $request->file('avatar'); + + // validate + $validator = Validator::make($request->all(), [ + 'name' => 'required', + 'name_en' => 'required', + ]); + + if ($validator->fails()) { + return Redirect::to("category/add") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", "Data can't empty"); + } + + // Image empty + if (empty($avatar)) { + return Redirect::to("category/add") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", "Please choose picture"); + } + + // Check name exist + $countExist = CategoryModel::where('name', '=', $name) + ->orWhere('name_en', '=', $name_en) + ->count(); + + if ($countExist > 0) { + return Redirect::to("category/add") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Name already exist'); + } + + // check file + if (!empty($avatar)) { + $isFileTooLarge = $this->fileHelper->checkFileSize5MB($avatar->getSize()); + if ($isFileTooLarge) { + return Redirect::to("category/add") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'File too large, file less then 10MB'); + } + } + + + // prepared data + $data = [ + 'name' => $name, + 'name_en' => $name_en, + 'active' => 1, + 'created_at' => new DateTime(), + 'updated_at' => new DateTime(), + ]; + + + // insert to database + $result = CategoryModel::insertGetId($data); + if ($result > 0) { // insert success then return ID + + // Image + if (!empty($avatar)) { + $this->uploadImage($request, $result); + } + + // redirect with message + return Redirect::to("category") + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Added success'); + } else { // insert fail + return Redirect::to("category/add") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Added category fail'); + } + } + + public function edit($id) + { + // get by id + $data = CategoryModel::where('id', $id)->first(); + if (is_null($data)) { // not found + return Redirect::to("category") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Not found data'); + } + + return View::make('backend/category/edit') + ->with('idView', $id) + ->with('itemView', $data); + } + + public function update(Request $request) + { + // keep data en + $id = $request->input('id'); + $name = $request->input('name'); + $name_en = $request->input('name_en'); + $active = $request->input('active'); + + $avatar = $request->file('avatar'); + $imgReq = $avatar ? 'required|image|mimes:jpeg,png,jpg|max:10240' : ''; + + // validate + $validator = Validator::make($request->all(), [ + 'name' => 'required', + 'name_en' => 'required', + 'avatar' => $imgReq + ]); + + if ($validator->fails()) { + return Redirect::to("category/edit/" . $id) + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Data cannot be empty'); + } + + // Exist + $countExist = CategoryModel::where('id', '!=', $id) + ->where(function ($query) use ($name, $name_en) { + $query->where('name', '=', $name) + ->orWhere('name_en', '=', $name_en); + }) + ->count(); + + + if ($countExist > 0) { + + return Redirect::to("category/edit/" . $id) + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Name already exist'); + } + + $data = [ + 'name' => $name, + 'name_en' => $name_en, + 'active' => $active, + 'updated_at' => new DateTime(), + ]; + + // update to database + CategoryModel::where('id', $id) + ->update($data); + + // Image + if (!empty($avatar)) { + $this->uploadImage($request, $id); + } + + // redirect with message + return Redirect::to("category") + ->withInput() + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Updated success'); + } + + public function delete(Request $request) + { + $id = $request->input('item_id'); + + // delete category in database + $result = CategoryModel::where('id', '=', $id) + ->delete(); + if ($result) { // return true, success + + return response()->json([ + 'status' => true, + 'message' => "Deleted success" + ]); + + // return Redirect::to("category") + // ->with("messageSuccess", "Success") + // ->with("messageDetail", 'Deleted success'); + } else { // return false, fail + return response()->json([ + 'status' => false, + 'message' => "Deleted fail" + ]); + // return Redirect::to("category") + // ->withInput() + // ->with("messageFail", "Fail") + // ->with("messageDetail", 'Deleted fail'); + } + } + + public function uploadImage($request, $id) + { + // local path + $localPath = '/uploads/category/' . $id; + + // request + $image = $request->file('avatar'); + + // rename + $imgName = time() . '.' . $image->extension(); + + // destination + $destinationUrl = url($localPath); + $destinationPath = public_path($localPath); + + // create folder + if (File::isDirectory($destinationPath . '/original') == false) { + File::makeDirectory($destinationPath . '/original', 0777, true); + } + if (File::isDirectory($destinationPath . '/thumbnail') == false) { + File::makeDirectory($destinationPath . '/thumbnail', 0777, true); + } + + // call lib + $img = Image::make($image->path()); + + // save original + $img->save($destinationPath . '/original/' . $imgName); + + // save thumbnail + $img->resize(1200, 1200, function ($constraint) { + $constraint->aspectRatio(); + })->save($destinationPath . '/thumbnail/' . $imgName); + + // update db + $dataImage = [ + 'image_url' => $destinationUrl, + 'image_name' => $imgName + ]; + CategoryModel::where('id', $id) + ->update($dataImage); + } +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/DocumentController.php b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/DocumentController.php new file mode 100644 index 0000000..b20e083 --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/DocumentController.php @@ -0,0 +1,300 @@ +orderBy('id', 'DESC') + ->get(); + + $data = FileDocumentModel::where('folder_id', '=', null) + ->orderBy('id', 'DESC') + ->paginate(100); + + $urlsDocument = $data->map(function ($fileObj) { + return [ + 'id' => $fileObj->id, + 'url' => env('R2_SCHEMA_URL') . $fileObj->name, + 'name' => $fileObj->name, + 'created_at' => $fileObj->created_at, + ]; + }); + + return View::make("backend/document/index") + ->with('folderView', $folder) + ->with('itemView', $urlsDocument); + } + + public function folder($folderId) + { + $folder = FolderModel::where('id', $folderId)->first(); + $data = FileDocumentModel::where('folder_id', $folderId) + ->orderBy('id', 'DESC') + ->paginate(100); + + $urls = $data->map(function ($fileObj) { + return [ + 'id' => $fileObj->id, + 'url' => env('R2_SCHEMA_URL') . $fileObj->name, + 'name' => $fileObj->name, + 'created_at' => $fileObj->created_at, + ]; + }); + + return View::make("backend/document/folder/index") + ->with('folderView', $folder) + ->with('itemView', $urls); + } + + public function add($folderId = null) + { + return View::make("backend/document/add") + ->with('folderIdView', $folderId); + } + + public function insert(Request $request) + { + $validated = $request->validate([ + 'fileName' => 'required|string' + ]); + + // prepared data + $folderId = $request->input('folderId'); + + $data = [ + 'folder_id' => null, + 'user_id' => Auth::user()->id, + 'name' => $validated['fileName'], + 'created_at' => new DateTime(), + ]; + + // If $folderId is not null, add it to the $data array + if ($folderId !== null) { + $data['folder_id'] = $folderId; + } + + $id = FileDocumentModel::insertGetId($data); + + // insert to database + if ($id > 0) { // insert success then return ID + return response()->json(['message' => 'File name saved successfully'], 200); + } else { // insert fail + return response()->json(['message' => 'Failed to save file name'], 500); + } + } + + public function edit($id) + { + // get by id + $data = FileDocumentModel::where('id', $id)->first(); + + if (is_null($data)) { // not found + return Redirect::to("document") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Not found data'); + } + + return View::make('backend/document/edit') + ->with('idView', $id) + ->with('itemView', $data); + } + + public function view($id) + { + // get by id + $data = FileDocumentModel::where('id', $id)->first(); + + if (is_null($data)) { // not found + return Redirect::to("document") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Not found data'); + } + + return View::make('backend/document/view') + ->with('idView', $id) + ->with('itemView', $data); + } + + public function update(Request $request) + { + // keep data en + $id = $request->input('id'); + + // redirect with message + return Redirect::to("document") + ->withInput() + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Updated success'); + } + + public function delete(Request $request) + { + $id = $request->input('item_id'); + FileDocumentModel::where('id', '=', $id)->delete(); + return response()->json([ + 'status' => true, + 'message' => "Deleted success" + ]); + } + + // Folder + + public function addFolder() + { + return View::make("backend/document/folder/add"); + } + + public function insertFolder(Request $request) + { + $validated = $request->validate([ + 'name' => 'required|string' + ]); + + // exist folder name + $exist = FolderModel::where('name', $validated['name'])->where('folder_type', 4)->first(); + if ($exist != null) { + return Redirect::to("document") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Folder already exist'); + } + + + // prepared data + $data = [ + 'name' => $validated['name'], + 'folder_type' => 4, + 'created_at' => new DateTime(), + ]; + $id = FolderModel::insertGetId($data); + + // insert to database + if ($id > 0) { // insert success then return ID + return Redirect::to("document") + ->withInput() + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Create folder success'); + } else { // insert fail + return Redirect::to("document") + ->withInput() + ->with("messageSuccess", "Fail") + ->with("messageDetail", 'Create folder unsuccess'); + } + } + + public function editFolder($id) + { + // get by id + $data = FolderModel::where('id', $id) + ->first(); + if (is_null($data)) { // not found + return Redirect::to("document/folder/" . $id) + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Not found data'); + } + + return View::make('backend/document/folder/edit') + ->with('idView', $id) + ->with('itemView', $data); + } + + public function updateFolder(Request $request) + { + // keep data en + $id = $request->input('id'); + $name = $request->input('name'); + + // validate + $validator = Validator::make($request->all(), [ + 'name' => 'required' + ]); + + if ($validator->fails()) { + return Redirect::to("document/folder/" . $id) + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Data can not be empty'); + } + + // check existing + $exist = FolderModel::where('id', '!=', $id) + ->where('folder_type', 4) + ->where('name', $name) + ->count(); + if ($exist > 0 + ) { + return Redirect::to("document/edit-folder/" . $id) + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Name already exist'); + } + + $data = [ + 'name' => $name, + ]; + + FolderModel::where('id', $id)->update($data); + + return Redirect::to("document") + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Updated success'); + } + + public function deleteFolder(Request $request) + { + $id = $request->input('item_id'); + $hasFilesInFolder = FileDocumentModel::where('folder_id', $id)->count(); + if ($hasFilesInFolder > 0) { // not found + return response()->json([ + 'status' => false, + 'message' => "Can not delete already in folder" + ]); + } else { + + // delete user in database + FolderModel::where('id', $id)->delete(); + return response()->json([ + 'status' => true, + 'message' => "Delete successfully" + ]); + } + + } + + public function downloadFolder($folderId) + { + $files = FileDocumentModel::where('folder_id', $folderId)->get(); + $zip = new ZipArchive; + $folder = FolderModel::where('id', $folderId)->first(); + $zipFileName = $folder->name . '.zip'; + $zipPath = storage_path('app/' . $zipFileName); + + if ($zip->open($zipPath, ZipArchive::CREATE | ZipArchive::OVERWRITE) === TRUE) { + foreach ($files as $file) { + $filePath = env('R2_SCHEMA_URL') . $file->name; + $fileContents = file_get_contents($filePath); // Download each file from R2 + $zip->addFromString($file->name, $fileContents); + } + $zip->close(); + } + + return response()->download($zipPath)->deleteFileAfterSend(true); + } +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/ImageController.php b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/ImageController.php new file mode 100644 index 0000000..35d81ab --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/ImageController.php @@ -0,0 +1,304 @@ +orderBy('id', 'DESC') + ->get(); + + $data = FileImageModel::orderBy('id', 'DESC') + ->where('folder_id', '=', null) + ->orderBy('id', 'DESC') + ->paginate(100); + + $urlsImage = $data->map(function ($fileObj) { + return [ + 'id' => $fileObj->id, + 'url' => env('R2_SCHEMA_URL') . $fileObj->name, + 'name' => $fileObj->name, + 'created_at' => $fileObj->created_at, + ]; + }); + + return View::make("backend/image/index") + ->with('folderView', $folder) + ->with('itemView', $urlsImage); + } + + public function folder($folderId) + { + $folder = FolderModel::where('id', $folderId)->first(); + $data = FileImageModel::where('folder_id', $folderId) + ->orderBy('id', 'DESC') + ->paginate(100); + + $urls = $data->map(function ($fileObj) { + return [ + 'id' => $fileObj->id, + 'url' => env('R2_SCHEMA_URL') . $fileObj->name, + 'name' => $fileObj->name, + 'created_at' => $fileObj->created_at, + ]; + }); + + return View::make("backend/image/folder/index") + ->with('folderView', $folder) + ->with('itemView', $urls); + } + + public function add($folderId = null) + { + return View::make("backend/image/add") + ->with('folderIdView', $folderId); + } + + public function insert(Request $request) + { + $validated = $request->validate([ + 'fileName' => 'required|string' + ]); + + // prepared data + $folderId = $request->input('folderId'); + $data = [ + 'folder_id' => null, + 'user_id' => Auth::user()->id, + 'name' => $validated['fileName'], + 'created_at' => new DateTime(), + ]; + // If $folderId is not null, add it to the $data array + if ($folderId !== null) { + $data['folder_id'] = $folderId; + } + + $id = FileImageModel::insertGetId($data); + + // insert to database + if ($id > 0) { // insert success then return ID + return response()->json(['message' => 'File name saved successfully'], 200); + } else { // insert fail + return response()->json(['message' => 'Failed to save file name'], 500); + } + } + + public function edit($id) + { + // get by id + $data = FileImageModel::where('id', $id)->first(); + + if (is_null($data)) { // not found + return Redirect::to("image") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Not found data'); + } + + return View::make('backend/image/edit') + ->with('idView', $id) + ->with('itemView', $data); + } + + public function view($id) + { + // get by id + $data = FileImageModel::where('id', $id)->first(); + + if (is_null($data)) { // not found + return Redirect::to("image") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Not found data'); + } + + return View::make('backend/image/view') + ->with('idView', $id) + ->with('itemView', $data); + } + + public function update(Request $request) + { + // keep data en + $id = $request->input('id'); + + // redirect with message + return Redirect::to("image") + ->withInput() + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Updated success'); + } + + public function delete(Request $request) + { + $id = $request->input('item_id'); + FileImageModel::where('id', '=', $id)->delete(); + return response()->json([ + 'status' => true, + 'message' => "Deleted success" + ]); + } + + + // Folder + + public function addFolder() + { + return View::make("backend/image/folder/add"); + } + + public function insertFolder(Request $request) + { + $validated = $request->validate([ + 'name' => 'required|string' + ]); + + // exist folder name + $exist = FolderModel::where('name', $validated['name']) + ->where('folder_type', 3) + ->first(); + + if ($exist != null) { + return Redirect::to("image") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Folder already exist'); + } + + + // prepared data + $data = [ + 'name' => $validated['name'], + 'folder_type' => 3, + 'created_at' => new DateTime(), + ]; + + $id = FolderModel::insertGetId($data); + + // insert to database + if ($id > 0) { // insert success then return ID + return Redirect::to("image") + ->withInput() + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Create folder success'); + } else { // insert fail + return Redirect::to("image") + ->withInput() + ->with("messageSuccess", "Fail") + ->with("messageDetail", 'Create folder unsuccess'); + } + } + + public function editFolder($id) + { + // get by id + $data = FolderModel::where('id', $id) + ->first(); + if (is_null($data)) { // not found + return Redirect::to("image/folder/" . $id) + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Not found data'); + } + + return View::make('backend/image/folder/edit') + ->with('idView', $id) + ->with('itemView', $data); + } + + public function updateFolder(Request $request) + { + // keep data en + $id = $request->input('id'); + $name = $request->input('name'); + + // validate + $validator = Validator::make($request->all(), [ + 'name' => 'required' + ]); + + if ($validator->fails()) { + return Redirect::to("image/folder/" . $id) + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Data can not be empty'); + } + + // check existing + $exist = FolderModel::where('id', '!=', $id) + ->where('folder_type', 3) + ->where('name', $name) + ->count(); + + if ( + $exist > 0 + ) { + return Redirect::to("image/edit-folder/" . $id) + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Name already exist'); + } + + $data = [ + 'name' => $name, + ]; + + FolderModel::where('id', $id)->update($data); + + return Redirect::to("image") + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Updated success'); + } + + public function deleteFolder(Request $request) + { + $id = $request->input('item_id'); + $hasFilesInFolder = FileImageModel::where('folder_id', $id)->count(); + if ($hasFilesInFolder > 0) { // not found + return response()->json([ + 'status' => false, + 'message' => "Can not delete already in folder" + ]); + } else { + // delete user in database + FolderModel::where('id', $id)->delete(); + return response()->json([ + 'status' => true, + 'message' => "Delete successfully" + ]); + } + } + + public function downloadFolder($folderId) + { + $files = FileImageModel::where('folder_id', $folderId)->get(); + $zip = new ZipArchive; + $folder = FolderModel::where('id', $folderId)->first(); + $zipFileName = $folder->name . '.zip'; + $zipPath = storage_path('app/' . $zipFileName); + + if ($zip->open($zipPath, ZipArchive::CREATE | ZipArchive::OVERWRITE) === TRUE) { + foreach ($files as $file) { + $filePath = env('R2_SCHEMA_URL') . $file->name; + $fileContents = file_get_contents($filePath); // Download each file from R2 + $zip->addFromString($file->name, $fileContents); + } + $zip->close(); + } + + return response()->download($zipPath)->deleteFileAfterSend(true); + } +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/SoundController.php b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/SoundController.php new file mode 100644 index 0000000..90e6991 --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/SoundController.php @@ -0,0 +1,303 @@ +orderBy('id', 'DESC') + ->get(); + + $data = FileSoundModel::orderBy('id', 'DESC') + ->where('folder_id', '=', null) + ->orderBy('id', 'DESC') + ->paginate(100); + + $urlsSound = $data->map(function ($fileObj) { + return [ + 'id' => $fileObj->id, + 'url' => env('R2_SCHEMA_URL') . $fileObj->name, + 'name' => $fileObj->name, + 'created_at' => $fileObj->created_at, + ]; + }); + + return View::make("backend/sound/index") + ->with('folderView', $folder) + ->with('itemView', $urlsSound); + } + + public function folder($folderId) + { + $folder = FolderModel::where('id', $folderId)->first(); + $data = FileSoundModel::where('folder_id', $folderId) + ->orderBy('id', 'DESC') + ->paginate(100); + + $urls = $data->map(function ($fileObj) { + return [ + 'id' => $fileObj->id, + 'url' => env('R2_SCHEMA_URL') . $fileObj->name, + 'name' => $fileObj->name, + 'created_at' => $fileObj->created_at, + ]; + }); + + return View::make("backend/sound/folder/index") + ->with('folderView', $folder) + ->with('itemView', $urls); + } + + public function add($folderId = null) + { + return View::make("backend/sound/add") + ->with('folderIdView', $folderId); + } + + public function insert(Request $request) + { + $validated = $request->validate([ + 'fileName' => 'required|string' + ]); + + // prepared data + $folderId = $request->input('folderId'); + $data = [ + 'folder_id' => null, + 'user_id' => Auth::user()->id, + 'name' => $validated['fileName'], + 'created_at' => new DateTime(), + ]; + // If $folderId is not null, add it to the $data array + if ($folderId !== null) { + $data['folder_id'] = $folderId; + } + + $id = FileSoundModel::insertGetId($data); + + // insert to database + if ($id > 0) { // insert success then return ID + return response()->json(['message' => 'File name saved successfully'], 200); + } else { // insert fail + return response()->json(['message' => 'Failed to save file name'], 500); + } + } + + public function edit($id) + { + // get by id + $data = FileSoundModel::where('id', $id)->first(); + + if (is_null($data)) { // not found + return Redirect::to("sound") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Not found data'); + } + + return View::make('backend/sound/edit') + ->with('idView', $id) + ->with('itemView', $data); + } + + public function view($id) + { + // get by id + $data = FileSoundModel::where('id', $id)->first(); + + if (is_null($data)) { // not found + return Redirect::to("sound") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Not found data'); + } + + return View::make('backend/sound/view') + ->with('idView', $id) + ->with('itemView', $data); + } + + public function update(Request $request) + { + // keep data en + $id = $request->input('id'); + + // redirect with message + return Redirect::to("sound") + ->withInput() + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Updated success'); + } + + public function delete(Request $request) + { + $id = $request->input('item_id'); + FileSoundModel::where('id', '=', $id)->delete(); + return response()->json([ + 'status' => true, + 'message' => "Deleted success" + ]); + } + + + // Folder + public function addFolder() + { + return View::make("backend/sound/folder/add"); + } + + public function insertFolder(Request $request) + { + $validated = $request->validate([ + 'name' => 'required|string' + ]); + + // exist folder name + $exist = FolderModel::where('name', $validated['name']) + ->where('folder_type', 2) + ->first(); + + if ($exist != null) { + return Redirect::to("sound") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Folder already exist'); + } + + + // prepared data + $data = [ + 'name' => $validated['name'], + 'folder_type' => 2, + 'created_at' => new DateTime(), + ]; + $id = FolderModel::insertGetId($data); + + // insert to database + if ($id > 0) { // insert success then return ID + return Redirect::to("sound") + ->withInput() + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Create folder success'); + } else { // insert fail + return Redirect::to("sound") + ->withInput() + ->with("messageSuccess", "Fail") + ->with("messageDetail", 'Create folder unsuccess'); + } + } + + public function editFolder($id) + { + // get by id + $data = FolderModel::where('id', $id) + ->first(); + + if (is_null($data)) { // not found + return Redirect::to("sound/folder/" . $id) + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Not found data'); + } + + return View::make('backend/sound/folder/edit') + ->with('idView', $id) + ->with('itemView', $data); + } + + public function updateFolder(Request $request) + { + // keep data en + $id = $request->input('id'); + $name = $request->input('name'); + + // validate + $validator = Validator::make($request->all(), [ + 'name' => 'required' + ]); + + if ($validator->fails()) { + return Redirect::to("sound/folder/" . $id) + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Data can not be empty'); + } + + // check existing + $exist = FolderModel::where('id', '!=', $id) + ->where('folder_type', 2) + ->where('name', $name) + ->count(); + if ($exist > 0 + ) { + return Redirect::to("sound/edit-folder/" . $id) + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Name already exist'); + } + + $data = [ + 'name' => $name, + ]; + + FolderModel::where('id', $id)->update($data); + + return Redirect::to("sound") + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Updated success'); + } + + public function deleteFolder(Request $request) + { + $id = $request->input('item_id'); + $hasFilesInFolder = FileSoundModel::where('folder_id', $id)->count(); + if ($hasFilesInFolder > 0) { // not found + return response()->json([ + 'status' => false, + 'message' => "Can not delete already in folder" + ]); + } else { + + // delete user in database + FolderModel::where('id', '=', $id)->delete(); + return response()->json([ + 'status' => true, + 'message' => "Delete successfully" + ]); + } + + } + + public function downloadFolder($folderId) + { + $files = FileSoundModel::where('folder_id', $folderId)->get(); + $zip = new ZipArchive; + $folder = FolderModel::where('id', $folderId)->first(); + $zipFileName = $folder->name . '.zip'; + $zipPath = storage_path('app/' . $zipFileName); + + if ($zip->open($zipPath, ZipArchive::CREATE | ZipArchive::OVERWRITE) === TRUE) { + foreach ($files as $file) { + $filePath = env('R2_SCHEMA_URL') . $file->name; + $fileContents = file_get_contents($filePath); // Download each file from R2 + $zip->addFromString($file->name, $fileContents); + } + $zip->close(); + } + + return response()->download($zipPath)->deleteFileAfterSend(true); + } +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/SubCategoryController.php b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/SubCategoryController.php new file mode 100644 index 0000000..32a5402 --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/SubCategoryController.php @@ -0,0 +1,278 @@ +fileHelper = $fileHelperAccess; + } + + public function index($fromDate = null, $toDate = null) + { + // $fromDateFormatted = date('Y-m-d', strtotime($fromDate ?? date('Y-m-d'))) . ' 00:0:00'; + // $toDateFormatted = date('Y-m-d', strtotime($toDate ?? date('Y-m-d'))) . ' 23:59:59'; + + // $dateConditions = [ + // ['sub_category.created_at', '>=', $fromDateFormatted], + // ['sub_category.created_at', '<=', $toDateFormatted], + // ]; + + $data = SubCategoryModel:: + where('category_id', 1) + ->where('active', 1) + // ->where($dateConditions) + ->get(); + + return View::make("backend/sub-category/index") + ->with('itemView', $data) + ->with('fromDateView', $fromDate) + ->with('toDateView', $toDate); + } + + public function add() + { + return View::make("backend/sub-category/add"); + } + + public function insert(Request $request) + { + // keep data en + $avatar = $request->file('avatar'); + // $due_date = $request->input('due_date'); + $name = $request->input('name'); + $name_en = $request->input('name_en'); + // $description = $request->input('description'); + // $description_en = $request->input('description_en'); + + // validate + $validator = Validator::make($request->all(), [ + // 'due_date' => 'required', + 'name' => 'required', + 'name_en' => 'required', + // 'description' => 'required', + // 'description_en' => 'required', + ]); + + + // $dateObject = DateTime::createFromFormat('d-m-Y', $due_date); + // $formattedDate = $dateObject->format('Y-m-d'); // Convert to YYYY-MM-DD + + if ($validator->fails()) { + return Redirect::to("no-where-else/add-sub-category") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", "Data can't empty"); + } + + if (empty($avatar)) { + return Redirect::to("no-where-else/add-sub-category") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", "Please choose picture"); + } + + // check file + if (!empty($avatar)) { + $isFileTooLarge = $this->fileHelper->checkFileSize5MB($avatar->getSize()); + if ($isFileTooLarge) { + return Redirect::to("no-where-else/add-sub-category") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'File too large, file less then 10MB'); + } + } + + // prepared data + $data = [ + 'category_id' => 1, + // 'due_date' => $formattedDate, + 'name' => $name, + 'name_en' => $name_en, + // 'description' => $description, + // 'description_en' => $description_en, + 'created_at' => new DateTime(), + 'updated_at' => new DateTime(), + ]; + + // insert to database + $result = SubCategoryModel::insertGetId($data); + if ($result > 0) { // insert success then return ID + + // Image + if (!empty($avatar)) { + $this->uploadImageAvatar($request, $result); + } + + // redirect with message + return Redirect::to("no-where-else/sub-category") + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Added success'); + } else { // insert fail + return Redirect::to("no-where-else/add-sub-category") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Added category fail'); + } + } + + public function edit($id) + { + // get by id + $data = SubCategoryModel::where('id', $id)->first(); + if (is_null($data)) { // not found + return Redirect::to("no-where-else/sub-category") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Not found data'); + } + + return View::make('backend/sub-category/edit') + ->with('idView', $id) + ->with('itemView', $data); + } + + public function update(Request $request) + { + // keep data en + $id = $request->input('id'); + // $due_date = $request->input('due_date'); + $name = $request->input('name'); + $name_en = $request->input('name_en'); + // $description = $request->input('description'); + // $description_en = $request->input('description_en'); + + $active = $request->input('active'); + + $avatar = $request->file('avatar'); + $imgReq = $avatar ? 'required|image|mimes:jpeg,png,jpg|max:10240' : ''; + + // validate + $validator = Validator::make($request->all(), [ + // 'due_date' => 'required', + 'name' => 'required', + 'name_en' => 'required', + // 'description' => 'required', + // 'description_en' => 'required', + 'avatar' => $imgReq + ]); + + if ($validator->fails()) { + return Redirect::to("edit-sub-category/" . $id) + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Data cannot be empty'); + } + + + // $dateObject = DateTime::createFromFormat('d-m-Y', $due_date); + // $formattedDate = $dateObject->format('Y-m-d'); // Convert to YYYY-MM-DD + + $data = [ + 'category_id' => 1, + // 'due_date' => $formattedDate, + 'name' => $name, + 'name_en' => $name_en, + // 'description' => $description, + // 'description_en' => $description_en, + 'active' => $active, + 'updated_at' => new DateTime(), + ]; + + // update to database + SubCategoryModel::where('id', $id) + ->update($data); + + if (!empty($avatar)) { + $this->uploadImageAvatar($request, $id); + } + + // redirect with message + return Redirect::to("no-where-else/sub-category") + ->withInput() + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Updated success'); + } + + public function delete(Request $request) + { + $id = $request->input('item_id'); + + // delete category in database + $result = SubCategoryModel::where('id', '=', $id) + ->update(['active' => 0]); + + if ($result) { // return true, success + + return response()->json([ + 'status' => true, + 'message' => "Deleted success" + ]); + + return response()->json([ + 'status' => false, + 'message' => "Deleted fail" + ]); + + } + } + + public function uploadImageAvatar($request, $id) + { + // local path + $localPath = '/uploads/no-where-else/sub-category/' . $id; + + // request + $image = $request->file('avatar'); + + // rename + $imgName = time() . '.' . $image->extension(); + + // destination + $destinationUrl = url($localPath); + $destinationPath = public_path($localPath); + + // create folder + if (File::isDirectory($destinationPath . '/original') == false) { + File::makeDirectory($destinationPath . '/original', 0777, true); + } + if (File::isDirectory($destinationPath . '/thumbnail') == false) { + File::makeDirectory($destinationPath . '/thumbnail', 0777, true); + } + + // call lib + $img = Image::make($image->path()); + + // save original + $img->save($destinationPath . '/original/' . $imgName); + + // save thumbnail + $img->resize(1200, 1200, function ($constraint) { + $constraint->aspectRatio(); + })->save($destinationPath . '/thumbnail/' . $imgName); + + // update db + $dataImage = [ + 'image_url' => $destinationUrl, + 'image_name' => $imgName + ]; + SubCategoryModel::where('id', $id) + ->update($dataImage); + } +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/SubCategoryWhereElseController.php b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/SubCategoryWhereElseController.php new file mode 100644 index 0000000..330f344 --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/SubCategoryWhereElseController.php @@ -0,0 +1,268 @@ +fileHelper = $fileHelperAccess; + } + + public function index($fromDate = null, $toDate = null) + { + // $fromDateFormatted = date('Y-m-d', strtotime($fromDate ?? date('Y-m-d'))) . ' 00:0:00'; + // $toDateFormatted = date('Y-m-d', strtotime($toDate ?? date('Y-m-d'))) . ' 23:59:59'; + + // $dateConditions = [ + // ['sub_category.created_at', '>=', $fromDateFormatted], + // ['sub_category.created_at', '<=', $toDateFormatted], + // ]; + + $data = SubCategoryModel::where('category_id', '2') + ->where('active', '1') + // ->where($dateConditions) + ->get(); + + return View::make("backend/sub-category-where-else/index") + ->with('itemView', $data) + ->with('fromDateView', $fromDate) + ->with('toDateView', $toDate); + } + + public function add() + { + return View::make("backend/sub-category-where-else/add"); + } + + public function insert(Request $request) + { + // keep data en + $avatar = $request->file('avatar'); + // $due_date = $request->input('due_date'); + $name = $request->input('name'); + $name_en = $request->input('name_en'); + // $description = $request->input('description'); + // $description_en = $request->input('description_en'); + + // validate + $validator = Validator::make($request->all(), [ + // 'due_date' => 'required', + 'name' => 'required', + 'name_en' => 'required', + // 'description' => 'required', + // 'description_en' => 'required', + ]); + + + // $dateObject = DateTime::createFromFormat('d-m-Y', $due_date); + // $formattedDate = $dateObject->format('Y-m-d'); // Convert to YYYY-MM-DD + + if ($validator->fails()) { + return Redirect::to("where-else/add-sub-category") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", "Data can't empty"); + } + + if (empty($avatar)) { + return Redirect::to("where-else/add-sub-category") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", "Please choose picture"); + } + + // check file + if (!empty($avatar)) { + $isFileTooLarge = $this->fileHelper->checkFileSize5MB($avatar->getSize()); + if ($isFileTooLarge) { + return Redirect::to("where-else/add-sub-category") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'File too large, file less then 10MB'); + } + } + + // prepared data + $data = [ + 'category_id' => 2, + // 'due_date' => $formattedDate, + 'name' => $name, + 'name_en' => $name_en, + // 'description' => $description, + // 'description_en' => $description_en, + 'created_at' => new DateTime(), + 'updated_at' => new DateTime(), + ]; + + // insert to database + $result = SubCategoryModel::insertGetId($data); + if ($result > 0) { // insert success then return ID + + // Image + if (!empty($avatar)) { + $this->uploadImageAvatar($request, $result); + } + + // redirect with message + return Redirect::to("where-else/sub-category") + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Added success'); + } else { // insert fail + return Redirect::to("where-else/add-sub-category") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Added category fail'); + } + } + + public function edit($id) + { + // get by id + $data = SubCategoryModel::where('id', $id)->first(); + if (is_null($data)) { // not found + return Redirect::to("where-else/sub-category") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Not found data'); + } + + return View::make('backend/sub-category-where-else/edit') + ->with('idView', $id) + ->with('itemView', $data); + } + + public function update(Request $request) + { + // keep data en + $id = $request->input('id'); + // $due_date = $request->input('due_date'); + $name = $request->input('name'); + $name_en = $request->input('name_en'); + // $description = $request->input('description'); + // $description_en = $request->input('description_en'); + + $active = $request->input('active'); + + $avatar = $request->file('avatar'); + $imgReq = $avatar ? 'required|image|mimes:jpeg,png,jpg|max:10240' : ''; + + // validate + $validator = Validator::make($request->all(), [ + // 'due_date' => 'required', + 'name' => 'required', + 'name_en' => 'required', + // 'description' => 'required', + // 'description_en' => 'required', + 'avatar' => $imgReq + ]); + + if ($validator->fails()) { + return Redirect::to("edit-sub-category/" . $id) + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Data cannot be empty'); + } + + + // $dateObject = DateTime::createFromFormat('d-m-Y', $due_date); + // $formattedDate = $dateObject->format('Y-m-d'); // Convert to YYYY-MM-DD + $data = [ + 'category_id' => 2, + // 'due_date' => $formattedDate, + 'name' => $name, + 'name_en' => $name_en, + // 'description' => $description, + // 'description_en' => $description_en, + 'active' => $active, + 'updated_at' => new DateTime(), + ]; + + // update to database + SubCategoryModel::where('id', $id) + ->update($data); + + if (!empty($avatar)) { + $this->uploadImageAvatar($request, $id); + } + + // redirect with message + return Redirect::to("where-else/sub-category") + ->withInput() + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Updated success'); + } + + public function delete(Request $request) + { + $id = $request->input('item_id'); + + // delete sub + SubCategoryModel::where('id', '=', $id)->delete(); + + // delete article + + return response()->json([ + 'status' => true, + 'message' => "Deleted success" + ]); + } + + public function uploadImageAvatar($request, $id) + { + // local path + $localPath = '/uploads/where-else/sub-category/' . $id; + + // request + $image = $request->file('avatar'); + + // rename + $imgName = time() . '.' . $image->extension(); + + // destination + $destinationUrl = url($localPath); + $destinationPath = public_path($localPath); + + // create folder + if (File::isDirectory($destinationPath . '/original') == false) { + File::makeDirectory($destinationPath . '/original', 0777, true); + } + if (File::isDirectory($destinationPath . '/thumbnail') == false) { + File::makeDirectory($destinationPath . '/thumbnail', 0777, true); + } + + // call lib + $img = Image::make($image->path()); + + // save original + $img->save($destinationPath . '/original/' . $imgName); + + // save thumbnail + $img->resize(1200, 1200, function ($constraint) { + $constraint->aspectRatio(); + })->save($destinationPath . '/thumbnail/' . $imgName); + + // update db + $dataImage = [ + 'image_url' => $destinationUrl, + 'image_name' => $imgName + ]; + SubCategoryModel::where('id', $id) + ->update($dataImage); + } +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/UserController.php b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/UserController.php new file mode 100644 index 0000000..5723df3 --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/UserController.php @@ -0,0 +1,304 @@ +with('userView', $userObj); + } + + public function add() + { + return View::make("backend/user/add"); + } + + public function insert(Request $request) + { + // keep data en + $role = $request->input('role'); + $first_name = $request->input('first_name'); + $last_name = $request->input('last_name'); + $email = $request->input('email'); + $password = $request->input('password'); + + $avatar = $request->file('avatar'); + + // validate + $validator = Validator::make($request->all(), [ + 'email' => 'required|email', + 'first_name' => 'required', + 'last_name' => 'required', + 'password' => 'required', + 'avatar' => 'required|image|mimes:jpeg,png,jpg|max:10240', + ]); + + if ($validator->fails()) { + return Redirect::to("user") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Data can not be empty'); + } + + // check existing email + $e = UserModel::where('email', $email)->count(); + if ($e > 0) { + return Redirect::to("user") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Email already exist'); + } + + // prepared data + $data = [ + 'first_name' => $first_name, + 'last_name' => $last_name, + 'email' => $email, + 'password' => Hash::make($password), + 'role' => $role, + 'created_at' => new DateTime(), + 'updated_at' => new DateTime(), + ]; + + // insert to database + $result = UserModel::insertGetId($data); + + if ($result > 0) { // insert success then return ID + + // Image + if (!empty($avatar)) { + $this->uploadImage($request, $result); + } + + + return Redirect::to("user") + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Added success'); + } else { // insert fail + return Redirect::to("user") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Add unsuccessfully'); + } + } + + public function edit($userId) + { + // get by id + $data = UserModel::where('id', $userId) + ->first(); + if (is_null($data)) { // not found + + return Redirect::to("user") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Not found data'); + } + + return View::make('backend/user/edit') + ->with('userIdView', $userId) + ->with('userView', $data); + } + + public function update(Request $request) + { + // keep data en + $role = $request->input('role'); + $userId = $request->input('userId'); + $active = $request->input('active'); + $first_name = $request->input('first_name'); + $last_name = $request->input('last_name'); + $email = $request->input('email'); + $password = $request->input('password'); + + $avatar = $request->file('avatar'); + $imgReq = $avatar ? 'required|image|mimes:jpeg,png,jpg|max:10240' : ''; + + // validate + $validator = Validator::make($request->all(), [ + 'first_name' => 'required', + 'last_name' => 'required', + 'email' => 'required|email', + 'avatar' => $imgReq, + ]); + + if ($validator->fails()) { + return Redirect::to("user") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Data can not be empty'); + } + + + // check existing email + if (UserModel::where('id', '!=', $userId) + ->where('email', '=', $email)->count() > 0) { + return Redirect::to("user") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Email already exist'); + } + + if ($password == "") { + $data = [ + 'active' => $active, + 'first_name' => $first_name, + 'last_name' => $last_name, + 'email' => $email, + 'role' => $role, + 'updated_at' => new DateTime(), + ]; + } else { + $data = [ + 'active' => $active, + 'first_name' => $first_name, + 'last_name' => $last_name, + 'email' => $email, + 'role' => $role, + 'updated_at' => new DateTime(), + 'password' => Hash::make($password) + ]; + } + + UserModel::where('id', $userId) + ->update($data); + + // Image + if (!empty($avatar)) { + $this->uploadImage($request, $userId); + } + + return Redirect::to("user") + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Updated success'); + } + + public function delete(Request $request) + { + $userId = $request->input('item_id'); + + $hasUser = UserModel::where('id', $userId) + ->first(); + + if (!$hasUser) { // not found + return Redirect::to("user") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", "Not found"); + } + + // delete user in database + $result = UserModel::where('id', '=', $userId) + ->delete(); + if ($result) { // return true, success + + // delete folder + File::deleteDirectory('uploads/user/' . $userId); + + + return response()->json([ + 'status' => "Success", + 'message' => "Delete successfully" + ]); + } else { // return false, fail + return response()->json([ + 'status' => "Fail", + 'message' => "Delete unsuccessfully" + ]); + } + } + + public function uploadImage($request, $result) + { + $localPath = '/uploads/user/' . $result; + $image = $request->file('avatar'); + $imgName = uniqid() . time() . '.' . $image->extension(); + + // destination + $destinationUrl = url($localPath); + $destinationPath = public_path($localPath); + + // create folder + if (File::isDirectory($destinationPath . '/original/') == false) { + File::makeDirectory($destinationPath . '/original/', 0777, true); + } + if (File::isDirectory($destinationPath . '/thumbnail/') == false) { + File::makeDirectory($destinationPath . '/thumbnail/', 0777, true); + } + + $img = Image::make($image->path()); + + // remove old + $userObj = UserModel::where('id', $result) + ->first(); + if ($userObj != null) { + $oldPathO = $destinationPath . '/original/' . $userObj->image_name; + $oldPathT = $destinationPath . '/thumbnail/' . $userObj->image_name; + + if (File::exists($oldPathO)) { + File::delete($oldPathO); + } + + if (File::exists($oldPathT)) { + File::delete($oldPathT); + } + } + + // original + $img->save($destinationPath . '/original/' . $imgName); + + // thumbnail + $img->resize(300, 300, function ($constraint) { + $constraint->aspectRatio(); + })->save($destinationPath . '/thumbnail/' . $imgName); + + // update + $dataImage = [ + 'image_url' => $destinationUrl, + 'image_name' => $imgName + ]; + + UserModel::where('id', $result) + ->update($dataImage); + } + + + public function returnJsonFieldEmpty($fieldName) + { + return response()->json([ + 'status' => 'Fail', + 'message' => $fieldName . ' ' . "can not be empty" + ]); + } + + public function returnJsonErrorMsg($message) + { + return response()->json([ + 'status' => 'Fail', + 'message' => $message + ]); + } + + public function returnJsonSuccessMsg($message) + { + return response()->json([ + 'status' => 'Success', + 'message' => $message + ]); + } + +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/VideoController.php b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/VideoController.php new file mode 100644 index 0000000..ff0febe --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Controllers/Backend/VideoController.php @@ -0,0 +1,298 @@ +orderBy('id', 'DESC') + ->get(); + + $data = FileVideoModel::where('folder_id', '=', null)->orderBy('id', 'DESC')->paginate(100); + $urlsVideo = $data->map(function ($fileObj) { + return [ + 'id' => $fileObj->id, + 'url' => env('R2_SCHEMA_URL') . $fileObj->name, + 'name' => $fileObj->name, + 'created_at' => $fileObj->created_at, + ]; + }); + + return View::make("backend/video/index") + ->with('folderView', $folder) + ->with('itemView', $urlsVideo); + } + + public function folder($folderId) + { + $folder = FolderModel::where('id', $folderId)->first(); + $data = FileVideoModel::where('folder_id', $folderId) + ->orderBy('id', 'DESC') + ->paginate(100); + + $urls = $data->map(function ($fileObj) { + return [ + 'id' => $fileObj->id, + 'url' => env('R2_SCHEMA_URL') . $fileObj->name, + 'name' => $fileObj->name, + 'created_at' => $fileObj->created_at, + ]; + }); + + return View::make("backend/video/folder/index") + ->with('folderView', $folder) + ->with('itemView', $urls); + } + + public function add($folderId = null) + { + return View::make("backend/video/add") + ->with('folderIdView', $folderId); + } + + public function insert(Request $request) + { + $validated = $request->validate([ + 'fileName' => 'required|string' + ]); + + // prepared data + $folderId = $request->input('folderId'); + $data = [ + 'folder_id' => null, + 'user_id' => Auth::user()->id, + 'name' => $validated['fileName'], + 'created_at' => new DateTime(), + ]; + // If $folderId is not null, add it to the $data array + if ($folderId !== null) { + $data['folder_id'] = $folderId; + } + + $id = FileVideoModel::insertGetId($data); + + // insert to database + if ($id > 0) { // insert success then return ID + return response()->json(['message' => 'File name saved successfully'], 200); + } else { // insert fail + return response()->json(['message' => 'Failed to save file name'], 500); + } + } + + public function edit($id) + { + // get by id + $data = FileVideoModel::where('id', $id)->first(); + + if (is_null($data)) { // not found + return Redirect::to("video") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Not found data'); + } + + return View::make('backend/video/edit') + ->with('idView', $id) + ->with('itemView', $data); + } + + public function view($id) + { + // get by id + $data = FileVideoModel::where('id', $id)->first(); + + if (is_null($data)) { // not found + return Redirect::to("video") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Not found data'); + } + + return View::make('backend/video/view') + ->with('idView', $id) + ->with('itemView', $data); + } + + public function update(Request $request) + { + // keep data en + $id = $request->input('id'); + + // redirect with message + return Redirect::to("video") + ->withInput() + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Updated success'); + } + + public function delete(Request $request) + { + $id = $request->input('item_id'); + FileVideoModel::where('id', '=', $id)->delete(); + return response()->json([ + 'status' => true, + 'message' => "Deleted success" + ]); + } + + + // Folder + public function addFolder() + { + return View::make("backend/video/folder/add"); + } + + public function insertFolder(Request $request) + { + $validated = $request->validate([ + 'name' => 'required|string' + ]); + + // exist folder name + $exist = FolderModel::where('name', $validated['name']) + ->where('folder_type', 1) + ->first(); + + if ($exist != null) { + return Redirect::to("video") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Folder already exist'); + } + + + // prepared data + $data = [ + 'name' => $validated['name'], + 'folder_type' => 1, + 'created_at' => new DateTime(), + ]; + $id = FolderModel::insertGetId($data); + + // insert to database + if ($id > 0) { // insert success then return ID + return Redirect::to("video") + ->withInput() + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Create folder success'); + } else { // insert fail + return Redirect::to("video") + ->withInput() + ->with("messageSuccess", "Fail") + ->with("messageDetail", 'Create folder unsuccess'); + } + } + + public function editFolder($id) + { + // get by id + $data = FolderModel::where('id', $id) + ->first(); + if (is_null($data)) { // not found + return Redirect::to("video/folder/" . $id) + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Not found data'); + } + + return View::make('backend/video/folder/edit') + ->with('idView', $id) + ->with('itemView', $data); + } + + public function updateFolder(Request $request) + { + // keep data en + $id = $request->input('id'); + $name = $request->input('name'); + + // validate + $validator = Validator::make($request->all(), [ + 'name' => 'required' + ]); + + if ($validator->fails()) { + return Redirect::to("video/folder/" . $id) + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Data can not be empty'); + } + + // check existing + $exist = FolderModel::where('id', '!=', $id) + ->where('folder_type', 1) + ->where('name', $name) + ->count(); + if ( + $exist > 0 + ) { + return Redirect::to("video/edit-folder/" . $id) + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Name already exist'); + } + + $data = [ + 'name' => $name, + ]; + + FolderModel::where('id', $id)->update($data); + + return Redirect::to("video") + ->with("messageSuccess", "Success") + ->with("messageDetail", 'Updated success'); + } + + public function deleteFolder(Request $request) + { + $id = $request->input('item_id'); + $hasFilesInFolder = FileVideoModel::where('folder_id', $id)->count(); + if ($hasFilesInFolder > 0) { // not found + return response()->json([ + 'status' => false, + 'message' => "Can not delete already in folder" + ]); + } else { + + // delete user in database + FolderModel::where('id', '=', $id)->delete(); + return response()->json([ + 'status' => true, + 'message' => "Delete successfully" + ]); + } + } + + public function downloadFolder($folderId) + { + $files = FileVideoModel::where('folder_id', $folderId)->get(); + $zip = new ZipArchive; + $folder = FolderModel::where('id', $folderId)->first(); + $zipFileName = $folder->name . '.zip'; + $zipPath = storage_path('app/' . $zipFileName); + + if ($zip->open($zipPath, ZipArchive::CREATE | ZipArchive::OVERWRITE) === TRUE) { + foreach ($files as $file) { + $filePath = env('R2_SCHEMA_URL') . $file->name; + $fileContents = file_get_contents($filePath); // Download each file from R2 + $zip->addFromString($file->name, $fileContents); + } + $zip->close(); + } + + return response()->download($zipPath)->deleteFileAfterSend(true); + } +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Controllers/Controller.php b/think-backend.greaterchiangmai.com/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..77ec359 --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Controllers/Controller.php @@ -0,0 +1,12 @@ +hasFile('upload')) { + $originName = $request->file('upload')->getClientOriginalName(); + $fileName = pathinfo($originName, PATHINFO_FILENAME); + $extension = $request->file('upload')->getClientOriginalExtension(); + $fileName = $fileName . '_' . time() . '.' . $extension; + + $request->file('upload')->move(public_path('/uploads/ck-editor/'), $fileName); + + $url = asset('/uploads/ck-editor/' . $fileName); + + return response()->json(['fileName' => $fileName, 'uploaded' => 1, 'url' => $url]); + } + } +} \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/app/Http/Controllers/Helpers/EmailHelperController.php b/think-backend.greaterchiangmai.com/app/Http/Controllers/Helpers/EmailHelperController.php new file mode 100644 index 0000000..c6bb2c9 --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Controllers/Helpers/EmailHelperController.php @@ -0,0 +1,73 @@ + $emailTo, + 'link' => url('reset-password/' . $token), + ]; + + Mail::send('emails.forgot-password', $details, function ($message) use ($subject, $details) { + $message->to($details['email']) + ->subject($subject); + }); + } + + public function sendEmailResetPassword($emailTo, $newPassword) + { + // subject + $subject = 'Reset Password: The Greater Chiangmai : Has Sent You a Message! No reply This email'; + + $details = [ + 'email' => $emailTo, + 'password' => $newPassword, + ]; + + Mail::send('emails.reset-password', $details, function ($message) use ($subject, $details) { + $message->to($details['email']) + ->subject($subject); + }); + } + + public function sendEmailCancelBooking($details) + { + + // subject + $subject = 'Cancel Booking: The Greater Chiangmai : Has Sent You a Message! No reply This email'; + + + Mail::send('emails.cancel-booking', $details, function ($message) use ($subject, $details) { + $message->to($details['email']) + ->subject($subject); + }); + } + + + public function sendEmailApproveBooking($details) + { + + // subject + $subject = 'Approve Booking: The Greater Chiangmai : Has Sent You a Message! No reply This email'; + + + Mail::send('emails.approve-booking', $details, function ($message) use ($subject, $details) { + $message->to($details['email']) + ->subject($subject); + }); + } +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Controllers/Helpers/EmailPhpHelperController.php b/think-backend.greaterchiangmai.com/app/Http/Controllers/Helpers/EmailPhpHelperController.php new file mode 100644 index 0000000..e06a7d5 --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Controllers/Helpers/EmailPhpHelperController.php @@ -0,0 +1,140 @@ + + + + The Greater Chiangmai.com + + + +

Hi, ' . 'The Greater Chiangmai' . ' ,

+ +

You have new contact from Contact page, please see the detail below:

+

Name: ' . $name . '

+

Phone: ' . $phone . '

+

อีเมล: ' . $email . '

+

ข้อความ: ' . $comment . '

+ +
+
+

Thanks,

+

The Greater Chiangmai

+ + + + '; + + // To send HTML mail, the Content-type header must be set + $headers = 'MIME-Version: 1.0' . "\r\n"; + $headers .= 'Content-Type: text/html; charset=utf-8' . "\r\n"; + + // Additional headers + $headers .= 'From:' . $mailSender . "\r\n"; + $headers .= "Reply-To:" . $mailSender . "\r\n"; + $headers .= "Return-Path:" . $mailSender . "\r\n"; + + // Mail it + mail($mailReceiver, $subject, $message, $headers); + } + + public function sendEmailForgotPassword($emailTo, $token) + { + $mailSender = env('MAIL_SENDER'); + + // subject + $subject = 'Forgot Password: The Greater Chiangmai : Has Sent You a Message! No reply This email'; + + $link = url('reset-password/' . $token); + + // message + $message = ' + + + + + + +

สวัสดี, ' . $emailTo . ' ,

+ +

เราได้รับคำขอให้รีเซ็ตรหัสผ่านสำหรับบัญชีของคุณ: ' . $emailTo . '

+

' . $link . '

+ +
+

Thanks,

+
+

Thai Tourism Volunteers

+ + + + '; + + // To send HTML mail, the Content-type header must be set + $headers = 'MIME-Version: 1.0' . "\r\n"; + $headers .= 'Content-Type: text/html; charset=utf-8' . "\r\n"; + $headers .= 'From:' . $mailSender . "\r\n"; + + // Mail it + mail($emailTo, $subject, $message, $headers); + } + + public function sendEmailResetPassword($emailTo, $newPassword) + { + $mailSender = env('MAIL_SENDER'); + + // subject + $subject = 'Reset Password: The Greater Chiangmai : Has Sent You a Message! No reply This email'; + + // message + $message = ' + + + + + + +

สวัสดี, ' . $emailTo . ' ,

+ +

คุณรีเซ็ตรหัสผ่านสำเร็จแล้ว

+

รหัสผ่านใหม่ของคุณคือ: ' . $newPassword . '

+ +
+

Thanks,

+

The Greater Chiangmai

+ + + + '; + + // To send HTML mail, the Content-type header must be set + $headers = 'MIME-Version: 1.0' . "\r\n"; + $headers .= 'Content-Type: text/html; charset=utf-8' . "\r\n"; + + // Additional headers + $headers .= 'From:' . $mailSender . "\r\n"; + + // Mail it + mail($emailTo, $subject, $message, $headers); + } +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Controllers/Helpers/FileHelperController.php b/think-backend.greaterchiangmai.com/app/Http/Controllers/Helpers/FileHelperController.php new file mode 100644 index 0000000..45e38c5 --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Controllers/Helpers/FileHelperController.php @@ -0,0 +1,286 @@ +IMAGE_TYPE_JPEG = "jpeg"; + $this->IMAGE_TYPE_JPG = 'jpg'; + $this->IMAGE_TYPE_PNG = 'png'; + $this->PDF_TYPE = "pdf"; + $this->DOC_TYPE = 'doc'; + $this->DOCX_TYPE = 'docx'; + $this->XLS_TYPE = 'xls'; + $this->XLSX_TYPE = 'xlsx'; + } + + /* ================== Global ================== */ + public function checkImageType($imageType) + { + return strtolower($imageType) != $this->IMAGE_TYPE_JPEG && strtolower($imageType) != $this->IMAGE_TYPE_JPG && strtolower($imageType) != $this->IMAGE_TYPE_PNG; + } + + public function checkMixType($fileType) + { + return strtolower($fileType) != $this->IMAGE_TYPE_JPEG && + strtolower($fileType) != $this->IMAGE_TYPE_JPG && + strtolower($fileType) != $this->IMAGE_TYPE_PNG && + strtolower($fileType) != $this->PDF_TYPE && + strtolower($fileType) != $this->DOC_TYPE && + strtolower($fileType) != $this->DOCX_TYPE && + strtolower($fileType) != $this->XLS_TYPE && + strtolower($fileType) != $this->XLSX_TYPE; + } + + public function checkImageSize($fileSize) + { + $customFileSize = 20; // able to change here: //Your file size is bigger than 20mb please upload file again + $limitMaxFileSize = 1024 * 1024 * $customFileSize; + return $fileSize > $limitMaxFileSize; + } + + public function checkFileType($fileType) + { + return strtolower($fileType) != $this->PDF_TYPE && + strtolower($fileType) != $this->DOC_TYPE && + strtolower($fileType) != $this->DOCX_TYPE && + strtolower($fileType) != $this->XLS_TYPE && + strtolower($fileType) != $this->XLSX_TYPE; + } + + public function checkFileTypePdfOnly($fileType) + { + return $fileType != $this->PDF_TYPE; + } + + public function checkFileSize($fileSize) + { + $customFileSize = 20; // able to change here: //Your file size is bigger than 20mb please upload file again + $limitMaxFileSize = 1024 * 1024 * $customFileSize; + return $fileSize > $limitMaxFileSize; + } + + public function checkFileSize3MB($fileSize) + { + $customFileSize = 3; // able to change here: //Your file size is bigger than 3mb please upload file again + $limitMaxFileSize = 1024 * 1024 * $customFileSize; + return $fileSize > $limitMaxFileSize; + } + + public function checkFileSize5MB($fileSize) + { + $customFileSize = 5; // able to change here: //Your file size is bigger than 3mb please upload file again + $limitMaxFileSize = 1024 * 1024 * $customFileSize; + return $fileSize > $limitMaxFileSize; + } + + + /* ================== CK Editor ================== */ + + public function uploadImageCkEditor(Request $request) + { + $image = $request->file('upload'); + $url = $this->uploadImg($image); + $funcNum = $_GET['CKEditorFuncNum']; + if ($url == 'errors') { + return ""; + } else { + return ""; + } + } + + public function uploadImg($file) + { + try { + $folder = "uploads/ckeditor/images"; + + if (File::isDirectory($folder) == false) { + Storage::makeDirectory($folder, 0777, true); + } + + $name = $file->getClientOriginalName(); + $ext = pathinfo($name, PATHINFO_EXTENSION); + $rdStr = rand(); + $date = new DateTime(); + $format = $date->format('Ymdhms'); + $newName = $format . '_' . $rdStr . '.' . $ext; + $file->move($folder, $newName); + return $folder . "/" . $newName; + } catch (Exception $e) { + return 'errors'; + } + } + + public function mimeContentTypeFile($type) + { + $typeLower = strtolower($type); + if ($typeLower === 'pdf') { + return 'application/pdf'; + } else if ($typeLower === 'xls' || $typeLower === 'xlsx') { + return 'application/octet-stream'; + } else if ($typeLower === 'doc' || $typeLower === 'docx') { + return 'application/octet-stream'; + } else { + return 'jpg'; + } + } + + public function mimeContentTypeImage($type) + { + $typeLower = strtolower($type); + if ($typeLower === 'png') { + return 'image/png'; + } else if ($typeLower === 'jpg') { + return 'image/jpeg'; + } else if ($typeLower === 'jpeg') { + return 'image/jpeg'; + } else { + return 'image/jpeg'; + } + } + + /* + public function uploadImageCkEditorOld($file) + { + try { + $folder = "uploads/files/ckeditor/images"; + + $name = $file->getClientOriginalName(); + $ext = pathinfo($name, PATHINFO_EXTENSION); + $rdStr = Uuid::generate(); + $date = new DateTime(); + $format = $date->format('Ymdhms'); + $newName = $format . '_' . $rdStr . '.' . $ext; + $file->move($folder, $newName); + + return $folder . "/" . $newName; + } catch (\Exception $e) { + return 'errors'; + } + } + */ +} +/* File Types */ +//[ +// '3gp' => 'video/3gpp', +// '7z' => 'application/x-7z-compressed', +// 'aac' => 'audio/x-aac', +// 'ai' => 'application/postscript', +// 'aif' => 'audio/x-aiff', +// 'asc' => 'text/plain', +// 'asf' => 'video/x-ms-asf', +// 'atom' => 'application/atom+xml', +// 'avi' => 'video/x-msvideo', +// 'bmp' => 'image/bmp', +// 'bz2' => 'application/x-bzip2', +// 'cer' => 'application/pkix-cert', +// 'crl' => 'application/pkix-crl', +// 'crt' => 'application/x-x509-ca-cert', +// 'css' => 'text/css', +// 'csv' => 'text/csv', +// 'cu' => 'application/cu-seeme', +// 'deb' => 'application/x-debian-package', +// 'doc' => 'application/msword', +// 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', +// 'dvi' => 'application/x-dvi', +// 'eot' => 'application/vnd.ms-fontobject', +// 'eps' => 'application/postscript', +// 'epub' => 'application/epub+zip', +// 'etx' => 'text/x-setext', +// 'flac' => 'audio/flac', +// 'flv' => 'video/x-flv', +// 'gif' => 'image/gif', +// 'gz' => 'application/gzip', +// 'htm' => 'text/html', +// 'html' => 'text/html', +// 'ico' => 'image/x-icon', +// 'ics' => 'text/calendar', +// 'ini' => 'text/plain', +// 'iso' => 'application/x-iso9660-image', +// 'jar' => 'application/java-archive', +// 'jpe' => 'image/jpeg', +// 'jpeg' => 'image/jpeg', +// 'jpg' => 'image/jpeg', +// 'js' => 'text/javascript', +// 'json' => 'application/json', +// 'latex' => 'application/x-latex', +// 'log' => 'text/plain', +// 'm4a' => 'audio/mp4', +// 'm4v' => 'video/mp4', +// 'mid' => 'audio/midi', +// 'midi' => 'audio/midi', +// 'mov' => 'video/quicktime', +// 'mkv' => 'video/x-matroska', +// 'mp3' => 'audio/mpeg', +// 'mp4' => 'video/mp4', +// 'mp4a' => 'audio/mp4', +// 'mp4v' => 'video/mp4', +// 'mpe' => 'video/mpeg', +// 'mpeg' => 'video/mpeg', +// 'mpg' => 'video/mpeg', +// 'mpg4' => 'video/mp4', +// 'oga' => 'audio/ogg', +// 'ogg' => 'audio/ogg', +// 'ogv' => 'video/ogg', +// 'ogx' => 'application/ogg', +// 'pbm' => 'image/x-portable-bitmap', +// 'pdf' => 'application/pdf', +// 'pgm' => 'image/x-portable-graymap', +// 'png' => 'image/png', +// 'pnm' => 'image/x-portable-anymap', +// 'ppm' => 'image/x-portable-pixmap', +// 'ppt' => 'application/vnd.ms-powerpoint', +// 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', +// 'ps' => 'application/postscript', +// 'qt' => 'video/quicktime', +// 'rar' => 'application/x-rar-compressed', +// 'ras' => 'image/x-cmu-raster', +// 'rss' => 'application/rss+xml', +// 'rtf' => 'application/rtf', +// 'sgm' => 'text/sgml', +// 'sgml' => 'text/sgml', +// 'svg' => 'image/svg+xml', +// 'swf' => 'application/x-shockwave-flash', +// 'tar' => 'application/x-tar', +// 'tif' => 'image/tiff', +// 'tiff' => 'image/tiff', +// 'torrent' => 'application/x-bittorrent', +// 'ttf' => 'application/x-font-ttf', +// 'txt' => 'text/plain', +// 'wav' => 'audio/x-wav', +// 'webm' => 'video/webm', +// 'webp' => 'image/webp', +// 'wma' => 'audio/x-ms-wma', +// 'wmv' => 'video/x-ms-wmv', +// 'woff' => 'application/x-font-woff', +// 'wsdl' => 'application/wsdl+xml', +// 'xbm' => 'image/x-xbitmap', +// 'xls' => 'application/vnd.ms-excel', +// 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', +// 'xml' => 'application/xml', +// 'xpm' => 'image/x-xpixmap', +// 'xwd' => 'image/x-xwindowdump', +// 'yaml' => 'text/yaml', +// 'yml' => 'text/yaml', +// 'zip' => 'application/zip', +//]; \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/app/Http/Kernel.php b/think-backend.greaterchiangmai.com/app/Http/Kernel.php new file mode 100644 index 0000000..37d4009 --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Kernel.php @@ -0,0 +1,69 @@ + + */ + 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, + ], + ]; + + /** + * 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, + 'role' => \App\Http\Middleware\RoleMiddleware::class, + ]; +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Middleware/Authenticate.php b/think-backend.greaterchiangmai.com/app/Http/Middleware/Authenticate.php new file mode 100644 index 0000000..d4ef644 --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Middleware/Authenticate.php @@ -0,0 +1,17 @@ +expectsJson() ? null : route('login'); + } +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Middleware/EncryptCookies.php b/think-backend.greaterchiangmai.com/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 0000000..867695b --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/think-backend.greaterchiangmai.com/app/Http/Middleware/PreventRequestsDuringMaintenance.php new file mode 100644 index 0000000..74cbd9a --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Middleware/PreventRequestsDuringMaintenance.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Middleware/RedirectIfAuthenticated.php b/think-backend.greaterchiangmai.com/app/Http/Middleware/RedirectIfAuthenticated.php new file mode 100644 index 0000000..afc78c4 --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Middleware/RedirectIfAuthenticated.php @@ -0,0 +1,30 @@ +check()) { + return redirect(RouteServiceProvider::HOME); + } + } + + return $next($request); + } +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Middleware/RoleMiddleware.php b/think-backend.greaterchiangmai.com/app/Http/Middleware/RoleMiddleware.php new file mode 100644 index 0000000..316973d --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Middleware/RoleMiddleware.php @@ -0,0 +1,32 @@ +role, $explode)) { + return $next($request); + } + } + + return Redirect::to('login') + ->with('messageFail', 'Fail') + ->with('messageDetail', 'No permission please contact Administrator'); + } +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Middleware/TrimStrings.php b/think-backend.greaterchiangmai.com/app/Http/Middleware/TrimStrings.php new file mode 100644 index 0000000..88cadca --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,19 @@ + + */ + protected $except = [ + 'current_password', + 'password', + 'password_confirmation', + ]; +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Middleware/TrustHosts.php b/think-backend.greaterchiangmai.com/app/Http/Middleware/TrustHosts.php new file mode 100644 index 0000000..c9c58bd --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Middleware/TrustHosts.php @@ -0,0 +1,20 @@ + + */ + public function hosts(): array + { + return [ + $this->allSubdomainsOfApplicationUrl(), + ]; + } +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Middleware/TrustProxies.php b/think-backend.greaterchiangmai.com/app/Http/Middleware/TrustProxies.php new file mode 100644 index 0000000..3391630 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/app/Http/Middleware/ValidateSignature.php b/think-backend.greaterchiangmai.com/app/Http/Middleware/ValidateSignature.php new file mode 100644 index 0000000..093bf64 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/app/Http/Middleware/VerifyCsrfToken.php b/think-backend.greaterchiangmai.com/app/Http/Middleware/VerifyCsrfToken.php new file mode 100644 index 0000000..9e86521 --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Middleware/VerifyCsrfToken.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/think-backend.greaterchiangmai.com/app/Http/Models/ArticleModel.php b/think-backend.greaterchiangmai.com/app/Http/Models/ArticleModel.php new file mode 100644 index 0000000..de534e5 --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Http/Models/ArticleModel.php @@ -0,0 +1,38 @@ + + */ + 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/think-backend.greaterchiangmai.com/app/Providers/AppServiceProvider.php b/think-backend.greaterchiangmai.com/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..452e6b6 --- /dev/null +++ b/think-backend.greaterchiangmai.com/app/Providers/AppServiceProvider.php @@ -0,0 +1,24 @@ + + */ + protected $policies = [ + // + ]; + + /** + * Register any authentication / authorization services. + */ + public function boot(): void + { + // + } +} diff --git a/think-backend.greaterchiangmai.com/app/Providers/BroadcastServiceProvider.php b/think-backend.greaterchiangmai.com/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 0000000..2be04f5 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/app/Providers/RouteServiceProvider.php b/think-backend.greaterchiangmai.com/app/Providers/RouteServiceProvider.php new file mode 100644 index 0000000..1cf5f15 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/artisan b/think-backend.greaterchiangmai.com/artisan new file mode 100644 index 0000000..67a3329 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/bootstrap/app.php b/think-backend.greaterchiangmai.com/bootstrap/app.php new file mode 100644 index 0000000..037e17d --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/bootstrap/cache/.gitignore b/think-backend.greaterchiangmai.com/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/think-backend.greaterchiangmai.com/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/think-backend.greaterchiangmai.com/composer.json b/think-backend.greaterchiangmai.com/composer.json new file mode 100644 index 0000000..31837ce --- /dev/null +++ b/think-backend.greaterchiangmai.com/composer.json @@ -0,0 +1,71 @@ +{ + "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", + "intervention/image": "^2.7", + "laravel/framework": "^10.10", + "laravel/sanctum": "^3.3", + "laravel/tinker": "^2.8", + "league/flysystem-aws-s3-v3": "^3.0" + }, + "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/think-backend.greaterchiangmai.com/composer.lock b/think-backend.greaterchiangmai.com/composer.lock new file mode 100644 index 0000000..6af1ea2 --- /dev/null +++ b/think-backend.greaterchiangmai.com/composer.lock @@ -0,0 +1,8486 @@ +{ + "_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": "335a4847db64241c13c62313c53588fd", + "packages": [ + { + "name": "aws/aws-crt-php", + "version": "v1.2.6", + "source": { + "type": "git", + "url": "https://github.com/awslabs/aws-crt-php.git", + "reference": "a63485b65b6b3367039306496d49737cf1995408" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/a63485b65b6b3367039306496d49737cf1995408", + "reference": "a63485b65b6b3367039306496d49737cf1995408", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35||^5.6.3||^9.5", + "yoast/phpunit-polyfills": "^1.0" + }, + "suggest": { + "ext-awscrt": "Make sure you install awscrt native extension to use any of the functionality." + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "AWS SDK Common Runtime Team", + "email": "aws-sdk-common-runtime@amazon.com" + } + ], + "description": "AWS Common Runtime for PHP", + "homepage": "https://github.com/awslabs/aws-crt-php", + "keywords": [ + "amazon", + "aws", + "crt", + "sdk" + ], + "support": { + "issues": "https://github.com/awslabs/aws-crt-php/issues", + "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.6" + }, + "time": "2024-06-13T17:21:28+00:00" + }, + { + "name": "aws/aws-sdk-php", + "version": "3.322.2", + "source": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-php.git", + "reference": "6a329cf111a4e54f2ca0e87ce07dd0b9e0befdad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/6a329cf111a4e54f2ca0e87ce07dd0b9e0befdad", + "reference": "6a329cf111a4e54f2ca0e87ce07dd0b9e0befdad", + "shasum": "" + }, + "require": { + "aws/aws-crt-php": "^1.2.3", + "ext-json": "*", + "ext-pcre": "*", + "ext-simplexml": "*", + "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", + "guzzlehttp/promises": "^1.4.0 || ^2.0", + "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", + "mtdowling/jmespath.php": "^2.6", + "php": ">=7.2.5", + "psr/http-message": "^1.0 || ^2.0" + }, + "require-dev": { + "andrewsville/php-token-reflection": "^1.4", + "aws/aws-php-sns-message-validator": "~1.0", + "behat/behat": "~3.0", + "composer/composer": "^1.10.22", + "dms/phpunit-arraysubset-asserts": "^0.4.0", + "doctrine/cache": "~1.4", + "ext-dom": "*", + "ext-openssl": "*", + "ext-pcntl": "*", + "ext-sockets": "*", + "nette/neon": "^2.3", + "paragonie/random_compat": ">= 2", + "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5", + "psr/cache": "^1.0", + "psr/simple-cache": "^1.0", + "sebastian/comparator": "^1.2.3 || ^4.0", + "yoast/phpunit-polyfills": "^1.0" + }, + "suggest": { + "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", + "doctrine/cache": "To use the DoctrineCacheAdapter", + "ext-curl": "To send requests using cURL", + "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", + "ext-sockets": "To use client-side monitoring" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Aws\\": "src/" + }, + "exclude-from-classmap": [ + "src/data/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Amazon Web Services", + "homepage": "http://aws.amazon.com" + } + ], + "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", + "homepage": "http://aws.amazon.com/sdkforphp", + "keywords": [ + "amazon", + "aws", + "cloud", + "dynamodb", + "ec2", + "glacier", + "s3", + "sdk" + ], + "support": { + "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", + "issues": "https://github.com/aws/aws-sdk-php/issues", + "source": "https://github.com/aws/aws-sdk-php/tree/3.322.2" + }, + "time": "2024-09-20T18:08:53+00:00" + }, + { + "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.3.3", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "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", + "phpstan/phpstan-webmozart-assert": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "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.3.3" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2023-08-10T19:36:49+00:00" + }, + { + "name": "egulias/email-validator", + "version": "4.0.2", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", + "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.2" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2023-10-06T06:47:41+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.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", + "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", + "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.3" + }, + "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-07-18T10:29:17+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.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-php80": "^1.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.3" + }, + "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": "2023-12-03T19:50:20+00:00" + }, + { + "name": "intervention/image", + "version": "2.7.2", + "source": { + "type": "git", + "url": "https://github.com/Intervention/image.git", + "reference": "04be355f8d6734c826045d02a1079ad658322dad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Intervention/image/zipball/04be355f8d6734c826045d02a1079ad658322dad", + "reference": "04be355f8d6734c826045d02a1079ad658322dad", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "guzzlehttp/psr7": "~1.1 || ^2.0", + "php": ">=5.4.0" + }, + "require-dev": { + "mockery/mockery": "~0.9.2", + "phpunit/phpunit": "^4.8 || ^5.7 || ^7.5.15" + }, + "suggest": { + "ext-gd": "to use GD library based image processing.", + "ext-imagick": "to use Imagick based image processing.", + "intervention/imagecache": "Caching extension for the Intervention Image library" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + }, + "laravel": { + "providers": [ + "Intervention\\Image\\ImageServiceProvider" + ], + "aliases": { + "Image": "Intervention\\Image\\Facades\\Image" + } + } + }, + "autoload": { + "psr-4": { + "Intervention\\Image\\": "src/Intervention/Image" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oliver Vogel", + "email": "oliver@intervention.io", + "homepage": "https://intervention.io/" + } + ], + "description": "Image handling and manipulation library with support for Laravel integration", + "homepage": "http://image.intervention.io/", + "keywords": [ + "gd", + "image", + "imagick", + "laravel", + "thumbnail", + "watermark" + ], + "support": { + "issues": "https://github.com/Intervention/image/issues", + "source": "https://github.com/Intervention/image/tree/2.7.2" + }, + "funding": [ + { + "url": "https://paypal.me/interventionio", + "type": "custom" + }, + { + "url": "https://github.com/Intervention", + "type": "github" + } + ], + "time": "2022-05-21T17:30:32+00:00" + }, + { + "name": "laravel/framework", + "version": "v10.48.22", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "c4ea52bb044faef4a103d7dd81746c01b2ec860e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/c4ea52bb044faef4a103d7dd81746c01b2ec860e", + "reference": "c4ea52bb044faef4a103d7dd81746c01b2ec860e", + "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.4.7", + "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": "2024-09-12T15:00:09+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": { + "branch-alias": { + "dev-master": "3.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Sanctum\\SanctumServiceProvider" + ] + } + }, + "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.4", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "61b87392d986dc49ad5ef64e75b1ff5fee24ef81" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/61b87392d986dc49ad5ef64e75b1ff5fee24ef81", + "reference": "61b87392d986dc49ad5ef64e75b1ff5fee24ef81", + "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-08-02T07:48:17+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.9.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/502e0fe3f0415d06d5db1f83a472f0f3b754bafe", + "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe", + "shasum": "" + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.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" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.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.9.0" + }, + "time": "2024-01-04T16:10:04+00:00" + }, + { + "name": "league/commonmark", + "version": "2.5.3", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "b650144166dfa7703e62a22e493b853b58d874b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/b650144166dfa7703e62a22e493b853b58d874b0", + "reference": "b650144166dfa7703e62a22e493b853b58d874b0", + "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/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.6-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-08-16T11:46:16+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.28.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c", + "reference": "e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c", + "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.28.0" + }, + "time": "2024-05-22T10:09:12+00:00" + }, + { + "name": "league/flysystem-aws-s3-v3", + "version": "3.28.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", + "reference": "22071ef1604bc776f5ff2468ac27a752514665c8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/22071ef1604bc776f5ff2468ac27a752514665c8", + "reference": "22071ef1604bc776f5ff2468ac27a752514665c8", + "shasum": "" + }, + "require": { + "aws/aws-sdk-php": "^3.295.10", + "league/flysystem": "^3.10.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\AwsS3V3\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "AWS S3 filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "aws", + "file", + "files", + "filesystem", + "s3", + "storage" + ], + "support": { + "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.28.0" + }, + "time": "2024-05-06T20:05:52+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.28.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "13f22ea8be526ea58c2ddff9e158ef7c296e4f40" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/13f22ea8be526ea58c2ddff9e158ef7c296e4f40", + "reference": "13f22ea8be526ea58c2ddff9e158ef7c296e4f40", + "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.28.0" + }, + "time": "2024-05-06T20:05:52+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.15.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "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.15.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2024-01-28T23:22:08+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.7.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "f4393b648b78a5408747de94fca38beb5f7e9ef8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f4393b648b78a5408747de94fca38beb5f7e9ef8", + "reference": "f4393b648b78a5408747de94fca38beb5f7e9ef8", + "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", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "^10.5.17", + "predis/predis": "^1.1 || ^2", + "ruflin/elastica": "^7", + "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.7.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2024-06-28T09:40:51+00:00" + }, + { + "name": "mtdowling/jmespath.php", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/jmespath/jmespath.php.git", + "reference": "a2a865e05d5f420b50cc2f85bb78d565db12a6bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/a2a865e05d5f420b50cc2f85bb78d565db12a6bc", + "reference": "a2a865e05d5f420b50cc2f85bb78d565db12a6bc", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-mbstring": "^1.17" + }, + "require-dev": { + "composer/xdebug-handler": "^3.0.3", + "phpunit/phpunit": "^8.5.33" + }, + "bin": [ + "bin/jp.php" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "files": [ + "src/JmesPath.php" + ], + "psr-4": { + "JmesPath\\": "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" + } + ], + "description": "Declaratively specify how to extract elements from a JSON document", + "keywords": [ + "json", + "jsonpath" + ], + "support": { + "issues": "https://github.com/jmespath/jmespath.php/issues", + "source": "https://github.com/jmespath/jmespath.php/tree/2.8.0" + }, + "time": "2024-09-04T18:46:31+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.72.5", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "afd46589c216118ecd48ff2b95d77596af1e57ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/afd46589c216118ecd48ff2b95d77596af1e57ed", + "reference": "afd46589c216118ecd48ff2b95d77596af1e57ed", + "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": "*", + "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": { + "branch-alias": { + "dev-master": "3.x-dev", + "dev-2.x": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "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": "2024-06-03T19:18:41+00:00" + }, + { + "name": "nette/schema", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", + "shasum": "" + }, + "require": { + "nette/utils": "^4.0", + "php": "8.1 - 8.3" + }, + "require-dev": { + "nette/tester": "^2.4", + "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.0" + }, + "time": "2023-12-11T11:54:22+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.2.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "23c79fbbfb725fb92af9bcf41065c8e9a0d49ddb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/23c79fbbfb725fb92af9bcf41065c8e9a0d49ddb", + "reference": "23c79fbbfb725fb92af9bcf41065c8e9a0d49ddb", + "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.2.0" + }, + "time": "2024-09-15T16:40:33+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v1.15.1", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.0", + "symfony/console": "^5.3.0|^6.0.0" + }, + "require-dev": { + "ergebnis/phpstan-rules": "^1.0.", + "illuminate/console": "^8.0|^9.0", + "illuminate/support": "^8.0|^9.0", + "laravel/pint": "^1.0.0", + "pestphp/pest": "^1.21.0", + "pestphp/pest-plugin-mock": "^1.0", + "phpstan/phpstan": "^1.4.6", + "phpstan/phpstan-strict-rules": "^1.1.0", + "symfony/var-dumper": "^5.2.7|^6.0.0", + "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.15.1" + }, + "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": "2023-02-08T01:06:31+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.4", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "2fd717afa05341b4f8152547f142cd2f130f6818" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/2fd717afa05341b4f8152547f142cd2f130f6818", + "reference": "2fd717afa05341b4f8152547f142cd2f130f6818", + "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": { + "branch-alias": { + "dev-main": "0.12.x-dev" + }, + "bamarni-bin": { + "bin-links": false, + "forward-command": false + } + }, + "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.4" + }, + "time": "2024-06-10T01:18:23+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.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "42686880adaacdad1835ee8fc2a9ec5b7bd63998" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/42686880adaacdad1835ee8fc2a9ec5b7bd63998", + "reference": "42686880adaacdad1835ee8fc2a9ec5b7bd63998", + "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.11" + }, + "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-08-15T22:48:29+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v7.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/1c7cee86c6f812896af54434f8ce29c8d94f9ff4", + "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v7.1.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-05-31T14:57:53+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "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.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-04-18T09:32:20+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v6.4.10", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "231f1b2ee80f72daa1972f7340297d67439224f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/231f1b2ee80f72daa1972f7340297d67439224f0", + "reference": "231f1b2ee80f72daa1972f7340297d67439224f0", + "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.10" + }, + "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-07-26T12:30:32+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v7.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", + "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^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/v7.1.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-05-31T14:57:53+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "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.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-04-18T09:32:20+00:00" + }, + { + "name": "symfony/finder", + "version": "v6.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "d7eb6daf8cd7e9ac4976e9576b32042ef7253453" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/d7eb6daf8cd7e9ac4976e9576b32042ef7253453", + "reference": "d7eb6daf8cd7e9ac4976e9576b32042ef7253453", + "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.11" + }, + "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-08-13T14:27:37+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v6.4.10", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "117f1f20a7ade7bcea28b861fb79160a21a1e37b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/117f1f20a7ade7bcea28b861fb79160a21a1e37b", + "reference": "117f1f20a7ade7bcea28b861fb79160a21a1e37b", + "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.3" + }, + "require-dev": { + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.3|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "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.10" + }, + "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-07-26T12:36:27+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v6.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "1ba6b89d781cb47448155cc70dd2e0f1b0584c79" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/1ba6b89d781cb47448155cc70dd2e0f1b0584c79", + "reference": "1ba6b89d781cb47448155cc70dd2e0f1b0584c79", + "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.11" + }, + "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-08-30T16:57:20+00:00" + }, + { + "name": "symfony/mailer", + "version": "v6.4.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "e2d56f180f5b8c5e7c0fbea872bb1f529b6d6d45" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/e2d56f180f5b8c5e7c0fbea872bb1f529b6d6d45", + "reference": "e2d56f180f5b8c5e7c0fbea872bb1f529b6d6d45", + "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.9" + }, + "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-06-28T07:59:05+00:00" + }, + { + "name": "symfony/mime", + "version": "v6.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "dba5d5f6073baf7a3576b580cc4a208b4ca00553" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/dba5d5f6073baf7a3576b580cc4a208b4ca00553", + "reference": "dba5d5f6073baf7a3576b580cc4a208b4ca00553", + "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.11" + }, + "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-08-13T12:15:02+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": { + "name": "symfony/polyfill", + "url": "https://github.com/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": { + "name": "symfony/polyfill", + "url": "https://github.com/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": { + "name": "symfony/polyfill", + "url": "https://github.com/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": { + "name": "symfony/polyfill", + "url": "https://github.com/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": { + "name": "symfony/polyfill", + "url": "https://github.com/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": { + "name": "symfony/polyfill", + "url": "https://github.com/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": { + "name": "symfony/polyfill", + "url": "https://github.com/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": { + "name": "symfony/polyfill", + "url": "https://github.com/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.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/8d92dd79149f29e89ee0f480254db595f6a6a2c5", + "reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5", + "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.8" + }, + "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-05-31T14:49:08+00:00" + }, + { + "name": "symfony/routing", + "version": "v6.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "8ee0c24c1bf61c263a26f1b9b6d19e83b1121f2a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/8ee0c24c1bf61c263a26f1b9b6d19e83b1121f2a", + "reference": "8ee0c24c1bf61c263a26f1b9b6d19e83b1121f2a", + "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.11" + }, + "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-08-29T08:15:38+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "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": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "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.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-04-18T09:32:20+00:00" + }, + { + "name": "symfony/string", + "version": "v7.1.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "6cd670a6d968eaeb1c77c2e76091c45c56bc367b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/6cd670a6d968eaeb1c77c2e76091c45c56bc367b", + "reference": "6cd670a6d968eaeb1c77c2e76091c45c56bc367b", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "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/emoji": "^7.1", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^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/v7.1.4" + }, + "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-08-12T09:59:40+00:00" + }, + { + "name": "symfony/translation", + "version": "v6.4.10", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "94041203f8ac200ae9e7c6a18fa6137814ccecc9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/94041203f8ac200ae9e7c6a18fa6137814ccecc9", + "reference": "94041203f8ac200ae9e7c6a18fa6137814ccecc9", + "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.10" + }, + "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-07-26T12:30:32+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "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.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-04-18T09:32:20+00:00" + }, + { + "name": "symfony/uid", + "version": "v6.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "6a0394ad707de386547223948fac1e0f2805bc0b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/6a0394ad707de386547223948fac1e0f2805bc0b", + "reference": "6a0394ad707de386547223948fac1e0f2805bc0b", + "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.11" + }, + "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-08-12T09:55:28+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v6.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "ee14c8254a480913268b1e3b1cba8045ed122694" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ee14c8254a480913268b1e3b1cba8045ed122694", + "reference": "ee14c8254a480913268b1e3b1cba8045ed122694", + "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.11" + }, + "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-08-30T16:03:21+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.2.7", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.5 || ^7.0 || ^8.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.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.2.7" + }, + "time": "2023-12-08T13:03:43+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.1", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b56450eed252f6801410d810c8e1727224ae0743" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", + "reference": "b56450eed252f6801410d810c8e1727224ae0743", + "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": "http://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.1" + }, + "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": "2022-03-08T17:03:00+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.23.1", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", + "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.23.1" + }, + "time": "2024-01-02T13:46:09+00:00" + }, + { + "name": "filp/whoops", + "version": "2.15.4", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^2.6 || ^3.0 || ^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.15.4" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2023-11-03T12: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.17.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/pint.git", + "reference": "9d77be916e145864f10788bb94531d03e1f7b482" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pint/zipball/9d77be916e145864f10788bb94531d03e1f7b482", + "reference": "9d77be916e145864f10788bb94531d03e1f7b482", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "php": "^8.1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.64.0", + "illuminate/view": "^10.48.20", + "larastan/larastan": "^2.9.8", + "laravel-zero/framework": "^10.4.0", + "mockery/mockery": "^1.6.12", + "nunomaduro/termwind": "^1.15.1", + "pestphp/pest": "^2.35.1" + }, + "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": "2024-09-03T15:00:28+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "4a7e41d280861ca7e35710cea011a07669b4003b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/4a7e41d280861ca7e35710cea011a07669b4003b", + "reference": "4a7e41d280861ca7e35710cea011a07669b4003b", + "shasum": "" + }, + "require": { + "illuminate/console": "^9.52.16|^10.0|^11.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0", + "illuminate/support": "^9.52.16|^10.0|^11.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", + "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": "2024-09-11T20:14:29+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.12.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "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.12.0" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2024-06-12T14:39:25+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v7.10.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "49ec67fa7b002712da8526678abd651c09f375b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/49ec67fa7b002712da8526678abd651c09f375b2", + "reference": "49ec67fa7b002712da8526678abd651c09f375b2", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.15.3", + "nunomaduro/termwind": "^1.15.1", + "php": "^8.1.0", + "symfony/console": "^6.3.4" + }, + "conflict": { + "laravel/framework": ">=11.0.0" + }, + "require-dev": { + "brianium/paratest": "^7.3.0", + "laravel/framework": "^10.28.0", + "laravel/pint": "^1.13.3", + "laravel/sail": "^1.25.0", + "laravel/sanctum": "^3.3.1", + "laravel/tinker": "^2.8.2", + "nunomaduro/larastan": "^2.6.4", + "orchestra/testbench-core": "^8.13.0", + "pestphp/pest": "^2.23.2", + "phpunit/phpunit": "^10.4.1", + "sebastian/environment": "^6.0.1", + "spatie/laravel-ignition": "^2.3.1" + }, + "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": "2023-10-11T15:45:01+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.35", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "7ac8b4e63f456046dcb4c9787da9382831a1874b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7ac8b4e63f456046dcb4c9787da9382831a1874b", + "reference": "7ac8b4e63f456046dcb4c9787da9382831a1874b", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.12.0", + "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.2", + "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.35" + }, + "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": "2024-09-19T10:52:21+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.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2d3e04c3b4c1e84a5e7382221ad8883c8fbc4f53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2d3e04c3b4c1e84a5e7382221ad8883c8fbc4f53", + "reference": "2d3e04c3b4c1e84a5e7382221ad8883c8fbc4f53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.4" + }, + "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.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-08-12T06:03:08+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.6.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/backtrace.git", + "reference": "1a9a145b044677ae3424693f7b06479fc8c137a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/1a9a145b044677ae3424693f7b06479fc8c137a9", + "reference": "1a9a145b044677ae3424693f7b06479fc8c137a9", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "ext-json": "*", + "laravel/serializable-closure": "^1.3", + "phpunit/phpunit": "^9.3", + "spatie/phpunit-snapshot-assertions": "^4.2", + "symfony/var-dumper": "^5.1" + }, + "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.6.2" + }, + "funding": [ + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + }, + { + "url": "https://spatie.be/open-source/support-us", + "type": "other" + } + ], + "time": "2024-07-22T08:21:24+00:00" + }, + { + "name": "spatie/error-solutions", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/error-solutions.git", + "reference": "ae7393122eda72eed7cc4f176d1e96ea444f2d67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/error-solutions/zipball/ae7393122eda72eed7cc4f176d1e96ea444f2d67", + "reference": "ae7393122eda72eed7cc4f176d1e96ea444f2d67", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "illuminate/broadcasting": "^10.0|^11.0", + "illuminate/cache": "^10.0|^11.0", + "illuminate/support": "^10.0|^11.0", + "livewire/livewire": "^2.11|^3.3.5", + "openai-php/client": "^0.10.1", + "orchestra/testbench": "^7.0|8.22.3|^9.0", + "pestphp/pest": "^2.20", + "phpstan/phpstan": "^1.11", + "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.1" + }, + "funding": [ + { + "url": "https://github.com/Spatie", + "type": "github" + } + ], + "time": "2024-07-25T11:06:04+00:00" + }, + { + "name": "spatie/flare-client-php", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/flare-client-php.git", + "reference": "180f8ca4c0d0d6fc51477bd8c53ce37ab5a96122" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/180f8ca4c0d0d6fc51477bd8c53ce37ab5a96122", + "reference": "180f8ca4c0d0d6fc51477bd8c53ce37ab5a96122", + "shasum": "" + }, + "require": { + "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.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.8.0" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-08-01T08:27:26+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.8.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-ignition.git", + "reference": "3c067b75bfb50574db8f7e2c3978c65eed71126c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/3c067b75bfb50574db8f7e2c3978c65eed71126c", + "reference": "3c067b75bfb50574db8f7e2c3978c65eed71126c", + "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": { + "providers": [ + "Spatie\\LaravelIgnition\\IgnitionServiceProvider" + ], + "aliases": { + "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" + } + } + }, + "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-06-12T15:01:18+00:00" + }, + { + "name": "symfony/yaml", + "version": "v7.1.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "92e080b851c1c655c786a2da77f188f2dccd0f4b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/92e080b851c1c655c786a2da77f188f2dccd0f4b", + "reference": "92e080b851c1c655c786a2da77f188f2dccd0f4b", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^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/v7.1.4" + }, + "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-08-12T09:59:40+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/think-backend.greaterchiangmai.com/config/app.php b/think-backend.greaterchiangmai.com/config/app.php new file mode 100644 index 0000000..b5f97d0 --- /dev/null +++ b/think-backend.greaterchiangmai.com/config/app.php @@ -0,0 +1,190 @@ + 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' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | 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, + Intervention\Image\ImageServiceProvider::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, + 'Image' => Intervention\Image\Facades\Image::class, + ])->toArray(), + +]; diff --git a/think-backend.greaterchiangmai.com/config/auth.php b/think-backend.greaterchiangmai.com/config/auth.php new file mode 100644 index 0000000..9548c15 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/config/broadcasting.php b/think-backend.greaterchiangmai.com/config/broadcasting.php new file mode 100644 index 0000000..2410485 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/config/cache.php b/think-backend.greaterchiangmai.com/config/cache.php new file mode 100644 index 0000000..d4171e2 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/config/cors.php b/think-backend.greaterchiangmai.com/config/cors.php new file mode 100644 index 0000000..8a39e6d --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/config/database.php b/think-backend.greaterchiangmai.com/config/database.php new file mode 100644 index 0000000..137ad18 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/config/filesystems.php b/think-backend.greaterchiangmai.com/config/filesystems.php new file mode 100644 index 0000000..e88172b --- /dev/null +++ b/think-backend.greaterchiangmai.com/config/filesystems.php @@ -0,0 +1,86 @@ + env('FILESYSTEM_DISK', 'local'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Below you may configure as many filesystem disks as necessary, and you + | may even configure multiple disks for the same driver. Examples for + | most supported storage drivers are configured here for reference. + | + | Supported drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + '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, + ], + 'r2' => [ + 'driver' => 's3', + 'key' => env('R2_ACCESS_KEY_ID'), + 'secret' => env('R2_SECRET_ACCESS_KEY'), + 'region' => env('R2_REGION', 'auto'), + 'bucket' => env('R2_BUCKET'), + 'url' => env('R2_URL'), + 'endpoint' => env('R2_ENDPOINT'), + 'use_path_style_endpoint' => true, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | 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/think-backend.greaterchiangmai.com/config/hashing.php b/think-backend.greaterchiangmai.com/config/hashing.php new file mode 100644 index 0000000..0e8a0bb --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/config/logging.php b/think-backend.greaterchiangmai.com/config/logging.php new file mode 100644 index 0000000..c44d276 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/config/mail.php b/think-backend.greaterchiangmai.com/config/mail.php new file mode 100644 index 0000000..e894b2e --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/config/queue.php b/think-backend.greaterchiangmai.com/config/queue.php new file mode 100644 index 0000000..01c6b05 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/config/sanctum.php b/think-backend.greaterchiangmai.com/config/sanctum.php new file mode 100644 index 0000000..35d75b3 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/config/services.php b/think-backend.greaterchiangmai.com/config/services.php new file mode 100644 index 0000000..0ace530 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/config/session.php b/think-backend.greaterchiangmai.com/config/session.php new file mode 100644 index 0000000..e738cb3 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/config/view.php b/think-backend.greaterchiangmai.com/config/view.php new file mode 100644 index 0000000..22b8a18 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/database/.DS_Store b/think-backend.greaterchiangmai.com/database/.DS_Store new file mode 100644 index 0000000..f641ae7 Binary files /dev/null and b/think-backend.greaterchiangmai.com/database/.DS_Store differ diff --git a/think-backend.greaterchiangmai.com/database/.gitignore b/think-backend.greaterchiangmai.com/database/.gitignore new file mode 100644 index 0000000..9b19b93 --- /dev/null +++ b/think-backend.greaterchiangmai.com/database/.gitignore @@ -0,0 +1 @@ +*.sqlite* diff --git a/think-backend.greaterchiangmai.com/database/factories/UserFactory.php b/think-backend.greaterchiangmai.com/database/factories/UserFactory.php new file mode 100644 index 0000000..584104c --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/database/migrations/2014_10_12_000000_create_users_table.php b/think-backend.greaterchiangmai.com/database/migrations/2014_10_12_000000_create_users_table.php new file mode 100644 index 0000000..444fafb --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php b/think-backend.greaterchiangmai.com/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php new file mode 100644 index 0000000..81a7229 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/think-backend.greaterchiangmai.com/database/migrations/2019_08_19_000000_create_failed_jobs_table.php new file mode 100644 index 0000000..249da81 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/think-backend.greaterchiangmai.com/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php new file mode 100644 index 0000000..e828ad8 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/database/seeders/DatabaseSeeder.php b/think-backend.greaterchiangmai.com/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..a9f4519 --- /dev/null +++ b/think-backend.greaterchiangmai.com/database/seeders/DatabaseSeeder.php @@ -0,0 +1,22 @@ +create(); + + // \App\Models\User::factory()->create([ + // 'name' => 'Test User', + // 'email' => 'test@example.com', + // ]); + } +} diff --git a/think-backend.greaterchiangmai.com/package.json b/think-backend.greaterchiangmai.com/package.json new file mode 100644 index 0000000..56f5ddc --- /dev/null +++ b/think-backend.greaterchiangmai.com/package.json @@ -0,0 +1,13 @@ +{ + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build" + }, + "devDependencies": { + "axios": "^1.6.4", + "laravel-vite-plugin": "^1.0.0", + "vite": "^5.0.0" + } +} diff --git a/think-backend.greaterchiangmai.com/phpunit.xml b/think-backend.greaterchiangmai.com/phpunit.xml new file mode 100644 index 0000000..bc86714 --- /dev/null +++ b/think-backend.greaterchiangmai.com/phpunit.xml @@ -0,0 +1,32 @@ + + + + + tests/Unit + + + tests/Feature + + + + + app + + + + + + + + + + + + + + + diff --git a/think-backend.greaterchiangmai.com/public/.DS_Store b/think-backend.greaterchiangmai.com/public/.DS_Store new file mode 100644 index 0000000..c0fa0dd Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/.DS_Store differ diff --git a/think-backend.greaterchiangmai.com/public/.htaccess b/think-backend.greaterchiangmai.com/public/.htaccess new file mode 100644 index 0000000..3aec5e2 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/public/assets/.DS_Store b/think-backend.greaterchiangmai.com/public/assets/.DS_Store new file mode 100644 index 0000000..eda86fb Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/.DS_Store differ diff --git a/think-backend.greaterchiangmai.com/public/assets/css/style.bundle.css b/think-backend.greaterchiangmai.com/public/assets/css/style.bundle.css new file mode 100644 index 0000000..ae51e31 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/css/style.bundle.css @@ -0,0 +1,49590 @@ +@charset "UTF-8"; +/*! + * Bootstrap v5.3.0-alpha1 (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +:root, +[data-bs-theme=light] { + --bs-blue: #0d6efd; + --bs-indigo: #6610f2; + --bs-purple: #6f42c1; + --bs-pink: #d63384; + --bs-red: #dc3545; + --bs-orange: #fd7e14; + --bs-yellow: #ffc107; + --bs-green: #198754; + --bs-teal: #20c997; + --bs-cyan: #0dcaf0; + --bs-black: #000000; + --bs-white: #ffffff; + --bs-gray: #7E8299; + --bs-gray-dark: #3F4254; + --bs-gray-100: #F9F9F9; + --bs-gray-200: #F4F4F4; + --bs-gray-300: #E1E3EA; + --bs-gray-400: #B5B5C3; + --bs-gray-500: #A1A5B7; + --bs-gray-600: #7E8299; + --bs-gray-700: #5E6278; + --bs-gray-800: #3F4254; + --bs-gray-900: #181C32; + --bs-white: #ffffff; + --bs-light: #F9F9F9; + --bs-primary: #009ef7; + --bs-secondary: #E1E3EA; + --bs-success: #50cd89; + --bs-info: #7239ea; + --bs-warning: #ffc700; + --bs-danger: #f1416c; + --bs-dark: #181C32; + --bs-white-rgb: 255, 255, 255; + --bs-light-rgb: 249, 249, 249; + --bs-primary-rgb: 0, 158, 247; + --bs-secondary-rgb: 225, 227, 234; + --bs-success-rgb: 80, 205, 137; + --bs-info-rgb: 114, 57, 234; + --bs-warning-rgb: 255, 199, 0; + --bs-danger-rgb: 241, 65, 108; + --bs-dark-rgb: 24, 28, 50; + --bs-primary-text: #0a58ca; + --bs-secondary-text: #7E8299; + --bs-success-text: #146c43; + --bs-info-text: #087990; + --bs-warning-text: #997404; + --bs-danger-text: #b02a37; + --bs-light-text: #7E8299; + --bs-dark-text: #5E6278; + --bs-primary-bg-subtle: #cfe2ff; + --bs-secondary-bg-subtle: #F9F9F9; + --bs-success-bg-subtle: #d1e7dd; + --bs-info-bg-subtle: #cff4fc; + --bs-warning-bg-subtle: #fff3cd; + --bs-danger-bg-subtle: #f8d7da; + --bs-light-bg-subtle: #fcfcfc; + --bs-dark-bg-subtle: #B5B5C3; + --bs-primary-border-subtle: #9ec5fe; + --bs-secondary-border-subtle: #F4F4F4; + --bs-success-border-subtle: #a3cfbb; + --bs-info-border-subtle: #9eeaf9; + --bs-warning-border-subtle: #ffe69c; + --bs-danger-border-subtle: #f1aeb5; + --bs-light-border-subtle: #F4F4F4; + --bs-dark-border-subtle: #A1A5B7; + --bs-white-rgb: 255, 255, 255; + --bs-black-rgb: 0, 0, 0; + --bs-body-color-rgb: 24, 28, 50; + --bs-body-bg-rgb: 255, 255, 255; + --bs-font-sans-serif: Inter, Helvetica, "sans-serif"; + --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); + --bs-body-font-family: var(--bs-font-sans-serif); + --bs-body-font-size: 1rem; + --bs-body-font-weight: 400; + --bs-body-line-height: 1.5; + --bs-body-color: #181C32; + --bs-emphasis-color: #000000; + --bs-emphasis-color-rgb: 0, 0, 0; + --bs-secondary-color: rgba(24, 28, 50, 0.75); + --bs-secondary-color-rgb: 24, 28, 50; + --bs-secondary-bg: #F4F4F4; + --bs-secondary-bg-rgb: 244, 244, 244; + --bs-tertiary-color: rgba(24, 28, 50, 0.5); + --bs-tertiary-color-rgb: 24, 28, 50; + --bs-tertiary-bg: #F9F9F9; + --bs-tertiary-bg-rgb: 249, 249, 249; + --bs-body-bg: #ffffff; + --bs-body-bg-rgb: 255, 255, 255; + --bs-heading-color: #181C32; + --bs-link-color: #009ef7; + --bs-link-color-rgb: 0, 158, 247; + --bs-link-decoration: none; + --bs-link-hover-color: #0095e8; + --bs-link-hover-color-rgb: 0, 149, 232; + --bs-link-hover-decoration: none; + --bs-code-color: #b93993; + --bs-highlight-bg: #fff3cd; + --bs-border-width: 1px; + --bs-border-style: solid; + --bs-border-color: #F4F4F4; + --bs-border-color-translucent: rgba(0, 0, 0, 0.175); + --bs-border-radius: 0.475rem; + --bs-border-radius-sm: 0.425rem; + --bs-border-radius-lg: 0.625rem; + --bs-border-radius-xl: 1rem; + --bs-border-radius-2xl: 2rem; + --bs-border-radius-pill: 50rem; + --bs-box-shadow: 0 0.5rem 1.5rem 0.5rem rgba(0, 0, 0, 0.075); + --bs-box-shadow-sm: 0 0.1rem 1rem 0.25rem rgba(0, 0, 0, 0.05); + --bs-box-shadow-lg: 0 1rem 2rem 1rem rgba(0, 0, 0, 0.1); + --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075); + --bs-emphasis-color: #000000; + --bs-form-control-bg: var(--bs-body-bg); + --bs-form-control-disabled-bg: var(--bs-secondary-bg); + --bs-highlight-bg: #fff3cd; + --bs-breakpoint-xs: 0; + --bs-breakpoint-sm: 576px; + --bs-breakpoint-md: 768px; + --bs-breakpoint-lg: 992px; + --bs-breakpoint-xl: 1200px; + --bs-breakpoint-xxl: 1400px; +} + +[data-bs-theme=dark] { + --bs-body-color: #FFFFFF; + --bs-body-color-rgb: 255, 255, 255; + --bs-body-bg: #1e1e2d; + --bs-body-bg-rgb: 30, 30, 45; + --bs-emphasis-color: #F9F9F9; + --bs-emphasis-color-rgb: 249, 249, 249; + --bs-secondary-color: rgba(255, 255, 255, 0.75); + --bs-secondary-color-rgb: 255, 255, 255; + --bs-secondary-bg: #3F4254; + --bs-secondary-bg-rgb: 63, 66, 84; + --bs-tertiary-color: rgba(255, 255, 255, 0.5); + --bs-tertiary-color-rgb: 255, 255, 255; + --bs-tertiary-bg: #2c2f43; + --bs-tertiary-bg-rgb: 44, 47, 67; + --bs-emphasis-color: #ffffff; + --bs-primary-text: #6ea8fe; + --bs-secondary-text: #E1E3EA; + --bs-success-text: #75b798; + --bs-info-text: #6edff6; + --bs-warning-text: #ffda6a; + --bs-danger-text: #ea868f; + --bs-light-text: #F9F9F9; + --bs-dark-text: #E1E3EA; + --bs-primary-bg-subtle: #031633; + --bs-secondary-bg-subtle: #181C32; + --bs-success-bg-subtle: #051b11; + --bs-info-bg-subtle: #032830; + --bs-warning-bg-subtle: #332701; + --bs-danger-bg-subtle: #2c0b0e; + --bs-light-bg-subtle: #3F4254; + --bs-dark-bg-subtle: #20212a; + --bs-primary-border-subtle: #084298; + --bs-secondary-border-subtle: #5E6278; + --bs-success-border-subtle: #0f5132; + --bs-info-border-subtle: #055160; + --bs-warning-border-subtle: #664d03; + --bs-danger-border-subtle: #842029; + --bs-light-border-subtle: #5E6278; + --bs-dark-border-subtle: #3F4254; + --bs-heading-color: #FFFFFF; + --bs-link-color: #009ef7; + --bs-link-hover-color: #9ec5fe; + --bs-link-color-rgb: 0, 158, 247; + --bs-link-hover-color-rgb: 158, 197, 254; + --bs-code-color: #b93993; + --bs-border-color: #2B2B40; + --bs-border-color-translucent: rgba(255, 255, 255, 0.15); +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +body { + margin: 0; + font-family: var(--bs-body-font-family); + font-size: var(--bs-body-font-size); + font-weight: var(--bs-body-font-weight); + line-height: var(--bs-body-line-height); + color: var(--bs-body-color); + text-align: var(--bs-body-text-align); + background-color: var(--bs-body-bg); + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +hr { + margin: 1rem 0; + color: inherit; + border: 0; + border-top: var(--bs-border-width) solid; + opacity: 0.25; +} + +h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 { + margin-top: 0; + margin-bottom: 0.5rem; + font-weight: 600; + line-height: 1.2; + color: var(--bs-heading-color, inherit); +} + +h1, .h1 { + font-size: calc(1.3rem + 0.6vw); +} +@media (min-width: 1200px) { + h1, .h1 { + font-size: 1.75rem; + } +} + +h2, .h2 { + font-size: calc(1.275rem + 0.3vw); +} +@media (min-width: 1200px) { + h2, .h2 { + font-size: 1.5rem; + } +} + +h3, .h3 { + font-size: calc(1.26rem + 0.12vw); +} +@media (min-width: 1200px) { + h3, .h3 { + font-size: 1.35rem; + } +} + +h4, .h4 { + font-size: 1.25rem; +} + +h5, .h5 { + font-size: 1.15rem; +} + +h6, .h6 { + font-size: 1.075rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title] { + text-decoration: underline dotted; + cursor: help; + text-decoration-skip-ink: none; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul { + padding-left: 2rem; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 600; +} + +dd { + margin-bottom: 0.5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +b, +strong { + font-weight: 700; +} + +small, .small { + font-size: 0.875em; +} + +mark, .mark { + padding: 0.1875em; + background-color: var(--bs-highlight-bg); +} + +sub, +sup { + position: relative; + font-size: 0.75em; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +a { + color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1)); + text-decoration: none; +} +a:hover { + --bs-link-color-rgb: var(--bs-link-hover-color-rgb); + text-decoration: none; +} + +a:not([href]):not([class]), a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; +} + +pre, +code, +kbd, +samp { + font-family: var(--bs-font-monospace); + font-size: 1em; +} + +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + font-size: 0.875em; +} +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} + +code { + font-size: 0.875em; + color: var(--bs-code-color); + word-wrap: break-word; +} +a > code { + color: inherit; +} + +kbd { + padding: 0.1875rem 0.375rem; + font-size: 0.875em; + color: var(--bs-body-bg); + background-color: var(--bs-body-color); + border-radius: 0.425rem; +} +kbd kbd { + padding: 0; + font-size: 1em; +} + +figure { + margin: 0 0 1rem; +} + +img, +svg { + vertical-align: middle; +} + +table { + caption-side: bottom; + border-collapse: collapse; +} + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #A1A5B7; + text-align: left; +} + +th { + text-align: inherit; + text-align: -webkit-match-parent; +} + +thead, +tbody, +tfoot, +tr, +td, +th { + border-color: inherit; + border-style: solid; + border-width: 0; +} + +label { + display: inline-block; +} + +button { + border-radius: 0; +} + +button:focus:not(:focus-visible) { + outline: 0; +} + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +select { + text-transform: none; +} + +[role=button] { + cursor: pointer; +} + +select { + word-wrap: normal; +} +select:disabled { + opacity: 1; +} + +[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator { + display: none !important; +} + +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; +} +button:not(:disabled), +[type=button]:not(:disabled), +[type=reset]:not(:disabled), +[type=submit]:not(:disabled) { + cursor: pointer; +} + +::-moz-focus-inner { + padding: 0; + border-style: none; +} + +textarea { + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + float: left; + width: 100%; + padding: 0; + margin-bottom: 0.5rem; + font-size: calc(1.275rem + 0.3vw); + line-height: inherit; +} +@media (min-width: 1200px) { + legend { + font-size: 1.5rem; + } +} +legend + * { + clear: left; +} + +::-webkit-datetime-edit-fields-wrapper, +::-webkit-datetime-edit-text, +::-webkit-datetime-edit-minute, +::-webkit-datetime-edit-hour-field, +::-webkit-datetime-edit-day-field, +::-webkit-datetime-edit-month-field, +::-webkit-datetime-edit-year-field { + padding: 0; +} + +::-webkit-inner-spin-button { + height: auto; +} + +[type=search] { + outline-offset: -2px; + -webkit-appearance: textfield; +} + +/* rtl:raw: +[type="tel"], +[type="url"], +[type="email"], +[type="number"] { + direction: ltr; +} +*/ +::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-color-swatch-wrapper { + padding: 0; +} + +::file-selector-button { + font: inherit; + -webkit-appearance: button; +} + +output { + display: inline-block; +} + +iframe { + border: 0; +} + +summary { + display: list-item; + cursor: pointer; +} + +progress { + vertical-align: baseline; +} + +[hidden] { + display: none !important; +} + +.lead { + font-size: 1.25rem; + font-weight: 300; +} + +.display-1 { + font-size: calc(1.625rem + 4.5vw); + font-weight: 700; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-1 { + font-size: 5rem; + } +} + +.display-2 { + font-size: calc(1.575rem + 3.9vw); + font-weight: 700; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-2 { + font-size: 4.5rem; + } +} + +.display-3 { + font-size: calc(1.525rem + 3.3vw); + font-weight: 700; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-3 { + font-size: 4rem; + } +} + +.display-4 { + font-size: calc(1.475rem + 2.7vw); + font-weight: 700; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-4 { + font-size: 3.5rem; + } +} + +.display-5 { + font-size: calc(1.425rem + 2.1vw); + font-weight: 700; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-5 { + font-size: 3rem; + } +} + +.display-6 { + font-size: calc(1.375rem + 1.5vw); + font-weight: 700; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-6 { + font-size: 2.5rem; + } +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} +.list-inline-item:not(:last-child) { + margin-right: 0.5rem; +} + +.initialism { + font-size: 0.875em; + text-transform: uppercase; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; +} +.blockquote > :last-child { + margin-bottom: 0; +} + +.blockquote-footer { + margin-top: -1rem; + margin-bottom: 1rem; + font-size: 0.875em; + color: #7E8299; +} +.blockquote-footer::before { + content: "— "; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: var(--bs-body-bg); + border: var(--bs-border-width) solid var(--bs-border-color); + border-radius: var(--bs-border-radius); + box-shadow: var(--bs-box-shadow-sm); + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 0.875em; + color: var(--bs-gray-600); +} + +.container, +.container-fluid, +.container-xxl, +.container-xl, +.container-lg, +.container-md, +.container-sm { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 576px) { + .container-sm, .container { + max-width: 540px; + } +} +@media (min-width: 768px) { + .container-md, .container-sm, .container { + max-width: 720px; + } +} +@media (min-width: 992px) { + .container-lg, .container-md, .container-sm, .container { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1140px; + } +} +@media (min-width: 1400px) { + .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1320px; + } +} +.row { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + display: flex; + flex-wrap: wrap; + margin-top: calc(-1 * var(--bs-gutter-y)); + margin-right: calc(-0.5 * var(--bs-gutter-x)); + margin-left: calc(-0.5 * var(--bs-gutter-x)); +} +.row > * { + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-top: var(--bs-gutter-y); +} + +.col { + flex: 1 0 0%; +} + +.row-cols-auto > * { + flex: 0 0 auto; + width: auto; +} + +.row-cols-1 > * { + flex: 0 0 auto; + width: 100%; +} + +.row-cols-2 > * { + flex: 0 0 auto; + width: 50%; +} + +.row-cols-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; +} + +.row-cols-4 > * { + flex: 0 0 auto; + width: 25%; +} + +.row-cols-5 > * { + flex: 0 0 auto; + width: 20%; +} + +.row-cols-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; +} + +.col-auto { + flex: 0 0 auto; + width: auto; +} + +.col-1 { + flex: 0 0 auto; + width: 8.33333333%; +} + +.col-2 { + flex: 0 0 auto; + width: 16.66666667%; +} + +.col-3 { + flex: 0 0 auto; + width: 25%; +} + +.col-4 { + flex: 0 0 auto; + width: 33.33333333%; +} + +.col-5 { + flex: 0 0 auto; + width: 41.66666667%; +} + +.col-6 { + flex: 0 0 auto; + width: 50%; +} + +.col-7 { + flex: 0 0 auto; + width: 58.33333333%; +} + +.col-8 { + flex: 0 0 auto; + width: 66.66666667%; +} + +.col-9 { + flex: 0 0 auto; + width: 75%; +} + +.col-10 { + flex: 0 0 auto; + width: 83.33333333%; +} + +.col-11 { + flex: 0 0 auto; + width: 91.66666667%; +} + +.col-12 { + flex: 0 0 auto; + width: 100%; +} + +.offset-1 { + margin-left: 8.33333333%; +} + +.offset-2 { + margin-left: 16.66666667%; +} + +.offset-3 { + margin-left: 25%; +} + +.offset-4 { + margin-left: 33.33333333%; +} + +.offset-5 { + margin-left: 41.66666667%; +} + +.offset-6 { + margin-left: 50%; +} + +.offset-7 { + margin-left: 58.33333333%; +} + +.offset-8 { + margin-left: 66.66666667%; +} + +.offset-9 { + margin-left: 75%; +} + +.offset-10 { + margin-left: 83.33333333%; +} + +.offset-11 { + margin-left: 91.66666667%; +} + +.g-0, +.gx-0 { + --bs-gutter-x: 0rem; +} + +.g-0, +.gy-0 { + --bs-gutter-y: 0rem; +} + +.g-1, +.gx-1 { + --bs-gutter-x: 0.25rem; +} + +.g-1, +.gy-1 { + --bs-gutter-y: 0.25rem; +} + +.g-2, +.gx-2 { + --bs-gutter-x: 0.5rem; +} + +.g-2, +.gy-2 { + --bs-gutter-y: 0.5rem; +} + +.g-3, +.gx-3 { + --bs-gutter-x: 0.75rem; +} + +.g-3, +.gy-3 { + --bs-gutter-y: 0.75rem; +} + +.g-4, +.gx-4 { + --bs-gutter-x: 1rem; +} + +.g-4, +.gy-4 { + --bs-gutter-y: 1rem; +} + +.g-5, +.gx-5 { + --bs-gutter-x: 1.25rem; +} + +.g-5, +.gy-5 { + --bs-gutter-y: 1.25rem; +} + +.g-6, +.gx-6 { + --bs-gutter-x: 1.5rem; +} + +.g-6, +.gy-6 { + --bs-gutter-y: 1.5rem; +} + +.g-7, +.gx-7 { + --bs-gutter-x: 1.75rem; +} + +.g-7, +.gy-7 { + --bs-gutter-y: 1.75rem; +} + +.g-8, +.gx-8 { + --bs-gutter-x: 2rem; +} + +.g-8, +.gy-8 { + --bs-gutter-y: 2rem; +} + +.g-9, +.gx-9 { + --bs-gutter-x: 2.25rem; +} + +.g-9, +.gy-9 { + --bs-gutter-y: 2.25rem; +} + +.g-10, +.gx-10 { + --bs-gutter-x: 2.5rem; +} + +.g-10, +.gy-10 { + --bs-gutter-y: 2.5rem; +} + +@media (min-width: 576px) { + .col-sm { + flex: 1 0 0%; + } + .row-cols-sm-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-sm-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-sm-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-sm-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-sm-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-sm-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-sm-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-sm-auto { + flex: 0 0 auto; + width: auto; + } + .col-sm-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-sm-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-sm-3 { + flex: 0 0 auto; + width: 25%; + } + .col-sm-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-sm-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-sm-6 { + flex: 0 0 auto; + width: 50%; + } + .col-sm-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-sm-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-sm-9 { + flex: 0 0 auto; + width: 75%; + } + .col-sm-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-sm-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-sm-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-sm-0 { + margin-left: 0; + } + .offset-sm-1 { + margin-left: 8.33333333%; + } + .offset-sm-2 { + margin-left: 16.66666667%; + } + .offset-sm-3 { + margin-left: 25%; + } + .offset-sm-4 { + margin-left: 33.33333333%; + } + .offset-sm-5 { + margin-left: 41.66666667%; + } + .offset-sm-6 { + margin-left: 50%; + } + .offset-sm-7 { + margin-left: 58.33333333%; + } + .offset-sm-8 { + margin-left: 66.66666667%; + } + .offset-sm-9 { + margin-left: 75%; + } + .offset-sm-10 { + margin-left: 83.33333333%; + } + .offset-sm-11 { + margin-left: 91.66666667%; + } + .g-sm-0, +.gx-sm-0 { + --bs-gutter-x: 0rem; + } + .g-sm-0, +.gy-sm-0 { + --bs-gutter-y: 0rem; + } + .g-sm-1, +.gx-sm-1 { + --bs-gutter-x: 0.25rem; + } + .g-sm-1, +.gy-sm-1 { + --bs-gutter-y: 0.25rem; + } + .g-sm-2, +.gx-sm-2 { + --bs-gutter-x: 0.5rem; + } + .g-sm-2, +.gy-sm-2 { + --bs-gutter-y: 0.5rem; + } + .g-sm-3, +.gx-sm-3 { + --bs-gutter-x: 0.75rem; + } + .g-sm-3, +.gy-sm-3 { + --bs-gutter-y: 0.75rem; + } + .g-sm-4, +.gx-sm-4 { + --bs-gutter-x: 1rem; + } + .g-sm-4, +.gy-sm-4 { + --bs-gutter-y: 1rem; + } + .g-sm-5, +.gx-sm-5 { + --bs-gutter-x: 1.25rem; + } + .g-sm-5, +.gy-sm-5 { + --bs-gutter-y: 1.25rem; + } + .g-sm-6, +.gx-sm-6 { + --bs-gutter-x: 1.5rem; + } + .g-sm-6, +.gy-sm-6 { + --bs-gutter-y: 1.5rem; + } + .g-sm-7, +.gx-sm-7 { + --bs-gutter-x: 1.75rem; + } + .g-sm-7, +.gy-sm-7 { + --bs-gutter-y: 1.75rem; + } + .g-sm-8, +.gx-sm-8 { + --bs-gutter-x: 2rem; + } + .g-sm-8, +.gy-sm-8 { + --bs-gutter-y: 2rem; + } + .g-sm-9, +.gx-sm-9 { + --bs-gutter-x: 2.25rem; + } + .g-sm-9, +.gy-sm-9 { + --bs-gutter-y: 2.25rem; + } + .g-sm-10, +.gx-sm-10 { + --bs-gutter-x: 2.5rem; + } + .g-sm-10, +.gy-sm-10 { + --bs-gutter-y: 2.5rem; + } +} +@media (min-width: 768px) { + .col-md { + flex: 1 0 0%; + } + .row-cols-md-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-md-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-md-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-md-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-md-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-md-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-md-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-md-auto { + flex: 0 0 auto; + width: auto; + } + .col-md-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-md-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-md-3 { + flex: 0 0 auto; + width: 25%; + } + .col-md-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-md-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-md-6 { + flex: 0 0 auto; + width: 50%; + } + .col-md-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-md-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-md-9 { + flex: 0 0 auto; + width: 75%; + } + .col-md-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-md-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-md-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-md-0 { + margin-left: 0; + } + .offset-md-1 { + margin-left: 8.33333333%; + } + .offset-md-2 { + margin-left: 16.66666667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.33333333%; + } + .offset-md-5 { + margin-left: 41.66666667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.33333333%; + } + .offset-md-8 { + margin-left: 66.66666667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.33333333%; + } + .offset-md-11 { + margin-left: 91.66666667%; + } + .g-md-0, +.gx-md-0 { + --bs-gutter-x: 0rem; + } + .g-md-0, +.gy-md-0 { + --bs-gutter-y: 0rem; + } + .g-md-1, +.gx-md-1 { + --bs-gutter-x: 0.25rem; + } + .g-md-1, +.gy-md-1 { + --bs-gutter-y: 0.25rem; + } + .g-md-2, +.gx-md-2 { + --bs-gutter-x: 0.5rem; + } + .g-md-2, +.gy-md-2 { + --bs-gutter-y: 0.5rem; + } + .g-md-3, +.gx-md-3 { + --bs-gutter-x: 0.75rem; + } + .g-md-3, +.gy-md-3 { + --bs-gutter-y: 0.75rem; + } + .g-md-4, +.gx-md-4 { + --bs-gutter-x: 1rem; + } + .g-md-4, +.gy-md-4 { + --bs-gutter-y: 1rem; + } + .g-md-5, +.gx-md-5 { + --bs-gutter-x: 1.25rem; + } + .g-md-5, +.gy-md-5 { + --bs-gutter-y: 1.25rem; + } + .g-md-6, +.gx-md-6 { + --bs-gutter-x: 1.5rem; + } + .g-md-6, +.gy-md-6 { + --bs-gutter-y: 1.5rem; + } + .g-md-7, +.gx-md-7 { + --bs-gutter-x: 1.75rem; + } + .g-md-7, +.gy-md-7 { + --bs-gutter-y: 1.75rem; + } + .g-md-8, +.gx-md-8 { + --bs-gutter-x: 2rem; + } + .g-md-8, +.gy-md-8 { + --bs-gutter-y: 2rem; + } + .g-md-9, +.gx-md-9 { + --bs-gutter-x: 2.25rem; + } + .g-md-9, +.gy-md-9 { + --bs-gutter-y: 2.25rem; + } + .g-md-10, +.gx-md-10 { + --bs-gutter-x: 2.5rem; + } + .g-md-10, +.gy-md-10 { + --bs-gutter-y: 2.5rem; + } +} +@media (min-width: 992px) { + .col-lg { + flex: 1 0 0%; + } + .row-cols-lg-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-lg-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-lg-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-lg-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-lg-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-lg-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-lg-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-lg-auto { + flex: 0 0 auto; + width: auto; + } + .col-lg-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-lg-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-lg-3 { + flex: 0 0 auto; + width: 25%; + } + .col-lg-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-lg-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-lg-6 { + flex: 0 0 auto; + width: 50%; + } + .col-lg-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-lg-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-lg-9 { + flex: 0 0 auto; + width: 75%; + } + .col-lg-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-lg-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-lg-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-lg-0 { + margin-left: 0; + } + .offset-lg-1 { + margin-left: 8.33333333%; + } + .offset-lg-2 { + margin-left: 16.66666667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.33333333%; + } + .offset-lg-5 { + margin-left: 41.66666667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.33333333%; + } + .offset-lg-8 { + margin-left: 66.66666667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.33333333%; + } + .offset-lg-11 { + margin-left: 91.66666667%; + } + .g-lg-0, +.gx-lg-0 { + --bs-gutter-x: 0rem; + } + .g-lg-0, +.gy-lg-0 { + --bs-gutter-y: 0rem; + } + .g-lg-1, +.gx-lg-1 { + --bs-gutter-x: 0.25rem; + } + .g-lg-1, +.gy-lg-1 { + --bs-gutter-y: 0.25rem; + } + .g-lg-2, +.gx-lg-2 { + --bs-gutter-x: 0.5rem; + } + .g-lg-2, +.gy-lg-2 { + --bs-gutter-y: 0.5rem; + } + .g-lg-3, +.gx-lg-3 { + --bs-gutter-x: 0.75rem; + } + .g-lg-3, +.gy-lg-3 { + --bs-gutter-y: 0.75rem; + } + .g-lg-4, +.gx-lg-4 { + --bs-gutter-x: 1rem; + } + .g-lg-4, +.gy-lg-4 { + --bs-gutter-y: 1rem; + } + .g-lg-5, +.gx-lg-5 { + --bs-gutter-x: 1.25rem; + } + .g-lg-5, +.gy-lg-5 { + --bs-gutter-y: 1.25rem; + } + .g-lg-6, +.gx-lg-6 { + --bs-gutter-x: 1.5rem; + } + .g-lg-6, +.gy-lg-6 { + --bs-gutter-y: 1.5rem; + } + .g-lg-7, +.gx-lg-7 { + --bs-gutter-x: 1.75rem; + } + .g-lg-7, +.gy-lg-7 { + --bs-gutter-y: 1.75rem; + } + .g-lg-8, +.gx-lg-8 { + --bs-gutter-x: 2rem; + } + .g-lg-8, +.gy-lg-8 { + --bs-gutter-y: 2rem; + } + .g-lg-9, +.gx-lg-9 { + --bs-gutter-x: 2.25rem; + } + .g-lg-9, +.gy-lg-9 { + --bs-gutter-y: 2.25rem; + } + .g-lg-10, +.gx-lg-10 { + --bs-gutter-x: 2.5rem; + } + .g-lg-10, +.gy-lg-10 { + --bs-gutter-y: 2.5rem; + } +} +@media (min-width: 1200px) { + .col-xl { + flex: 1 0 0%; + } + .row-cols-xl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xl-0 { + margin-left: 0; + } + .offset-xl-1 { + margin-left: 8.33333333%; + } + .offset-xl-2 { + margin-left: 16.66666667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.33333333%; + } + .offset-xl-5 { + margin-left: 41.66666667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.33333333%; + } + .offset-xl-8 { + margin-left: 66.66666667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.33333333%; + } + .offset-xl-11 { + margin-left: 91.66666667%; + } + .g-xl-0, +.gx-xl-0 { + --bs-gutter-x: 0rem; + } + .g-xl-0, +.gy-xl-0 { + --bs-gutter-y: 0rem; + } + .g-xl-1, +.gx-xl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xl-1, +.gy-xl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xl-2, +.gx-xl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xl-2, +.gy-xl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xl-3, +.gx-xl-3 { + --bs-gutter-x: 0.75rem; + } + .g-xl-3, +.gy-xl-3 { + --bs-gutter-y: 0.75rem; + } + .g-xl-4, +.gx-xl-4 { + --bs-gutter-x: 1rem; + } + .g-xl-4, +.gy-xl-4 { + --bs-gutter-y: 1rem; + } + .g-xl-5, +.gx-xl-5 { + --bs-gutter-x: 1.25rem; + } + .g-xl-5, +.gy-xl-5 { + --bs-gutter-y: 1.25rem; + } + .g-xl-6, +.gx-xl-6 { + --bs-gutter-x: 1.5rem; + } + .g-xl-6, +.gy-xl-6 { + --bs-gutter-y: 1.5rem; + } + .g-xl-7, +.gx-xl-7 { + --bs-gutter-x: 1.75rem; + } + .g-xl-7, +.gy-xl-7 { + --bs-gutter-y: 1.75rem; + } + .g-xl-8, +.gx-xl-8 { + --bs-gutter-x: 2rem; + } + .g-xl-8, +.gy-xl-8 { + --bs-gutter-y: 2rem; + } + .g-xl-9, +.gx-xl-9 { + --bs-gutter-x: 2.25rem; + } + .g-xl-9, +.gy-xl-9 { + --bs-gutter-y: 2.25rem; + } + .g-xl-10, +.gx-xl-10 { + --bs-gutter-x: 2.5rem; + } + .g-xl-10, +.gy-xl-10 { + --bs-gutter-y: 2.5rem; + } +} +@media (min-width: 1400px) { + .col-xxl { + flex: 1 0 0%; + } + .row-cols-xxl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xxl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xxl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xxl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xxl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xxl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xxl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xxl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xxl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xxl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xxl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xxl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xxl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xxl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xxl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xxl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xxl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xxl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xxl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xxl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xxl-0 { + margin-left: 0; + } + .offset-xxl-1 { + margin-left: 8.33333333%; + } + .offset-xxl-2 { + margin-left: 16.66666667%; + } + .offset-xxl-3 { + margin-left: 25%; + } + .offset-xxl-4 { + margin-left: 33.33333333%; + } + .offset-xxl-5 { + margin-left: 41.66666667%; + } + .offset-xxl-6 { + margin-left: 50%; + } + .offset-xxl-7 { + margin-left: 58.33333333%; + } + .offset-xxl-8 { + margin-left: 66.66666667%; + } + .offset-xxl-9 { + margin-left: 75%; + } + .offset-xxl-10 { + margin-left: 83.33333333%; + } + .offset-xxl-11 { + margin-left: 91.66666667%; + } + .g-xxl-0, +.gx-xxl-0 { + --bs-gutter-x: 0rem; + } + .g-xxl-0, +.gy-xxl-0 { + --bs-gutter-y: 0rem; + } + .g-xxl-1, +.gx-xxl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xxl-1, +.gy-xxl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xxl-2, +.gx-xxl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xxl-2, +.gy-xxl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xxl-3, +.gx-xxl-3 { + --bs-gutter-x: 0.75rem; + } + .g-xxl-3, +.gy-xxl-3 { + --bs-gutter-y: 0.75rem; + } + .g-xxl-4, +.gx-xxl-4 { + --bs-gutter-x: 1rem; + } + .g-xxl-4, +.gy-xxl-4 { + --bs-gutter-y: 1rem; + } + .g-xxl-5, +.gx-xxl-5 { + --bs-gutter-x: 1.25rem; + } + .g-xxl-5, +.gy-xxl-5 { + --bs-gutter-y: 1.25rem; + } + .g-xxl-6, +.gx-xxl-6 { + --bs-gutter-x: 1.5rem; + } + .g-xxl-6, +.gy-xxl-6 { + --bs-gutter-y: 1.5rem; + } + .g-xxl-7, +.gx-xxl-7 { + --bs-gutter-x: 1.75rem; + } + .g-xxl-7, +.gy-xxl-7 { + --bs-gutter-y: 1.75rem; + } + .g-xxl-8, +.gx-xxl-8 { + --bs-gutter-x: 2rem; + } + .g-xxl-8, +.gy-xxl-8 { + --bs-gutter-y: 2rem; + } + .g-xxl-9, +.gx-xxl-9 { + --bs-gutter-x: 2.25rem; + } + .g-xxl-9, +.gy-xxl-9 { + --bs-gutter-y: 2.25rem; + } + .g-xxl-10, +.gx-xxl-10 { + --bs-gutter-x: 2.5rem; + } + .g-xxl-10, +.gy-xxl-10 { + --bs-gutter-y: 2.5rem; + } +} +.table { + --bs-table-color: var(--bs-body-color); + --bs-table-bg: transparent; + --bs-table-border-color: var(--bs-border-color); + --bs-table-accent-bg: transparent; + --bs-table-striped-color: var(--bs-body-color); + --bs-table-striped-bg: rgba(var(--bs-gray-100-rgb), 0.75); + --bs-table-active-color: var(--bs-body-color); + --bs-table-active-bg: var(--bs-gray-100); + --bs-table-hover-color: var(--bs-body-color); + --bs-table-hover-bg: var(--bs-gray-100); + width: 100%; + margin-bottom: 1rem; + color: var(--bs-table-color); + vertical-align: top; + border-color: var(--bs-table-border-color); +} +.table > :not(caption) > * > * { + padding: 0.75rem 0.75rem; + background-color: var(--bs-table-bg); + border-bottom-width: 1px; + box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg); +} +.table > tbody { + vertical-align: inherit; +} +.table > thead { + vertical-align: bottom; +} + +.table-group-divider { + border-top: 2px solid currentcolor; +} + +.caption-top { + caption-side: top; +} + +.table-sm > :not(caption) > * > * { + padding: 0.5rem 0.5rem; +} + +.table-bordered > :not(caption) > * { + border-width: 1px 0; +} +.table-bordered > :not(caption) > * > * { + border-width: 0 1px; +} + +.table-borderless > :not(caption) > * > * { + border-bottom-width: 0; +} +.table-borderless > :not(:first-child) { + border-top-width: 0; +} + +.table-striped > tbody > tr:nth-of-type(odd) > * { + --bs-table-accent-bg: var(--bs-table-striped-bg); + color: var(--bs-table-striped-color); +} + +.table-striped-columns > :not(caption) > tr > :nth-child(even) { + --bs-table-accent-bg: var(--bs-table-striped-bg); + color: var(--bs-table-striped-color); +} + +.table-active { + --bs-table-accent-bg: var(--bs-table-active-bg); + color: var(--bs-table-active-color); +} + +.table-hover > tbody > tr:hover > * { + --bs-table-accent-bg: var(--bs-table-hover-bg); + color: var(--bs-table-hover-color); +} + +.table-primary { + --bs-table-color: #000000; + --bs-table-bg: #ccecfd; + --bs-table-border-color: #b8d4e4; + --bs-table-striped-bg: #c2e0f0; + --bs-table-striped-color: #000000; + --bs-table-active-bg: #b8d4e4; + --bs-table-active-color: #000000; + --bs-table-hover-bg: #bddaea; + --bs-table-hover-color: #000000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-secondary { + --bs-table-color: #000000; + --bs-table-bg: #f9f9fb; + --bs-table-border-color: #e0e0e2; + --bs-table-striped-bg: #ededee; + --bs-table-striped-color: #000000; + --bs-table-active-bg: #e0e0e2; + --bs-table-active-color: #000000; + --bs-table-hover-bg: #e6e6e8; + --bs-table-hover-color: #000000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-success { + --bs-table-color: #000000; + --bs-table-bg: #dcf5e7; + --bs-table-border-color: #c6ddd0; + --bs-table-striped-bg: #d1e9db; + --bs-table-striped-color: #000000; + --bs-table-active-bg: #c6ddd0; + --bs-table-active-color: #000000; + --bs-table-hover-bg: #cce3d6; + --bs-table-hover-color: #000000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-info { + --bs-table-color: #000000; + --bs-table-bg: #e3d7fb; + --bs-table-border-color: #ccc2e2; + --bs-table-striped-bg: #d8ccee; + --bs-table-striped-color: #000000; + --bs-table-active-bg: #ccc2e2; + --bs-table-active-color: #000000; + --bs-table-hover-bg: #d2c7e8; + --bs-table-hover-color: #000000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-warning { + --bs-table-color: #000000; + --bs-table-bg: #fff4cc; + --bs-table-border-color: #e6dcb8; + --bs-table-striped-bg: #f2e8c2; + --bs-table-striped-color: #000000; + --bs-table-active-bg: #e6dcb8; + --bs-table-active-color: #000000; + --bs-table-hover-bg: #ece2bd; + --bs-table-hover-color: #000000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-danger { + --bs-table-color: #000000; + --bs-table-bg: #fcd9e2; + --bs-table-border-color: #e3c3cb; + --bs-table-striped-bg: #efced7; + --bs-table-striped-color: #000000; + --bs-table-active-bg: #e3c3cb; + --bs-table-active-color: #000000; + --bs-table-hover-bg: #e9c9d1; + --bs-table-hover-color: #000000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-light { + --bs-table-color: #000000; + --bs-table-bg: #F9F9F9; + --bs-table-border-color: #e0e0e0; + --bs-table-striped-bg: #ededed; + --bs-table-striped-color: #000000; + --bs-table-active-bg: #e0e0e0; + --bs-table-active-color: #000000; + --bs-table-hover-bg: #e6e6e6; + --bs-table-hover-color: #000000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-dark { + --bs-table-color: #ffffff; + --bs-table-bg: #181C32; + --bs-table-border-color: #2f3347; + --bs-table-striped-bg: #24273c; + --bs-table-striped-color: #ffffff; + --bs-table-active-bg: #2f3347; + --bs-table-active-color: #ffffff; + --bs-table-hover-bg: #292d41; + --bs-table-hover-color: #ffffff; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-responsive { + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +@media (max-width: 575.98px) { + .table-responsive-sm { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 767.98px) { + .table-responsive-md { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 991.98px) { + .table-responsive-lg { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1199.98px) { + .table-responsive-xl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1399.98px) { + .table-responsive-xxl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +.form-label { + margin-bottom: 0.5rem; + font-size: 1.05rem; + font-weight: 500; + color: var(--bs-gray-800); +} + +.col-form-label { + padding-top: calc(0.775rem + 1px); + padding-bottom: calc(0.775rem + 1px); + margin-bottom: 0; + font-size: inherit; + font-weight: 500; + line-height: 1.5; + color: var(--bs-gray-800); +} + +.col-form-label-lg { + padding-top: calc(0.825rem + 1px); + padding-bottom: calc(0.825rem + 1px); + font-size: 1.15rem; +} + +.col-form-label-sm { + padding-top: calc(0.55rem + 1px); + padding-bottom: calc(0.55rem + 1px); + font-size: 0.95rem; +} + +.form-text { + margin-top: 0.5rem; + font-size: 0.95rem; + color: var(--bs-text-muted); +} + +.form-control { + display: block; + width: 100%; + padding: 0.775rem 1rem; + font-size: 1.1rem; + font-weight: 500; + line-height: 1.5; + color: var(--bs-gray-700); + background-color: var(--bs-body-bg); + background-clip: padding-box; + border: 1px solid var(--bs-gray-300); + appearance: none; + border-radius: 0.475rem; + box-shadow: false; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control { + transition: none; + } +} +.form-control[type=file] { + overflow: hidden; +} +.form-control[type=file]:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control:focus { + color: var(--bs-gray-700); + background-color: var(--bs-body-bg); + border-color: var(--bs-gray-400); + outline: 0; + box-shadow: false, 0 0 0 0.25rem rgba(var(--bs-component-active-bg), 0.25); +} +.form-control::-webkit-date-and-time-value { + height: 1.5em; +} +.form-control::-webkit-datetime-edit { + display: block; + padding: 0; +} +.form-control::placeholder { + color: var(--bs-gray-500); + opacity: 1; +} +.form-control:disabled { + color: var(--bs-gray-500); + background-color: var(--bs-gray-200); + border-color: var(--bs-gray-300); + opacity: 1; +} +.form-control::file-selector-button { + padding: 0.775rem 1rem; + margin: -0.775rem -1rem; + margin-inline-end: 1rem; + color: var(--bs-gray-700); + background-color: var(--bs-gray-100); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: 1px; + border-radius: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control::file-selector-button { + transition: none; + } +} +.form-control:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: shade-color(var(--bs-gray-100), 5%); +} + +.form-control-plaintext { + display: block; + width: 100%; + padding: 0.775rem 0; + margin-bottom: 0; + line-height: 1.5; + color: var(--bs-gray-700); + background-color: transparent; + border: solid transparent; + border-width: 1px 0; +} +.form-control-plaintext:focus { + outline: 0; +} +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; +} + +.form-control-sm { + min-height: calc(1.5em + 1.1rem + 2px); + padding: 0.55rem 0.75rem; + font-size: 0.95rem; + border-radius: 0.425rem; +} +.form-control-sm::file-selector-button { + padding: 0.55rem 0.75rem; + margin: -0.55rem -0.75rem; + margin-inline-end: 0.75rem; +} + +.form-control-lg { + min-height: calc(1.5em + 1.65rem + 2px); + padding: 0.825rem 1.5rem; + font-size: 1.15rem; + border-radius: 0.625rem; +} +.form-control-lg::file-selector-button { + padding: 0.825rem 1.5rem; + margin: -0.825rem -1.5rem; + margin-inline-end: 1.5rem; +} + +textarea.form-control { + min-height: calc(1.5em + 1.55rem + 2px); +} +textarea.form-control-sm { + min-height: calc(1.5em + 1.1rem + 2px); +} +textarea.form-control-lg { + min-height: calc(1.5em + 1.65rem + 2px); +} + +.form-control-color { + width: 3rem; + height: calc(1.5em + 1.55rem + 2px); + padding: 0.775rem; +} +.form-control-color:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control-color::-moz-color-swatch { + border: 0 !important; + border-radius: 0.475rem; +} +.form-control-color::-webkit-color-swatch { + border-radius: 0.475rem; +} +.form-control-color.form-control-sm { + height: calc(1.5em + 1.1rem + 2px); +} +.form-control-color.form-control-lg { + height: calc(1.5em + 1.65rem + 2px); +} + +.form-select { + --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%237E8299' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); + display: block; + width: 100%; + padding: 0.775rem 3rem 0.775rem 1rem; + -moz-padding-start: calc(1rem - 3px); + font-size: 1.1rem; + font-weight: 500; + line-height: 1.5; + color: var(--bs-gray-700); + background-color: var(--bs-body-bg); + background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none); + background-repeat: no-repeat; + background-position: right 1rem center; + background-size: 16px 12px; + border: 1px solid var(--bs-gray-300); + border-radius: 0.475rem; + box-shadow: var(--bs-box-shadow-inset); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-select { + transition: none; + } +} +.form-select:focus { + border-color: var(--bs-gray-400); + outline: 0; + box-shadow: var(--bs-box-shadow-inset), 0 0 0 0.25rem rgba(var(--bs-component-active-bg), 0.25); +} +.form-select[multiple], .form-select[size]:not([size="1"]) { + padding-right: 1rem; + background-image: none; +} +.form-select:disabled { + color: var(--bs-gray-500); + background-color: var(--bs-gray-200); + border-color: var(--bs-gray-300); +} +.form-select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 var(--bs-gray-700); +} + +.form-select-sm { + padding-top: 0.55rem; + padding-bottom: 0.55rem; + padding-left: 0.75rem; + font-size: 0.95rem; + border-radius: 0.425rem; +} + +.form-select-lg { + padding-top: 0.825rem; + padding-bottom: 0.825rem; + padding-left: 1.5rem; + font-size: 1.15rem; + border-radius: 0.625rem; +} + +[data-bs-theme=dark] .form-select { + --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%236D6D80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); +} + +.form-check { + display: block; + min-height: 1.5rem; + padding-left: 2.25rem; + margin-bottom: 0.125rem; +} +.form-check .form-check-input { + float: left; + margin-left: -2.25rem; +} + +.form-check-reverse { + padding-right: 2.25rem; + padding-left: 0; + text-align: right; +} +.form-check-reverse .form-check-input { + float: right; + margin-right: -2.25rem; + margin-left: 0; +} + +.form-check-input { + --bs-form-check-bg: transparent; + width: 1.75rem; + height: 1.75rem; + margin-top: -0.125rem; + vertical-align: top; + background-color: var(--bs-form-check-bg); + background-image: var(--bs-form-check-bg-image); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + border: 1px solid var(--bs-gray-300); + appearance: none; + print-color-adjust: exact; +} +.form-check-input[type=checkbox] { + border-radius: 0.45em; +} +.form-check-input[type=radio] { + border-radius: 50%; +} +.form-check-input:active { + filter: brightness(90%); +} +.form-check-input:focus { + border-color: var(--bs-gray-400); + outline: 0; + box-shadow: none; +} +.form-check-input:checked { + background-color: #009ef7; + border-color: #009ef7; +} +.form-check-input:checked[type=checkbox] { + --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 13 11' width='13' height='11' fill='none'%3e%3cpath d='M11.0426 1.02893C11.3258 0.695792 11.8254 0.655283 12.1585 0.938451C12.4917 1.22162 12.5322 1.72124 12.249 2.05437L5.51985 9.97104C5.23224 10.3094 4.72261 10.3451 4.3907 10.05L0.828197 6.88335C0.50141 6.59288 0.471975 6.09249 0.762452 5.7657C1.05293 5.43891 1.55332 5.40948 1.88011 5.69995L4.83765 8.32889L11.0426 1.02893Z' fill='%23ffffff'/%3e%3c/svg%3e"); +} +.form-check-input:checked[type=radio] { + --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23ffffff'/%3e%3c/svg%3e"); +} +.form-check-input[type=checkbox]:indeterminate { + background-color: var(--bs-component-checked-bg); + border-color: var(--bs-component-checked-bg); + --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='var%28--bs-component-checked-color%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e"); +} +.form-check-input:disabled { + pointer-events: none; + filter: none; + opacity: 0.5; +} +.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label { + cursor: default; + opacity: 0.5; +} + +.form-check-label { + color: var(--bs-gray-500); +} + +.form-switch { + padding-left: 3.75rem; +} +.form-switch .form-check-input { + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e"); + width: 3.25rem; + margin-left: -3.75rem; + background-image: var(--bs-form-switch-bg); + background-position: left center; + border-radius: 3.25rem; + transition: background-position 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-switch .form-check-input { + transition: none; + } +} +.form-switch .form-check-input:focus { + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e"); +} +.form-switch .form-check-input:checked { + background-position: right center; + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23ffffff'/%3e%3c/svg%3e"); +} +.form-switch.form-check-reverse { + padding-right: 3.75rem; + padding-left: 0; +} +.form-switch.form-check-reverse .form-check-input { + margin-right: -3.75rem; + margin-left: 0; +} + +.form-check-inline { + display: inline-block; + margin-right: 1rem; +} + +.btn-check { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.btn-check[disabled] + .btn, .btn-check:disabled + .btn { + pointer-events: none; + filter: none; + opacity: 0.65; +} + +[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus) { + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e"); +} + +.form-range { + width: 100%; + height: 1.5rem; + padding: 0; + background-color: transparent; + appearance: none; +} +.form-range:focus { + outline: 0; +} +.form-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #ffffff, 0 0 0 0.25rem rgba(var(--bs-component-active-bg), 0.25); +} +.form-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #ffffff, 0 0 0 0.25rem rgba(var(--bs-component-active-bg), 0.25); +} +.form-range::-moz-focus-outer { + border: 0; +} +.form-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #009ef7; + border: 0; + border-radius: 1rem; + box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-webkit-slider-thumb { + transition: none; + } +} +.form-range::-webkit-slider-thumb:active { + background-color: #b3e2fd; +} +.form-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: var(--bs-gray-300); + border-color: transparent; + border-radius: 0.475rem; + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075); +} +.form-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background-color: #009ef7; + border: 0; + border-radius: 1rem; + box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-moz-range-thumb { + transition: none; + } +} +.form-range::-moz-range-thumb:active { + background-color: #b3e2fd; +} +.form-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: var(--bs-gray-300); + border-color: transparent; + border-radius: 0.475rem; + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075); +} +.form-range:disabled { + pointer-events: none; +} +.form-range:disabled::-webkit-slider-thumb { + background-color: var(--bs-gray-500); +} +.form-range:disabled::-moz-range-thumb { + background-color: var(--bs-gray-500); +} + +.form-floating { + position: relative; +} +.form-floating::before:not(.form-control:disabled) { + position: absolute; + top: 1px; + left: 1px; + width: calc(100% - (calc(calc(0.375em + 0.3875rem) + calc(0.75em + 0.775rem)))); + height: 1.875em; + content: ""; + background-color: var(--bs-body-bg); + border-radius: 0.475rem; +} +.form-floating > .form-control, +.form-floating > .form-control-plaintext, +.form-floating > .form-select { + height: calc(3.75rem + 2px); + line-height: 1.25; +} +.form-floating > label { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + padding: 1rem 1rem; + overflow: hidden; + text-align: start; + text-overflow: ellipsis; + white-space: nowrap; + pointer-events: none; + border: 1px solid transparent; + transform-origin: 0 0; + transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-floating > label { + transition: none; + } +} +.form-floating > .form-control, +.form-floating > .form-control-plaintext { + padding: 1rem 1rem; +} +.form-floating > .form-control::placeholder, +.form-floating > .form-control-plaintext::placeholder { + color: transparent; +} +.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown), +.form-floating > .form-control-plaintext:focus, +.form-floating > .form-control-plaintext:not(:placeholder-shown) { + padding-top: 1.85rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:-webkit-autofill, +.form-floating > .form-control-plaintext:-webkit-autofill { + padding-top: 1.85rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-select { + padding-top: 1.85rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:focus ~ label, +.form-floating > .form-control:not(:placeholder-shown) ~ label, +.form-floating > .form-control-plaintext ~ label, +.form-floating > .form-select ~ label { + opacity: 0.65; + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:-webkit-autofill ~ label { + opacity: 0.65; + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control-plaintext ~ label { + border-width: 1px 0; +} +.form-floating > .form-control:disabled ~ label { + color: #7E8299; +} + +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; +} +.input-group > .form-control, +.input-group > .form-select, +.input-group > .form-floating { + position: relative; + flex: 1 1 auto; + width: 1%; + min-width: 0; +} +.input-group > .form-control:focus, +.input-group > .form-select:focus, +.input-group > .form-floating:focus-within { + z-index: 5; +} +.input-group .btn { + position: relative; + z-index: 2; +} +.input-group .btn:focus { + z-index: 5; +} + +.input-group-text { + display: flex; + align-items: center; + padding: 0.775rem 1rem; + font-size: 1.1rem; + font-weight: 500; + line-height: 1.5; + color: var(--bs-gray-700); + text-align: center; + white-space: nowrap; + background-color: var(--bs-gray-100); + border: 1px solid var(--bs-gray-300); + border-radius: 0.475rem; +} + +.input-group-lg > .form-control, +.input-group-lg > .form-select, +.input-group-lg > .input-group-text, +.input-group-lg > .btn { + padding: 0.825rem 1.5rem; + font-size: 1.15rem; + border-radius: 0.625rem; +} + +.input-group-sm > .form-control, +.input-group-sm > .form-select, +.input-group-sm > .input-group-text, +.input-group-sm > .btn { + padding: 0.55rem 0.75rem; + font-size: 0.95rem; + border-radius: 0.425rem; +} + +.input-group-lg > .form-select, +.input-group-sm > .form-select { + padding-right: 4rem; +} + +.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3), +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control, +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4), +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control, +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) { + margin-left: -1px; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group > .form-floating:not(:first-child) > .form-control, +.input-group > .form-floating:not(:first-child) > .form-select { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.5rem; + font-size: 0.95rem; + color: var(--bs-success-text); +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.75rem 1rem; + margin-top: 0.1rem; + font-size: 1rem; + color: #fff; + background-color: var(--bs-success); + border-radius: 0.475rem; +} + +.was-validated :valid ~ .valid-feedback, +.was-validated :valid ~ .valid-tooltip, +.is-valid ~ .valid-feedback, +.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control:valid, .form-control.is-valid { + border-color: var(--bs-success); + padding-right: calc(1.5em + 1.55rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2350cd89' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.3875rem) center; + background-size: calc(0.75em + 0.775rem) calc(0.75em + 0.775rem); +} +.was-validated .form-control:valid:focus, .form-control.is-valid:focus { + border-color: var(--bs-success); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); +} + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-right: calc(1.5em + 1.55rem); + background-position: top calc(0.375em + 0.3875rem) right calc(0.375em + 0.3875rem); +} + +.was-validated .form-select:valid, .form-select.is-valid { + border-color: var(--bs-success); +} +.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] { + --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2350cd89' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + padding-right: 5.5rem; + background-position: right 1rem center, center right 3rem; + background-size: 16px 12px, calc(0.75em + 0.775rem) calc(0.75em + 0.775rem); +} +.was-validated .form-select:valid:focus, .form-select.is-valid:focus { + border-color: var(--bs-success); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); +} + +.was-validated .form-control-color:valid, .form-control-color.is-valid { + width: calc(3rem + calc(1.5em + 1.55rem)); +} + +.was-validated .form-check-input:valid, .form-check-input.is-valid { + border-color: var(--bs-success); +} +.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked { + background-color: var(--bs-success-text); +} +.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus { + box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); +} +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: var(--bs-success-text); +} + +.form-check-inline .form-check-input ~ .valid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid, +.was-validated .input-group > .form-select:not(:focus):valid, +.input-group > .form-select:not(:focus).is-valid, +.was-validated .input-group > .form-floating:not(:focus-within):valid, +.input-group > .form-floating:not(:focus-within).is-valid { + z-index: 3; +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.5rem; + font-size: 0.95rem; + color: var(--bs-danger-text); +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.75rem 1rem; + margin-top: 0.1rem; + font-size: 1rem; + color: #fff; + background-color: var(--bs-danger); + border-radius: 0.475rem; +} + +.was-validated :invalid ~ .invalid-feedback, +.was-validated :invalid ~ .invalid-tooltip, +.is-invalid ~ .invalid-feedback, +.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control:invalid, .form-control.is-invalid { + border-color: var(--bs-danger); + padding-right: calc(1.5em + 1.55rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23f1416c'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23f1416c' stroke='none'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.3875rem) center; + background-size: calc(0.75em + 0.775rem) calc(0.75em + 0.775rem); +} +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { + border-color: var(--bs-danger); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); +} + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-right: calc(1.5em + 1.55rem); + background-position: top calc(0.375em + 0.3875rem) right calc(0.375em + 0.3875rem); +} + +.was-validated .form-select:invalid, .form-select.is-invalid { + border-color: var(--bs-danger); +} +.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] { + --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23f1416c'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23f1416c' stroke='none'/%3e%3c/svg%3e"); + padding-right: 5.5rem; + background-position: right 1rem center, center right 3rem; + background-size: 16px 12px, calc(0.75em + 0.775rem) calc(0.75em + 0.775rem); +} +.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus { + border-color: var(--bs-danger); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); +} + +.was-validated .form-control-color:invalid, .form-control-color.is-invalid { + width: calc(3rem + calc(1.5em + 1.55rem)); +} + +.was-validated .form-check-input:invalid, .form-check-input.is-invalid { + border-color: var(--bs-danger); +} +.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked { + background-color: var(--bs-danger-text); +} +.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus { + box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); +} +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: var(--bs-danger-text); +} + +.form-check-inline .form-check-input ~ .invalid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid, +.was-validated .input-group > .form-select:not(:focus):invalid, +.input-group > .form-select:not(:focus).is-invalid, +.was-validated .input-group > .form-floating:not(:focus-within):invalid, +.input-group > .form-floating:not(:focus-within).is-invalid { + z-index: 4; +} + +.btn { + --bs-btn-padding-x: 1.5rem; + --bs-btn-padding-y: 0.775rem; + --bs-btn-font-family: ; + --bs-btn-font-size: 1.1rem; + --bs-btn-font-weight: 500; + --bs-btn-line-height: 1.5; + --bs-btn-color: #181C32; + --bs-btn-bg: transparent; + --bs-btn-border-width: 1px; + --bs-btn-border-color: transparent; + --bs-btn-border-radius: 0.475rem; + --bs-btn-hover-border-color: transparent; + --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); + --bs-btn-disabled-opacity: 0.65; + --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5); + display: inline-block; + padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x); + font-family: var(--bs-btn-font-family); + font-size: var(--bs-btn-font-size); + font-weight: var(--bs-btn-font-weight); + line-height: var(--bs-btn-line-height); + color: var(--bs-btn-color); + text-align: center; + vertical-align: middle; + cursor: pointer; + user-select: none; + border: var(--bs-btn-border-width) solid var(--bs-btn-border-color); + border-radius: var(--bs-btn-border-radius); + background-color: var(--bs-btn-bg); + box-shadow: var(--bs-btn-box-shadow); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .btn { + transition: none; + } +} +.btn:hover { + color: var(--bs-btn-hover-color); + background-color: var(--bs-btn-hover-bg); + border-color: var(--bs-btn-hover-border-color); +} +.btn-check + .btn:hover { + color: var(--bs-btn-color); + background-color: var(--bs-btn-bg); + border-color: var(--bs-btn-border-color); +} +.btn:focus-visible { + color: var(--bs-btn-hover-color); + background-color: var(--bs-btn-hover-bg); + border-color: var(--bs-btn-hover-border-color); + outline: 0; + box-shadow: var(--bs-btn-box-shadow), var(--bs-btn-focus-box-shadow); +} +.btn-check:focus-visible + .btn { + border-color: var(--bs-btn-hover-border-color); + outline: 0; + box-shadow: var(--bs-btn-box-shadow), var(--bs-btn-focus-box-shadow); +} +.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show { + color: var(--bs-btn-active-color); + background-color: var(--bs-btn-active-bg); + border-color: var(--bs-btn-active-border-color); + box-shadow: var(--bs-btn-active-shadow); +} +.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible { + box-shadow: var(--bs-btn-active-shadow), var(--bs-btn-focus-box-shadow); +} +.btn:disabled, .btn.disabled, fieldset:disabled .btn { + color: var(--bs-btn-disabled-color); + pointer-events: none; + background-color: var(--bs-btn-disabled-bg); + border-color: var(--bs-btn-disabled-border-color); + opacity: var(--bs-btn-disabled-opacity); + box-shadow: none; +} + +.btn-white { + --bs-btn-color: #000000; + --bs-btn-bg: #ffffff; + --bs-btn-border-color: #ffffff; + --bs-btn-hover-color: #000000; + --bs-btn-hover-bg: white; + --bs-btn-hover-border-color: white; + --bs-btn-focus-shadow-rgb: 217, 217, 217; + --bs-btn-active-color: #000000; + --bs-btn-active-bg: white; + --bs-btn-active-border-color: white; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000000; + --bs-btn-disabled-bg: #ffffff; + --bs-btn-disabled-border-color: #ffffff; +} + +.btn-light { + --bs-btn-color: #000000; + --bs-btn-bg: #F9F9F9; + --bs-btn-border-color: #F9F9F9; + --bs-btn-hover-color: #000000; + --bs-btn-hover-bg: #d4d4d4; + --bs-btn-hover-border-color: #c7c7c7; + --bs-btn-focus-shadow-rgb: 212, 212, 212; + --bs-btn-active-color: #000000; + --bs-btn-active-bg: #c7c7c7; + --bs-btn-active-border-color: #bbbbbb; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000000; + --bs-btn-disabled-bg: #F9F9F9; + --bs-btn-disabled-border-color: #F9F9F9; +} + +.btn-primary { + --bs-btn-color: #000000; + --bs-btn-bg: #009ef7; + --bs-btn-border-color: #009ef7; + --bs-btn-hover-color: #000000; + --bs-btn-hover-bg: #26adf8; + --bs-btn-hover-border-color: #1aa8f8; + --bs-btn-focus-shadow-rgb: 0, 134, 210; + --bs-btn-active-color: #000000; + --bs-btn-active-bg: #33b1f9; + --bs-btn-active-border-color: #1aa8f8; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000000; + --bs-btn-disabled-bg: #009ef7; + --bs-btn-disabled-border-color: #009ef7; +} + +.btn-secondary { + --bs-btn-color: #000000; + --bs-btn-bg: #E1E3EA; + --bs-btn-border-color: #E1E3EA; + --bs-btn-hover-color: #000000; + --bs-btn-hover-bg: #e6e7ed; + --bs-btn-hover-border-color: #e4e6ec; + --bs-btn-focus-shadow-rgb: 191, 193, 199; + --bs-btn-active-color: #000000; + --bs-btn-active-bg: #e7e9ee; + --bs-btn-active-border-color: #e4e6ec; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000000; + --bs-btn-disabled-bg: #E1E3EA; + --bs-btn-disabled-border-color: #E1E3EA; +} + +.btn-success { + --bs-btn-color: #000000; + --bs-btn-bg: #50cd89; + --bs-btn-border-color: #50cd89; + --bs-btn-hover-color: #000000; + --bs-btn-hover-bg: #6ad59b; + --bs-btn-hover-border-color: #62d295; + --bs-btn-focus-shadow-rgb: 68, 174, 116; + --bs-btn-active-color: #000000; + --bs-btn-active-bg: #73d7a1; + --bs-btn-active-border-color: #62d295; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000000; + --bs-btn-disabled-bg: #50cd89; + --bs-btn-disabled-border-color: #50cd89; +} + +.btn-info { + --bs-btn-color: #ffffff; + --bs-btn-bg: #7239ea; + --bs-btn-border-color: #7239ea; + --bs-btn-hover-color: #ffffff; + --bs-btn-hover-bg: #6130c7; + --bs-btn-hover-border-color: #5b2ebb; + --bs-btn-focus-shadow-rgb: 135, 87, 237; + --bs-btn-active-color: #ffffff; + --bs-btn-active-bg: #5b2ebb; + --bs-btn-active-border-color: #562bb0; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #ffffff; + --bs-btn-disabled-bg: #7239ea; + --bs-btn-disabled-border-color: #7239ea; +} + +.btn-warning { + --bs-btn-color: #000000; + --bs-btn-bg: #ffc700; + --bs-btn-border-color: #ffc700; + --bs-btn-hover-color: #000000; + --bs-btn-hover-bg: #ffcf26; + --bs-btn-hover-border-color: #ffcd1a; + --bs-btn-focus-shadow-rgb: 217, 169, 0; + --bs-btn-active-color: #000000; + --bs-btn-active-bg: #ffd233; + --bs-btn-active-border-color: #ffcd1a; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000000; + --bs-btn-disabled-bg: #ffc700; + --bs-btn-disabled-border-color: #ffc700; +} + +.btn-danger { + --bs-btn-color: #000000; + --bs-btn-bg: #f1416c; + --bs-btn-border-color: #f1416c; + --bs-btn-hover-color: #000000; + --bs-btn-hover-bg: #f35e82; + --bs-btn-hover-border-color: #f2547b; + --bs-btn-focus-shadow-rgb: 205, 55, 92; + --bs-btn-active-color: #000000; + --bs-btn-active-bg: #f46789; + --bs-btn-active-border-color: #f2547b; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000000; + --bs-btn-disabled-bg: #f1416c; + --bs-btn-disabled-border-color: #f1416c; +} + +.btn-dark { + --bs-btn-color: #ffffff; + --bs-btn-bg: #181C32; + --bs-btn-border-color: #181C32; + --bs-btn-hover-color: #ffffff; + --bs-btn-hover-bg: #3b3e51; + --bs-btn-hover-border-color: #2f3347; + --bs-btn-focus-shadow-rgb: 59, 62, 81; + --bs-btn-active-color: #ffffff; + --bs-btn-active-bg: #46495b; + --bs-btn-active-border-color: #2f3347; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #ffffff; + --bs-btn-disabled-bg: #181C32; + --bs-btn-disabled-border-color: #181C32; +} + +.btn-outline-white { + --bs-btn-color: #ffffff; + --bs-btn-border-color: #ffffff; + --bs-btn-hover-color: #000000; + --bs-btn-hover-bg: #ffffff; + --bs-btn-hover-border-color: #ffffff; + --bs-btn-focus-shadow-rgb: 255, 255, 255; + --bs-btn-active-color: #000000; + --bs-btn-active-bg: #ffffff; + --bs-btn-active-border-color: #ffffff; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #ffffff; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #ffffff; + --bs-gradient: none; +} + +.btn-outline-light { + --bs-btn-color: #F9F9F9; + --bs-btn-border-color: #F9F9F9; + --bs-btn-hover-color: #000000; + --bs-btn-hover-bg: #F9F9F9; + --bs-btn-hover-border-color: #F9F9F9; + --bs-btn-focus-shadow-rgb: 249, 249, 249; + --bs-btn-active-color: #000000; + --bs-btn-active-bg: #F9F9F9; + --bs-btn-active-border-color: #F9F9F9; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #F9F9F9; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #F9F9F9; + --bs-gradient: none; +} + +.btn-outline-primary { + --bs-btn-color: #009ef7; + --bs-btn-border-color: #009ef7; + --bs-btn-hover-color: #000000; + --bs-btn-hover-bg: #009ef7; + --bs-btn-hover-border-color: #009ef7; + --bs-btn-focus-shadow-rgb: 0, 158, 247; + --bs-btn-active-color: #000000; + --bs-btn-active-bg: #009ef7; + --bs-btn-active-border-color: #009ef7; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #009ef7; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #009ef7; + --bs-gradient: none; +} + +.btn-outline-secondary { + --bs-btn-color: #E1E3EA; + --bs-btn-border-color: #E1E3EA; + --bs-btn-hover-color: #000000; + --bs-btn-hover-bg: #E1E3EA; + --bs-btn-hover-border-color: #E1E3EA; + --bs-btn-focus-shadow-rgb: 225, 227, 234; + --bs-btn-active-color: #000000; + --bs-btn-active-bg: #E1E3EA; + --bs-btn-active-border-color: #E1E3EA; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #E1E3EA; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #E1E3EA; + --bs-gradient: none; +} + +.btn-outline-success { + --bs-btn-color: #50cd89; + --bs-btn-border-color: #50cd89; + --bs-btn-hover-color: #000000; + --bs-btn-hover-bg: #50cd89; + --bs-btn-hover-border-color: #50cd89; + --bs-btn-focus-shadow-rgb: 80, 205, 137; + --bs-btn-active-color: #000000; + --bs-btn-active-bg: #50cd89; + --bs-btn-active-border-color: #50cd89; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #50cd89; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #50cd89; + --bs-gradient: none; +} + +.btn-outline-info { + --bs-btn-color: #7239ea; + --bs-btn-border-color: #7239ea; + --bs-btn-hover-color: #ffffff; + --bs-btn-hover-bg: #7239ea; + --bs-btn-hover-border-color: #7239ea; + --bs-btn-focus-shadow-rgb: 114, 57, 234; + --bs-btn-active-color: #ffffff; + --bs-btn-active-bg: #7239ea; + --bs-btn-active-border-color: #7239ea; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #7239ea; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #7239ea; + --bs-gradient: none; +} + +.btn-outline-warning { + --bs-btn-color: #ffc700; + --bs-btn-border-color: #ffc700; + --bs-btn-hover-color: #000000; + --bs-btn-hover-bg: #ffc700; + --bs-btn-hover-border-color: #ffc700; + --bs-btn-focus-shadow-rgb: 255, 199, 0; + --bs-btn-active-color: #000000; + --bs-btn-active-bg: #ffc700; + --bs-btn-active-border-color: #ffc700; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #ffc700; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #ffc700; + --bs-gradient: none; +} + +.btn-outline-danger { + --bs-btn-color: #f1416c; + --bs-btn-border-color: #f1416c; + --bs-btn-hover-color: #000000; + --bs-btn-hover-bg: #f1416c; + --bs-btn-hover-border-color: #f1416c; + --bs-btn-focus-shadow-rgb: 241, 65, 108; + --bs-btn-active-color: #000000; + --bs-btn-active-bg: #f1416c; + --bs-btn-active-border-color: #f1416c; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #f1416c; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #f1416c; + --bs-gradient: none; +} + +.btn-outline-dark { + --bs-btn-color: #181C32; + --bs-btn-border-color: #181C32; + --bs-btn-hover-color: #ffffff; + --bs-btn-hover-bg: #181C32; + --bs-btn-hover-border-color: #181C32; + --bs-btn-focus-shadow-rgb: 24, 28, 50; + --bs-btn-active-color: #ffffff; + --bs-btn-active-bg: #181C32; + --bs-btn-active-border-color: #181C32; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #181C32; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #181C32; + --bs-gradient: none; +} + +.btn-link { + --bs-btn-font-weight: 400; + --bs-btn-color: var(--bs-link-color); + --bs-btn-bg: transparent; + --bs-btn-border-color: transparent; + --bs-btn-hover-color: var(--bs-link-hover-color); + --bs-btn-hover-border-color: transparent; + --bs-btn-active-color: var(--bs-link-hover-color); + --bs-btn-active-border-color: transparent; + --bs-btn-disabled-color: var(--bs-gray-600); + --bs-btn-disabled-border-color: transparent; + --bs-btn-box-shadow: none; + --bs-btn-focus-shadow-rgb: 0, 134, 210; + text-decoration: none; +} +.btn-link:hover, .btn-link:focus-visible { + text-decoration: none; +} +.btn-link:focus-visible { + color: var(--bs-btn-color); +} +.btn-link:hover { + color: var(--bs-btn-hover-color); +} + +.btn-lg, .btn-group-lg > .btn { + --bs-btn-padding-y: 0.825rem; + --bs-btn-padding-x: 1.75rem; + --bs-btn-font-size: 1.15rem; + --bs-btn-border-radius: 0.625rem; +} + +.btn-sm, .btn-group-sm > .btn { + --bs-btn-padding-y: 0.55rem; + --bs-btn-padding-x: 1.25rem; + --bs-btn-font-size: 0.95rem; + --bs-btn-border-radius: 0.425rem; +} + +.fade { + transition: opacity 0.15s linear; +} +@media (prefers-reduced-motion: reduce) { + .fade { + transition: none; + } +} +.fade:not(.show) { + opacity: 0; +} + +.collapse:not(.show) { + display: none; +} + +.collapsing { + height: 0; + overflow: hidden; + transition: height 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} +.collapsing.collapse-horizontal { + width: 0; + height: auto; + transition: width 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing.collapse-horizontal { + transition: none; + } +} + +.dropup, +.dropend, +.dropdown, +.dropstart, +.dropup-center, +.dropdown-center { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; +} +.dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} +.dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropdown-menu { + --bs-dropdown-zindex: 1000; + --bs-dropdown-min-width: 10rem; + --bs-dropdown-padding-x: 0; + --bs-dropdown-padding-y: 0.5rem; + --bs-dropdown-spacer: 0.125rem; + --bs-dropdown-font-size: 1rem; + --bs-dropdown-color: var(--bs-body-color); + --bs-dropdown-bg: var(--bs-body-bg); + --bs-dropdown-border-color: var(--bs-border-color-translucent); + --bs-dropdown-border-radius: 0.475rem; + --bs-dropdown-border-width: 0rem; + --bs-dropdown-inner-border-radius: 0.475rem; + --bs-dropdown-divider-bg: var(--bs-gray-100); + --bs-dropdown-divider-margin-y: 0.5rem; + --bs-dropdown-box-shadow: 0px 0px 50px 0px rgba(82, 63, 105, 0.15); + --bs-dropdown-link-color: var(--bs-gray-900); + --bs-dropdown-link-hover-color: var(--bs-gray-900); + --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg); + --bs-dropdown-link-active-color: var(--bs-component-hover-color); + --bs-dropdown-link-active-bg: var(--bs-component-hover-bg); + --bs-dropdown-link-disabled-color: var(--bs-gray-500); + --bs-dropdown-item-padding-x: 0.85rem; + --bs-dropdown-item-padding-y: 0.65rem; + --bs-dropdown-header-color: var(--bs-gray-600); + --bs-dropdown-header-padding-x: 0.85rem; + --bs-dropdown-header-padding-y: 0.5rem; + position: absolute; + z-index: var(--bs-dropdown-zindex); + display: none; + min-width: var(--bs-dropdown-min-width); + padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x); + margin: 0; + font-size: var(--bs-dropdown-font-size); + color: var(--bs-dropdown-color); + text-align: left; + list-style: none; + background-color: var(--bs-dropdown-bg); + background-clip: padding-box; + border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color); + border-radius: var(--bs-dropdown-border-radius); + box-shadow: var(--bs-dropdown-box-shadow); +} +.dropdown-menu[data-bs-popper] { + top: 100%; + left: 0; + margin-top: var(--bs-dropdown-spacer); +} + +.dropdown-menu-start { + --bs-position: start; +} +.dropdown-menu-start[data-bs-popper] { + right: auto; + left: 0; +} + +.dropdown-menu-end { + --bs-position: end; +} +.dropdown-menu-end[data-bs-popper] { + right: 0; + left: auto; +} + +@media (min-width: 576px) { + .dropdown-menu-sm-start { + --bs-position: start; + } + .dropdown-menu-sm-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-sm-end { + --bs-position: end; + } + .dropdown-menu-sm-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 768px) { + .dropdown-menu-md-start { + --bs-position: start; + } + .dropdown-menu-md-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-md-end { + --bs-position: end; + } + .dropdown-menu-md-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 992px) { + .dropdown-menu-lg-start { + --bs-position: start; + } + .dropdown-menu-lg-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-lg-end { + --bs-position: end; + } + .dropdown-menu-lg-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1200px) { + .dropdown-menu-xl-start { + --bs-position: start; + } + .dropdown-menu-xl-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-xl-end { + --bs-position: end; + } + .dropdown-menu-xl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1400px) { + .dropdown-menu-xxl-start { + --bs-position: start; + } + .dropdown-menu-xxl-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-xxl-end { + --bs-position: end; + } + .dropdown-menu-xxl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +.dropup .dropdown-menu[data-bs-popper] { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: var(--bs-dropdown-spacer); +} +.dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; +} +.dropup .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropend .dropdown-menu[data-bs-popper] { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: var(--bs-dropdown-spacer); +} +.dropend .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; +} +.dropend .dropdown-toggle:empty::after { + margin-left: 0; +} +.dropend .dropdown-toggle::after { + vertical-align: 0; +} + +.dropstart .dropdown-menu[data-bs-popper] { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: var(--bs-dropdown-spacer); +} +.dropstart .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; +} +.dropstart .dropdown-toggle::after { + display: none; +} +.dropstart .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; +} +.dropstart .dropdown-toggle:empty::after { + margin-left: 0; +} +.dropstart .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-divider { + height: 0; + margin: var(--bs-dropdown-divider-margin-y) 0; + overflow: hidden; + border-top: 1px solid var(--bs-dropdown-divider-bg); + opacity: 1; +} + +.dropdown-item { + display: block; + width: 100%; + padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); + clear: both; + font-weight: 400; + color: var(--bs-dropdown-link-color); + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; + border-radius: var(--bs-dropdown-item-border-radius, 0); +} +.dropdown-item:hover, .dropdown-item:focus { + color: var(--bs-dropdown-link-hover-color); + background-color: var(--bs-dropdown-link-hover-bg); +} +.dropdown-item.active, .dropdown-item:active { + color: var(--bs-dropdown-link-active-color); + text-decoration: none; + background-color: var(--bs-dropdown-link-active-bg); +} +.dropdown-item.disabled, .dropdown-item:disabled { + color: var(--bs-dropdown-link-disabled-color); + pointer-events: none; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x); + margin-bottom: 0; + font-size: 0.95rem; + color: var(--bs-dropdown-header-color); + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); + color: var(--bs-dropdown-link-color); +} + +.dropdown-menu-dark { + --bs-dropdown-color: #E1E3EA; + --bs-dropdown-bg: #3F4254; + --bs-dropdown-border-color: var(--bs-border-color-translucent); + --bs-dropdown-box-shadow: ; + --bs-dropdown-link-color: #E1E3EA; + --bs-dropdown-link-hover-color: #ffffff; + --bs-dropdown-divider-bg: var(--bs-gray-100); + --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15); + --bs-dropdown-link-active-color: var(--bs-component-hover-color); + --bs-dropdown-link-active-bg: var(--bs-component-hover-bg); + --bs-dropdown-link-disabled-color: #A1A5B7; + --bs-dropdown-header-color: #A1A5B7; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + flex: 1 1 auto; +} +.btn-group > .btn-check:checked + .btn, +.btn-group > .btn-check:focus + .btn, +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn-check:checked + .btn, +.btn-group-vertical > .btn-check:focus + .btn, +.btn-group-vertical > .btn:hover, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 1; +} + +.btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; +} +.btn-toolbar .input-group { + width: auto; +} + +.btn-group { + border-radius: 0.475rem; +} +.btn-group > :not(.btn-check:first-child) + .btn, +.btn-group > .btn-group:not(:first-child) { + margin-left: -1px; +} +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn.dropdown-toggle-split:first-child, +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:nth-child(n+3), +.btn-group > :not(.btn-check) + .btn, +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.dropdown-toggle-split { + padding-right: 1.125rem; + padding-left: 1.125rem; +} +.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after { + margin-left: 0; +} +.dropstart .dropdown-toggle-split::before { + margin-right: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.9375rem; + padding-left: 0.9375rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 1.3125rem; + padding-left: 1.3125rem; +} + +.btn-group.show .dropdown-toggle { + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn-group.show .dropdown-toggle.btn-link { + box-shadow: none; +} + +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + width: 100%; +} +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: -1px; +} +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn ~ .btn, +.btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav { + --bs-nav-link-padding-x: 1rem; + --bs-nav-link-padding-y: 0.5rem; + --bs-nav-link-font-weight: ; + --bs-nav-link-color: var(--bs-link-color); + --bs-nav-link-hover-color: var(--bs-link-hover-color); + --bs-nav-link-disabled-color: var(--bs-secondary-color); + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x); + font-size: var(--bs-nav-link-font-size); + font-weight: var(--bs-nav-link-font-weight); + color: var(--bs-nav-link-color); + transition: color 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .nav-link { + transition: none; + } +} +.nav-link:hover, .nav-link:focus { + color: var(--bs-nav-link-hover-color); +} +.nav-link.disabled { + color: var(--bs-nav-link-disabled-color); + pointer-events: none; + cursor: default; +} + +.nav-tabs { + --bs-nav-tabs-border-width: var(--bs-border-width); + --bs-nav-tabs-border-color: var(--bs-border-color); + --bs-nav-tabs-border-radius: var(--bs-border-radius); + --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color); + --bs-nav-tabs-link-active-color: var(--bs-emphasis-color); + --bs-nav-tabs-link-active-bg: var(--bs-body-bg); + --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg); + border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color); +} +.nav-tabs .nav-link { + margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width)); + background: none; + border: var(--bs-nav-tabs-border-width) solid transparent; + border-top-left-radius: var(--bs-nav-tabs-border-radius); + border-top-right-radius: var(--bs-nav-tabs-border-radius); +} +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + isolation: isolate; + border-color: var(--bs-nav-tabs-link-hover-border-color); +} +.nav-tabs .nav-link.disabled, .nav-tabs .nav-link:disabled { + color: var(--bs-nav-link-disabled-color); + background-color: transparent; + border-color: transparent; +} +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: var(--bs-nav-tabs-link-active-color); + background-color: var(--bs-nav-tabs-link-active-bg); + border-color: var(--bs-nav-tabs-link-active-border-color); +} +.nav-tabs .dropdown-menu { + margin-top: calc(-1 * var(--bs-nav-tabs-border-width)); + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav-pills { + --bs-nav-pills-border-radius: 0.475rem; + --bs-nav-pills-link-active-color: #ffffff; + --bs-nav-pills-link-active-bg: #009ef7; +} +.nav-pills .nav-link { + background: none; + border: 0; + border-radius: var(--bs-nav-pills-border-radius); +} +.nav-pills .nav-link:disabled { + color: var(--bs-nav-link-disabled-color); + background-color: transparent; + border-color: transparent; +} +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: var(--bs-nav-pills-link-active-color); + background-color: var(--bs-nav-pills-link-active-bg); +} + +.nav-fill > .nav-link, +.nav-fill .nav-item { + flex: 1 1 auto; + text-align: center; +} + +.nav-justified > .nav-link, +.nav-justified .nav-item { + flex-basis: 0; + flex-grow: 1; + text-align: center; +} + +.nav-fill .nav-item .nav-link, +.nav-justified .nav-item .nav-link { + width: 100%; +} + +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} + +.navbar { + --bs-navbar-padding-x: 0; + --bs-navbar-padding-y: 0.5rem; + --bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65); + --bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8); + --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3); + --bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1); + --bs-navbar-brand-padding-y: 0.44375rem; + --bs-navbar-brand-margin-end: 1rem; + --bs-navbar-brand-font-size: 1.075rem; + --bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1); + --bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1); + --bs-navbar-nav-link-padding-x: 0.5rem; + --bs-navbar-toggler-padding-y: 0.25rem; + --bs-navbar-toggler-padding-x: 0.75rem; + --bs-navbar-toggler-font-size: 1.075rem; + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2824, 28, 50, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); + --bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15); + --bs-navbar-toggler-border-radius: 0.475rem; + --bs-navbar-toggler-focus-width: 0.25rem; + --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out; + position: relative; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x); +} +.navbar > .container, +.navbar > .container-fluid, +.navbar > .container-sm, +.navbar > .container-md, +.navbar > .container-lg, +.navbar > .container-xl, +.navbar > .container-xxl { + display: flex; + flex-wrap: inherit; + align-items: center; + justify-content: space-between; +} +.navbar-brand { + padding-top: var(--bs-navbar-brand-padding-y); + padding-bottom: var(--bs-navbar-brand-padding-y); + margin-right: var(--bs-navbar-brand-margin-end); + font-size: var(--bs-navbar-brand-font-size); + color: var(--bs-navbar-brand-color); + white-space: nowrap; +} +.navbar-brand:hover, .navbar-brand:focus { + color: var(--bs-navbar-brand-hover-color); +} + +.navbar-nav { + --bs-nav-link-padding-x: 0; + --bs-nav-link-padding-y: 0.5rem; + --bs-nav-link-font-weight: ; + --bs-nav-link-color: var(--bs-navbar-color); + --bs-nav-link-hover-color: var(--bs-navbar-hover-color); + --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color); + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.navbar-nav .show > .nav-link, +.navbar-nav .nav-link.active { + color: var(--bs-navbar-active-color); +} +.navbar-nav .dropdown-menu { + position: static; +} + +.navbar-text { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--bs-navbar-color); +} +.navbar-text a, +.navbar-text a:hover, +.navbar-text a:focus { + color: var(--bs-navbar-active-color); +} + +.navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; +} + +.navbar-toggler { + padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x); + font-size: var(--bs-navbar-toggler-font-size); + line-height: 1; + color: var(--bs-navbar-color); + background-color: transparent; + border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color); + border-radius: var(--bs-navbar-toggler-border-radius); + transition: var(--bs-navbar-toggler-transition); +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler { + transition: none; + } +} +.navbar-toggler:hover { + text-decoration: none; +} +.navbar-toggler:focus { + text-decoration: none; + outline: 0; + box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width); +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + background-image: var(--bs-navbar-toggler-icon-bg); + background-repeat: no-repeat; + background-position: center; + background-size: 100%; +} + +.navbar-nav-scroll { + max-height: var(--bs-scroll-height, 75vh); + overflow-y: auto; +} + +@media (min-width: 576px) { + .navbar-expand-sm { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-sm .navbar-nav { + flex-direction: row; + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-sm .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-sm .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-sm .navbar-toggler { + display: none; + } + .navbar-expand-sm .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; + } + .navbar-expand-sm .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-sm .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 768px) { + .navbar-expand-md { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-md .navbar-nav { + flex-direction: row; + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-md .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-md .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-md .navbar-toggler { + display: none; + } + .navbar-expand-md .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; + } + .navbar-expand-md .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-md .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 992px) { + .navbar-expand-lg { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-lg .navbar-nav { + flex-direction: row; + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-lg .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-lg .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-lg .navbar-toggler { + display: none; + } + .navbar-expand-lg .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; + } + .navbar-expand-lg .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-lg .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1200px) { + .navbar-expand-xl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-xl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } + .navbar-expand-xl .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; + } + .navbar-expand-xl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1400px) { + .navbar-expand-xxl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xxl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xxl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xxl .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-xxl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xxl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xxl .navbar-toggler { + display: none; + } + .navbar-expand-xxl .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +.navbar-expand { + flex-wrap: nowrap; + justify-content: flex-start; +} +.navbar-expand .navbar-nav { + flex-direction: row; +} +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} +.navbar-expand .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); +} +.navbar-expand .navbar-nav-scroll { + overflow: visible; +} +.navbar-expand .navbar-collapse { + display: flex !important; + flex-basis: auto; +} +.navbar-expand .navbar-toggler { + display: none; +} +.navbar-expand .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + box-shadow: none; + transition: none; +} +.navbar-expand .offcanvas .offcanvas-header { + display: none; +} +.navbar-expand .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; +} + +.navbar-dark { + --bs-navbar-color: rgba(255, 255, 255, 0.55); + --bs-navbar-hover-color: rgba(255, 255, 255, 0.75); + --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25); + --bs-navbar-active-color: #ffffff; + --bs-navbar-brand-color: #ffffff; + --bs-navbar-brand-hover-color: #ffffff; + --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1); + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +[data-bs-theme=dark] .navbar { + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.card { + --bs-card-spacer-y: 1rem; + --bs-card-spacer-x: 1rem; + --bs-card-title-spacer-y: 0.5rem; + --bs-card-title-color: ; + --bs-card-subtitle-color: ; + --bs-card-border-width: var(--bs-border-width); + --bs-card-border-color: var(--bs-border-color); + --bs-card-border-radius: 0.625rem; + --bs-card-box-shadow: 0px 0px 20px 0px rgba(76, 87, 125, 0.02); + --bs-card-inner-border-radius: calc(0.625rem - (var(--bs-border-width))); + --bs-card-cap-padding-y: 0.5rem; + --bs-card-cap-padding-x: 1rem; + --bs-card-cap-bg: transparent; + --bs-card-cap-color: ; + --bs-card-height: ; + --bs-card-color: ; + --bs-card-bg: var(--bs-body-bg); + --bs-card-img-overlay-padding: 1rem; + --bs-card-group-margin: 0.75rem; + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + height: var(--bs-card-height); + word-wrap: break-word; + background-color: var(--bs-card-bg); + background-clip: border-box; + border: var(--bs-card-border-width) solid var(--bs-card-border-color); + border-radius: var(--bs-card-border-radius); + box-shadow: var(--bs-card-box-shadow); +} +.card > hr { + margin-right: 0; + margin-left: 0; +} +.card > .list-group { + border-top: inherit; + border-bottom: inherit; +} +.card > .list-group:first-child { + border-top-width: 0; + border-top-left-radius: var(--bs-card-inner-border-radius); + border-top-right-radius: var(--bs-card-inner-border-radius); +} +.card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-right-radius: var(--bs-card-inner-border-radius); + border-bottom-left-radius: var(--bs-card-inner-border-radius); +} +.card > .card-header + .list-group, +.card > .list-group + .card-footer { + border-top: 0; +} + +.card-body { + flex: 1 1 auto; + padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x); + color: var(--bs-card-color); +} + +.card-title { + margin-bottom: var(--bs-card-title-spacer-y); + color: var(--bs-card-title-color); +} + +.card-subtitle { + margin-top: calc(-0.5 * var(--bs-card-title-spacer-y)); + margin-bottom: 0; + color: var(--bs-card-subtitle-color); +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link + .card-link { + margin-left: var(--bs-card-spacer-x); +} + +.card-header { + padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); + margin-bottom: 0; + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color); +} +.card-header:first-child { + border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0; +} + +.card-footer { + padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-top: var(--bs-card-border-width) solid var(--bs-card-border-color); +} +.card-footer:last-child { + border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius); +} + +.card-header-tabs { + margin-right: calc(-0.5 * var(--bs-card-cap-padding-x)); + margin-bottom: calc(-1 * var(--bs-card-cap-padding-y)); + margin-left: calc(-0.5 * var(--bs-card-cap-padding-x)); + border-bottom: 0; +} +.card-header-tabs .nav-link.active { + background-color: var(--bs-card-bg); + border-bottom-color: var(--bs-card-bg); +} + +.card-header-pills { + margin-right: calc(-0.5 * var(--bs-card-cap-padding-x)); + margin-left: calc(-0.5 * var(--bs-card-cap-padding-x)); +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: var(--bs-card-img-overlay-padding); + border-radius: var(--bs-card-inner-border-radius); +} + +.card-img, +.card-img-top, +.card-img-bottom { + width: 100%; +} + +.card-img, +.card-img-top { + border-top-left-radius: var(--bs-card-inner-border-radius); + border-top-right-radius: var(--bs-card-inner-border-radius); +} + +.card-img, +.card-img-bottom { + border-bottom-right-radius: var(--bs-card-inner-border-radius); + border-bottom-left-radius: var(--bs-card-inner-border-radius); +} + +.card-group > .card { + margin-bottom: var(--bs-card-group-margin); +} +@media (min-width: 576px) { + .card-group { + display: flex; + flex-flow: row wrap; + } + .card-group > .card { + flex: 1 0 0%; + margin-bottom: 0; + } + .card-group > .card + .card { + margin-left: 0; + border-left: 0; + } + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-top, +.card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-bottom, +.card-group > .card:not(:last-child) .card-footer { + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-top, +.card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-bottom, +.card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; + } +} + +.accordion { + --bs-accordion-color: var(--bs-body-color); + --bs-accordion-bg: var(--bs-body-bg); + --bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease; + --bs-accordion-border-color: var(--bs-border-color); + --bs-accordion-border-width: var(--bs-border-width); + --bs-accordion-border-radius: 0.475rem; + --bs-accordion-inner-border-radius: calc(0.475rem - (var(--bs-border-width))); + --bs-accordion-btn-padding-x: 1.5rem; + --bs-accordion-btn-padding-y: 1.5rem; + --bs-accordion-btn-color: var(--bs-body-color); + --bs-accordion-btn-bg: var(--bs-body-bg); + --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23181C32'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --bs-accordion-btn-icon-width: 1.15rem; + --bs-accordion-btn-icon-transform: rotate(-180deg); + --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out; + --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23009ef7'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --bs-accordion-btn-focus-border-color: var(--bs-border-color); + --bs-accordion-btn-focus-box-shadow: none; + --bs-accordion-body-padding-x: 1.5rem; + --bs-accordion-body-padding-y: 1.5rem; + --bs-accordion-active-color: var(--bs-primary); + --bs-accordion-active-bg: var(--bs-gray-100); +} + +.accordion-button { + position: relative; + display: flex; + align-items: center; + width: 100%; + padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x); + font-size: 1rem; + color: var(--bs-accordion-btn-color); + text-align: left; + background-color: var(--bs-accordion-btn-bg); + border: 0; + border-radius: 0; + overflow-anchor: none; + transition: var(--bs-accordion-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button { + transition: none; + } +} +.accordion-button:not(.collapsed) { + color: var(--bs-accordion-active-color); + background-color: var(--bs-accordion-active-bg); + box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color); +} +.accordion-button:not(.collapsed)::after { + background-image: var(--bs-accordion-btn-active-icon); + transform: var(--bs-accordion-btn-icon-transform); +} +.accordion-button::after { + flex-shrink: 0; + width: var(--bs-accordion-btn-icon-width); + height: var(--bs-accordion-btn-icon-width); + margin-left: auto; + content: ""; + background-image: var(--bs-accordion-btn-icon); + background-repeat: no-repeat; + background-size: var(--bs-accordion-btn-icon-width); + transition: var(--bs-accordion-btn-icon-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button::after { + transition: none; + } +} +.accordion-button:hover { + z-index: 2; +} +.accordion-button:focus { + z-index: 3; + border-color: var(--bs-accordion-btn-focus-border-color); + outline: 0; + box-shadow: var(--bs-accordion-btn-focus-box-shadow); +} + +.accordion-header { + margin-bottom: 0; +} + +.accordion-item { + color: var(--bs-accordion-color); + background-color: var(--bs-accordion-bg); + border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color); +} +.accordion-item:first-of-type { + border-top-left-radius: var(--bs-accordion-border-radius); + border-top-right-radius: var(--bs-accordion-border-radius); +} +.accordion-item:first-of-type .accordion-button { + border-top-left-radius: var(--bs-accordion-inner-border-radius); + border-top-right-radius: var(--bs-accordion-inner-border-radius); +} +.accordion-item:not(:first-of-type) { + border-top: 0; +} +.accordion-item:last-of-type { + border-bottom-right-radius: var(--bs-accordion-border-radius); + border-bottom-left-radius: var(--bs-accordion-border-radius); +} +.accordion-item:last-of-type .accordion-button.collapsed { + border-bottom-right-radius: var(--bs-accordion-inner-border-radius); + border-bottom-left-radius: var(--bs-accordion-inner-border-radius); +} +.accordion-item:last-of-type .accordion-collapse { + border-bottom-right-radius: var(--bs-accordion-border-radius); + border-bottom-left-radius: var(--bs-accordion-border-radius); +} + +.accordion-body { + padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x); +} + +.accordion-flush .accordion-collapse { + border-width: 0; +} +.accordion-flush .accordion-item { + border-right: 0; + border-left: 0; + border-radius: 0; +} +.accordion-flush .accordion-item:first-child { + border-top: 0; +} +.accordion-flush .accordion-item:last-child { + border-bottom: 0; +} +.accordion-flush .accordion-item .accordion-button, .accordion-flush .accordion-item .accordion-button.collapsed { + border-radius: 0; +} + +[data-bs-theme=dark] .accordion-button::after { + --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23FFFFFF'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23009ef7'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); +} + +.breadcrumb { + --bs-breadcrumb-padding-x: 0; + --bs-breadcrumb-padding-y: 0; + --bs-breadcrumb-margin-bottom: 1rem; + --bs-breadcrumb-bg: ; + --bs-breadcrumb-border-radius: ; + --bs-breadcrumb-divider-color: var(--bs-gray-600); + --bs-breadcrumb-item-padding-x: 0.5rem; + --bs-breadcrumb-item-active-color: var(--bs-primary); + display: flex; + flex-wrap: wrap; + padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x); + margin-bottom: var(--bs-breadcrumb-margin-bottom); + font-size: var(--bs-breadcrumb-font-size); + list-style: none; + background-color: var(--bs-breadcrumb-bg); + border-radius: var(--bs-breadcrumb-border-radius); +} + +.breadcrumb-item + .breadcrumb-item { + padding-left: var(--bs-breadcrumb-item-padding-x); +} +.breadcrumb-item + .breadcrumb-item::before { + float: left; + padding-right: var(--bs-breadcrumb-item-padding-x); + color: var(--bs-breadcrumb-divider-color); + content: var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */; +} +.breadcrumb-item.active { + color: var(--bs-breadcrumb-item-active-color); +} + +.pagination { + --bs-pagination-padding-x: 0.75rem; + --bs-pagination-padding-y: 0.375rem; + --bs-pagination-font-size: 1.075rem; + --bs-pagination-color: var(--bs-gray-700); + --bs-pagination-bg: transparent; + --bs-pagination-border-width: 0; + --bs-pagination-border-color: transparent; + --bs-pagination-border-radius: 0.475rem; + --bs-pagination-hover-color: var(--bs-component-hover-color); + --bs-pagination-hover-bg: var(--bs-component-hover-bg); + --bs-pagination-hover-border-color: transparent; + --bs-pagination-focus-color: var(--bs-component-hover-color); + --bs-pagination-focus-bg: var(--bs-component-hover-bg); + --bs-pagination-focus-box-shadow: none; + --bs-pagination-active-color: var(--bs-component-active-color); + --bs-pagination-active-bg: var(--bs-component-active-bg); + --bs-pagination-active-border-color: transparent; + --bs-pagination-disabled-color: var(--bs-gray-400); + --bs-pagination-disabled-bg: transparent; + --bs-pagination-disabled-border-color: transparent; + display: flex; + padding-left: 0; + list-style: none; +} + +.page-link { + position: relative; + display: block; + padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x); + font-size: var(--bs-pagination-font-size); + color: var(--bs-pagination-color); + background-color: var(--bs-pagination-bg); + border: var(--bs-pagination-border-width) solid var(--bs-pagination-border-color); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .page-link { + transition: none; + } +} +.page-link:hover { + z-index: 2; + color: var(--bs-pagination-hover-color); + background-color: var(--bs-pagination-hover-bg); + border-color: var(--bs-pagination-hover-border-color); +} +.page-link:focus { + z-index: 3; + color: var(--bs-pagination-focus-color); + background-color: var(--bs-pagination-focus-bg); + outline: 0; + box-shadow: var(--bs-pagination-focus-box-shadow); +} +.page-link.active, .active > .page-link { + z-index: 3; + color: var(--bs-pagination-active-color); + background-color: var(--bs-pagination-active-bg); + border-color: var(--bs-pagination-active-border-color); +} +.page-link.disabled, .disabled > .page-link { + color: var(--bs-pagination-disabled-color); + pointer-events: none; + background-color: var(--bs-pagination-disabled-bg); + border-color: var(--bs-pagination-disabled-border-color); +} + +.page-item:not(:first-child) .page-link { + margin-left: 0; +} +.page-item:first-child .page-link { + border-top-left-radius: var(--bs-pagination-border-radius); + border-bottom-left-radius: var(--bs-pagination-border-radius); +} +.page-item:last-child .page-link { + border-top-right-radius: var(--bs-pagination-border-radius); + border-bottom-right-radius: var(--bs-pagination-border-radius); +} + +.pagination-lg { + --bs-pagination-padding-x: 1.5rem; + --bs-pagination-padding-y: 0.75rem; + --bs-pagination-font-size: 1.075rem; + --bs-pagination-border-radius: 0.625rem; +} + +.pagination-sm { + --bs-pagination-padding-x: 0.5rem; + --bs-pagination-padding-y: 0.25rem; + --bs-pagination-font-size: 0.95rem; + --bs-pagination-border-radius: 0.425rem; +} + +.badge { + --bs-badge-padding-x: 0.5rem; + --bs-badge-padding-y: 0.325rem; + --bs-badge-font-size: 0.85rem; + --bs-badge-font-weight: 600; + --bs-badge-color: var(--bs-body-bg); + --bs-badge-border-radius: 0.425rem; + display: inline-block; + padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x); + font-size: var(--bs-badge-font-size); + font-weight: var(--bs-badge-font-weight); + line-height: 1; + color: var(--bs-badge-color); + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: var(--bs-badge-border-radius); +} +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +.alert { + --bs-alert-bg: transparent; + --bs-alert-padding-x: 1rem; + --bs-alert-padding-y: 1rem; + --bs-alert-margin-bottom: 1rem; + --bs-alert-color: inherit; + --bs-alert-border-color: transparent; + --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color); + --bs-alert-border-radius: 0.475rem; + --bs-alert-link-color: inherit; + position: relative; + padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x); + margin-bottom: var(--bs-alert-margin-bottom); + color: var(--bs-alert-color); + background-color: var(--bs-alert-bg); + border: var(--bs-alert-border); + border-radius: var(--bs-alert-border-radius); +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: 600; + color: var(--bs-alert-link-color); +} + +.alert-dismissible { + padding-right: 3rem; +} +.alert-dismissible .btn-close { + position: absolute; + top: 0; + right: 0; + z-index: 2; + padding: 1.25rem 1rem; +} + +.alert-white { + --bs-alert-color: var(--bs-white-text); + --bs-alert-bg: var(--bs-white-bg-subtle); + --bs-alert-border-color: var(--bs-white-border-subtle); + --bs-alert-link-color: var(--bs-white-text); +} + +.alert-light { + --bs-alert-color: var(--bs-light-text); + --bs-alert-bg: var(--bs-light-bg-subtle); + --bs-alert-border-color: var(--bs-light-border-subtle); + --bs-alert-link-color: var(--bs-light-text); +} + +.alert-primary { + --bs-alert-color: var(--bs-primary-text); + --bs-alert-bg: var(--bs-primary-bg-subtle); + --bs-alert-border-color: var(--bs-primary-border-subtle); + --bs-alert-link-color: var(--bs-primary-text); +} + +.alert-secondary { + --bs-alert-color: var(--bs-secondary-text); + --bs-alert-bg: var(--bs-secondary-bg-subtle); + --bs-alert-border-color: var(--bs-secondary-border-subtle); + --bs-alert-link-color: var(--bs-secondary-text); +} + +.alert-success { + --bs-alert-color: var(--bs-success-text); + --bs-alert-bg: var(--bs-success-bg-subtle); + --bs-alert-border-color: var(--bs-success-border-subtle); + --bs-alert-link-color: var(--bs-success-text); +} + +.alert-info { + --bs-alert-color: var(--bs-info-text); + --bs-alert-bg: var(--bs-info-bg-subtle); + --bs-alert-border-color: var(--bs-info-border-subtle); + --bs-alert-link-color: var(--bs-info-text); +} + +.alert-warning { + --bs-alert-color: var(--bs-warning-text); + --bs-alert-bg: var(--bs-warning-bg-subtle); + --bs-alert-border-color: var(--bs-warning-border-subtle); + --bs-alert-link-color: var(--bs-warning-text); +} + +.alert-danger { + --bs-alert-color: var(--bs-danger-text); + --bs-alert-bg: var(--bs-danger-bg-subtle); + --bs-alert-border-color: var(--bs-danger-border-subtle); + --bs-alert-link-color: var(--bs-danger-text); +} + +.alert-dark { + --bs-alert-color: var(--bs-dark-text); + --bs-alert-bg: var(--bs-dark-bg-subtle); + --bs-alert-border-color: var(--bs-dark-border-subtle); + --bs-alert-link-color: var(--bs-dark-text); +} + +@keyframes progress-bar-stripes { + 0% { + background-position-x: 1rem; + } +} +.progress, +.progress-stacked { + --bs-progress-height: 1rem; + --bs-progress-font-size: 0.75rem; + --bs-progress-bg: var(--bs-gray-100); + --bs-progress-border-radius: 6px; + --bs-progress-box-shadow: none; + --bs-progress-bar-color: #ffffff; + --bs-progress-bar-bg: #009ef7; + --bs-progress-bar-transition: width 0.6s ease; + display: flex; + height: var(--bs-progress-height); + overflow: hidden; + font-size: var(--bs-progress-font-size); + background-color: var(--bs-progress-bg); + border-radius: var(--bs-progress-border-radius); + box-shadow: var(--bs-progress-box-shadow); +} + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + color: var(--bs-progress-bar-color); + text-align: center; + white-space: nowrap; + background-color: var(--bs-progress-bar-bg); + transition: var(--bs-progress-bar-transition); +} +@media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; + } +} + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: var(--bs-progress-height) var(--bs-progress-height); +} + +.progress-stacked > .progress { + overflow: visible; +} + +.progress-stacked > .progress > .progress-bar { + width: 100%; +} + +.progress-bar-animated { + animation: 1s linear infinite progress-bar-stripes; +} +@media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + animation: none; + } +} + +.list-group { + --bs-list-group-color: var(--bs-gray-900); + --bs-list-group-bg: #ffffff; + --bs-list-group-border-color: rgba(0, 0, 0, 0.125); + --bs-list-group-border-width: var(--bs-border-width); + --bs-list-group-border-radius: var(--bs-border-radius); + --bs-list-group-item-padding-x: 1rem; + --bs-list-group-item-padding-y: 0.5rem; + --bs-list-group-action-color: var(--bs-gray-700); + --bs-list-group-action-hover-color: var(--bs-gray-700); + --bs-list-group-action-hover-bg: var(--bs-gray-100); + --bs-list-group-action-active-color: var(--bs-body-color); + --bs-list-group-action-active-bg: var(--bs-gray-200); + --bs-list-group-disabled-color: var(--bs-gray-600); + --bs-list-group-disabled-bg: #ffffff; + --bs-list-group-active-color: var(--bs-component-active-color); + --bs-list-group-active-bg: var(--bs-component-active-bg); + --bs-list-group-active-border-color: var(--bs-component-active-bg); + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + border-radius: var(--bs-list-group-border-radius); +} + +.list-group-numbered { + list-style-type: none; + counter-reset: section; +} +.list-group-numbered > .list-group-item::before { + content: counters(section, ".") ". "; + counter-increment: section; +} + +.list-group-item-action { + width: 100%; + color: var(--bs-list-group-action-color); + text-align: inherit; +} +.list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: var(--bs-list-group-action-hover-color); + text-decoration: none; + background-color: var(--bs-list-group-action-hover-bg); +} +.list-group-item-action:active { + color: var(--bs-list-group-action-active-color); + background-color: var(--bs-list-group-action-active-bg); +} + +.list-group-item { + position: relative; + display: block; + padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x); + color: var(--bs-list-group-color); + background-color: var(--bs-list-group-bg); + border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color); +} +.list-group-item:first-child { + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} +.list-group-item:last-child { + border-bottom-right-radius: inherit; + border-bottom-left-radius: inherit; +} +.list-group-item.disabled, .list-group-item:disabled { + color: var(--bs-list-group-disabled-color); + pointer-events: none; + background-color: var(--bs-list-group-disabled-bg); +} +.list-group-item.active { + z-index: 2; + color: var(--bs-list-group-active-color); + background-color: var(--bs-list-group-active-bg); + border-color: var(--bs-list-group-active-border-color); +} +.list-group-item + .list-group-item { + border-top-width: 0; +} +.list-group-item + .list-group-item.active { + margin-top: calc(-1 * var(--bs-list-group-border-width)); + border-top-width: var(--bs-list-group-border-width); +} + +.list-group-horizontal { + flex-direction: row; +} +.list-group-horizontal > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; +} +.list-group-horizontal > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; +} +.list-group-horizontal > .list-group-item.active { + margin-top: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); +} + +@media (min-width: 576px) { + .list-group-horizontal-sm { + flex-direction: row; + } + .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-sm > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 768px) { + .list-group-horizontal-md { + flex-direction: row; + } + .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-md > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 992px) { + .list-group-horizontal-lg { + flex-direction: row; + } + .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-lg > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 1200px) { + .list-group-horizontal-xl { + flex-direction: row; + } + .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-xl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 1400px) { + .list-group-horizontal-xxl { + flex-direction: row; + } + .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +.list-group-flush { + border-radius: 0; +} +.list-group-flush > .list-group-item { + border-width: 0 0 var(--bs-list-group-border-width); +} +.list-group-flush > .list-group-item:last-child { + border-bottom-width: 0; +} + +.list-group-item-white { + --bs-list-group-color: var(--bs-white-text); + --bs-list-group-bg: var(--bs-white-bg-subtle); + --bs-list-group-border-color: var(--bs-white-border-subtle); +} +.list-group-item-white.list-group-item-action:hover, .list-group-item-white.list-group-item-action:focus { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-white-border-subtle); +} +.list-group-item-white.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-white-text); + --bs-list-group-active-border-color: var(--bs-white-text); +} + +.list-group-item-light { + --bs-list-group-color: var(--bs-light-text); + --bs-list-group-bg: var(--bs-light-bg-subtle); + --bs-list-group-border-color: var(--bs-light-border-subtle); +} +.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-light-border-subtle); +} +.list-group-item-light.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-light-text); + --bs-list-group-active-border-color: var(--bs-light-text); +} + +.list-group-item-primary { + --bs-list-group-color: var(--bs-primary-text); + --bs-list-group-bg: var(--bs-primary-bg-subtle); + --bs-list-group-border-color: var(--bs-primary-border-subtle); +} +.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle); +} +.list-group-item-primary.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-primary-text); + --bs-list-group-active-border-color: var(--bs-primary-text); +} + +.list-group-item-secondary { + --bs-list-group-color: var(--bs-secondary-text); + --bs-list-group-bg: var(--bs-secondary-bg-subtle); + --bs-list-group-border-color: var(--bs-secondary-border-subtle); +} +.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle); +} +.list-group-item-secondary.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-secondary-text); + --bs-list-group-active-border-color: var(--bs-secondary-text); +} + +.list-group-item-success { + --bs-list-group-color: var(--bs-success-text); + --bs-list-group-bg: var(--bs-success-bg-subtle); + --bs-list-group-border-color: var(--bs-success-border-subtle); +} +.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-success-border-subtle); +} +.list-group-item-success.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-success-text); + --bs-list-group-active-border-color: var(--bs-success-text); +} + +.list-group-item-info { + --bs-list-group-color: var(--bs-info-text); + --bs-list-group-bg: var(--bs-info-bg-subtle); + --bs-list-group-border-color: var(--bs-info-border-subtle); +} +.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-info-border-subtle); +} +.list-group-item-info.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-info-text); + --bs-list-group-active-border-color: var(--bs-info-text); +} + +.list-group-item-warning { + --bs-list-group-color: var(--bs-warning-text); + --bs-list-group-bg: var(--bs-warning-bg-subtle); + --bs-list-group-border-color: var(--bs-warning-border-subtle); +} +.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle); +} +.list-group-item-warning.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-warning-text); + --bs-list-group-active-border-color: var(--bs-warning-text); +} + +.list-group-item-danger { + --bs-list-group-color: var(--bs-danger-text); + --bs-list-group-bg: var(--bs-danger-bg-subtle); + --bs-list-group-border-color: var(--bs-danger-border-subtle); +} +.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle); +} +.list-group-item-danger.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-danger-text); + --bs-list-group-active-border-color: var(--bs-danger-text); +} + +.list-group-item-dark { + --bs-list-group-color: var(--bs-dark-text); + --bs-list-group-bg: var(--bs-dark-bg-subtle); + --bs-list-group-border-color: var(--bs-dark-border-subtle); +} +.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle); +} +.list-group-item-dark.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-dark-text); + --bs-list-group-active-border-color: var(--bs-dark-text); +} + +.btn-close { + --bs-btn-close-color: #000000; + --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e"); + --bs-btn-close-opacity: 0.5; + --bs-btn-close-hover-opacity: 0.75; + --bs-btn-close-focus-shadow: none; + --bs-btn-close-focus-opacity: 1; + --bs-btn-close-disabled-opacity: 0.25; + --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%); + box-sizing: content-box; + width: 0.75rem; + height: 0.75rem; + padding: 0.25em 0.25em; + color: var(--bs-btn-close-color); + background: transparent var(--bs-btn-close-bg) center/0.75rem auto no-repeat; + border: 0; + border-radius: 0.475rem; + opacity: var(--bs-btn-close-opacity); +} +.btn-close:hover { + color: var(--bs-btn-close-color); + text-decoration: none; + opacity: var(--bs-btn-close-hover-opacity); +} +.btn-close:focus { + outline: 0; + box-shadow: var(--bs-btn-close-focus-shadow); + opacity: var(--bs-btn-close-focus-opacity); +} +.btn-close:disabled, .btn-close.disabled { + pointer-events: none; + user-select: none; + opacity: var(--bs-btn-close-disabled-opacity); +} + +.btn-close-white { + filter: var(--bs-btn-close-white-filter); +} + +[data-bs-theme=dark] .btn-close { + filter: var(--bs-btn-close-white-filter); +} + +.toast { + --bs-toast-zindex: 1090; + --bs-toast-padding-x: 0.75rem; + --bs-toast-padding-y: 0.5rem; + --bs-toast-spacing: 1.5rem; + --bs-toast-max-width: 350px; + --bs-toast-font-size: 0.875rem; + --bs-toast-color: var(--bs-gray-700); + --bs-toast-bg: var(--bs-body-bg); + --bs-toast-border-width: var(--bs-border-width); + --bs-toast-border-color: transparent; + --bs-toast-border-radius: var(--bs-border-radius); + --bs-toast-box-shadow: var(--bs-box-shadow); + --bs-toast-header-color: var(--bs-gray-700); + --bs-toast-header-bg: var(--bs-body-bg); + --bs-toast-header-border-color: var(--bs-border-color); + width: var(--bs-toast-max-width); + max-width: 100%; + font-size: var(--bs-toast-font-size); + color: var(--bs-toast-color); + pointer-events: auto; + background-color: var(--bs-toast-bg); + background-clip: padding-box; + border: var(--bs-toast-border-width) solid var(--bs-toast-border-color); + box-shadow: var(--bs-toast-box-shadow); + border-radius: var(--bs-toast-border-radius); +} +.toast.showing { + opacity: 0; +} +.toast:not(.show) { + display: none; +} + +.toast-container { + --bs-toast-zindex: 1090; + position: absolute; + z-index: var(--bs-toast-zindex); + width: max-content; + max-width: 100%; + pointer-events: none; +} +.toast-container > :not(:last-child) { + margin-bottom: var(--bs-toast-spacing); +} + +.toast-header { + display: flex; + align-items: center; + padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x); + color: var(--bs-toast-header-color); + background-color: var(--bs-toast-header-bg); + background-clip: padding-box; + border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color); + border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width)); + border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width)); +} +.toast-header .btn-close { + margin-right: calc(-0.5 * var(--bs-toast-padding-x)); + margin-left: var(--bs-toast-padding-x); +} + +.toast-body { + padding: var(--bs-toast-padding-x); + word-wrap: break-word; +} + +.modal { + --bs-modal-zindex: 1055; + --bs-modal-width: 500px; + --bs-modal-padding: 1.75rem; + --bs-modal-margin: 0.5rem; + --bs-modal-color: ; + --bs-modal-bg: var(--bs-body-bg); + --bs-modal-border-color: var(--bs-border-color-translucent); + --bs-modal-border-width: 0; + --bs-modal-border-radius: 0.475rem; + --bs-modal-box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.1); + --bs-modal-inner-border-radius: 0.475rem; + --bs-modal-header-padding-x: 1.75rem; + --bs-modal-header-padding-y: 1.75rem; + --bs-modal-header-padding: 1.75rem 1.75rem; + --bs-modal-header-border-color: var(--bs-border-color); + --bs-modal-header-border-width: 1px; + --bs-modal-title-line-height: 1.5; + --bs-modal-footer-gap: 0.5rem; + --bs-modal-footer-bg: ; + --bs-modal-footer-border-color: var(--bs-border-color); + --bs-modal-footer-border-width: 1px; + position: fixed; + top: 0; + left: 0; + z-index: var(--bs-modal-zindex); + display: none; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + outline: 0; +} + +.modal-dialog { + position: relative; + width: auto; + margin: var(--bs-modal-margin); + pointer-events: none; +} +.modal.fade .modal-dialog { + transition: transform 0.3s ease-out; + transform: translate(0, -50px); +} +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; + } +} +.modal.show .modal-dialog { + transform: none; +} +.modal.modal-static .modal-dialog { + transform: scale(1.02); +} + +.modal-dialog-scrollable { + height: calc(100% - var(--bs-modal-margin) * 2); +} +.modal-dialog-scrollable .modal-content { + max-height: 100%; + overflow: hidden; +} +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} + +.modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - var(--bs-modal-margin) * 2); +} + +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + color: var(--bs-modal-color); + pointer-events: auto; + background-color: var(--bs-modal-bg); + background-clip: padding-box; + border: var(--bs-modal-border-width) solid var(--bs-modal-border-color); + border-radius: var(--bs-modal-border-radius); + box-shadow: var(--bs-modal-box-shadow); + outline: 0; +} + +.modal-backdrop { + --bs-backdrop-zindex: 1050; + --bs-backdrop-bg: #000000; + --bs-backdrop-opacity: 0.4; + position: fixed; + top: 0; + left: 0; + z-index: var(--bs-backdrop-zindex); + width: 100vw; + height: 100vh; + background-color: var(--bs-backdrop-bg); +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop.show { + opacity: var(--bs-backdrop-opacity); +} + +.modal-header { + display: flex; + flex-shrink: 0; + align-items: center; + justify-content: space-between; + padding: var(--bs-modal-header-padding); + border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color); + border-top-left-radius: var(--bs-modal-inner-border-radius); + border-top-right-radius: var(--bs-modal-inner-border-radius); +} +.modal-header .btn-close { + padding: calc(var(--bs-modal-header-padding-y) * 0.5) calc(var(--bs-modal-header-padding-x) * 0.5); + margin: calc(-0.5 * var(--bs-modal-header-padding-y)) calc(-0.5 * var(--bs-modal-header-padding-x)) calc(-0.5 * var(--bs-modal-header-padding-y)) auto; +} + +.modal-title { + margin-bottom: 0; + line-height: var(--bs-modal-title-line-height); +} + +.modal-body { + position: relative; + flex: 1 1 auto; + padding: var(--bs-modal-padding); +} + +.modal-footer { + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + align-items: center; + justify-content: flex-end; + padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5); + background-color: var(--bs-modal-footer-bg); + border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color); + border-bottom-right-radius: var(--bs-modal-inner-border-radius); + border-bottom-left-radius: var(--bs-modal-inner-border-radius); +} +.modal-footer > * { + margin: calc(var(--bs-modal-footer-gap) * 0.5); +} + +@media (min-width: 576px) { + .modal { + --bs-modal-margin: 1.75rem; + --bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.1); + } + .modal-dialog { + max-width: var(--bs-modal-width); + margin-right: auto; + margin-left: auto; + } + .modal-sm { + --bs-modal-width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg, +.modal-xl { + --bs-modal-width: 800px; + } +} +@media (min-width: 1200px) { + .modal-xl { + --bs-modal-width: 1140px; + } +} +.modal-fullscreen { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; +} +.modal-fullscreen .modal-content { + height: 100%; + border: 0; + border-radius: 0; +} +.modal-fullscreen .modal-header, +.modal-fullscreen .modal-footer { + border-radius: 0; +} +.modal-fullscreen .modal-body { + overflow-y: auto; +} + +@media (max-width: 575.98px) { + .modal-fullscreen-sm-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-sm-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-header, +.modal-fullscreen-sm-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 767.98px) { + .modal-fullscreen-md-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-md-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-md-down .modal-header, +.modal-fullscreen-md-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-md-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 991.98px) { + .modal-fullscreen-lg-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-lg-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-header, +.modal-fullscreen-lg-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1199.98px) { + .modal-fullscreen-xl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-header, +.modal-fullscreen-xl-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1399.98px) { + .modal-fullscreen-xxl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xxl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-header, +.modal-fullscreen-xxl-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-body { + overflow-y: auto; + } +} +.tooltip { + --bs-tooltip-zindex: 1080; + --bs-tooltip-max-width: 200px; + --bs-tooltip-padding-x: 1rem; + --bs-tooltip-padding-y: 0.75rem; + --bs-tooltip-margin: 0; + --bs-tooltip-font-size: 1rem; + --bs-tooltip-color: var(--bs-gray-800); + --bs-tooltip-bg: #ffffff; + --bs-tooltip-border-radius: 0.475rem; + --bs-tooltip-opacity: 1; + --bs-tooltip-arrow-width: 0.8rem; + --bs-tooltip-arrow-height: 0.4rem; + z-index: var(--bs-tooltip-zindex); + display: block; + padding: var(--bs-tooltip-arrow-height); + margin: var(--bs-tooltip-margin); + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--bs-tooltip-font-size); + word-wrap: break-word; + opacity: 0; +} +.tooltip.show { + opacity: var(--bs-tooltip-opacity); +} +.tooltip .tooltip-arrow { + display: block; + width: var(--bs-tooltip-arrow-width); + height: var(--bs-tooltip-arrow-height); +} +.tooltip .tooltip-arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow { + bottom: 0; +} +.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before { + top: -1px; + border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0; + border-top-color: var(--bs-tooltip-bg); +} + +/* rtl:begin:ignore */ +.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow { + left: 0; + width: var(--bs-tooltip-arrow-height); + height: var(--bs-tooltip-arrow-width); +} +.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before { + right: -1px; + border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0; + border-right-color: var(--bs-tooltip-bg); +} + +/* rtl:end:ignore */ +.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow { + top: 0; +} +.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before { + bottom: -1px; + border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height); + border-bottom-color: var(--bs-tooltip-bg); +} + +/* rtl:begin:ignore */ +.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow { + right: 0; + width: var(--bs-tooltip-arrow-height); + height: var(--bs-tooltip-arrow-width); +} +.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before { + left: -1px; + border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height); + border-left-color: var(--bs-tooltip-bg); +} + +/* rtl:end:ignore */ +.tooltip-inner { + max-width: var(--bs-tooltip-max-width); + padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x); + color: var(--bs-tooltip-color); + text-align: center; + background-color: var(--bs-tooltip-bg); + border-radius: var(--bs-tooltip-border-radius); +} + +.popover { + --bs-popover-zindex: 1070; + --bs-popover-max-width: 276px; + --bs-popover-font-size: 1rem; + --bs-popover-bg: #ffffff; + --bs-popover-border-width: var(--bs-border-width); + --bs-popover-border-color: transparent; + --bs-popover-border-radius: 0.475rem; + --bs-popover-inner-border-radius: calc(0.475rem - var(--bs-border-width)); + --bs-popover-box-shadow: 0px 0px 50px 0px rgba(82, 63, 105, 0.15); + --bs-popover-header-padding-x: 1.25rem; + --bs-popover-header-padding-y: 1rem; + --bs-popover-header-font-size: 1rem; + --bs-popover-header-color: var(--bs-gray-800); + --bs-popover-header-bg: #ffffff; + --bs-popover-body-padding-x: 1.25rem; + --bs-popover-body-padding-y: 1.25rem; + --bs-popover-body-color: var(--bs-gray-800); + --bs-popover-arrow-width: 1rem; + --bs-popover-arrow-height: 0.5rem; + --bs-popover-arrow-border: var(--bs-popover-border-color); + z-index: var(--bs-popover-zindex); + display: block; + max-width: var(--bs-popover-max-width); + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--bs-popover-font-size); + word-wrap: break-word; + background-color: var(--bs-popover-bg); + background-clip: padding-box; + border: var(--bs-popover-border-width) solid var(--bs-popover-border-color); + border-radius: var(--bs-popover-border-radius); + box-shadow: var(--bs-popover-box-shadow); +} +.popover .popover-arrow { + display: block; + width: var(--bs-popover-arrow-width); + height: var(--bs-popover-arrow-height); +} +.popover .popover-arrow::before, .popover .popover-arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; + border-width: 0; +} + +.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow { + bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0; +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before { + bottom: 0; + border-top-color: var(--bs-popover-arrow-border); +} +.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + bottom: var(--bs-popover-border-width); + border-top-color: var(--bs-popover-bg); +} + +/* rtl:begin:ignore */ +.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow { + left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); + width: var(--bs-popover-arrow-height); + height: var(--bs-popover-arrow-width); +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + border-width: calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0; +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before { + left: 0; + border-right-color: var(--bs-popover-arrow-border); +} +.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + left: var(--bs-popover-border-width); + border-right-color: var(--bs-popover-bg); +} + +/* rtl:end:ignore */ +.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow { + top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before { + top: 0; + border-bottom-color: var(--bs-popover-arrow-border); +} +.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + top: var(--bs-popover-border-width); + border-bottom-color: var(--bs-popover-bg); +} +.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: var(--bs-popover-arrow-width); + margin-left: calc(-0.5 * var(--bs-popover-arrow-width)); + content: ""; + border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg); +} + +/* rtl:begin:ignore */ +.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow { + right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); + width: var(--bs-popover-arrow-height); + height: var(--bs-popover-arrow-width); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before { + right: 0; + border-left-color: var(--bs-popover-arrow-border); +} +.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + right: var(--bs-popover-border-width); + border-left-color: var(--bs-popover-bg); +} + +/* rtl:end:ignore */ +.popover-header { + padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x); + margin-bottom: 0; + font-size: var(--bs-popover-header-font-size); + color: var(--bs-popover-header-color); + background-color: var(--bs-popover-header-bg); + border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color); + border-top-left-radius: var(--bs-popover-inner-border-radius); + border-top-right-radius: var(--bs-popover-inner-border-radius); +} +.popover-header:empty { + display: none; +} + +.popover-body { + padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x); + color: var(--bs-popover-body-color); +} + +.carousel { + position: relative; +} + +.carousel.pointer-event { + touch-action: pan-y; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner::after { + display: block; + clear: both; + content: ""; +} + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + backface-visibility: hidden; + transition: transform 0.6s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-start), +.active.carousel-item-end { + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-end), +.active.carousel-item-start { + transform: translateX(-100%); +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; +} +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-start, +.carousel-fade .carousel-item-prev.carousel-item-end { + z-index: 1; + opacity: 1; +} +.carousel-fade .active.carousel-item-start, +.carousel-fade .active.carousel-item-end { + z-index: 0; + opacity: 0; + transition: opacity 0s 0.6s; +} +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-start, +.carousel-fade .active.carousel-item-end { + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + padding: 0; + color: #ffffff; + text-align: center; + background: none; + border: 0; + opacity: 0.5; + transition: opacity 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, +.carousel-control-next { + transition: none; + } +} +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #ffffff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 2rem; + height: 2rem; + background-repeat: no-repeat; + background-position: 50%; + background-size: 100% 100%; +} + +/* rtl:options: { + "autoRename": true, + "stringMap":[ { + "name" : "prev-next", + "search" : "prev", + "replace" : "next" + } ] +} */ +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ffffff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ffffff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + display: flex; + justify-content: center; + padding: 0; + margin-right: 15%; + margin-bottom: 1rem; + margin-left: 15%; + list-style: none; +} +.carousel-indicators [data-bs-target] { + box-sizing: content-box; + flex: 0 1 auto; + width: 30px; + height: 3px; + padding: 0; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #ffffff; + background-clip: padding-box; + border: 0; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: 0.5; + transition: opacity 0.6s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-indicators [data-bs-target] { + transition: none; + } +} +.carousel-indicators .active { + opacity: 1; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 1.25rem; + left: 15%; + padding-top: 1.25rem; + padding-bottom: 1.25rem; + color: #ffffff; + text-align: center; +} + +.carousel-dark .carousel-control-prev-icon, +.carousel-dark .carousel-control-next-icon { + filter: invert(1) grayscale(100); +} +.carousel-dark .carousel-indicators [data-bs-target] { + background-color: #000000; +} +.carousel-dark .carousel-caption { + color: #000000; +} + +[data-bs-theme=dark] .carousel .carousel-control-prev-icon, +[data-bs-theme=dark] .carousel .carousel-control-next-icon { + filter: invert(1) grayscale(100); +} +[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target] { + background-color: #000000; +} +[data-bs-theme=dark] .carousel .carousel-caption { + color: #000000; +} + +.spinner-grow, +.spinner-border { + display: inline-block; + width: var(--bs-spinner-width); + height: var(--bs-spinner-height); + vertical-align: var(--bs-spinner-vertical-align); + border-radius: 50%; + animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name); +} + +@keyframes spinner-border { + to { + transform: rotate(360deg) /* rtl:ignore */; + } +} +.spinner-border { + --bs-spinner-width: 2rem; + --bs-spinner-height: 2rem; + --bs-spinner-vertical-align: -0.125em; + --bs-spinner-border-width: 0.185rem; + --bs-spinner-animation-speed: 0.65s; + --bs-spinner-animation-name: spinner-border; + border: var(--bs-spinner-border-width) solid currentcolor; + border-right-color: transparent; +} + +.spinner-border-sm { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; + --bs-spinner-border-width: 0.145em; +} + +@keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + transform: none; + } +} +.spinner-grow { + --bs-spinner-width: 2rem; + --bs-spinner-height: 2rem; + --bs-spinner-vertical-align: -0.125em; + --bs-spinner-animation-speed: 0.65s; + --bs-spinner-animation-name: spinner-grow; + background-color: currentcolor; + opacity: 0; +} + +.spinner-grow-sm { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; +} + +@media (prefers-reduced-motion: reduce) { + .spinner-border, +.spinner-grow { + --bs-spinner-animation-speed: 1.3s; + } +} +.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm { + --bs-offcanvas-zindex: 1045; + --bs-offcanvas-width: 400px; + --bs-offcanvas-height: 30vh; + --bs-offcanvas-padding-x: 1.75rem; + --bs-offcanvas-padding-y: 1.75rem; + --bs-offcanvas-color: var(--bs-body-color); + --bs-offcanvas-bg: var(--bs-body-bg); + --bs-offcanvas-border-width: 0; + --bs-offcanvas-border-color: var(--bs-border-color-translucent); + --bs-offcanvas-box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.1); + --bs-offcanvas-transition: transform 0.3s ease-in-out; + --bs-offcanvas-title-line-height: 1.5; +} + +@media (max-width: 575.98px) { + .offcanvas-sm { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--bs-offcanvas-box-shadow); + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-sm { + transition: none; + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) { + transform: none; + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show { + visibility: visible; + } +} +@media (min-width: 576px) { + .offcanvas-sm { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-sm .offcanvas-header { + display: none; + } + .offcanvas-sm .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 767.98px) { + .offcanvas-md { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--bs-offcanvas-box-shadow); + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-md { + transition: none; + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } +} +@media (max-width: 767.98px) { + .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) { + transform: none; + } +} +@media (max-width: 767.98px) { + .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show { + visibility: visible; + } +} +@media (min-width: 768px) { + .offcanvas-md { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-md .offcanvas-header { + display: none; + } + .offcanvas-md .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 991.98px) { + .offcanvas-lg { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--bs-offcanvas-box-shadow); + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-lg { + transition: none; + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) { + transform: none; + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show { + visibility: visible; + } +} +@media (min-width: 992px) { + .offcanvas-lg { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-lg .offcanvas-header { + display: none; + } + .offcanvas-lg .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 1199.98px) { + .offcanvas-xl { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--bs-offcanvas-box-shadow); + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xl { + transition: none; + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) { + transform: none; + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show { + visibility: visible; + } +} +@media (min-width: 1200px) { + .offcanvas-xl { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xl .offcanvas-header { + display: none; + } + .offcanvas-xl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 1399.98px) { + .offcanvas-xxl { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--bs-offcanvas-box-shadow); + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xxl { + transition: none; + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) { + transform: none; + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show { + visibility: visible; + } +} +@media (min-width: 1400px) { + .offcanvas-xxl { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xxl .offcanvas-header { + display: none; + } + .offcanvas-xxl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +.offcanvas { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + box-shadow: var(--bs-offcanvas-box-shadow); + transition: var(--bs-offcanvas-transition); +} +@media (prefers-reduced-motion: reduce) { + .offcanvas { + transition: none; + } +} +.offcanvas.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); +} +.offcanvas.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); +} +.offcanvas.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); +} +.offcanvas.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); +} +.offcanvas.showing, .offcanvas.show:not(.hiding) { + transform: none; +} +.offcanvas.showing, .offcanvas.hiding, .offcanvas.show { + visibility: visible; +} + +.offcanvas-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000000; +} +.offcanvas-backdrop.fade { + opacity: 0; +} +.offcanvas-backdrop.show { + opacity: 0.4; +} + +.offcanvas-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); +} +.offcanvas-header .btn-close { + padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5); + margin-top: calc(-0.5 * var(--bs-offcanvas-padding-y)); + margin-right: calc(-0.5 * var(--bs-offcanvas-padding-x)); + margin-bottom: calc(-0.5 * var(--bs-offcanvas-padding-y)); +} + +.offcanvas-title { + margin-bottom: 0; + line-height: var(--bs-offcanvas-title-line-height); +} + +.offcanvas-body { + flex-grow: 1; + padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); + overflow-y: auto; +} + +.placeholder { + display: inline-block; + min-height: 1em; + vertical-align: middle; + cursor: wait; + background-color: currentcolor; + opacity: 0.5; +} +.placeholder.btn::before { + display: inline-block; + content: ""; +} + +.placeholder-xs { + min-height: 0.6em; +} + +.placeholder-sm { + min-height: 0.8em; +} + +.placeholder-lg { + min-height: 1.2em; +} + +.placeholder-glow .placeholder { + animation: placeholder-glow 2s ease-in-out infinite; +} + +@keyframes placeholder-glow { + 50% { + opacity: 0.2; + } +} +.placeholder-wave { + mask-image: linear-gradient(130deg, #000000 55%, rgba(0, 0, 0, 0.8) 75%, #000000 95%); + mask-size: 200% 100%; + animation: placeholder-wave 2s linear infinite; +} + +@keyframes placeholder-wave { + 100% { + mask-position: -200% 0%; + } +} +.clearfix::after { + display: block; + clear: both; + content: ""; +} + +.text-bg-white { + color: #000000 !important; + background-color: RGBA(255, 255, 255, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-light { + color: #000000 !important; + background-color: RGBA(249, 249, 249, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-primary { + color: #000000 !important; + background-color: RGBA(0, 158, 247, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-secondary { + color: #000000 !important; + background-color: RGBA(225, 227, 234, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-success { + color: #000000 !important; + background-color: RGBA(80, 205, 137, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-info { + color: #ffffff !important; + background-color: RGBA(114, 57, 234, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-warning { + color: #000000 !important; + background-color: RGBA(255, 199, 0, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-danger { + color: #000000 !important; + background-color: RGBA(241, 65, 108, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-dark { + color: #ffffff !important; + background-color: RGBA(24, 28, 50, var(--bs-bg-opacity, 1)) !important; +} + +.link-white { + color: #ffffff !important; +} +.link-white:hover, .link-white:focus { + color: white !important; +} + +.link-light { + color: #F9F9F9 !important; +} +.link-light:hover, .link-light:focus { + color: #fafafa !important; +} + +.link-primary { + color: #009ef7 !important; +} +.link-primary:hover, .link-primary:focus { + color: #33b1f9 !important; +} + +.link-secondary { + color: #E1E3EA !important; +} +.link-secondary:hover, .link-secondary:focus { + color: #e7e9ee !important; +} + +.link-success { + color: #50cd89 !important; +} +.link-success:hover, .link-success:focus { + color: #73d7a1 !important; +} + +.link-info { + color: #7239ea !important; +} +.link-info:hover, .link-info:focus { + color: #5b2ebb !important; +} + +.link-warning { + color: #ffc700 !important; +} +.link-warning:hover, .link-warning:focus { + color: #ffd233 !important; +} + +.link-danger { + color: #f1416c !important; +} +.link-danger:hover, .link-danger:focus { + color: #f46789 !important; +} + +.link-dark { + color: #181C32 !important; +} +.link-dark:hover, .link-dark:focus { + color: #131628 !important; +} + +.ratio { + position: relative; + width: 100%; +} +.ratio::before { + display: block; + padding-top: var(--bs-aspect-ratio); + content: ""; +} +.ratio > * { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.ratio-1x1 { + --bs-aspect-ratio: 100%; +} + +.ratio-4x3 { + --bs-aspect-ratio: 75%; +} + +.ratio-16x9 { + --bs-aspect-ratio: 56.25%; +} + +.ratio-21x9 { + --bs-aspect-ratio: 42.8571428571%; +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} + +.sticky-top { + position: sticky; + top: 0; + z-index: 1020; +} + +.sticky-bottom { + position: sticky; + bottom: 0; + z-index: 1020; +} + +@media (min-width: 576px) { + .sticky-sm-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-sm-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 768px) { + .sticky-md-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-md-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 992px) { + .sticky-lg-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-lg-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 1200px) { + .sticky-xl-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xl-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 1400px) { + .sticky-xxl-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xxl-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} +.hstack { + display: flex; + flex-direction: row; + align-items: center; + align-self: stretch; +} + +.vstack { + display: flex; + flex: 1 1 auto; + flex-direction: column; + align-self: stretch; +} + +.visually-hidden, +.visually-hidden-focusable:not(:focus):not(:focus-within) { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} + +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + content: ""; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.vr { + display: inline-block; + align-self: stretch; + width: 1px; + min-height: 1em; + background-color: currentcolor; + opacity: 0.25; +} + +.align-baseline { + vertical-align: baseline !important; +} + +.align-top { + vertical-align: top !important; +} + +.align-middle { + vertical-align: middle !important; +} + +.align-bottom { + vertical-align: bottom !important; +} + +.align-text-bottom { + vertical-align: text-bottom !important; +} + +.align-text-top { + vertical-align: text-top !important; +} + +.float-start { + float: left !important; +} + +.float-end { + float: right !important; +} + +.float-none { + float: none !important; +} + +.object-fit-contain { + object-fit: contain !important; +} + +.object-fit-cover { + object-fit: cover !important; +} + +.object-fit-fill { + object-fit: fill !important; +} + +.object-fit-scale { + object-fit: scale-down !important; +} + +.object-fit-none { + object-fit: none !important; +} + +.opacity-0 { + opacity: 0 !important; +} + +.opacity-5 { + opacity: 0.05 !important; +} + +.opacity-10 { + opacity: 0.1 !important; +} + +.opacity-15 { + opacity: 0.15 !important; +} + +.opacity-20 { + opacity: 0.2 !important; +} + +.opacity-25 { + opacity: 0.25 !important; +} + +.opacity-50 { + opacity: 0.5 !important; +} + +.opacity-75 { + opacity: 0.75 !important; +} + +.opacity-100 { + opacity: 1 !important; +} + +.overflow-auto { + overflow: auto !important; +} + +.overflow-hidden { + overflow: hidden !important; +} + +.overflow-visible { + overflow: visible !important; +} + +.overflow-scroll { + overflow: scroll !important; +} + +.overflow-x-auto { + overflow-x: auto !important; +} + +.overflow-x-hidden { + overflow-x: hidden !important; +} + +.overflow-x-visible { + overflow-x: visible !important; +} + +.overflow-x-scroll { + overflow-x: scroll !important; +} + +.overflow-y-auto { + overflow-y: auto !important; +} + +.overflow-y-hidden { + overflow-y: hidden !important; +} + +.overflow-y-visible { + overflow-y: visible !important; +} + +.overflow-y-scroll { + overflow-y: scroll !important; +} + +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-grid { + display: grid !important; +} + +.d-table { + display: table !important; +} + +.d-table-row { + display: table-row !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: flex !important; +} + +.d-inline-flex { + display: inline-flex !important; +} + +.d-none { + display: none !important; +} + +.shadow { + box-shadow: 0 0.5rem 1.5rem 0.5rem rgba(0, 0, 0, 0.075) !important; +} + +.shadow-sm { + box-shadow: 0 0.1rem 1rem 0.25rem rgba(0, 0, 0, 0.05) !important; +} + +.shadow-lg { + box-shadow: 0 1rem 2rem 1rem rgba(0, 0, 0, 0.1) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.position-static { + position: static !important; +} + +.position-relative { + position: relative !important; +} + +.position-absolute { + position: absolute !important; +} + +.position-fixed { + position: fixed !important; +} + +.position-sticky { + position: sticky !important; +} + +.top-0 { + top: 0 !important; +} + +.top-25 { + top: 25% !important; +} + +.top-50 { + top: 50% !important; +} + +.top-75 { + top: 75% !important; +} + +.top-100 { + top: 100% !important; +} + +.bottom-0 { + bottom: 0 !important; +} + +.bottom-25 { + bottom: 25% !important; +} + +.bottom-50 { + bottom: 50% !important; +} + +.bottom-75 { + bottom: 75% !important; +} + +.bottom-100 { + bottom: 100% !important; +} + +.start-0 { + left: 0 !important; +} + +.start-25 { + left: 25% !important; +} + +.start-50 { + left: 50% !important; +} + +.start-75 { + left: 75% !important; +} + +.start-100 { + left: 100% !important; +} + +.end-0 { + right: 0 !important; +} + +.end-25 { + right: 25% !important; +} + +.end-50 { + right: 50% !important; +} + +.end-75 { + right: 75% !important; +} + +.end-100 { + right: 100% !important; +} + +.translate-middle { + transform: translate(-50%, -50%) !important; +} + +.translate-middle-x { + transform: translateX(-50%) !important; +} + +.translate-middle-y { + transform: translateY(-50%) !important; +} + +.border { + border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top { + border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-end { + border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-end-0 { + border-right: 0 !important; +} + +.border-bottom { + border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-start { + border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-start-0 { + border-left: 0 !important; +} + +.border-white { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important; +} + +.border-light { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important; +} + +.border-primary { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important; +} + +.border-secondary { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important; +} + +.border-success { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important; +} + +.border-info { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important; +} + +.border-warning { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important; +} + +.border-danger { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important; +} + +.border-dark { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important; +} + +.border-primary-subtle { + border-color: var(--bs-primary-border-subtle) !important; +} + +.border-secondary-subtle { + border-color: var(--bs-secondary-border-subtle) !important; +} + +.border-success-subtle { + border-color: var(--bs-success-border-subtle) !important; +} + +.border-info-subtle { + border-color: var(--bs-info-border-subtle) !important; +} + +.border-warning-subtle { + border-color: var(--bs-warning-border-subtle) !important; +} + +.border-danger-subtle { + border-color: var(--bs-danger-border-subtle) !important; +} + +.border-light-subtle { + border-color: var(--bs-light-border-subtle) !important; +} + +.border-dark-subtle { + border-color: var(--bs-dark-border-subtle) !important; +} + +.border-0 { + --bs-border-width: 0; +} + +.border-1 { + --bs-border-width: 1px; +} + +.border-2 { + --bs-border-width: 2px; +} + +.border-3 { + --bs-border-width: 3px; +} + +.border-4 { + --bs-border-width: 4px; +} + +.border-5 { + --bs-border-width: 5px; +} + +.border-opacity-10 { + --bs-border-opacity: 0.1; +} + +.border-opacity-25 { + --bs-border-opacity: 0.25; +} + +.border-opacity-50 { + --bs-border-opacity: 0.5; +} + +.border-opacity-75 { + --bs-border-opacity: 0.75; +} + +.border-opacity-100 { + --bs-border-opacity: 1; +} + +.w-unset { + width: unset !important; +} + +.w-25 { + width: 25% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.w-auto { + width: auto !important; +} + +.w-1px { + width: 1px !important; +} + +.w-2px { + width: 2px !important; +} + +.w-3px { + width: 3px !important; +} + +.w-4px { + width: 4px !important; +} + +.w-5px { + width: 5px !important; +} + +.w-6px { + width: 6px !important; +} + +.w-7px { + width: 7px !important; +} + +.w-8px { + width: 8px !important; +} + +.w-9px { + width: 9px !important; +} + +.w-10px { + width: 10px !important; +} + +.w-15px { + width: 15px !important; +} + +.w-20px { + width: 20px !important; +} + +.w-25px { + width: 25px !important; +} + +.w-30px { + width: 30px !important; +} + +.w-35px { + width: 35px !important; +} + +.w-40px { + width: 40px !important; +} + +.w-45px { + width: 45px !important; +} + +.w-50px { + width: 50px !important; +} + +.w-55px { + width: 55px !important; +} + +.w-60px { + width: 60px !important; +} + +.w-65px { + width: 65px !important; +} + +.w-70px { + width: 70px !important; +} + +.w-75px { + width: 75px !important; +} + +.w-80px { + width: 80px !important; +} + +.w-85px { + width: 85px !important; +} + +.w-90px { + width: 90px !important; +} + +.w-95px { + width: 95px !important; +} + +.w-100px { + width: 100px !important; +} + +.w-125px { + width: 125px !important; +} + +.w-150px { + width: 150px !important; +} + +.w-175px { + width: 175px !important; +} + +.w-200px { + width: 200px !important; +} + +.w-225px { + width: 225px !important; +} + +.w-250px { + width: 250px !important; +} + +.w-275px { + width: 275px !important; +} + +.w-300px { + width: 300px !important; +} + +.w-325px { + width: 325px !important; +} + +.w-350px { + width: 350px !important; +} + +.w-375px { + width: 375px !important; +} + +.w-400px { + width: 400px !important; +} + +.w-425px { + width: 425px !important; +} + +.w-450px { + width: 450px !important; +} + +.w-475px { + width: 475px !important; +} + +.w-500px { + width: 500px !important; +} + +.w-550px { + width: 550px !important; +} + +.w-600px { + width: 600px !important; +} + +.w-650px { + width: 650px !important; +} + +.w-700px { + width: 700px !important; +} + +.w-750px { + width: 750px !important; +} + +.w-800px { + width: 800px !important; +} + +.w-850px { + width: 850px !important; +} + +.w-900px { + width: 900px !important; +} + +.w-950px { + width: 950px !important; +} + +.w-1000px { + width: 1000px !important; +} + +.mw-unset { + max-width: unset !important; +} + +.mw-25 { + max-width: 25% !important; +} + +.mw-50 { + max-width: 50% !important; +} + +.mw-75 { + max-width: 75% !important; +} + +.mw-100 { + max-width: 100% !important; +} + +.mw-auto { + max-width: auto !important; +} + +.mw-1px { + max-width: 1px !important; +} + +.mw-2px { + max-width: 2px !important; +} + +.mw-3px { + max-width: 3px !important; +} + +.mw-4px { + max-width: 4px !important; +} + +.mw-5px { + max-width: 5px !important; +} + +.mw-6px { + max-width: 6px !important; +} + +.mw-7px { + max-width: 7px !important; +} + +.mw-8px { + max-width: 8px !important; +} + +.mw-9px { + max-width: 9px !important; +} + +.mw-10px { + max-width: 10px !important; +} + +.mw-15px { + max-width: 15px !important; +} + +.mw-20px { + max-width: 20px !important; +} + +.mw-25px { + max-width: 25px !important; +} + +.mw-30px { + max-width: 30px !important; +} + +.mw-35px { + max-width: 35px !important; +} + +.mw-40px { + max-width: 40px !important; +} + +.mw-45px { + max-width: 45px !important; +} + +.mw-50px { + max-width: 50px !important; +} + +.mw-55px { + max-width: 55px !important; +} + +.mw-60px { + max-width: 60px !important; +} + +.mw-65px { + max-width: 65px !important; +} + +.mw-70px { + max-width: 70px !important; +} + +.mw-75px { + max-width: 75px !important; +} + +.mw-80px { + max-width: 80px !important; +} + +.mw-85px { + max-width: 85px !important; +} + +.mw-90px { + max-width: 90px !important; +} + +.mw-95px { + max-width: 95px !important; +} + +.mw-100px { + max-width: 100px !important; +} + +.mw-125px { + max-width: 125px !important; +} + +.mw-150px { + max-width: 150px !important; +} + +.mw-175px { + max-width: 175px !important; +} + +.mw-200px { + max-width: 200px !important; +} + +.mw-225px { + max-width: 225px !important; +} + +.mw-250px { + max-width: 250px !important; +} + +.mw-275px { + max-width: 275px !important; +} + +.mw-300px { + max-width: 300px !important; +} + +.mw-325px { + max-width: 325px !important; +} + +.mw-350px { + max-width: 350px !important; +} + +.mw-375px { + max-width: 375px !important; +} + +.mw-400px { + max-width: 400px !important; +} + +.mw-425px { + max-width: 425px !important; +} + +.mw-450px { + max-width: 450px !important; +} + +.mw-475px { + max-width: 475px !important; +} + +.mw-500px { + max-width: 500px !important; +} + +.mw-550px { + max-width: 550px !important; +} + +.mw-600px { + max-width: 600px !important; +} + +.mw-650px { + max-width: 650px !important; +} + +.mw-700px { + max-width: 700px !important; +} + +.mw-750px { + max-width: 750px !important; +} + +.mw-800px { + max-width: 800px !important; +} + +.mw-850px { + max-width: 850px !important; +} + +.mw-900px { + max-width: 900px !important; +} + +.mw-950px { + max-width: 950px !important; +} + +.mw-1000px { + max-width: 1000px !important; +} + +.vw-100 { + width: 100vw !important; +} + +.min-vw-100 { + min-width: 100vw !important; +} + +.h-unset { + height: unset !important; +} + +.h-25 { + height: 25% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-75 { + height: 75% !important; +} + +.h-100 { + height: 100% !important; +} + +.h-auto { + height: auto !important; +} + +.h-1px { + height: 1px !important; +} + +.h-2px { + height: 2px !important; +} + +.h-3px { + height: 3px !important; +} + +.h-4px { + height: 4px !important; +} + +.h-5px { + height: 5px !important; +} + +.h-6px { + height: 6px !important; +} + +.h-7px { + height: 7px !important; +} + +.h-8px { + height: 8px !important; +} + +.h-9px { + height: 9px !important; +} + +.h-10px { + height: 10px !important; +} + +.h-15px { + height: 15px !important; +} + +.h-20px { + height: 20px !important; +} + +.h-25px { + height: 25px !important; +} + +.h-30px { + height: 30px !important; +} + +.h-35px { + height: 35px !important; +} + +.h-40px { + height: 40px !important; +} + +.h-45px { + height: 45px !important; +} + +.h-50px { + height: 50px !important; +} + +.h-55px { + height: 55px !important; +} + +.h-60px { + height: 60px !important; +} + +.h-65px { + height: 65px !important; +} + +.h-70px { + height: 70px !important; +} + +.h-75px { + height: 75px !important; +} + +.h-80px { + height: 80px !important; +} + +.h-85px { + height: 85px !important; +} + +.h-90px { + height: 90px !important; +} + +.h-95px { + height: 95px !important; +} + +.h-100px { + height: 100px !important; +} + +.h-125px { + height: 125px !important; +} + +.h-150px { + height: 150px !important; +} + +.h-175px { + height: 175px !important; +} + +.h-200px { + height: 200px !important; +} + +.h-225px { + height: 225px !important; +} + +.h-250px { + height: 250px !important; +} + +.h-275px { + height: 275px !important; +} + +.h-300px { + height: 300px !important; +} + +.h-325px { + height: 325px !important; +} + +.h-350px { + height: 350px !important; +} + +.h-375px { + height: 375px !important; +} + +.h-400px { + height: 400px !important; +} + +.h-425px { + height: 425px !important; +} + +.h-450px { + height: 450px !important; +} + +.h-475px { + height: 475px !important; +} + +.h-500px { + height: 500px !important; +} + +.h-550px { + height: 550px !important; +} + +.h-600px { + height: 600px !important; +} + +.h-650px { + height: 650px !important; +} + +.h-700px { + height: 700px !important; +} + +.h-750px { + height: 750px !important; +} + +.h-800px { + height: 800px !important; +} + +.h-850px { + height: 850px !important; +} + +.h-900px { + height: 900px !important; +} + +.h-950px { + height: 950px !important; +} + +.h-1000px { + height: 1000px !important; +} + +.mh-unset { + max-height: unset !important; +} + +.mh-25 { + max-height: 25% !important; +} + +.mh-50 { + max-height: 50% !important; +} + +.mh-75 { + max-height: 75% !important; +} + +.mh-100 { + max-height: 100% !important; +} + +.mh-auto { + max-height: auto !important; +} + +.mh-1px { + max-height: 1px !important; +} + +.mh-2px { + max-height: 2px !important; +} + +.mh-3px { + max-height: 3px !important; +} + +.mh-4px { + max-height: 4px !important; +} + +.mh-5px { + max-height: 5px !important; +} + +.mh-6px { + max-height: 6px !important; +} + +.mh-7px { + max-height: 7px !important; +} + +.mh-8px { + max-height: 8px !important; +} + +.mh-9px { + max-height: 9px !important; +} + +.mh-10px { + max-height: 10px !important; +} + +.mh-15px { + max-height: 15px !important; +} + +.mh-20px { + max-height: 20px !important; +} + +.mh-25px { + max-height: 25px !important; +} + +.mh-30px { + max-height: 30px !important; +} + +.mh-35px { + max-height: 35px !important; +} + +.mh-40px { + max-height: 40px !important; +} + +.mh-45px { + max-height: 45px !important; +} + +.mh-50px { + max-height: 50px !important; +} + +.mh-55px { + max-height: 55px !important; +} + +.mh-60px { + max-height: 60px !important; +} + +.mh-65px { + max-height: 65px !important; +} + +.mh-70px { + max-height: 70px !important; +} + +.mh-75px { + max-height: 75px !important; +} + +.mh-80px { + max-height: 80px !important; +} + +.mh-85px { + max-height: 85px !important; +} + +.mh-90px { + max-height: 90px !important; +} + +.mh-95px { + max-height: 95px !important; +} + +.mh-100px { + max-height: 100px !important; +} + +.mh-125px { + max-height: 125px !important; +} + +.mh-150px { + max-height: 150px !important; +} + +.mh-175px { + max-height: 175px !important; +} + +.mh-200px { + max-height: 200px !important; +} + +.mh-225px { + max-height: 225px !important; +} + +.mh-250px { + max-height: 250px !important; +} + +.mh-275px { + max-height: 275px !important; +} + +.mh-300px { + max-height: 300px !important; +} + +.mh-325px { + max-height: 325px !important; +} + +.mh-350px { + max-height: 350px !important; +} + +.mh-375px { + max-height: 375px !important; +} + +.mh-400px { + max-height: 400px !important; +} + +.mh-425px { + max-height: 425px !important; +} + +.mh-450px { + max-height: 450px !important; +} + +.mh-475px { + max-height: 475px !important; +} + +.mh-500px { + max-height: 500px !important; +} + +.mh-550px { + max-height: 550px !important; +} + +.mh-600px { + max-height: 600px !important; +} + +.mh-650px { + max-height: 650px !important; +} + +.mh-700px { + max-height: 700px !important; +} + +.mh-750px { + max-height: 750px !important; +} + +.mh-800px { + max-height: 800px !important; +} + +.mh-850px { + max-height: 850px !important; +} + +.mh-900px { + max-height: 900px !important; +} + +.mh-950px { + max-height: 950px !important; +} + +.mh-1000px { + max-height: 1000px !important; +} + +.vh-100 { + height: 100vh !important; +} + +.min-vh-100 { + min-height: 100vh !important; +} + +.flex-fill { + flex: 1 1 auto !important; +} + +.flex-row { + flex-direction: row !important; +} + +.flex-column { + flex-direction: column !important; +} + +.flex-row-reverse { + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + flex-direction: column-reverse !important; +} + +.flex-grow-0 { + flex-grow: 0 !important; +} + +.flex-grow-1 { + flex-grow: 1 !important; +} + +.flex-shrink-0 { + flex-shrink: 0 !important; +} + +.flex-shrink-1 { + flex-shrink: 1 !important; +} + +.flex-wrap { + flex-wrap: wrap !important; +} + +.flex-nowrap { + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; +} + +.justify-content-start { + justify-content: flex-start !important; +} + +.justify-content-end { + justify-content: flex-end !important; +} + +.justify-content-center { + justify-content: center !important; +} + +.justify-content-between { + justify-content: space-between !important; +} + +.justify-content-around { + justify-content: space-around !important; +} + +.justify-content-evenly { + justify-content: space-evenly !important; +} + +.align-items-start { + align-items: flex-start !important; +} + +.align-items-end { + align-items: flex-end !important; +} + +.align-items-center { + align-items: center !important; +} + +.align-items-baseline { + align-items: baseline !important; +} + +.align-items-stretch { + align-items: stretch !important; +} + +.align-content-start { + align-content: flex-start !important; +} + +.align-content-end { + align-content: flex-end !important; +} + +.align-content-center { + align-content: center !important; +} + +.align-content-between { + align-content: space-between !important; +} + +.align-content-around { + align-content: space-around !important; +} + +.align-content-stretch { + align-content: stretch !important; +} + +.align-self-auto { + align-self: auto !important; +} + +.align-self-start { + align-self: flex-start !important; +} + +.align-self-end { + align-self: flex-end !important; +} + +.align-self-center { + align-self: center !important; +} + +.align-self-baseline { + align-self: baseline !important; +} + +.align-self-stretch { + align-self: stretch !important; +} + +.order-first { + order: -1 !important; +} + +.order-0 { + order: 0 !important; +} + +.order-1 { + order: 1 !important; +} + +.order-2 { + order: 2 !important; +} + +.order-3 { + order: 3 !important; +} + +.order-4 { + order: 4 !important; +} + +.order-5 { + order: 5 !important; +} + +.order-last { + order: 6 !important; +} + +.m-0 { + margin: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.m-3 { + margin: 0.75rem !important; +} + +.m-4 { + margin: 1rem !important; +} + +.m-5 { + margin: 1.25rem !important; +} + +.m-6 { + margin: 1.5rem !important; +} + +.m-7 { + margin: 1.75rem !important; +} + +.m-8 { + margin: 2rem !important; +} + +.m-9 { + margin: 2.25rem !important; +} + +.m-10 { + margin: 2.5rem !important; +} + +.m-11 { + margin: 2.75rem !important; +} + +.m-12 { + margin: 3rem !important; +} + +.m-13 { + margin: 3.25rem !important; +} + +.m-14 { + margin: 3.5rem !important; +} + +.m-15 { + margin: 3.75rem !important; +} + +.m-16 { + margin: 4rem !important; +} + +.m-17 { + margin: 4.25rem !important; +} + +.m-18 { + margin: 4.5rem !important; +} + +.m-19 { + margin: 4.75rem !important; +} + +.m-20 { + margin: 5rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mx-0 { + margin-right: 0 !important; + margin-left: 0 !important; +} + +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; +} + +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; +} + +.mx-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; +} + +.mx-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; +} + +.mx-5 { + margin-right: 1.25rem !important; + margin-left: 1.25rem !important; +} + +.mx-6 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; +} + +.mx-7 { + margin-right: 1.75rem !important; + margin-left: 1.75rem !important; +} + +.mx-8 { + margin-right: 2rem !important; + margin-left: 2rem !important; +} + +.mx-9 { + margin-right: 2.25rem !important; + margin-left: 2.25rem !important; +} + +.mx-10 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; +} + +.mx-11 { + margin-right: 2.75rem !important; + margin-left: 2.75rem !important; +} + +.mx-12 { + margin-right: 3rem !important; + margin-left: 3rem !important; +} + +.mx-13 { + margin-right: 3.25rem !important; + margin-left: 3.25rem !important; +} + +.mx-14 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; +} + +.mx-15 { + margin-right: 3.75rem !important; + margin-left: 3.75rem !important; +} + +.mx-16 { + margin-right: 4rem !important; + margin-left: 4rem !important; +} + +.mx-17 { + margin-right: 4.25rem !important; + margin-left: 4.25rem !important; +} + +.mx-18 { + margin-right: 4.5rem !important; + margin-left: 4.5rem !important; +} + +.mx-19 { + margin-right: 4.75rem !important; + margin-left: 4.75rem !important; +} + +.mx-20 { + margin-right: 5rem !important; + margin-left: 5rem !important; +} + +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.my-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; +} + +.my-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.my-5 { + margin-top: 1.25rem !important; + margin-bottom: 1.25rem !important; +} + +.my-6 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} + +.my-7 { + margin-top: 1.75rem !important; + margin-bottom: 1.75rem !important; +} + +.my-8 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; +} + +.my-9 { + margin-top: 2.25rem !important; + margin-bottom: 2.25rem !important; +} + +.my-10 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; +} + +.my-11 { + margin-top: 2.75rem !important; + margin-bottom: 2.75rem !important; +} + +.my-12 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.my-13 { + margin-top: 3.25rem !important; + margin-bottom: 3.25rem !important; +} + +.my-14 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; +} + +.my-15 { + margin-top: 3.75rem !important; + margin-bottom: 3.75rem !important; +} + +.my-16 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; +} + +.my-17 { + margin-top: 4.25rem !important; + margin-bottom: 4.25rem !important; +} + +.my-18 { + margin-top: 4.5rem !important; + margin-bottom: 4.5rem !important; +} + +.my-19 { + margin-top: 4.75rem !important; + margin-bottom: 4.75rem !important; +} + +.my-20 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; +} + +.my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mt-1 { + margin-top: 0.25rem !important; +} + +.mt-2 { + margin-top: 0.5rem !important; +} + +.mt-3 { + margin-top: 0.75rem !important; +} + +.mt-4 { + margin-top: 1rem !important; +} + +.mt-5 { + margin-top: 1.25rem !important; +} + +.mt-6 { + margin-top: 1.5rem !important; +} + +.mt-7 { + margin-top: 1.75rem !important; +} + +.mt-8 { + margin-top: 2rem !important; +} + +.mt-9 { + margin-top: 2.25rem !important; +} + +.mt-10 { + margin-top: 2.5rem !important; +} + +.mt-11 { + margin-top: 2.75rem !important; +} + +.mt-12 { + margin-top: 3rem !important; +} + +.mt-13 { + margin-top: 3.25rem !important; +} + +.mt-14 { + margin-top: 3.5rem !important; +} + +.mt-15 { + margin-top: 3.75rem !important; +} + +.mt-16 { + margin-top: 4rem !important; +} + +.mt-17 { + margin-top: 4.25rem !important; +} + +.mt-18 { + margin-top: 4.5rem !important; +} + +.mt-19 { + margin-top: 4.75rem !important; +} + +.mt-20 { + margin-top: 5rem !important; +} + +.mt-auto { + margin-top: auto !important; +} + +.me-0 { + margin-right: 0 !important; +} + +.me-1 { + margin-right: 0.25rem !important; +} + +.me-2 { + margin-right: 0.5rem !important; +} + +.me-3 { + margin-right: 0.75rem !important; +} + +.me-4 { + margin-right: 1rem !important; +} + +.me-5 { + margin-right: 1.25rem !important; +} + +.me-6 { + margin-right: 1.5rem !important; +} + +.me-7 { + margin-right: 1.75rem !important; +} + +.me-8 { + margin-right: 2rem !important; +} + +.me-9 { + margin-right: 2.25rem !important; +} + +.me-10 { + margin-right: 2.5rem !important; +} + +.me-11 { + margin-right: 2.75rem !important; +} + +.me-12 { + margin-right: 3rem !important; +} + +.me-13 { + margin-right: 3.25rem !important; +} + +.me-14 { + margin-right: 3.5rem !important; +} + +.me-15 { + margin-right: 3.75rem !important; +} + +.me-16 { + margin-right: 4rem !important; +} + +.me-17 { + margin-right: 4.25rem !important; +} + +.me-18 { + margin-right: 4.5rem !important; +} + +.me-19 { + margin-right: 4.75rem !important; +} + +.me-20 { + margin-right: 5rem !important; +} + +.me-auto { + margin-right: auto !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.mb-1 { + margin-bottom: 0.25rem !important; +} + +.mb-2 { + margin-bottom: 0.5rem !important; +} + +.mb-3 { + margin-bottom: 0.75rem !important; +} + +.mb-4 { + margin-bottom: 1rem !important; +} + +.mb-5 { + margin-bottom: 1.25rem !important; +} + +.mb-6 { + margin-bottom: 1.5rem !important; +} + +.mb-7 { + margin-bottom: 1.75rem !important; +} + +.mb-8 { + margin-bottom: 2rem !important; +} + +.mb-9 { + margin-bottom: 2.25rem !important; +} + +.mb-10 { + margin-bottom: 2.5rem !important; +} + +.mb-11 { + margin-bottom: 2.75rem !important; +} + +.mb-12 { + margin-bottom: 3rem !important; +} + +.mb-13 { + margin-bottom: 3.25rem !important; +} + +.mb-14 { + margin-bottom: 3.5rem !important; +} + +.mb-15 { + margin-bottom: 3.75rem !important; +} + +.mb-16 { + margin-bottom: 4rem !important; +} + +.mb-17 { + margin-bottom: 4.25rem !important; +} + +.mb-18 { + margin-bottom: 4.5rem !important; +} + +.mb-19 { + margin-bottom: 4.75rem !important; +} + +.mb-20 { + margin-bottom: 5rem !important; +} + +.mb-auto { + margin-bottom: auto !important; +} + +.ms-0 { + margin-left: 0 !important; +} + +.ms-1 { + margin-left: 0.25rem !important; +} + +.ms-2 { + margin-left: 0.5rem !important; +} + +.ms-3 { + margin-left: 0.75rem !important; +} + +.ms-4 { + margin-left: 1rem !important; +} + +.ms-5 { + margin-left: 1.25rem !important; +} + +.ms-6 { + margin-left: 1.5rem !important; +} + +.ms-7 { + margin-left: 1.75rem !important; +} + +.ms-8 { + margin-left: 2rem !important; +} + +.ms-9 { + margin-left: 2.25rem !important; +} + +.ms-10 { + margin-left: 2.5rem !important; +} + +.ms-11 { + margin-left: 2.75rem !important; +} + +.ms-12 { + margin-left: 3rem !important; +} + +.ms-13 { + margin-left: 3.25rem !important; +} + +.ms-14 { + margin-left: 3.5rem !important; +} + +.ms-15 { + margin-left: 3.75rem !important; +} + +.ms-16 { + margin-left: 4rem !important; +} + +.ms-17 { + margin-left: 4.25rem !important; +} + +.ms-18 { + margin-left: 4.5rem !important; +} + +.ms-19 { + margin-left: 4.75rem !important; +} + +.ms-20 { + margin-left: 5rem !important; +} + +.ms-auto { + margin-left: auto !important; +} + +.m-n1 { + margin: -0.25rem !important; +} + +.m-n2 { + margin: -0.5rem !important; +} + +.m-n3 { + margin: -0.75rem !important; +} + +.m-n4 { + margin: -1rem !important; +} + +.m-n5 { + margin: -1.25rem !important; +} + +.m-n6 { + margin: -1.5rem !important; +} + +.m-n7 { + margin: -1.75rem !important; +} + +.m-n8 { + margin: -2rem !important; +} + +.m-n9 { + margin: -2.25rem !important; +} + +.m-n10 { + margin: -2.5rem !important; +} + +.m-n11 { + margin: -2.75rem !important; +} + +.m-n12 { + margin: -3rem !important; +} + +.m-n13 { + margin: -3.25rem !important; +} + +.m-n14 { + margin: -3.5rem !important; +} + +.m-n15 { + margin: -3.75rem !important; +} + +.m-n16 { + margin: -4rem !important; +} + +.m-n17 { + margin: -4.25rem !important; +} + +.m-n18 { + margin: -4.5rem !important; +} + +.m-n19 { + margin: -4.75rem !important; +} + +.m-n20 { + margin: -5rem !important; +} + +.mx-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; +} + +.mx-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; +} + +.mx-n3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; +} + +.mx-n4 { + margin-right: -1rem !important; + margin-left: -1rem !important; +} + +.mx-n5 { + margin-right: -1.25rem !important; + margin-left: -1.25rem !important; +} + +.mx-n6 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; +} + +.mx-n7 { + margin-right: -1.75rem !important; + margin-left: -1.75rem !important; +} + +.mx-n8 { + margin-right: -2rem !important; + margin-left: -2rem !important; +} + +.mx-n9 { + margin-right: -2.25rem !important; + margin-left: -2.25rem !important; +} + +.mx-n10 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; +} + +.mx-n11 { + margin-right: -2.75rem !important; + margin-left: -2.75rem !important; +} + +.mx-n12 { + margin-right: -3rem !important; + margin-left: -3rem !important; +} + +.mx-n13 { + margin-right: -3.25rem !important; + margin-left: -3.25rem !important; +} + +.mx-n14 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; +} + +.mx-n15 { + margin-right: -3.75rem !important; + margin-left: -3.75rem !important; +} + +.mx-n16 { + margin-right: -4rem !important; + margin-left: -4rem !important; +} + +.mx-n17 { + margin-right: -4.25rem !important; + margin-left: -4.25rem !important; +} + +.mx-n18 { + margin-right: -4.5rem !important; + margin-left: -4.5rem !important; +} + +.mx-n19 { + margin-right: -4.75rem !important; + margin-left: -4.75rem !important; +} + +.mx-n20 { + margin-right: -5rem !important; + margin-left: -5rem !important; +} + +.my-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; +} + +.my-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; +} + +.my-n3 { + margin-top: -0.75rem !important; + margin-bottom: -0.75rem !important; +} + +.my-n4 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; +} + +.my-n5 { + margin-top: -1.25rem !important; + margin-bottom: -1.25rem !important; +} + +.my-n6 { + margin-top: -1.5rem !important; + margin-bottom: -1.5rem !important; +} + +.my-n7 { + margin-top: -1.75rem !important; + margin-bottom: -1.75rem !important; +} + +.my-n8 { + margin-top: -2rem !important; + margin-bottom: -2rem !important; +} + +.my-n9 { + margin-top: -2.25rem !important; + margin-bottom: -2.25rem !important; +} + +.my-n10 { + margin-top: -2.5rem !important; + margin-bottom: -2.5rem !important; +} + +.my-n11 { + margin-top: -2.75rem !important; + margin-bottom: -2.75rem !important; +} + +.my-n12 { + margin-top: -3rem !important; + margin-bottom: -3rem !important; +} + +.my-n13 { + margin-top: -3.25rem !important; + margin-bottom: -3.25rem !important; +} + +.my-n14 { + margin-top: -3.5rem !important; + margin-bottom: -3.5rem !important; +} + +.my-n15 { + margin-top: -3.75rem !important; + margin-bottom: -3.75rem !important; +} + +.my-n16 { + margin-top: -4rem !important; + margin-bottom: -4rem !important; +} + +.my-n17 { + margin-top: -4.25rem !important; + margin-bottom: -4.25rem !important; +} + +.my-n18 { + margin-top: -4.5rem !important; + margin-bottom: -4.5rem !important; +} + +.my-n19 { + margin-top: -4.75rem !important; + margin-bottom: -4.75rem !important; +} + +.my-n20 { + margin-top: -5rem !important; + margin-bottom: -5rem !important; +} + +.mt-n1 { + margin-top: -0.25rem !important; +} + +.mt-n2 { + margin-top: -0.5rem !important; +} + +.mt-n3 { + margin-top: -0.75rem !important; +} + +.mt-n4 { + margin-top: -1rem !important; +} + +.mt-n5 { + margin-top: -1.25rem !important; +} + +.mt-n6 { + margin-top: -1.5rem !important; +} + +.mt-n7 { + margin-top: -1.75rem !important; +} + +.mt-n8 { + margin-top: -2rem !important; +} + +.mt-n9 { + margin-top: -2.25rem !important; +} + +.mt-n10 { + margin-top: -2.5rem !important; +} + +.mt-n11 { + margin-top: -2.75rem !important; +} + +.mt-n12 { + margin-top: -3rem !important; +} + +.mt-n13 { + margin-top: -3.25rem !important; +} + +.mt-n14 { + margin-top: -3.5rem !important; +} + +.mt-n15 { + margin-top: -3.75rem !important; +} + +.mt-n16 { + margin-top: -4rem !important; +} + +.mt-n17 { + margin-top: -4.25rem !important; +} + +.mt-n18 { + margin-top: -4.5rem !important; +} + +.mt-n19 { + margin-top: -4.75rem !important; +} + +.mt-n20 { + margin-top: -5rem !important; +} + +.me-n1 { + margin-right: -0.25rem !important; +} + +.me-n2 { + margin-right: -0.5rem !important; +} + +.me-n3 { + margin-right: -0.75rem !important; +} + +.me-n4 { + margin-right: -1rem !important; +} + +.me-n5 { + margin-right: -1.25rem !important; +} + +.me-n6 { + margin-right: -1.5rem !important; +} + +.me-n7 { + margin-right: -1.75rem !important; +} + +.me-n8 { + margin-right: -2rem !important; +} + +.me-n9 { + margin-right: -2.25rem !important; +} + +.me-n10 { + margin-right: -2.5rem !important; +} + +.me-n11 { + margin-right: -2.75rem !important; +} + +.me-n12 { + margin-right: -3rem !important; +} + +.me-n13 { + margin-right: -3.25rem !important; +} + +.me-n14 { + margin-right: -3.5rem !important; +} + +.me-n15 { + margin-right: -3.75rem !important; +} + +.me-n16 { + margin-right: -4rem !important; +} + +.me-n17 { + margin-right: -4.25rem !important; +} + +.me-n18 { + margin-right: -4.5rem !important; +} + +.me-n19 { + margin-right: -4.75rem !important; +} + +.me-n20 { + margin-right: -5rem !important; +} + +.mb-n1 { + margin-bottom: -0.25rem !important; +} + +.mb-n2 { + margin-bottom: -0.5rem !important; +} + +.mb-n3 { + margin-bottom: -0.75rem !important; +} + +.mb-n4 { + margin-bottom: -1rem !important; +} + +.mb-n5 { + margin-bottom: -1.25rem !important; +} + +.mb-n6 { + margin-bottom: -1.5rem !important; +} + +.mb-n7 { + margin-bottom: -1.75rem !important; +} + +.mb-n8 { + margin-bottom: -2rem !important; +} + +.mb-n9 { + margin-bottom: -2.25rem !important; +} + +.mb-n10 { + margin-bottom: -2.5rem !important; +} + +.mb-n11 { + margin-bottom: -2.75rem !important; +} + +.mb-n12 { + margin-bottom: -3rem !important; +} + +.mb-n13 { + margin-bottom: -3.25rem !important; +} + +.mb-n14 { + margin-bottom: -3.5rem !important; +} + +.mb-n15 { + margin-bottom: -3.75rem !important; +} + +.mb-n16 { + margin-bottom: -4rem !important; +} + +.mb-n17 { + margin-bottom: -4.25rem !important; +} + +.mb-n18 { + margin-bottom: -4.5rem !important; +} + +.mb-n19 { + margin-bottom: -4.75rem !important; +} + +.mb-n20 { + margin-bottom: -5rem !important; +} + +.ms-n1 { + margin-left: -0.25rem !important; +} + +.ms-n2 { + margin-left: -0.5rem !important; +} + +.ms-n3 { + margin-left: -0.75rem !important; +} + +.ms-n4 { + margin-left: -1rem !important; +} + +.ms-n5 { + margin-left: -1.25rem !important; +} + +.ms-n6 { + margin-left: -1.5rem !important; +} + +.ms-n7 { + margin-left: -1.75rem !important; +} + +.ms-n8 { + margin-left: -2rem !important; +} + +.ms-n9 { + margin-left: -2.25rem !important; +} + +.ms-n10 { + margin-left: -2.5rem !important; +} + +.ms-n11 { + margin-left: -2.75rem !important; +} + +.ms-n12 { + margin-left: -3rem !important; +} + +.ms-n13 { + margin-left: -3.25rem !important; +} + +.ms-n14 { + margin-left: -3.5rem !important; +} + +.ms-n15 { + margin-left: -3.75rem !important; +} + +.ms-n16 { + margin-left: -4rem !important; +} + +.ms-n17 { + margin-left: -4.25rem !important; +} + +.ms-n18 { + margin-left: -4.5rem !important; +} + +.ms-n19 { + margin-left: -4.75rem !important; +} + +.ms-n20 { + margin-left: -5rem !important; +} + +.p-0 { + padding: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.p-3 { + padding: 0.75rem !important; +} + +.p-4 { + padding: 1rem !important; +} + +.p-5 { + padding: 1.25rem !important; +} + +.p-6 { + padding: 1.5rem !important; +} + +.p-7 { + padding: 1.75rem !important; +} + +.p-8 { + padding: 2rem !important; +} + +.p-9 { + padding: 2.25rem !important; +} + +.p-10 { + padding: 2.5rem !important; +} + +.p-11 { + padding: 2.75rem !important; +} + +.p-12 { + padding: 3rem !important; +} + +.p-13 { + padding: 3.25rem !important; +} + +.p-14 { + padding: 3.5rem !important; +} + +.p-15 { + padding: 3.75rem !important; +} + +.p-16 { + padding: 4rem !important; +} + +.p-17 { + padding: 4.25rem !important; +} + +.p-18 { + padding: 4.5rem !important; +} + +.p-19 { + padding: 4.75rem !important; +} + +.p-20 { + padding: 5rem !important; +} + +.px-0 { + padding-right: 0 !important; + padding-left: 0 !important; +} + +.px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; +} + +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; +} + +.px-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; +} + +.px-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; +} + +.px-5 { + padding-right: 1.25rem !important; + padding-left: 1.25rem !important; +} + +.px-6 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; +} + +.px-7 { + padding-right: 1.75rem !important; + padding-left: 1.75rem !important; +} + +.px-8 { + padding-right: 2rem !important; + padding-left: 2rem !important; +} + +.px-9 { + padding-right: 2.25rem !important; + padding-left: 2.25rem !important; +} + +.px-10 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; +} + +.px-11 { + padding-right: 2.75rem !important; + padding-left: 2.75rem !important; +} + +.px-12 { + padding-right: 3rem !important; + padding-left: 3rem !important; +} + +.px-13 { + padding-right: 3.25rem !important; + padding-left: 3.25rem !important; +} + +.px-14 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; +} + +.px-15 { + padding-right: 3.75rem !important; + padding-left: 3.75rem !important; +} + +.px-16 { + padding-right: 4rem !important; + padding-left: 4rem !important; +} + +.px-17 { + padding-right: 4.25rem !important; + padding-left: 4.25rem !important; +} + +.px-18 { + padding-right: 4.5rem !important; + padding-left: 4.5rem !important; +} + +.px-19 { + padding-right: 4.75rem !important; + padding-left: 4.75rem !important; +} + +.px-20 { + padding-right: 5rem !important; + padding-left: 5rem !important; +} + +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} + +.py-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; +} + +.py-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.py-5 { + padding-top: 1.25rem !important; + padding-bottom: 1.25rem !important; +} + +.py-6 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} + +.py-7 { + padding-top: 1.75rem !important; + padding-bottom: 1.75rem !important; +} + +.py-8 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; +} + +.py-9 { + padding-top: 2.25rem !important; + padding-bottom: 2.25rem !important; +} + +.py-10 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; +} + +.py-11 { + padding-top: 2.75rem !important; + padding-bottom: 2.75rem !important; +} + +.py-12 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.py-13 { + padding-top: 3.25rem !important; + padding-bottom: 3.25rem !important; +} + +.py-14 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; +} + +.py-15 { + padding-top: 3.75rem !important; + padding-bottom: 3.75rem !important; +} + +.py-16 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; +} + +.py-17 { + padding-top: 4.25rem !important; + padding-bottom: 4.25rem !important; +} + +.py-18 { + padding-top: 4.5rem !important; + padding-bottom: 4.5rem !important; +} + +.py-19 { + padding-top: 4.75rem !important; + padding-bottom: 4.75rem !important; +} + +.py-20 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; +} + +.pt-0 { + padding-top: 0 !important; +} + +.pt-1 { + padding-top: 0.25rem !important; +} + +.pt-2 { + padding-top: 0.5rem !important; +} + +.pt-3 { + padding-top: 0.75rem !important; +} + +.pt-4 { + padding-top: 1rem !important; +} + +.pt-5 { + padding-top: 1.25rem !important; +} + +.pt-6 { + padding-top: 1.5rem !important; +} + +.pt-7 { + padding-top: 1.75rem !important; +} + +.pt-8 { + padding-top: 2rem !important; +} + +.pt-9 { + padding-top: 2.25rem !important; +} + +.pt-10 { + padding-top: 2.5rem !important; +} + +.pt-11 { + padding-top: 2.75rem !important; +} + +.pt-12 { + padding-top: 3rem !important; +} + +.pt-13 { + padding-top: 3.25rem !important; +} + +.pt-14 { + padding-top: 3.5rem !important; +} + +.pt-15 { + padding-top: 3.75rem !important; +} + +.pt-16 { + padding-top: 4rem !important; +} + +.pt-17 { + padding-top: 4.25rem !important; +} + +.pt-18 { + padding-top: 4.5rem !important; +} + +.pt-19 { + padding-top: 4.75rem !important; +} + +.pt-20 { + padding-top: 5rem !important; +} + +.pe-0 { + padding-right: 0 !important; +} + +.pe-1 { + padding-right: 0.25rem !important; +} + +.pe-2 { + padding-right: 0.5rem !important; +} + +.pe-3 { + padding-right: 0.75rem !important; +} + +.pe-4 { + padding-right: 1rem !important; +} + +.pe-5 { + padding-right: 1.25rem !important; +} + +.pe-6 { + padding-right: 1.5rem !important; +} + +.pe-7 { + padding-right: 1.75rem !important; +} + +.pe-8 { + padding-right: 2rem !important; +} + +.pe-9 { + padding-right: 2.25rem !important; +} + +.pe-10 { + padding-right: 2.5rem !important; +} + +.pe-11 { + padding-right: 2.75rem !important; +} + +.pe-12 { + padding-right: 3rem !important; +} + +.pe-13 { + padding-right: 3.25rem !important; +} + +.pe-14 { + padding-right: 3.5rem !important; +} + +.pe-15 { + padding-right: 3.75rem !important; +} + +.pe-16 { + padding-right: 4rem !important; +} + +.pe-17 { + padding-right: 4.25rem !important; +} + +.pe-18 { + padding-right: 4.5rem !important; +} + +.pe-19 { + padding-right: 4.75rem !important; +} + +.pe-20 { + padding-right: 5rem !important; +} + +.pb-0 { + padding-bottom: 0 !important; +} + +.pb-1 { + padding-bottom: 0.25rem !important; +} + +.pb-2 { + padding-bottom: 0.5rem !important; +} + +.pb-3 { + padding-bottom: 0.75rem !important; +} + +.pb-4 { + padding-bottom: 1rem !important; +} + +.pb-5 { + padding-bottom: 1.25rem !important; +} + +.pb-6 { + padding-bottom: 1.5rem !important; +} + +.pb-7 { + padding-bottom: 1.75rem !important; +} + +.pb-8 { + padding-bottom: 2rem !important; +} + +.pb-9 { + padding-bottom: 2.25rem !important; +} + +.pb-10 { + padding-bottom: 2.5rem !important; +} + +.pb-11 { + padding-bottom: 2.75rem !important; +} + +.pb-12 { + padding-bottom: 3rem !important; +} + +.pb-13 { + padding-bottom: 3.25rem !important; +} + +.pb-14 { + padding-bottom: 3.5rem !important; +} + +.pb-15 { + padding-bottom: 3.75rem !important; +} + +.pb-16 { + padding-bottom: 4rem !important; +} + +.pb-17 { + padding-bottom: 4.25rem !important; +} + +.pb-18 { + padding-bottom: 4.5rem !important; +} + +.pb-19 { + padding-bottom: 4.75rem !important; +} + +.pb-20 { + padding-bottom: 5rem !important; +} + +.ps-0 { + padding-left: 0 !important; +} + +.ps-1 { + padding-left: 0.25rem !important; +} + +.ps-2 { + padding-left: 0.5rem !important; +} + +.ps-3 { + padding-left: 0.75rem !important; +} + +.ps-4 { + padding-left: 1rem !important; +} + +.ps-5 { + padding-left: 1.25rem !important; +} + +.ps-6 { + padding-left: 1.5rem !important; +} + +.ps-7 { + padding-left: 1.75rem !important; +} + +.ps-8 { + padding-left: 2rem !important; +} + +.ps-9 { + padding-left: 2.25rem !important; +} + +.ps-10 { + padding-left: 2.5rem !important; +} + +.ps-11 { + padding-left: 2.75rem !important; +} + +.ps-12 { + padding-left: 3rem !important; +} + +.ps-13 { + padding-left: 3.25rem !important; +} + +.ps-14 { + padding-left: 3.5rem !important; +} + +.ps-15 { + padding-left: 3.75rem !important; +} + +.ps-16 { + padding-left: 4rem !important; +} + +.ps-17 { + padding-left: 4.25rem !important; +} + +.ps-18 { + padding-left: 4.5rem !important; +} + +.ps-19 { + padding-left: 4.75rem !important; +} + +.ps-20 { + padding-left: 5rem !important; +} + +.gap-0 { + gap: 0 !important; +} + +.gap-1 { + gap: 0.25rem !important; +} + +.gap-2 { + gap: 0.5rem !important; +} + +.gap-3 { + gap: 0.75rem !important; +} + +.gap-4 { + gap: 1rem !important; +} + +.gap-5 { + gap: 1.25rem !important; +} + +.gap-6 { + gap: 1.5rem !important; +} + +.gap-7 { + gap: 1.75rem !important; +} + +.gap-8 { + gap: 2rem !important; +} + +.gap-9 { + gap: 2.25rem !important; +} + +.gap-10 { + gap: 2.5rem !important; +} + +.gap-11 { + gap: 2.75rem !important; +} + +.gap-12 { + gap: 3rem !important; +} + +.gap-13 { + gap: 3.25rem !important; +} + +.gap-14 { + gap: 3.5rem !important; +} + +.gap-15 { + gap: 3.75rem !important; +} + +.gap-16 { + gap: 4rem !important; +} + +.gap-17 { + gap: 4.25rem !important; +} + +.gap-18 { + gap: 4.5rem !important; +} + +.gap-19 { + gap: 4.75rem !important; +} + +.gap-20 { + gap: 5rem !important; +} + +.row-gap-0 { + row-gap: 0 !important; +} + +.row-gap-1 { + row-gap: 0.25rem !important; +} + +.row-gap-2 { + row-gap: 0.5rem !important; +} + +.row-gap-3 { + row-gap: 0.75rem !important; +} + +.row-gap-4 { + row-gap: 1rem !important; +} + +.row-gap-5 { + row-gap: 1.25rem !important; +} + +.row-gap-6 { + row-gap: 1.5rem !important; +} + +.row-gap-7 { + row-gap: 1.75rem !important; +} + +.row-gap-8 { + row-gap: 2rem !important; +} + +.row-gap-9 { + row-gap: 2.25rem !important; +} + +.row-gap-10 { + row-gap: 2.5rem !important; +} + +.row-gap-11 { + row-gap: 2.75rem !important; +} + +.row-gap-12 { + row-gap: 3rem !important; +} + +.row-gap-13 { + row-gap: 3.25rem !important; +} + +.row-gap-14 { + row-gap: 3.5rem !important; +} + +.row-gap-15 { + row-gap: 3.75rem !important; +} + +.row-gap-16 { + row-gap: 4rem !important; +} + +.row-gap-17 { + row-gap: 4.25rem !important; +} + +.row-gap-18 { + row-gap: 4.5rem !important; +} + +.row-gap-19 { + row-gap: 4.75rem !important; +} + +.row-gap-20 { + row-gap: 5rem !important; +} + +.column-gap-0 { + column-gap: 0 !important; +} + +.column-gap-1 { + column-gap: 0.25rem !important; +} + +.column-gap-2 { + column-gap: 0.5rem !important; +} + +.column-gap-3 { + column-gap: 0.75rem !important; +} + +.column-gap-4 { + column-gap: 1rem !important; +} + +.column-gap-5 { + column-gap: 1.25rem !important; +} + +.column-gap-6 { + column-gap: 1.5rem !important; +} + +.column-gap-7 { + column-gap: 1.75rem !important; +} + +.column-gap-8 { + column-gap: 2rem !important; +} + +.column-gap-9 { + column-gap: 2.25rem !important; +} + +.column-gap-10 { + column-gap: 2.5rem !important; +} + +.column-gap-11 { + column-gap: 2.75rem !important; +} + +.column-gap-12 { + column-gap: 3rem !important; +} + +.column-gap-13 { + column-gap: 3.25rem !important; +} + +.column-gap-14 { + column-gap: 3.5rem !important; +} + +.column-gap-15 { + column-gap: 3.75rem !important; +} + +.column-gap-16 { + column-gap: 4rem !important; +} + +.column-gap-17 { + column-gap: 4.25rem !important; +} + +.column-gap-18 { + column-gap: 4.5rem !important; +} + +.column-gap-19 { + column-gap: 4.75rem !important; +} + +.column-gap-20 { + column-gap: 5rem !important; +} + +.font-monospace { + font-family: var(--bs-font-monospace) !important; +} + +.fs-1 { + font-size: calc(1.3rem + 0.6vw) !important; +} + +.fs-2 { + font-size: calc(1.275rem + 0.3vw) !important; +} + +.fs-3 { + font-size: calc(1.26rem + 0.12vw) !important; +} + +.fs-4 { + font-size: 1.25rem !important; +} + +.fs-5 { + font-size: 1.15rem !important; +} + +.fs-6 { + font-size: 1.075rem !important; +} + +.fs-7 { + font-size: 0.95rem !important; +} + +.fs-8 { + font-size: 0.85rem !important; +} + +.fs-9 { + font-size: 0.75rem !important; +} + +.fs-10 { + font-size: 0.5rem !important; +} + +.fs-base { + font-size: 1rem !important; +} + +.fs-fluid { + font-size: 100% !important; +} + +.fs-2x { + font-size: calc(1.325rem + 0.9vw) !important; +} + +.fs-2qx { + font-size: calc(1.35rem + 1.2vw) !important; +} + +.fs-2hx { + font-size: calc(1.375rem + 1.5vw) !important; +} + +.fs-2tx { + font-size: calc(1.4rem + 1.8vw) !important; +} + +.fs-3x { + font-size: calc(1.425rem + 2.1vw) !important; +} + +.fs-3qx { + font-size: calc(1.45rem + 2.4vw) !important; +} + +.fs-3hx { + font-size: calc(1.475rem + 2.7vw) !important; +} + +.fs-3tx { + font-size: calc(1.5rem + 3vw) !important; +} + +.fs-4x { + font-size: calc(1.525rem + 3.3vw) !important; +} + +.fs-4qx { + font-size: calc(1.55rem + 3.6vw) !important; +} + +.fs-4hx { + font-size: calc(1.575rem + 3.9vw) !important; +} + +.fs-4tx { + font-size: calc(1.6rem + 4.2vw) !important; +} + +.fs-5x { + font-size: calc(1.625rem + 4.5vw) !important; +} + +.fs-5qx { + font-size: calc(1.65rem + 4.8vw) !important; +} + +.fs-5hx { + font-size: calc(1.675rem + 5.1vw) !important; +} + +.fs-5tx { + font-size: calc(1.7rem + 5.4vw) !important; +} + +.fst-italic { + font-style: italic !important; +} + +.fst-normal { + font-style: normal !important; +} + +.fw-lighter { + font-weight: lighter !important; +} + +.fw-light { + font-weight: 300 !important; +} + +.fw-normal { + font-weight: 400 !important; +} + +.fw-medium { + font-weight: 500 !important; +} + +.fw-semibold { + font-weight: 500 !important; +} + +.fw-bold { + font-weight: 600 !important; +} + +.fw-bolder { + font-weight: 700 !important; +} + +.lh-0 { + line-height: 0 !important; +} + +.lh-1 { + line-height: 1 !important; +} + +.lh-sm { + line-height: 1.25 !important; +} + +.lh-base { + line-height: 1.5 !important; +} + +.lh-lg { + line-height: 1.75 !important; +} + +.lh-xl { + line-height: 2 !important; +} + +.lh-xxl { + line-height: 2.25 !important; +} + +.text-start { + text-align: left !important; +} + +.text-end { + text-align: right !important; +} + +.text-center { + text-align: center !important; +} + +.text-decoration-none { + text-decoration: none !important; +} + +.text-decoration-underline { + text-decoration: underline !important; +} + +.text-decoration-line-through { + text-decoration: line-through !important; +} + +.text-lowercase { + text-transform: lowercase !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +.text-capitalize { + text-transform: capitalize !important; +} + +.text-wrap { + white-space: normal !important; +} + +.text-nowrap { + white-space: nowrap !important; +} + +/* rtl:begin:remove */ +.text-break { + word-wrap: break-word !important; + word-break: break-word !important; +} + +/* rtl:end:remove */ +.text-white { + --bs-text-opacity: 1; + color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important; +} + +.text-light { + --bs-text-opacity: 1; + color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important; +} + +.text-primary { + --bs-text-opacity: 1; + color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important; +} + +.text-secondary { + --bs-text-opacity: 1; + color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important; +} + +.text-success { + --bs-text-opacity: 1; + color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important; +} + +.text-info { + --bs-text-opacity: 1; + color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important; +} + +.text-warning { + --bs-text-opacity: 1; + color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important; +} + +.text-danger { + --bs-text-opacity: 1; + color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important; +} + +.text-dark { + --bs-text-opacity: 1; + color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important; +} + +.text-black { + --bs-text-opacity: 1; + color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important; +} + +.text-body { + --bs-text-opacity: 1; + color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important; +} + +.text-muted { + --bs-text-opacity: 1; + color: #A1A5B7 !important; +} + +.text-black-50 { + --bs-text-opacity: 1; + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + --bs-text-opacity: 1; + color: rgba(255, 255, 255, 0.5) !important; +} + +.text-body-secondary { + --bs-text-opacity: 1; + color: var(--bs-secondary-color) !important; +} + +.text-body-tertiary { + --bs-text-opacity: 1; + color: var(--bs-tertiary-color) !important; +} + +.text-body-emphasis { + --bs-text-opacity: 1; + color: var(--bs-emphasis-color) !important; +} + +.text-reset { + --bs-text-opacity: 1; + color: inherit !important; +} + +.text-opacity-25 { + --bs-text-opacity: 0.25; +} + +.text-opacity-50 { + --bs-text-opacity: 0.5; +} + +.text-opacity-75 { + --bs-text-opacity: 0.75; +} + +.text-opacity-100 { + --bs-text-opacity: 1; +} + +.text-primary-emphasis { + color: var(--bs-primary-text) !important; +} + +.text-secondary-emphasis { + color: var(--bs-secondary-text) !important; +} + +.text-success-emphasis { + color: var(--bs-success-text) !important; +} + +.text-info-emphasis { + color: var(--bs-info-text) !important; +} + +.text-warning-emphasis { + color: var(--bs-warning-text) !important; +} + +.text-danger-emphasis { + color: var(--bs-danger-text) !important; +} + +.text-light-emphasis { + color: var(--bs-light-text) !important; +} + +.text-dark-emphasis { + color: var(--bs-dark-text) !important; +} + +.bg-white { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-light { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-primary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-secondary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-success { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-info { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-warning { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-danger { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-dark { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-black { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-body { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-transparent { + --bs-bg-opacity: 1; + background-color: transparent !important; +} + +.bg-body-secondary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-body-tertiary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-body-emphasis { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-emphasis-bg-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-opacity-10 { + --bs-bg-opacity: 0.1; +} + +.bg-opacity-25 { + --bs-bg-opacity: 0.25; +} + +.bg-opacity-50 { + --bs-bg-opacity: 0.5; +} + +.bg-opacity-75 { + --bs-bg-opacity: 0.75; +} + +.bg-opacity-100 { + --bs-bg-opacity: 1; +} + +.bg-primary-subtle { + background-color: var(--bs-primary-bg-subtle) !important; +} + +.bg-secondary-subtle { + background-color: var(--bs-secondary-bg-subtle) !important; +} + +.bg-success-subtle { + background-color: var(--bs-success-bg-subtle) !important; +} + +.bg-info-subtle { + background-color: var(--bs-info-bg-subtle) !important; +} + +.bg-warning-subtle { + background-color: var(--bs-warning-bg-subtle) !important; +} + +.bg-danger-subtle { + background-color: var(--bs-danger-bg-subtle) !important; +} + +.bg-light-subtle { + background-color: var(--bs-light-bg-subtle) !important; +} + +.bg-dark-subtle { + background-color: var(--bs-dark-bg-subtle) !important; +} + +.bg-gradient { + background-image: var(--bs-gradient) !important; +} + +.user-select-all { + user-select: all !important; +} + +.user-select-auto { + user-select: auto !important; +} + +.user-select-none { + user-select: none !important; +} + +.pe-none { + pointer-events: none !important; +} + +.pe-auto { + pointer-events: auto !important; +} + +.rounded { + border-radius: 0.475rem !important; +} + +.rounded-0 { + border-radius: 0 !important; +} + +.rounded-1 { + border-radius: 0.425rem !important; +} + +.rounded-2 { + border-radius: 0.475rem !important; +} + +.rounded-3 { + border-radius: 0.625rem !important; +} + +.rounded-4 { + border-radius: 1rem !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.rounded-pill { + border-radius: 50rem !important; +} + +.rounded-top { + border-top-left-radius: var(--bs-border-radius) !important; + border-top-right-radius: var(--bs-border-radius) !important; +} + +.rounded-top-0 { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; +} + +.rounded-top-1 { + border-top-left-radius: var(--bs-border-radius-sm) !important; + border-top-right-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-top-2 { + border-top-left-radius: var(--bs-border-radius) !important; + border-top-right-radius: var(--bs-border-radius) !important; +} + +.rounded-top-3 { + border-top-left-radius: var(--bs-border-radius-lg) !important; + border-top-right-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-top-4 { + border-top-left-radius: var(--bs-border-radius-xl) !important; + border-top-right-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-top-5 { + border-top-left-radius: var(--bs-border-radius-2xl) !important; + border-top-right-radius: var(--bs-border-radius-2xl) !important; +} + +.rounded-top-circle { + border-top-left-radius: 50% !important; + border-top-right-radius: 50% !important; +} + +.rounded-top-pill { + border-top-left-radius: var(--bs-border-radius-pill) !important; + border-top-right-radius: var(--bs-border-radius-pill) !important; +} + +.rounded-end { + border-top-right-radius: var(--bs-border-radius) !important; + border-bottom-right-radius: var(--bs-border-radius) !important; +} + +.rounded-end-0 { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +.rounded-end-1 { + border-top-right-radius: var(--bs-border-radius-sm) !important; + border-bottom-right-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-end-2 { + border-top-right-radius: var(--bs-border-radius) !important; + border-bottom-right-radius: var(--bs-border-radius) !important; +} + +.rounded-end-3 { + border-top-right-radius: var(--bs-border-radius-lg) !important; + border-bottom-right-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-end-4 { + border-top-right-radius: var(--bs-border-radius-xl) !important; + border-bottom-right-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-end-5 { + border-top-right-radius: var(--bs-border-radius-2xl) !important; + border-bottom-right-radius: var(--bs-border-radius-2xl) !important; +} + +.rounded-end-circle { + border-top-right-radius: 50% !important; + border-bottom-right-radius: 50% !important; +} + +.rounded-end-pill { + border-top-right-radius: var(--bs-border-radius-pill) !important; + border-bottom-right-radius: var(--bs-border-radius-pill) !important; +} + +.rounded-bottom { + border-bottom-right-radius: var(--bs-border-radius) !important; + border-bottom-left-radius: var(--bs-border-radius) !important; +} + +.rounded-bottom-0 { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} + +.rounded-bottom-1 { + border-bottom-right-radius: var(--bs-border-radius-sm) !important; + border-bottom-left-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-bottom-2 { + border-bottom-right-radius: var(--bs-border-radius) !important; + border-bottom-left-radius: var(--bs-border-radius) !important; +} + +.rounded-bottom-3 { + border-bottom-right-radius: var(--bs-border-radius-lg) !important; + border-bottom-left-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-bottom-4 { + border-bottom-right-radius: var(--bs-border-radius-xl) !important; + border-bottom-left-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-bottom-5 { + border-bottom-right-radius: var(--bs-border-radius-2xl) !important; + border-bottom-left-radius: var(--bs-border-radius-2xl) !important; +} + +.rounded-bottom-circle { + border-bottom-right-radius: 50% !important; + border-bottom-left-radius: 50% !important; +} + +.rounded-bottom-pill { + border-bottom-right-radius: var(--bs-border-radius-pill) !important; + border-bottom-left-radius: var(--bs-border-radius-pill) !important; +} + +.rounded-start { + border-bottom-left-radius: var(--bs-border-radius) !important; + border-top-left-radius: var(--bs-border-radius) !important; +} + +.rounded-start-0 { + border-bottom-left-radius: 0 !important; + border-top-left-radius: 0 !important; +} + +.rounded-start-1 { + border-bottom-left-radius: var(--bs-border-radius-sm) !important; + border-top-left-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-start-2 { + border-bottom-left-radius: var(--bs-border-radius) !important; + border-top-left-radius: var(--bs-border-radius) !important; +} + +.rounded-start-3 { + border-bottom-left-radius: var(--bs-border-radius-lg) !important; + border-top-left-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-start-4 { + border-bottom-left-radius: var(--bs-border-radius-xl) !important; + border-top-left-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-start-5 { + border-bottom-left-radius: var(--bs-border-radius-2xl) !important; + border-top-left-radius: var(--bs-border-radius-2xl) !important; +} + +.rounded-start-circle { + border-bottom-left-radius: 50% !important; + border-top-left-radius: 50% !important; +} + +.rounded-start-pill { + border-bottom-left-radius: var(--bs-border-radius-pill) !important; + border-top-left-radius: var(--bs-border-radius-pill) !important; +} + +.visible { + visibility: visible !important; +} + +.invisible { + visibility: hidden !important; +} + +.z-index-n1 { + z-index: -1 !important; +} + +.z-index-n2 { + z-index: -2 !important; +} + +.z-index-0 { + z-index: 0 !important; +} + +.z-index-1 { + z-index: 1 !important; +} + +.z-index-2 { + z-index: 2 !important; +} + +.z-index-3 { + z-index: 3 !important; +} + +.opacity-0 { + opacity: 0 !important; +} + +.opacity-0-hover:hover { + opacity: 0 !important; +} + +.opacity-5 { + opacity: 0.05 !important; +} + +.opacity-5-hover:hover { + opacity: 0.05 !important; +} + +.opacity-10 { + opacity: 0.1 !important; +} + +.opacity-10-hover:hover { + opacity: 0.1 !important; +} + +.opacity-15 { + opacity: 0.15 !important; +} + +.opacity-15-hover:hover { + opacity: 0.15 !important; +} + +.opacity-20 { + opacity: 0.2 !important; +} + +.opacity-20-hover:hover { + opacity: 0.2 !important; +} + +.opacity-25 { + opacity: 0.25 !important; +} + +.opacity-25-hover:hover { + opacity: 0.25 !important; +} + +.opacity-50 { + opacity: 0.5 !important; +} + +.opacity-50-hover:hover { + opacity: 0.5 !important; +} + +.opacity-75 { + opacity: 0.75 !important; +} + +.opacity-75-hover:hover { + opacity: 0.75 !important; +} + +.opacity-100 { + opacity: 1 !important; +} + +.opacity-100-hover:hover { + opacity: 1 !important; +} + +.min-w-unset { + min-width: unset !important; +} + +.min-w-25 { + min-width: 25% !important; +} + +.min-w-50 { + min-width: 50% !important; +} + +.min-w-75 { + min-width: 75% !important; +} + +.min-w-100 { + min-width: 100% !important; +} + +.min-w-auto { + min-width: auto !important; +} + +.min-w-1px { + min-width: 1px !important; +} + +.min-w-2px { + min-width: 2px !important; +} + +.min-w-3px { + min-width: 3px !important; +} + +.min-w-4px { + min-width: 4px !important; +} + +.min-w-5px { + min-width: 5px !important; +} + +.min-w-6px { + min-width: 6px !important; +} + +.min-w-7px { + min-width: 7px !important; +} + +.min-w-8px { + min-width: 8px !important; +} + +.min-w-9px { + min-width: 9px !important; +} + +.min-w-10px { + min-width: 10px !important; +} + +.min-w-15px { + min-width: 15px !important; +} + +.min-w-20px { + min-width: 20px !important; +} + +.min-w-25px { + min-width: 25px !important; +} + +.min-w-30px { + min-width: 30px !important; +} + +.min-w-35px { + min-width: 35px !important; +} + +.min-w-40px { + min-width: 40px !important; +} + +.min-w-45px { + min-width: 45px !important; +} + +.min-w-50px { + min-width: 50px !important; +} + +.min-w-55px { + min-width: 55px !important; +} + +.min-w-60px { + min-width: 60px !important; +} + +.min-w-65px { + min-width: 65px !important; +} + +.min-w-70px { + min-width: 70px !important; +} + +.min-w-75px { + min-width: 75px !important; +} + +.min-w-80px { + min-width: 80px !important; +} + +.min-w-85px { + min-width: 85px !important; +} + +.min-w-90px { + min-width: 90px !important; +} + +.min-w-95px { + min-width: 95px !important; +} + +.min-w-100px { + min-width: 100px !important; +} + +.min-w-125px { + min-width: 125px !important; +} + +.min-w-150px { + min-width: 150px !important; +} + +.min-w-175px { + min-width: 175px !important; +} + +.min-w-200px { + min-width: 200px !important; +} + +.min-w-225px { + min-width: 225px !important; +} + +.min-w-250px { + min-width: 250px !important; +} + +.min-w-275px { + min-width: 275px !important; +} + +.min-w-300px { + min-width: 300px !important; +} + +.min-w-325px { + min-width: 325px !important; +} + +.min-w-350px { + min-width: 350px !important; +} + +.min-w-375px { + min-width: 375px !important; +} + +.min-w-400px { + min-width: 400px !important; +} + +.min-w-425px { + min-width: 425px !important; +} + +.min-w-450px { + min-width: 450px !important; +} + +.min-w-475px { + min-width: 475px !important; +} + +.min-w-500px { + min-width: 500px !important; +} + +.min-w-550px { + min-width: 550px !important; +} + +.min-w-600px { + min-width: 600px !important; +} + +.min-w-650px { + min-width: 650px !important; +} + +.min-w-700px { + min-width: 700px !important; +} + +.min-w-750px { + min-width: 750px !important; +} + +.min-w-800px { + min-width: 800px !important; +} + +.min-w-850px { + min-width: 850px !important; +} + +.min-w-900px { + min-width: 900px !important; +} + +.min-w-950px { + min-width: 950px !important; +} + +.min-w-1000px { + min-width: 1000px !important; +} + +.min-h-unset { + min-height: unset !important; +} + +.min-h-25 { + min-height: 25% !important; +} + +.min-h-50 { + min-height: 50% !important; +} + +.min-h-75 { + min-height: 75% !important; +} + +.min-h-100 { + min-height: 100% !important; +} + +.min-h-auto { + min-height: auto !important; +} + +.min-h-1px { + min-height: 1px !important; +} + +.min-h-2px { + min-height: 2px !important; +} + +.min-h-3px { + min-height: 3px !important; +} + +.min-h-4px { + min-height: 4px !important; +} + +.min-h-5px { + min-height: 5px !important; +} + +.min-h-6px { + min-height: 6px !important; +} + +.min-h-7px { + min-height: 7px !important; +} + +.min-h-8px { + min-height: 8px !important; +} + +.min-h-9px { + min-height: 9px !important; +} + +.min-h-10px { + min-height: 10px !important; +} + +.min-h-15px { + min-height: 15px !important; +} + +.min-h-20px { + min-height: 20px !important; +} + +.min-h-25px { + min-height: 25px !important; +} + +.min-h-30px { + min-height: 30px !important; +} + +.min-h-35px { + min-height: 35px !important; +} + +.min-h-40px { + min-height: 40px !important; +} + +.min-h-45px { + min-height: 45px !important; +} + +.min-h-50px { + min-height: 50px !important; +} + +.min-h-55px { + min-height: 55px !important; +} + +.min-h-60px { + min-height: 60px !important; +} + +.min-h-65px { + min-height: 65px !important; +} + +.min-h-70px { + min-height: 70px !important; +} + +.min-h-75px { + min-height: 75px !important; +} + +.min-h-80px { + min-height: 80px !important; +} + +.min-h-85px { + min-height: 85px !important; +} + +.min-h-90px { + min-height: 90px !important; +} + +.min-h-95px { + min-height: 95px !important; +} + +.min-h-100px { + min-height: 100px !important; +} + +.min-h-125px { + min-height: 125px !important; +} + +.min-h-150px { + min-height: 150px !important; +} + +.min-h-175px { + min-height: 175px !important; +} + +.min-h-200px { + min-height: 200px !important; +} + +.min-h-225px { + min-height: 225px !important; +} + +.min-h-250px { + min-height: 250px !important; +} + +.min-h-275px { + min-height: 275px !important; +} + +.min-h-300px { + min-height: 300px !important; +} + +.min-h-325px { + min-height: 325px !important; +} + +.min-h-350px { + min-height: 350px !important; +} + +.min-h-375px { + min-height: 375px !important; +} + +.min-h-400px { + min-height: 400px !important; +} + +.min-h-425px { + min-height: 425px !important; +} + +.min-h-450px { + min-height: 450px !important; +} + +.min-h-475px { + min-height: 475px !important; +} + +.min-h-500px { + min-height: 500px !important; +} + +.min-h-550px { + min-height: 550px !important; +} + +.min-h-600px { + min-height: 600px !important; +} + +.min-h-650px { + min-height: 650px !important; +} + +.min-h-700px { + min-height: 700px !important; +} + +.min-h-750px { + min-height: 750px !important; +} + +.min-h-800px { + min-height: 800px !important; +} + +.min-h-850px { + min-height: 850px !important; +} + +.min-h-900px { + min-height: 900px !important; +} + +.min-h-950px { + min-height: 950px !important; +} + +.min-h-1000px { + min-height: 1000px !important; +} + +.border-top-0 { + border-top-width: 0 !important; +} + +.border-top-1 { + border-top-width: 1px !important; +} + +.border-top-2 { + border-top-width: 2px !important; +} + +.border-top-3 { + border-top-width: 3px !important; +} + +.border-top-4 { + border-top-width: 4px !important; +} + +.border-top-5 { + border-top-width: 5px !important; +} + +.border-bottom-0 { + border-bottom-width: 0 !important; +} + +.border-bottom-1 { + border-bottom-width: 1px !important; +} + +.border-bottom-2 { + border-bottom-width: 2px !important; +} + +.border-bottom-3 { + border-bottom-width: 3px !important; +} + +.border-bottom-4 { + border-bottom-width: 4px !important; +} + +.border-bottom-5 { + border-bottom-width: 5px !important; +} + +.border-right-0 { + border-right-width: 0 !important; +} + +.border-right-1 { + border-right-width: 1px !important; +} + +.border-right-2 { + border-right-width: 2px !important; +} + +.border-right-3 { + border-right-width: 3px !important; +} + +.border-right-4 { + border-right-width: 4px !important; +} + +.border-right-5 { + border-right-width: 5px !important; +} + +.border-left-0 { + border-left-width: 0 !important; +} + +.border-left-1 { + border-left-width: 1px !important; +} + +.border-left-2 { + border-left-width: 2px !important; +} + +.border-left-3 { + border-left-width: 3px !important; +} + +.border-left-4 { + border-left-width: 4px !important; +} + +.border-left-5 { + border-left-width: 5px !important; +} + +.ls-1 { + letter-spacing: 0.1rem !important; +} + +.ls-2 { + letter-spacing: 0.115rem !important; +} + +.ls-3 { + letter-spacing: 0.125rem !important; +} + +.ls-4 { + letter-spacing: 0.25rem !important; +} + +.ls-5 { + letter-spacing: 0.5rem !important; +} + +.ls-n1 { + letter-spacing: -0.1rem !important; +} + +.ls-n2 { + letter-spacing: -0.115rem !important; +} + +.ls-n3 { + letter-spacing: -0.125rem !important; +} + +.ls-n4 { + letter-spacing: -0.25rem !important; +} + +.ls-n5 { + letter-spacing: -0.5rem !important; +} + +@media (min-width: 576px) { + .float-sm-start { + float: left !important; + } + .float-sm-end { + float: right !important; + } + .float-sm-none { + float: none !important; + } + .object-fit-sm-contain { + object-fit: contain !important; + } + .object-fit-sm-cover { + object-fit: cover !important; + } + .object-fit-sm-fill { + object-fit: fill !important; + } + .object-fit-sm-scale { + object-fit: scale-down !important; + } + .object-fit-sm-none { + object-fit: none !important; + } + .overflow-sm-auto { + overflow: auto !important; + } + .overflow-sm-hidden { + overflow: hidden !important; + } + .overflow-sm-visible { + overflow: visible !important; + } + .overflow-sm-scroll { + overflow: scroll !important; + } + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-grid { + display: grid !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: flex !important; + } + .d-sm-inline-flex { + display: inline-flex !important; + } + .d-sm-none { + display: none !important; + } + .position-sm-static { + position: static !important; + } + .position-sm-relative { + position: relative !important; + } + .position-sm-absolute { + position: absolute !important; + } + .position-sm-fixed { + position: fixed !important; + } + .position-sm-sticky { + position: sticky !important; + } + .w-sm-unset { + width: unset !important; + } + .w-sm-25 { + width: 25% !important; + } + .w-sm-50 { + width: 50% !important; + } + .w-sm-75 { + width: 75% !important; + } + .w-sm-100 { + width: 100% !important; + } + .w-sm-auto { + width: auto !important; + } + .w-sm-1px { + width: 1px !important; + } + .w-sm-2px { + width: 2px !important; + } + .w-sm-3px { + width: 3px !important; + } + .w-sm-4px { + width: 4px !important; + } + .w-sm-5px { + width: 5px !important; + } + .w-sm-6px { + width: 6px !important; + } + .w-sm-7px { + width: 7px !important; + } + .w-sm-8px { + width: 8px !important; + } + .w-sm-9px { + width: 9px !important; + } + .w-sm-10px { + width: 10px !important; + } + .w-sm-15px { + width: 15px !important; + } + .w-sm-20px { + width: 20px !important; + } + .w-sm-25px { + width: 25px !important; + } + .w-sm-30px { + width: 30px !important; + } + .w-sm-35px { + width: 35px !important; + } + .w-sm-40px { + width: 40px !important; + } + .w-sm-45px { + width: 45px !important; + } + .w-sm-50px { + width: 50px !important; + } + .w-sm-55px { + width: 55px !important; + } + .w-sm-60px { + width: 60px !important; + } + .w-sm-65px { + width: 65px !important; + } + .w-sm-70px { + width: 70px !important; + } + .w-sm-75px { + width: 75px !important; + } + .w-sm-80px { + width: 80px !important; + } + .w-sm-85px { + width: 85px !important; + } + .w-sm-90px { + width: 90px !important; + } + .w-sm-95px { + width: 95px !important; + } + .w-sm-100px { + width: 100px !important; + } + .w-sm-125px { + width: 125px !important; + } + .w-sm-150px { + width: 150px !important; + } + .w-sm-175px { + width: 175px !important; + } + .w-sm-200px { + width: 200px !important; + } + .w-sm-225px { + width: 225px !important; + } + .w-sm-250px { + width: 250px !important; + } + .w-sm-275px { + width: 275px !important; + } + .w-sm-300px { + width: 300px !important; + } + .w-sm-325px { + width: 325px !important; + } + .w-sm-350px { + width: 350px !important; + } + .w-sm-375px { + width: 375px !important; + } + .w-sm-400px { + width: 400px !important; + } + .w-sm-425px { + width: 425px !important; + } + .w-sm-450px { + width: 450px !important; + } + .w-sm-475px { + width: 475px !important; + } + .w-sm-500px { + width: 500px !important; + } + .w-sm-550px { + width: 550px !important; + } + .w-sm-600px { + width: 600px !important; + } + .w-sm-650px { + width: 650px !important; + } + .w-sm-700px { + width: 700px !important; + } + .w-sm-750px { + width: 750px !important; + } + .w-sm-800px { + width: 800px !important; + } + .w-sm-850px { + width: 850px !important; + } + .w-sm-900px { + width: 900px !important; + } + .w-sm-950px { + width: 950px !important; + } + .w-sm-1000px { + width: 1000px !important; + } + .mw-sm-unset { + max-width: unset !important; + } + .mw-sm-25 { + max-width: 25% !important; + } + .mw-sm-50 { + max-width: 50% !important; + } + .mw-sm-75 { + max-width: 75% !important; + } + .mw-sm-100 { + max-width: 100% !important; + } + .mw-sm-auto { + max-width: auto !important; + } + .mw-sm-1px { + max-width: 1px !important; + } + .mw-sm-2px { + max-width: 2px !important; + } + .mw-sm-3px { + max-width: 3px !important; + } + .mw-sm-4px { + max-width: 4px !important; + } + .mw-sm-5px { + max-width: 5px !important; + } + .mw-sm-6px { + max-width: 6px !important; + } + .mw-sm-7px { + max-width: 7px !important; + } + .mw-sm-8px { + max-width: 8px !important; + } + .mw-sm-9px { + max-width: 9px !important; + } + .mw-sm-10px { + max-width: 10px !important; + } + .mw-sm-15px { + max-width: 15px !important; + } + .mw-sm-20px { + max-width: 20px !important; + } + .mw-sm-25px { + max-width: 25px !important; + } + .mw-sm-30px { + max-width: 30px !important; + } + .mw-sm-35px { + max-width: 35px !important; + } + .mw-sm-40px { + max-width: 40px !important; + } + .mw-sm-45px { + max-width: 45px !important; + } + .mw-sm-50px { + max-width: 50px !important; + } + .mw-sm-55px { + max-width: 55px !important; + } + .mw-sm-60px { + max-width: 60px !important; + } + .mw-sm-65px { + max-width: 65px !important; + } + .mw-sm-70px { + max-width: 70px !important; + } + .mw-sm-75px { + max-width: 75px !important; + } + .mw-sm-80px { + max-width: 80px !important; + } + .mw-sm-85px { + max-width: 85px !important; + } + .mw-sm-90px { + max-width: 90px !important; + } + .mw-sm-95px { + max-width: 95px !important; + } + .mw-sm-100px { + max-width: 100px !important; + } + .mw-sm-125px { + max-width: 125px !important; + } + .mw-sm-150px { + max-width: 150px !important; + } + .mw-sm-175px { + max-width: 175px !important; + } + .mw-sm-200px { + max-width: 200px !important; + } + .mw-sm-225px { + max-width: 225px !important; + } + .mw-sm-250px { + max-width: 250px !important; + } + .mw-sm-275px { + max-width: 275px !important; + } + .mw-sm-300px { + max-width: 300px !important; + } + .mw-sm-325px { + max-width: 325px !important; + } + .mw-sm-350px { + max-width: 350px !important; + } + .mw-sm-375px { + max-width: 375px !important; + } + .mw-sm-400px { + max-width: 400px !important; + } + .mw-sm-425px { + max-width: 425px !important; + } + .mw-sm-450px { + max-width: 450px !important; + } + .mw-sm-475px { + max-width: 475px !important; + } + .mw-sm-500px { + max-width: 500px !important; + } + .mw-sm-550px { + max-width: 550px !important; + } + .mw-sm-600px { + max-width: 600px !important; + } + .mw-sm-650px { + max-width: 650px !important; + } + .mw-sm-700px { + max-width: 700px !important; + } + .mw-sm-750px { + max-width: 750px !important; + } + .mw-sm-800px { + max-width: 800px !important; + } + .mw-sm-850px { + max-width: 850px !important; + } + .mw-sm-900px { + max-width: 900px !important; + } + .mw-sm-950px { + max-width: 950px !important; + } + .mw-sm-1000px { + max-width: 1000px !important; + } + .h-sm-unset { + height: unset !important; + } + .h-sm-25 { + height: 25% !important; + } + .h-sm-50 { + height: 50% !important; + } + .h-sm-75 { + height: 75% !important; + } + .h-sm-100 { + height: 100% !important; + } + .h-sm-auto { + height: auto !important; + } + .h-sm-1px { + height: 1px !important; + } + .h-sm-2px { + height: 2px !important; + } + .h-sm-3px { + height: 3px !important; + } + .h-sm-4px { + height: 4px !important; + } + .h-sm-5px { + height: 5px !important; + } + .h-sm-6px { + height: 6px !important; + } + .h-sm-7px { + height: 7px !important; + } + .h-sm-8px { + height: 8px !important; + } + .h-sm-9px { + height: 9px !important; + } + .h-sm-10px { + height: 10px !important; + } + .h-sm-15px { + height: 15px !important; + } + .h-sm-20px { + height: 20px !important; + } + .h-sm-25px { + height: 25px !important; + } + .h-sm-30px { + height: 30px !important; + } + .h-sm-35px { + height: 35px !important; + } + .h-sm-40px { + height: 40px !important; + } + .h-sm-45px { + height: 45px !important; + } + .h-sm-50px { + height: 50px !important; + } + .h-sm-55px { + height: 55px !important; + } + .h-sm-60px { + height: 60px !important; + } + .h-sm-65px { + height: 65px !important; + } + .h-sm-70px { + height: 70px !important; + } + .h-sm-75px { + height: 75px !important; + } + .h-sm-80px { + height: 80px !important; + } + .h-sm-85px { + height: 85px !important; + } + .h-sm-90px { + height: 90px !important; + } + .h-sm-95px { + height: 95px !important; + } + .h-sm-100px { + height: 100px !important; + } + .h-sm-125px { + height: 125px !important; + } + .h-sm-150px { + height: 150px !important; + } + .h-sm-175px { + height: 175px !important; + } + .h-sm-200px { + height: 200px !important; + } + .h-sm-225px { + height: 225px !important; + } + .h-sm-250px { + height: 250px !important; + } + .h-sm-275px { + height: 275px !important; + } + .h-sm-300px { + height: 300px !important; + } + .h-sm-325px { + height: 325px !important; + } + .h-sm-350px { + height: 350px !important; + } + .h-sm-375px { + height: 375px !important; + } + .h-sm-400px { + height: 400px !important; + } + .h-sm-425px { + height: 425px !important; + } + .h-sm-450px { + height: 450px !important; + } + .h-sm-475px { + height: 475px !important; + } + .h-sm-500px { + height: 500px !important; + } + .h-sm-550px { + height: 550px !important; + } + .h-sm-600px { + height: 600px !important; + } + .h-sm-650px { + height: 650px !important; + } + .h-sm-700px { + height: 700px !important; + } + .h-sm-750px { + height: 750px !important; + } + .h-sm-800px { + height: 800px !important; + } + .h-sm-850px { + height: 850px !important; + } + .h-sm-900px { + height: 900px !important; + } + .h-sm-950px { + height: 950px !important; + } + .h-sm-1000px { + height: 1000px !important; + } + .mh-sm-unset { + max-height: unset !important; + } + .mh-sm-25 { + max-height: 25% !important; + } + .mh-sm-50 { + max-height: 50% !important; + } + .mh-sm-75 { + max-height: 75% !important; + } + .mh-sm-100 { + max-height: 100% !important; + } + .mh-sm-auto { + max-height: auto !important; + } + .mh-sm-1px { + max-height: 1px !important; + } + .mh-sm-2px { + max-height: 2px !important; + } + .mh-sm-3px { + max-height: 3px !important; + } + .mh-sm-4px { + max-height: 4px !important; + } + .mh-sm-5px { + max-height: 5px !important; + } + .mh-sm-6px { + max-height: 6px !important; + } + .mh-sm-7px { + max-height: 7px !important; + } + .mh-sm-8px { + max-height: 8px !important; + } + .mh-sm-9px { + max-height: 9px !important; + } + .mh-sm-10px { + max-height: 10px !important; + } + .mh-sm-15px { + max-height: 15px !important; + } + .mh-sm-20px { + max-height: 20px !important; + } + .mh-sm-25px { + max-height: 25px !important; + } + .mh-sm-30px { + max-height: 30px !important; + } + .mh-sm-35px { + max-height: 35px !important; + } + .mh-sm-40px { + max-height: 40px !important; + } + .mh-sm-45px { + max-height: 45px !important; + } + .mh-sm-50px { + max-height: 50px !important; + } + .mh-sm-55px { + max-height: 55px !important; + } + .mh-sm-60px { + max-height: 60px !important; + } + .mh-sm-65px { + max-height: 65px !important; + } + .mh-sm-70px { + max-height: 70px !important; + } + .mh-sm-75px { + max-height: 75px !important; + } + .mh-sm-80px { + max-height: 80px !important; + } + .mh-sm-85px { + max-height: 85px !important; + } + .mh-sm-90px { + max-height: 90px !important; + } + .mh-sm-95px { + max-height: 95px !important; + } + .mh-sm-100px { + max-height: 100px !important; + } + .mh-sm-125px { + max-height: 125px !important; + } + .mh-sm-150px { + max-height: 150px !important; + } + .mh-sm-175px { + max-height: 175px !important; + } + .mh-sm-200px { + max-height: 200px !important; + } + .mh-sm-225px { + max-height: 225px !important; + } + .mh-sm-250px { + max-height: 250px !important; + } + .mh-sm-275px { + max-height: 275px !important; + } + .mh-sm-300px { + max-height: 300px !important; + } + .mh-sm-325px { + max-height: 325px !important; + } + .mh-sm-350px { + max-height: 350px !important; + } + .mh-sm-375px { + max-height: 375px !important; + } + .mh-sm-400px { + max-height: 400px !important; + } + .mh-sm-425px { + max-height: 425px !important; + } + .mh-sm-450px { + max-height: 450px !important; + } + .mh-sm-475px { + max-height: 475px !important; + } + .mh-sm-500px { + max-height: 500px !important; + } + .mh-sm-550px { + max-height: 550px !important; + } + .mh-sm-600px { + max-height: 600px !important; + } + .mh-sm-650px { + max-height: 650px !important; + } + .mh-sm-700px { + max-height: 700px !important; + } + .mh-sm-750px { + max-height: 750px !important; + } + .mh-sm-800px { + max-height: 800px !important; + } + .mh-sm-850px { + max-height: 850px !important; + } + .mh-sm-900px { + max-height: 900px !important; + } + .mh-sm-950px { + max-height: 950px !important; + } + .mh-sm-1000px { + max-height: 1000px !important; + } + .flex-sm-fill { + flex: 1 1 auto !important; + } + .flex-sm-row { + flex-direction: row !important; + } + .flex-sm-column { + flex-direction: column !important; + } + .flex-sm-row-reverse { + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + flex-direction: column-reverse !important; + } + .flex-sm-grow-0 { + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + flex-shrink: 1 !important; + } + .flex-sm-wrap { + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-sm-start { + justify-content: flex-start !important; + } + .justify-content-sm-end { + justify-content: flex-end !important; + } + .justify-content-sm-center { + justify-content: center !important; + } + .justify-content-sm-between { + justify-content: space-between !important; + } + .justify-content-sm-around { + justify-content: space-around !important; + } + .justify-content-sm-evenly { + justify-content: space-evenly !important; + } + .align-items-sm-start { + align-items: flex-start !important; + } + .align-items-sm-end { + align-items: flex-end !important; + } + .align-items-sm-center { + align-items: center !important; + } + .align-items-sm-baseline { + align-items: baseline !important; + } + .align-items-sm-stretch { + align-items: stretch !important; + } + .align-content-sm-start { + align-content: flex-start !important; + } + .align-content-sm-end { + align-content: flex-end !important; + } + .align-content-sm-center { + align-content: center !important; + } + .align-content-sm-between { + align-content: space-between !important; + } + .align-content-sm-around { + align-content: space-around !important; + } + .align-content-sm-stretch { + align-content: stretch !important; + } + .align-self-sm-auto { + align-self: auto !important; + } + .align-self-sm-start { + align-self: flex-start !important; + } + .align-self-sm-end { + align-self: flex-end !important; + } + .align-self-sm-center { + align-self: center !important; + } + .align-self-sm-baseline { + align-self: baseline !important; + } + .align-self-sm-stretch { + align-self: stretch !important; + } + .order-sm-first { + order: -1 !important; + } + .order-sm-0 { + order: 0 !important; + } + .order-sm-1 { + order: 1 !important; + } + .order-sm-2 { + order: 2 !important; + } + .order-sm-3 { + order: 3 !important; + } + .order-sm-4 { + order: 4 !important; + } + .order-sm-5 { + order: 5 !important; + } + .order-sm-last { + order: 6 !important; + } + .m-sm-0 { + margin: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .m-sm-3 { + margin: 0.75rem !important; + } + .m-sm-4 { + margin: 1rem !important; + } + .m-sm-5 { + margin: 1.25rem !important; + } + .m-sm-6 { + margin: 1.5rem !important; + } + .m-sm-7 { + margin: 1.75rem !important; + } + .m-sm-8 { + margin: 2rem !important; + } + .m-sm-9 { + margin: 2.25rem !important; + } + .m-sm-10 { + margin: 2.5rem !important; + } + .m-sm-11 { + margin: 2.75rem !important; + } + .m-sm-12 { + margin: 3rem !important; + } + .m-sm-13 { + margin: 3.25rem !important; + } + .m-sm-14 { + margin: 3.5rem !important; + } + .m-sm-15 { + margin: 3.75rem !important; + } + .m-sm-16 { + margin: 4rem !important; + } + .m-sm-17 { + margin: 4.25rem !important; + } + .m-sm-18 { + margin: 4.5rem !important; + } + .m-sm-19 { + margin: 4.75rem !important; + } + .m-sm-20 { + margin: 5rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mx-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-sm-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; + } + .mx-sm-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-sm-5 { + margin-right: 1.25rem !important; + margin-left: 1.25rem !important; + } + .mx-sm-6 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-sm-7 { + margin-right: 1.75rem !important; + margin-left: 1.75rem !important; + } + .mx-sm-8 { + margin-right: 2rem !important; + margin-left: 2rem !important; + } + .mx-sm-9 { + margin-right: 2.25rem !important; + margin-left: 2.25rem !important; + } + .mx-sm-10 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; + } + .mx-sm-11 { + margin-right: 2.75rem !important; + margin-left: 2.75rem !important; + } + .mx-sm-12 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-sm-13 { + margin-right: 3.25rem !important; + margin-left: 3.25rem !important; + } + .mx-sm-14 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; + } + .mx-sm-15 { + margin-right: 3.75rem !important; + margin-left: 3.75rem !important; + } + .mx-sm-16 { + margin-right: 4rem !important; + margin-left: 4rem !important; + } + .mx-sm-17 { + margin-right: 4.25rem !important; + margin-left: 4.25rem !important; + } + .mx-sm-18 { + margin-right: 4.5rem !important; + margin-left: 4.5rem !important; + } + .mx-sm-19 { + margin-right: 4.75rem !important; + margin-left: 4.75rem !important; + } + .mx-sm-20 { + margin-right: 5rem !important; + margin-left: 5rem !important; + } + .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-sm-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; + } + .my-sm-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-sm-5 { + margin-top: 1.25rem !important; + margin-bottom: 1.25rem !important; + } + .my-sm-6 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-sm-7 { + margin-top: 1.75rem !important; + margin-bottom: 1.75rem !important; + } + .my-sm-8 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; + } + .my-sm-9 { + margin-top: 2.25rem !important; + margin-bottom: 2.25rem !important; + } + .my-sm-10 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; + } + .my-sm-11 { + margin-top: 2.75rem !important; + margin-bottom: 2.75rem !important; + } + .my-sm-12 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-sm-13 { + margin-top: 3.25rem !important; + margin-bottom: 3.25rem !important; + } + .my-sm-14 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; + } + .my-sm-15 { + margin-top: 3.75rem !important; + margin-bottom: 3.75rem !important; + } + .my-sm-16 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; + } + .my-sm-17 { + margin-top: 4.25rem !important; + margin-bottom: 4.25rem !important; + } + .my-sm-18 { + margin-top: 4.5rem !important; + margin-bottom: 4.5rem !important; + } + .my-sm-19 { + margin-top: 4.75rem !important; + margin-bottom: 4.75rem !important; + } + .my-sm-20 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-sm-0 { + margin-top: 0 !important; + } + .mt-sm-1 { + margin-top: 0.25rem !important; + } + .mt-sm-2 { + margin-top: 0.5rem !important; + } + .mt-sm-3 { + margin-top: 0.75rem !important; + } + .mt-sm-4 { + margin-top: 1rem !important; + } + .mt-sm-5 { + margin-top: 1.25rem !important; + } + .mt-sm-6 { + margin-top: 1.5rem !important; + } + .mt-sm-7 { + margin-top: 1.75rem !important; + } + .mt-sm-8 { + margin-top: 2rem !important; + } + .mt-sm-9 { + margin-top: 2.25rem !important; + } + .mt-sm-10 { + margin-top: 2.5rem !important; + } + .mt-sm-11 { + margin-top: 2.75rem !important; + } + .mt-sm-12 { + margin-top: 3rem !important; + } + .mt-sm-13 { + margin-top: 3.25rem !important; + } + .mt-sm-14 { + margin-top: 3.5rem !important; + } + .mt-sm-15 { + margin-top: 3.75rem !important; + } + .mt-sm-16 { + margin-top: 4rem !important; + } + .mt-sm-17 { + margin-top: 4.25rem !important; + } + .mt-sm-18 { + margin-top: 4.5rem !important; + } + .mt-sm-19 { + margin-top: 4.75rem !important; + } + .mt-sm-20 { + margin-top: 5rem !important; + } + .mt-sm-auto { + margin-top: auto !important; + } + .me-sm-0 { + margin-right: 0 !important; + } + .me-sm-1 { + margin-right: 0.25rem !important; + } + .me-sm-2 { + margin-right: 0.5rem !important; + } + .me-sm-3 { + margin-right: 0.75rem !important; + } + .me-sm-4 { + margin-right: 1rem !important; + } + .me-sm-5 { + margin-right: 1.25rem !important; + } + .me-sm-6 { + margin-right: 1.5rem !important; + } + .me-sm-7 { + margin-right: 1.75rem !important; + } + .me-sm-8 { + margin-right: 2rem !important; + } + .me-sm-9 { + margin-right: 2.25rem !important; + } + .me-sm-10 { + margin-right: 2.5rem !important; + } + .me-sm-11 { + margin-right: 2.75rem !important; + } + .me-sm-12 { + margin-right: 3rem !important; + } + .me-sm-13 { + margin-right: 3.25rem !important; + } + .me-sm-14 { + margin-right: 3.5rem !important; + } + .me-sm-15 { + margin-right: 3.75rem !important; + } + .me-sm-16 { + margin-right: 4rem !important; + } + .me-sm-17 { + margin-right: 4.25rem !important; + } + .me-sm-18 { + margin-right: 4.5rem !important; + } + .me-sm-19 { + margin-right: 4.75rem !important; + } + .me-sm-20 { + margin-right: 5rem !important; + } + .me-sm-auto { + margin-right: auto !important; + } + .mb-sm-0 { + margin-bottom: 0 !important; + } + .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + .mb-sm-3 { + margin-bottom: 0.75rem !important; + } + .mb-sm-4 { + margin-bottom: 1rem !important; + } + .mb-sm-5 { + margin-bottom: 1.25rem !important; + } + .mb-sm-6 { + margin-bottom: 1.5rem !important; + } + .mb-sm-7 { + margin-bottom: 1.75rem !important; + } + .mb-sm-8 { + margin-bottom: 2rem !important; + } + .mb-sm-9 { + margin-bottom: 2.25rem !important; + } + .mb-sm-10 { + margin-bottom: 2.5rem !important; + } + .mb-sm-11 { + margin-bottom: 2.75rem !important; + } + .mb-sm-12 { + margin-bottom: 3rem !important; + } + .mb-sm-13 { + margin-bottom: 3.25rem !important; + } + .mb-sm-14 { + margin-bottom: 3.5rem !important; + } + .mb-sm-15 { + margin-bottom: 3.75rem !important; + } + .mb-sm-16 { + margin-bottom: 4rem !important; + } + .mb-sm-17 { + margin-bottom: 4.25rem !important; + } + .mb-sm-18 { + margin-bottom: 4.5rem !important; + } + .mb-sm-19 { + margin-bottom: 4.75rem !important; + } + .mb-sm-20 { + margin-bottom: 5rem !important; + } + .mb-sm-auto { + margin-bottom: auto !important; + } + .ms-sm-0 { + margin-left: 0 !important; + } + .ms-sm-1 { + margin-left: 0.25rem !important; + } + .ms-sm-2 { + margin-left: 0.5rem !important; + } + .ms-sm-3 { + margin-left: 0.75rem !important; + } + .ms-sm-4 { + margin-left: 1rem !important; + } + .ms-sm-5 { + margin-left: 1.25rem !important; + } + .ms-sm-6 { + margin-left: 1.5rem !important; + } + .ms-sm-7 { + margin-left: 1.75rem !important; + } + .ms-sm-8 { + margin-left: 2rem !important; + } + .ms-sm-9 { + margin-left: 2.25rem !important; + } + .ms-sm-10 { + margin-left: 2.5rem !important; + } + .ms-sm-11 { + margin-left: 2.75rem !important; + } + .ms-sm-12 { + margin-left: 3rem !important; + } + .ms-sm-13 { + margin-left: 3.25rem !important; + } + .ms-sm-14 { + margin-left: 3.5rem !important; + } + .ms-sm-15 { + margin-left: 3.75rem !important; + } + .ms-sm-16 { + margin-left: 4rem !important; + } + .ms-sm-17 { + margin-left: 4.25rem !important; + } + .ms-sm-18 { + margin-left: 4.5rem !important; + } + .ms-sm-19 { + margin-left: 4.75rem !important; + } + .ms-sm-20 { + margin-left: 5rem !important; + } + .ms-sm-auto { + margin-left: auto !important; + } + .m-sm-n1 { + margin: -0.25rem !important; + } + .m-sm-n2 { + margin: -0.5rem !important; + } + .m-sm-n3 { + margin: -0.75rem !important; + } + .m-sm-n4 { + margin: -1rem !important; + } + .m-sm-n5 { + margin: -1.25rem !important; + } + .m-sm-n6 { + margin: -1.5rem !important; + } + .m-sm-n7 { + margin: -1.75rem !important; + } + .m-sm-n8 { + margin: -2rem !important; + } + .m-sm-n9 { + margin: -2.25rem !important; + } + .m-sm-n10 { + margin: -2.5rem !important; + } + .m-sm-n11 { + margin: -2.75rem !important; + } + .m-sm-n12 { + margin: -3rem !important; + } + .m-sm-n13 { + margin: -3.25rem !important; + } + .m-sm-n14 { + margin: -3.5rem !important; + } + .m-sm-n15 { + margin: -3.75rem !important; + } + .m-sm-n16 { + margin: -4rem !important; + } + .m-sm-n17 { + margin: -4.25rem !important; + } + .m-sm-n18 { + margin: -4.5rem !important; + } + .m-sm-n19 { + margin: -4.75rem !important; + } + .m-sm-n20 { + margin: -5rem !important; + } + .mx-sm-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; + } + .mx-sm-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; + } + .mx-sm-n3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; + } + .mx-sm-n4 { + margin-right: -1rem !important; + margin-left: -1rem !important; + } + .mx-sm-n5 { + margin-right: -1.25rem !important; + margin-left: -1.25rem !important; + } + .mx-sm-n6 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; + } + .mx-sm-n7 { + margin-right: -1.75rem !important; + margin-left: -1.75rem !important; + } + .mx-sm-n8 { + margin-right: -2rem !important; + margin-left: -2rem !important; + } + .mx-sm-n9 { + margin-right: -2.25rem !important; + margin-left: -2.25rem !important; + } + .mx-sm-n10 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; + } + .mx-sm-n11 { + margin-right: -2.75rem !important; + margin-left: -2.75rem !important; + } + .mx-sm-n12 { + margin-right: -3rem !important; + margin-left: -3rem !important; + } + .mx-sm-n13 { + margin-right: -3.25rem !important; + margin-left: -3.25rem !important; + } + .mx-sm-n14 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; + } + .mx-sm-n15 { + margin-right: -3.75rem !important; + margin-left: -3.75rem !important; + } + .mx-sm-n16 { + margin-right: -4rem !important; + margin-left: -4rem !important; + } + .mx-sm-n17 { + margin-right: -4.25rem !important; + margin-left: -4.25rem !important; + } + .mx-sm-n18 { + margin-right: -4.5rem !important; + margin-left: -4.5rem !important; + } + .mx-sm-n19 { + margin-right: -4.75rem !important; + margin-left: -4.75rem !important; + } + .mx-sm-n20 { + margin-right: -5rem !important; + margin-left: -5rem !important; + } + .my-sm-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; + } + .my-sm-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; + } + .my-sm-n3 { + margin-top: -0.75rem !important; + margin-bottom: -0.75rem !important; + } + .my-sm-n4 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; + } + .my-sm-n5 { + margin-top: -1.25rem !important; + margin-bottom: -1.25rem !important; + } + .my-sm-n6 { + margin-top: -1.5rem !important; + margin-bottom: -1.5rem !important; + } + .my-sm-n7 { + margin-top: -1.75rem !important; + margin-bottom: -1.75rem !important; + } + .my-sm-n8 { + margin-top: -2rem !important; + margin-bottom: -2rem !important; + } + .my-sm-n9 { + margin-top: -2.25rem !important; + margin-bottom: -2.25rem !important; + } + .my-sm-n10 { + margin-top: -2.5rem !important; + margin-bottom: -2.5rem !important; + } + .my-sm-n11 { + margin-top: -2.75rem !important; + margin-bottom: -2.75rem !important; + } + .my-sm-n12 { + margin-top: -3rem !important; + margin-bottom: -3rem !important; + } + .my-sm-n13 { + margin-top: -3.25rem !important; + margin-bottom: -3.25rem !important; + } + .my-sm-n14 { + margin-top: -3.5rem !important; + margin-bottom: -3.5rem !important; + } + .my-sm-n15 { + margin-top: -3.75rem !important; + margin-bottom: -3.75rem !important; + } + .my-sm-n16 { + margin-top: -4rem !important; + margin-bottom: -4rem !important; + } + .my-sm-n17 { + margin-top: -4.25rem !important; + margin-bottom: -4.25rem !important; + } + .my-sm-n18 { + margin-top: -4.5rem !important; + margin-bottom: -4.5rem !important; + } + .my-sm-n19 { + margin-top: -4.75rem !important; + margin-bottom: -4.75rem !important; + } + .my-sm-n20 { + margin-top: -5rem !important; + margin-bottom: -5rem !important; + } + .mt-sm-n1 { + margin-top: -0.25rem !important; + } + .mt-sm-n2 { + margin-top: -0.5rem !important; + } + .mt-sm-n3 { + margin-top: -0.75rem !important; + } + .mt-sm-n4 { + margin-top: -1rem !important; + } + .mt-sm-n5 { + margin-top: -1.25rem !important; + } + .mt-sm-n6 { + margin-top: -1.5rem !important; + } + .mt-sm-n7 { + margin-top: -1.75rem !important; + } + .mt-sm-n8 { + margin-top: -2rem !important; + } + .mt-sm-n9 { + margin-top: -2.25rem !important; + } + .mt-sm-n10 { + margin-top: -2.5rem !important; + } + .mt-sm-n11 { + margin-top: -2.75rem !important; + } + .mt-sm-n12 { + margin-top: -3rem !important; + } + .mt-sm-n13 { + margin-top: -3.25rem !important; + } + .mt-sm-n14 { + margin-top: -3.5rem !important; + } + .mt-sm-n15 { + margin-top: -3.75rem !important; + } + .mt-sm-n16 { + margin-top: -4rem !important; + } + .mt-sm-n17 { + margin-top: -4.25rem !important; + } + .mt-sm-n18 { + margin-top: -4.5rem !important; + } + .mt-sm-n19 { + margin-top: -4.75rem !important; + } + .mt-sm-n20 { + margin-top: -5rem !important; + } + .me-sm-n1 { + margin-right: -0.25rem !important; + } + .me-sm-n2 { + margin-right: -0.5rem !important; + } + .me-sm-n3 { + margin-right: -0.75rem !important; + } + .me-sm-n4 { + margin-right: -1rem !important; + } + .me-sm-n5 { + margin-right: -1.25rem !important; + } + .me-sm-n6 { + margin-right: -1.5rem !important; + } + .me-sm-n7 { + margin-right: -1.75rem !important; + } + .me-sm-n8 { + margin-right: -2rem !important; + } + .me-sm-n9 { + margin-right: -2.25rem !important; + } + .me-sm-n10 { + margin-right: -2.5rem !important; + } + .me-sm-n11 { + margin-right: -2.75rem !important; + } + .me-sm-n12 { + margin-right: -3rem !important; + } + .me-sm-n13 { + margin-right: -3.25rem !important; + } + .me-sm-n14 { + margin-right: -3.5rem !important; + } + .me-sm-n15 { + margin-right: -3.75rem !important; + } + .me-sm-n16 { + margin-right: -4rem !important; + } + .me-sm-n17 { + margin-right: -4.25rem !important; + } + .me-sm-n18 { + margin-right: -4.5rem !important; + } + .me-sm-n19 { + margin-right: -4.75rem !important; + } + .me-sm-n20 { + margin-right: -5rem !important; + } + .mb-sm-n1 { + margin-bottom: -0.25rem !important; + } + .mb-sm-n2 { + margin-bottom: -0.5rem !important; + } + .mb-sm-n3 { + margin-bottom: -0.75rem !important; + } + .mb-sm-n4 { + margin-bottom: -1rem !important; + } + .mb-sm-n5 { + margin-bottom: -1.25rem !important; + } + .mb-sm-n6 { + margin-bottom: -1.5rem !important; + } + .mb-sm-n7 { + margin-bottom: -1.75rem !important; + } + .mb-sm-n8 { + margin-bottom: -2rem !important; + } + .mb-sm-n9 { + margin-bottom: -2.25rem !important; + } + .mb-sm-n10 { + margin-bottom: -2.5rem !important; + } + .mb-sm-n11 { + margin-bottom: -2.75rem !important; + } + .mb-sm-n12 { + margin-bottom: -3rem !important; + } + .mb-sm-n13 { + margin-bottom: -3.25rem !important; + } + .mb-sm-n14 { + margin-bottom: -3.5rem !important; + } + .mb-sm-n15 { + margin-bottom: -3.75rem !important; + } + .mb-sm-n16 { + margin-bottom: -4rem !important; + } + .mb-sm-n17 { + margin-bottom: -4.25rem !important; + } + .mb-sm-n18 { + margin-bottom: -4.5rem !important; + } + .mb-sm-n19 { + margin-bottom: -4.75rem !important; + } + .mb-sm-n20 { + margin-bottom: -5rem !important; + } + .ms-sm-n1 { + margin-left: -0.25rem !important; + } + .ms-sm-n2 { + margin-left: -0.5rem !important; + } + .ms-sm-n3 { + margin-left: -0.75rem !important; + } + .ms-sm-n4 { + margin-left: -1rem !important; + } + .ms-sm-n5 { + margin-left: -1.25rem !important; + } + .ms-sm-n6 { + margin-left: -1.5rem !important; + } + .ms-sm-n7 { + margin-left: -1.75rem !important; + } + .ms-sm-n8 { + margin-left: -2rem !important; + } + .ms-sm-n9 { + margin-left: -2.25rem !important; + } + .ms-sm-n10 { + margin-left: -2.5rem !important; + } + .ms-sm-n11 { + margin-left: -2.75rem !important; + } + .ms-sm-n12 { + margin-left: -3rem !important; + } + .ms-sm-n13 { + margin-left: -3.25rem !important; + } + .ms-sm-n14 { + margin-left: -3.5rem !important; + } + .ms-sm-n15 { + margin-left: -3.75rem !important; + } + .ms-sm-n16 { + margin-left: -4rem !important; + } + .ms-sm-n17 { + margin-left: -4.25rem !important; + } + .ms-sm-n18 { + margin-left: -4.5rem !important; + } + .ms-sm-n19 { + margin-left: -4.75rem !important; + } + .ms-sm-n20 { + margin-left: -5rem !important; + } + .p-sm-0 { + padding: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .p-sm-3 { + padding: 0.75rem !important; + } + .p-sm-4 { + padding: 1rem !important; + } + .p-sm-5 { + padding: 1.25rem !important; + } + .p-sm-6 { + padding: 1.5rem !important; + } + .p-sm-7 { + padding: 1.75rem !important; + } + .p-sm-8 { + padding: 2rem !important; + } + .p-sm-9 { + padding: 2.25rem !important; + } + .p-sm-10 { + padding: 2.5rem !important; + } + .p-sm-11 { + padding: 2.75rem !important; + } + .p-sm-12 { + padding: 3rem !important; + } + .p-sm-13 { + padding: 3.25rem !important; + } + .p-sm-14 { + padding: 3.5rem !important; + } + .p-sm-15 { + padding: 3.75rem !important; + } + .p-sm-16 { + padding: 4rem !important; + } + .p-sm-17 { + padding: 4.25rem !important; + } + .p-sm-18 { + padding: 4.5rem !important; + } + .p-sm-19 { + padding: 4.75rem !important; + } + .p-sm-20 { + padding: 5rem !important; + } + .px-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-sm-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; + } + .px-sm-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-sm-5 { + padding-right: 1.25rem !important; + padding-left: 1.25rem !important; + } + .px-sm-6 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-sm-7 { + padding-right: 1.75rem !important; + padding-left: 1.75rem !important; + } + .px-sm-8 { + padding-right: 2rem !important; + padding-left: 2rem !important; + } + .px-sm-9 { + padding-right: 2.25rem !important; + padding-left: 2.25rem !important; + } + .px-sm-10 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; + } + .px-sm-11 { + padding-right: 2.75rem !important; + padding-left: 2.75rem !important; + } + .px-sm-12 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-sm-13 { + padding-right: 3.25rem !important; + padding-left: 3.25rem !important; + } + .px-sm-14 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; + } + .px-sm-15 { + padding-right: 3.75rem !important; + padding-left: 3.75rem !important; + } + .px-sm-16 { + padding-right: 4rem !important; + padding-left: 4rem !important; + } + .px-sm-17 { + padding-right: 4.25rem !important; + padding-left: 4.25rem !important; + } + .px-sm-18 { + padding-right: 4.5rem !important; + padding-left: 4.5rem !important; + } + .px-sm-19 { + padding-right: 4.75rem !important; + padding-left: 4.75rem !important; + } + .px-sm-20 { + padding-right: 5rem !important; + padding-left: 5rem !important; + } + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-sm-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; + } + .py-sm-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-sm-5 { + padding-top: 1.25rem !important; + padding-bottom: 1.25rem !important; + } + .py-sm-6 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-sm-7 { + padding-top: 1.75rem !important; + padding-bottom: 1.75rem !important; + } + .py-sm-8 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; + } + .py-sm-9 { + padding-top: 2.25rem !important; + padding-bottom: 2.25rem !important; + } + .py-sm-10 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; + } + .py-sm-11 { + padding-top: 2.75rem !important; + padding-bottom: 2.75rem !important; + } + .py-sm-12 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-sm-13 { + padding-top: 3.25rem !important; + padding-bottom: 3.25rem !important; + } + .py-sm-14 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; + } + .py-sm-15 { + padding-top: 3.75rem !important; + padding-bottom: 3.75rem !important; + } + .py-sm-16 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; + } + .py-sm-17 { + padding-top: 4.25rem !important; + padding-bottom: 4.25rem !important; + } + .py-sm-18 { + padding-top: 4.5rem !important; + padding-bottom: 4.5rem !important; + } + .py-sm-19 { + padding-top: 4.75rem !important; + padding-bottom: 4.75rem !important; + } + .py-sm-20 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .pt-sm-0 { + padding-top: 0 !important; + } + .pt-sm-1 { + padding-top: 0.25rem !important; + } + .pt-sm-2 { + padding-top: 0.5rem !important; + } + .pt-sm-3 { + padding-top: 0.75rem !important; + } + .pt-sm-4 { + padding-top: 1rem !important; + } + .pt-sm-5 { + padding-top: 1.25rem !important; + } + .pt-sm-6 { + padding-top: 1.5rem !important; + } + .pt-sm-7 { + padding-top: 1.75rem !important; + } + .pt-sm-8 { + padding-top: 2rem !important; + } + .pt-sm-9 { + padding-top: 2.25rem !important; + } + .pt-sm-10 { + padding-top: 2.5rem !important; + } + .pt-sm-11 { + padding-top: 2.75rem !important; + } + .pt-sm-12 { + padding-top: 3rem !important; + } + .pt-sm-13 { + padding-top: 3.25rem !important; + } + .pt-sm-14 { + padding-top: 3.5rem !important; + } + .pt-sm-15 { + padding-top: 3.75rem !important; + } + .pt-sm-16 { + padding-top: 4rem !important; + } + .pt-sm-17 { + padding-top: 4.25rem !important; + } + .pt-sm-18 { + padding-top: 4.5rem !important; + } + .pt-sm-19 { + padding-top: 4.75rem !important; + } + .pt-sm-20 { + padding-top: 5rem !important; + } + .pe-sm-0 { + padding-right: 0 !important; + } + .pe-sm-1 { + padding-right: 0.25rem !important; + } + .pe-sm-2 { + padding-right: 0.5rem !important; + } + .pe-sm-3 { + padding-right: 0.75rem !important; + } + .pe-sm-4 { + padding-right: 1rem !important; + } + .pe-sm-5 { + padding-right: 1.25rem !important; + } + .pe-sm-6 { + padding-right: 1.5rem !important; + } + .pe-sm-7 { + padding-right: 1.75rem !important; + } + .pe-sm-8 { + padding-right: 2rem !important; + } + .pe-sm-9 { + padding-right: 2.25rem !important; + } + .pe-sm-10 { + padding-right: 2.5rem !important; + } + .pe-sm-11 { + padding-right: 2.75rem !important; + } + .pe-sm-12 { + padding-right: 3rem !important; + } + .pe-sm-13 { + padding-right: 3.25rem !important; + } + .pe-sm-14 { + padding-right: 3.5rem !important; + } + .pe-sm-15 { + padding-right: 3.75rem !important; + } + .pe-sm-16 { + padding-right: 4rem !important; + } + .pe-sm-17 { + padding-right: 4.25rem !important; + } + .pe-sm-18 { + padding-right: 4.5rem !important; + } + .pe-sm-19 { + padding-right: 4.75rem !important; + } + .pe-sm-20 { + padding-right: 5rem !important; + } + .pb-sm-0 { + padding-bottom: 0 !important; + } + .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + .pb-sm-3 { + padding-bottom: 0.75rem !important; + } + .pb-sm-4 { + padding-bottom: 1rem !important; + } + .pb-sm-5 { + padding-bottom: 1.25rem !important; + } + .pb-sm-6 { + padding-bottom: 1.5rem !important; + } + .pb-sm-7 { + padding-bottom: 1.75rem !important; + } + .pb-sm-8 { + padding-bottom: 2rem !important; + } + .pb-sm-9 { + padding-bottom: 2.25rem !important; + } + .pb-sm-10 { + padding-bottom: 2.5rem !important; + } + .pb-sm-11 { + padding-bottom: 2.75rem !important; + } + .pb-sm-12 { + padding-bottom: 3rem !important; + } + .pb-sm-13 { + padding-bottom: 3.25rem !important; + } + .pb-sm-14 { + padding-bottom: 3.5rem !important; + } + .pb-sm-15 { + padding-bottom: 3.75rem !important; + } + .pb-sm-16 { + padding-bottom: 4rem !important; + } + .pb-sm-17 { + padding-bottom: 4.25rem !important; + } + .pb-sm-18 { + padding-bottom: 4.5rem !important; + } + .pb-sm-19 { + padding-bottom: 4.75rem !important; + } + .pb-sm-20 { + padding-bottom: 5rem !important; + } + .ps-sm-0 { + padding-left: 0 !important; + } + .ps-sm-1 { + padding-left: 0.25rem !important; + } + .ps-sm-2 { + padding-left: 0.5rem !important; + } + .ps-sm-3 { + padding-left: 0.75rem !important; + } + .ps-sm-4 { + padding-left: 1rem !important; + } + .ps-sm-5 { + padding-left: 1.25rem !important; + } + .ps-sm-6 { + padding-left: 1.5rem !important; + } + .ps-sm-7 { + padding-left: 1.75rem !important; + } + .ps-sm-8 { + padding-left: 2rem !important; + } + .ps-sm-9 { + padding-left: 2.25rem !important; + } + .ps-sm-10 { + padding-left: 2.5rem !important; + } + .ps-sm-11 { + padding-left: 2.75rem !important; + } + .ps-sm-12 { + padding-left: 3rem !important; + } + .ps-sm-13 { + padding-left: 3.25rem !important; + } + .ps-sm-14 { + padding-left: 3.5rem !important; + } + .ps-sm-15 { + padding-left: 3.75rem !important; + } + .ps-sm-16 { + padding-left: 4rem !important; + } + .ps-sm-17 { + padding-left: 4.25rem !important; + } + .ps-sm-18 { + padding-left: 4.5rem !important; + } + .ps-sm-19 { + padding-left: 4.75rem !important; + } + .ps-sm-20 { + padding-left: 5rem !important; + } + .gap-sm-0 { + gap: 0 !important; + } + .gap-sm-1 { + gap: 0.25rem !important; + } + .gap-sm-2 { + gap: 0.5rem !important; + } + .gap-sm-3 { + gap: 0.75rem !important; + } + .gap-sm-4 { + gap: 1rem !important; + } + .gap-sm-5 { + gap: 1.25rem !important; + } + .gap-sm-6 { + gap: 1.5rem !important; + } + .gap-sm-7 { + gap: 1.75rem !important; + } + .gap-sm-8 { + gap: 2rem !important; + } + .gap-sm-9 { + gap: 2.25rem !important; + } + .gap-sm-10 { + gap: 2.5rem !important; + } + .gap-sm-11 { + gap: 2.75rem !important; + } + .gap-sm-12 { + gap: 3rem !important; + } + .gap-sm-13 { + gap: 3.25rem !important; + } + .gap-sm-14 { + gap: 3.5rem !important; + } + .gap-sm-15 { + gap: 3.75rem !important; + } + .gap-sm-16 { + gap: 4rem !important; + } + .gap-sm-17 { + gap: 4.25rem !important; + } + .gap-sm-18 { + gap: 4.5rem !important; + } + .gap-sm-19 { + gap: 4.75rem !important; + } + .gap-sm-20 { + gap: 5rem !important; + } + .row-gap-sm-0 { + row-gap: 0 !important; + } + .row-gap-sm-1 { + row-gap: 0.25rem !important; + } + .row-gap-sm-2 { + row-gap: 0.5rem !important; + } + .row-gap-sm-3 { + row-gap: 0.75rem !important; + } + .row-gap-sm-4 { + row-gap: 1rem !important; + } + .row-gap-sm-5 { + row-gap: 1.25rem !important; + } + .row-gap-sm-6 { + row-gap: 1.5rem !important; + } + .row-gap-sm-7 { + row-gap: 1.75rem !important; + } + .row-gap-sm-8 { + row-gap: 2rem !important; + } + .row-gap-sm-9 { + row-gap: 2.25rem !important; + } + .row-gap-sm-10 { + row-gap: 2.5rem !important; + } + .row-gap-sm-11 { + row-gap: 2.75rem !important; + } + .row-gap-sm-12 { + row-gap: 3rem !important; + } + .row-gap-sm-13 { + row-gap: 3.25rem !important; + } + .row-gap-sm-14 { + row-gap: 3.5rem !important; + } + .row-gap-sm-15 { + row-gap: 3.75rem !important; + } + .row-gap-sm-16 { + row-gap: 4rem !important; + } + .row-gap-sm-17 { + row-gap: 4.25rem !important; + } + .row-gap-sm-18 { + row-gap: 4.5rem !important; + } + .row-gap-sm-19 { + row-gap: 4.75rem !important; + } + .row-gap-sm-20 { + row-gap: 5rem !important; + } + .column-gap-sm-0 { + column-gap: 0 !important; + } + .column-gap-sm-1 { + column-gap: 0.25rem !important; + } + .column-gap-sm-2 { + column-gap: 0.5rem !important; + } + .column-gap-sm-3 { + column-gap: 0.75rem !important; + } + .column-gap-sm-4 { + column-gap: 1rem !important; + } + .column-gap-sm-5 { + column-gap: 1.25rem !important; + } + .column-gap-sm-6 { + column-gap: 1.5rem !important; + } + .column-gap-sm-7 { + column-gap: 1.75rem !important; + } + .column-gap-sm-8 { + column-gap: 2rem !important; + } + .column-gap-sm-9 { + column-gap: 2.25rem !important; + } + .column-gap-sm-10 { + column-gap: 2.5rem !important; + } + .column-gap-sm-11 { + column-gap: 2.75rem !important; + } + .column-gap-sm-12 { + column-gap: 3rem !important; + } + .column-gap-sm-13 { + column-gap: 3.25rem !important; + } + .column-gap-sm-14 { + column-gap: 3.5rem !important; + } + .column-gap-sm-15 { + column-gap: 3.75rem !important; + } + .column-gap-sm-16 { + column-gap: 4rem !important; + } + .column-gap-sm-17 { + column-gap: 4.25rem !important; + } + .column-gap-sm-18 { + column-gap: 4.5rem !important; + } + .column-gap-sm-19 { + column-gap: 4.75rem !important; + } + .column-gap-sm-20 { + column-gap: 5rem !important; + } + .fs-sm-1 { + font-size: calc(1.3rem + 0.6vw) !important; + } + .fs-sm-2 { + font-size: calc(1.275rem + 0.3vw) !important; + } + .fs-sm-3 { + font-size: calc(1.26rem + 0.12vw) !important; + } + .fs-sm-4 { + font-size: 1.25rem !important; + } + .fs-sm-5 { + font-size: 1.15rem !important; + } + .fs-sm-6 { + font-size: 1.075rem !important; + } + .fs-sm-7 { + font-size: 0.95rem !important; + } + .fs-sm-8 { + font-size: 0.85rem !important; + } + .fs-sm-9 { + font-size: 0.75rem !important; + } + .fs-sm-10 { + font-size: 0.5rem !important; + } + .fs-sm-base { + font-size: 1rem !important; + } + .fs-sm-fluid { + font-size: 100% !important; + } + .fs-sm-2x { + font-size: calc(1.325rem + 0.9vw) !important; + } + .fs-sm-2qx { + font-size: calc(1.35rem + 1.2vw) !important; + } + .fs-sm-2hx { + font-size: calc(1.375rem + 1.5vw) !important; + } + .fs-sm-2tx { + font-size: calc(1.4rem + 1.8vw) !important; + } + .fs-sm-3x { + font-size: calc(1.425rem + 2.1vw) !important; + } + .fs-sm-3qx { + font-size: calc(1.45rem + 2.4vw) !important; + } + .fs-sm-3hx { + font-size: calc(1.475rem + 2.7vw) !important; + } + .fs-sm-3tx { + font-size: calc(1.5rem + 3vw) !important; + } + .fs-sm-4x { + font-size: calc(1.525rem + 3.3vw) !important; + } + .fs-sm-4qx { + font-size: calc(1.55rem + 3.6vw) !important; + } + .fs-sm-4hx { + font-size: calc(1.575rem + 3.9vw) !important; + } + .fs-sm-4tx { + font-size: calc(1.6rem + 4.2vw) !important; + } + .fs-sm-5x { + font-size: calc(1.625rem + 4.5vw) !important; + } + .fs-sm-5qx { + font-size: calc(1.65rem + 4.8vw) !important; + } + .fs-sm-5hx { + font-size: calc(1.675rem + 5.1vw) !important; + } + .fs-sm-5tx { + font-size: calc(1.7rem + 5.4vw) !important; + } + .text-sm-start { + text-align: left !important; + } + .text-sm-end { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } + .min-w-sm-unset { + min-width: unset !important; + } + .min-w-sm-25 { + min-width: 25% !important; + } + .min-w-sm-50 { + min-width: 50% !important; + } + .min-w-sm-75 { + min-width: 75% !important; + } + .min-w-sm-100 { + min-width: 100% !important; + } + .min-w-sm-auto { + min-width: auto !important; + } + .min-w-sm-1px { + min-width: 1px !important; + } + .min-w-sm-2px { + min-width: 2px !important; + } + .min-w-sm-3px { + min-width: 3px !important; + } + .min-w-sm-4px { + min-width: 4px !important; + } + .min-w-sm-5px { + min-width: 5px !important; + } + .min-w-sm-6px { + min-width: 6px !important; + } + .min-w-sm-7px { + min-width: 7px !important; + } + .min-w-sm-8px { + min-width: 8px !important; + } + .min-w-sm-9px { + min-width: 9px !important; + } + .min-w-sm-10px { + min-width: 10px !important; + } + .min-w-sm-15px { + min-width: 15px !important; + } + .min-w-sm-20px { + min-width: 20px !important; + } + .min-w-sm-25px { + min-width: 25px !important; + } + .min-w-sm-30px { + min-width: 30px !important; + } + .min-w-sm-35px { + min-width: 35px !important; + } + .min-w-sm-40px { + min-width: 40px !important; + } + .min-w-sm-45px { + min-width: 45px !important; + } + .min-w-sm-50px { + min-width: 50px !important; + } + .min-w-sm-55px { + min-width: 55px !important; + } + .min-w-sm-60px { + min-width: 60px !important; + } + .min-w-sm-65px { + min-width: 65px !important; + } + .min-w-sm-70px { + min-width: 70px !important; + } + .min-w-sm-75px { + min-width: 75px !important; + } + .min-w-sm-80px { + min-width: 80px !important; + } + .min-w-sm-85px { + min-width: 85px !important; + } + .min-w-sm-90px { + min-width: 90px !important; + } + .min-w-sm-95px { + min-width: 95px !important; + } + .min-w-sm-100px { + min-width: 100px !important; + } + .min-w-sm-125px { + min-width: 125px !important; + } + .min-w-sm-150px { + min-width: 150px !important; + } + .min-w-sm-175px { + min-width: 175px !important; + } + .min-w-sm-200px { + min-width: 200px !important; + } + .min-w-sm-225px { + min-width: 225px !important; + } + .min-w-sm-250px { + min-width: 250px !important; + } + .min-w-sm-275px { + min-width: 275px !important; + } + .min-w-sm-300px { + min-width: 300px !important; + } + .min-w-sm-325px { + min-width: 325px !important; + } + .min-w-sm-350px { + min-width: 350px !important; + } + .min-w-sm-375px { + min-width: 375px !important; + } + .min-w-sm-400px { + min-width: 400px !important; + } + .min-w-sm-425px { + min-width: 425px !important; + } + .min-w-sm-450px { + min-width: 450px !important; + } + .min-w-sm-475px { + min-width: 475px !important; + } + .min-w-sm-500px { + min-width: 500px !important; + } + .min-w-sm-550px { + min-width: 550px !important; + } + .min-w-sm-600px { + min-width: 600px !important; + } + .min-w-sm-650px { + min-width: 650px !important; + } + .min-w-sm-700px { + min-width: 700px !important; + } + .min-w-sm-750px { + min-width: 750px !important; + } + .min-w-sm-800px { + min-width: 800px !important; + } + .min-w-sm-850px { + min-width: 850px !important; + } + .min-w-sm-900px { + min-width: 900px !important; + } + .min-w-sm-950px { + min-width: 950px !important; + } + .min-w-sm-1000px { + min-width: 1000px !important; + } + .min-h-sm-unset { + min-height: unset !important; + } + .min-h-sm-25 { + min-height: 25% !important; + } + .min-h-sm-50 { + min-height: 50% !important; + } + .min-h-sm-75 { + min-height: 75% !important; + } + .min-h-sm-100 { + min-height: 100% !important; + } + .min-h-sm-auto { + min-height: auto !important; + } + .min-h-sm-1px { + min-height: 1px !important; + } + .min-h-sm-2px { + min-height: 2px !important; + } + .min-h-sm-3px { + min-height: 3px !important; + } + .min-h-sm-4px { + min-height: 4px !important; + } + .min-h-sm-5px { + min-height: 5px !important; + } + .min-h-sm-6px { + min-height: 6px !important; + } + .min-h-sm-7px { + min-height: 7px !important; + } + .min-h-sm-8px { + min-height: 8px !important; + } + .min-h-sm-9px { + min-height: 9px !important; + } + .min-h-sm-10px { + min-height: 10px !important; + } + .min-h-sm-15px { + min-height: 15px !important; + } + .min-h-sm-20px { + min-height: 20px !important; + } + .min-h-sm-25px { + min-height: 25px !important; + } + .min-h-sm-30px { + min-height: 30px !important; + } + .min-h-sm-35px { + min-height: 35px !important; + } + .min-h-sm-40px { + min-height: 40px !important; + } + .min-h-sm-45px { + min-height: 45px !important; + } + .min-h-sm-50px { + min-height: 50px !important; + } + .min-h-sm-55px { + min-height: 55px !important; + } + .min-h-sm-60px { + min-height: 60px !important; + } + .min-h-sm-65px { + min-height: 65px !important; + } + .min-h-sm-70px { + min-height: 70px !important; + } + .min-h-sm-75px { + min-height: 75px !important; + } + .min-h-sm-80px { + min-height: 80px !important; + } + .min-h-sm-85px { + min-height: 85px !important; + } + .min-h-sm-90px { + min-height: 90px !important; + } + .min-h-sm-95px { + min-height: 95px !important; + } + .min-h-sm-100px { + min-height: 100px !important; + } + .min-h-sm-125px { + min-height: 125px !important; + } + .min-h-sm-150px { + min-height: 150px !important; + } + .min-h-sm-175px { + min-height: 175px !important; + } + .min-h-sm-200px { + min-height: 200px !important; + } + .min-h-sm-225px { + min-height: 225px !important; + } + .min-h-sm-250px { + min-height: 250px !important; + } + .min-h-sm-275px { + min-height: 275px !important; + } + .min-h-sm-300px { + min-height: 300px !important; + } + .min-h-sm-325px { + min-height: 325px !important; + } + .min-h-sm-350px { + min-height: 350px !important; + } + .min-h-sm-375px { + min-height: 375px !important; + } + .min-h-sm-400px { + min-height: 400px !important; + } + .min-h-sm-425px { + min-height: 425px !important; + } + .min-h-sm-450px { + min-height: 450px !important; + } + .min-h-sm-475px { + min-height: 475px !important; + } + .min-h-sm-500px { + min-height: 500px !important; + } + .min-h-sm-550px { + min-height: 550px !important; + } + .min-h-sm-600px { + min-height: 600px !important; + } + .min-h-sm-650px { + min-height: 650px !important; + } + .min-h-sm-700px { + min-height: 700px !important; + } + .min-h-sm-750px { + min-height: 750px !important; + } + .min-h-sm-800px { + min-height: 800px !important; + } + .min-h-sm-850px { + min-height: 850px !important; + } + .min-h-sm-900px { + min-height: 900px !important; + } + .min-h-sm-950px { + min-height: 950px !important; + } + .min-h-sm-1000px { + min-height: 1000px !important; + } +} +@media (min-width: 768px) { + .float-md-start { + float: left !important; + } + .float-md-end { + float: right !important; + } + .float-md-none { + float: none !important; + } + .object-fit-md-contain { + object-fit: contain !important; + } + .object-fit-md-cover { + object-fit: cover !important; + } + .object-fit-md-fill { + object-fit: fill !important; + } + .object-fit-md-scale { + object-fit: scale-down !important; + } + .object-fit-md-none { + object-fit: none !important; + } + .overflow-md-auto { + overflow: auto !important; + } + .overflow-md-hidden { + overflow: hidden !important; + } + .overflow-md-visible { + overflow: visible !important; + } + .overflow-md-scroll { + overflow: scroll !important; + } + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-grid { + display: grid !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: flex !important; + } + .d-md-inline-flex { + display: inline-flex !important; + } + .d-md-none { + display: none !important; + } + .position-md-static { + position: static !important; + } + .position-md-relative { + position: relative !important; + } + .position-md-absolute { + position: absolute !important; + } + .position-md-fixed { + position: fixed !important; + } + .position-md-sticky { + position: sticky !important; + } + .w-md-unset { + width: unset !important; + } + .w-md-25 { + width: 25% !important; + } + .w-md-50 { + width: 50% !important; + } + .w-md-75 { + width: 75% !important; + } + .w-md-100 { + width: 100% !important; + } + .w-md-auto { + width: auto !important; + } + .w-md-1px { + width: 1px !important; + } + .w-md-2px { + width: 2px !important; + } + .w-md-3px { + width: 3px !important; + } + .w-md-4px { + width: 4px !important; + } + .w-md-5px { + width: 5px !important; + } + .w-md-6px { + width: 6px !important; + } + .w-md-7px { + width: 7px !important; + } + .w-md-8px { + width: 8px !important; + } + .w-md-9px { + width: 9px !important; + } + .w-md-10px { + width: 10px !important; + } + .w-md-15px { + width: 15px !important; + } + .w-md-20px { + width: 20px !important; + } + .w-md-25px { + width: 25px !important; + } + .w-md-30px { + width: 30px !important; + } + .w-md-35px { + width: 35px !important; + } + .w-md-40px { + width: 40px !important; + } + .w-md-45px { + width: 45px !important; + } + .w-md-50px { + width: 50px !important; + } + .w-md-55px { + width: 55px !important; + } + .w-md-60px { + width: 60px !important; + } + .w-md-65px { + width: 65px !important; + } + .w-md-70px { + width: 70px !important; + } + .w-md-75px { + width: 75px !important; + } + .w-md-80px { + width: 80px !important; + } + .w-md-85px { + width: 85px !important; + } + .w-md-90px { + width: 90px !important; + } + .w-md-95px { + width: 95px !important; + } + .w-md-100px { + width: 100px !important; + } + .w-md-125px { + width: 125px !important; + } + .w-md-150px { + width: 150px !important; + } + .w-md-175px { + width: 175px !important; + } + .w-md-200px { + width: 200px !important; + } + .w-md-225px { + width: 225px !important; + } + .w-md-250px { + width: 250px !important; + } + .w-md-275px { + width: 275px !important; + } + .w-md-300px { + width: 300px !important; + } + .w-md-325px { + width: 325px !important; + } + .w-md-350px { + width: 350px !important; + } + .w-md-375px { + width: 375px !important; + } + .w-md-400px { + width: 400px !important; + } + .w-md-425px { + width: 425px !important; + } + .w-md-450px { + width: 450px !important; + } + .w-md-475px { + width: 475px !important; + } + .w-md-500px { + width: 500px !important; + } + .w-md-550px { + width: 550px !important; + } + .w-md-600px { + width: 600px !important; + } + .w-md-650px { + width: 650px !important; + } + .w-md-700px { + width: 700px !important; + } + .w-md-750px { + width: 750px !important; + } + .w-md-800px { + width: 800px !important; + } + .w-md-850px { + width: 850px !important; + } + .w-md-900px { + width: 900px !important; + } + .w-md-950px { + width: 950px !important; + } + .w-md-1000px { + width: 1000px !important; + } + .mw-md-unset { + max-width: unset !important; + } + .mw-md-25 { + max-width: 25% !important; + } + .mw-md-50 { + max-width: 50% !important; + } + .mw-md-75 { + max-width: 75% !important; + } + .mw-md-100 { + max-width: 100% !important; + } + .mw-md-auto { + max-width: auto !important; + } + .mw-md-1px { + max-width: 1px !important; + } + .mw-md-2px { + max-width: 2px !important; + } + .mw-md-3px { + max-width: 3px !important; + } + .mw-md-4px { + max-width: 4px !important; + } + .mw-md-5px { + max-width: 5px !important; + } + .mw-md-6px { + max-width: 6px !important; + } + .mw-md-7px { + max-width: 7px !important; + } + .mw-md-8px { + max-width: 8px !important; + } + .mw-md-9px { + max-width: 9px !important; + } + .mw-md-10px { + max-width: 10px !important; + } + .mw-md-15px { + max-width: 15px !important; + } + .mw-md-20px { + max-width: 20px !important; + } + .mw-md-25px { + max-width: 25px !important; + } + .mw-md-30px { + max-width: 30px !important; + } + .mw-md-35px { + max-width: 35px !important; + } + .mw-md-40px { + max-width: 40px !important; + } + .mw-md-45px { + max-width: 45px !important; + } + .mw-md-50px { + max-width: 50px !important; + } + .mw-md-55px { + max-width: 55px !important; + } + .mw-md-60px { + max-width: 60px !important; + } + .mw-md-65px { + max-width: 65px !important; + } + .mw-md-70px { + max-width: 70px !important; + } + .mw-md-75px { + max-width: 75px !important; + } + .mw-md-80px { + max-width: 80px !important; + } + .mw-md-85px { + max-width: 85px !important; + } + .mw-md-90px { + max-width: 90px !important; + } + .mw-md-95px { + max-width: 95px !important; + } + .mw-md-100px { + max-width: 100px !important; + } + .mw-md-125px { + max-width: 125px !important; + } + .mw-md-150px { + max-width: 150px !important; + } + .mw-md-175px { + max-width: 175px !important; + } + .mw-md-200px { + max-width: 200px !important; + } + .mw-md-225px { + max-width: 225px !important; + } + .mw-md-250px { + max-width: 250px !important; + } + .mw-md-275px { + max-width: 275px !important; + } + .mw-md-300px { + max-width: 300px !important; + } + .mw-md-325px { + max-width: 325px !important; + } + .mw-md-350px { + max-width: 350px !important; + } + .mw-md-375px { + max-width: 375px !important; + } + .mw-md-400px { + max-width: 400px !important; + } + .mw-md-425px { + max-width: 425px !important; + } + .mw-md-450px { + max-width: 450px !important; + } + .mw-md-475px { + max-width: 475px !important; + } + .mw-md-500px { + max-width: 500px !important; + } + .mw-md-550px { + max-width: 550px !important; + } + .mw-md-600px { + max-width: 600px !important; + } + .mw-md-650px { + max-width: 650px !important; + } + .mw-md-700px { + max-width: 700px !important; + } + .mw-md-750px { + max-width: 750px !important; + } + .mw-md-800px { + max-width: 800px !important; + } + .mw-md-850px { + max-width: 850px !important; + } + .mw-md-900px { + max-width: 900px !important; + } + .mw-md-950px { + max-width: 950px !important; + } + .mw-md-1000px { + max-width: 1000px !important; + } + .h-md-unset { + height: unset !important; + } + .h-md-25 { + height: 25% !important; + } + .h-md-50 { + height: 50% !important; + } + .h-md-75 { + height: 75% !important; + } + .h-md-100 { + height: 100% !important; + } + .h-md-auto { + height: auto !important; + } + .h-md-1px { + height: 1px !important; + } + .h-md-2px { + height: 2px !important; + } + .h-md-3px { + height: 3px !important; + } + .h-md-4px { + height: 4px !important; + } + .h-md-5px { + height: 5px !important; + } + .h-md-6px { + height: 6px !important; + } + .h-md-7px { + height: 7px !important; + } + .h-md-8px { + height: 8px !important; + } + .h-md-9px { + height: 9px !important; + } + .h-md-10px { + height: 10px !important; + } + .h-md-15px { + height: 15px !important; + } + .h-md-20px { + height: 20px !important; + } + .h-md-25px { + height: 25px !important; + } + .h-md-30px { + height: 30px !important; + } + .h-md-35px { + height: 35px !important; + } + .h-md-40px { + height: 40px !important; + } + .h-md-45px { + height: 45px !important; + } + .h-md-50px { + height: 50px !important; + } + .h-md-55px { + height: 55px !important; + } + .h-md-60px { + height: 60px !important; + } + .h-md-65px { + height: 65px !important; + } + .h-md-70px { + height: 70px !important; + } + .h-md-75px { + height: 75px !important; + } + .h-md-80px { + height: 80px !important; + } + .h-md-85px { + height: 85px !important; + } + .h-md-90px { + height: 90px !important; + } + .h-md-95px { + height: 95px !important; + } + .h-md-100px { + height: 100px !important; + } + .h-md-125px { + height: 125px !important; + } + .h-md-150px { + height: 150px !important; + } + .h-md-175px { + height: 175px !important; + } + .h-md-200px { + height: 200px !important; + } + .h-md-225px { + height: 225px !important; + } + .h-md-250px { + height: 250px !important; + } + .h-md-275px { + height: 275px !important; + } + .h-md-300px { + height: 300px !important; + } + .h-md-325px { + height: 325px !important; + } + .h-md-350px { + height: 350px !important; + } + .h-md-375px { + height: 375px !important; + } + .h-md-400px { + height: 400px !important; + } + .h-md-425px { + height: 425px !important; + } + .h-md-450px { + height: 450px !important; + } + .h-md-475px { + height: 475px !important; + } + .h-md-500px { + height: 500px !important; + } + .h-md-550px { + height: 550px !important; + } + .h-md-600px { + height: 600px !important; + } + .h-md-650px { + height: 650px !important; + } + .h-md-700px { + height: 700px !important; + } + .h-md-750px { + height: 750px !important; + } + .h-md-800px { + height: 800px !important; + } + .h-md-850px { + height: 850px !important; + } + .h-md-900px { + height: 900px !important; + } + .h-md-950px { + height: 950px !important; + } + .h-md-1000px { + height: 1000px !important; + } + .mh-md-unset { + max-height: unset !important; + } + .mh-md-25 { + max-height: 25% !important; + } + .mh-md-50 { + max-height: 50% !important; + } + .mh-md-75 { + max-height: 75% !important; + } + .mh-md-100 { + max-height: 100% !important; + } + .mh-md-auto { + max-height: auto !important; + } + .mh-md-1px { + max-height: 1px !important; + } + .mh-md-2px { + max-height: 2px !important; + } + .mh-md-3px { + max-height: 3px !important; + } + .mh-md-4px { + max-height: 4px !important; + } + .mh-md-5px { + max-height: 5px !important; + } + .mh-md-6px { + max-height: 6px !important; + } + .mh-md-7px { + max-height: 7px !important; + } + .mh-md-8px { + max-height: 8px !important; + } + .mh-md-9px { + max-height: 9px !important; + } + .mh-md-10px { + max-height: 10px !important; + } + .mh-md-15px { + max-height: 15px !important; + } + .mh-md-20px { + max-height: 20px !important; + } + .mh-md-25px { + max-height: 25px !important; + } + .mh-md-30px { + max-height: 30px !important; + } + .mh-md-35px { + max-height: 35px !important; + } + .mh-md-40px { + max-height: 40px !important; + } + .mh-md-45px { + max-height: 45px !important; + } + .mh-md-50px { + max-height: 50px !important; + } + .mh-md-55px { + max-height: 55px !important; + } + .mh-md-60px { + max-height: 60px !important; + } + .mh-md-65px { + max-height: 65px !important; + } + .mh-md-70px { + max-height: 70px !important; + } + .mh-md-75px { + max-height: 75px !important; + } + .mh-md-80px { + max-height: 80px !important; + } + .mh-md-85px { + max-height: 85px !important; + } + .mh-md-90px { + max-height: 90px !important; + } + .mh-md-95px { + max-height: 95px !important; + } + .mh-md-100px { + max-height: 100px !important; + } + .mh-md-125px { + max-height: 125px !important; + } + .mh-md-150px { + max-height: 150px !important; + } + .mh-md-175px { + max-height: 175px !important; + } + .mh-md-200px { + max-height: 200px !important; + } + .mh-md-225px { + max-height: 225px !important; + } + .mh-md-250px { + max-height: 250px !important; + } + .mh-md-275px { + max-height: 275px !important; + } + .mh-md-300px { + max-height: 300px !important; + } + .mh-md-325px { + max-height: 325px !important; + } + .mh-md-350px { + max-height: 350px !important; + } + .mh-md-375px { + max-height: 375px !important; + } + .mh-md-400px { + max-height: 400px !important; + } + .mh-md-425px { + max-height: 425px !important; + } + .mh-md-450px { + max-height: 450px !important; + } + .mh-md-475px { + max-height: 475px !important; + } + .mh-md-500px { + max-height: 500px !important; + } + .mh-md-550px { + max-height: 550px !important; + } + .mh-md-600px { + max-height: 600px !important; + } + .mh-md-650px { + max-height: 650px !important; + } + .mh-md-700px { + max-height: 700px !important; + } + .mh-md-750px { + max-height: 750px !important; + } + .mh-md-800px { + max-height: 800px !important; + } + .mh-md-850px { + max-height: 850px !important; + } + .mh-md-900px { + max-height: 900px !important; + } + .mh-md-950px { + max-height: 950px !important; + } + .mh-md-1000px { + max-height: 1000px !important; + } + .flex-md-fill { + flex: 1 1 auto !important; + } + .flex-md-row { + flex-direction: row !important; + } + .flex-md-column { + flex-direction: column !important; + } + .flex-md-row-reverse { + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + flex-direction: column-reverse !important; + } + .flex-md-grow-0 { + flex-grow: 0 !important; + } + .flex-md-grow-1 { + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + flex-shrink: 1 !important; + } + .flex-md-wrap { + flex-wrap: wrap !important; + } + .flex-md-nowrap { + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-md-start { + justify-content: flex-start !important; + } + .justify-content-md-end { + justify-content: flex-end !important; + } + .justify-content-md-center { + justify-content: center !important; + } + .justify-content-md-between { + justify-content: space-between !important; + } + .justify-content-md-around { + justify-content: space-around !important; + } + .justify-content-md-evenly { + justify-content: space-evenly !important; + } + .align-items-md-start { + align-items: flex-start !important; + } + .align-items-md-end { + align-items: flex-end !important; + } + .align-items-md-center { + align-items: center !important; + } + .align-items-md-baseline { + align-items: baseline !important; + } + .align-items-md-stretch { + align-items: stretch !important; + } + .align-content-md-start { + align-content: flex-start !important; + } + .align-content-md-end { + align-content: flex-end !important; + } + .align-content-md-center { + align-content: center !important; + } + .align-content-md-between { + align-content: space-between !important; + } + .align-content-md-around { + align-content: space-around !important; + } + .align-content-md-stretch { + align-content: stretch !important; + } + .align-self-md-auto { + align-self: auto !important; + } + .align-self-md-start { + align-self: flex-start !important; + } + .align-self-md-end { + align-self: flex-end !important; + } + .align-self-md-center { + align-self: center !important; + } + .align-self-md-baseline { + align-self: baseline !important; + } + .align-self-md-stretch { + align-self: stretch !important; + } + .order-md-first { + order: -1 !important; + } + .order-md-0 { + order: 0 !important; + } + .order-md-1 { + order: 1 !important; + } + .order-md-2 { + order: 2 !important; + } + .order-md-3 { + order: 3 !important; + } + .order-md-4 { + order: 4 !important; + } + .order-md-5 { + order: 5 !important; + } + .order-md-last { + order: 6 !important; + } + .m-md-0 { + margin: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .m-md-3 { + margin: 0.75rem !important; + } + .m-md-4 { + margin: 1rem !important; + } + .m-md-5 { + margin: 1.25rem !important; + } + .m-md-6 { + margin: 1.5rem !important; + } + .m-md-7 { + margin: 1.75rem !important; + } + .m-md-8 { + margin: 2rem !important; + } + .m-md-9 { + margin: 2.25rem !important; + } + .m-md-10 { + margin: 2.5rem !important; + } + .m-md-11 { + margin: 2.75rem !important; + } + .m-md-12 { + margin: 3rem !important; + } + .m-md-13 { + margin: 3.25rem !important; + } + .m-md-14 { + margin: 3.5rem !important; + } + .m-md-15 { + margin: 3.75rem !important; + } + .m-md-16 { + margin: 4rem !important; + } + .m-md-17 { + margin: 4.25rem !important; + } + .m-md-18 { + margin: 4.5rem !important; + } + .m-md-19 { + margin: 4.75rem !important; + } + .m-md-20 { + margin: 5rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mx-md-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-md-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-md-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; + } + .mx-md-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-md-5 { + margin-right: 1.25rem !important; + margin-left: 1.25rem !important; + } + .mx-md-6 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-md-7 { + margin-right: 1.75rem !important; + margin-left: 1.75rem !important; + } + .mx-md-8 { + margin-right: 2rem !important; + margin-left: 2rem !important; + } + .mx-md-9 { + margin-right: 2.25rem !important; + margin-left: 2.25rem !important; + } + .mx-md-10 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; + } + .mx-md-11 { + margin-right: 2.75rem !important; + margin-left: 2.75rem !important; + } + .mx-md-12 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-md-13 { + margin-right: 3.25rem !important; + margin-left: 3.25rem !important; + } + .mx-md-14 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; + } + .mx-md-15 { + margin-right: 3.75rem !important; + margin-left: 3.75rem !important; + } + .mx-md-16 { + margin-right: 4rem !important; + margin-left: 4rem !important; + } + .mx-md-17 { + margin-right: 4.25rem !important; + margin-left: 4.25rem !important; + } + .mx-md-18 { + margin-right: 4.5rem !important; + margin-left: 4.5rem !important; + } + .mx-md-19 { + margin-right: 4.75rem !important; + margin-left: 4.75rem !important; + } + .mx-md-20 { + margin-right: 5rem !important; + margin-left: 5rem !important; + } + .mx-md-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-md-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; + } + .my-md-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-md-5 { + margin-top: 1.25rem !important; + margin-bottom: 1.25rem !important; + } + .my-md-6 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-md-7 { + margin-top: 1.75rem !important; + margin-bottom: 1.75rem !important; + } + .my-md-8 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; + } + .my-md-9 { + margin-top: 2.25rem !important; + margin-bottom: 2.25rem !important; + } + .my-md-10 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; + } + .my-md-11 { + margin-top: 2.75rem !important; + margin-bottom: 2.75rem !important; + } + .my-md-12 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-md-13 { + margin-top: 3.25rem !important; + margin-bottom: 3.25rem !important; + } + .my-md-14 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; + } + .my-md-15 { + margin-top: 3.75rem !important; + margin-bottom: 3.75rem !important; + } + .my-md-16 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; + } + .my-md-17 { + margin-top: 4.25rem !important; + margin-bottom: 4.25rem !important; + } + .my-md-18 { + margin-top: 4.5rem !important; + margin-bottom: 4.5rem !important; + } + .my-md-19 { + margin-top: 4.75rem !important; + margin-bottom: 4.75rem !important; + } + .my-md-20 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-md-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-md-0 { + margin-top: 0 !important; + } + .mt-md-1 { + margin-top: 0.25rem !important; + } + .mt-md-2 { + margin-top: 0.5rem !important; + } + .mt-md-3 { + margin-top: 0.75rem !important; + } + .mt-md-4 { + margin-top: 1rem !important; + } + .mt-md-5 { + margin-top: 1.25rem !important; + } + .mt-md-6 { + margin-top: 1.5rem !important; + } + .mt-md-7 { + margin-top: 1.75rem !important; + } + .mt-md-8 { + margin-top: 2rem !important; + } + .mt-md-9 { + margin-top: 2.25rem !important; + } + .mt-md-10 { + margin-top: 2.5rem !important; + } + .mt-md-11 { + margin-top: 2.75rem !important; + } + .mt-md-12 { + margin-top: 3rem !important; + } + .mt-md-13 { + margin-top: 3.25rem !important; + } + .mt-md-14 { + margin-top: 3.5rem !important; + } + .mt-md-15 { + margin-top: 3.75rem !important; + } + .mt-md-16 { + margin-top: 4rem !important; + } + .mt-md-17 { + margin-top: 4.25rem !important; + } + .mt-md-18 { + margin-top: 4.5rem !important; + } + .mt-md-19 { + margin-top: 4.75rem !important; + } + .mt-md-20 { + margin-top: 5rem !important; + } + .mt-md-auto { + margin-top: auto !important; + } + .me-md-0 { + margin-right: 0 !important; + } + .me-md-1 { + margin-right: 0.25rem !important; + } + .me-md-2 { + margin-right: 0.5rem !important; + } + .me-md-3 { + margin-right: 0.75rem !important; + } + .me-md-4 { + margin-right: 1rem !important; + } + .me-md-5 { + margin-right: 1.25rem !important; + } + .me-md-6 { + margin-right: 1.5rem !important; + } + .me-md-7 { + margin-right: 1.75rem !important; + } + .me-md-8 { + margin-right: 2rem !important; + } + .me-md-9 { + margin-right: 2.25rem !important; + } + .me-md-10 { + margin-right: 2.5rem !important; + } + .me-md-11 { + margin-right: 2.75rem !important; + } + .me-md-12 { + margin-right: 3rem !important; + } + .me-md-13 { + margin-right: 3.25rem !important; + } + .me-md-14 { + margin-right: 3.5rem !important; + } + .me-md-15 { + margin-right: 3.75rem !important; + } + .me-md-16 { + margin-right: 4rem !important; + } + .me-md-17 { + margin-right: 4.25rem !important; + } + .me-md-18 { + margin-right: 4.5rem !important; + } + .me-md-19 { + margin-right: 4.75rem !important; + } + .me-md-20 { + margin-right: 5rem !important; + } + .me-md-auto { + margin-right: auto !important; + } + .mb-md-0 { + margin-bottom: 0 !important; + } + .mb-md-1 { + margin-bottom: 0.25rem !important; + } + .mb-md-2 { + margin-bottom: 0.5rem !important; + } + .mb-md-3 { + margin-bottom: 0.75rem !important; + } + .mb-md-4 { + margin-bottom: 1rem !important; + } + .mb-md-5 { + margin-bottom: 1.25rem !important; + } + .mb-md-6 { + margin-bottom: 1.5rem !important; + } + .mb-md-7 { + margin-bottom: 1.75rem !important; + } + .mb-md-8 { + margin-bottom: 2rem !important; + } + .mb-md-9 { + margin-bottom: 2.25rem !important; + } + .mb-md-10 { + margin-bottom: 2.5rem !important; + } + .mb-md-11 { + margin-bottom: 2.75rem !important; + } + .mb-md-12 { + margin-bottom: 3rem !important; + } + .mb-md-13 { + margin-bottom: 3.25rem !important; + } + .mb-md-14 { + margin-bottom: 3.5rem !important; + } + .mb-md-15 { + margin-bottom: 3.75rem !important; + } + .mb-md-16 { + margin-bottom: 4rem !important; + } + .mb-md-17 { + margin-bottom: 4.25rem !important; + } + .mb-md-18 { + margin-bottom: 4.5rem !important; + } + .mb-md-19 { + margin-bottom: 4.75rem !important; + } + .mb-md-20 { + margin-bottom: 5rem !important; + } + .mb-md-auto { + margin-bottom: auto !important; + } + .ms-md-0 { + margin-left: 0 !important; + } + .ms-md-1 { + margin-left: 0.25rem !important; + } + .ms-md-2 { + margin-left: 0.5rem !important; + } + .ms-md-3 { + margin-left: 0.75rem !important; + } + .ms-md-4 { + margin-left: 1rem !important; + } + .ms-md-5 { + margin-left: 1.25rem !important; + } + .ms-md-6 { + margin-left: 1.5rem !important; + } + .ms-md-7 { + margin-left: 1.75rem !important; + } + .ms-md-8 { + margin-left: 2rem !important; + } + .ms-md-9 { + margin-left: 2.25rem !important; + } + .ms-md-10 { + margin-left: 2.5rem !important; + } + .ms-md-11 { + margin-left: 2.75rem !important; + } + .ms-md-12 { + margin-left: 3rem !important; + } + .ms-md-13 { + margin-left: 3.25rem !important; + } + .ms-md-14 { + margin-left: 3.5rem !important; + } + .ms-md-15 { + margin-left: 3.75rem !important; + } + .ms-md-16 { + margin-left: 4rem !important; + } + .ms-md-17 { + margin-left: 4.25rem !important; + } + .ms-md-18 { + margin-left: 4.5rem !important; + } + .ms-md-19 { + margin-left: 4.75rem !important; + } + .ms-md-20 { + margin-left: 5rem !important; + } + .ms-md-auto { + margin-left: auto !important; + } + .m-md-n1 { + margin: -0.25rem !important; + } + .m-md-n2 { + margin: -0.5rem !important; + } + .m-md-n3 { + margin: -0.75rem !important; + } + .m-md-n4 { + margin: -1rem !important; + } + .m-md-n5 { + margin: -1.25rem !important; + } + .m-md-n6 { + margin: -1.5rem !important; + } + .m-md-n7 { + margin: -1.75rem !important; + } + .m-md-n8 { + margin: -2rem !important; + } + .m-md-n9 { + margin: -2.25rem !important; + } + .m-md-n10 { + margin: -2.5rem !important; + } + .m-md-n11 { + margin: -2.75rem !important; + } + .m-md-n12 { + margin: -3rem !important; + } + .m-md-n13 { + margin: -3.25rem !important; + } + .m-md-n14 { + margin: -3.5rem !important; + } + .m-md-n15 { + margin: -3.75rem !important; + } + .m-md-n16 { + margin: -4rem !important; + } + .m-md-n17 { + margin: -4.25rem !important; + } + .m-md-n18 { + margin: -4.5rem !important; + } + .m-md-n19 { + margin: -4.75rem !important; + } + .m-md-n20 { + margin: -5rem !important; + } + .mx-md-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; + } + .mx-md-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; + } + .mx-md-n3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; + } + .mx-md-n4 { + margin-right: -1rem !important; + margin-left: -1rem !important; + } + .mx-md-n5 { + margin-right: -1.25rem !important; + margin-left: -1.25rem !important; + } + .mx-md-n6 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; + } + .mx-md-n7 { + margin-right: -1.75rem !important; + margin-left: -1.75rem !important; + } + .mx-md-n8 { + margin-right: -2rem !important; + margin-left: -2rem !important; + } + .mx-md-n9 { + margin-right: -2.25rem !important; + margin-left: -2.25rem !important; + } + .mx-md-n10 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; + } + .mx-md-n11 { + margin-right: -2.75rem !important; + margin-left: -2.75rem !important; + } + .mx-md-n12 { + margin-right: -3rem !important; + margin-left: -3rem !important; + } + .mx-md-n13 { + margin-right: -3.25rem !important; + margin-left: -3.25rem !important; + } + .mx-md-n14 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; + } + .mx-md-n15 { + margin-right: -3.75rem !important; + margin-left: -3.75rem !important; + } + .mx-md-n16 { + margin-right: -4rem !important; + margin-left: -4rem !important; + } + .mx-md-n17 { + margin-right: -4.25rem !important; + margin-left: -4.25rem !important; + } + .mx-md-n18 { + margin-right: -4.5rem !important; + margin-left: -4.5rem !important; + } + .mx-md-n19 { + margin-right: -4.75rem !important; + margin-left: -4.75rem !important; + } + .mx-md-n20 { + margin-right: -5rem !important; + margin-left: -5rem !important; + } + .my-md-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; + } + .my-md-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; + } + .my-md-n3 { + margin-top: -0.75rem !important; + margin-bottom: -0.75rem !important; + } + .my-md-n4 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; + } + .my-md-n5 { + margin-top: -1.25rem !important; + margin-bottom: -1.25rem !important; + } + .my-md-n6 { + margin-top: -1.5rem !important; + margin-bottom: -1.5rem !important; + } + .my-md-n7 { + margin-top: -1.75rem !important; + margin-bottom: -1.75rem !important; + } + .my-md-n8 { + margin-top: -2rem !important; + margin-bottom: -2rem !important; + } + .my-md-n9 { + margin-top: -2.25rem !important; + margin-bottom: -2.25rem !important; + } + .my-md-n10 { + margin-top: -2.5rem !important; + margin-bottom: -2.5rem !important; + } + .my-md-n11 { + margin-top: -2.75rem !important; + margin-bottom: -2.75rem !important; + } + .my-md-n12 { + margin-top: -3rem !important; + margin-bottom: -3rem !important; + } + .my-md-n13 { + margin-top: -3.25rem !important; + margin-bottom: -3.25rem !important; + } + .my-md-n14 { + margin-top: -3.5rem !important; + margin-bottom: -3.5rem !important; + } + .my-md-n15 { + margin-top: -3.75rem !important; + margin-bottom: -3.75rem !important; + } + .my-md-n16 { + margin-top: -4rem !important; + margin-bottom: -4rem !important; + } + .my-md-n17 { + margin-top: -4.25rem !important; + margin-bottom: -4.25rem !important; + } + .my-md-n18 { + margin-top: -4.5rem !important; + margin-bottom: -4.5rem !important; + } + .my-md-n19 { + margin-top: -4.75rem !important; + margin-bottom: -4.75rem !important; + } + .my-md-n20 { + margin-top: -5rem !important; + margin-bottom: -5rem !important; + } + .mt-md-n1 { + margin-top: -0.25rem !important; + } + .mt-md-n2 { + margin-top: -0.5rem !important; + } + .mt-md-n3 { + margin-top: -0.75rem !important; + } + .mt-md-n4 { + margin-top: -1rem !important; + } + .mt-md-n5 { + margin-top: -1.25rem !important; + } + .mt-md-n6 { + margin-top: -1.5rem !important; + } + .mt-md-n7 { + margin-top: -1.75rem !important; + } + .mt-md-n8 { + margin-top: -2rem !important; + } + .mt-md-n9 { + margin-top: -2.25rem !important; + } + .mt-md-n10 { + margin-top: -2.5rem !important; + } + .mt-md-n11 { + margin-top: -2.75rem !important; + } + .mt-md-n12 { + margin-top: -3rem !important; + } + .mt-md-n13 { + margin-top: -3.25rem !important; + } + .mt-md-n14 { + margin-top: -3.5rem !important; + } + .mt-md-n15 { + margin-top: -3.75rem !important; + } + .mt-md-n16 { + margin-top: -4rem !important; + } + .mt-md-n17 { + margin-top: -4.25rem !important; + } + .mt-md-n18 { + margin-top: -4.5rem !important; + } + .mt-md-n19 { + margin-top: -4.75rem !important; + } + .mt-md-n20 { + margin-top: -5rem !important; + } + .me-md-n1 { + margin-right: -0.25rem !important; + } + .me-md-n2 { + margin-right: -0.5rem !important; + } + .me-md-n3 { + margin-right: -0.75rem !important; + } + .me-md-n4 { + margin-right: -1rem !important; + } + .me-md-n5 { + margin-right: -1.25rem !important; + } + .me-md-n6 { + margin-right: -1.5rem !important; + } + .me-md-n7 { + margin-right: -1.75rem !important; + } + .me-md-n8 { + margin-right: -2rem !important; + } + .me-md-n9 { + margin-right: -2.25rem !important; + } + .me-md-n10 { + margin-right: -2.5rem !important; + } + .me-md-n11 { + margin-right: -2.75rem !important; + } + .me-md-n12 { + margin-right: -3rem !important; + } + .me-md-n13 { + margin-right: -3.25rem !important; + } + .me-md-n14 { + margin-right: -3.5rem !important; + } + .me-md-n15 { + margin-right: -3.75rem !important; + } + .me-md-n16 { + margin-right: -4rem !important; + } + .me-md-n17 { + margin-right: -4.25rem !important; + } + .me-md-n18 { + margin-right: -4.5rem !important; + } + .me-md-n19 { + margin-right: -4.75rem !important; + } + .me-md-n20 { + margin-right: -5rem !important; + } + .mb-md-n1 { + margin-bottom: -0.25rem !important; + } + .mb-md-n2 { + margin-bottom: -0.5rem !important; + } + .mb-md-n3 { + margin-bottom: -0.75rem !important; + } + .mb-md-n4 { + margin-bottom: -1rem !important; + } + .mb-md-n5 { + margin-bottom: -1.25rem !important; + } + .mb-md-n6 { + margin-bottom: -1.5rem !important; + } + .mb-md-n7 { + margin-bottom: -1.75rem !important; + } + .mb-md-n8 { + margin-bottom: -2rem !important; + } + .mb-md-n9 { + margin-bottom: -2.25rem !important; + } + .mb-md-n10 { + margin-bottom: -2.5rem !important; + } + .mb-md-n11 { + margin-bottom: -2.75rem !important; + } + .mb-md-n12 { + margin-bottom: -3rem !important; + } + .mb-md-n13 { + margin-bottom: -3.25rem !important; + } + .mb-md-n14 { + margin-bottom: -3.5rem !important; + } + .mb-md-n15 { + margin-bottom: -3.75rem !important; + } + .mb-md-n16 { + margin-bottom: -4rem !important; + } + .mb-md-n17 { + margin-bottom: -4.25rem !important; + } + .mb-md-n18 { + margin-bottom: -4.5rem !important; + } + .mb-md-n19 { + margin-bottom: -4.75rem !important; + } + .mb-md-n20 { + margin-bottom: -5rem !important; + } + .ms-md-n1 { + margin-left: -0.25rem !important; + } + .ms-md-n2 { + margin-left: -0.5rem !important; + } + .ms-md-n3 { + margin-left: -0.75rem !important; + } + .ms-md-n4 { + margin-left: -1rem !important; + } + .ms-md-n5 { + margin-left: -1.25rem !important; + } + .ms-md-n6 { + margin-left: -1.5rem !important; + } + .ms-md-n7 { + margin-left: -1.75rem !important; + } + .ms-md-n8 { + margin-left: -2rem !important; + } + .ms-md-n9 { + margin-left: -2.25rem !important; + } + .ms-md-n10 { + margin-left: -2.5rem !important; + } + .ms-md-n11 { + margin-left: -2.75rem !important; + } + .ms-md-n12 { + margin-left: -3rem !important; + } + .ms-md-n13 { + margin-left: -3.25rem !important; + } + .ms-md-n14 { + margin-left: -3.5rem !important; + } + .ms-md-n15 { + margin-left: -3.75rem !important; + } + .ms-md-n16 { + margin-left: -4rem !important; + } + .ms-md-n17 { + margin-left: -4.25rem !important; + } + .ms-md-n18 { + margin-left: -4.5rem !important; + } + .ms-md-n19 { + margin-left: -4.75rem !important; + } + .ms-md-n20 { + margin-left: -5rem !important; + } + .p-md-0 { + padding: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .p-md-3 { + padding: 0.75rem !important; + } + .p-md-4 { + padding: 1rem !important; + } + .p-md-5 { + padding: 1.25rem !important; + } + .p-md-6 { + padding: 1.5rem !important; + } + .p-md-7 { + padding: 1.75rem !important; + } + .p-md-8 { + padding: 2rem !important; + } + .p-md-9 { + padding: 2.25rem !important; + } + .p-md-10 { + padding: 2.5rem !important; + } + .p-md-11 { + padding: 2.75rem !important; + } + .p-md-12 { + padding: 3rem !important; + } + .p-md-13 { + padding: 3.25rem !important; + } + .p-md-14 { + padding: 3.5rem !important; + } + .p-md-15 { + padding: 3.75rem !important; + } + .p-md-16 { + padding: 4rem !important; + } + .p-md-17 { + padding: 4.25rem !important; + } + .p-md-18 { + padding: 4.5rem !important; + } + .p-md-19 { + padding: 4.75rem !important; + } + .p-md-20 { + padding: 5rem !important; + } + .px-md-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-md-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-md-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; + } + .px-md-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-md-5 { + padding-right: 1.25rem !important; + padding-left: 1.25rem !important; + } + .px-md-6 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-md-7 { + padding-right: 1.75rem !important; + padding-left: 1.75rem !important; + } + .px-md-8 { + padding-right: 2rem !important; + padding-left: 2rem !important; + } + .px-md-9 { + padding-right: 2.25rem !important; + padding-left: 2.25rem !important; + } + .px-md-10 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; + } + .px-md-11 { + padding-right: 2.75rem !important; + padding-left: 2.75rem !important; + } + .px-md-12 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-md-13 { + padding-right: 3.25rem !important; + padding-left: 3.25rem !important; + } + .px-md-14 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; + } + .px-md-15 { + padding-right: 3.75rem !important; + padding-left: 3.75rem !important; + } + .px-md-16 { + padding-right: 4rem !important; + padding-left: 4rem !important; + } + .px-md-17 { + padding-right: 4.25rem !important; + padding-left: 4.25rem !important; + } + .px-md-18 { + padding-right: 4.5rem !important; + padding-left: 4.5rem !important; + } + .px-md-19 { + padding-right: 4.75rem !important; + padding-left: 4.75rem !important; + } + .px-md-20 { + padding-right: 5rem !important; + padding-left: 5rem !important; + } + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-md-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; + } + .py-md-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-md-5 { + padding-top: 1.25rem !important; + padding-bottom: 1.25rem !important; + } + .py-md-6 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-md-7 { + padding-top: 1.75rem !important; + padding-bottom: 1.75rem !important; + } + .py-md-8 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; + } + .py-md-9 { + padding-top: 2.25rem !important; + padding-bottom: 2.25rem !important; + } + .py-md-10 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; + } + .py-md-11 { + padding-top: 2.75rem !important; + padding-bottom: 2.75rem !important; + } + .py-md-12 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-md-13 { + padding-top: 3.25rem !important; + padding-bottom: 3.25rem !important; + } + .py-md-14 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; + } + .py-md-15 { + padding-top: 3.75rem !important; + padding-bottom: 3.75rem !important; + } + .py-md-16 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; + } + .py-md-17 { + padding-top: 4.25rem !important; + padding-bottom: 4.25rem !important; + } + .py-md-18 { + padding-top: 4.5rem !important; + padding-bottom: 4.5rem !important; + } + .py-md-19 { + padding-top: 4.75rem !important; + padding-bottom: 4.75rem !important; + } + .py-md-20 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .pt-md-0 { + padding-top: 0 !important; + } + .pt-md-1 { + padding-top: 0.25rem !important; + } + .pt-md-2 { + padding-top: 0.5rem !important; + } + .pt-md-3 { + padding-top: 0.75rem !important; + } + .pt-md-4 { + padding-top: 1rem !important; + } + .pt-md-5 { + padding-top: 1.25rem !important; + } + .pt-md-6 { + padding-top: 1.5rem !important; + } + .pt-md-7 { + padding-top: 1.75rem !important; + } + .pt-md-8 { + padding-top: 2rem !important; + } + .pt-md-9 { + padding-top: 2.25rem !important; + } + .pt-md-10 { + padding-top: 2.5rem !important; + } + .pt-md-11 { + padding-top: 2.75rem !important; + } + .pt-md-12 { + padding-top: 3rem !important; + } + .pt-md-13 { + padding-top: 3.25rem !important; + } + .pt-md-14 { + padding-top: 3.5rem !important; + } + .pt-md-15 { + padding-top: 3.75rem !important; + } + .pt-md-16 { + padding-top: 4rem !important; + } + .pt-md-17 { + padding-top: 4.25rem !important; + } + .pt-md-18 { + padding-top: 4.5rem !important; + } + .pt-md-19 { + padding-top: 4.75rem !important; + } + .pt-md-20 { + padding-top: 5rem !important; + } + .pe-md-0 { + padding-right: 0 !important; + } + .pe-md-1 { + padding-right: 0.25rem !important; + } + .pe-md-2 { + padding-right: 0.5rem !important; + } + .pe-md-3 { + padding-right: 0.75rem !important; + } + .pe-md-4 { + padding-right: 1rem !important; + } + .pe-md-5 { + padding-right: 1.25rem !important; + } + .pe-md-6 { + padding-right: 1.5rem !important; + } + .pe-md-7 { + padding-right: 1.75rem !important; + } + .pe-md-8 { + padding-right: 2rem !important; + } + .pe-md-9 { + padding-right: 2.25rem !important; + } + .pe-md-10 { + padding-right: 2.5rem !important; + } + .pe-md-11 { + padding-right: 2.75rem !important; + } + .pe-md-12 { + padding-right: 3rem !important; + } + .pe-md-13 { + padding-right: 3.25rem !important; + } + .pe-md-14 { + padding-right: 3.5rem !important; + } + .pe-md-15 { + padding-right: 3.75rem !important; + } + .pe-md-16 { + padding-right: 4rem !important; + } + .pe-md-17 { + padding-right: 4.25rem !important; + } + .pe-md-18 { + padding-right: 4.5rem !important; + } + .pe-md-19 { + padding-right: 4.75rem !important; + } + .pe-md-20 { + padding-right: 5rem !important; + } + .pb-md-0 { + padding-bottom: 0 !important; + } + .pb-md-1 { + padding-bottom: 0.25rem !important; + } + .pb-md-2 { + padding-bottom: 0.5rem !important; + } + .pb-md-3 { + padding-bottom: 0.75rem !important; + } + .pb-md-4 { + padding-bottom: 1rem !important; + } + .pb-md-5 { + padding-bottom: 1.25rem !important; + } + .pb-md-6 { + padding-bottom: 1.5rem !important; + } + .pb-md-7 { + padding-bottom: 1.75rem !important; + } + .pb-md-8 { + padding-bottom: 2rem !important; + } + .pb-md-9 { + padding-bottom: 2.25rem !important; + } + .pb-md-10 { + padding-bottom: 2.5rem !important; + } + .pb-md-11 { + padding-bottom: 2.75rem !important; + } + .pb-md-12 { + padding-bottom: 3rem !important; + } + .pb-md-13 { + padding-bottom: 3.25rem !important; + } + .pb-md-14 { + padding-bottom: 3.5rem !important; + } + .pb-md-15 { + padding-bottom: 3.75rem !important; + } + .pb-md-16 { + padding-bottom: 4rem !important; + } + .pb-md-17 { + padding-bottom: 4.25rem !important; + } + .pb-md-18 { + padding-bottom: 4.5rem !important; + } + .pb-md-19 { + padding-bottom: 4.75rem !important; + } + .pb-md-20 { + padding-bottom: 5rem !important; + } + .ps-md-0 { + padding-left: 0 !important; + } + .ps-md-1 { + padding-left: 0.25rem !important; + } + .ps-md-2 { + padding-left: 0.5rem !important; + } + .ps-md-3 { + padding-left: 0.75rem !important; + } + .ps-md-4 { + padding-left: 1rem !important; + } + .ps-md-5 { + padding-left: 1.25rem !important; + } + .ps-md-6 { + padding-left: 1.5rem !important; + } + .ps-md-7 { + padding-left: 1.75rem !important; + } + .ps-md-8 { + padding-left: 2rem !important; + } + .ps-md-9 { + padding-left: 2.25rem !important; + } + .ps-md-10 { + padding-left: 2.5rem !important; + } + .ps-md-11 { + padding-left: 2.75rem !important; + } + .ps-md-12 { + padding-left: 3rem !important; + } + .ps-md-13 { + padding-left: 3.25rem !important; + } + .ps-md-14 { + padding-left: 3.5rem !important; + } + .ps-md-15 { + padding-left: 3.75rem !important; + } + .ps-md-16 { + padding-left: 4rem !important; + } + .ps-md-17 { + padding-left: 4.25rem !important; + } + .ps-md-18 { + padding-left: 4.5rem !important; + } + .ps-md-19 { + padding-left: 4.75rem !important; + } + .ps-md-20 { + padding-left: 5rem !important; + } + .gap-md-0 { + gap: 0 !important; + } + .gap-md-1 { + gap: 0.25rem !important; + } + .gap-md-2 { + gap: 0.5rem !important; + } + .gap-md-3 { + gap: 0.75rem !important; + } + .gap-md-4 { + gap: 1rem !important; + } + .gap-md-5 { + gap: 1.25rem !important; + } + .gap-md-6 { + gap: 1.5rem !important; + } + .gap-md-7 { + gap: 1.75rem !important; + } + .gap-md-8 { + gap: 2rem !important; + } + .gap-md-9 { + gap: 2.25rem !important; + } + .gap-md-10 { + gap: 2.5rem !important; + } + .gap-md-11 { + gap: 2.75rem !important; + } + .gap-md-12 { + gap: 3rem !important; + } + .gap-md-13 { + gap: 3.25rem !important; + } + .gap-md-14 { + gap: 3.5rem !important; + } + .gap-md-15 { + gap: 3.75rem !important; + } + .gap-md-16 { + gap: 4rem !important; + } + .gap-md-17 { + gap: 4.25rem !important; + } + .gap-md-18 { + gap: 4.5rem !important; + } + .gap-md-19 { + gap: 4.75rem !important; + } + .gap-md-20 { + gap: 5rem !important; + } + .row-gap-md-0 { + row-gap: 0 !important; + } + .row-gap-md-1 { + row-gap: 0.25rem !important; + } + .row-gap-md-2 { + row-gap: 0.5rem !important; + } + .row-gap-md-3 { + row-gap: 0.75rem !important; + } + .row-gap-md-4 { + row-gap: 1rem !important; + } + .row-gap-md-5 { + row-gap: 1.25rem !important; + } + .row-gap-md-6 { + row-gap: 1.5rem !important; + } + .row-gap-md-7 { + row-gap: 1.75rem !important; + } + .row-gap-md-8 { + row-gap: 2rem !important; + } + .row-gap-md-9 { + row-gap: 2.25rem !important; + } + .row-gap-md-10 { + row-gap: 2.5rem !important; + } + .row-gap-md-11 { + row-gap: 2.75rem !important; + } + .row-gap-md-12 { + row-gap: 3rem !important; + } + .row-gap-md-13 { + row-gap: 3.25rem !important; + } + .row-gap-md-14 { + row-gap: 3.5rem !important; + } + .row-gap-md-15 { + row-gap: 3.75rem !important; + } + .row-gap-md-16 { + row-gap: 4rem !important; + } + .row-gap-md-17 { + row-gap: 4.25rem !important; + } + .row-gap-md-18 { + row-gap: 4.5rem !important; + } + .row-gap-md-19 { + row-gap: 4.75rem !important; + } + .row-gap-md-20 { + row-gap: 5rem !important; + } + .column-gap-md-0 { + column-gap: 0 !important; + } + .column-gap-md-1 { + column-gap: 0.25rem !important; + } + .column-gap-md-2 { + column-gap: 0.5rem !important; + } + .column-gap-md-3 { + column-gap: 0.75rem !important; + } + .column-gap-md-4 { + column-gap: 1rem !important; + } + .column-gap-md-5 { + column-gap: 1.25rem !important; + } + .column-gap-md-6 { + column-gap: 1.5rem !important; + } + .column-gap-md-7 { + column-gap: 1.75rem !important; + } + .column-gap-md-8 { + column-gap: 2rem !important; + } + .column-gap-md-9 { + column-gap: 2.25rem !important; + } + .column-gap-md-10 { + column-gap: 2.5rem !important; + } + .column-gap-md-11 { + column-gap: 2.75rem !important; + } + .column-gap-md-12 { + column-gap: 3rem !important; + } + .column-gap-md-13 { + column-gap: 3.25rem !important; + } + .column-gap-md-14 { + column-gap: 3.5rem !important; + } + .column-gap-md-15 { + column-gap: 3.75rem !important; + } + .column-gap-md-16 { + column-gap: 4rem !important; + } + .column-gap-md-17 { + column-gap: 4.25rem !important; + } + .column-gap-md-18 { + column-gap: 4.5rem !important; + } + .column-gap-md-19 { + column-gap: 4.75rem !important; + } + .column-gap-md-20 { + column-gap: 5rem !important; + } + .fs-md-1 { + font-size: calc(1.3rem + 0.6vw) !important; + } + .fs-md-2 { + font-size: calc(1.275rem + 0.3vw) !important; + } + .fs-md-3 { + font-size: calc(1.26rem + 0.12vw) !important; + } + .fs-md-4 { + font-size: 1.25rem !important; + } + .fs-md-5 { + font-size: 1.15rem !important; + } + .fs-md-6 { + font-size: 1.075rem !important; + } + .fs-md-7 { + font-size: 0.95rem !important; + } + .fs-md-8 { + font-size: 0.85rem !important; + } + .fs-md-9 { + font-size: 0.75rem !important; + } + .fs-md-10 { + font-size: 0.5rem !important; + } + .fs-md-base { + font-size: 1rem !important; + } + .fs-md-fluid { + font-size: 100% !important; + } + .fs-md-2x { + font-size: calc(1.325rem + 0.9vw) !important; + } + .fs-md-2qx { + font-size: calc(1.35rem + 1.2vw) !important; + } + .fs-md-2hx { + font-size: calc(1.375rem + 1.5vw) !important; + } + .fs-md-2tx { + font-size: calc(1.4rem + 1.8vw) !important; + } + .fs-md-3x { + font-size: calc(1.425rem + 2.1vw) !important; + } + .fs-md-3qx { + font-size: calc(1.45rem + 2.4vw) !important; + } + .fs-md-3hx { + font-size: calc(1.475rem + 2.7vw) !important; + } + .fs-md-3tx { + font-size: calc(1.5rem + 3vw) !important; + } + .fs-md-4x { + font-size: calc(1.525rem + 3.3vw) !important; + } + .fs-md-4qx { + font-size: calc(1.55rem + 3.6vw) !important; + } + .fs-md-4hx { + font-size: calc(1.575rem + 3.9vw) !important; + } + .fs-md-4tx { + font-size: calc(1.6rem + 4.2vw) !important; + } + .fs-md-5x { + font-size: calc(1.625rem + 4.5vw) !important; + } + .fs-md-5qx { + font-size: calc(1.65rem + 4.8vw) !important; + } + .fs-md-5hx { + font-size: calc(1.675rem + 5.1vw) !important; + } + .fs-md-5tx { + font-size: calc(1.7rem + 5.4vw) !important; + } + .text-md-start { + text-align: left !important; + } + .text-md-end { + text-align: right !important; + } + .text-md-center { + text-align: center !important; + } + .min-w-md-unset { + min-width: unset !important; + } + .min-w-md-25 { + min-width: 25% !important; + } + .min-w-md-50 { + min-width: 50% !important; + } + .min-w-md-75 { + min-width: 75% !important; + } + .min-w-md-100 { + min-width: 100% !important; + } + .min-w-md-auto { + min-width: auto !important; + } + .min-w-md-1px { + min-width: 1px !important; + } + .min-w-md-2px { + min-width: 2px !important; + } + .min-w-md-3px { + min-width: 3px !important; + } + .min-w-md-4px { + min-width: 4px !important; + } + .min-w-md-5px { + min-width: 5px !important; + } + .min-w-md-6px { + min-width: 6px !important; + } + .min-w-md-7px { + min-width: 7px !important; + } + .min-w-md-8px { + min-width: 8px !important; + } + .min-w-md-9px { + min-width: 9px !important; + } + .min-w-md-10px { + min-width: 10px !important; + } + .min-w-md-15px { + min-width: 15px !important; + } + .min-w-md-20px { + min-width: 20px !important; + } + .min-w-md-25px { + min-width: 25px !important; + } + .min-w-md-30px { + min-width: 30px !important; + } + .min-w-md-35px { + min-width: 35px !important; + } + .min-w-md-40px { + min-width: 40px !important; + } + .min-w-md-45px { + min-width: 45px !important; + } + .min-w-md-50px { + min-width: 50px !important; + } + .min-w-md-55px { + min-width: 55px !important; + } + .min-w-md-60px { + min-width: 60px !important; + } + .min-w-md-65px { + min-width: 65px !important; + } + .min-w-md-70px { + min-width: 70px !important; + } + .min-w-md-75px { + min-width: 75px !important; + } + .min-w-md-80px { + min-width: 80px !important; + } + .min-w-md-85px { + min-width: 85px !important; + } + .min-w-md-90px { + min-width: 90px !important; + } + .min-w-md-95px { + min-width: 95px !important; + } + .min-w-md-100px { + min-width: 100px !important; + } + .min-w-md-125px { + min-width: 125px !important; + } + .min-w-md-150px { + min-width: 150px !important; + } + .min-w-md-175px { + min-width: 175px !important; + } + .min-w-md-200px { + min-width: 200px !important; + } + .min-w-md-225px { + min-width: 225px !important; + } + .min-w-md-250px { + min-width: 250px !important; + } + .min-w-md-275px { + min-width: 275px !important; + } + .min-w-md-300px { + min-width: 300px !important; + } + .min-w-md-325px { + min-width: 325px !important; + } + .min-w-md-350px { + min-width: 350px !important; + } + .min-w-md-375px { + min-width: 375px !important; + } + .min-w-md-400px { + min-width: 400px !important; + } + .min-w-md-425px { + min-width: 425px !important; + } + .min-w-md-450px { + min-width: 450px !important; + } + .min-w-md-475px { + min-width: 475px !important; + } + .min-w-md-500px { + min-width: 500px !important; + } + .min-w-md-550px { + min-width: 550px !important; + } + .min-w-md-600px { + min-width: 600px !important; + } + .min-w-md-650px { + min-width: 650px !important; + } + .min-w-md-700px { + min-width: 700px !important; + } + .min-w-md-750px { + min-width: 750px !important; + } + .min-w-md-800px { + min-width: 800px !important; + } + .min-w-md-850px { + min-width: 850px !important; + } + .min-w-md-900px { + min-width: 900px !important; + } + .min-w-md-950px { + min-width: 950px !important; + } + .min-w-md-1000px { + min-width: 1000px !important; + } + .min-h-md-unset { + min-height: unset !important; + } + .min-h-md-25 { + min-height: 25% !important; + } + .min-h-md-50 { + min-height: 50% !important; + } + .min-h-md-75 { + min-height: 75% !important; + } + .min-h-md-100 { + min-height: 100% !important; + } + .min-h-md-auto { + min-height: auto !important; + } + .min-h-md-1px { + min-height: 1px !important; + } + .min-h-md-2px { + min-height: 2px !important; + } + .min-h-md-3px { + min-height: 3px !important; + } + .min-h-md-4px { + min-height: 4px !important; + } + .min-h-md-5px { + min-height: 5px !important; + } + .min-h-md-6px { + min-height: 6px !important; + } + .min-h-md-7px { + min-height: 7px !important; + } + .min-h-md-8px { + min-height: 8px !important; + } + .min-h-md-9px { + min-height: 9px !important; + } + .min-h-md-10px { + min-height: 10px !important; + } + .min-h-md-15px { + min-height: 15px !important; + } + .min-h-md-20px { + min-height: 20px !important; + } + .min-h-md-25px { + min-height: 25px !important; + } + .min-h-md-30px { + min-height: 30px !important; + } + .min-h-md-35px { + min-height: 35px !important; + } + .min-h-md-40px { + min-height: 40px !important; + } + .min-h-md-45px { + min-height: 45px !important; + } + .min-h-md-50px { + min-height: 50px !important; + } + .min-h-md-55px { + min-height: 55px !important; + } + .min-h-md-60px { + min-height: 60px !important; + } + .min-h-md-65px { + min-height: 65px !important; + } + .min-h-md-70px { + min-height: 70px !important; + } + .min-h-md-75px { + min-height: 75px !important; + } + .min-h-md-80px { + min-height: 80px !important; + } + .min-h-md-85px { + min-height: 85px !important; + } + .min-h-md-90px { + min-height: 90px !important; + } + .min-h-md-95px { + min-height: 95px !important; + } + .min-h-md-100px { + min-height: 100px !important; + } + .min-h-md-125px { + min-height: 125px !important; + } + .min-h-md-150px { + min-height: 150px !important; + } + .min-h-md-175px { + min-height: 175px !important; + } + .min-h-md-200px { + min-height: 200px !important; + } + .min-h-md-225px { + min-height: 225px !important; + } + .min-h-md-250px { + min-height: 250px !important; + } + .min-h-md-275px { + min-height: 275px !important; + } + .min-h-md-300px { + min-height: 300px !important; + } + .min-h-md-325px { + min-height: 325px !important; + } + .min-h-md-350px { + min-height: 350px !important; + } + .min-h-md-375px { + min-height: 375px !important; + } + .min-h-md-400px { + min-height: 400px !important; + } + .min-h-md-425px { + min-height: 425px !important; + } + .min-h-md-450px { + min-height: 450px !important; + } + .min-h-md-475px { + min-height: 475px !important; + } + .min-h-md-500px { + min-height: 500px !important; + } + .min-h-md-550px { + min-height: 550px !important; + } + .min-h-md-600px { + min-height: 600px !important; + } + .min-h-md-650px { + min-height: 650px !important; + } + .min-h-md-700px { + min-height: 700px !important; + } + .min-h-md-750px { + min-height: 750px !important; + } + .min-h-md-800px { + min-height: 800px !important; + } + .min-h-md-850px { + min-height: 850px !important; + } + .min-h-md-900px { + min-height: 900px !important; + } + .min-h-md-950px { + min-height: 950px !important; + } + .min-h-md-1000px { + min-height: 1000px !important; + } +} +@media (min-width: 992px) { + .float-lg-start { + float: left !important; + } + .float-lg-end { + float: right !important; + } + .float-lg-none { + float: none !important; + } + .object-fit-lg-contain { + object-fit: contain !important; + } + .object-fit-lg-cover { + object-fit: cover !important; + } + .object-fit-lg-fill { + object-fit: fill !important; + } + .object-fit-lg-scale { + object-fit: scale-down !important; + } + .object-fit-lg-none { + object-fit: none !important; + } + .overflow-lg-auto { + overflow: auto !important; + } + .overflow-lg-hidden { + overflow: hidden !important; + } + .overflow-lg-visible { + overflow: visible !important; + } + .overflow-lg-scroll { + overflow: scroll !important; + } + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-grid { + display: grid !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: flex !important; + } + .d-lg-inline-flex { + display: inline-flex !important; + } + .d-lg-none { + display: none !important; + } + .position-lg-static { + position: static !important; + } + .position-lg-relative { + position: relative !important; + } + .position-lg-absolute { + position: absolute !important; + } + .position-lg-fixed { + position: fixed !important; + } + .position-lg-sticky { + position: sticky !important; + } + .w-lg-unset { + width: unset !important; + } + .w-lg-25 { + width: 25% !important; + } + .w-lg-50 { + width: 50% !important; + } + .w-lg-75 { + width: 75% !important; + } + .w-lg-100 { + width: 100% !important; + } + .w-lg-auto { + width: auto !important; + } + .w-lg-1px { + width: 1px !important; + } + .w-lg-2px { + width: 2px !important; + } + .w-lg-3px { + width: 3px !important; + } + .w-lg-4px { + width: 4px !important; + } + .w-lg-5px { + width: 5px !important; + } + .w-lg-6px { + width: 6px !important; + } + .w-lg-7px { + width: 7px !important; + } + .w-lg-8px { + width: 8px !important; + } + .w-lg-9px { + width: 9px !important; + } + .w-lg-10px { + width: 10px !important; + } + .w-lg-15px { + width: 15px !important; + } + .w-lg-20px { + width: 20px !important; + } + .w-lg-25px { + width: 25px !important; + } + .w-lg-30px { + width: 30px !important; + } + .w-lg-35px { + width: 35px !important; + } + .w-lg-40px { + width: 40px !important; + } + .w-lg-45px { + width: 45px !important; + } + .w-lg-50px { + width: 50px !important; + } + .w-lg-55px { + width: 55px !important; + } + .w-lg-60px { + width: 60px !important; + } + .w-lg-65px { + width: 65px !important; + } + .w-lg-70px { + width: 70px !important; + } + .w-lg-75px { + width: 75px !important; + } + .w-lg-80px { + width: 80px !important; + } + .w-lg-85px { + width: 85px !important; + } + .w-lg-90px { + width: 90px !important; + } + .w-lg-95px { + width: 95px !important; + } + .w-lg-100px { + width: 100px !important; + } + .w-lg-125px { + width: 125px !important; + } + .w-lg-150px { + width: 150px !important; + } + .w-lg-175px { + width: 175px !important; + } + .w-lg-200px { + width: 200px !important; + } + .w-lg-225px { + width: 225px !important; + } + .w-lg-250px { + width: 250px !important; + } + .w-lg-275px { + width: 275px !important; + } + .w-lg-300px { + width: 300px !important; + } + .w-lg-325px { + width: 325px !important; + } + .w-lg-350px { + width: 350px !important; + } + .w-lg-375px { + width: 375px !important; + } + .w-lg-400px { + width: 400px !important; + } + .w-lg-425px { + width: 425px !important; + } + .w-lg-450px { + width: 450px !important; + } + .w-lg-475px { + width: 475px !important; + } + .w-lg-500px { + width: 500px !important; + } + .w-lg-550px { + width: 550px !important; + } + .w-lg-600px { + width: 600px !important; + } + .w-lg-650px { + width: 650px !important; + } + .w-lg-700px { + width: 700px !important; + } + .w-lg-750px { + width: 750px !important; + } + .w-lg-800px { + width: 800px !important; + } + .w-lg-850px { + width: 850px !important; + } + .w-lg-900px { + width: 900px !important; + } + .w-lg-950px { + width: 950px !important; + } + .w-lg-1000px { + width: 1000px !important; + } + .mw-lg-unset { + max-width: unset !important; + } + .mw-lg-25 { + max-width: 25% !important; + } + .mw-lg-50 { + max-width: 50% !important; + } + .mw-lg-75 { + max-width: 75% !important; + } + .mw-lg-100 { + max-width: 100% !important; + } + .mw-lg-auto { + max-width: auto !important; + } + .mw-lg-1px { + max-width: 1px !important; + } + .mw-lg-2px { + max-width: 2px !important; + } + .mw-lg-3px { + max-width: 3px !important; + } + .mw-lg-4px { + max-width: 4px !important; + } + .mw-lg-5px { + max-width: 5px !important; + } + .mw-lg-6px { + max-width: 6px !important; + } + .mw-lg-7px { + max-width: 7px !important; + } + .mw-lg-8px { + max-width: 8px !important; + } + .mw-lg-9px { + max-width: 9px !important; + } + .mw-lg-10px { + max-width: 10px !important; + } + .mw-lg-15px { + max-width: 15px !important; + } + .mw-lg-20px { + max-width: 20px !important; + } + .mw-lg-25px { + max-width: 25px !important; + } + .mw-lg-30px { + max-width: 30px !important; + } + .mw-lg-35px { + max-width: 35px !important; + } + .mw-lg-40px { + max-width: 40px !important; + } + .mw-lg-45px { + max-width: 45px !important; + } + .mw-lg-50px { + max-width: 50px !important; + } + .mw-lg-55px { + max-width: 55px !important; + } + .mw-lg-60px { + max-width: 60px !important; + } + .mw-lg-65px { + max-width: 65px !important; + } + .mw-lg-70px { + max-width: 70px !important; + } + .mw-lg-75px { + max-width: 75px !important; + } + .mw-lg-80px { + max-width: 80px !important; + } + .mw-lg-85px { + max-width: 85px !important; + } + .mw-lg-90px { + max-width: 90px !important; + } + .mw-lg-95px { + max-width: 95px !important; + } + .mw-lg-100px { + max-width: 100px !important; + } + .mw-lg-125px { + max-width: 125px !important; + } + .mw-lg-150px { + max-width: 150px !important; + } + .mw-lg-175px { + max-width: 175px !important; + } + .mw-lg-200px { + max-width: 200px !important; + } + .mw-lg-225px { + max-width: 225px !important; + } + .mw-lg-250px { + max-width: 250px !important; + } + .mw-lg-275px { + max-width: 275px !important; + } + .mw-lg-300px { + max-width: 300px !important; + } + .mw-lg-325px { + max-width: 325px !important; + } + .mw-lg-350px { + max-width: 350px !important; + } + .mw-lg-375px { + max-width: 375px !important; + } + .mw-lg-400px { + max-width: 400px !important; + } + .mw-lg-425px { + max-width: 425px !important; + } + .mw-lg-450px { + max-width: 450px !important; + } + .mw-lg-475px { + max-width: 475px !important; + } + .mw-lg-500px { + max-width: 500px !important; + } + .mw-lg-550px { + max-width: 550px !important; + } + .mw-lg-600px { + max-width: 600px !important; + } + .mw-lg-650px { + max-width: 650px !important; + } + .mw-lg-700px { + max-width: 700px !important; + } + .mw-lg-750px { + max-width: 750px !important; + } + .mw-lg-800px { + max-width: 800px !important; + } + .mw-lg-850px { + max-width: 850px !important; + } + .mw-lg-900px { + max-width: 900px !important; + } + .mw-lg-950px { + max-width: 950px !important; + } + .mw-lg-1000px { + max-width: 1000px !important; + } + .h-lg-unset { + height: unset !important; + } + .h-lg-25 { + height: 25% !important; + } + .h-lg-50 { + height: 50% !important; + } + .h-lg-75 { + height: 75% !important; + } + .h-lg-100 { + height: 100% !important; + } + .h-lg-auto { + height: auto !important; + } + .h-lg-1px { + height: 1px !important; + } + .h-lg-2px { + height: 2px !important; + } + .h-lg-3px { + height: 3px !important; + } + .h-lg-4px { + height: 4px !important; + } + .h-lg-5px { + height: 5px !important; + } + .h-lg-6px { + height: 6px !important; + } + .h-lg-7px { + height: 7px !important; + } + .h-lg-8px { + height: 8px !important; + } + .h-lg-9px { + height: 9px !important; + } + .h-lg-10px { + height: 10px !important; + } + .h-lg-15px { + height: 15px !important; + } + .h-lg-20px { + height: 20px !important; + } + .h-lg-25px { + height: 25px !important; + } + .h-lg-30px { + height: 30px !important; + } + .h-lg-35px { + height: 35px !important; + } + .h-lg-40px { + height: 40px !important; + } + .h-lg-45px { + height: 45px !important; + } + .h-lg-50px { + height: 50px !important; + } + .h-lg-55px { + height: 55px !important; + } + .h-lg-60px { + height: 60px !important; + } + .h-lg-65px { + height: 65px !important; + } + .h-lg-70px { + height: 70px !important; + } + .h-lg-75px { + height: 75px !important; + } + .h-lg-80px { + height: 80px !important; + } + .h-lg-85px { + height: 85px !important; + } + .h-lg-90px { + height: 90px !important; + } + .h-lg-95px { + height: 95px !important; + } + .h-lg-100px { + height: 100px !important; + } + .h-lg-125px { + height: 125px !important; + } + .h-lg-150px { + height: 150px !important; + } + .h-lg-175px { + height: 175px !important; + } + .h-lg-200px { + height: 200px !important; + } + .h-lg-225px { + height: 225px !important; + } + .h-lg-250px { + height: 250px !important; + } + .h-lg-275px { + height: 275px !important; + } + .h-lg-300px { + height: 300px !important; + } + .h-lg-325px { + height: 325px !important; + } + .h-lg-350px { + height: 350px !important; + } + .h-lg-375px { + height: 375px !important; + } + .h-lg-400px { + height: 400px !important; + } + .h-lg-425px { + height: 425px !important; + } + .h-lg-450px { + height: 450px !important; + } + .h-lg-475px { + height: 475px !important; + } + .h-lg-500px { + height: 500px !important; + } + .h-lg-550px { + height: 550px !important; + } + .h-lg-600px { + height: 600px !important; + } + .h-lg-650px { + height: 650px !important; + } + .h-lg-700px { + height: 700px !important; + } + .h-lg-750px { + height: 750px !important; + } + .h-lg-800px { + height: 800px !important; + } + .h-lg-850px { + height: 850px !important; + } + .h-lg-900px { + height: 900px !important; + } + .h-lg-950px { + height: 950px !important; + } + .h-lg-1000px { + height: 1000px !important; + } + .mh-lg-unset { + max-height: unset !important; + } + .mh-lg-25 { + max-height: 25% !important; + } + .mh-lg-50 { + max-height: 50% !important; + } + .mh-lg-75 { + max-height: 75% !important; + } + .mh-lg-100 { + max-height: 100% !important; + } + .mh-lg-auto { + max-height: auto !important; + } + .mh-lg-1px { + max-height: 1px !important; + } + .mh-lg-2px { + max-height: 2px !important; + } + .mh-lg-3px { + max-height: 3px !important; + } + .mh-lg-4px { + max-height: 4px !important; + } + .mh-lg-5px { + max-height: 5px !important; + } + .mh-lg-6px { + max-height: 6px !important; + } + .mh-lg-7px { + max-height: 7px !important; + } + .mh-lg-8px { + max-height: 8px !important; + } + .mh-lg-9px { + max-height: 9px !important; + } + .mh-lg-10px { + max-height: 10px !important; + } + .mh-lg-15px { + max-height: 15px !important; + } + .mh-lg-20px { + max-height: 20px !important; + } + .mh-lg-25px { + max-height: 25px !important; + } + .mh-lg-30px { + max-height: 30px !important; + } + .mh-lg-35px { + max-height: 35px !important; + } + .mh-lg-40px { + max-height: 40px !important; + } + .mh-lg-45px { + max-height: 45px !important; + } + .mh-lg-50px { + max-height: 50px !important; + } + .mh-lg-55px { + max-height: 55px !important; + } + .mh-lg-60px { + max-height: 60px !important; + } + .mh-lg-65px { + max-height: 65px !important; + } + .mh-lg-70px { + max-height: 70px !important; + } + .mh-lg-75px { + max-height: 75px !important; + } + .mh-lg-80px { + max-height: 80px !important; + } + .mh-lg-85px { + max-height: 85px !important; + } + .mh-lg-90px { + max-height: 90px !important; + } + .mh-lg-95px { + max-height: 95px !important; + } + .mh-lg-100px { + max-height: 100px !important; + } + .mh-lg-125px { + max-height: 125px !important; + } + .mh-lg-150px { + max-height: 150px !important; + } + .mh-lg-175px { + max-height: 175px !important; + } + .mh-lg-200px { + max-height: 200px !important; + } + .mh-lg-225px { + max-height: 225px !important; + } + .mh-lg-250px { + max-height: 250px !important; + } + .mh-lg-275px { + max-height: 275px !important; + } + .mh-lg-300px { + max-height: 300px !important; + } + .mh-lg-325px { + max-height: 325px !important; + } + .mh-lg-350px { + max-height: 350px !important; + } + .mh-lg-375px { + max-height: 375px !important; + } + .mh-lg-400px { + max-height: 400px !important; + } + .mh-lg-425px { + max-height: 425px !important; + } + .mh-lg-450px { + max-height: 450px !important; + } + .mh-lg-475px { + max-height: 475px !important; + } + .mh-lg-500px { + max-height: 500px !important; + } + .mh-lg-550px { + max-height: 550px !important; + } + .mh-lg-600px { + max-height: 600px !important; + } + .mh-lg-650px { + max-height: 650px !important; + } + .mh-lg-700px { + max-height: 700px !important; + } + .mh-lg-750px { + max-height: 750px !important; + } + .mh-lg-800px { + max-height: 800px !important; + } + .mh-lg-850px { + max-height: 850px !important; + } + .mh-lg-900px { + max-height: 900px !important; + } + .mh-lg-950px { + max-height: 950px !important; + } + .mh-lg-1000px { + max-height: 1000px !important; + } + .flex-lg-fill { + flex: 1 1 auto !important; + } + .flex-lg-row { + flex-direction: row !important; + } + .flex-lg-column { + flex-direction: column !important; + } + .flex-lg-row-reverse { + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + flex-direction: column-reverse !important; + } + .flex-lg-grow-0 { + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + flex-shrink: 1 !important; + } + .flex-lg-wrap { + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-lg-start { + justify-content: flex-start !important; + } + .justify-content-lg-end { + justify-content: flex-end !important; + } + .justify-content-lg-center { + justify-content: center !important; + } + .justify-content-lg-between { + justify-content: space-between !important; + } + .justify-content-lg-around { + justify-content: space-around !important; + } + .justify-content-lg-evenly { + justify-content: space-evenly !important; + } + .align-items-lg-start { + align-items: flex-start !important; + } + .align-items-lg-end { + align-items: flex-end !important; + } + .align-items-lg-center { + align-items: center !important; + } + .align-items-lg-baseline { + align-items: baseline !important; + } + .align-items-lg-stretch { + align-items: stretch !important; + } + .align-content-lg-start { + align-content: flex-start !important; + } + .align-content-lg-end { + align-content: flex-end !important; + } + .align-content-lg-center { + align-content: center !important; + } + .align-content-lg-between { + align-content: space-between !important; + } + .align-content-lg-around { + align-content: space-around !important; + } + .align-content-lg-stretch { + align-content: stretch !important; + } + .align-self-lg-auto { + align-self: auto !important; + } + .align-self-lg-start { + align-self: flex-start !important; + } + .align-self-lg-end { + align-self: flex-end !important; + } + .align-self-lg-center { + align-self: center !important; + } + .align-self-lg-baseline { + align-self: baseline !important; + } + .align-self-lg-stretch { + align-self: stretch !important; + } + .order-lg-first { + order: -1 !important; + } + .order-lg-0 { + order: 0 !important; + } + .order-lg-1 { + order: 1 !important; + } + .order-lg-2 { + order: 2 !important; + } + .order-lg-3 { + order: 3 !important; + } + .order-lg-4 { + order: 4 !important; + } + .order-lg-5 { + order: 5 !important; + } + .order-lg-last { + order: 6 !important; + } + .m-lg-0 { + margin: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .m-lg-3 { + margin: 0.75rem !important; + } + .m-lg-4 { + margin: 1rem !important; + } + .m-lg-5 { + margin: 1.25rem !important; + } + .m-lg-6 { + margin: 1.5rem !important; + } + .m-lg-7 { + margin: 1.75rem !important; + } + .m-lg-8 { + margin: 2rem !important; + } + .m-lg-9 { + margin: 2.25rem !important; + } + .m-lg-10 { + margin: 2.5rem !important; + } + .m-lg-11 { + margin: 2.75rem !important; + } + .m-lg-12 { + margin: 3rem !important; + } + .m-lg-13 { + margin: 3.25rem !important; + } + .m-lg-14 { + margin: 3.5rem !important; + } + .m-lg-15 { + margin: 3.75rem !important; + } + .m-lg-16 { + margin: 4rem !important; + } + .m-lg-17 { + margin: 4.25rem !important; + } + .m-lg-18 { + margin: 4.5rem !important; + } + .m-lg-19 { + margin: 4.75rem !important; + } + .m-lg-20 { + margin: 5rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mx-lg-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-lg-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-lg-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; + } + .mx-lg-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-lg-5 { + margin-right: 1.25rem !important; + margin-left: 1.25rem !important; + } + .mx-lg-6 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-lg-7 { + margin-right: 1.75rem !important; + margin-left: 1.75rem !important; + } + .mx-lg-8 { + margin-right: 2rem !important; + margin-left: 2rem !important; + } + .mx-lg-9 { + margin-right: 2.25rem !important; + margin-left: 2.25rem !important; + } + .mx-lg-10 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; + } + .mx-lg-11 { + margin-right: 2.75rem !important; + margin-left: 2.75rem !important; + } + .mx-lg-12 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-lg-13 { + margin-right: 3.25rem !important; + margin-left: 3.25rem !important; + } + .mx-lg-14 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; + } + .mx-lg-15 { + margin-right: 3.75rem !important; + margin-left: 3.75rem !important; + } + .mx-lg-16 { + margin-right: 4rem !important; + margin-left: 4rem !important; + } + .mx-lg-17 { + margin-right: 4.25rem !important; + margin-left: 4.25rem !important; + } + .mx-lg-18 { + margin-right: 4.5rem !important; + margin-left: 4.5rem !important; + } + .mx-lg-19 { + margin-right: 4.75rem !important; + margin-left: 4.75rem !important; + } + .mx-lg-20 { + margin-right: 5rem !important; + margin-left: 5rem !important; + } + .mx-lg-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-lg-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; + } + .my-lg-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-lg-5 { + margin-top: 1.25rem !important; + margin-bottom: 1.25rem !important; + } + .my-lg-6 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-lg-7 { + margin-top: 1.75rem !important; + margin-bottom: 1.75rem !important; + } + .my-lg-8 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; + } + .my-lg-9 { + margin-top: 2.25rem !important; + margin-bottom: 2.25rem !important; + } + .my-lg-10 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; + } + .my-lg-11 { + margin-top: 2.75rem !important; + margin-bottom: 2.75rem !important; + } + .my-lg-12 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-lg-13 { + margin-top: 3.25rem !important; + margin-bottom: 3.25rem !important; + } + .my-lg-14 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; + } + .my-lg-15 { + margin-top: 3.75rem !important; + margin-bottom: 3.75rem !important; + } + .my-lg-16 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; + } + .my-lg-17 { + margin-top: 4.25rem !important; + margin-bottom: 4.25rem !important; + } + .my-lg-18 { + margin-top: 4.5rem !important; + margin-bottom: 4.5rem !important; + } + .my-lg-19 { + margin-top: 4.75rem !important; + margin-bottom: 4.75rem !important; + } + .my-lg-20 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-lg-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-lg-0 { + margin-top: 0 !important; + } + .mt-lg-1 { + margin-top: 0.25rem !important; + } + .mt-lg-2 { + margin-top: 0.5rem !important; + } + .mt-lg-3 { + margin-top: 0.75rem !important; + } + .mt-lg-4 { + margin-top: 1rem !important; + } + .mt-lg-5 { + margin-top: 1.25rem !important; + } + .mt-lg-6 { + margin-top: 1.5rem !important; + } + .mt-lg-7 { + margin-top: 1.75rem !important; + } + .mt-lg-8 { + margin-top: 2rem !important; + } + .mt-lg-9 { + margin-top: 2.25rem !important; + } + .mt-lg-10 { + margin-top: 2.5rem !important; + } + .mt-lg-11 { + margin-top: 2.75rem !important; + } + .mt-lg-12 { + margin-top: 3rem !important; + } + .mt-lg-13 { + margin-top: 3.25rem !important; + } + .mt-lg-14 { + margin-top: 3.5rem !important; + } + .mt-lg-15 { + margin-top: 3.75rem !important; + } + .mt-lg-16 { + margin-top: 4rem !important; + } + .mt-lg-17 { + margin-top: 4.25rem !important; + } + .mt-lg-18 { + margin-top: 4.5rem !important; + } + .mt-lg-19 { + margin-top: 4.75rem !important; + } + .mt-lg-20 { + margin-top: 5rem !important; + } + .mt-lg-auto { + margin-top: auto !important; + } + .me-lg-0 { + margin-right: 0 !important; + } + .me-lg-1 { + margin-right: 0.25rem !important; + } + .me-lg-2 { + margin-right: 0.5rem !important; + } + .me-lg-3 { + margin-right: 0.75rem !important; + } + .me-lg-4 { + margin-right: 1rem !important; + } + .me-lg-5 { + margin-right: 1.25rem !important; + } + .me-lg-6 { + margin-right: 1.5rem !important; + } + .me-lg-7 { + margin-right: 1.75rem !important; + } + .me-lg-8 { + margin-right: 2rem !important; + } + .me-lg-9 { + margin-right: 2.25rem !important; + } + .me-lg-10 { + margin-right: 2.5rem !important; + } + .me-lg-11 { + margin-right: 2.75rem !important; + } + .me-lg-12 { + margin-right: 3rem !important; + } + .me-lg-13 { + margin-right: 3.25rem !important; + } + .me-lg-14 { + margin-right: 3.5rem !important; + } + .me-lg-15 { + margin-right: 3.75rem !important; + } + .me-lg-16 { + margin-right: 4rem !important; + } + .me-lg-17 { + margin-right: 4.25rem !important; + } + .me-lg-18 { + margin-right: 4.5rem !important; + } + .me-lg-19 { + margin-right: 4.75rem !important; + } + .me-lg-20 { + margin-right: 5rem !important; + } + .me-lg-auto { + margin-right: auto !important; + } + .mb-lg-0 { + margin-bottom: 0 !important; + } + .mb-lg-1 { + margin-bottom: 0.25rem !important; + } + .mb-lg-2 { + margin-bottom: 0.5rem !important; + } + .mb-lg-3 { + margin-bottom: 0.75rem !important; + } + .mb-lg-4 { + margin-bottom: 1rem !important; + } + .mb-lg-5 { + margin-bottom: 1.25rem !important; + } + .mb-lg-6 { + margin-bottom: 1.5rem !important; + } + .mb-lg-7 { + margin-bottom: 1.75rem !important; + } + .mb-lg-8 { + margin-bottom: 2rem !important; + } + .mb-lg-9 { + margin-bottom: 2.25rem !important; + } + .mb-lg-10 { + margin-bottom: 2.5rem !important; + } + .mb-lg-11 { + margin-bottom: 2.75rem !important; + } + .mb-lg-12 { + margin-bottom: 3rem !important; + } + .mb-lg-13 { + margin-bottom: 3.25rem !important; + } + .mb-lg-14 { + margin-bottom: 3.5rem !important; + } + .mb-lg-15 { + margin-bottom: 3.75rem !important; + } + .mb-lg-16 { + margin-bottom: 4rem !important; + } + .mb-lg-17 { + margin-bottom: 4.25rem !important; + } + .mb-lg-18 { + margin-bottom: 4.5rem !important; + } + .mb-lg-19 { + margin-bottom: 4.75rem !important; + } + .mb-lg-20 { + margin-bottom: 5rem !important; + } + .mb-lg-auto { + margin-bottom: auto !important; + } + .ms-lg-0 { + margin-left: 0 !important; + } + .ms-lg-1 { + margin-left: 0.25rem !important; + } + .ms-lg-2 { + margin-left: 0.5rem !important; + } + .ms-lg-3 { + margin-left: 0.75rem !important; + } + .ms-lg-4 { + margin-left: 1rem !important; + } + .ms-lg-5 { + margin-left: 1.25rem !important; + } + .ms-lg-6 { + margin-left: 1.5rem !important; + } + .ms-lg-7 { + margin-left: 1.75rem !important; + } + .ms-lg-8 { + margin-left: 2rem !important; + } + .ms-lg-9 { + margin-left: 2.25rem !important; + } + .ms-lg-10 { + margin-left: 2.5rem !important; + } + .ms-lg-11 { + margin-left: 2.75rem !important; + } + .ms-lg-12 { + margin-left: 3rem !important; + } + .ms-lg-13 { + margin-left: 3.25rem !important; + } + .ms-lg-14 { + margin-left: 3.5rem !important; + } + .ms-lg-15 { + margin-left: 3.75rem !important; + } + .ms-lg-16 { + margin-left: 4rem !important; + } + .ms-lg-17 { + margin-left: 4.25rem !important; + } + .ms-lg-18 { + margin-left: 4.5rem !important; + } + .ms-lg-19 { + margin-left: 4.75rem !important; + } + .ms-lg-20 { + margin-left: 5rem !important; + } + .ms-lg-auto { + margin-left: auto !important; + } + .m-lg-n1 { + margin: -0.25rem !important; + } + .m-lg-n2 { + margin: -0.5rem !important; + } + .m-lg-n3 { + margin: -0.75rem !important; + } + .m-lg-n4 { + margin: -1rem !important; + } + .m-lg-n5 { + margin: -1.25rem !important; + } + .m-lg-n6 { + margin: -1.5rem !important; + } + .m-lg-n7 { + margin: -1.75rem !important; + } + .m-lg-n8 { + margin: -2rem !important; + } + .m-lg-n9 { + margin: -2.25rem !important; + } + .m-lg-n10 { + margin: -2.5rem !important; + } + .m-lg-n11 { + margin: -2.75rem !important; + } + .m-lg-n12 { + margin: -3rem !important; + } + .m-lg-n13 { + margin: -3.25rem !important; + } + .m-lg-n14 { + margin: -3.5rem !important; + } + .m-lg-n15 { + margin: -3.75rem !important; + } + .m-lg-n16 { + margin: -4rem !important; + } + .m-lg-n17 { + margin: -4.25rem !important; + } + .m-lg-n18 { + margin: -4.5rem !important; + } + .m-lg-n19 { + margin: -4.75rem !important; + } + .m-lg-n20 { + margin: -5rem !important; + } + .mx-lg-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; + } + .mx-lg-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; + } + .mx-lg-n3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; + } + .mx-lg-n4 { + margin-right: -1rem !important; + margin-left: -1rem !important; + } + .mx-lg-n5 { + margin-right: -1.25rem !important; + margin-left: -1.25rem !important; + } + .mx-lg-n6 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; + } + .mx-lg-n7 { + margin-right: -1.75rem !important; + margin-left: -1.75rem !important; + } + .mx-lg-n8 { + margin-right: -2rem !important; + margin-left: -2rem !important; + } + .mx-lg-n9 { + margin-right: -2.25rem !important; + margin-left: -2.25rem !important; + } + .mx-lg-n10 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; + } + .mx-lg-n11 { + margin-right: -2.75rem !important; + margin-left: -2.75rem !important; + } + .mx-lg-n12 { + margin-right: -3rem !important; + margin-left: -3rem !important; + } + .mx-lg-n13 { + margin-right: -3.25rem !important; + margin-left: -3.25rem !important; + } + .mx-lg-n14 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; + } + .mx-lg-n15 { + margin-right: -3.75rem !important; + margin-left: -3.75rem !important; + } + .mx-lg-n16 { + margin-right: -4rem !important; + margin-left: -4rem !important; + } + .mx-lg-n17 { + margin-right: -4.25rem !important; + margin-left: -4.25rem !important; + } + .mx-lg-n18 { + margin-right: -4.5rem !important; + margin-left: -4.5rem !important; + } + .mx-lg-n19 { + margin-right: -4.75rem !important; + margin-left: -4.75rem !important; + } + .mx-lg-n20 { + margin-right: -5rem !important; + margin-left: -5rem !important; + } + .my-lg-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; + } + .my-lg-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; + } + .my-lg-n3 { + margin-top: -0.75rem !important; + margin-bottom: -0.75rem !important; + } + .my-lg-n4 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; + } + .my-lg-n5 { + margin-top: -1.25rem !important; + margin-bottom: -1.25rem !important; + } + .my-lg-n6 { + margin-top: -1.5rem !important; + margin-bottom: -1.5rem !important; + } + .my-lg-n7 { + margin-top: -1.75rem !important; + margin-bottom: -1.75rem !important; + } + .my-lg-n8 { + margin-top: -2rem !important; + margin-bottom: -2rem !important; + } + .my-lg-n9 { + margin-top: -2.25rem !important; + margin-bottom: -2.25rem !important; + } + .my-lg-n10 { + margin-top: -2.5rem !important; + margin-bottom: -2.5rem !important; + } + .my-lg-n11 { + margin-top: -2.75rem !important; + margin-bottom: -2.75rem !important; + } + .my-lg-n12 { + margin-top: -3rem !important; + margin-bottom: -3rem !important; + } + .my-lg-n13 { + margin-top: -3.25rem !important; + margin-bottom: -3.25rem !important; + } + .my-lg-n14 { + margin-top: -3.5rem !important; + margin-bottom: -3.5rem !important; + } + .my-lg-n15 { + margin-top: -3.75rem !important; + margin-bottom: -3.75rem !important; + } + .my-lg-n16 { + margin-top: -4rem !important; + margin-bottom: -4rem !important; + } + .my-lg-n17 { + margin-top: -4.25rem !important; + margin-bottom: -4.25rem !important; + } + .my-lg-n18 { + margin-top: -4.5rem !important; + margin-bottom: -4.5rem !important; + } + .my-lg-n19 { + margin-top: -4.75rem !important; + margin-bottom: -4.75rem !important; + } + .my-lg-n20 { + margin-top: -5rem !important; + margin-bottom: -5rem !important; + } + .mt-lg-n1 { + margin-top: -0.25rem !important; + } + .mt-lg-n2 { + margin-top: -0.5rem !important; + } + .mt-lg-n3 { + margin-top: -0.75rem !important; + } + .mt-lg-n4 { + margin-top: -1rem !important; + } + .mt-lg-n5 { + margin-top: -1.25rem !important; + } + .mt-lg-n6 { + margin-top: -1.5rem !important; + } + .mt-lg-n7 { + margin-top: -1.75rem !important; + } + .mt-lg-n8 { + margin-top: -2rem !important; + } + .mt-lg-n9 { + margin-top: -2.25rem !important; + } + .mt-lg-n10 { + margin-top: -2.5rem !important; + } + .mt-lg-n11 { + margin-top: -2.75rem !important; + } + .mt-lg-n12 { + margin-top: -3rem !important; + } + .mt-lg-n13 { + margin-top: -3.25rem !important; + } + .mt-lg-n14 { + margin-top: -3.5rem !important; + } + .mt-lg-n15 { + margin-top: -3.75rem !important; + } + .mt-lg-n16 { + margin-top: -4rem !important; + } + .mt-lg-n17 { + margin-top: -4.25rem !important; + } + .mt-lg-n18 { + margin-top: -4.5rem !important; + } + .mt-lg-n19 { + margin-top: -4.75rem !important; + } + .mt-lg-n20 { + margin-top: -5rem !important; + } + .me-lg-n1 { + margin-right: -0.25rem !important; + } + .me-lg-n2 { + margin-right: -0.5rem !important; + } + .me-lg-n3 { + margin-right: -0.75rem !important; + } + .me-lg-n4 { + margin-right: -1rem !important; + } + .me-lg-n5 { + margin-right: -1.25rem !important; + } + .me-lg-n6 { + margin-right: -1.5rem !important; + } + .me-lg-n7 { + margin-right: -1.75rem !important; + } + .me-lg-n8 { + margin-right: -2rem !important; + } + .me-lg-n9 { + margin-right: -2.25rem !important; + } + .me-lg-n10 { + margin-right: -2.5rem !important; + } + .me-lg-n11 { + margin-right: -2.75rem !important; + } + .me-lg-n12 { + margin-right: -3rem !important; + } + .me-lg-n13 { + margin-right: -3.25rem !important; + } + .me-lg-n14 { + margin-right: -3.5rem !important; + } + .me-lg-n15 { + margin-right: -3.75rem !important; + } + .me-lg-n16 { + margin-right: -4rem !important; + } + .me-lg-n17 { + margin-right: -4.25rem !important; + } + .me-lg-n18 { + margin-right: -4.5rem !important; + } + .me-lg-n19 { + margin-right: -4.75rem !important; + } + .me-lg-n20 { + margin-right: -5rem !important; + } + .mb-lg-n1 { + margin-bottom: -0.25rem !important; + } + .mb-lg-n2 { + margin-bottom: -0.5rem !important; + } + .mb-lg-n3 { + margin-bottom: -0.75rem !important; + } + .mb-lg-n4 { + margin-bottom: -1rem !important; + } + .mb-lg-n5 { + margin-bottom: -1.25rem !important; + } + .mb-lg-n6 { + margin-bottom: -1.5rem !important; + } + .mb-lg-n7 { + margin-bottom: -1.75rem !important; + } + .mb-lg-n8 { + margin-bottom: -2rem !important; + } + .mb-lg-n9 { + margin-bottom: -2.25rem !important; + } + .mb-lg-n10 { + margin-bottom: -2.5rem !important; + } + .mb-lg-n11 { + margin-bottom: -2.75rem !important; + } + .mb-lg-n12 { + margin-bottom: -3rem !important; + } + .mb-lg-n13 { + margin-bottom: -3.25rem !important; + } + .mb-lg-n14 { + margin-bottom: -3.5rem !important; + } + .mb-lg-n15 { + margin-bottom: -3.75rem !important; + } + .mb-lg-n16 { + margin-bottom: -4rem !important; + } + .mb-lg-n17 { + margin-bottom: -4.25rem !important; + } + .mb-lg-n18 { + margin-bottom: -4.5rem !important; + } + .mb-lg-n19 { + margin-bottom: -4.75rem !important; + } + .mb-lg-n20 { + margin-bottom: -5rem !important; + } + .ms-lg-n1 { + margin-left: -0.25rem !important; + } + .ms-lg-n2 { + margin-left: -0.5rem !important; + } + .ms-lg-n3 { + margin-left: -0.75rem !important; + } + .ms-lg-n4 { + margin-left: -1rem !important; + } + .ms-lg-n5 { + margin-left: -1.25rem !important; + } + .ms-lg-n6 { + margin-left: -1.5rem !important; + } + .ms-lg-n7 { + margin-left: -1.75rem !important; + } + .ms-lg-n8 { + margin-left: -2rem !important; + } + .ms-lg-n9 { + margin-left: -2.25rem !important; + } + .ms-lg-n10 { + margin-left: -2.5rem !important; + } + .ms-lg-n11 { + margin-left: -2.75rem !important; + } + .ms-lg-n12 { + margin-left: -3rem !important; + } + .ms-lg-n13 { + margin-left: -3.25rem !important; + } + .ms-lg-n14 { + margin-left: -3.5rem !important; + } + .ms-lg-n15 { + margin-left: -3.75rem !important; + } + .ms-lg-n16 { + margin-left: -4rem !important; + } + .ms-lg-n17 { + margin-left: -4.25rem !important; + } + .ms-lg-n18 { + margin-left: -4.5rem !important; + } + .ms-lg-n19 { + margin-left: -4.75rem !important; + } + .ms-lg-n20 { + margin-left: -5rem !important; + } + .p-lg-0 { + padding: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .p-lg-3 { + padding: 0.75rem !important; + } + .p-lg-4 { + padding: 1rem !important; + } + .p-lg-5 { + padding: 1.25rem !important; + } + .p-lg-6 { + padding: 1.5rem !important; + } + .p-lg-7 { + padding: 1.75rem !important; + } + .p-lg-8 { + padding: 2rem !important; + } + .p-lg-9 { + padding: 2.25rem !important; + } + .p-lg-10 { + padding: 2.5rem !important; + } + .p-lg-11 { + padding: 2.75rem !important; + } + .p-lg-12 { + padding: 3rem !important; + } + .p-lg-13 { + padding: 3.25rem !important; + } + .p-lg-14 { + padding: 3.5rem !important; + } + .p-lg-15 { + padding: 3.75rem !important; + } + .p-lg-16 { + padding: 4rem !important; + } + .p-lg-17 { + padding: 4.25rem !important; + } + .p-lg-18 { + padding: 4.5rem !important; + } + .p-lg-19 { + padding: 4.75rem !important; + } + .p-lg-20 { + padding: 5rem !important; + } + .px-lg-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-lg-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-lg-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; + } + .px-lg-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-lg-5 { + padding-right: 1.25rem !important; + padding-left: 1.25rem !important; + } + .px-lg-6 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-lg-7 { + padding-right: 1.75rem !important; + padding-left: 1.75rem !important; + } + .px-lg-8 { + padding-right: 2rem !important; + padding-left: 2rem !important; + } + .px-lg-9 { + padding-right: 2.25rem !important; + padding-left: 2.25rem !important; + } + .px-lg-10 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; + } + .px-lg-11 { + padding-right: 2.75rem !important; + padding-left: 2.75rem !important; + } + .px-lg-12 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-lg-13 { + padding-right: 3.25rem !important; + padding-left: 3.25rem !important; + } + .px-lg-14 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; + } + .px-lg-15 { + padding-right: 3.75rem !important; + padding-left: 3.75rem !important; + } + .px-lg-16 { + padding-right: 4rem !important; + padding-left: 4rem !important; + } + .px-lg-17 { + padding-right: 4.25rem !important; + padding-left: 4.25rem !important; + } + .px-lg-18 { + padding-right: 4.5rem !important; + padding-left: 4.5rem !important; + } + .px-lg-19 { + padding-right: 4.75rem !important; + padding-left: 4.75rem !important; + } + .px-lg-20 { + padding-right: 5rem !important; + padding-left: 5rem !important; + } + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-lg-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; + } + .py-lg-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-lg-5 { + padding-top: 1.25rem !important; + padding-bottom: 1.25rem !important; + } + .py-lg-6 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-lg-7 { + padding-top: 1.75rem !important; + padding-bottom: 1.75rem !important; + } + .py-lg-8 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; + } + .py-lg-9 { + padding-top: 2.25rem !important; + padding-bottom: 2.25rem !important; + } + .py-lg-10 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; + } + .py-lg-11 { + padding-top: 2.75rem !important; + padding-bottom: 2.75rem !important; + } + .py-lg-12 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-lg-13 { + padding-top: 3.25rem !important; + padding-bottom: 3.25rem !important; + } + .py-lg-14 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; + } + .py-lg-15 { + padding-top: 3.75rem !important; + padding-bottom: 3.75rem !important; + } + .py-lg-16 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; + } + .py-lg-17 { + padding-top: 4.25rem !important; + padding-bottom: 4.25rem !important; + } + .py-lg-18 { + padding-top: 4.5rem !important; + padding-bottom: 4.5rem !important; + } + .py-lg-19 { + padding-top: 4.75rem !important; + padding-bottom: 4.75rem !important; + } + .py-lg-20 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .pt-lg-0 { + padding-top: 0 !important; + } + .pt-lg-1 { + padding-top: 0.25rem !important; + } + .pt-lg-2 { + padding-top: 0.5rem !important; + } + .pt-lg-3 { + padding-top: 0.75rem !important; + } + .pt-lg-4 { + padding-top: 1rem !important; + } + .pt-lg-5 { + padding-top: 1.25rem !important; + } + .pt-lg-6 { + padding-top: 1.5rem !important; + } + .pt-lg-7 { + padding-top: 1.75rem !important; + } + .pt-lg-8 { + padding-top: 2rem !important; + } + .pt-lg-9 { + padding-top: 2.25rem !important; + } + .pt-lg-10 { + padding-top: 2.5rem !important; + } + .pt-lg-11 { + padding-top: 2.75rem !important; + } + .pt-lg-12 { + padding-top: 3rem !important; + } + .pt-lg-13 { + padding-top: 3.25rem !important; + } + .pt-lg-14 { + padding-top: 3.5rem !important; + } + .pt-lg-15 { + padding-top: 3.75rem !important; + } + .pt-lg-16 { + padding-top: 4rem !important; + } + .pt-lg-17 { + padding-top: 4.25rem !important; + } + .pt-lg-18 { + padding-top: 4.5rem !important; + } + .pt-lg-19 { + padding-top: 4.75rem !important; + } + .pt-lg-20 { + padding-top: 5rem !important; + } + .pe-lg-0 { + padding-right: 0 !important; + } + .pe-lg-1 { + padding-right: 0.25rem !important; + } + .pe-lg-2 { + padding-right: 0.5rem !important; + } + .pe-lg-3 { + padding-right: 0.75rem !important; + } + .pe-lg-4 { + padding-right: 1rem !important; + } + .pe-lg-5 { + padding-right: 1.25rem !important; + } + .pe-lg-6 { + padding-right: 1.5rem !important; + } + .pe-lg-7 { + padding-right: 1.75rem !important; + } + .pe-lg-8 { + padding-right: 2rem !important; + } + .pe-lg-9 { + padding-right: 2.25rem !important; + } + .pe-lg-10 { + padding-right: 2.5rem !important; + } + .pe-lg-11 { + padding-right: 2.75rem !important; + } + .pe-lg-12 { + padding-right: 3rem !important; + } + .pe-lg-13 { + padding-right: 3.25rem !important; + } + .pe-lg-14 { + padding-right: 3.5rem !important; + } + .pe-lg-15 { + padding-right: 3.75rem !important; + } + .pe-lg-16 { + padding-right: 4rem !important; + } + .pe-lg-17 { + padding-right: 4.25rem !important; + } + .pe-lg-18 { + padding-right: 4.5rem !important; + } + .pe-lg-19 { + padding-right: 4.75rem !important; + } + .pe-lg-20 { + padding-right: 5rem !important; + } + .pb-lg-0 { + padding-bottom: 0 !important; + } + .pb-lg-1 { + padding-bottom: 0.25rem !important; + } + .pb-lg-2 { + padding-bottom: 0.5rem !important; + } + .pb-lg-3 { + padding-bottom: 0.75rem !important; + } + .pb-lg-4 { + padding-bottom: 1rem !important; + } + .pb-lg-5 { + padding-bottom: 1.25rem !important; + } + .pb-lg-6 { + padding-bottom: 1.5rem !important; + } + .pb-lg-7 { + padding-bottom: 1.75rem !important; + } + .pb-lg-8 { + padding-bottom: 2rem !important; + } + .pb-lg-9 { + padding-bottom: 2.25rem !important; + } + .pb-lg-10 { + padding-bottom: 2.5rem !important; + } + .pb-lg-11 { + padding-bottom: 2.75rem !important; + } + .pb-lg-12 { + padding-bottom: 3rem !important; + } + .pb-lg-13 { + padding-bottom: 3.25rem !important; + } + .pb-lg-14 { + padding-bottom: 3.5rem !important; + } + .pb-lg-15 { + padding-bottom: 3.75rem !important; + } + .pb-lg-16 { + padding-bottom: 4rem !important; + } + .pb-lg-17 { + padding-bottom: 4.25rem !important; + } + .pb-lg-18 { + padding-bottom: 4.5rem !important; + } + .pb-lg-19 { + padding-bottom: 4.75rem !important; + } + .pb-lg-20 { + padding-bottom: 5rem !important; + } + .ps-lg-0 { + padding-left: 0 !important; + } + .ps-lg-1 { + padding-left: 0.25rem !important; + } + .ps-lg-2 { + padding-left: 0.5rem !important; + } + .ps-lg-3 { + padding-left: 0.75rem !important; + } + .ps-lg-4 { + padding-left: 1rem !important; + } + .ps-lg-5 { + padding-left: 1.25rem !important; + } + .ps-lg-6 { + padding-left: 1.5rem !important; + } + .ps-lg-7 { + padding-left: 1.75rem !important; + } + .ps-lg-8 { + padding-left: 2rem !important; + } + .ps-lg-9 { + padding-left: 2.25rem !important; + } + .ps-lg-10 { + padding-left: 2.5rem !important; + } + .ps-lg-11 { + padding-left: 2.75rem !important; + } + .ps-lg-12 { + padding-left: 3rem !important; + } + .ps-lg-13 { + padding-left: 3.25rem !important; + } + .ps-lg-14 { + padding-left: 3.5rem !important; + } + .ps-lg-15 { + padding-left: 3.75rem !important; + } + .ps-lg-16 { + padding-left: 4rem !important; + } + .ps-lg-17 { + padding-left: 4.25rem !important; + } + .ps-lg-18 { + padding-left: 4.5rem !important; + } + .ps-lg-19 { + padding-left: 4.75rem !important; + } + .ps-lg-20 { + padding-left: 5rem !important; + } + .gap-lg-0 { + gap: 0 !important; + } + .gap-lg-1 { + gap: 0.25rem !important; + } + .gap-lg-2 { + gap: 0.5rem !important; + } + .gap-lg-3 { + gap: 0.75rem !important; + } + .gap-lg-4 { + gap: 1rem !important; + } + .gap-lg-5 { + gap: 1.25rem !important; + } + .gap-lg-6 { + gap: 1.5rem !important; + } + .gap-lg-7 { + gap: 1.75rem !important; + } + .gap-lg-8 { + gap: 2rem !important; + } + .gap-lg-9 { + gap: 2.25rem !important; + } + .gap-lg-10 { + gap: 2.5rem !important; + } + .gap-lg-11 { + gap: 2.75rem !important; + } + .gap-lg-12 { + gap: 3rem !important; + } + .gap-lg-13 { + gap: 3.25rem !important; + } + .gap-lg-14 { + gap: 3.5rem !important; + } + .gap-lg-15 { + gap: 3.75rem !important; + } + .gap-lg-16 { + gap: 4rem !important; + } + .gap-lg-17 { + gap: 4.25rem !important; + } + .gap-lg-18 { + gap: 4.5rem !important; + } + .gap-lg-19 { + gap: 4.75rem !important; + } + .gap-lg-20 { + gap: 5rem !important; + } + .row-gap-lg-0 { + row-gap: 0 !important; + } + .row-gap-lg-1 { + row-gap: 0.25rem !important; + } + .row-gap-lg-2 { + row-gap: 0.5rem !important; + } + .row-gap-lg-3 { + row-gap: 0.75rem !important; + } + .row-gap-lg-4 { + row-gap: 1rem !important; + } + .row-gap-lg-5 { + row-gap: 1.25rem !important; + } + .row-gap-lg-6 { + row-gap: 1.5rem !important; + } + .row-gap-lg-7 { + row-gap: 1.75rem !important; + } + .row-gap-lg-8 { + row-gap: 2rem !important; + } + .row-gap-lg-9 { + row-gap: 2.25rem !important; + } + .row-gap-lg-10 { + row-gap: 2.5rem !important; + } + .row-gap-lg-11 { + row-gap: 2.75rem !important; + } + .row-gap-lg-12 { + row-gap: 3rem !important; + } + .row-gap-lg-13 { + row-gap: 3.25rem !important; + } + .row-gap-lg-14 { + row-gap: 3.5rem !important; + } + .row-gap-lg-15 { + row-gap: 3.75rem !important; + } + .row-gap-lg-16 { + row-gap: 4rem !important; + } + .row-gap-lg-17 { + row-gap: 4.25rem !important; + } + .row-gap-lg-18 { + row-gap: 4.5rem !important; + } + .row-gap-lg-19 { + row-gap: 4.75rem !important; + } + .row-gap-lg-20 { + row-gap: 5rem !important; + } + .column-gap-lg-0 { + column-gap: 0 !important; + } + .column-gap-lg-1 { + column-gap: 0.25rem !important; + } + .column-gap-lg-2 { + column-gap: 0.5rem !important; + } + .column-gap-lg-3 { + column-gap: 0.75rem !important; + } + .column-gap-lg-4 { + column-gap: 1rem !important; + } + .column-gap-lg-5 { + column-gap: 1.25rem !important; + } + .column-gap-lg-6 { + column-gap: 1.5rem !important; + } + .column-gap-lg-7 { + column-gap: 1.75rem !important; + } + .column-gap-lg-8 { + column-gap: 2rem !important; + } + .column-gap-lg-9 { + column-gap: 2.25rem !important; + } + .column-gap-lg-10 { + column-gap: 2.5rem !important; + } + .column-gap-lg-11 { + column-gap: 2.75rem !important; + } + .column-gap-lg-12 { + column-gap: 3rem !important; + } + .column-gap-lg-13 { + column-gap: 3.25rem !important; + } + .column-gap-lg-14 { + column-gap: 3.5rem !important; + } + .column-gap-lg-15 { + column-gap: 3.75rem !important; + } + .column-gap-lg-16 { + column-gap: 4rem !important; + } + .column-gap-lg-17 { + column-gap: 4.25rem !important; + } + .column-gap-lg-18 { + column-gap: 4.5rem !important; + } + .column-gap-lg-19 { + column-gap: 4.75rem !important; + } + .column-gap-lg-20 { + column-gap: 5rem !important; + } + .fs-lg-1 { + font-size: calc(1.3rem + 0.6vw) !important; + } + .fs-lg-2 { + font-size: calc(1.275rem + 0.3vw) !important; + } + .fs-lg-3 { + font-size: calc(1.26rem + 0.12vw) !important; + } + .fs-lg-4 { + font-size: 1.25rem !important; + } + .fs-lg-5 { + font-size: 1.15rem !important; + } + .fs-lg-6 { + font-size: 1.075rem !important; + } + .fs-lg-7 { + font-size: 0.95rem !important; + } + .fs-lg-8 { + font-size: 0.85rem !important; + } + .fs-lg-9 { + font-size: 0.75rem !important; + } + .fs-lg-10 { + font-size: 0.5rem !important; + } + .fs-lg-base { + font-size: 1rem !important; + } + .fs-lg-fluid { + font-size: 100% !important; + } + .fs-lg-2x { + font-size: calc(1.325rem + 0.9vw) !important; + } + .fs-lg-2qx { + font-size: calc(1.35rem + 1.2vw) !important; + } + .fs-lg-2hx { + font-size: calc(1.375rem + 1.5vw) !important; + } + .fs-lg-2tx { + font-size: calc(1.4rem + 1.8vw) !important; + } + .fs-lg-3x { + font-size: calc(1.425rem + 2.1vw) !important; + } + .fs-lg-3qx { + font-size: calc(1.45rem + 2.4vw) !important; + } + .fs-lg-3hx { + font-size: calc(1.475rem + 2.7vw) !important; + } + .fs-lg-3tx { + font-size: calc(1.5rem + 3vw) !important; + } + .fs-lg-4x { + font-size: calc(1.525rem + 3.3vw) !important; + } + .fs-lg-4qx { + font-size: calc(1.55rem + 3.6vw) !important; + } + .fs-lg-4hx { + font-size: calc(1.575rem + 3.9vw) !important; + } + .fs-lg-4tx { + font-size: calc(1.6rem + 4.2vw) !important; + } + .fs-lg-5x { + font-size: calc(1.625rem + 4.5vw) !important; + } + .fs-lg-5qx { + font-size: calc(1.65rem + 4.8vw) !important; + } + .fs-lg-5hx { + font-size: calc(1.675rem + 5.1vw) !important; + } + .fs-lg-5tx { + font-size: calc(1.7rem + 5.4vw) !important; + } + .text-lg-start { + text-align: left !important; + } + .text-lg-end { + text-align: right !important; + } + .text-lg-center { + text-align: center !important; + } + .min-w-lg-unset { + min-width: unset !important; + } + .min-w-lg-25 { + min-width: 25% !important; + } + .min-w-lg-50 { + min-width: 50% !important; + } + .min-w-lg-75 { + min-width: 75% !important; + } + .min-w-lg-100 { + min-width: 100% !important; + } + .min-w-lg-auto { + min-width: auto !important; + } + .min-w-lg-1px { + min-width: 1px !important; + } + .min-w-lg-2px { + min-width: 2px !important; + } + .min-w-lg-3px { + min-width: 3px !important; + } + .min-w-lg-4px { + min-width: 4px !important; + } + .min-w-lg-5px { + min-width: 5px !important; + } + .min-w-lg-6px { + min-width: 6px !important; + } + .min-w-lg-7px { + min-width: 7px !important; + } + .min-w-lg-8px { + min-width: 8px !important; + } + .min-w-lg-9px { + min-width: 9px !important; + } + .min-w-lg-10px { + min-width: 10px !important; + } + .min-w-lg-15px { + min-width: 15px !important; + } + .min-w-lg-20px { + min-width: 20px !important; + } + .min-w-lg-25px { + min-width: 25px !important; + } + .min-w-lg-30px { + min-width: 30px !important; + } + .min-w-lg-35px { + min-width: 35px !important; + } + .min-w-lg-40px { + min-width: 40px !important; + } + .min-w-lg-45px { + min-width: 45px !important; + } + .min-w-lg-50px { + min-width: 50px !important; + } + .min-w-lg-55px { + min-width: 55px !important; + } + .min-w-lg-60px { + min-width: 60px !important; + } + .min-w-lg-65px { + min-width: 65px !important; + } + .min-w-lg-70px { + min-width: 70px !important; + } + .min-w-lg-75px { + min-width: 75px !important; + } + .min-w-lg-80px { + min-width: 80px !important; + } + .min-w-lg-85px { + min-width: 85px !important; + } + .min-w-lg-90px { + min-width: 90px !important; + } + .min-w-lg-95px { + min-width: 95px !important; + } + .min-w-lg-100px { + min-width: 100px !important; + } + .min-w-lg-125px { + min-width: 125px !important; + } + .min-w-lg-150px { + min-width: 150px !important; + } + .min-w-lg-175px { + min-width: 175px !important; + } + .min-w-lg-200px { + min-width: 200px !important; + } + .min-w-lg-225px { + min-width: 225px !important; + } + .min-w-lg-250px { + min-width: 250px !important; + } + .min-w-lg-275px { + min-width: 275px !important; + } + .min-w-lg-300px { + min-width: 300px !important; + } + .min-w-lg-325px { + min-width: 325px !important; + } + .min-w-lg-350px { + min-width: 350px !important; + } + .min-w-lg-375px { + min-width: 375px !important; + } + .min-w-lg-400px { + min-width: 400px !important; + } + .min-w-lg-425px { + min-width: 425px !important; + } + .min-w-lg-450px { + min-width: 450px !important; + } + .min-w-lg-475px { + min-width: 475px !important; + } + .min-w-lg-500px { + min-width: 500px !important; + } + .min-w-lg-550px { + min-width: 550px !important; + } + .min-w-lg-600px { + min-width: 600px !important; + } + .min-w-lg-650px { + min-width: 650px !important; + } + .min-w-lg-700px { + min-width: 700px !important; + } + .min-w-lg-750px { + min-width: 750px !important; + } + .min-w-lg-800px { + min-width: 800px !important; + } + .min-w-lg-850px { + min-width: 850px !important; + } + .min-w-lg-900px { + min-width: 900px !important; + } + .min-w-lg-950px { + min-width: 950px !important; + } + .min-w-lg-1000px { + min-width: 1000px !important; + } + .min-h-lg-unset { + min-height: unset !important; + } + .min-h-lg-25 { + min-height: 25% !important; + } + .min-h-lg-50 { + min-height: 50% !important; + } + .min-h-lg-75 { + min-height: 75% !important; + } + .min-h-lg-100 { + min-height: 100% !important; + } + .min-h-lg-auto { + min-height: auto !important; + } + .min-h-lg-1px { + min-height: 1px !important; + } + .min-h-lg-2px { + min-height: 2px !important; + } + .min-h-lg-3px { + min-height: 3px !important; + } + .min-h-lg-4px { + min-height: 4px !important; + } + .min-h-lg-5px { + min-height: 5px !important; + } + .min-h-lg-6px { + min-height: 6px !important; + } + .min-h-lg-7px { + min-height: 7px !important; + } + .min-h-lg-8px { + min-height: 8px !important; + } + .min-h-lg-9px { + min-height: 9px !important; + } + .min-h-lg-10px { + min-height: 10px !important; + } + .min-h-lg-15px { + min-height: 15px !important; + } + .min-h-lg-20px { + min-height: 20px !important; + } + .min-h-lg-25px { + min-height: 25px !important; + } + .min-h-lg-30px { + min-height: 30px !important; + } + .min-h-lg-35px { + min-height: 35px !important; + } + .min-h-lg-40px { + min-height: 40px !important; + } + .min-h-lg-45px { + min-height: 45px !important; + } + .min-h-lg-50px { + min-height: 50px !important; + } + .min-h-lg-55px { + min-height: 55px !important; + } + .min-h-lg-60px { + min-height: 60px !important; + } + .min-h-lg-65px { + min-height: 65px !important; + } + .min-h-lg-70px { + min-height: 70px !important; + } + .min-h-lg-75px { + min-height: 75px !important; + } + .min-h-lg-80px { + min-height: 80px !important; + } + .min-h-lg-85px { + min-height: 85px !important; + } + .min-h-lg-90px { + min-height: 90px !important; + } + .min-h-lg-95px { + min-height: 95px !important; + } + .min-h-lg-100px { + min-height: 100px !important; + } + .min-h-lg-125px { + min-height: 125px !important; + } + .min-h-lg-150px { + min-height: 150px !important; + } + .min-h-lg-175px { + min-height: 175px !important; + } + .min-h-lg-200px { + min-height: 200px !important; + } + .min-h-lg-225px { + min-height: 225px !important; + } + .min-h-lg-250px { + min-height: 250px !important; + } + .min-h-lg-275px { + min-height: 275px !important; + } + .min-h-lg-300px { + min-height: 300px !important; + } + .min-h-lg-325px { + min-height: 325px !important; + } + .min-h-lg-350px { + min-height: 350px !important; + } + .min-h-lg-375px { + min-height: 375px !important; + } + .min-h-lg-400px { + min-height: 400px !important; + } + .min-h-lg-425px { + min-height: 425px !important; + } + .min-h-lg-450px { + min-height: 450px !important; + } + .min-h-lg-475px { + min-height: 475px !important; + } + .min-h-lg-500px { + min-height: 500px !important; + } + .min-h-lg-550px { + min-height: 550px !important; + } + .min-h-lg-600px { + min-height: 600px !important; + } + .min-h-lg-650px { + min-height: 650px !important; + } + .min-h-lg-700px { + min-height: 700px !important; + } + .min-h-lg-750px { + min-height: 750px !important; + } + .min-h-lg-800px { + min-height: 800px !important; + } + .min-h-lg-850px { + min-height: 850px !important; + } + .min-h-lg-900px { + min-height: 900px !important; + } + .min-h-lg-950px { + min-height: 950px !important; + } + .min-h-lg-1000px { + min-height: 1000px !important; + } +} +@media (min-width: 1200px) { + .float-xl-start { + float: left !important; + } + .float-xl-end { + float: right !important; + } + .float-xl-none { + float: none !important; + } + .object-fit-xl-contain { + object-fit: contain !important; + } + .object-fit-xl-cover { + object-fit: cover !important; + } + .object-fit-xl-fill { + object-fit: fill !important; + } + .object-fit-xl-scale { + object-fit: scale-down !important; + } + .object-fit-xl-none { + object-fit: none !important; + } + .overflow-xl-auto { + overflow: auto !important; + } + .overflow-xl-hidden { + overflow: hidden !important; + } + .overflow-xl-visible { + overflow: visible !important; + } + .overflow-xl-scroll { + overflow: scroll !important; + } + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-grid { + display: grid !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: flex !important; + } + .d-xl-inline-flex { + display: inline-flex !important; + } + .d-xl-none { + display: none !important; + } + .position-xl-static { + position: static !important; + } + .position-xl-relative { + position: relative !important; + } + .position-xl-absolute { + position: absolute !important; + } + .position-xl-fixed { + position: fixed !important; + } + .position-xl-sticky { + position: sticky !important; + } + .w-xl-unset { + width: unset !important; + } + .w-xl-25 { + width: 25% !important; + } + .w-xl-50 { + width: 50% !important; + } + .w-xl-75 { + width: 75% !important; + } + .w-xl-100 { + width: 100% !important; + } + .w-xl-auto { + width: auto !important; + } + .w-xl-1px { + width: 1px !important; + } + .w-xl-2px { + width: 2px !important; + } + .w-xl-3px { + width: 3px !important; + } + .w-xl-4px { + width: 4px !important; + } + .w-xl-5px { + width: 5px !important; + } + .w-xl-6px { + width: 6px !important; + } + .w-xl-7px { + width: 7px !important; + } + .w-xl-8px { + width: 8px !important; + } + .w-xl-9px { + width: 9px !important; + } + .w-xl-10px { + width: 10px !important; + } + .w-xl-15px { + width: 15px !important; + } + .w-xl-20px { + width: 20px !important; + } + .w-xl-25px { + width: 25px !important; + } + .w-xl-30px { + width: 30px !important; + } + .w-xl-35px { + width: 35px !important; + } + .w-xl-40px { + width: 40px !important; + } + .w-xl-45px { + width: 45px !important; + } + .w-xl-50px { + width: 50px !important; + } + .w-xl-55px { + width: 55px !important; + } + .w-xl-60px { + width: 60px !important; + } + .w-xl-65px { + width: 65px !important; + } + .w-xl-70px { + width: 70px !important; + } + .w-xl-75px { + width: 75px !important; + } + .w-xl-80px { + width: 80px !important; + } + .w-xl-85px { + width: 85px !important; + } + .w-xl-90px { + width: 90px !important; + } + .w-xl-95px { + width: 95px !important; + } + .w-xl-100px { + width: 100px !important; + } + .w-xl-125px { + width: 125px !important; + } + .w-xl-150px { + width: 150px !important; + } + .w-xl-175px { + width: 175px !important; + } + .w-xl-200px { + width: 200px !important; + } + .w-xl-225px { + width: 225px !important; + } + .w-xl-250px { + width: 250px !important; + } + .w-xl-275px { + width: 275px !important; + } + .w-xl-300px { + width: 300px !important; + } + .w-xl-325px { + width: 325px !important; + } + .w-xl-350px { + width: 350px !important; + } + .w-xl-375px { + width: 375px !important; + } + .w-xl-400px { + width: 400px !important; + } + .w-xl-425px { + width: 425px !important; + } + .w-xl-450px { + width: 450px !important; + } + .w-xl-475px { + width: 475px !important; + } + .w-xl-500px { + width: 500px !important; + } + .w-xl-550px { + width: 550px !important; + } + .w-xl-600px { + width: 600px !important; + } + .w-xl-650px { + width: 650px !important; + } + .w-xl-700px { + width: 700px !important; + } + .w-xl-750px { + width: 750px !important; + } + .w-xl-800px { + width: 800px !important; + } + .w-xl-850px { + width: 850px !important; + } + .w-xl-900px { + width: 900px !important; + } + .w-xl-950px { + width: 950px !important; + } + .w-xl-1000px { + width: 1000px !important; + } + .mw-xl-unset { + max-width: unset !important; + } + .mw-xl-25 { + max-width: 25% !important; + } + .mw-xl-50 { + max-width: 50% !important; + } + .mw-xl-75 { + max-width: 75% !important; + } + .mw-xl-100 { + max-width: 100% !important; + } + .mw-xl-auto { + max-width: auto !important; + } + .mw-xl-1px { + max-width: 1px !important; + } + .mw-xl-2px { + max-width: 2px !important; + } + .mw-xl-3px { + max-width: 3px !important; + } + .mw-xl-4px { + max-width: 4px !important; + } + .mw-xl-5px { + max-width: 5px !important; + } + .mw-xl-6px { + max-width: 6px !important; + } + .mw-xl-7px { + max-width: 7px !important; + } + .mw-xl-8px { + max-width: 8px !important; + } + .mw-xl-9px { + max-width: 9px !important; + } + .mw-xl-10px { + max-width: 10px !important; + } + .mw-xl-15px { + max-width: 15px !important; + } + .mw-xl-20px { + max-width: 20px !important; + } + .mw-xl-25px { + max-width: 25px !important; + } + .mw-xl-30px { + max-width: 30px !important; + } + .mw-xl-35px { + max-width: 35px !important; + } + .mw-xl-40px { + max-width: 40px !important; + } + .mw-xl-45px { + max-width: 45px !important; + } + .mw-xl-50px { + max-width: 50px !important; + } + .mw-xl-55px { + max-width: 55px !important; + } + .mw-xl-60px { + max-width: 60px !important; + } + .mw-xl-65px { + max-width: 65px !important; + } + .mw-xl-70px { + max-width: 70px !important; + } + .mw-xl-75px { + max-width: 75px !important; + } + .mw-xl-80px { + max-width: 80px !important; + } + .mw-xl-85px { + max-width: 85px !important; + } + .mw-xl-90px { + max-width: 90px !important; + } + .mw-xl-95px { + max-width: 95px !important; + } + .mw-xl-100px { + max-width: 100px !important; + } + .mw-xl-125px { + max-width: 125px !important; + } + .mw-xl-150px { + max-width: 150px !important; + } + .mw-xl-175px { + max-width: 175px !important; + } + .mw-xl-200px { + max-width: 200px !important; + } + .mw-xl-225px { + max-width: 225px !important; + } + .mw-xl-250px { + max-width: 250px !important; + } + .mw-xl-275px { + max-width: 275px !important; + } + .mw-xl-300px { + max-width: 300px !important; + } + .mw-xl-325px { + max-width: 325px !important; + } + .mw-xl-350px { + max-width: 350px !important; + } + .mw-xl-375px { + max-width: 375px !important; + } + .mw-xl-400px { + max-width: 400px !important; + } + .mw-xl-425px { + max-width: 425px !important; + } + .mw-xl-450px { + max-width: 450px !important; + } + .mw-xl-475px { + max-width: 475px !important; + } + .mw-xl-500px { + max-width: 500px !important; + } + .mw-xl-550px { + max-width: 550px !important; + } + .mw-xl-600px { + max-width: 600px !important; + } + .mw-xl-650px { + max-width: 650px !important; + } + .mw-xl-700px { + max-width: 700px !important; + } + .mw-xl-750px { + max-width: 750px !important; + } + .mw-xl-800px { + max-width: 800px !important; + } + .mw-xl-850px { + max-width: 850px !important; + } + .mw-xl-900px { + max-width: 900px !important; + } + .mw-xl-950px { + max-width: 950px !important; + } + .mw-xl-1000px { + max-width: 1000px !important; + } + .h-xl-unset { + height: unset !important; + } + .h-xl-25 { + height: 25% !important; + } + .h-xl-50 { + height: 50% !important; + } + .h-xl-75 { + height: 75% !important; + } + .h-xl-100 { + height: 100% !important; + } + .h-xl-auto { + height: auto !important; + } + .h-xl-1px { + height: 1px !important; + } + .h-xl-2px { + height: 2px !important; + } + .h-xl-3px { + height: 3px !important; + } + .h-xl-4px { + height: 4px !important; + } + .h-xl-5px { + height: 5px !important; + } + .h-xl-6px { + height: 6px !important; + } + .h-xl-7px { + height: 7px !important; + } + .h-xl-8px { + height: 8px !important; + } + .h-xl-9px { + height: 9px !important; + } + .h-xl-10px { + height: 10px !important; + } + .h-xl-15px { + height: 15px !important; + } + .h-xl-20px { + height: 20px !important; + } + .h-xl-25px { + height: 25px !important; + } + .h-xl-30px { + height: 30px !important; + } + .h-xl-35px { + height: 35px !important; + } + .h-xl-40px { + height: 40px !important; + } + .h-xl-45px { + height: 45px !important; + } + .h-xl-50px { + height: 50px !important; + } + .h-xl-55px { + height: 55px !important; + } + .h-xl-60px { + height: 60px !important; + } + .h-xl-65px { + height: 65px !important; + } + .h-xl-70px { + height: 70px !important; + } + .h-xl-75px { + height: 75px !important; + } + .h-xl-80px { + height: 80px !important; + } + .h-xl-85px { + height: 85px !important; + } + .h-xl-90px { + height: 90px !important; + } + .h-xl-95px { + height: 95px !important; + } + .h-xl-100px { + height: 100px !important; + } + .h-xl-125px { + height: 125px !important; + } + .h-xl-150px { + height: 150px !important; + } + .h-xl-175px { + height: 175px !important; + } + .h-xl-200px { + height: 200px !important; + } + .h-xl-225px { + height: 225px !important; + } + .h-xl-250px { + height: 250px !important; + } + .h-xl-275px { + height: 275px !important; + } + .h-xl-300px { + height: 300px !important; + } + .h-xl-325px { + height: 325px !important; + } + .h-xl-350px { + height: 350px !important; + } + .h-xl-375px { + height: 375px !important; + } + .h-xl-400px { + height: 400px !important; + } + .h-xl-425px { + height: 425px !important; + } + .h-xl-450px { + height: 450px !important; + } + .h-xl-475px { + height: 475px !important; + } + .h-xl-500px { + height: 500px !important; + } + .h-xl-550px { + height: 550px !important; + } + .h-xl-600px { + height: 600px !important; + } + .h-xl-650px { + height: 650px !important; + } + .h-xl-700px { + height: 700px !important; + } + .h-xl-750px { + height: 750px !important; + } + .h-xl-800px { + height: 800px !important; + } + .h-xl-850px { + height: 850px !important; + } + .h-xl-900px { + height: 900px !important; + } + .h-xl-950px { + height: 950px !important; + } + .h-xl-1000px { + height: 1000px !important; + } + .mh-xl-unset { + max-height: unset !important; + } + .mh-xl-25 { + max-height: 25% !important; + } + .mh-xl-50 { + max-height: 50% !important; + } + .mh-xl-75 { + max-height: 75% !important; + } + .mh-xl-100 { + max-height: 100% !important; + } + .mh-xl-auto { + max-height: auto !important; + } + .mh-xl-1px { + max-height: 1px !important; + } + .mh-xl-2px { + max-height: 2px !important; + } + .mh-xl-3px { + max-height: 3px !important; + } + .mh-xl-4px { + max-height: 4px !important; + } + .mh-xl-5px { + max-height: 5px !important; + } + .mh-xl-6px { + max-height: 6px !important; + } + .mh-xl-7px { + max-height: 7px !important; + } + .mh-xl-8px { + max-height: 8px !important; + } + .mh-xl-9px { + max-height: 9px !important; + } + .mh-xl-10px { + max-height: 10px !important; + } + .mh-xl-15px { + max-height: 15px !important; + } + .mh-xl-20px { + max-height: 20px !important; + } + .mh-xl-25px { + max-height: 25px !important; + } + .mh-xl-30px { + max-height: 30px !important; + } + .mh-xl-35px { + max-height: 35px !important; + } + .mh-xl-40px { + max-height: 40px !important; + } + .mh-xl-45px { + max-height: 45px !important; + } + .mh-xl-50px { + max-height: 50px !important; + } + .mh-xl-55px { + max-height: 55px !important; + } + .mh-xl-60px { + max-height: 60px !important; + } + .mh-xl-65px { + max-height: 65px !important; + } + .mh-xl-70px { + max-height: 70px !important; + } + .mh-xl-75px { + max-height: 75px !important; + } + .mh-xl-80px { + max-height: 80px !important; + } + .mh-xl-85px { + max-height: 85px !important; + } + .mh-xl-90px { + max-height: 90px !important; + } + .mh-xl-95px { + max-height: 95px !important; + } + .mh-xl-100px { + max-height: 100px !important; + } + .mh-xl-125px { + max-height: 125px !important; + } + .mh-xl-150px { + max-height: 150px !important; + } + .mh-xl-175px { + max-height: 175px !important; + } + .mh-xl-200px { + max-height: 200px !important; + } + .mh-xl-225px { + max-height: 225px !important; + } + .mh-xl-250px { + max-height: 250px !important; + } + .mh-xl-275px { + max-height: 275px !important; + } + .mh-xl-300px { + max-height: 300px !important; + } + .mh-xl-325px { + max-height: 325px !important; + } + .mh-xl-350px { + max-height: 350px !important; + } + .mh-xl-375px { + max-height: 375px !important; + } + .mh-xl-400px { + max-height: 400px !important; + } + .mh-xl-425px { + max-height: 425px !important; + } + .mh-xl-450px { + max-height: 450px !important; + } + .mh-xl-475px { + max-height: 475px !important; + } + .mh-xl-500px { + max-height: 500px !important; + } + .mh-xl-550px { + max-height: 550px !important; + } + .mh-xl-600px { + max-height: 600px !important; + } + .mh-xl-650px { + max-height: 650px !important; + } + .mh-xl-700px { + max-height: 700px !important; + } + .mh-xl-750px { + max-height: 750px !important; + } + .mh-xl-800px { + max-height: 800px !important; + } + .mh-xl-850px { + max-height: 850px !important; + } + .mh-xl-900px { + max-height: 900px !important; + } + .mh-xl-950px { + max-height: 950px !important; + } + .mh-xl-1000px { + max-height: 1000px !important; + } + .flex-xl-fill { + flex: 1 1 auto !important; + } + .flex-xl-row { + flex-direction: row !important; + } + .flex-xl-column { + flex-direction: column !important; + } + .flex-xl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xl-grow-0 { + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xl-wrap { + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xl-start { + justify-content: flex-start !important; + } + .justify-content-xl-end { + justify-content: flex-end !important; + } + .justify-content-xl-center { + justify-content: center !important; + } + .justify-content-xl-between { + justify-content: space-between !important; + } + .justify-content-xl-around { + justify-content: space-around !important; + } + .justify-content-xl-evenly { + justify-content: space-evenly !important; + } + .align-items-xl-start { + align-items: flex-start !important; + } + .align-items-xl-end { + align-items: flex-end !important; + } + .align-items-xl-center { + align-items: center !important; + } + .align-items-xl-baseline { + align-items: baseline !important; + } + .align-items-xl-stretch { + align-items: stretch !important; + } + .align-content-xl-start { + align-content: flex-start !important; + } + .align-content-xl-end { + align-content: flex-end !important; + } + .align-content-xl-center { + align-content: center !important; + } + .align-content-xl-between { + align-content: space-between !important; + } + .align-content-xl-around { + align-content: space-around !important; + } + .align-content-xl-stretch { + align-content: stretch !important; + } + .align-self-xl-auto { + align-self: auto !important; + } + .align-self-xl-start { + align-self: flex-start !important; + } + .align-self-xl-end { + align-self: flex-end !important; + } + .align-self-xl-center { + align-self: center !important; + } + .align-self-xl-baseline { + align-self: baseline !important; + } + .align-self-xl-stretch { + align-self: stretch !important; + } + .order-xl-first { + order: -1 !important; + } + .order-xl-0 { + order: 0 !important; + } + .order-xl-1 { + order: 1 !important; + } + .order-xl-2 { + order: 2 !important; + } + .order-xl-3 { + order: 3 !important; + } + .order-xl-4 { + order: 4 !important; + } + .order-xl-5 { + order: 5 !important; + } + .order-xl-last { + order: 6 !important; + } + .m-xl-0 { + margin: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .m-xl-3 { + margin: 0.75rem !important; + } + .m-xl-4 { + margin: 1rem !important; + } + .m-xl-5 { + margin: 1.25rem !important; + } + .m-xl-6 { + margin: 1.5rem !important; + } + .m-xl-7 { + margin: 1.75rem !important; + } + .m-xl-8 { + margin: 2rem !important; + } + .m-xl-9 { + margin: 2.25rem !important; + } + .m-xl-10 { + margin: 2.5rem !important; + } + .m-xl-11 { + margin: 2.75rem !important; + } + .m-xl-12 { + margin: 3rem !important; + } + .m-xl-13 { + margin: 3.25rem !important; + } + .m-xl-14 { + margin: 3.5rem !important; + } + .m-xl-15 { + margin: 3.75rem !important; + } + .m-xl-16 { + margin: 4rem !important; + } + .m-xl-17 { + margin: 4.25rem !important; + } + .m-xl-18 { + margin: 4.5rem !important; + } + .m-xl-19 { + margin: 4.75rem !important; + } + .m-xl-20 { + margin: 5rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mx-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xl-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; + } + .mx-xl-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xl-5 { + margin-right: 1.25rem !important; + margin-left: 1.25rem !important; + } + .mx-xl-6 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xl-7 { + margin-right: 1.75rem !important; + margin-left: 1.75rem !important; + } + .mx-xl-8 { + margin-right: 2rem !important; + margin-left: 2rem !important; + } + .mx-xl-9 { + margin-right: 2.25rem !important; + margin-left: 2.25rem !important; + } + .mx-xl-10 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; + } + .mx-xl-11 { + margin-right: 2.75rem !important; + margin-left: 2.75rem !important; + } + .mx-xl-12 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xl-13 { + margin-right: 3.25rem !important; + margin-left: 3.25rem !important; + } + .mx-xl-14 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; + } + .mx-xl-15 { + margin-right: 3.75rem !important; + margin-left: 3.75rem !important; + } + .mx-xl-16 { + margin-right: 4rem !important; + margin-left: 4rem !important; + } + .mx-xl-17 { + margin-right: 4.25rem !important; + margin-left: 4.25rem !important; + } + .mx-xl-18 { + margin-right: 4.5rem !important; + margin-left: 4.5rem !important; + } + .mx-xl-19 { + margin-right: 4.75rem !important; + margin-left: 4.75rem !important; + } + .mx-xl-20 { + margin-right: 5rem !important; + margin-left: 5rem !important; + } + .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xl-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; + } + .my-xl-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xl-5 { + margin-top: 1.25rem !important; + margin-bottom: 1.25rem !important; + } + .my-xl-6 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xl-7 { + margin-top: 1.75rem !important; + margin-bottom: 1.75rem !important; + } + .my-xl-8 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; + } + .my-xl-9 { + margin-top: 2.25rem !important; + margin-bottom: 2.25rem !important; + } + .my-xl-10 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; + } + .my-xl-11 { + margin-top: 2.75rem !important; + margin-bottom: 2.75rem !important; + } + .my-xl-12 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xl-13 { + margin-top: 3.25rem !important; + margin-bottom: 3.25rem !important; + } + .my-xl-14 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; + } + .my-xl-15 { + margin-top: 3.75rem !important; + margin-bottom: 3.75rem !important; + } + .my-xl-16 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; + } + .my-xl-17 { + margin-top: 4.25rem !important; + margin-bottom: 4.25rem !important; + } + .my-xl-18 { + margin-top: 4.5rem !important; + margin-bottom: 4.5rem !important; + } + .my-xl-19 { + margin-top: 4.75rem !important; + margin-bottom: 4.75rem !important; + } + .my-xl-20 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xl-0 { + margin-top: 0 !important; + } + .mt-xl-1 { + margin-top: 0.25rem !important; + } + .mt-xl-2 { + margin-top: 0.5rem !important; + } + .mt-xl-3 { + margin-top: 0.75rem !important; + } + .mt-xl-4 { + margin-top: 1rem !important; + } + .mt-xl-5 { + margin-top: 1.25rem !important; + } + .mt-xl-6 { + margin-top: 1.5rem !important; + } + .mt-xl-7 { + margin-top: 1.75rem !important; + } + .mt-xl-8 { + margin-top: 2rem !important; + } + .mt-xl-9 { + margin-top: 2.25rem !important; + } + .mt-xl-10 { + margin-top: 2.5rem !important; + } + .mt-xl-11 { + margin-top: 2.75rem !important; + } + .mt-xl-12 { + margin-top: 3rem !important; + } + .mt-xl-13 { + margin-top: 3.25rem !important; + } + .mt-xl-14 { + margin-top: 3.5rem !important; + } + .mt-xl-15 { + margin-top: 3.75rem !important; + } + .mt-xl-16 { + margin-top: 4rem !important; + } + .mt-xl-17 { + margin-top: 4.25rem !important; + } + .mt-xl-18 { + margin-top: 4.5rem !important; + } + .mt-xl-19 { + margin-top: 4.75rem !important; + } + .mt-xl-20 { + margin-top: 5rem !important; + } + .mt-xl-auto { + margin-top: auto !important; + } + .me-xl-0 { + margin-right: 0 !important; + } + .me-xl-1 { + margin-right: 0.25rem !important; + } + .me-xl-2 { + margin-right: 0.5rem !important; + } + .me-xl-3 { + margin-right: 0.75rem !important; + } + .me-xl-4 { + margin-right: 1rem !important; + } + .me-xl-5 { + margin-right: 1.25rem !important; + } + .me-xl-6 { + margin-right: 1.5rem !important; + } + .me-xl-7 { + margin-right: 1.75rem !important; + } + .me-xl-8 { + margin-right: 2rem !important; + } + .me-xl-9 { + margin-right: 2.25rem !important; + } + .me-xl-10 { + margin-right: 2.5rem !important; + } + .me-xl-11 { + margin-right: 2.75rem !important; + } + .me-xl-12 { + margin-right: 3rem !important; + } + .me-xl-13 { + margin-right: 3.25rem !important; + } + .me-xl-14 { + margin-right: 3.5rem !important; + } + .me-xl-15 { + margin-right: 3.75rem !important; + } + .me-xl-16 { + margin-right: 4rem !important; + } + .me-xl-17 { + margin-right: 4.25rem !important; + } + .me-xl-18 { + margin-right: 4.5rem !important; + } + .me-xl-19 { + margin-right: 4.75rem !important; + } + .me-xl-20 { + margin-right: 5rem !important; + } + .me-xl-auto { + margin-right: auto !important; + } + .mb-xl-0 { + margin-bottom: 0 !important; + } + .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xl-3 { + margin-bottom: 0.75rem !important; + } + .mb-xl-4 { + margin-bottom: 1rem !important; + } + .mb-xl-5 { + margin-bottom: 1.25rem !important; + } + .mb-xl-6 { + margin-bottom: 1.5rem !important; + } + .mb-xl-7 { + margin-bottom: 1.75rem !important; + } + .mb-xl-8 { + margin-bottom: 2rem !important; + } + .mb-xl-9 { + margin-bottom: 2.25rem !important; + } + .mb-xl-10 { + margin-bottom: 2.5rem !important; + } + .mb-xl-11 { + margin-bottom: 2.75rem !important; + } + .mb-xl-12 { + margin-bottom: 3rem !important; + } + .mb-xl-13 { + margin-bottom: 3.25rem !important; + } + .mb-xl-14 { + margin-bottom: 3.5rem !important; + } + .mb-xl-15 { + margin-bottom: 3.75rem !important; + } + .mb-xl-16 { + margin-bottom: 4rem !important; + } + .mb-xl-17 { + margin-bottom: 4.25rem !important; + } + .mb-xl-18 { + margin-bottom: 4.5rem !important; + } + .mb-xl-19 { + margin-bottom: 4.75rem !important; + } + .mb-xl-20 { + margin-bottom: 5rem !important; + } + .mb-xl-auto { + margin-bottom: auto !important; + } + .ms-xl-0 { + margin-left: 0 !important; + } + .ms-xl-1 { + margin-left: 0.25rem !important; + } + .ms-xl-2 { + margin-left: 0.5rem !important; + } + .ms-xl-3 { + margin-left: 0.75rem !important; + } + .ms-xl-4 { + margin-left: 1rem !important; + } + .ms-xl-5 { + margin-left: 1.25rem !important; + } + .ms-xl-6 { + margin-left: 1.5rem !important; + } + .ms-xl-7 { + margin-left: 1.75rem !important; + } + .ms-xl-8 { + margin-left: 2rem !important; + } + .ms-xl-9 { + margin-left: 2.25rem !important; + } + .ms-xl-10 { + margin-left: 2.5rem !important; + } + .ms-xl-11 { + margin-left: 2.75rem !important; + } + .ms-xl-12 { + margin-left: 3rem !important; + } + .ms-xl-13 { + margin-left: 3.25rem !important; + } + .ms-xl-14 { + margin-left: 3.5rem !important; + } + .ms-xl-15 { + margin-left: 3.75rem !important; + } + .ms-xl-16 { + margin-left: 4rem !important; + } + .ms-xl-17 { + margin-left: 4.25rem !important; + } + .ms-xl-18 { + margin-left: 4.5rem !important; + } + .ms-xl-19 { + margin-left: 4.75rem !important; + } + .ms-xl-20 { + margin-left: 5rem !important; + } + .ms-xl-auto { + margin-left: auto !important; + } + .m-xl-n1 { + margin: -0.25rem !important; + } + .m-xl-n2 { + margin: -0.5rem !important; + } + .m-xl-n3 { + margin: -0.75rem !important; + } + .m-xl-n4 { + margin: -1rem !important; + } + .m-xl-n5 { + margin: -1.25rem !important; + } + .m-xl-n6 { + margin: -1.5rem !important; + } + .m-xl-n7 { + margin: -1.75rem !important; + } + .m-xl-n8 { + margin: -2rem !important; + } + .m-xl-n9 { + margin: -2.25rem !important; + } + .m-xl-n10 { + margin: -2.5rem !important; + } + .m-xl-n11 { + margin: -2.75rem !important; + } + .m-xl-n12 { + margin: -3rem !important; + } + .m-xl-n13 { + margin: -3.25rem !important; + } + .m-xl-n14 { + margin: -3.5rem !important; + } + .m-xl-n15 { + margin: -3.75rem !important; + } + .m-xl-n16 { + margin: -4rem !important; + } + .m-xl-n17 { + margin: -4.25rem !important; + } + .m-xl-n18 { + margin: -4.5rem !important; + } + .m-xl-n19 { + margin: -4.75rem !important; + } + .m-xl-n20 { + margin: -5rem !important; + } + .mx-xl-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; + } + .mx-xl-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; + } + .mx-xl-n3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; + } + .mx-xl-n4 { + margin-right: -1rem !important; + margin-left: -1rem !important; + } + .mx-xl-n5 { + margin-right: -1.25rem !important; + margin-left: -1.25rem !important; + } + .mx-xl-n6 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; + } + .mx-xl-n7 { + margin-right: -1.75rem !important; + margin-left: -1.75rem !important; + } + .mx-xl-n8 { + margin-right: -2rem !important; + margin-left: -2rem !important; + } + .mx-xl-n9 { + margin-right: -2.25rem !important; + margin-left: -2.25rem !important; + } + .mx-xl-n10 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; + } + .mx-xl-n11 { + margin-right: -2.75rem !important; + margin-left: -2.75rem !important; + } + .mx-xl-n12 { + margin-right: -3rem !important; + margin-left: -3rem !important; + } + .mx-xl-n13 { + margin-right: -3.25rem !important; + margin-left: -3.25rem !important; + } + .mx-xl-n14 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; + } + .mx-xl-n15 { + margin-right: -3.75rem !important; + margin-left: -3.75rem !important; + } + .mx-xl-n16 { + margin-right: -4rem !important; + margin-left: -4rem !important; + } + .mx-xl-n17 { + margin-right: -4.25rem !important; + margin-left: -4.25rem !important; + } + .mx-xl-n18 { + margin-right: -4.5rem !important; + margin-left: -4.5rem !important; + } + .mx-xl-n19 { + margin-right: -4.75rem !important; + margin-left: -4.75rem !important; + } + .mx-xl-n20 { + margin-right: -5rem !important; + margin-left: -5rem !important; + } + .my-xl-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; + } + .my-xl-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; + } + .my-xl-n3 { + margin-top: -0.75rem !important; + margin-bottom: -0.75rem !important; + } + .my-xl-n4 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; + } + .my-xl-n5 { + margin-top: -1.25rem !important; + margin-bottom: -1.25rem !important; + } + .my-xl-n6 { + margin-top: -1.5rem !important; + margin-bottom: -1.5rem !important; + } + .my-xl-n7 { + margin-top: -1.75rem !important; + margin-bottom: -1.75rem !important; + } + .my-xl-n8 { + margin-top: -2rem !important; + margin-bottom: -2rem !important; + } + .my-xl-n9 { + margin-top: -2.25rem !important; + margin-bottom: -2.25rem !important; + } + .my-xl-n10 { + margin-top: -2.5rem !important; + margin-bottom: -2.5rem !important; + } + .my-xl-n11 { + margin-top: -2.75rem !important; + margin-bottom: -2.75rem !important; + } + .my-xl-n12 { + margin-top: -3rem !important; + margin-bottom: -3rem !important; + } + .my-xl-n13 { + margin-top: -3.25rem !important; + margin-bottom: -3.25rem !important; + } + .my-xl-n14 { + margin-top: -3.5rem !important; + margin-bottom: -3.5rem !important; + } + .my-xl-n15 { + margin-top: -3.75rem !important; + margin-bottom: -3.75rem !important; + } + .my-xl-n16 { + margin-top: -4rem !important; + margin-bottom: -4rem !important; + } + .my-xl-n17 { + margin-top: -4.25rem !important; + margin-bottom: -4.25rem !important; + } + .my-xl-n18 { + margin-top: -4.5rem !important; + margin-bottom: -4.5rem !important; + } + .my-xl-n19 { + margin-top: -4.75rem !important; + margin-bottom: -4.75rem !important; + } + .my-xl-n20 { + margin-top: -5rem !important; + margin-bottom: -5rem !important; + } + .mt-xl-n1 { + margin-top: -0.25rem !important; + } + .mt-xl-n2 { + margin-top: -0.5rem !important; + } + .mt-xl-n3 { + margin-top: -0.75rem !important; + } + .mt-xl-n4 { + margin-top: -1rem !important; + } + .mt-xl-n5 { + margin-top: -1.25rem !important; + } + .mt-xl-n6 { + margin-top: -1.5rem !important; + } + .mt-xl-n7 { + margin-top: -1.75rem !important; + } + .mt-xl-n8 { + margin-top: -2rem !important; + } + .mt-xl-n9 { + margin-top: -2.25rem !important; + } + .mt-xl-n10 { + margin-top: -2.5rem !important; + } + .mt-xl-n11 { + margin-top: -2.75rem !important; + } + .mt-xl-n12 { + margin-top: -3rem !important; + } + .mt-xl-n13 { + margin-top: -3.25rem !important; + } + .mt-xl-n14 { + margin-top: -3.5rem !important; + } + .mt-xl-n15 { + margin-top: -3.75rem !important; + } + .mt-xl-n16 { + margin-top: -4rem !important; + } + .mt-xl-n17 { + margin-top: -4.25rem !important; + } + .mt-xl-n18 { + margin-top: -4.5rem !important; + } + .mt-xl-n19 { + margin-top: -4.75rem !important; + } + .mt-xl-n20 { + margin-top: -5rem !important; + } + .me-xl-n1 { + margin-right: -0.25rem !important; + } + .me-xl-n2 { + margin-right: -0.5rem !important; + } + .me-xl-n3 { + margin-right: -0.75rem !important; + } + .me-xl-n4 { + margin-right: -1rem !important; + } + .me-xl-n5 { + margin-right: -1.25rem !important; + } + .me-xl-n6 { + margin-right: -1.5rem !important; + } + .me-xl-n7 { + margin-right: -1.75rem !important; + } + .me-xl-n8 { + margin-right: -2rem !important; + } + .me-xl-n9 { + margin-right: -2.25rem !important; + } + .me-xl-n10 { + margin-right: -2.5rem !important; + } + .me-xl-n11 { + margin-right: -2.75rem !important; + } + .me-xl-n12 { + margin-right: -3rem !important; + } + .me-xl-n13 { + margin-right: -3.25rem !important; + } + .me-xl-n14 { + margin-right: -3.5rem !important; + } + .me-xl-n15 { + margin-right: -3.75rem !important; + } + .me-xl-n16 { + margin-right: -4rem !important; + } + .me-xl-n17 { + margin-right: -4.25rem !important; + } + .me-xl-n18 { + margin-right: -4.5rem !important; + } + .me-xl-n19 { + margin-right: -4.75rem !important; + } + .me-xl-n20 { + margin-right: -5rem !important; + } + .mb-xl-n1 { + margin-bottom: -0.25rem !important; + } + .mb-xl-n2 { + margin-bottom: -0.5rem !important; + } + .mb-xl-n3 { + margin-bottom: -0.75rem !important; + } + .mb-xl-n4 { + margin-bottom: -1rem !important; + } + .mb-xl-n5 { + margin-bottom: -1.25rem !important; + } + .mb-xl-n6 { + margin-bottom: -1.5rem !important; + } + .mb-xl-n7 { + margin-bottom: -1.75rem !important; + } + .mb-xl-n8 { + margin-bottom: -2rem !important; + } + .mb-xl-n9 { + margin-bottom: -2.25rem !important; + } + .mb-xl-n10 { + margin-bottom: -2.5rem !important; + } + .mb-xl-n11 { + margin-bottom: -2.75rem !important; + } + .mb-xl-n12 { + margin-bottom: -3rem !important; + } + .mb-xl-n13 { + margin-bottom: -3.25rem !important; + } + .mb-xl-n14 { + margin-bottom: -3.5rem !important; + } + .mb-xl-n15 { + margin-bottom: -3.75rem !important; + } + .mb-xl-n16 { + margin-bottom: -4rem !important; + } + .mb-xl-n17 { + margin-bottom: -4.25rem !important; + } + .mb-xl-n18 { + margin-bottom: -4.5rem !important; + } + .mb-xl-n19 { + margin-bottom: -4.75rem !important; + } + .mb-xl-n20 { + margin-bottom: -5rem !important; + } + .ms-xl-n1 { + margin-left: -0.25rem !important; + } + .ms-xl-n2 { + margin-left: -0.5rem !important; + } + .ms-xl-n3 { + margin-left: -0.75rem !important; + } + .ms-xl-n4 { + margin-left: -1rem !important; + } + .ms-xl-n5 { + margin-left: -1.25rem !important; + } + .ms-xl-n6 { + margin-left: -1.5rem !important; + } + .ms-xl-n7 { + margin-left: -1.75rem !important; + } + .ms-xl-n8 { + margin-left: -2rem !important; + } + .ms-xl-n9 { + margin-left: -2.25rem !important; + } + .ms-xl-n10 { + margin-left: -2.5rem !important; + } + .ms-xl-n11 { + margin-left: -2.75rem !important; + } + .ms-xl-n12 { + margin-left: -3rem !important; + } + .ms-xl-n13 { + margin-left: -3.25rem !important; + } + .ms-xl-n14 { + margin-left: -3.5rem !important; + } + .ms-xl-n15 { + margin-left: -3.75rem !important; + } + .ms-xl-n16 { + margin-left: -4rem !important; + } + .ms-xl-n17 { + margin-left: -4.25rem !important; + } + .ms-xl-n18 { + margin-left: -4.5rem !important; + } + .ms-xl-n19 { + margin-left: -4.75rem !important; + } + .ms-xl-n20 { + margin-left: -5rem !important; + } + .p-xl-0 { + padding: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .p-xl-3 { + padding: 0.75rem !important; + } + .p-xl-4 { + padding: 1rem !important; + } + .p-xl-5 { + padding: 1.25rem !important; + } + .p-xl-6 { + padding: 1.5rem !important; + } + .p-xl-7 { + padding: 1.75rem !important; + } + .p-xl-8 { + padding: 2rem !important; + } + .p-xl-9 { + padding: 2.25rem !important; + } + .p-xl-10 { + padding: 2.5rem !important; + } + .p-xl-11 { + padding: 2.75rem !important; + } + .p-xl-12 { + padding: 3rem !important; + } + .p-xl-13 { + padding: 3.25rem !important; + } + .p-xl-14 { + padding: 3.5rem !important; + } + .p-xl-15 { + padding: 3.75rem !important; + } + .p-xl-16 { + padding: 4rem !important; + } + .p-xl-17 { + padding: 4.25rem !important; + } + .p-xl-18 { + padding: 4.5rem !important; + } + .p-xl-19 { + padding: 4.75rem !important; + } + .p-xl-20 { + padding: 5rem !important; + } + .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xl-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; + } + .px-xl-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xl-5 { + padding-right: 1.25rem !important; + padding-left: 1.25rem !important; + } + .px-xl-6 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xl-7 { + padding-right: 1.75rem !important; + padding-left: 1.75rem !important; + } + .px-xl-8 { + padding-right: 2rem !important; + padding-left: 2rem !important; + } + .px-xl-9 { + padding-right: 2.25rem !important; + padding-left: 2.25rem !important; + } + .px-xl-10 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; + } + .px-xl-11 { + padding-right: 2.75rem !important; + padding-left: 2.75rem !important; + } + .px-xl-12 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-xl-13 { + padding-right: 3.25rem !important; + padding-left: 3.25rem !important; + } + .px-xl-14 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; + } + .px-xl-15 { + padding-right: 3.75rem !important; + padding-left: 3.75rem !important; + } + .px-xl-16 { + padding-right: 4rem !important; + padding-left: 4rem !important; + } + .px-xl-17 { + padding-right: 4.25rem !important; + padding-left: 4.25rem !important; + } + .px-xl-18 { + padding-right: 4.5rem !important; + padding-left: 4.5rem !important; + } + .px-xl-19 { + padding-right: 4.75rem !important; + padding-left: 4.75rem !important; + } + .px-xl-20 { + padding-right: 5rem !important; + padding-left: 5rem !important; + } + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xl-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; + } + .py-xl-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xl-5 { + padding-top: 1.25rem !important; + padding-bottom: 1.25rem !important; + } + .py-xl-6 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xl-7 { + padding-top: 1.75rem !important; + padding-bottom: 1.75rem !important; + } + .py-xl-8 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; + } + .py-xl-9 { + padding-top: 2.25rem !important; + padding-bottom: 2.25rem !important; + } + .py-xl-10 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; + } + .py-xl-11 { + padding-top: 2.75rem !important; + padding-bottom: 2.75rem !important; + } + .py-xl-12 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-xl-13 { + padding-top: 3.25rem !important; + padding-bottom: 3.25rem !important; + } + .py-xl-14 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; + } + .py-xl-15 { + padding-top: 3.75rem !important; + padding-bottom: 3.75rem !important; + } + .py-xl-16 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; + } + .py-xl-17 { + padding-top: 4.25rem !important; + padding-bottom: 4.25rem !important; + } + .py-xl-18 { + padding-top: 4.5rem !important; + padding-bottom: 4.5rem !important; + } + .py-xl-19 { + padding-top: 4.75rem !important; + padding-bottom: 4.75rem !important; + } + .py-xl-20 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .pt-xl-0 { + padding-top: 0 !important; + } + .pt-xl-1 { + padding-top: 0.25rem !important; + } + .pt-xl-2 { + padding-top: 0.5rem !important; + } + .pt-xl-3 { + padding-top: 0.75rem !important; + } + .pt-xl-4 { + padding-top: 1rem !important; + } + .pt-xl-5 { + padding-top: 1.25rem !important; + } + .pt-xl-6 { + padding-top: 1.5rem !important; + } + .pt-xl-7 { + padding-top: 1.75rem !important; + } + .pt-xl-8 { + padding-top: 2rem !important; + } + .pt-xl-9 { + padding-top: 2.25rem !important; + } + .pt-xl-10 { + padding-top: 2.5rem !important; + } + .pt-xl-11 { + padding-top: 2.75rem !important; + } + .pt-xl-12 { + padding-top: 3rem !important; + } + .pt-xl-13 { + padding-top: 3.25rem !important; + } + .pt-xl-14 { + padding-top: 3.5rem !important; + } + .pt-xl-15 { + padding-top: 3.75rem !important; + } + .pt-xl-16 { + padding-top: 4rem !important; + } + .pt-xl-17 { + padding-top: 4.25rem !important; + } + .pt-xl-18 { + padding-top: 4.5rem !important; + } + .pt-xl-19 { + padding-top: 4.75rem !important; + } + .pt-xl-20 { + padding-top: 5rem !important; + } + .pe-xl-0 { + padding-right: 0 !important; + } + .pe-xl-1 { + padding-right: 0.25rem !important; + } + .pe-xl-2 { + padding-right: 0.5rem !important; + } + .pe-xl-3 { + padding-right: 0.75rem !important; + } + .pe-xl-4 { + padding-right: 1rem !important; + } + .pe-xl-5 { + padding-right: 1.25rem !important; + } + .pe-xl-6 { + padding-right: 1.5rem !important; + } + .pe-xl-7 { + padding-right: 1.75rem !important; + } + .pe-xl-8 { + padding-right: 2rem !important; + } + .pe-xl-9 { + padding-right: 2.25rem !important; + } + .pe-xl-10 { + padding-right: 2.5rem !important; + } + .pe-xl-11 { + padding-right: 2.75rem !important; + } + .pe-xl-12 { + padding-right: 3rem !important; + } + .pe-xl-13 { + padding-right: 3.25rem !important; + } + .pe-xl-14 { + padding-right: 3.5rem !important; + } + .pe-xl-15 { + padding-right: 3.75rem !important; + } + .pe-xl-16 { + padding-right: 4rem !important; + } + .pe-xl-17 { + padding-right: 4.25rem !important; + } + .pe-xl-18 { + padding-right: 4.5rem !important; + } + .pe-xl-19 { + padding-right: 4.75rem !important; + } + .pe-xl-20 { + padding-right: 5rem !important; + } + .pb-xl-0 { + padding-bottom: 0 !important; + } + .pb-xl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xl-3 { + padding-bottom: 0.75rem !important; + } + .pb-xl-4 { + padding-bottom: 1rem !important; + } + .pb-xl-5 { + padding-bottom: 1.25rem !important; + } + .pb-xl-6 { + padding-bottom: 1.5rem !important; + } + .pb-xl-7 { + padding-bottom: 1.75rem !important; + } + .pb-xl-8 { + padding-bottom: 2rem !important; + } + .pb-xl-9 { + padding-bottom: 2.25rem !important; + } + .pb-xl-10 { + padding-bottom: 2.5rem !important; + } + .pb-xl-11 { + padding-bottom: 2.75rem !important; + } + .pb-xl-12 { + padding-bottom: 3rem !important; + } + .pb-xl-13 { + padding-bottom: 3.25rem !important; + } + .pb-xl-14 { + padding-bottom: 3.5rem !important; + } + .pb-xl-15 { + padding-bottom: 3.75rem !important; + } + .pb-xl-16 { + padding-bottom: 4rem !important; + } + .pb-xl-17 { + padding-bottom: 4.25rem !important; + } + .pb-xl-18 { + padding-bottom: 4.5rem !important; + } + .pb-xl-19 { + padding-bottom: 4.75rem !important; + } + .pb-xl-20 { + padding-bottom: 5rem !important; + } + .ps-xl-0 { + padding-left: 0 !important; + } + .ps-xl-1 { + padding-left: 0.25rem !important; + } + .ps-xl-2 { + padding-left: 0.5rem !important; + } + .ps-xl-3 { + padding-left: 0.75rem !important; + } + .ps-xl-4 { + padding-left: 1rem !important; + } + .ps-xl-5 { + padding-left: 1.25rem !important; + } + .ps-xl-6 { + padding-left: 1.5rem !important; + } + .ps-xl-7 { + padding-left: 1.75rem !important; + } + .ps-xl-8 { + padding-left: 2rem !important; + } + .ps-xl-9 { + padding-left: 2.25rem !important; + } + .ps-xl-10 { + padding-left: 2.5rem !important; + } + .ps-xl-11 { + padding-left: 2.75rem !important; + } + .ps-xl-12 { + padding-left: 3rem !important; + } + .ps-xl-13 { + padding-left: 3.25rem !important; + } + .ps-xl-14 { + padding-left: 3.5rem !important; + } + .ps-xl-15 { + padding-left: 3.75rem !important; + } + .ps-xl-16 { + padding-left: 4rem !important; + } + .ps-xl-17 { + padding-left: 4.25rem !important; + } + .ps-xl-18 { + padding-left: 4.5rem !important; + } + .ps-xl-19 { + padding-left: 4.75rem !important; + } + .ps-xl-20 { + padding-left: 5rem !important; + } + .gap-xl-0 { + gap: 0 !important; + } + .gap-xl-1 { + gap: 0.25rem !important; + } + .gap-xl-2 { + gap: 0.5rem !important; + } + .gap-xl-3 { + gap: 0.75rem !important; + } + .gap-xl-4 { + gap: 1rem !important; + } + .gap-xl-5 { + gap: 1.25rem !important; + } + .gap-xl-6 { + gap: 1.5rem !important; + } + .gap-xl-7 { + gap: 1.75rem !important; + } + .gap-xl-8 { + gap: 2rem !important; + } + .gap-xl-9 { + gap: 2.25rem !important; + } + .gap-xl-10 { + gap: 2.5rem !important; + } + .gap-xl-11 { + gap: 2.75rem !important; + } + .gap-xl-12 { + gap: 3rem !important; + } + .gap-xl-13 { + gap: 3.25rem !important; + } + .gap-xl-14 { + gap: 3.5rem !important; + } + .gap-xl-15 { + gap: 3.75rem !important; + } + .gap-xl-16 { + gap: 4rem !important; + } + .gap-xl-17 { + gap: 4.25rem !important; + } + .gap-xl-18 { + gap: 4.5rem !important; + } + .gap-xl-19 { + gap: 4.75rem !important; + } + .gap-xl-20 { + gap: 5rem !important; + } + .row-gap-xl-0 { + row-gap: 0 !important; + } + .row-gap-xl-1 { + row-gap: 0.25rem !important; + } + .row-gap-xl-2 { + row-gap: 0.5rem !important; + } + .row-gap-xl-3 { + row-gap: 0.75rem !important; + } + .row-gap-xl-4 { + row-gap: 1rem !important; + } + .row-gap-xl-5 { + row-gap: 1.25rem !important; + } + .row-gap-xl-6 { + row-gap: 1.5rem !important; + } + .row-gap-xl-7 { + row-gap: 1.75rem !important; + } + .row-gap-xl-8 { + row-gap: 2rem !important; + } + .row-gap-xl-9 { + row-gap: 2.25rem !important; + } + .row-gap-xl-10 { + row-gap: 2.5rem !important; + } + .row-gap-xl-11 { + row-gap: 2.75rem !important; + } + .row-gap-xl-12 { + row-gap: 3rem !important; + } + .row-gap-xl-13 { + row-gap: 3.25rem !important; + } + .row-gap-xl-14 { + row-gap: 3.5rem !important; + } + .row-gap-xl-15 { + row-gap: 3.75rem !important; + } + .row-gap-xl-16 { + row-gap: 4rem !important; + } + .row-gap-xl-17 { + row-gap: 4.25rem !important; + } + .row-gap-xl-18 { + row-gap: 4.5rem !important; + } + .row-gap-xl-19 { + row-gap: 4.75rem !important; + } + .row-gap-xl-20 { + row-gap: 5rem !important; + } + .column-gap-xl-0 { + column-gap: 0 !important; + } + .column-gap-xl-1 { + column-gap: 0.25rem !important; + } + .column-gap-xl-2 { + column-gap: 0.5rem !important; + } + .column-gap-xl-3 { + column-gap: 0.75rem !important; + } + .column-gap-xl-4 { + column-gap: 1rem !important; + } + .column-gap-xl-5 { + column-gap: 1.25rem !important; + } + .column-gap-xl-6 { + column-gap: 1.5rem !important; + } + .column-gap-xl-7 { + column-gap: 1.75rem !important; + } + .column-gap-xl-8 { + column-gap: 2rem !important; + } + .column-gap-xl-9 { + column-gap: 2.25rem !important; + } + .column-gap-xl-10 { + column-gap: 2.5rem !important; + } + .column-gap-xl-11 { + column-gap: 2.75rem !important; + } + .column-gap-xl-12 { + column-gap: 3rem !important; + } + .column-gap-xl-13 { + column-gap: 3.25rem !important; + } + .column-gap-xl-14 { + column-gap: 3.5rem !important; + } + .column-gap-xl-15 { + column-gap: 3.75rem !important; + } + .column-gap-xl-16 { + column-gap: 4rem !important; + } + .column-gap-xl-17 { + column-gap: 4.25rem !important; + } + .column-gap-xl-18 { + column-gap: 4.5rem !important; + } + .column-gap-xl-19 { + column-gap: 4.75rem !important; + } + .column-gap-xl-20 { + column-gap: 5rem !important; + } + .fs-xl-1 { + font-size: calc(1.3rem + 0.6vw) !important; + } + .fs-xl-2 { + font-size: calc(1.275rem + 0.3vw) !important; + } + .fs-xl-3 { + font-size: calc(1.26rem + 0.12vw) !important; + } + .fs-xl-4 { + font-size: 1.25rem !important; + } + .fs-xl-5 { + font-size: 1.15rem !important; + } + .fs-xl-6 { + font-size: 1.075rem !important; + } + .fs-xl-7 { + font-size: 0.95rem !important; + } + .fs-xl-8 { + font-size: 0.85rem !important; + } + .fs-xl-9 { + font-size: 0.75rem !important; + } + .fs-xl-10 { + font-size: 0.5rem !important; + } + .fs-xl-base { + font-size: 1rem !important; + } + .fs-xl-fluid { + font-size: 100% !important; + } + .fs-xl-2x { + font-size: calc(1.325rem + 0.9vw) !important; + } + .fs-xl-2qx { + font-size: calc(1.35rem + 1.2vw) !important; + } + .fs-xl-2hx { + font-size: calc(1.375rem + 1.5vw) !important; + } + .fs-xl-2tx { + font-size: calc(1.4rem + 1.8vw) !important; + } + .fs-xl-3x { + font-size: calc(1.425rem + 2.1vw) !important; + } + .fs-xl-3qx { + font-size: calc(1.45rem + 2.4vw) !important; + } + .fs-xl-3hx { + font-size: calc(1.475rem + 2.7vw) !important; + } + .fs-xl-3tx { + font-size: calc(1.5rem + 3vw) !important; + } + .fs-xl-4x { + font-size: calc(1.525rem + 3.3vw) !important; + } + .fs-xl-4qx { + font-size: calc(1.55rem + 3.6vw) !important; + } + .fs-xl-4hx { + font-size: calc(1.575rem + 3.9vw) !important; + } + .fs-xl-4tx { + font-size: calc(1.6rem + 4.2vw) !important; + } + .fs-xl-5x { + font-size: calc(1.625rem + 4.5vw) !important; + } + .fs-xl-5qx { + font-size: calc(1.65rem + 4.8vw) !important; + } + .fs-xl-5hx { + font-size: calc(1.675rem + 5.1vw) !important; + } + .fs-xl-5tx { + font-size: calc(1.7rem + 5.4vw) !important; + } + .text-xl-start { + text-align: left !important; + } + .text-xl-end { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; + } + .min-w-xl-unset { + min-width: unset !important; + } + .min-w-xl-25 { + min-width: 25% !important; + } + .min-w-xl-50 { + min-width: 50% !important; + } + .min-w-xl-75 { + min-width: 75% !important; + } + .min-w-xl-100 { + min-width: 100% !important; + } + .min-w-xl-auto { + min-width: auto !important; + } + .min-w-xl-1px { + min-width: 1px !important; + } + .min-w-xl-2px { + min-width: 2px !important; + } + .min-w-xl-3px { + min-width: 3px !important; + } + .min-w-xl-4px { + min-width: 4px !important; + } + .min-w-xl-5px { + min-width: 5px !important; + } + .min-w-xl-6px { + min-width: 6px !important; + } + .min-w-xl-7px { + min-width: 7px !important; + } + .min-w-xl-8px { + min-width: 8px !important; + } + .min-w-xl-9px { + min-width: 9px !important; + } + .min-w-xl-10px { + min-width: 10px !important; + } + .min-w-xl-15px { + min-width: 15px !important; + } + .min-w-xl-20px { + min-width: 20px !important; + } + .min-w-xl-25px { + min-width: 25px !important; + } + .min-w-xl-30px { + min-width: 30px !important; + } + .min-w-xl-35px { + min-width: 35px !important; + } + .min-w-xl-40px { + min-width: 40px !important; + } + .min-w-xl-45px { + min-width: 45px !important; + } + .min-w-xl-50px { + min-width: 50px !important; + } + .min-w-xl-55px { + min-width: 55px !important; + } + .min-w-xl-60px { + min-width: 60px !important; + } + .min-w-xl-65px { + min-width: 65px !important; + } + .min-w-xl-70px { + min-width: 70px !important; + } + .min-w-xl-75px { + min-width: 75px !important; + } + .min-w-xl-80px { + min-width: 80px !important; + } + .min-w-xl-85px { + min-width: 85px !important; + } + .min-w-xl-90px { + min-width: 90px !important; + } + .min-w-xl-95px { + min-width: 95px !important; + } + .min-w-xl-100px { + min-width: 100px !important; + } + .min-w-xl-125px { + min-width: 125px !important; + } + .min-w-xl-150px { + min-width: 150px !important; + } + .min-w-xl-175px { + min-width: 175px !important; + } + .min-w-xl-200px { + min-width: 200px !important; + } + .min-w-xl-225px { + min-width: 225px !important; + } + .min-w-xl-250px { + min-width: 250px !important; + } + .min-w-xl-275px { + min-width: 275px !important; + } + .min-w-xl-300px { + min-width: 300px !important; + } + .min-w-xl-325px { + min-width: 325px !important; + } + .min-w-xl-350px { + min-width: 350px !important; + } + .min-w-xl-375px { + min-width: 375px !important; + } + .min-w-xl-400px { + min-width: 400px !important; + } + .min-w-xl-425px { + min-width: 425px !important; + } + .min-w-xl-450px { + min-width: 450px !important; + } + .min-w-xl-475px { + min-width: 475px !important; + } + .min-w-xl-500px { + min-width: 500px !important; + } + .min-w-xl-550px { + min-width: 550px !important; + } + .min-w-xl-600px { + min-width: 600px !important; + } + .min-w-xl-650px { + min-width: 650px !important; + } + .min-w-xl-700px { + min-width: 700px !important; + } + .min-w-xl-750px { + min-width: 750px !important; + } + .min-w-xl-800px { + min-width: 800px !important; + } + .min-w-xl-850px { + min-width: 850px !important; + } + .min-w-xl-900px { + min-width: 900px !important; + } + .min-w-xl-950px { + min-width: 950px !important; + } + .min-w-xl-1000px { + min-width: 1000px !important; + } + .min-h-xl-unset { + min-height: unset !important; + } + .min-h-xl-25 { + min-height: 25% !important; + } + .min-h-xl-50 { + min-height: 50% !important; + } + .min-h-xl-75 { + min-height: 75% !important; + } + .min-h-xl-100 { + min-height: 100% !important; + } + .min-h-xl-auto { + min-height: auto !important; + } + .min-h-xl-1px { + min-height: 1px !important; + } + .min-h-xl-2px { + min-height: 2px !important; + } + .min-h-xl-3px { + min-height: 3px !important; + } + .min-h-xl-4px { + min-height: 4px !important; + } + .min-h-xl-5px { + min-height: 5px !important; + } + .min-h-xl-6px { + min-height: 6px !important; + } + .min-h-xl-7px { + min-height: 7px !important; + } + .min-h-xl-8px { + min-height: 8px !important; + } + .min-h-xl-9px { + min-height: 9px !important; + } + .min-h-xl-10px { + min-height: 10px !important; + } + .min-h-xl-15px { + min-height: 15px !important; + } + .min-h-xl-20px { + min-height: 20px !important; + } + .min-h-xl-25px { + min-height: 25px !important; + } + .min-h-xl-30px { + min-height: 30px !important; + } + .min-h-xl-35px { + min-height: 35px !important; + } + .min-h-xl-40px { + min-height: 40px !important; + } + .min-h-xl-45px { + min-height: 45px !important; + } + .min-h-xl-50px { + min-height: 50px !important; + } + .min-h-xl-55px { + min-height: 55px !important; + } + .min-h-xl-60px { + min-height: 60px !important; + } + .min-h-xl-65px { + min-height: 65px !important; + } + .min-h-xl-70px { + min-height: 70px !important; + } + .min-h-xl-75px { + min-height: 75px !important; + } + .min-h-xl-80px { + min-height: 80px !important; + } + .min-h-xl-85px { + min-height: 85px !important; + } + .min-h-xl-90px { + min-height: 90px !important; + } + .min-h-xl-95px { + min-height: 95px !important; + } + .min-h-xl-100px { + min-height: 100px !important; + } + .min-h-xl-125px { + min-height: 125px !important; + } + .min-h-xl-150px { + min-height: 150px !important; + } + .min-h-xl-175px { + min-height: 175px !important; + } + .min-h-xl-200px { + min-height: 200px !important; + } + .min-h-xl-225px { + min-height: 225px !important; + } + .min-h-xl-250px { + min-height: 250px !important; + } + .min-h-xl-275px { + min-height: 275px !important; + } + .min-h-xl-300px { + min-height: 300px !important; + } + .min-h-xl-325px { + min-height: 325px !important; + } + .min-h-xl-350px { + min-height: 350px !important; + } + .min-h-xl-375px { + min-height: 375px !important; + } + .min-h-xl-400px { + min-height: 400px !important; + } + .min-h-xl-425px { + min-height: 425px !important; + } + .min-h-xl-450px { + min-height: 450px !important; + } + .min-h-xl-475px { + min-height: 475px !important; + } + .min-h-xl-500px { + min-height: 500px !important; + } + .min-h-xl-550px { + min-height: 550px !important; + } + .min-h-xl-600px { + min-height: 600px !important; + } + .min-h-xl-650px { + min-height: 650px !important; + } + .min-h-xl-700px { + min-height: 700px !important; + } + .min-h-xl-750px { + min-height: 750px !important; + } + .min-h-xl-800px { + min-height: 800px !important; + } + .min-h-xl-850px { + min-height: 850px !important; + } + .min-h-xl-900px { + min-height: 900px !important; + } + .min-h-xl-950px { + min-height: 950px !important; + } + .min-h-xl-1000px { + min-height: 1000px !important; + } +} +@media (min-width: 1400px) { + .float-xxl-start { + float: left !important; + } + .float-xxl-end { + float: right !important; + } + .float-xxl-none { + float: none !important; + } + .object-fit-xxl-contain { + object-fit: contain !important; + } + .object-fit-xxl-cover { + object-fit: cover !important; + } + .object-fit-xxl-fill { + object-fit: fill !important; + } + .object-fit-xxl-scale { + object-fit: scale-down !important; + } + .object-fit-xxl-none { + object-fit: none !important; + } + .overflow-xxl-auto { + overflow: auto !important; + } + .overflow-xxl-hidden { + overflow: hidden !important; + } + .overflow-xxl-visible { + overflow: visible !important; + } + .overflow-xxl-scroll { + overflow: scroll !important; + } + .d-xxl-inline { + display: inline !important; + } + .d-xxl-inline-block { + display: inline-block !important; + } + .d-xxl-block { + display: block !important; + } + .d-xxl-grid { + display: grid !important; + } + .d-xxl-table { + display: table !important; + } + .d-xxl-table-row { + display: table-row !important; + } + .d-xxl-table-cell { + display: table-cell !important; + } + .d-xxl-flex { + display: flex !important; + } + .d-xxl-inline-flex { + display: inline-flex !important; + } + .d-xxl-none { + display: none !important; + } + .position-xxl-static { + position: static !important; + } + .position-xxl-relative { + position: relative !important; + } + .position-xxl-absolute { + position: absolute !important; + } + .position-xxl-fixed { + position: fixed !important; + } + .position-xxl-sticky { + position: sticky !important; + } + .w-xxl-unset { + width: unset !important; + } + .w-xxl-25 { + width: 25% !important; + } + .w-xxl-50 { + width: 50% !important; + } + .w-xxl-75 { + width: 75% !important; + } + .w-xxl-100 { + width: 100% !important; + } + .w-xxl-auto { + width: auto !important; + } + .w-xxl-1px { + width: 1px !important; + } + .w-xxl-2px { + width: 2px !important; + } + .w-xxl-3px { + width: 3px !important; + } + .w-xxl-4px { + width: 4px !important; + } + .w-xxl-5px { + width: 5px !important; + } + .w-xxl-6px { + width: 6px !important; + } + .w-xxl-7px { + width: 7px !important; + } + .w-xxl-8px { + width: 8px !important; + } + .w-xxl-9px { + width: 9px !important; + } + .w-xxl-10px { + width: 10px !important; + } + .w-xxl-15px { + width: 15px !important; + } + .w-xxl-20px { + width: 20px !important; + } + .w-xxl-25px { + width: 25px !important; + } + .w-xxl-30px { + width: 30px !important; + } + .w-xxl-35px { + width: 35px !important; + } + .w-xxl-40px { + width: 40px !important; + } + .w-xxl-45px { + width: 45px !important; + } + .w-xxl-50px { + width: 50px !important; + } + .w-xxl-55px { + width: 55px !important; + } + .w-xxl-60px { + width: 60px !important; + } + .w-xxl-65px { + width: 65px !important; + } + .w-xxl-70px { + width: 70px !important; + } + .w-xxl-75px { + width: 75px !important; + } + .w-xxl-80px { + width: 80px !important; + } + .w-xxl-85px { + width: 85px !important; + } + .w-xxl-90px { + width: 90px !important; + } + .w-xxl-95px { + width: 95px !important; + } + .w-xxl-100px { + width: 100px !important; + } + .w-xxl-125px { + width: 125px !important; + } + .w-xxl-150px { + width: 150px !important; + } + .w-xxl-175px { + width: 175px !important; + } + .w-xxl-200px { + width: 200px !important; + } + .w-xxl-225px { + width: 225px !important; + } + .w-xxl-250px { + width: 250px !important; + } + .w-xxl-275px { + width: 275px !important; + } + .w-xxl-300px { + width: 300px !important; + } + .w-xxl-325px { + width: 325px !important; + } + .w-xxl-350px { + width: 350px !important; + } + .w-xxl-375px { + width: 375px !important; + } + .w-xxl-400px { + width: 400px !important; + } + .w-xxl-425px { + width: 425px !important; + } + .w-xxl-450px { + width: 450px !important; + } + .w-xxl-475px { + width: 475px !important; + } + .w-xxl-500px { + width: 500px !important; + } + .w-xxl-550px { + width: 550px !important; + } + .w-xxl-600px { + width: 600px !important; + } + .w-xxl-650px { + width: 650px !important; + } + .w-xxl-700px { + width: 700px !important; + } + .w-xxl-750px { + width: 750px !important; + } + .w-xxl-800px { + width: 800px !important; + } + .w-xxl-850px { + width: 850px !important; + } + .w-xxl-900px { + width: 900px !important; + } + .w-xxl-950px { + width: 950px !important; + } + .w-xxl-1000px { + width: 1000px !important; + } + .mw-xxl-unset { + max-width: unset !important; + } + .mw-xxl-25 { + max-width: 25% !important; + } + .mw-xxl-50 { + max-width: 50% !important; + } + .mw-xxl-75 { + max-width: 75% !important; + } + .mw-xxl-100 { + max-width: 100% !important; + } + .mw-xxl-auto { + max-width: auto !important; + } + .mw-xxl-1px { + max-width: 1px !important; + } + .mw-xxl-2px { + max-width: 2px !important; + } + .mw-xxl-3px { + max-width: 3px !important; + } + .mw-xxl-4px { + max-width: 4px !important; + } + .mw-xxl-5px { + max-width: 5px !important; + } + .mw-xxl-6px { + max-width: 6px !important; + } + .mw-xxl-7px { + max-width: 7px !important; + } + .mw-xxl-8px { + max-width: 8px !important; + } + .mw-xxl-9px { + max-width: 9px !important; + } + .mw-xxl-10px { + max-width: 10px !important; + } + .mw-xxl-15px { + max-width: 15px !important; + } + .mw-xxl-20px { + max-width: 20px !important; + } + .mw-xxl-25px { + max-width: 25px !important; + } + .mw-xxl-30px { + max-width: 30px !important; + } + .mw-xxl-35px { + max-width: 35px !important; + } + .mw-xxl-40px { + max-width: 40px !important; + } + .mw-xxl-45px { + max-width: 45px !important; + } + .mw-xxl-50px { + max-width: 50px !important; + } + .mw-xxl-55px { + max-width: 55px !important; + } + .mw-xxl-60px { + max-width: 60px !important; + } + .mw-xxl-65px { + max-width: 65px !important; + } + .mw-xxl-70px { + max-width: 70px !important; + } + .mw-xxl-75px { + max-width: 75px !important; + } + .mw-xxl-80px { + max-width: 80px !important; + } + .mw-xxl-85px { + max-width: 85px !important; + } + .mw-xxl-90px { + max-width: 90px !important; + } + .mw-xxl-95px { + max-width: 95px !important; + } + .mw-xxl-100px { + max-width: 100px !important; + } + .mw-xxl-125px { + max-width: 125px !important; + } + .mw-xxl-150px { + max-width: 150px !important; + } + .mw-xxl-175px { + max-width: 175px !important; + } + .mw-xxl-200px { + max-width: 200px !important; + } + .mw-xxl-225px { + max-width: 225px !important; + } + .mw-xxl-250px { + max-width: 250px !important; + } + .mw-xxl-275px { + max-width: 275px !important; + } + .mw-xxl-300px { + max-width: 300px !important; + } + .mw-xxl-325px { + max-width: 325px !important; + } + .mw-xxl-350px { + max-width: 350px !important; + } + .mw-xxl-375px { + max-width: 375px !important; + } + .mw-xxl-400px { + max-width: 400px !important; + } + .mw-xxl-425px { + max-width: 425px !important; + } + .mw-xxl-450px { + max-width: 450px !important; + } + .mw-xxl-475px { + max-width: 475px !important; + } + .mw-xxl-500px { + max-width: 500px !important; + } + .mw-xxl-550px { + max-width: 550px !important; + } + .mw-xxl-600px { + max-width: 600px !important; + } + .mw-xxl-650px { + max-width: 650px !important; + } + .mw-xxl-700px { + max-width: 700px !important; + } + .mw-xxl-750px { + max-width: 750px !important; + } + .mw-xxl-800px { + max-width: 800px !important; + } + .mw-xxl-850px { + max-width: 850px !important; + } + .mw-xxl-900px { + max-width: 900px !important; + } + .mw-xxl-950px { + max-width: 950px !important; + } + .mw-xxl-1000px { + max-width: 1000px !important; + } + .h-xxl-unset { + height: unset !important; + } + .h-xxl-25 { + height: 25% !important; + } + .h-xxl-50 { + height: 50% !important; + } + .h-xxl-75 { + height: 75% !important; + } + .h-xxl-100 { + height: 100% !important; + } + .h-xxl-auto { + height: auto !important; + } + .h-xxl-1px { + height: 1px !important; + } + .h-xxl-2px { + height: 2px !important; + } + .h-xxl-3px { + height: 3px !important; + } + .h-xxl-4px { + height: 4px !important; + } + .h-xxl-5px { + height: 5px !important; + } + .h-xxl-6px { + height: 6px !important; + } + .h-xxl-7px { + height: 7px !important; + } + .h-xxl-8px { + height: 8px !important; + } + .h-xxl-9px { + height: 9px !important; + } + .h-xxl-10px { + height: 10px !important; + } + .h-xxl-15px { + height: 15px !important; + } + .h-xxl-20px { + height: 20px !important; + } + .h-xxl-25px { + height: 25px !important; + } + .h-xxl-30px { + height: 30px !important; + } + .h-xxl-35px { + height: 35px !important; + } + .h-xxl-40px { + height: 40px !important; + } + .h-xxl-45px { + height: 45px !important; + } + .h-xxl-50px { + height: 50px !important; + } + .h-xxl-55px { + height: 55px !important; + } + .h-xxl-60px { + height: 60px !important; + } + .h-xxl-65px { + height: 65px !important; + } + .h-xxl-70px { + height: 70px !important; + } + .h-xxl-75px { + height: 75px !important; + } + .h-xxl-80px { + height: 80px !important; + } + .h-xxl-85px { + height: 85px !important; + } + .h-xxl-90px { + height: 90px !important; + } + .h-xxl-95px { + height: 95px !important; + } + .h-xxl-100px { + height: 100px !important; + } + .h-xxl-125px { + height: 125px !important; + } + .h-xxl-150px { + height: 150px !important; + } + .h-xxl-175px { + height: 175px !important; + } + .h-xxl-200px { + height: 200px !important; + } + .h-xxl-225px { + height: 225px !important; + } + .h-xxl-250px { + height: 250px !important; + } + .h-xxl-275px { + height: 275px !important; + } + .h-xxl-300px { + height: 300px !important; + } + .h-xxl-325px { + height: 325px !important; + } + .h-xxl-350px { + height: 350px !important; + } + .h-xxl-375px { + height: 375px !important; + } + .h-xxl-400px { + height: 400px !important; + } + .h-xxl-425px { + height: 425px !important; + } + .h-xxl-450px { + height: 450px !important; + } + .h-xxl-475px { + height: 475px !important; + } + .h-xxl-500px { + height: 500px !important; + } + .h-xxl-550px { + height: 550px !important; + } + .h-xxl-600px { + height: 600px !important; + } + .h-xxl-650px { + height: 650px !important; + } + .h-xxl-700px { + height: 700px !important; + } + .h-xxl-750px { + height: 750px !important; + } + .h-xxl-800px { + height: 800px !important; + } + .h-xxl-850px { + height: 850px !important; + } + .h-xxl-900px { + height: 900px !important; + } + .h-xxl-950px { + height: 950px !important; + } + .h-xxl-1000px { + height: 1000px !important; + } + .mh-xxl-unset { + max-height: unset !important; + } + .mh-xxl-25 { + max-height: 25% !important; + } + .mh-xxl-50 { + max-height: 50% !important; + } + .mh-xxl-75 { + max-height: 75% !important; + } + .mh-xxl-100 { + max-height: 100% !important; + } + .mh-xxl-auto { + max-height: auto !important; + } + .mh-xxl-1px { + max-height: 1px !important; + } + .mh-xxl-2px { + max-height: 2px !important; + } + .mh-xxl-3px { + max-height: 3px !important; + } + .mh-xxl-4px { + max-height: 4px !important; + } + .mh-xxl-5px { + max-height: 5px !important; + } + .mh-xxl-6px { + max-height: 6px !important; + } + .mh-xxl-7px { + max-height: 7px !important; + } + .mh-xxl-8px { + max-height: 8px !important; + } + .mh-xxl-9px { + max-height: 9px !important; + } + .mh-xxl-10px { + max-height: 10px !important; + } + .mh-xxl-15px { + max-height: 15px !important; + } + .mh-xxl-20px { + max-height: 20px !important; + } + .mh-xxl-25px { + max-height: 25px !important; + } + .mh-xxl-30px { + max-height: 30px !important; + } + .mh-xxl-35px { + max-height: 35px !important; + } + .mh-xxl-40px { + max-height: 40px !important; + } + .mh-xxl-45px { + max-height: 45px !important; + } + .mh-xxl-50px { + max-height: 50px !important; + } + .mh-xxl-55px { + max-height: 55px !important; + } + .mh-xxl-60px { + max-height: 60px !important; + } + .mh-xxl-65px { + max-height: 65px !important; + } + .mh-xxl-70px { + max-height: 70px !important; + } + .mh-xxl-75px { + max-height: 75px !important; + } + .mh-xxl-80px { + max-height: 80px !important; + } + .mh-xxl-85px { + max-height: 85px !important; + } + .mh-xxl-90px { + max-height: 90px !important; + } + .mh-xxl-95px { + max-height: 95px !important; + } + .mh-xxl-100px { + max-height: 100px !important; + } + .mh-xxl-125px { + max-height: 125px !important; + } + .mh-xxl-150px { + max-height: 150px !important; + } + .mh-xxl-175px { + max-height: 175px !important; + } + .mh-xxl-200px { + max-height: 200px !important; + } + .mh-xxl-225px { + max-height: 225px !important; + } + .mh-xxl-250px { + max-height: 250px !important; + } + .mh-xxl-275px { + max-height: 275px !important; + } + .mh-xxl-300px { + max-height: 300px !important; + } + .mh-xxl-325px { + max-height: 325px !important; + } + .mh-xxl-350px { + max-height: 350px !important; + } + .mh-xxl-375px { + max-height: 375px !important; + } + .mh-xxl-400px { + max-height: 400px !important; + } + .mh-xxl-425px { + max-height: 425px !important; + } + .mh-xxl-450px { + max-height: 450px !important; + } + .mh-xxl-475px { + max-height: 475px !important; + } + .mh-xxl-500px { + max-height: 500px !important; + } + .mh-xxl-550px { + max-height: 550px !important; + } + .mh-xxl-600px { + max-height: 600px !important; + } + .mh-xxl-650px { + max-height: 650px !important; + } + .mh-xxl-700px { + max-height: 700px !important; + } + .mh-xxl-750px { + max-height: 750px !important; + } + .mh-xxl-800px { + max-height: 800px !important; + } + .mh-xxl-850px { + max-height: 850px !important; + } + .mh-xxl-900px { + max-height: 900px !important; + } + .mh-xxl-950px { + max-height: 950px !important; + } + .mh-xxl-1000px { + max-height: 1000px !important; + } + .flex-xxl-fill { + flex: 1 1 auto !important; + } + .flex-xxl-row { + flex-direction: row !important; + } + .flex-xxl-column { + flex-direction: column !important; + } + .flex-xxl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xxl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xxl-grow-0 { + flex-grow: 0 !important; + } + .flex-xxl-grow-1 { + flex-grow: 1 !important; + } + .flex-xxl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xxl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xxl-wrap { + flex-wrap: wrap !important; + } + .flex-xxl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xxl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xxl-start { + justify-content: flex-start !important; + } + .justify-content-xxl-end { + justify-content: flex-end !important; + } + .justify-content-xxl-center { + justify-content: center !important; + } + .justify-content-xxl-between { + justify-content: space-between !important; + } + .justify-content-xxl-around { + justify-content: space-around !important; + } + .justify-content-xxl-evenly { + justify-content: space-evenly !important; + } + .align-items-xxl-start { + align-items: flex-start !important; + } + .align-items-xxl-end { + align-items: flex-end !important; + } + .align-items-xxl-center { + align-items: center !important; + } + .align-items-xxl-baseline { + align-items: baseline !important; + } + .align-items-xxl-stretch { + align-items: stretch !important; + } + .align-content-xxl-start { + align-content: flex-start !important; + } + .align-content-xxl-end { + align-content: flex-end !important; + } + .align-content-xxl-center { + align-content: center !important; + } + .align-content-xxl-between { + align-content: space-between !important; + } + .align-content-xxl-around { + align-content: space-around !important; + } + .align-content-xxl-stretch { + align-content: stretch !important; + } + .align-self-xxl-auto { + align-self: auto !important; + } + .align-self-xxl-start { + align-self: flex-start !important; + } + .align-self-xxl-end { + align-self: flex-end !important; + } + .align-self-xxl-center { + align-self: center !important; + } + .align-self-xxl-baseline { + align-self: baseline !important; + } + .align-self-xxl-stretch { + align-self: stretch !important; + } + .order-xxl-first { + order: -1 !important; + } + .order-xxl-0 { + order: 0 !important; + } + .order-xxl-1 { + order: 1 !important; + } + .order-xxl-2 { + order: 2 !important; + } + .order-xxl-3 { + order: 3 !important; + } + .order-xxl-4 { + order: 4 !important; + } + .order-xxl-5 { + order: 5 !important; + } + .order-xxl-last { + order: 6 !important; + } + .m-xxl-0 { + margin: 0 !important; + } + .m-xxl-1 { + margin: 0.25rem !important; + } + .m-xxl-2 { + margin: 0.5rem !important; + } + .m-xxl-3 { + margin: 0.75rem !important; + } + .m-xxl-4 { + margin: 1rem !important; + } + .m-xxl-5 { + margin: 1.25rem !important; + } + .m-xxl-6 { + margin: 1.5rem !important; + } + .m-xxl-7 { + margin: 1.75rem !important; + } + .m-xxl-8 { + margin: 2rem !important; + } + .m-xxl-9 { + margin: 2.25rem !important; + } + .m-xxl-10 { + margin: 2.5rem !important; + } + .m-xxl-11 { + margin: 2.75rem !important; + } + .m-xxl-12 { + margin: 3rem !important; + } + .m-xxl-13 { + margin: 3.25rem !important; + } + .m-xxl-14 { + margin: 3.5rem !important; + } + .m-xxl-15 { + margin: 3.75rem !important; + } + .m-xxl-16 { + margin: 4rem !important; + } + .m-xxl-17 { + margin: 4.25rem !important; + } + .m-xxl-18 { + margin: 4.5rem !important; + } + .m-xxl-19 { + margin: 4.75rem !important; + } + .m-xxl-20 { + margin: 5rem !important; + } + .m-xxl-auto { + margin: auto !important; + } + .mx-xxl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xxl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xxl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xxl-3 { + margin-right: 0.75rem !important; + margin-left: 0.75rem !important; + } + .mx-xxl-4 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xxl-5 { + margin-right: 1.25rem !important; + margin-left: 1.25rem !important; + } + .mx-xxl-6 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xxl-7 { + margin-right: 1.75rem !important; + margin-left: 1.75rem !important; + } + .mx-xxl-8 { + margin-right: 2rem !important; + margin-left: 2rem !important; + } + .mx-xxl-9 { + margin-right: 2.25rem !important; + margin-left: 2.25rem !important; + } + .mx-xxl-10 { + margin-right: 2.5rem !important; + margin-left: 2.5rem !important; + } + .mx-xxl-11 { + margin-right: 2.75rem !important; + margin-left: 2.75rem !important; + } + .mx-xxl-12 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xxl-13 { + margin-right: 3.25rem !important; + margin-left: 3.25rem !important; + } + .mx-xxl-14 { + margin-right: 3.5rem !important; + margin-left: 3.5rem !important; + } + .mx-xxl-15 { + margin-right: 3.75rem !important; + margin-left: 3.75rem !important; + } + .mx-xxl-16 { + margin-right: 4rem !important; + margin-left: 4rem !important; + } + .mx-xxl-17 { + margin-right: 4.25rem !important; + margin-left: 4.25rem !important; + } + .mx-xxl-18 { + margin-right: 4.5rem !important; + margin-left: 4.5rem !important; + } + .mx-xxl-19 { + margin-right: 4.75rem !important; + margin-left: 4.75rem !important; + } + .mx-xxl-20 { + margin-right: 5rem !important; + margin-left: 5rem !important; + } + .mx-xxl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xxl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xxl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xxl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xxl-3 { + margin-top: 0.75rem !important; + margin-bottom: 0.75rem !important; + } + .my-xxl-4 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xxl-5 { + margin-top: 1.25rem !important; + margin-bottom: 1.25rem !important; + } + .my-xxl-6 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xxl-7 { + margin-top: 1.75rem !important; + margin-bottom: 1.75rem !important; + } + .my-xxl-8 { + margin-top: 2rem !important; + margin-bottom: 2rem !important; + } + .my-xxl-9 { + margin-top: 2.25rem !important; + margin-bottom: 2.25rem !important; + } + .my-xxl-10 { + margin-top: 2.5rem !important; + margin-bottom: 2.5rem !important; + } + .my-xxl-11 { + margin-top: 2.75rem !important; + margin-bottom: 2.75rem !important; + } + .my-xxl-12 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xxl-13 { + margin-top: 3.25rem !important; + margin-bottom: 3.25rem !important; + } + .my-xxl-14 { + margin-top: 3.5rem !important; + margin-bottom: 3.5rem !important; + } + .my-xxl-15 { + margin-top: 3.75rem !important; + margin-bottom: 3.75rem !important; + } + .my-xxl-16 { + margin-top: 4rem !important; + margin-bottom: 4rem !important; + } + .my-xxl-17 { + margin-top: 4.25rem !important; + margin-bottom: 4.25rem !important; + } + .my-xxl-18 { + margin-top: 4.5rem !important; + margin-bottom: 4.5rem !important; + } + .my-xxl-19 { + margin-top: 4.75rem !important; + margin-bottom: 4.75rem !important; + } + .my-xxl-20 { + margin-top: 5rem !important; + margin-bottom: 5rem !important; + } + .my-xxl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xxl-0 { + margin-top: 0 !important; + } + .mt-xxl-1 { + margin-top: 0.25rem !important; + } + .mt-xxl-2 { + margin-top: 0.5rem !important; + } + .mt-xxl-3 { + margin-top: 0.75rem !important; + } + .mt-xxl-4 { + margin-top: 1rem !important; + } + .mt-xxl-5 { + margin-top: 1.25rem !important; + } + .mt-xxl-6 { + margin-top: 1.5rem !important; + } + .mt-xxl-7 { + margin-top: 1.75rem !important; + } + .mt-xxl-8 { + margin-top: 2rem !important; + } + .mt-xxl-9 { + margin-top: 2.25rem !important; + } + .mt-xxl-10 { + margin-top: 2.5rem !important; + } + .mt-xxl-11 { + margin-top: 2.75rem !important; + } + .mt-xxl-12 { + margin-top: 3rem !important; + } + .mt-xxl-13 { + margin-top: 3.25rem !important; + } + .mt-xxl-14 { + margin-top: 3.5rem !important; + } + .mt-xxl-15 { + margin-top: 3.75rem !important; + } + .mt-xxl-16 { + margin-top: 4rem !important; + } + .mt-xxl-17 { + margin-top: 4.25rem !important; + } + .mt-xxl-18 { + margin-top: 4.5rem !important; + } + .mt-xxl-19 { + margin-top: 4.75rem !important; + } + .mt-xxl-20 { + margin-top: 5rem !important; + } + .mt-xxl-auto { + margin-top: auto !important; + } + .me-xxl-0 { + margin-right: 0 !important; + } + .me-xxl-1 { + margin-right: 0.25rem !important; + } + .me-xxl-2 { + margin-right: 0.5rem !important; + } + .me-xxl-3 { + margin-right: 0.75rem !important; + } + .me-xxl-4 { + margin-right: 1rem !important; + } + .me-xxl-5 { + margin-right: 1.25rem !important; + } + .me-xxl-6 { + margin-right: 1.5rem !important; + } + .me-xxl-7 { + margin-right: 1.75rem !important; + } + .me-xxl-8 { + margin-right: 2rem !important; + } + .me-xxl-9 { + margin-right: 2.25rem !important; + } + .me-xxl-10 { + margin-right: 2.5rem !important; + } + .me-xxl-11 { + margin-right: 2.75rem !important; + } + .me-xxl-12 { + margin-right: 3rem !important; + } + .me-xxl-13 { + margin-right: 3.25rem !important; + } + .me-xxl-14 { + margin-right: 3.5rem !important; + } + .me-xxl-15 { + margin-right: 3.75rem !important; + } + .me-xxl-16 { + margin-right: 4rem !important; + } + .me-xxl-17 { + margin-right: 4.25rem !important; + } + .me-xxl-18 { + margin-right: 4.5rem !important; + } + .me-xxl-19 { + margin-right: 4.75rem !important; + } + .me-xxl-20 { + margin-right: 5rem !important; + } + .me-xxl-auto { + margin-right: auto !important; + } + .mb-xxl-0 { + margin-bottom: 0 !important; + } + .mb-xxl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xxl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xxl-3 { + margin-bottom: 0.75rem !important; + } + .mb-xxl-4 { + margin-bottom: 1rem !important; + } + .mb-xxl-5 { + margin-bottom: 1.25rem !important; + } + .mb-xxl-6 { + margin-bottom: 1.5rem !important; + } + .mb-xxl-7 { + margin-bottom: 1.75rem !important; + } + .mb-xxl-8 { + margin-bottom: 2rem !important; + } + .mb-xxl-9 { + margin-bottom: 2.25rem !important; + } + .mb-xxl-10 { + margin-bottom: 2.5rem !important; + } + .mb-xxl-11 { + margin-bottom: 2.75rem !important; + } + .mb-xxl-12 { + margin-bottom: 3rem !important; + } + .mb-xxl-13 { + margin-bottom: 3.25rem !important; + } + .mb-xxl-14 { + margin-bottom: 3.5rem !important; + } + .mb-xxl-15 { + margin-bottom: 3.75rem !important; + } + .mb-xxl-16 { + margin-bottom: 4rem !important; + } + .mb-xxl-17 { + margin-bottom: 4.25rem !important; + } + .mb-xxl-18 { + margin-bottom: 4.5rem !important; + } + .mb-xxl-19 { + margin-bottom: 4.75rem !important; + } + .mb-xxl-20 { + margin-bottom: 5rem !important; + } + .mb-xxl-auto { + margin-bottom: auto !important; + } + .ms-xxl-0 { + margin-left: 0 !important; + } + .ms-xxl-1 { + margin-left: 0.25rem !important; + } + .ms-xxl-2 { + margin-left: 0.5rem !important; + } + .ms-xxl-3 { + margin-left: 0.75rem !important; + } + .ms-xxl-4 { + margin-left: 1rem !important; + } + .ms-xxl-5 { + margin-left: 1.25rem !important; + } + .ms-xxl-6 { + margin-left: 1.5rem !important; + } + .ms-xxl-7 { + margin-left: 1.75rem !important; + } + .ms-xxl-8 { + margin-left: 2rem !important; + } + .ms-xxl-9 { + margin-left: 2.25rem !important; + } + .ms-xxl-10 { + margin-left: 2.5rem !important; + } + .ms-xxl-11 { + margin-left: 2.75rem !important; + } + .ms-xxl-12 { + margin-left: 3rem !important; + } + .ms-xxl-13 { + margin-left: 3.25rem !important; + } + .ms-xxl-14 { + margin-left: 3.5rem !important; + } + .ms-xxl-15 { + margin-left: 3.75rem !important; + } + .ms-xxl-16 { + margin-left: 4rem !important; + } + .ms-xxl-17 { + margin-left: 4.25rem !important; + } + .ms-xxl-18 { + margin-left: 4.5rem !important; + } + .ms-xxl-19 { + margin-left: 4.75rem !important; + } + .ms-xxl-20 { + margin-left: 5rem !important; + } + .ms-xxl-auto { + margin-left: auto !important; + } + .m-xxl-n1 { + margin: -0.25rem !important; + } + .m-xxl-n2 { + margin: -0.5rem !important; + } + .m-xxl-n3 { + margin: -0.75rem !important; + } + .m-xxl-n4 { + margin: -1rem !important; + } + .m-xxl-n5 { + margin: -1.25rem !important; + } + .m-xxl-n6 { + margin: -1.5rem !important; + } + .m-xxl-n7 { + margin: -1.75rem !important; + } + .m-xxl-n8 { + margin: -2rem !important; + } + .m-xxl-n9 { + margin: -2.25rem !important; + } + .m-xxl-n10 { + margin: -2.5rem !important; + } + .m-xxl-n11 { + margin: -2.75rem !important; + } + .m-xxl-n12 { + margin: -3rem !important; + } + .m-xxl-n13 { + margin: -3.25rem !important; + } + .m-xxl-n14 { + margin: -3.5rem !important; + } + .m-xxl-n15 { + margin: -3.75rem !important; + } + .m-xxl-n16 { + margin: -4rem !important; + } + .m-xxl-n17 { + margin: -4.25rem !important; + } + .m-xxl-n18 { + margin: -4.5rem !important; + } + .m-xxl-n19 { + margin: -4.75rem !important; + } + .m-xxl-n20 { + margin: -5rem !important; + } + .mx-xxl-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; + } + .mx-xxl-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; + } + .mx-xxl-n3 { + margin-right: -0.75rem !important; + margin-left: -0.75rem !important; + } + .mx-xxl-n4 { + margin-right: -1rem !important; + margin-left: -1rem !important; + } + .mx-xxl-n5 { + margin-right: -1.25rem !important; + margin-left: -1.25rem !important; + } + .mx-xxl-n6 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; + } + .mx-xxl-n7 { + margin-right: -1.75rem !important; + margin-left: -1.75rem !important; + } + .mx-xxl-n8 { + margin-right: -2rem !important; + margin-left: -2rem !important; + } + .mx-xxl-n9 { + margin-right: -2.25rem !important; + margin-left: -2.25rem !important; + } + .mx-xxl-n10 { + margin-right: -2.5rem !important; + margin-left: -2.5rem !important; + } + .mx-xxl-n11 { + margin-right: -2.75rem !important; + margin-left: -2.75rem !important; + } + .mx-xxl-n12 { + margin-right: -3rem !important; + margin-left: -3rem !important; + } + .mx-xxl-n13 { + margin-right: -3.25rem !important; + margin-left: -3.25rem !important; + } + .mx-xxl-n14 { + margin-right: -3.5rem !important; + margin-left: -3.5rem !important; + } + .mx-xxl-n15 { + margin-right: -3.75rem !important; + margin-left: -3.75rem !important; + } + .mx-xxl-n16 { + margin-right: -4rem !important; + margin-left: -4rem !important; + } + .mx-xxl-n17 { + margin-right: -4.25rem !important; + margin-left: -4.25rem !important; + } + .mx-xxl-n18 { + margin-right: -4.5rem !important; + margin-left: -4.5rem !important; + } + .mx-xxl-n19 { + margin-right: -4.75rem !important; + margin-left: -4.75rem !important; + } + .mx-xxl-n20 { + margin-right: -5rem !important; + margin-left: -5rem !important; + } + .my-xxl-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; + } + .my-xxl-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; + } + .my-xxl-n3 { + margin-top: -0.75rem !important; + margin-bottom: -0.75rem !important; + } + .my-xxl-n4 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; + } + .my-xxl-n5 { + margin-top: -1.25rem !important; + margin-bottom: -1.25rem !important; + } + .my-xxl-n6 { + margin-top: -1.5rem !important; + margin-bottom: -1.5rem !important; + } + .my-xxl-n7 { + margin-top: -1.75rem !important; + margin-bottom: -1.75rem !important; + } + .my-xxl-n8 { + margin-top: -2rem !important; + margin-bottom: -2rem !important; + } + .my-xxl-n9 { + margin-top: -2.25rem !important; + margin-bottom: -2.25rem !important; + } + .my-xxl-n10 { + margin-top: -2.5rem !important; + margin-bottom: -2.5rem !important; + } + .my-xxl-n11 { + margin-top: -2.75rem !important; + margin-bottom: -2.75rem !important; + } + .my-xxl-n12 { + margin-top: -3rem !important; + margin-bottom: -3rem !important; + } + .my-xxl-n13 { + margin-top: -3.25rem !important; + margin-bottom: -3.25rem !important; + } + .my-xxl-n14 { + margin-top: -3.5rem !important; + margin-bottom: -3.5rem !important; + } + .my-xxl-n15 { + margin-top: -3.75rem !important; + margin-bottom: -3.75rem !important; + } + .my-xxl-n16 { + margin-top: -4rem !important; + margin-bottom: -4rem !important; + } + .my-xxl-n17 { + margin-top: -4.25rem !important; + margin-bottom: -4.25rem !important; + } + .my-xxl-n18 { + margin-top: -4.5rem !important; + margin-bottom: -4.5rem !important; + } + .my-xxl-n19 { + margin-top: -4.75rem !important; + margin-bottom: -4.75rem !important; + } + .my-xxl-n20 { + margin-top: -5rem !important; + margin-bottom: -5rem !important; + } + .mt-xxl-n1 { + margin-top: -0.25rem !important; + } + .mt-xxl-n2 { + margin-top: -0.5rem !important; + } + .mt-xxl-n3 { + margin-top: -0.75rem !important; + } + .mt-xxl-n4 { + margin-top: -1rem !important; + } + .mt-xxl-n5 { + margin-top: -1.25rem !important; + } + .mt-xxl-n6 { + margin-top: -1.5rem !important; + } + .mt-xxl-n7 { + margin-top: -1.75rem !important; + } + .mt-xxl-n8 { + margin-top: -2rem !important; + } + .mt-xxl-n9 { + margin-top: -2.25rem !important; + } + .mt-xxl-n10 { + margin-top: -2.5rem !important; + } + .mt-xxl-n11 { + margin-top: -2.75rem !important; + } + .mt-xxl-n12 { + margin-top: -3rem !important; + } + .mt-xxl-n13 { + margin-top: -3.25rem !important; + } + .mt-xxl-n14 { + margin-top: -3.5rem !important; + } + .mt-xxl-n15 { + margin-top: -3.75rem !important; + } + .mt-xxl-n16 { + margin-top: -4rem !important; + } + .mt-xxl-n17 { + margin-top: -4.25rem !important; + } + .mt-xxl-n18 { + margin-top: -4.5rem !important; + } + .mt-xxl-n19 { + margin-top: -4.75rem !important; + } + .mt-xxl-n20 { + margin-top: -5rem !important; + } + .me-xxl-n1 { + margin-right: -0.25rem !important; + } + .me-xxl-n2 { + margin-right: -0.5rem !important; + } + .me-xxl-n3 { + margin-right: -0.75rem !important; + } + .me-xxl-n4 { + margin-right: -1rem !important; + } + .me-xxl-n5 { + margin-right: -1.25rem !important; + } + .me-xxl-n6 { + margin-right: -1.5rem !important; + } + .me-xxl-n7 { + margin-right: -1.75rem !important; + } + .me-xxl-n8 { + margin-right: -2rem !important; + } + .me-xxl-n9 { + margin-right: -2.25rem !important; + } + .me-xxl-n10 { + margin-right: -2.5rem !important; + } + .me-xxl-n11 { + margin-right: -2.75rem !important; + } + .me-xxl-n12 { + margin-right: -3rem !important; + } + .me-xxl-n13 { + margin-right: -3.25rem !important; + } + .me-xxl-n14 { + margin-right: -3.5rem !important; + } + .me-xxl-n15 { + margin-right: -3.75rem !important; + } + .me-xxl-n16 { + margin-right: -4rem !important; + } + .me-xxl-n17 { + margin-right: -4.25rem !important; + } + .me-xxl-n18 { + margin-right: -4.5rem !important; + } + .me-xxl-n19 { + margin-right: -4.75rem !important; + } + .me-xxl-n20 { + margin-right: -5rem !important; + } + .mb-xxl-n1 { + margin-bottom: -0.25rem !important; + } + .mb-xxl-n2 { + margin-bottom: -0.5rem !important; + } + .mb-xxl-n3 { + margin-bottom: -0.75rem !important; + } + .mb-xxl-n4 { + margin-bottom: -1rem !important; + } + .mb-xxl-n5 { + margin-bottom: -1.25rem !important; + } + .mb-xxl-n6 { + margin-bottom: -1.5rem !important; + } + .mb-xxl-n7 { + margin-bottom: -1.75rem !important; + } + .mb-xxl-n8 { + margin-bottom: -2rem !important; + } + .mb-xxl-n9 { + margin-bottom: -2.25rem !important; + } + .mb-xxl-n10 { + margin-bottom: -2.5rem !important; + } + .mb-xxl-n11 { + margin-bottom: -2.75rem !important; + } + .mb-xxl-n12 { + margin-bottom: -3rem !important; + } + .mb-xxl-n13 { + margin-bottom: -3.25rem !important; + } + .mb-xxl-n14 { + margin-bottom: -3.5rem !important; + } + .mb-xxl-n15 { + margin-bottom: -3.75rem !important; + } + .mb-xxl-n16 { + margin-bottom: -4rem !important; + } + .mb-xxl-n17 { + margin-bottom: -4.25rem !important; + } + .mb-xxl-n18 { + margin-bottom: -4.5rem !important; + } + .mb-xxl-n19 { + margin-bottom: -4.75rem !important; + } + .mb-xxl-n20 { + margin-bottom: -5rem !important; + } + .ms-xxl-n1 { + margin-left: -0.25rem !important; + } + .ms-xxl-n2 { + margin-left: -0.5rem !important; + } + .ms-xxl-n3 { + margin-left: -0.75rem !important; + } + .ms-xxl-n4 { + margin-left: -1rem !important; + } + .ms-xxl-n5 { + margin-left: -1.25rem !important; + } + .ms-xxl-n6 { + margin-left: -1.5rem !important; + } + .ms-xxl-n7 { + margin-left: -1.75rem !important; + } + .ms-xxl-n8 { + margin-left: -2rem !important; + } + .ms-xxl-n9 { + margin-left: -2.25rem !important; + } + .ms-xxl-n10 { + margin-left: -2.5rem !important; + } + .ms-xxl-n11 { + margin-left: -2.75rem !important; + } + .ms-xxl-n12 { + margin-left: -3rem !important; + } + .ms-xxl-n13 { + margin-left: -3.25rem !important; + } + .ms-xxl-n14 { + margin-left: -3.5rem !important; + } + .ms-xxl-n15 { + margin-left: -3.75rem !important; + } + .ms-xxl-n16 { + margin-left: -4rem !important; + } + .ms-xxl-n17 { + margin-left: -4.25rem !important; + } + .ms-xxl-n18 { + margin-left: -4.5rem !important; + } + .ms-xxl-n19 { + margin-left: -4.75rem !important; + } + .ms-xxl-n20 { + margin-left: -5rem !important; + } + .p-xxl-0 { + padding: 0 !important; + } + .p-xxl-1 { + padding: 0.25rem !important; + } + .p-xxl-2 { + padding: 0.5rem !important; + } + .p-xxl-3 { + padding: 0.75rem !important; + } + .p-xxl-4 { + padding: 1rem !important; + } + .p-xxl-5 { + padding: 1.25rem !important; + } + .p-xxl-6 { + padding: 1.5rem !important; + } + .p-xxl-7 { + padding: 1.75rem !important; + } + .p-xxl-8 { + padding: 2rem !important; + } + .p-xxl-9 { + padding: 2.25rem !important; + } + .p-xxl-10 { + padding: 2.5rem !important; + } + .p-xxl-11 { + padding: 2.75rem !important; + } + .p-xxl-12 { + padding: 3rem !important; + } + .p-xxl-13 { + padding: 3.25rem !important; + } + .p-xxl-14 { + padding: 3.5rem !important; + } + .p-xxl-15 { + padding: 3.75rem !important; + } + .p-xxl-16 { + padding: 4rem !important; + } + .p-xxl-17 { + padding: 4.25rem !important; + } + .p-xxl-18 { + padding: 4.5rem !important; + } + .p-xxl-19 { + padding: 4.75rem !important; + } + .p-xxl-20 { + padding: 5rem !important; + } + .px-xxl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xxl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xxl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xxl-3 { + padding-right: 0.75rem !important; + padding-left: 0.75rem !important; + } + .px-xxl-4 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xxl-5 { + padding-right: 1.25rem !important; + padding-left: 1.25rem !important; + } + .px-xxl-6 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xxl-7 { + padding-right: 1.75rem !important; + padding-left: 1.75rem !important; + } + .px-xxl-8 { + padding-right: 2rem !important; + padding-left: 2rem !important; + } + .px-xxl-9 { + padding-right: 2.25rem !important; + padding-left: 2.25rem !important; + } + .px-xxl-10 { + padding-right: 2.5rem !important; + padding-left: 2.5rem !important; + } + .px-xxl-11 { + padding-right: 2.75rem !important; + padding-left: 2.75rem !important; + } + .px-xxl-12 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-xxl-13 { + padding-right: 3.25rem !important; + padding-left: 3.25rem !important; + } + .px-xxl-14 { + padding-right: 3.5rem !important; + padding-left: 3.5rem !important; + } + .px-xxl-15 { + padding-right: 3.75rem !important; + padding-left: 3.75rem !important; + } + .px-xxl-16 { + padding-right: 4rem !important; + padding-left: 4rem !important; + } + .px-xxl-17 { + padding-right: 4.25rem !important; + padding-left: 4.25rem !important; + } + .px-xxl-18 { + padding-right: 4.5rem !important; + padding-left: 4.5rem !important; + } + .px-xxl-19 { + padding-right: 4.75rem !important; + padding-left: 4.75rem !important; + } + .px-xxl-20 { + padding-right: 5rem !important; + padding-left: 5rem !important; + } + .py-xxl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xxl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xxl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xxl-3 { + padding-top: 0.75rem !important; + padding-bottom: 0.75rem !important; + } + .py-xxl-4 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xxl-5 { + padding-top: 1.25rem !important; + padding-bottom: 1.25rem !important; + } + .py-xxl-6 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xxl-7 { + padding-top: 1.75rem !important; + padding-bottom: 1.75rem !important; + } + .py-xxl-8 { + padding-top: 2rem !important; + padding-bottom: 2rem !important; + } + .py-xxl-9 { + padding-top: 2.25rem !important; + padding-bottom: 2.25rem !important; + } + .py-xxl-10 { + padding-top: 2.5rem !important; + padding-bottom: 2.5rem !important; + } + .py-xxl-11 { + padding-top: 2.75rem !important; + padding-bottom: 2.75rem !important; + } + .py-xxl-12 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-xxl-13 { + padding-top: 3.25rem !important; + padding-bottom: 3.25rem !important; + } + .py-xxl-14 { + padding-top: 3.5rem !important; + padding-bottom: 3.5rem !important; + } + .py-xxl-15 { + padding-top: 3.75rem !important; + padding-bottom: 3.75rem !important; + } + .py-xxl-16 { + padding-top: 4rem !important; + padding-bottom: 4rem !important; + } + .py-xxl-17 { + padding-top: 4.25rem !important; + padding-bottom: 4.25rem !important; + } + .py-xxl-18 { + padding-top: 4.5rem !important; + padding-bottom: 4.5rem !important; + } + .py-xxl-19 { + padding-top: 4.75rem !important; + padding-bottom: 4.75rem !important; + } + .py-xxl-20 { + padding-top: 5rem !important; + padding-bottom: 5rem !important; + } + .pt-xxl-0 { + padding-top: 0 !important; + } + .pt-xxl-1 { + padding-top: 0.25rem !important; + } + .pt-xxl-2 { + padding-top: 0.5rem !important; + } + .pt-xxl-3 { + padding-top: 0.75rem !important; + } + .pt-xxl-4 { + padding-top: 1rem !important; + } + .pt-xxl-5 { + padding-top: 1.25rem !important; + } + .pt-xxl-6 { + padding-top: 1.5rem !important; + } + .pt-xxl-7 { + padding-top: 1.75rem !important; + } + .pt-xxl-8 { + padding-top: 2rem !important; + } + .pt-xxl-9 { + padding-top: 2.25rem !important; + } + .pt-xxl-10 { + padding-top: 2.5rem !important; + } + .pt-xxl-11 { + padding-top: 2.75rem !important; + } + .pt-xxl-12 { + padding-top: 3rem !important; + } + .pt-xxl-13 { + padding-top: 3.25rem !important; + } + .pt-xxl-14 { + padding-top: 3.5rem !important; + } + .pt-xxl-15 { + padding-top: 3.75rem !important; + } + .pt-xxl-16 { + padding-top: 4rem !important; + } + .pt-xxl-17 { + padding-top: 4.25rem !important; + } + .pt-xxl-18 { + padding-top: 4.5rem !important; + } + .pt-xxl-19 { + padding-top: 4.75rem !important; + } + .pt-xxl-20 { + padding-top: 5rem !important; + } + .pe-xxl-0 { + padding-right: 0 !important; + } + .pe-xxl-1 { + padding-right: 0.25rem !important; + } + .pe-xxl-2 { + padding-right: 0.5rem !important; + } + .pe-xxl-3 { + padding-right: 0.75rem !important; + } + .pe-xxl-4 { + padding-right: 1rem !important; + } + .pe-xxl-5 { + padding-right: 1.25rem !important; + } + .pe-xxl-6 { + padding-right: 1.5rem !important; + } + .pe-xxl-7 { + padding-right: 1.75rem !important; + } + .pe-xxl-8 { + padding-right: 2rem !important; + } + .pe-xxl-9 { + padding-right: 2.25rem !important; + } + .pe-xxl-10 { + padding-right: 2.5rem !important; + } + .pe-xxl-11 { + padding-right: 2.75rem !important; + } + .pe-xxl-12 { + padding-right: 3rem !important; + } + .pe-xxl-13 { + padding-right: 3.25rem !important; + } + .pe-xxl-14 { + padding-right: 3.5rem !important; + } + .pe-xxl-15 { + padding-right: 3.75rem !important; + } + .pe-xxl-16 { + padding-right: 4rem !important; + } + .pe-xxl-17 { + padding-right: 4.25rem !important; + } + .pe-xxl-18 { + padding-right: 4.5rem !important; + } + .pe-xxl-19 { + padding-right: 4.75rem !important; + } + .pe-xxl-20 { + padding-right: 5rem !important; + } + .pb-xxl-0 { + padding-bottom: 0 !important; + } + .pb-xxl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xxl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xxl-3 { + padding-bottom: 0.75rem !important; + } + .pb-xxl-4 { + padding-bottom: 1rem !important; + } + .pb-xxl-5 { + padding-bottom: 1.25rem !important; + } + .pb-xxl-6 { + padding-bottom: 1.5rem !important; + } + .pb-xxl-7 { + padding-bottom: 1.75rem !important; + } + .pb-xxl-8 { + padding-bottom: 2rem !important; + } + .pb-xxl-9 { + padding-bottom: 2.25rem !important; + } + .pb-xxl-10 { + padding-bottom: 2.5rem !important; + } + .pb-xxl-11 { + padding-bottom: 2.75rem !important; + } + .pb-xxl-12 { + padding-bottom: 3rem !important; + } + .pb-xxl-13 { + padding-bottom: 3.25rem !important; + } + .pb-xxl-14 { + padding-bottom: 3.5rem !important; + } + .pb-xxl-15 { + padding-bottom: 3.75rem !important; + } + .pb-xxl-16 { + padding-bottom: 4rem !important; + } + .pb-xxl-17 { + padding-bottom: 4.25rem !important; + } + .pb-xxl-18 { + padding-bottom: 4.5rem !important; + } + .pb-xxl-19 { + padding-bottom: 4.75rem !important; + } + .pb-xxl-20 { + padding-bottom: 5rem !important; + } + .ps-xxl-0 { + padding-left: 0 !important; + } + .ps-xxl-1 { + padding-left: 0.25rem !important; + } + .ps-xxl-2 { + padding-left: 0.5rem !important; + } + .ps-xxl-3 { + padding-left: 0.75rem !important; + } + .ps-xxl-4 { + padding-left: 1rem !important; + } + .ps-xxl-5 { + padding-left: 1.25rem !important; + } + .ps-xxl-6 { + padding-left: 1.5rem !important; + } + .ps-xxl-7 { + padding-left: 1.75rem !important; + } + .ps-xxl-8 { + padding-left: 2rem !important; + } + .ps-xxl-9 { + padding-left: 2.25rem !important; + } + .ps-xxl-10 { + padding-left: 2.5rem !important; + } + .ps-xxl-11 { + padding-left: 2.75rem !important; + } + .ps-xxl-12 { + padding-left: 3rem !important; + } + .ps-xxl-13 { + padding-left: 3.25rem !important; + } + .ps-xxl-14 { + padding-left: 3.5rem !important; + } + .ps-xxl-15 { + padding-left: 3.75rem !important; + } + .ps-xxl-16 { + padding-left: 4rem !important; + } + .ps-xxl-17 { + padding-left: 4.25rem !important; + } + .ps-xxl-18 { + padding-left: 4.5rem !important; + } + .ps-xxl-19 { + padding-left: 4.75rem !important; + } + .ps-xxl-20 { + padding-left: 5rem !important; + } + .gap-xxl-0 { + gap: 0 !important; + } + .gap-xxl-1 { + gap: 0.25rem !important; + } + .gap-xxl-2 { + gap: 0.5rem !important; + } + .gap-xxl-3 { + gap: 0.75rem !important; + } + .gap-xxl-4 { + gap: 1rem !important; + } + .gap-xxl-5 { + gap: 1.25rem !important; + } + .gap-xxl-6 { + gap: 1.5rem !important; + } + .gap-xxl-7 { + gap: 1.75rem !important; + } + .gap-xxl-8 { + gap: 2rem !important; + } + .gap-xxl-9 { + gap: 2.25rem !important; + } + .gap-xxl-10 { + gap: 2.5rem !important; + } + .gap-xxl-11 { + gap: 2.75rem !important; + } + .gap-xxl-12 { + gap: 3rem !important; + } + .gap-xxl-13 { + gap: 3.25rem !important; + } + .gap-xxl-14 { + gap: 3.5rem !important; + } + .gap-xxl-15 { + gap: 3.75rem !important; + } + .gap-xxl-16 { + gap: 4rem !important; + } + .gap-xxl-17 { + gap: 4.25rem !important; + } + .gap-xxl-18 { + gap: 4.5rem !important; + } + .gap-xxl-19 { + gap: 4.75rem !important; + } + .gap-xxl-20 { + gap: 5rem !important; + } + .row-gap-xxl-0 { + row-gap: 0 !important; + } + .row-gap-xxl-1 { + row-gap: 0.25rem !important; + } + .row-gap-xxl-2 { + row-gap: 0.5rem !important; + } + .row-gap-xxl-3 { + row-gap: 0.75rem !important; + } + .row-gap-xxl-4 { + row-gap: 1rem !important; + } + .row-gap-xxl-5 { + row-gap: 1.25rem !important; + } + .row-gap-xxl-6 { + row-gap: 1.5rem !important; + } + .row-gap-xxl-7 { + row-gap: 1.75rem !important; + } + .row-gap-xxl-8 { + row-gap: 2rem !important; + } + .row-gap-xxl-9 { + row-gap: 2.25rem !important; + } + .row-gap-xxl-10 { + row-gap: 2.5rem !important; + } + .row-gap-xxl-11 { + row-gap: 2.75rem !important; + } + .row-gap-xxl-12 { + row-gap: 3rem !important; + } + .row-gap-xxl-13 { + row-gap: 3.25rem !important; + } + .row-gap-xxl-14 { + row-gap: 3.5rem !important; + } + .row-gap-xxl-15 { + row-gap: 3.75rem !important; + } + .row-gap-xxl-16 { + row-gap: 4rem !important; + } + .row-gap-xxl-17 { + row-gap: 4.25rem !important; + } + .row-gap-xxl-18 { + row-gap: 4.5rem !important; + } + .row-gap-xxl-19 { + row-gap: 4.75rem !important; + } + .row-gap-xxl-20 { + row-gap: 5rem !important; + } + .column-gap-xxl-0 { + column-gap: 0 !important; + } + .column-gap-xxl-1 { + column-gap: 0.25rem !important; + } + .column-gap-xxl-2 { + column-gap: 0.5rem !important; + } + .column-gap-xxl-3 { + column-gap: 0.75rem !important; + } + .column-gap-xxl-4 { + column-gap: 1rem !important; + } + .column-gap-xxl-5 { + column-gap: 1.25rem !important; + } + .column-gap-xxl-6 { + column-gap: 1.5rem !important; + } + .column-gap-xxl-7 { + column-gap: 1.75rem !important; + } + .column-gap-xxl-8 { + column-gap: 2rem !important; + } + .column-gap-xxl-9 { + column-gap: 2.25rem !important; + } + .column-gap-xxl-10 { + column-gap: 2.5rem !important; + } + .column-gap-xxl-11 { + column-gap: 2.75rem !important; + } + .column-gap-xxl-12 { + column-gap: 3rem !important; + } + .column-gap-xxl-13 { + column-gap: 3.25rem !important; + } + .column-gap-xxl-14 { + column-gap: 3.5rem !important; + } + .column-gap-xxl-15 { + column-gap: 3.75rem !important; + } + .column-gap-xxl-16 { + column-gap: 4rem !important; + } + .column-gap-xxl-17 { + column-gap: 4.25rem !important; + } + .column-gap-xxl-18 { + column-gap: 4.5rem !important; + } + .column-gap-xxl-19 { + column-gap: 4.75rem !important; + } + .column-gap-xxl-20 { + column-gap: 5rem !important; + } + .fs-xxl-1 { + font-size: calc(1.3rem + 0.6vw) !important; + } + .fs-xxl-2 { + font-size: calc(1.275rem + 0.3vw) !important; + } + .fs-xxl-3 { + font-size: calc(1.26rem + 0.12vw) !important; + } + .fs-xxl-4 { + font-size: 1.25rem !important; + } + .fs-xxl-5 { + font-size: 1.15rem !important; + } + .fs-xxl-6 { + font-size: 1.075rem !important; + } + .fs-xxl-7 { + font-size: 0.95rem !important; + } + .fs-xxl-8 { + font-size: 0.85rem !important; + } + .fs-xxl-9 { + font-size: 0.75rem !important; + } + .fs-xxl-10 { + font-size: 0.5rem !important; + } + .fs-xxl-base { + font-size: 1rem !important; + } + .fs-xxl-fluid { + font-size: 100% !important; + } + .fs-xxl-2x { + font-size: calc(1.325rem + 0.9vw) !important; + } + .fs-xxl-2qx { + font-size: calc(1.35rem + 1.2vw) !important; + } + .fs-xxl-2hx { + font-size: calc(1.375rem + 1.5vw) !important; + } + .fs-xxl-2tx { + font-size: calc(1.4rem + 1.8vw) !important; + } + .fs-xxl-3x { + font-size: calc(1.425rem + 2.1vw) !important; + } + .fs-xxl-3qx { + font-size: calc(1.45rem + 2.4vw) !important; + } + .fs-xxl-3hx { + font-size: calc(1.475rem + 2.7vw) !important; + } + .fs-xxl-3tx { + font-size: calc(1.5rem + 3vw) !important; + } + .fs-xxl-4x { + font-size: calc(1.525rem + 3.3vw) !important; + } + .fs-xxl-4qx { + font-size: calc(1.55rem + 3.6vw) !important; + } + .fs-xxl-4hx { + font-size: calc(1.575rem + 3.9vw) !important; + } + .fs-xxl-4tx { + font-size: calc(1.6rem + 4.2vw) !important; + } + .fs-xxl-5x { + font-size: calc(1.625rem + 4.5vw) !important; + } + .fs-xxl-5qx { + font-size: calc(1.65rem + 4.8vw) !important; + } + .fs-xxl-5hx { + font-size: calc(1.675rem + 5.1vw) !important; + } + .fs-xxl-5tx { + font-size: calc(1.7rem + 5.4vw) !important; + } + .text-xxl-start { + text-align: left !important; + } + .text-xxl-end { + text-align: right !important; + } + .text-xxl-center { + text-align: center !important; + } + .min-w-xxl-unset { + min-width: unset !important; + } + .min-w-xxl-25 { + min-width: 25% !important; + } + .min-w-xxl-50 { + min-width: 50% !important; + } + .min-w-xxl-75 { + min-width: 75% !important; + } + .min-w-xxl-100 { + min-width: 100% !important; + } + .min-w-xxl-auto { + min-width: auto !important; + } + .min-w-xxl-1px { + min-width: 1px !important; + } + .min-w-xxl-2px { + min-width: 2px !important; + } + .min-w-xxl-3px { + min-width: 3px !important; + } + .min-w-xxl-4px { + min-width: 4px !important; + } + .min-w-xxl-5px { + min-width: 5px !important; + } + .min-w-xxl-6px { + min-width: 6px !important; + } + .min-w-xxl-7px { + min-width: 7px !important; + } + .min-w-xxl-8px { + min-width: 8px !important; + } + .min-w-xxl-9px { + min-width: 9px !important; + } + .min-w-xxl-10px { + min-width: 10px !important; + } + .min-w-xxl-15px { + min-width: 15px !important; + } + .min-w-xxl-20px { + min-width: 20px !important; + } + .min-w-xxl-25px { + min-width: 25px !important; + } + .min-w-xxl-30px { + min-width: 30px !important; + } + .min-w-xxl-35px { + min-width: 35px !important; + } + .min-w-xxl-40px { + min-width: 40px !important; + } + .min-w-xxl-45px { + min-width: 45px !important; + } + .min-w-xxl-50px { + min-width: 50px !important; + } + .min-w-xxl-55px { + min-width: 55px !important; + } + .min-w-xxl-60px { + min-width: 60px !important; + } + .min-w-xxl-65px { + min-width: 65px !important; + } + .min-w-xxl-70px { + min-width: 70px !important; + } + .min-w-xxl-75px { + min-width: 75px !important; + } + .min-w-xxl-80px { + min-width: 80px !important; + } + .min-w-xxl-85px { + min-width: 85px !important; + } + .min-w-xxl-90px { + min-width: 90px !important; + } + .min-w-xxl-95px { + min-width: 95px !important; + } + .min-w-xxl-100px { + min-width: 100px !important; + } + .min-w-xxl-125px { + min-width: 125px !important; + } + .min-w-xxl-150px { + min-width: 150px !important; + } + .min-w-xxl-175px { + min-width: 175px !important; + } + .min-w-xxl-200px { + min-width: 200px !important; + } + .min-w-xxl-225px { + min-width: 225px !important; + } + .min-w-xxl-250px { + min-width: 250px !important; + } + .min-w-xxl-275px { + min-width: 275px !important; + } + .min-w-xxl-300px { + min-width: 300px !important; + } + .min-w-xxl-325px { + min-width: 325px !important; + } + .min-w-xxl-350px { + min-width: 350px !important; + } + .min-w-xxl-375px { + min-width: 375px !important; + } + .min-w-xxl-400px { + min-width: 400px !important; + } + .min-w-xxl-425px { + min-width: 425px !important; + } + .min-w-xxl-450px { + min-width: 450px !important; + } + .min-w-xxl-475px { + min-width: 475px !important; + } + .min-w-xxl-500px { + min-width: 500px !important; + } + .min-w-xxl-550px { + min-width: 550px !important; + } + .min-w-xxl-600px { + min-width: 600px !important; + } + .min-w-xxl-650px { + min-width: 650px !important; + } + .min-w-xxl-700px { + min-width: 700px !important; + } + .min-w-xxl-750px { + min-width: 750px !important; + } + .min-w-xxl-800px { + min-width: 800px !important; + } + .min-w-xxl-850px { + min-width: 850px !important; + } + .min-w-xxl-900px { + min-width: 900px !important; + } + .min-w-xxl-950px { + min-width: 950px !important; + } + .min-w-xxl-1000px { + min-width: 1000px !important; + } + .min-h-xxl-unset { + min-height: unset !important; + } + .min-h-xxl-25 { + min-height: 25% !important; + } + .min-h-xxl-50 { + min-height: 50% !important; + } + .min-h-xxl-75 { + min-height: 75% !important; + } + .min-h-xxl-100 { + min-height: 100% !important; + } + .min-h-xxl-auto { + min-height: auto !important; + } + .min-h-xxl-1px { + min-height: 1px !important; + } + .min-h-xxl-2px { + min-height: 2px !important; + } + .min-h-xxl-3px { + min-height: 3px !important; + } + .min-h-xxl-4px { + min-height: 4px !important; + } + .min-h-xxl-5px { + min-height: 5px !important; + } + .min-h-xxl-6px { + min-height: 6px !important; + } + .min-h-xxl-7px { + min-height: 7px !important; + } + .min-h-xxl-8px { + min-height: 8px !important; + } + .min-h-xxl-9px { + min-height: 9px !important; + } + .min-h-xxl-10px { + min-height: 10px !important; + } + .min-h-xxl-15px { + min-height: 15px !important; + } + .min-h-xxl-20px { + min-height: 20px !important; + } + .min-h-xxl-25px { + min-height: 25px !important; + } + .min-h-xxl-30px { + min-height: 30px !important; + } + .min-h-xxl-35px { + min-height: 35px !important; + } + .min-h-xxl-40px { + min-height: 40px !important; + } + .min-h-xxl-45px { + min-height: 45px !important; + } + .min-h-xxl-50px { + min-height: 50px !important; + } + .min-h-xxl-55px { + min-height: 55px !important; + } + .min-h-xxl-60px { + min-height: 60px !important; + } + .min-h-xxl-65px { + min-height: 65px !important; + } + .min-h-xxl-70px { + min-height: 70px !important; + } + .min-h-xxl-75px { + min-height: 75px !important; + } + .min-h-xxl-80px { + min-height: 80px !important; + } + .min-h-xxl-85px { + min-height: 85px !important; + } + .min-h-xxl-90px { + min-height: 90px !important; + } + .min-h-xxl-95px { + min-height: 95px !important; + } + .min-h-xxl-100px { + min-height: 100px !important; + } + .min-h-xxl-125px { + min-height: 125px !important; + } + .min-h-xxl-150px { + min-height: 150px !important; + } + .min-h-xxl-175px { + min-height: 175px !important; + } + .min-h-xxl-200px { + min-height: 200px !important; + } + .min-h-xxl-225px { + min-height: 225px !important; + } + .min-h-xxl-250px { + min-height: 250px !important; + } + .min-h-xxl-275px { + min-height: 275px !important; + } + .min-h-xxl-300px { + min-height: 300px !important; + } + .min-h-xxl-325px { + min-height: 325px !important; + } + .min-h-xxl-350px { + min-height: 350px !important; + } + .min-h-xxl-375px { + min-height: 375px !important; + } + .min-h-xxl-400px { + min-height: 400px !important; + } + .min-h-xxl-425px { + min-height: 425px !important; + } + .min-h-xxl-450px { + min-height: 450px !important; + } + .min-h-xxl-475px { + min-height: 475px !important; + } + .min-h-xxl-500px { + min-height: 500px !important; + } + .min-h-xxl-550px { + min-height: 550px !important; + } + .min-h-xxl-600px { + min-height: 600px !important; + } + .min-h-xxl-650px { + min-height: 650px !important; + } + .min-h-xxl-700px { + min-height: 700px !important; + } + .min-h-xxl-750px { + min-height: 750px !important; + } + .min-h-xxl-800px { + min-height: 800px !important; + } + .min-h-xxl-850px { + min-height: 850px !important; + } + .min-h-xxl-900px { + min-height: 900px !important; + } + .min-h-xxl-950px { + min-height: 950px !important; + } + .min-h-xxl-1000px { + min-height: 1000px !important; + } +} +@media (min-width: 1200px) { + .fs-1 { + font-size: 1.75rem !important; + } + .fs-2 { + font-size: 1.5rem !important; + } + .fs-3 { + font-size: 1.35rem !important; + } + .fs-2x { + font-size: 2rem !important; + } + .fs-2qx { + font-size: 2.25rem !important; + } + .fs-2hx { + font-size: 2.5rem !important; + } + .fs-2tx { + font-size: 2.75rem !important; + } + .fs-3x { + font-size: 3rem !important; + } + .fs-3qx { + font-size: 3.25rem !important; + } + .fs-3hx { + font-size: 3.5rem !important; + } + .fs-3tx { + font-size: 3.75rem !important; + } + .fs-4x { + font-size: 4rem !important; + } + .fs-4qx { + font-size: 4.25rem !important; + } + .fs-4hx { + font-size: 4.5rem !important; + } + .fs-4tx { + font-size: 4.75rem !important; + } + .fs-5x { + font-size: 5rem !important; + } + .fs-5qx { + font-size: 5.25rem !important; + } + .fs-5hx { + font-size: 5.5rem !important; + } + .fs-5tx { + font-size: 5.75rem !important; + } + .fs-sm-1 { + font-size: 1.75rem !important; + } + .fs-sm-2 { + font-size: 1.5rem !important; + } + .fs-sm-3 { + font-size: 1.35rem !important; + } + .fs-sm-2x { + font-size: 2rem !important; + } + .fs-sm-2qx { + font-size: 2.25rem !important; + } + .fs-sm-2hx { + font-size: 2.5rem !important; + } + .fs-sm-2tx { + font-size: 2.75rem !important; + } + .fs-sm-3x { + font-size: 3rem !important; + } + .fs-sm-3qx { + font-size: 3.25rem !important; + } + .fs-sm-3hx { + font-size: 3.5rem !important; + } + .fs-sm-3tx { + font-size: 3.75rem !important; + } + .fs-sm-4x { + font-size: 4rem !important; + } + .fs-sm-4qx { + font-size: 4.25rem !important; + } + .fs-sm-4hx { + font-size: 4.5rem !important; + } + .fs-sm-4tx { + font-size: 4.75rem !important; + } + .fs-sm-5x { + font-size: 5rem !important; + } + .fs-sm-5qx { + font-size: 5.25rem !important; + } + .fs-sm-5hx { + font-size: 5.5rem !important; + } + .fs-sm-5tx { + font-size: 5.75rem !important; + } + .fs-md-1 { + font-size: 1.75rem !important; + } + .fs-md-2 { + font-size: 1.5rem !important; + } + .fs-md-3 { + font-size: 1.35rem !important; + } + .fs-md-2x { + font-size: 2rem !important; + } + .fs-md-2qx { + font-size: 2.25rem !important; + } + .fs-md-2hx { + font-size: 2.5rem !important; + } + .fs-md-2tx { + font-size: 2.75rem !important; + } + .fs-md-3x { + font-size: 3rem !important; + } + .fs-md-3qx { + font-size: 3.25rem !important; + } + .fs-md-3hx { + font-size: 3.5rem !important; + } + .fs-md-3tx { + font-size: 3.75rem !important; + } + .fs-md-4x { + font-size: 4rem !important; + } + .fs-md-4qx { + font-size: 4.25rem !important; + } + .fs-md-4hx { + font-size: 4.5rem !important; + } + .fs-md-4tx { + font-size: 4.75rem !important; + } + .fs-md-5x { + font-size: 5rem !important; + } + .fs-md-5qx { + font-size: 5.25rem !important; + } + .fs-md-5hx { + font-size: 5.5rem !important; + } + .fs-md-5tx { + font-size: 5.75rem !important; + } + .fs-lg-1 { + font-size: 1.75rem !important; + } + .fs-lg-2 { + font-size: 1.5rem !important; + } + .fs-lg-3 { + font-size: 1.35rem !important; + } + .fs-lg-2x { + font-size: 2rem !important; + } + .fs-lg-2qx { + font-size: 2.25rem !important; + } + .fs-lg-2hx { + font-size: 2.5rem !important; + } + .fs-lg-2tx { + font-size: 2.75rem !important; + } + .fs-lg-3x { + font-size: 3rem !important; + } + .fs-lg-3qx { + font-size: 3.25rem !important; + } + .fs-lg-3hx { + font-size: 3.5rem !important; + } + .fs-lg-3tx { + font-size: 3.75rem !important; + } + .fs-lg-4x { + font-size: 4rem !important; + } + .fs-lg-4qx { + font-size: 4.25rem !important; + } + .fs-lg-4hx { + font-size: 4.5rem !important; + } + .fs-lg-4tx { + font-size: 4.75rem !important; + } + .fs-lg-5x { + font-size: 5rem !important; + } + .fs-lg-5qx { + font-size: 5.25rem !important; + } + .fs-lg-5hx { + font-size: 5.5rem !important; + } + .fs-lg-5tx { + font-size: 5.75rem !important; + } +} +@media print { + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-grid { + display: grid !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: flex !important; + } + .d-print-inline-flex { + display: inline-flex !important; + } + .d-print-none { + display: none !important; + } +} +:root { + --bs-xs:0; + --bs-sm:576px; + --bs-md:768px; + --bs-lg:992px; + --bs-xl:1200px; + --bs-xxl:1400px; + --bs-scrollbar-size: 5px; + --bs-scrollbar-overlay-size: 19px; + --bs-scrollbar-overlay-space: 7px; +} + +[data-bs-theme=light] { + --bs-text-muted: #A1A5B7; + --bs-gray-100: #F9F9F9; + --bs-gray-100-rgb: 249, 249, 249; + --bs-gray-200: #F4F4F4; + --bs-gray-200-rgb: 244, 244, 244; + --bs-gray-300: #E1E3EA; + --bs-gray-300-rgb: 225, 227, 234; + --bs-gray-400: #B5B5C3; + --bs-gray-400-rgb: 181, 181, 195; + --bs-gray-500: #A1A5B7; + --bs-gray-500-rgb: 161, 165, 183; + --bs-gray-600: #7E8299; + --bs-gray-600-rgb: 126, 130, 153; + --bs-gray-700: #5E6278; + --bs-gray-700-rgb: 94, 98, 120; + --bs-gray-800: #3F4254; + --bs-gray-800-rgb: 63, 66, 84; + --bs-gray-900: #181C32; + --bs-gray-900-rgb: 24, 28, 50; + --bs-white: #ffffff; + --bs-light: #F9F9F9; + --bs-primary: #009ef7; + --bs-secondary: #E1E3EA; + --bs-success: #50cd89; + --bs-info: #7239ea; + --bs-warning: #ffc700; + --bs-danger: #f1416c; + --bs-dark: #181C32; + --bs-primary-active: #0095e8; + --bs-secondary-active: #B5B5C3; + --bs-light-active: #F4F4F4; + --bs-success-active: #47be7d; + --bs-info-active: #5014d0; + --bs-warning-active: #f1bc00; + --bs-danger-active: #d9214e; + --bs-dark-active: #131628; + --bs-primary-light: #f1faff; + --bs-secondary-light: #F9F9F9; + --bs-success-light: #e8fff3; + --bs-info-light: #f8f5ff; + --bs-warning-light: #fff8dd; + --bs-danger-light: #fff5f8; + --bs-dark-light: #F4F4F4; + --bs-primary-inverse: #ffffff; + --bs-secondary-inverse: #3F4254; + --bs-light-inverse: #7E8299; + --bs-success-inverse: #ffffff; + --bs-info-inverse: #ffffff; + --bs-warning-inverse: #ffffff; + --bs-danger-inverse: #ffffff; + --bs-dark-inverse: #ffffff; + --bs-white-rgb: 255, 255, 255; + --bs-light-rgb: 249, 249, 249; + --bs-primary-rgb: 0, 158, 247; + --bs-secondary-rgb: 225, 227, 234; + --bs-success-rgb: 80, 205, 137; + --bs-info-rgb: 114, 57, 234; + --bs-warning-rgb: 255, 199, 0; + --bs-danger-rgb: 241, 65, 108; + --bs-dark-rgb: 24, 28, 50; + --bs-text-white: #ffffff; + --bs-text-primary: #009ef7; + --bs-text-secondary: #E1E3EA; + --bs-text-light: #F9F9F9; + --bs-text-success: #50cd89; + --bs-text-info: #7239ea; + --bs-text-warning: #ffc700; + --bs-text-danger: #f1416c; + --bs-text-dark: #181C32; + --bs-text-muted: #A1A5B7; + --bs-text-gray-100: #F9F9F9; + --bs-text-gray-200: #F4F4F4; + --bs-text-gray-300: #E1E3EA; + --bs-text-gray-400: #B5B5C3; + --bs-text-gray-500: #A1A5B7; + --bs-text-gray-600: #7E8299; + --bs-text-gray-700: #5E6278; + --bs-text-gray-800: #3F4254; + --bs-text-gray-900: #181C32; + --bs-border-color: #F4F4F4; + --bs-border-dashed-color: #E1E3EA; + --bs-component-active-color: #ffffff; + --bs-component-active-bg: #009ef7; + --bs-component-hover-color: #009ef7; + --bs-component-hover-bg: #F4F6FA; + --bs-component-checked-color: #ffffff; + --bs-component-checked-bg: #009ef7; + --bs-box-shadow-xs: 0 0.1rem 0.75rem 0.25rem rgba(0, 0, 0, 0.05); + --bs-box-shadow-sm: 0 0.1rem 1rem 0.25rem rgba(0, 0, 0, 0.05); + --bs-box-shadow: 0 0.5rem 1.5rem 0.5rem rgba(0, 0, 0, 0.075); + --bs-box-shadow-lg: 0 1rem 2rem 1rem rgba(0, 0, 0, 0.1); + --bs-tooltip-box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.15); + --bs-card-box-shadow: 0px 0px 20px 0px rgba(76, 87, 125, 0.02); + --bs-table-striped-bg: rgba(var(--bs-gray-100-rgb), 0.75); + --bs-dropdown-bg: var(--bs-body-bg); + --bs-dropdown-box-shadow: 0px 0px 50px 0px rgba(82, 63, 105, 0.15); + --bs-code-bg: #F1F3F8; + --bs-code-box-shadow: 0px 3px 9px rgba(0, 0, 0, 0.08); + --bs-code-color: #b93993; + --bs-symbol-label-color: var(--bs-gray-800); + --bs-symbol-label-bg: var(--bs-gray-100); + --bs-symbol-border-color: rgba(var(--bs-body-bg), 0.5); + --bs-bullet-bg-color: var(--bs-gray-400); + --bs-scrolltop-opacity: 0; + --bs-scrolltop-opacity-on: 0.3; + --bs-scrolltop-opacity-hover: 1; + --bs-scrolltop-box-shadow: var(--bs-box-shadow); + --bs-scrolltop-bg-color: var(--bs-primary); + --bs-scrolltop-bg-color-hover: var(--bs-primary); + --bs-scrolltop-icon-color: var(--bs-primary-inverse); + --bs-scrolltop-icon-color-hover: var(--bs-primary-inverse); + --bs-drawer-box-shadow: 0px 1px 9px -3px rgba(0, 0, 0, 0.05); + --bs-drawer-bg-color: #ffffff; + --bs-drawer-overlay-bg-color: rgba(0, 0, 0, 0.2); + --bs-menu-dropdown-box-shadow: 0px 0px 50px 0px rgba(82, 63, 105, 0.15); + --bs-menu-dropdown-bg-color: var(--bs-body-bg); + --bs-menu-heading-color: #A1A5B7; + --bs-menu-link-color-hover: #009ef7; + --bs-menu-link-color-show: #009ef7; + --bs-menu-link-color-here: #009ef7; + --bs-menu-link-color-active: #009ef7; + --bs-menu-link-bg-color-hover: #F4F6FA; + --bs-menu-link-bg-color-show: #F4F6FA; + --bs-menu-link-bg-color-here: #F4F6FA; + --bs-menu-link-bg-color-active: #F4F6FA; + --bs-scrollbar-color: #F4F4F4; + --bs-scrollbar-hover-color: #efefef; + --bs-scrollbar-size: 5px; + --bs-scrollbar-overlay-size: 19px; + --bs-scrollbar-overlay-space: 7px; + --bs-overlay-bg: rgba(0, 0, 0, 0.05); + --bs-blockui-overlay-bg: rgba(0, 0, 0, 0.05); + --bs-rating-color-default: #B5B5C3; + --bs-rating-color-active: #FFAD0F; + --bs-ribbon-label-box-shadow: 0px -1px 5px 0px rgba(24, 28, 50, 0.1); + --bs-ribbon-label-bg: #009ef7; + --bs-ribbon-label-border-color: #005d91; + --bs-ribbon-clip-bg: #181C32; + --bs-engage-btn-bg: #ffffff; + --bs-engage-btn-box-shadow: 0px 0px 22px #E0E0E0; + --bs-engage-btn-border-color: #E8E8E8; + --bs-engage-btn-color: #3F4254; + --bs-engage-btn-icon-color: #7E8299; + --bs-engage-btn-color-active: #3F4254; +} + +[data-bs-theme=dark] { + --bs-text-muted: #565674; + --bs-gray-100: #1b1b29; + --bs-gray-100-rgb: 27, 27, 41; + --bs-gray-200: #2B2B40; + --bs-gray-200-rgb: 43, 43, 64; + --bs-gray-300: #323248; + --bs-gray-300-rgb: 50, 50, 72; + --bs-gray-400: #474761; + --bs-gray-400-rgb: 71, 71, 97; + --bs-gray-500: #565674; + --bs-gray-500-rgb: 86, 86, 116; + --bs-gray-600: #6D6D80; + --bs-gray-600-rgb: 109, 109, 128; + --bs-gray-700: #92929F; + --bs-gray-700-rgb: 146, 146, 159; + --bs-gray-800: #CDCDDE; + --bs-gray-800-rgb: 205, 205, 222; + --bs-gray-900: #FFFFFF; + --bs-gray-900-rgb: 255, 255, 255; + --bs-white: #ffffff; + --bs-light: #2B2B40; + --bs-primary: #009ef7; + --bs-success: #50cd89; + --bs-info: #7239ea; + --bs-warning: #ffc700; + --bs-danger: #f1416c; + --bs-dark: #FFFFFF; + --bs-secondary: #323248; + --bs-primary-active: #0095e8; + --bs-secondary-active: #474761; + --bs-light-active: #323248; + --bs-success-active: #47be7d; + --bs-info-active: #5014d0; + --bs-warning-active: #f1bc00; + --bs-danger-active: #d9214e; + --bs-dark-active: white; + --bs-primary-light: #212e48; + --bs-success-light: #1c3238; + --bs-info-light: #2f264f; + --bs-warning-light: #392f28; + --bs-danger-light: #3a2434; + --bs-dark-light: #2B2B40; + --bs-secondary-light: #1b1b29; + --bs-primary-inverse: #ffffff; + --bs-secondary-inverse: #92929F; + --bs-light-inverse: #7E8299; + --bs-success-inverse: #ffffff; + --bs-info-inverse: #ffffff; + --bs-warning-inverse: #ffffff; + --bs-danger-inverse: #ffffff; + --bs-dark-inverse: #1b1b29; + --bs-white-rgb: 255, 255, 255; + --bs-light-rgb: 43, 43, 64; + --bs-primary-rgb: 0, 158, 247; + --bs-success-rgb: 80, 205, 137; + --bs-info-rgb: 114, 57, 234; + --bs-warning-rgb: 255, 199, 0; + --bs-danger-rgb: 241, 65, 108; + --bs-dark-rgb: 255, 255, 255; + --bs-secondary-rgb: 50, 50, 72; + --bs-text-white: #ffffff; + --bs-text-primary: #009ef7; + --bs-text-secondary: #323248; + --bs-text-light: #2B2B40; + --bs-text-success: #50cd89; + --bs-text-info: #7239ea; + --bs-text-warning: #ffc700; + --bs-text-danger: #f1416c; + --bs-text-dark: #FFFFFF; + --bs-text-muted: #565674; + --bs-text-gray-100: #1b1b29; + --bs-text-gray-200: #2B2B40; + --bs-text-gray-300: #323248; + --bs-text-gray-400: #474761; + --bs-text-gray-500: #565674; + --bs-text-gray-600: #6D6D80; + --bs-text-gray-700: #92929F; + --bs-text-gray-800: #CDCDDE; + --bs-text-gray-900: #FFFFFF; + --bs-border-color: #2B2B40; + --bs-border-dashed-color: #323248; + --bs-component-active-color: #ffffff; + --bs-component-active-bg: #009ef7; + --bs-component-hover-color: #009ef7; + --bs-component-hover-bg: #2B2B40; + --bs-component-checked-color: #ffffff; + --bs-component-checked-bg: #009ef7; + --bs-box-shadow-xs: 0 0.1rem 0.75rem 0.25rem rgba(0, 0, 0, 0.05); + --bs-box-shadow-sm: 0 0.1rem 1rem 0.25rem rgba(0, 0, 0, 0.05); + --bs-box-shadow: 0 0.5rem 1.5rem 0.5rem rgba(0, 0, 0, 0.075); + --bs-box-shadow-lg: 0 1rem 2rem 1rem rgba(0, 0, 0, 0.1); + --bs-tooltip-box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.15); + --bs-card-box-shadow: ; + --bs-table-striped-bg: rgba(27, 27, 41, 0.75); + --bs-dropdown-bg: #1e1e2d; + --bs-dropdown-box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.3); + --bs-code-bg: #2B2B40; + --bs-code-box-shadow: 0px 3px 9px rgba(0, 0, 0, 0.08); + --bs-code-color: #b93993; + --bs-symbol-label-color: #CDCDDE; + --bs-symbol-label-bg: #1b1b29; + --bs-symbol-border-color: rgba(255, 255, 255, 0.5); + --bs-bullet-bg-color: #474761; + --bs-scrolltop-opacity: 0; + --bs-scrolltop-opacity-on: 0.3; + --bs-scrolltop-opacity-hover: 1; + --bs-scrolltop-box-shadow: 0 0.5rem 1.5rem 0.5rem rgba(0, 0, 0, 0.075); + --bs-scrolltop-bg-color: #009ef7; + --bs-scrolltop-bg-color-hover: #009ef7; + --bs-scrolltop-icon-color: #ffffff; + --bs-scrolltop-icon-color-hover: #ffffff; + --bs-drawer-box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.1); + --bs-drawer-bg-color: #1e1e2d; + --bs-drawer-overlay-bg-color: rgba(0, 0, 0, 0.4); + --bs-menu-dropdown-box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.3); + --bs-menu-dropdown-bg-color: #1e1e2d; + --bs-menu-heading-color: #565674; + --bs-menu-link-color-hover: #009ef7; + --bs-menu-link-color-show: #009ef7; + --bs-menu-link-color-here: #009ef7; + --bs-menu-link-color-active: #009ef7; + --bs-menu-link-bg-color-hover: #2B2B40; + --bs-menu-link-bg-color-show: #2B2B40; + --bs-menu-link-bg-color-here: #2B2B40; + --bs-menu-link-bg-color-active: #2B2B40; + --bs-scrollbar-color: #2B2B40; + --bs-scrollbar-hover-color: #27273a; + --bs-overlay-bg: rgba(255, 255, 255, 0.05); + --bs-blockui-overlay-bg: rgba(255, 255, 255, 0.05); + --bs-rating-color-default: #474761; + --bs-rating-color-active: #FFAD0F; + --bs-ribbon-label-box-shadow: 0px -1px 5px 0px rgba(255, 255, 255, 0.1); + --bs-ribbon-label-bg: #009ef7; + --bs-ribbon-label-border-color: #005d91; + --bs-ribbon-clip-bg: #F9F9F9; + --bs-engage-btn-bg: #2B2B40; + --bs-engage-btn-box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.3); + --bs-engage-btn-border-color: #2B2B40; + --bs-engage-btn-color: #CDCDDE; + --bs-engage-btn-icon-color: #6D6D80; + --bs-engage-btn-color-active: #CDCDDE; +} + +h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6 { + outline: 0; +} + +.blockquote-footer { + color: var(--bs-blockquote-footer-color); +} + +.list-style-none { + list-style: none; +} + +[data-kt-theme-mode-switching=true] * { + transition: none !important; +} + +[data-bs-theme=light] .theme-dark-show { + display: none !important; +} +[data-bs-theme=light] .theme-light-bg-transparent { + background-color: transparent !important; +} +[data-bs-theme=light] .theme-light-bg-body { + background-color: var(--bs-body-bg) !important; +} + +[data-bs-theme=dark] .theme-light-show { + display: none !important; +} +[data-bs-theme=dark] .theme-dark-bg-transparent { + background-color: transparent !important; +} +[data-bs-theme=dark] .theme-dark-bg-body { + background-color: var(--bs-body-bg) !important; +} + +.animation { + animation-duration: 1s; + animation-fill-mode: both; +} + +@keyframes animationSlideInDown { + from { + transform: translate3d(0, -100%, 0); + visibility: visible; + } + to { + transform: translate3d(0, 0, 0); + } +} +.animation-slide-in-down { + animation-name: animationSlideInDown; +} + +@keyframes animationSlideInUp { + from { + transform: translate3d(0, 100%, 0); + visibility: visible; + } + to { + transform: translate3d(0, 0, 0); + } +} +.animation-slide-in-up { + animation-name: animationSlideInUp; +} + +@keyframes animationFadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +.animation-fade-in { + animation-name: animationFadeIn; +} + +@keyframes animationFadeOut { + from { + opacity: 1; + } + to { + opacity: 0; + } +} +.animation-fade-out { + animation-name: animationFadeOut; +} + +.animation-blink { + animation: animationBlink 1s steps(5, start) infinite; +} + +@keyframes animationBlink { + to { + visibility: hidden; + } +} +.alert-white { + color: var(--bs-white); + border-color: var(--bs-white); + background-color: var(--bs-white-light); +} +.alert-white .alert-link { + color: var(--bs-white); +} + +.alert-light { + color: var(--bs-light); + border-color: var(--bs-light); + background-color: var(--bs-light-light); +} +.alert-light .alert-link { + color: var(--bs-light); +} + +.alert-primary { + color: var(--bs-primary); + border-color: var(--bs-primary); + background-color: var(--bs-primary-light); +} +.alert-primary .alert-link { + color: var(--bs-primary); +} + +.alert-secondary { + color: var(--bs-secondary); + border-color: var(--bs-secondary); + background-color: var(--bs-secondary-light); +} +.alert-secondary .alert-link { + color: var(--bs-secondary); +} + +.alert-success { + color: var(--bs-success); + border-color: var(--bs-success); + background-color: var(--bs-success-light); +} +.alert-success .alert-link { + color: var(--bs-success); +} + +.alert-info { + color: var(--bs-info); + border-color: var(--bs-info); + background-color: var(--bs-info-light); +} +.alert-info .alert-link { + color: var(--bs-info); +} + +.alert-warning { + color: var(--bs-warning); + border-color: var(--bs-warning); + background-color: var(--bs-warning-light); +} +.alert-warning .alert-link { + color: var(--bs-warning); +} + +.alert-danger { + color: var(--bs-danger); + border-color: var(--bs-danger); + background-color: var(--bs-danger-light); +} +.alert-danger .alert-link { + color: var(--bs-danger); +} + +.alert-dark { + color: var(--bs-dark); + border-color: var(--bs-dark); + background-color: var(--bs-dark-light); +} +.alert-dark .alert-link { + color: var(--bs-dark); +} + +[data-bs-theme=dark] .dropdown-menu { + box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.3); +} + +.toast .toast-header .btn-close { + margin-right: 0; +} + +[data-bs-theme=dark] .toast { + --bs-toast-bg: #2B2B40; + --bs-toast-header-bg: #2B2B40; + --bs-toast-header-border-color: #323248; +} + +.nav-pills .nav-item { + margin-right: 0.5rem; +} +.nav-pills .nav-item:last-child { + margin-right: 0; +} + +.nav-stretch { + align-items: stretch; + padding-top: 0 !important; + padding-bottom: 0 !important; +} +.nav-stretch .nav-item { + display: flex; + align-items: stretch; + padding-top: 0 !important; + padding-bottom: 0 !important; +} +.nav-stretch .nav-link { + display: flex; + align-items: center; +} + +.nav-group { + padding: 0.35rem; + border-radius: 0.475rem; + background-color: var(--bs-gray-100); +} +.nav-group.nav-group-outline { + background-color: transparent; + border: 1px solid var(--bs-border-color); +} +.nav-group.nav-group-fluid { + display: flex; +} +.nav-group.nav-group-fluid > label, +.nav-group.nav-group-fluid > .btn { + position: relative; + flex-shrink: 0; + flex-grow: 1; + flex-basis: 0; +} +.nav-group.nav-group-fluid > label { + margin-right: 0.1rem; +} +.nav-group.nav-group-fluid > label > .btn { + width: 100%; +} +.nav-group.nav-group-fluid > label:last-child { + margin-right: 0; +} + +.nav-line-tabs { + border-bottom-width: 1px; + border-bottom-style: solid; + border-bottom-color: var(--bs-border-color); +} +.nav-line-tabs .nav-item { + margin-bottom: -1px; +} +.nav-line-tabs .nav-item .nav-link { + color: var(--bs-gray-500); + border: 0; + border-bottom: 1px solid transparent; + transition: color 0.2s ease; + padding: 0.5rem 0; + margin: 0 1rem; +} +.nav-line-tabs .nav-item:first-child .nav-link { + margin-left: 0; +} +.nav-line-tabs .nav-item:last-child .nav-link { + margin-right: 0; +} +.nav-line-tabs .nav-item .nav-link.active, +.nav-line-tabs .nav-item.show .nav-link, +.nav-line-tabs .nav-item .nav-link:hover:not(.disabled) { + background-color: transparent; + border: 0; + border-bottom: 1px solid var(--bs-primary); + transition: color 0.2s ease; +} +.nav-line-tabs.nav-line-tabs-2x { + border-bottom-width: 2px; +} +.nav-line-tabs.nav-line-tabs-2x .nav-item { + margin-bottom: -2px; +} +.nav-line-tabs.nav-line-tabs-2x .nav-item .nav-link { + border-bottom-width: 2px; +} +.nav-line-tabs.nav-line-tabs-2x .nav-item .nav-link.active, +.nav-line-tabs.nav-line-tabs-2x .nav-item.show .nav-link, +.nav-line-tabs.nav-line-tabs-2x .nav-item .nav-link:hover:not(.disabled) { + border-bottom-width: 2px; +} + +.nav.nav-pills.nav-pills-custom .show > .nav-link, +.nav.nav-pills.nav-pills-custom .nav-link { + border: 1px dashed var(--bs-border-dashed-color); + border-radius: 0.625rem; +} +.nav.nav-pills.nav-pills-custom .show > .nav-link.nav-link-border-solid, +.nav.nav-pills.nav-pills-custom .nav-link.nav-link-border-solid { + border: 3px solid var(--bs-border-dashed-color); +} +.nav.nav-pills.nav-pills-custom .show > .nav-link.nav-link-border-solid.active, +.nav.nav-pills.nav-pills-custom .nav-link.nav-link-border-solid.active { + border: 3px solid var(--bs-primary); +} +.nav.nav-pills.nav-pills-custom .show > .nav-link .nav-icon img, +.nav.nav-pills.nav-pills-custom .nav-link .nav-icon img { + width: 30px; + transition: color 0.2s ease; +} +.nav.nav-pills.nav-pills-custom .show > .nav-link .nav-icon img.default, +.nav.nav-pills.nav-pills-custom .nav-link .nav-icon img.default { + display: inline-block; +} +.nav.nav-pills.nav-pills-custom .show > .nav-link .nav-icon img.active, +.nav.nav-pills.nav-pills-custom .nav-link .nav-icon img.active { + display: none; +} +.nav.nav-pills.nav-pills-custom .show > .nav-link.active, +.nav.nav-pills.nav-pills-custom .nav-link.active { + background-color: transparent; + border: 1px solid var(--bs-border-dashed-color); + transition-duration: 1ms; + position: relative; +} +.nav.nav-pills.nav-pills-custom .show > .nav-link.active .nav-text, +.nav.nav-pills.nav-pills-custom .nav-link.active .nav-text { + color: var(--bs-gray-800) !important; + transition: color 0.2s ease; +} +.nav.nav-pills.nav-pills-custom .show > .nav-link.active .bullet-custom, +.nav.nav-pills.nav-pills-custom .nav-link.active .bullet-custom { + display: block; +} +.nav.nav-pills.nav-pills-custom .show > .nav-link .bullet-custom, +.nav.nav-pills.nav-pills-custom .nav-link .bullet-custom { + display: none; +} +.nav.nav-pills.nav-pills-custom.nav-pills-active-custom .nav-item .nav-link:not(:active) span:nth-child(1) { + color: #B5B5C3; +} +.nav.nav-pills.nav-pills-custom.nav-pills-active-custom .nav-item .nav-link:not(:active) span:nth-child(2) { + color: #3F4254; +} +.nav.nav-pills.nav-pills-custom.nav-pills-active-custom .nav-item .nav-link:hover span:nth-child(1) { + color: #ffffff !important; +} +.nav.nav-pills.nav-pills-custom.nav-pills-active-custom .nav-item .nav-link:hover span:nth-child(2) { + color: #ffffff !important; +} +.nav.nav-pills.nav-pills-custom.nav-pills-active-custom .nav-item .nav-link.active span:nth-child(1) { + color: #ffffff !important; +} +.nav.nav-pills.nav-pills-custom.nav-pills-active-custom .nav-item .nav-link.active span:nth-child(2) { + color: #ffffff !important; +} + +.pagination { + display: flex; + flex-wrap: wrap; + justify-content: center; + margin: 0; +} +.pagination.pagination-circle .page-link { + border-radius: 50%; +} +.pagination.pagination-outline .page-link { + border: 1px solid var(--bs-border-color); +} +.pagination.pagination-outline .page-item:hover:not(.disabled) .page-link, .pagination.pagination-outline .page-item.active .page-link { + border-color: var(--bs-primary-light); +} + +.page-item { + margin-right: 0.5rem; + /*rtl:end:ignore*/ +} +.page-item:last-child { + margin-right: 0; +} +.page-item .page-link { + display: flex; + justify-content: center; + align-items: center; + border-radius: 0.475rem; + height: 2.5rem; + min-width: 2.5rem; + font-weight: 500; + font-size: 1.075rem; + /*rtl:options:{"autoRename":false}*/ + /*rtl:end:ignore*/ + /*rtl:options:{"autoRename":false}*/ +} +.page-item .page-link i { + font-size: 0.85rem; +} +.page-item .page-link .previous, +.page-item .page-link .next { + display: block; + height: 0.875rem; + width: 0.875rem; + /*rtl:raw:transform: rotateZ(-180deg);*/ +} +.page-item .page-link .previous { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-700); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-700%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-700%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); +} +.page-item .page-link .next { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-700); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-700%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-700%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); +} +.page-item:focus .page-link { + color: var(--bs-pagination-focus-color); + /*rtl:options:{"autoRename":false}*/ +} +.page-item:focus .page-link .svg-icon, +.page-item:focus .page-link i { + color: var(--bs-pagination-focus-color); +} +.page-item:focus .page-link .previous { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-pagination-focus-color); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-pagination-focus-color%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-pagination-focus-color%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); +} +.page-item:focus .page-link .next { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-pagination-focus-color); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-pagination-focus-color%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-pagination-focus-color%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); +} +.page-item:hover:not(.active):not(.offset):not(.disabled) .page-link { + color: var(--bs-pagination-hover-color); + /*rtl:options:{"autoRename":false}*/ +} +.page-item:hover:not(.active):not(.offset):not(.disabled) .page-link.page-text { + background-color: transparent; +} +.page-item:hover:not(.active):not(.offset):not(.disabled) .page-link .svg-icon, +.page-item:hover:not(.active):not(.offset):not(.disabled) .page-link i { + color: var(--bs-pagination-hover-color); +} +.page-item:hover:not(.active):not(.offset):not(.disabled) .page-link .previous { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-pagination-hover-color); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-pagination-hover-color%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-pagination-hover-color%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); +} +.page-item:hover:not(.active):not(.offset):not(.disabled) .page-link .next { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-pagination-hover-color); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-pagination-hover-color%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-pagination-hover-color%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); +} +.page-item.active .page-link { + color: var(--bs-pagination-active-color); + /*rtl:options:{"autoRename":false}*/ +} +.page-item.active .page-link.page-text { + background-color: transparent; +} +.page-item.active .page-link .svg-icon, +.page-item.active .page-link i { + color: var(--bs-pagination-active-color); +} +.page-item.active .page-link .previous { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-pagination-active-color); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-pagination-active-color%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-pagination-active-color%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); +} +.page-item.active .page-link .next { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-pagination-active-color); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-pagination-active-color%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-pagination-active-color%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); +} +.page-item.disabled .page-link { + color: var(--bs-pagination-disabled-color); + /*rtl:options:{"autoRename":false}*/ +} +.page-item.disabled .page-link .svg-icon, +.page-item.disabled .page-link i { + color: var(--bs-pagination-disabled-color); +} +.page-item.disabled .page-link .previous { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-pagination-disabled-color); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-pagination-disabled-color%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-pagination-disabled-color%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); +} +.page-item.disabled .page-link .next { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-pagination-disabled-color); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-pagination-disabled-color%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-pagination-disabled-color%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); +} + +@media (max-width: 991.98px) { + .page-item { + margin-right: 0.25rem; + } + .page-item:last-child { + margin-right: 0; + } +} +.separator { + display: block; + height: 0; + border-bottom: 1px solid var(--bs-border-color); +} +.separator.separator-dotted { + border-bottom-style: dotted; + border-bottom-color: var(--bs-border-dashed-color); +} +.separator.separator-dashed { + border-bottom-style: dashed; + border-bottom-color: var(--bs-border-dashed-color); +} +.separator.separator-content { + display: flex; + align-items: center; + border-bottom: 0; + text-align: center; +} +.separator.separator-content::before, .separator.separator-content::after { + content: " "; + width: 50%; + border-bottom: 1px solid var(--bs-border-color); +} +.separator.separator-content::before { + margin-right: 1.25rem; +} +.separator.separator-content::after { + margin-left: 1.25rem; +} +.separator.separator-content.separator-dotted::before, .separator.separator-content.separator-dotted::after { + border-bottom-style: dotted; + border-bottom-color: var(--bs-border-dashed-color); +} +.separator.separator-content.separator-dashed::before, .separator.separator-content.separator-dashed::after { + border-bottom-style: dashed; + border-bottom-color: var(--bs-border-dashed-color); +} +.separator.separator-content.border-white::before, .separator.separator-content.border-white::after { + border-color: #ffffff !important; +} +.separator.separator-content.border-light::before, .separator.separator-content.border-light::after { + border-color: #F9F9F9 !important; +} +.separator.separator-content.border-primary::before, .separator.separator-content.border-primary::after { + border-color: #009ef7 !important; +} +.separator.separator-content.border-secondary::before, .separator.separator-content.border-secondary::after { + border-color: #E1E3EA !important; +} +.separator.separator-content.border-success::before, .separator.separator-content.border-success::after { + border-color: #50cd89 !important; +} +.separator.separator-content.border-info::before, .separator.separator-content.border-info::after { + border-color: #7239ea !important; +} +.separator.separator-content.border-warning::before, .separator.separator-content.border-warning::after { + border-color: #ffc700 !important; +} +.separator.separator-content.border-danger::before, .separator.separator-content.border-danger::after { + border-color: #f1416c !important; +} +.separator.separator-content.border-dark::before, .separator.separator-content.border-dark::after { + border-color: #181C32 !important; +} + +.carousel-custom .carousel-indicators { + align-items: center; + position: static; + z-index: auto; + margin: 0; + padding: 0; + list-style: none; +} +.carousel-custom .carousel-indicators li { + transform: none; + opacity: 1; +} +.carousel-custom .carousel-indicators li.active { + transform: none; + opacity: 1; +} +.carousel-custom .carousel-indicators.carousel-indicators-dots li { + border-radius: 0; + background-color: transparent !important; + height: 13px; + width: 13px; + display: flex; + align-items: center; + justify-content: center; + text-align: center; +} +.carousel-custom .carousel-indicators.carousel-indicators-dots li:after { + display: inline-block; + content: " "; + border-radius: 50%; + transition: all 0.3s ease; + background-color: var(--bs-gray-200); + height: 9px; + width: 9px; +} +.carousel-custom .carousel-indicators.carousel-indicators-dots li.active { + background-color: transparent; +} +.carousel-custom .carousel-indicators.carousel-indicators-dots li.active:after { + transition: all 0.3s ease; + height: 13px; + width: 13px; + background-color: var(--bs-gray-400); +} +.carousel-custom .carousel-indicators.carousel-indicators-bullet li { + transition: all 0.3s ease; + background-color: transparent !important; + border-radius: 6px; + height: 6px; + width: 6px; + display: flex; + align-items: center; + justify-content: center; + text-align: center; +} +.carousel-custom .carousel-indicators.carousel-indicators-bullet li:after { + display: inline-block; + content: " "; + transition: all 0.3s ease; + background-color: var(--bs-gray-400); + border-radius: 6px; + height: 6px; + width: 6px; +} +.carousel-custom .carousel-indicators.carousel-indicators-bullet li.active { + transition: all 0.3s ease; + background-color: transparent; + height: 6px; + width: 16px; +} +.carousel-custom .carousel-indicators.carousel-indicators-bullet li.active:after { + transition: all 0.3s ease; + height: 6px; + width: 16px; + background-color: var(--bs-gray-600); +} +.carousel-custom .carousel-indicators-active-white li.active:after { + background-color: var(--bs-white) !important; +} +.carousel-custom .carousel-indicators-active-light li.active:after { + background-color: var(--bs-light) !important; +} +.carousel-custom .carousel-indicators-active-primary li.active:after { + background-color: var(--bs-primary) !important; +} +.carousel-custom .carousel-indicators-active-secondary li.active:after { + background-color: var(--bs-secondary) !important; +} +.carousel-custom .carousel-indicators-active-success li.active:after { + background-color: var(--bs-success) !important; +} +.carousel-custom .carousel-indicators-active-info li.active:after { + background-color: var(--bs-info) !important; +} +.carousel-custom .carousel-indicators-active-warning li.active:after { + background-color: var(--bs-warning) !important; +} +.carousel-custom .carousel-indicators-active-danger li.active:after { + background-color: var(--bs-danger) !important; +} +.carousel-custom .carousel-indicators-active-dark li.active:after { + background-color: var(--bs-dark) !important; +} +.carousel-custom.carousel-stretch { + height: 100%; + display: flex; + flex-direction: column; +} +.carousel-custom.carousel-stretch .carousel-inner { + flex-grow: 1; +} +.carousel-custom.carousel-stretch .carousel-item { + height: 100%; +} +.carousel-custom.carousel-stretch .carousel-wrapper { + display: flex; + flex-direction: column; + height: 100%; +} + +.menu-group { + display: flex; +} + +.menu, +.menu-wrapper { + display: flex; + padding: 0; + margin: 0; + list-style: none; +} + +.menu-inner { + padding: 0; + margin: 0; + list-style: none; +} + +.menu-sub { + display: none; + padding: 0; + margin: 0; + list-style: none; + flex-direction: column; +} + +.menu-item { + display: block; + padding: 0.15rem 0; +} +.menu-item .menu-link { + cursor: pointer; + display: flex; + align-items: center; + padding: 0; + flex: 0 0 100%; + padding: 0.65rem 1rem; + transition: none; + outline: none !important; +} +.menu-item .menu-link .menu-icon { + flex-shrink: 0; + display: flex; + align-items: center; + justify-content: center; + width: 2rem; + margin-right: 0.5rem; +} +.menu-item .menu-link .menu-icon .svg-icon { + line-height: 1; +} +.menu-item .menu-link .menu-bullet { + flex-shrink: 0; + display: flex; + align-items: center; + justify-content: center; + width: 1.25rem; + margin-right: 0.5rem; +} +.menu-item .menu-link .menu-title { + display: flex; + align-items: center; + flex-grow: 1; +} +.menu-item .menu-link .menu-badge { + display: flex; + align-items: center; + flex-shrink: 0; + margin-left: 0.5rem; +} +.menu-item .menu-link .menu-arrow { + display: flex; + align-items: stretch; + position: relative; + overflow: hidden; + flex-shrink: 0; + margin-left: 5px; + width: 9px; + height: 9px; +} +.menu-item .menu-link .menu-arrow:after { + display: block; + width: 100%; + content: " "; + will-change: transform; + background-size: 100% 100%; + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-muted); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-muted%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-muted%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-muted); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-muted%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-muted%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-item .menu-content { + padding: 0.65rem 1rem; +} + +.menu-item.show .menu-link .menu-arrow:after { + backface-visibility: hidden; + transition: transform 0.3s ease; +} + +.menu-center { + justify-content: center; +} + +.menu-heading { + color: var(--bs-menu-heading-color); +} + +.menu-item.menu-accordion .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; +} +.menu-item.menu-accordion.showing:not(.menu-dropdown) > .menu-link .menu-arrow:after, .menu-item.menu-accordion.show:not(.hiding):not(.menu-dropdown) > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(90deg); + /*rtl:remove*/ + transform: rotateZ(-90deg); + transition: transform 0.3s ease; +} + +.menu-sub-dropdown { + display: none; + border-radius: 0.475rem; + background-color: var(--bs-menu-dropdown-bg-color); + box-shadow: var(--bs-menu-dropdown-box-shadow); + z-index: 107; +} +.show.menu-dropdown > .menu-sub-dropdown, .menu-sub-dropdown.menu.show, .menu-sub-dropdown.show[data-popper-placement] { + display: flex; + will-change: transform; + animation: menu-sub-dropdown-animation-fade-in 0.3s ease 1, menu-sub-dropdown-animation-move-up 0.3s ease 1; +} + +.menu-sub-accordion { + display: none; +} +.show:not(.menu-dropdown) > .menu-sub-accordion, .menu-sub-accordion.show { + display: flex; +} + +.menu-sub-indention .menu-sub:not([data-popper-placement]) { + margin-left: 1rem; +} +.menu-sub-indention .menu-item .menu-item .menu-link.active { + margin-right: 1rem; +} + +.menu-inline { + display: flex; +} + +.menu-fit > .menu-item > .menu-content, +.menu-fit > .menu-item > .menu-link { + padding-left: 0 !important; + padding-right: 0 !important; +} + +.menu-column { + flex-direction: column; + width: 100%; +} + +.menu-row { + flex-direction: row; +} +.menu-row > .menu-item { + display: flex; + align-items: center; +} +.menu-row > .menu-item > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; +} + +.menu-rounded .menu-link { + border-radius: 0.475rem; +} + +.menu-pill .menu-link { + border-radius: 50px; +} + +.menu-rounded-0 .menu-link { + border-radius: 0 !important; +} + +@media (min-width: 576px) { + .menu-item.menu-sm-accordion .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; + } + .menu-item.menu-sm-accordion.showing:not(.menu-dropdown) > .menu-link .menu-arrow:after, .menu-item.menu-sm-accordion.show:not(.hiding):not(.menu-dropdown) > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(90deg); + /*rtl:remove*/ + transform: rotateZ(-90deg); + transition: transform 0.3s ease; + } + .menu-sub-sm-dropdown { + display: none; + border-radius: 0.475rem; + background-color: var(--bs-menu-dropdown-bg-color); + box-shadow: var(--bs-menu-dropdown-box-shadow); + z-index: 107; + } + .show.menu-dropdown > .menu-sub-sm-dropdown, .menu-sub-sm-dropdown.menu.show, .menu-sub-sm-dropdown.show[data-popper-placement] { + display: flex; + will-change: transform; + animation: menu-sub-dropdown-animation-fade-in 0.3s ease 1, menu-sub-dropdown-animation-move-up 0.3s ease 1; + } + .menu-sub-sm-accordion { + display: none; + } + .show:not(.menu-dropdown) > .menu-sub-sm-accordion, .menu-sub-sm-accordion.show { + display: flex; + } + .menu-sub-sm-indention .menu-sub:not([data-popper-placement]) { + margin-left: 1rem; + } + .menu-sub-sm-indention .menu-item .menu-item .menu-link.active { + margin-right: 1rem; + } + .menu-sm-inline { + display: flex; + } + .menu-sm-fit > .menu-item > .menu-content, +.menu-sm-fit > .menu-item > .menu-link { + padding-left: 0 !important; + padding-right: 0 !important; + } + .menu-sm-column { + flex-direction: column; + width: 100%; + } + .menu-sm-row { + flex-direction: row; + } + .menu-sm-row > .menu-item { + display: flex; + align-items: center; + } + .menu-sm-row > .menu-item > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; + } + .menu-sm-rounded .menu-link { + border-radius: 0.475rem; + } + .menu-sm-pill .menu-link { + border-radius: 50px; + } + .menu-sm-rounded-0 .menu-link { + border-radius: 0 !important; + } +} +@media (min-width: 768px) { + .menu-item.menu-md-accordion .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; + } + .menu-item.menu-md-accordion.showing:not(.menu-dropdown) > .menu-link .menu-arrow:after, .menu-item.menu-md-accordion.show:not(.hiding):not(.menu-dropdown) > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(90deg); + /*rtl:remove*/ + transform: rotateZ(-90deg); + transition: transform 0.3s ease; + } + .menu-sub-md-dropdown { + display: none; + border-radius: 0.475rem; + background-color: var(--bs-menu-dropdown-bg-color); + box-shadow: var(--bs-menu-dropdown-box-shadow); + z-index: 107; + } + .show.menu-dropdown > .menu-sub-md-dropdown, .menu-sub-md-dropdown.menu.show, .menu-sub-md-dropdown.show[data-popper-placement] { + display: flex; + will-change: transform; + animation: menu-sub-dropdown-animation-fade-in 0.3s ease 1, menu-sub-dropdown-animation-move-up 0.3s ease 1; + } + .menu-sub-md-accordion { + display: none; + } + .show:not(.menu-dropdown) > .menu-sub-md-accordion, .menu-sub-md-accordion.show { + display: flex; + } + .menu-sub-md-indention .menu-sub:not([data-popper-placement]) { + margin-left: 1rem; + } + .menu-sub-md-indention .menu-item .menu-item .menu-link.active { + margin-right: 1rem; + } + .menu-md-inline { + display: flex; + } + .menu-md-fit > .menu-item > .menu-content, +.menu-md-fit > .menu-item > .menu-link { + padding-left: 0 !important; + padding-right: 0 !important; + } + .menu-md-column { + flex-direction: column; + width: 100%; + } + .menu-md-row { + flex-direction: row; + } + .menu-md-row > .menu-item { + display: flex; + align-items: center; + } + .menu-md-row > .menu-item > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; + } + .menu-md-rounded .menu-link { + border-radius: 0.475rem; + } + .menu-md-pill .menu-link { + border-radius: 50px; + } + .menu-md-rounded-0 .menu-link { + border-radius: 0 !important; + } +} +@media (min-width: 992px) { + .menu-item.menu-lg-accordion .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; + } + .menu-item.menu-lg-accordion.showing:not(.menu-dropdown) > .menu-link .menu-arrow:after, .menu-item.menu-lg-accordion.show:not(.hiding):not(.menu-dropdown) > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(90deg); + /*rtl:remove*/ + transform: rotateZ(-90deg); + transition: transform 0.3s ease; + } + .menu-sub-lg-dropdown { + display: none; + border-radius: 0.475rem; + background-color: var(--bs-menu-dropdown-bg-color); + box-shadow: var(--bs-menu-dropdown-box-shadow); + z-index: 107; + } + .show.menu-dropdown > .menu-sub-lg-dropdown, .menu-sub-lg-dropdown.menu.show, .menu-sub-lg-dropdown.show[data-popper-placement] { + display: flex; + will-change: transform; + animation: menu-sub-dropdown-animation-fade-in 0.3s ease 1, menu-sub-dropdown-animation-move-up 0.3s ease 1; + } + .menu-sub-lg-accordion { + display: none; + } + .show:not(.menu-dropdown) > .menu-sub-lg-accordion, .menu-sub-lg-accordion.show { + display: flex; + } + .menu-sub-lg-indention .menu-sub:not([data-popper-placement]) { + margin-left: 1rem; + } + .menu-sub-lg-indention .menu-item .menu-item .menu-link.active { + margin-right: 1rem; + } + .menu-lg-inline { + display: flex; + } + .menu-lg-fit > .menu-item > .menu-content, +.menu-lg-fit > .menu-item > .menu-link { + padding-left: 0 !important; + padding-right: 0 !important; + } + .menu-lg-column { + flex-direction: column; + width: 100%; + } + .menu-lg-row { + flex-direction: row; + } + .menu-lg-row > .menu-item { + display: flex; + align-items: center; + } + .menu-lg-row > .menu-item > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; + } + .menu-lg-rounded .menu-link { + border-radius: 0.475rem; + } + .menu-lg-pill .menu-link { + border-radius: 50px; + } + .menu-lg-rounded-0 .menu-link { + border-radius: 0 !important; + } +} +@media (min-width: 1200px) { + .menu-item.menu-xl-accordion .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; + } + .menu-item.menu-xl-accordion.showing:not(.menu-dropdown) > .menu-link .menu-arrow:after, .menu-item.menu-xl-accordion.show:not(.hiding):not(.menu-dropdown) > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(90deg); + /*rtl:remove*/ + transform: rotateZ(-90deg); + transition: transform 0.3s ease; + } + .menu-sub-xl-dropdown { + display: none; + border-radius: 0.475rem; + background-color: var(--bs-menu-dropdown-bg-color); + box-shadow: var(--bs-menu-dropdown-box-shadow); + z-index: 107; + } + .show.menu-dropdown > .menu-sub-xl-dropdown, .menu-sub-xl-dropdown.menu.show, .menu-sub-xl-dropdown.show[data-popper-placement] { + display: flex; + will-change: transform; + animation: menu-sub-dropdown-animation-fade-in 0.3s ease 1, menu-sub-dropdown-animation-move-up 0.3s ease 1; + } + .menu-sub-xl-accordion { + display: none; + } + .show:not(.menu-dropdown) > .menu-sub-xl-accordion, .menu-sub-xl-accordion.show { + display: flex; + } + .menu-sub-xl-indention .menu-sub:not([data-popper-placement]) { + margin-left: 1rem; + } + .menu-sub-xl-indention .menu-item .menu-item .menu-link.active { + margin-right: 1rem; + } + .menu-xl-inline { + display: flex; + } + .menu-xl-fit > .menu-item > .menu-content, +.menu-xl-fit > .menu-item > .menu-link { + padding-left: 0 !important; + padding-right: 0 !important; + } + .menu-xl-column { + flex-direction: column; + width: 100%; + } + .menu-xl-row { + flex-direction: row; + } + .menu-xl-row > .menu-item { + display: flex; + align-items: center; + } + .menu-xl-row > .menu-item > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; + } + .menu-xl-rounded .menu-link { + border-radius: 0.475rem; + } + .menu-xl-pill .menu-link { + border-radius: 50px; + } + .menu-xl-rounded-0 .menu-link { + border-radius: 0 !important; + } +} +@media (min-width: 1400px) { + .menu-item.menu-xxl-accordion .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; + } + .menu-item.menu-xxl-accordion.showing:not(.menu-dropdown) > .menu-link .menu-arrow:after, .menu-item.menu-xxl-accordion.show:not(.hiding):not(.menu-dropdown) > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(90deg); + /*rtl:remove*/ + transform: rotateZ(-90deg); + transition: transform 0.3s ease; + } + .menu-sub-xxl-dropdown { + display: none; + border-radius: 0.475rem; + background-color: var(--bs-menu-dropdown-bg-color); + box-shadow: var(--bs-menu-dropdown-box-shadow); + z-index: 107; + } + .show.menu-dropdown > .menu-sub-xxl-dropdown, .menu-sub-xxl-dropdown.menu.show, .menu-sub-xxl-dropdown.show[data-popper-placement] { + display: flex; + will-change: transform; + animation: menu-sub-dropdown-animation-fade-in 0.3s ease 1, menu-sub-dropdown-animation-move-up 0.3s ease 1; + } + .menu-sub-xxl-accordion { + display: none; + } + .show:not(.menu-dropdown) > .menu-sub-xxl-accordion, .menu-sub-xxl-accordion.show { + display: flex; + } + .menu-sub-xxl-indention .menu-sub:not([data-popper-placement]) { + margin-left: 1rem; + } + .menu-sub-xxl-indention .menu-item .menu-item .menu-link.active { + margin-right: 1rem; + } + .menu-xxl-inline { + display: flex; + } + .menu-xxl-fit > .menu-item > .menu-content, +.menu-xxl-fit > .menu-item > .menu-link { + padding-left: 0 !important; + padding-right: 0 !important; + } + .menu-xxl-column { + flex-direction: column; + width: 100%; + } + .menu-xxl-row { + flex-direction: row; + } + .menu-xxl-row > .menu-item { + display: flex; + align-items: center; + } + .menu-xxl-row > .menu-item > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; + } + .menu-xxl-rounded .menu-link { + border-radius: 0.475rem; + } + .menu-xxl-pill .menu-link { + border-radius: 50px; + } + .menu-xxl-rounded-0 .menu-link { + border-radius: 0 !important; + } +} +@media (max-width: 575.98px) { + .menu-item.menu-sm-down-accordion .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; + } + .menu-item.menu-sm-down-accordion.showing:not(.menu-dropdown) > .menu-link .menu-arrow:after, .menu-item.menu-sm-down-accordion.show:not(.hiding):not(.menu-dropdown) > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(90deg); + /*rtl:remove*/ + transform: rotateZ(-90deg); + transition: transform 0.3s ease; + } + .menu-sub-sm-down-dropdown { + display: none; + border-radius: 0.475rem; + background-color: var(--bs-menu-dropdown-bg-color); + box-shadow: var(--bs-menu-dropdown-box-shadow); + z-index: 107; + } + .show.menu-dropdown > .menu-sub-sm-down-dropdown, .menu-sub-sm-down-dropdown.menu.show, .menu-sub-sm-down-dropdown.show[data-popper-placement] { + display: flex; + will-change: transform; + animation: menu-sub-dropdown-animation-fade-in 0.3s ease 1, menu-sub-dropdown-animation-move-up 0.3s ease 1; + } + .menu-sub-sm-down-accordion { + display: none; + } + .show:not(.menu-dropdown) > .menu-sub-sm-down-accordion, .menu-sub-sm-down-accordion.show { + display: flex; + } + .menu-sub-sm-down-indention .menu-sub:not([data-popper-placement]) { + margin-left: 1rem; + } + .menu-sub-sm-down-indention .menu-item .menu-item .menu-link.active { + margin-right: 1rem; + } + .menu-sm-down-inline { + display: flex; + } + .menu-sm-down-fit > .menu-item > .menu-content, +.menu-sm-down-fit > .menu-item > .menu-link { + padding-left: 0 !important; + padding-right: 0 !important; + } + .menu-sm-down-column { + flex-direction: column; + width: 100%; + } + .menu-sm-down-row { + flex-direction: row; + } + .menu-sm-down-row > .menu-item { + display: flex; + align-items: center; + } + .menu-sm-down-row > .menu-item > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; + } + .menu-sm-down-rounded .menu-link { + border-radius: 0.475rem; + } + .menu-sm-down-pill .menu-link { + border-radius: 50px; + } + .menu-sm-down-rounded-0 .menu-link { + border-radius: 0 !important; + } +} +@media (max-width: 767.98px) { + .menu-item.menu-md-down-accordion .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; + } + .menu-item.menu-md-down-accordion.showing:not(.menu-dropdown) > .menu-link .menu-arrow:after, .menu-item.menu-md-down-accordion.show:not(.hiding):not(.menu-dropdown) > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(90deg); + /*rtl:remove*/ + transform: rotateZ(-90deg); + transition: transform 0.3s ease; + } + .menu-sub-md-down-dropdown { + display: none; + border-radius: 0.475rem; + background-color: var(--bs-menu-dropdown-bg-color); + box-shadow: var(--bs-menu-dropdown-box-shadow); + z-index: 107; + } + .show.menu-dropdown > .menu-sub-md-down-dropdown, .menu-sub-md-down-dropdown.menu.show, .menu-sub-md-down-dropdown.show[data-popper-placement] { + display: flex; + will-change: transform; + animation: menu-sub-dropdown-animation-fade-in 0.3s ease 1, menu-sub-dropdown-animation-move-up 0.3s ease 1; + } + .menu-sub-md-down-accordion { + display: none; + } + .show:not(.menu-dropdown) > .menu-sub-md-down-accordion, .menu-sub-md-down-accordion.show { + display: flex; + } + .menu-sub-md-down-indention .menu-sub:not([data-popper-placement]) { + margin-left: 1rem; + } + .menu-sub-md-down-indention .menu-item .menu-item .menu-link.active { + margin-right: 1rem; + } + .menu-md-down-inline { + display: flex; + } + .menu-md-down-fit > .menu-item > .menu-content, +.menu-md-down-fit > .menu-item > .menu-link { + padding-left: 0 !important; + padding-right: 0 !important; + } + .menu-md-down-column { + flex-direction: column; + width: 100%; + } + .menu-md-down-row { + flex-direction: row; + } + .menu-md-down-row > .menu-item { + display: flex; + align-items: center; + } + .menu-md-down-row > .menu-item > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; + } + .menu-md-down-rounded .menu-link { + border-radius: 0.475rem; + } + .menu-md-down-pill .menu-link { + border-radius: 50px; + } + .menu-md-down-rounded-0 .menu-link { + border-radius: 0 !important; + } +} +@media (max-width: 991.98px) { + .menu-item.menu-lg-down-accordion .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; + } + .menu-item.menu-lg-down-accordion.showing:not(.menu-dropdown) > .menu-link .menu-arrow:after, .menu-item.menu-lg-down-accordion.show:not(.hiding):not(.menu-dropdown) > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(90deg); + /*rtl:remove*/ + transform: rotateZ(-90deg); + transition: transform 0.3s ease; + } + .menu-sub-lg-down-dropdown { + display: none; + border-radius: 0.475rem; + background-color: var(--bs-menu-dropdown-bg-color); + box-shadow: var(--bs-menu-dropdown-box-shadow); + z-index: 107; + } + .show.menu-dropdown > .menu-sub-lg-down-dropdown, .menu-sub-lg-down-dropdown.menu.show, .menu-sub-lg-down-dropdown.show[data-popper-placement] { + display: flex; + will-change: transform; + animation: menu-sub-dropdown-animation-fade-in 0.3s ease 1, menu-sub-dropdown-animation-move-up 0.3s ease 1; + } + .menu-sub-lg-down-accordion { + display: none; + } + .show:not(.menu-dropdown) > .menu-sub-lg-down-accordion, .menu-sub-lg-down-accordion.show { + display: flex; + } + .menu-sub-lg-down-indention .menu-sub:not([data-popper-placement]) { + margin-left: 1rem; + } + .menu-sub-lg-down-indention .menu-item .menu-item .menu-link.active { + margin-right: 1rem; + } + .menu-lg-down-inline { + display: flex; + } + .menu-lg-down-fit > .menu-item > .menu-content, +.menu-lg-down-fit > .menu-item > .menu-link { + padding-left: 0 !important; + padding-right: 0 !important; + } + .menu-lg-down-column { + flex-direction: column; + width: 100%; + } + .menu-lg-down-row { + flex-direction: row; + } + .menu-lg-down-row > .menu-item { + display: flex; + align-items: center; + } + .menu-lg-down-row > .menu-item > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; + } + .menu-lg-down-rounded .menu-link { + border-radius: 0.475rem; + } + .menu-lg-down-pill .menu-link { + border-radius: 50px; + } + .menu-lg-down-rounded-0 .menu-link { + border-radius: 0 !important; + } +} +@media (max-width: 1199.98px) { + .menu-item.menu-xl-down-accordion .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; + } + .menu-item.menu-xl-down-accordion.showing:not(.menu-dropdown) > .menu-link .menu-arrow:after, .menu-item.menu-xl-down-accordion.show:not(.hiding):not(.menu-dropdown) > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(90deg); + /*rtl:remove*/ + transform: rotateZ(-90deg); + transition: transform 0.3s ease; + } + .menu-sub-xl-down-dropdown { + display: none; + border-radius: 0.475rem; + background-color: var(--bs-menu-dropdown-bg-color); + box-shadow: var(--bs-menu-dropdown-box-shadow); + z-index: 107; + } + .show.menu-dropdown > .menu-sub-xl-down-dropdown, .menu-sub-xl-down-dropdown.menu.show, .menu-sub-xl-down-dropdown.show[data-popper-placement] { + display: flex; + will-change: transform; + animation: menu-sub-dropdown-animation-fade-in 0.3s ease 1, menu-sub-dropdown-animation-move-up 0.3s ease 1; + } + .menu-sub-xl-down-accordion { + display: none; + } + .show:not(.menu-dropdown) > .menu-sub-xl-down-accordion, .menu-sub-xl-down-accordion.show { + display: flex; + } + .menu-sub-xl-down-indention .menu-sub:not([data-popper-placement]) { + margin-left: 1rem; + } + .menu-sub-xl-down-indention .menu-item .menu-item .menu-link.active { + margin-right: 1rem; + } + .menu-xl-down-inline { + display: flex; + } + .menu-xl-down-fit > .menu-item > .menu-content, +.menu-xl-down-fit > .menu-item > .menu-link { + padding-left: 0 !important; + padding-right: 0 !important; + } + .menu-xl-down-column { + flex-direction: column; + width: 100%; + } + .menu-xl-down-row { + flex-direction: row; + } + .menu-xl-down-row > .menu-item { + display: flex; + align-items: center; + } + .menu-xl-down-row > .menu-item > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; + } + .menu-xl-down-rounded .menu-link { + border-radius: 0.475rem; + } + .menu-xl-down-pill .menu-link { + border-radius: 50px; + } + .menu-xl-down-rounded-0 .menu-link { + border-radius: 0 !important; + } +} +@media (max-width: 1399.98px) { + .menu-item.menu-xxl-down-accordion .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; + } + .menu-item.menu-xxl-down-accordion.showing:not(.menu-dropdown) > .menu-link .menu-arrow:after, .menu-item.menu-xxl-down-accordion.show:not(.hiding):not(.menu-dropdown) > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(90deg); + /*rtl:remove*/ + transform: rotateZ(-90deg); + transition: transform 0.3s ease; + } + .menu-sub-xxl-down-dropdown { + display: none; + border-radius: 0.475rem; + background-color: var(--bs-menu-dropdown-bg-color); + box-shadow: var(--bs-menu-dropdown-box-shadow); + z-index: 107; + } + .show.menu-dropdown > .menu-sub-xxl-down-dropdown, .menu-sub-xxl-down-dropdown.menu.show, .menu-sub-xxl-down-dropdown.show[data-popper-placement] { + display: flex; + will-change: transform; + animation: menu-sub-dropdown-animation-fade-in 0.3s ease 1, menu-sub-dropdown-animation-move-up 0.3s ease 1; + } + .menu-sub-xxl-down-accordion { + display: none; + } + .show:not(.menu-dropdown) > .menu-sub-xxl-down-accordion, .menu-sub-xxl-down-accordion.show { + display: flex; + } + .menu-sub-xxl-down-indention .menu-sub:not([data-popper-placement]) { + margin-left: 1rem; + } + .menu-sub-xxl-down-indention .menu-item .menu-item .menu-link.active { + margin-right: 1rem; + } + .menu-xxl-down-inline { + display: flex; + } + .menu-xxl-down-fit > .menu-item > .menu-content, +.menu-xxl-down-fit > .menu-item > .menu-link { + padding-left: 0 !important; + padding-right: 0 !important; + } + .menu-xxl-down-column { + flex-direction: column; + width: 100%; + } + .menu-xxl-down-row { + flex-direction: row; + } + .menu-xxl-down-row > .menu-item { + display: flex; + align-items: center; + } + .menu-xxl-down-row > .menu-item > .menu-link .menu-arrow:after { + /*rtl:ignore*/ + transform: rotateZ(-90deg); + /*rtl:remove*/ + transform: rotateZ(90deg); + transition: transform 0.3s ease; + } + .menu-xxl-down-rounded .menu-link { + border-radius: 0.475rem; + } + .menu-xxl-down-pill .menu-link { + border-radius: 50px; + } + .menu-xxl-down-rounded-0 .menu-link { + border-radius: 0 !important; + } +} +.menu-link-indention .menu-item { + padding-top: 0; + padding-bottom: 0; +} +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link { + padding-left: calc(1rem + 1rem); +} +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link { + padding-left: calc(2rem + 1rem); +} +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link { + padding-left: calc(3rem + 1rem); +} +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link { + padding-left: calc(4rem + 1rem); +} +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link { + padding-left: 1rem; + padding-right: 0; +} +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link { + padding-left: calc(2rem); + padding-right: 0; +} +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link { + padding-left: calc(3rem); + padding-right: 0; +} +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-item > .menu-link, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-content, +.menu-link-indention.menu-fit .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-sub:not([data-popper-placement]) > .menu-inner > .menu-item > .menu-link { + padding-left: calc(4rem); + padding-right: 0; +} + +@keyframes menu-sub-dropdown-animation-fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes menu-sub-dropdown-animation-move-up { + from { + margin-top: 0.75rem; + } + to { + margin-top: 0; + } +} +@keyframes menu-sub-dropdown-animation-move-down { + from { + margin-bottom: 0.75rem; + } + to { + margin-bottom: 0; + } +} +.menu-white .menu-item .menu-link { + color: var(--bs-white); +} +.menu-white .menu-item .menu-link .menu-title { + color: var(--bs-white); +} +.menu-white .menu-item .menu-link .menu-icon, +.menu-white .menu-item .menu-link .menu-icon .svg-icon, +.menu-white .menu-item .menu-link .menu-icon i { + color: var(--bs-white); +} +.menu-white .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-white); +} +.menu-white .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-white); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-white%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-white%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-white); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-white%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-white%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-title-white .menu-item .menu-link { + color: var(--bs-text-white); +} +.menu-title-white .menu-item .menu-link .menu-title { + color: var(--bs-text-white); +} + +.menu-icon-white .menu-item .menu-link .menu-icon, +.menu-icon-white .menu-item .menu-link .menu-icon .svg-icon, +.menu-icon-white .menu-item .menu-link .menu-icon i { + color: var(--bs-text-white); +} + +.menu-bullet-white .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-text-white); +} + +.menu-arrow-white .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-white); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-white%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-white%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-white); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-white%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-white%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-primary .menu-item .menu-link { + color: var(--bs-primary); +} +.menu-primary .menu-item .menu-link .menu-title { + color: var(--bs-primary); +} +.menu-primary .menu-item .menu-link .menu-icon, +.menu-primary .menu-item .menu-link .menu-icon .svg-icon, +.menu-primary .menu-item .menu-link .menu-icon i { + color: var(--bs-primary); +} +.menu-primary .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.menu-primary .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-title-primary .menu-item .menu-link { + color: var(--bs-text-primary); +} +.menu-title-primary .menu-item .menu-link .menu-title { + color: var(--bs-text-primary); +} + +.menu-icon-primary .menu-item .menu-link .menu-icon, +.menu-icon-primary .menu-item .menu-link .menu-icon .svg-icon, +.menu-icon-primary .menu-item .menu-link .menu-icon i { + color: var(--bs-text-primary); +} + +.menu-bullet-primary .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-text-primary); +} + +.menu-arrow-primary .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-secondary .menu-item .menu-link { + color: var(--bs-secondary); +} +.menu-secondary .menu-item .menu-link .menu-title { + color: var(--bs-secondary); +} +.menu-secondary .menu-item .menu-link .menu-icon, +.menu-secondary .menu-item .menu-link .menu-icon .svg-icon, +.menu-secondary .menu-item .menu-link .menu-icon i { + color: var(--bs-secondary); +} +.menu-secondary .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-secondary); +} +.menu-secondary .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-secondary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-secondary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-secondary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-secondary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-secondary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-secondary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-title-secondary .menu-item .menu-link { + color: var(--bs-text-secondary); +} +.menu-title-secondary .menu-item .menu-link .menu-title { + color: var(--bs-text-secondary); +} + +.menu-icon-secondary .menu-item .menu-link .menu-icon, +.menu-icon-secondary .menu-item .menu-link .menu-icon .svg-icon, +.menu-icon-secondary .menu-item .menu-link .menu-icon i { + color: var(--bs-text-secondary); +} + +.menu-bullet-secondary .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-text-secondary); +} + +.menu-arrow-secondary .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-secondary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-secondary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-secondary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-secondary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-secondary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-secondary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-light .menu-item .menu-link { + color: var(--bs-light); +} +.menu-light .menu-item .menu-link .menu-title { + color: var(--bs-light); +} +.menu-light .menu-item .menu-link .menu-icon, +.menu-light .menu-item .menu-link .menu-icon .svg-icon, +.menu-light .menu-item .menu-link .menu-icon i { + color: var(--bs-light); +} +.menu-light .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-light); +} +.menu-light .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-light); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-light%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-light%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-light); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-light%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-light%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-title-light .menu-item .menu-link { + color: var(--bs-text-light); +} +.menu-title-light .menu-item .menu-link .menu-title { + color: var(--bs-text-light); +} + +.menu-icon-light .menu-item .menu-link .menu-icon, +.menu-icon-light .menu-item .menu-link .menu-icon .svg-icon, +.menu-icon-light .menu-item .menu-link .menu-icon i { + color: var(--bs-text-light); +} + +.menu-bullet-light .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-text-light); +} + +.menu-arrow-light .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-light); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-light%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-light%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-light); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-light%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-light%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-success .menu-item .menu-link { + color: var(--bs-success); +} +.menu-success .menu-item .menu-link .menu-title { + color: var(--bs-success); +} +.menu-success .menu-item .menu-link .menu-icon, +.menu-success .menu-item .menu-link .menu-icon .svg-icon, +.menu-success .menu-item .menu-link .menu-icon i { + color: var(--bs-success); +} +.menu-success .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-success); +} +.menu-success .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-success); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-success%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-success%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-success); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-success%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-success%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-title-success .menu-item .menu-link { + color: var(--bs-text-success); +} +.menu-title-success .menu-item .menu-link .menu-title { + color: var(--bs-text-success); +} + +.menu-icon-success .menu-item .menu-link .menu-icon, +.menu-icon-success .menu-item .menu-link .menu-icon .svg-icon, +.menu-icon-success .menu-item .menu-link .menu-icon i { + color: var(--bs-text-success); +} + +.menu-bullet-success .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-text-success); +} + +.menu-arrow-success .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-success); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-success%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-success%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-success); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-success%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-success%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-info .menu-item .menu-link { + color: var(--bs-info); +} +.menu-info .menu-item .menu-link .menu-title { + color: var(--bs-info); +} +.menu-info .menu-item .menu-link .menu-icon, +.menu-info .menu-item .menu-link .menu-icon .svg-icon, +.menu-info .menu-item .menu-link .menu-icon i { + color: var(--bs-info); +} +.menu-info .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-info); +} +.menu-info .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-info); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-info%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-info%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-info); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-info%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-info%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-title-info .menu-item .menu-link { + color: var(--bs-text-info); +} +.menu-title-info .menu-item .menu-link .menu-title { + color: var(--bs-text-info); +} + +.menu-icon-info .menu-item .menu-link .menu-icon, +.menu-icon-info .menu-item .menu-link .menu-icon .svg-icon, +.menu-icon-info .menu-item .menu-link .menu-icon i { + color: var(--bs-text-info); +} + +.menu-bullet-info .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-text-info); +} + +.menu-arrow-info .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-info); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-info%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-info%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-info); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-info%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-info%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-warning .menu-item .menu-link { + color: var(--bs-warning); +} +.menu-warning .menu-item .menu-link .menu-title { + color: var(--bs-warning); +} +.menu-warning .menu-item .menu-link .menu-icon, +.menu-warning .menu-item .menu-link .menu-icon .svg-icon, +.menu-warning .menu-item .menu-link .menu-icon i { + color: var(--bs-warning); +} +.menu-warning .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-warning); +} +.menu-warning .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-warning); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-warning%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-warning%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-warning); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-warning%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-warning%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-title-warning .menu-item .menu-link { + color: var(--bs-text-warning); +} +.menu-title-warning .menu-item .menu-link .menu-title { + color: var(--bs-text-warning); +} + +.menu-icon-warning .menu-item .menu-link .menu-icon, +.menu-icon-warning .menu-item .menu-link .menu-icon .svg-icon, +.menu-icon-warning .menu-item .menu-link .menu-icon i { + color: var(--bs-text-warning); +} + +.menu-bullet-warning .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-text-warning); +} + +.menu-arrow-warning .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-warning); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-warning%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-warning%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-warning); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-warning%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-warning%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-danger .menu-item .menu-link { + color: var(--bs-danger); +} +.menu-danger .menu-item .menu-link .menu-title { + color: var(--bs-danger); +} +.menu-danger .menu-item .menu-link .menu-icon, +.menu-danger .menu-item .menu-link .menu-icon .svg-icon, +.menu-danger .menu-item .menu-link .menu-icon i { + color: var(--bs-danger); +} +.menu-danger .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-danger); +} +.menu-danger .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-danger); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-danger%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-danger%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-danger); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-danger%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-danger%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-title-danger .menu-item .menu-link { + color: var(--bs-text-danger); +} +.menu-title-danger .menu-item .menu-link .menu-title { + color: var(--bs-text-danger); +} + +.menu-icon-danger .menu-item .menu-link .menu-icon, +.menu-icon-danger .menu-item .menu-link .menu-icon .svg-icon, +.menu-icon-danger .menu-item .menu-link .menu-icon i { + color: var(--bs-text-danger); +} + +.menu-bullet-danger .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-text-danger); +} + +.menu-arrow-danger .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-danger); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-danger%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-danger%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-danger); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-danger%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-danger%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-dark .menu-item .menu-link { + color: var(--bs-dark); +} +.menu-dark .menu-item .menu-link .menu-title { + color: var(--bs-dark); +} +.menu-dark .menu-item .menu-link .menu-icon, +.menu-dark .menu-item .menu-link .menu-icon .svg-icon, +.menu-dark .menu-item .menu-link .menu-icon i { + color: var(--bs-dark); +} +.menu-dark .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-dark); +} +.menu-dark .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-dark); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-dark%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-dark%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-dark); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-dark%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-dark%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-title-dark .menu-item .menu-link { + color: var(--bs-text-dark); +} +.menu-title-dark .menu-item .menu-link .menu-title { + color: var(--bs-text-dark); +} + +.menu-icon-dark .menu-item .menu-link .menu-icon, +.menu-icon-dark .menu-item .menu-link .menu-icon .svg-icon, +.menu-icon-dark .menu-item .menu-link .menu-icon i { + color: var(--bs-text-dark); +} + +.menu-bullet-dark .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-text-dark); +} + +.menu-arrow-dark .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-dark); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-dark%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-dark%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-dark); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-dark%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-dark%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-muted .menu-item .menu-link { + color: var(--bs-muted); +} +.menu-muted .menu-item .menu-link .menu-title { + color: var(--bs-muted); +} +.menu-muted .menu-item .menu-link .menu-icon, +.menu-muted .menu-item .menu-link .menu-icon .svg-icon, +.menu-muted .menu-item .menu-link .menu-icon i { + color: var(--bs-muted); +} +.menu-muted .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-muted); +} +.menu-muted .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-muted); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-muted%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-muted%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-muted); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-muted%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-muted%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-title-muted .menu-item .menu-link { + color: var(--bs-text-muted); +} +.menu-title-muted .menu-item .menu-link .menu-title { + color: var(--bs-text-muted); +} + +.menu-icon-muted .menu-item .menu-link .menu-icon, +.menu-icon-muted .menu-item .menu-link .menu-icon .svg-icon, +.menu-icon-muted .menu-item .menu-link .menu-icon i { + color: var(--bs-text-muted); +} + +.menu-bullet-muted .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-text-muted); +} + +.menu-arrow-muted .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-muted); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-muted%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-muted%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-muted); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-muted%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-muted%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-gray-100 .menu-item .menu-link { + color: var(--bs-gray-100); +} +.menu-gray-100 .menu-item .menu-link .menu-title { + color: var(--bs-gray-100); +} +.menu-gray-100 .menu-item .menu-link .menu-icon, +.menu-gray-100 .menu-item .menu-link .menu-icon .svg-icon, +.menu-gray-100 .menu-item .menu-link .menu-icon i { + color: var(--bs-gray-100); +} +.menu-gray-100 .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-gray-100); +} +.menu-gray-100 .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-100); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-100%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-100%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-100); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-100%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-100%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-title-gray-100 .menu-item .menu-link { + color: var(--bs-text-gray-100); +} +.menu-title-gray-100 .menu-item .menu-link .menu-title { + color: var(--bs-text-gray-100); +} + +.menu-icon-gray-100 .menu-item .menu-link .menu-icon, +.menu-icon-gray-100 .menu-item .menu-link .menu-icon .svg-icon, +.menu-icon-gray-100 .menu-item .menu-link .menu-icon i { + color: var(--bs-text-gray-100); +} + +.menu-bullet-gray-100 .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-text-gray-100); +} + +.menu-arrow-gray-100 .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-gray-100); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-100%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-100%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-gray-100); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-100%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-100%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-gray-200 .menu-item .menu-link { + color: var(--bs-gray-200); +} +.menu-gray-200 .menu-item .menu-link .menu-title { + color: var(--bs-gray-200); +} +.menu-gray-200 .menu-item .menu-link .menu-icon, +.menu-gray-200 .menu-item .menu-link .menu-icon .svg-icon, +.menu-gray-200 .menu-item .menu-link .menu-icon i { + color: var(--bs-gray-200); +} +.menu-gray-200 .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-gray-200); +} +.menu-gray-200 .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-200); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-200%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-200%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-200); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-200%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-200%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-title-gray-200 .menu-item .menu-link { + color: var(--bs-text-gray-200); +} +.menu-title-gray-200 .menu-item .menu-link .menu-title { + color: var(--bs-text-gray-200); +} + +.menu-icon-gray-200 .menu-item .menu-link .menu-icon, +.menu-icon-gray-200 .menu-item .menu-link .menu-icon .svg-icon, +.menu-icon-gray-200 .menu-item .menu-link .menu-icon i { + color: var(--bs-text-gray-200); +} + +.menu-bullet-gray-200 .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-text-gray-200); +} + +.menu-arrow-gray-200 .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-gray-200); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-200%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-200%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-gray-200); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-200%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-200%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-gray-300 .menu-item .menu-link { + color: var(--bs-gray-300); +} +.menu-gray-300 .menu-item .menu-link .menu-title { + color: var(--bs-gray-300); +} +.menu-gray-300 .menu-item .menu-link .menu-icon, +.menu-gray-300 .menu-item .menu-link .menu-icon .svg-icon, +.menu-gray-300 .menu-item .menu-link .menu-icon i { + color: var(--bs-gray-300); +} +.menu-gray-300 .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-gray-300); +} +.menu-gray-300 .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-300); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-300%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-300%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-300); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-300%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-300%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-title-gray-300 .menu-item .menu-link { + color: var(--bs-text-gray-300); +} +.menu-title-gray-300 .menu-item .menu-link .menu-title { + color: var(--bs-text-gray-300); +} + +.menu-icon-gray-300 .menu-item .menu-link .menu-icon, +.menu-icon-gray-300 .menu-item .menu-link .menu-icon .svg-icon, +.menu-icon-gray-300 .menu-item .menu-link .menu-icon i { + color: var(--bs-text-gray-300); +} + +.menu-bullet-gray-300 .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-text-gray-300); +} + +.menu-arrow-gray-300 .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-gray-300); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-300%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-300%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-gray-300); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-300%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-300%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-gray-400 .menu-item .menu-link { + color: var(--bs-gray-400); +} +.menu-gray-400 .menu-item .menu-link .menu-title { + color: var(--bs-gray-400); +} +.menu-gray-400 .menu-item .menu-link .menu-icon, +.menu-gray-400 .menu-item .menu-link .menu-icon .svg-icon, +.menu-gray-400 .menu-item .menu-link .menu-icon i { + color: var(--bs-gray-400); +} +.menu-gray-400 .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-gray-400); +} +.menu-gray-400 .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-400); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-400%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-400%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-400); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-400%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-400%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-title-gray-400 .menu-item .menu-link { + color: var(--bs-text-gray-400); +} +.menu-title-gray-400 .menu-item .menu-link .menu-title { + color: var(--bs-text-gray-400); +} + +.menu-icon-gray-400 .menu-item .menu-link .menu-icon, +.menu-icon-gray-400 .menu-item .menu-link .menu-icon .svg-icon, +.menu-icon-gray-400 .menu-item .menu-link .menu-icon i { + color: var(--bs-text-gray-400); +} + +.menu-bullet-gray-400 .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-text-gray-400); +} + +.menu-arrow-gray-400 .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-gray-400); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-400%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-400%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-gray-400); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-400%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-400%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-gray-500 .menu-item .menu-link { + color: var(--bs-gray-500); +} +.menu-gray-500 .menu-item .menu-link .menu-title { + color: var(--bs-gray-500); +} +.menu-gray-500 .menu-item .menu-link .menu-icon, +.menu-gray-500 .menu-item .menu-link .menu-icon .svg-icon, +.menu-gray-500 .menu-item .menu-link .menu-icon i { + color: var(--bs-gray-500); +} +.menu-gray-500 .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-gray-500); +} +.menu-gray-500 .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-500); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-500%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-500%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-500); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-500%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-500%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-title-gray-500 .menu-item .menu-link { + color: var(--bs-text-gray-500); +} +.menu-title-gray-500 .menu-item .menu-link .menu-title { + color: var(--bs-text-gray-500); +} + +.menu-icon-gray-500 .menu-item .menu-link .menu-icon, +.menu-icon-gray-500 .menu-item .menu-link .menu-icon .svg-icon, +.menu-icon-gray-500 .menu-item .menu-link .menu-icon i { + color: var(--bs-text-gray-500); +} + +.menu-bullet-gray-500 .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-text-gray-500); +} + +.menu-arrow-gray-500 .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-gray-500); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-500%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-500%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-gray-500); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-500%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-500%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-gray-600 .menu-item .menu-link { + color: var(--bs-gray-600); +} +.menu-gray-600 .menu-item .menu-link .menu-title { + color: var(--bs-gray-600); +} +.menu-gray-600 .menu-item .menu-link .menu-icon, +.menu-gray-600 .menu-item .menu-link .menu-icon .svg-icon, +.menu-gray-600 .menu-item .menu-link .menu-icon i { + color: var(--bs-gray-600); +} +.menu-gray-600 .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-gray-600); +} +.menu-gray-600 .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-600); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-600%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-600%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-600); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-600%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-600%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-title-gray-600 .menu-item .menu-link { + color: var(--bs-text-gray-600); +} +.menu-title-gray-600 .menu-item .menu-link .menu-title { + color: var(--bs-text-gray-600); +} + +.menu-icon-gray-600 .menu-item .menu-link .menu-icon, +.menu-icon-gray-600 .menu-item .menu-link .menu-icon .svg-icon, +.menu-icon-gray-600 .menu-item .menu-link .menu-icon i { + color: var(--bs-text-gray-600); +} + +.menu-bullet-gray-600 .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-text-gray-600); +} + +.menu-arrow-gray-600 .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-gray-600); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-600%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-600%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-gray-600); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-600%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-600%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-gray-700 .menu-item .menu-link { + color: var(--bs-gray-700); +} +.menu-gray-700 .menu-item .menu-link .menu-title { + color: var(--bs-gray-700); +} +.menu-gray-700 .menu-item .menu-link .menu-icon, +.menu-gray-700 .menu-item .menu-link .menu-icon .svg-icon, +.menu-gray-700 .menu-item .menu-link .menu-icon i { + color: var(--bs-gray-700); +} +.menu-gray-700 .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-gray-700); +} +.menu-gray-700 .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-700); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-700%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-700%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-700); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-700%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-700%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-title-gray-700 .menu-item .menu-link { + color: var(--bs-text-gray-700); +} +.menu-title-gray-700 .menu-item .menu-link .menu-title { + color: var(--bs-text-gray-700); +} + +.menu-icon-gray-700 .menu-item .menu-link .menu-icon, +.menu-icon-gray-700 .menu-item .menu-link .menu-icon .svg-icon, +.menu-icon-gray-700 .menu-item .menu-link .menu-icon i { + color: var(--bs-text-gray-700); +} + +.menu-bullet-gray-700 .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-text-gray-700); +} + +.menu-arrow-gray-700 .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-gray-700); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-700%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-700%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-gray-700); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-700%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-700%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-gray-800 .menu-item .menu-link { + color: var(--bs-gray-800); +} +.menu-gray-800 .menu-item .menu-link .menu-title { + color: var(--bs-gray-800); +} +.menu-gray-800 .menu-item .menu-link .menu-icon, +.menu-gray-800 .menu-item .menu-link .menu-icon .svg-icon, +.menu-gray-800 .menu-item .menu-link .menu-icon i { + color: var(--bs-gray-800); +} +.menu-gray-800 .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-gray-800); +} +.menu-gray-800 .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-800); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-800%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-800%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-800); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-800%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-800%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-title-gray-800 .menu-item .menu-link { + color: var(--bs-text-gray-800); +} +.menu-title-gray-800 .menu-item .menu-link .menu-title { + color: var(--bs-text-gray-800); +} + +.menu-icon-gray-800 .menu-item .menu-link .menu-icon, +.menu-icon-gray-800 .menu-item .menu-link .menu-icon .svg-icon, +.menu-icon-gray-800 .menu-item .menu-link .menu-icon i { + color: var(--bs-text-gray-800); +} + +.menu-bullet-gray-800 .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-text-gray-800); +} + +.menu-arrow-gray-800 .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-gray-800); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-800%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-800%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-gray-800); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-800%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-800%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-gray-900 .menu-item .menu-link { + color: var(--bs-gray-900); +} +.menu-gray-900 .menu-item .menu-link .menu-title { + color: var(--bs-gray-900); +} +.menu-gray-900 .menu-item .menu-link .menu-icon, +.menu-gray-900 .menu-item .menu-link .menu-icon .svg-icon, +.menu-gray-900 .menu-item .menu-link .menu-icon i { + color: var(--bs-gray-900); +} +.menu-gray-900 .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-gray-900); +} +.menu-gray-900 .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-900); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-900%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-900%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-900); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-900%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-900%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-title-gray-900 .menu-item .menu-link { + color: var(--bs-text-gray-900); +} +.menu-title-gray-900 .menu-item .menu-link .menu-title { + color: var(--bs-text-gray-900); +} + +.menu-icon-gray-900 .menu-item .menu-link .menu-icon, +.menu-icon-gray-900 .menu-item .menu-link .menu-icon .svg-icon, +.menu-icon-gray-900 .menu-item .menu-link .menu-icon i { + color: var(--bs-text-gray-900); +} + +.menu-bullet-gray-900 .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-text-gray-900); +} + +.menu-arrow-gray-900 .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-gray-900); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-900%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-900%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-gray-900); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-900%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-gray-900%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-hover-bg .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), .menu-hover-bg .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; + background-color: var(--bs-menu-link-bg-color-hover); + color: var(--bs-menu-link-color-hover); +} +.menu-hover-bg .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-title, .menu-hover-bg .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-title { + color: var(--bs-menu-link-color-hover); +} +.menu-hover-bg .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-hover-bg .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-hover-bg .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon i, .menu-hover-bg .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-hover-bg .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-hover-bg .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon i { + color: var(--bs-menu-link-color-hover); +} +.menu-hover-bg .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-bullet .bullet, .menu-hover-bg .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-bullet .bullet { + background-color: var(--bs-menu-link-color-hover); +} +.menu-hover-bg .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-arrow:after, .menu-hover-bg .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-hover); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-hover%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-hover%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-hover); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-hover%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-hover%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-here-bg .menu-item.here > .menu-link { + transition: color 0.2s ease; + background-color: var(--bs-menu-link-bg-color-here); + color: var(--bs-menu-link-color-here); +} +.menu-here-bg .menu-item.here > .menu-link .menu-title { + color: var(--bs-menu-link-color-here); +} +.menu-here-bg .menu-item.here > .menu-link .menu-icon, +.menu-here-bg .menu-item.here > .menu-link .menu-icon .svg-icon, +.menu-here-bg .menu-item.here > .menu-link .menu-icon i { + color: var(--bs-menu-link-color-here); +} +.menu-here-bg .menu-item.here > .menu-link .menu-bullet .bullet { + background-color: var(--bs-menu-link-color-here); +} +.menu-here-bg .menu-item.here > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-here); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-here%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-here%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-here); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-here%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-here%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-root-here-bg > .menu-item.here > .menu-link { + transition: color 0.2s ease; + background-color: var(--bs-menu-link-bg-color-here); + color: var(--bs-menu-link-color-here); +} +.menu-root-here-bg > .menu-item.here > .menu-link .menu-title { + color: var(--bs-menu-link-color-here); +} +.menu-root-here-bg > .menu-item.here > .menu-link .menu-icon, +.menu-root-here-bg > .menu-item.here > .menu-link .menu-icon .svg-icon, +.menu-root-here-bg > .menu-item.here > .menu-link .menu-icon i { + color: var(--bs-menu-link-color-here); +} +.menu-root-here-bg > .menu-item.here > .menu-link .menu-bullet .bullet { + background-color: var(--bs-menu-link-color-here); +} +.menu-root-here-bg > .menu-item.here > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-here); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-here%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-here%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-here); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-here%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-here%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +@media (min-width: 992px) { + .menu-root-here-bg-desktop > .menu-item.here > .menu-link { + transition: color 0.2s ease; + background-color: var(--bs-menu-link-bg-color-here); + color: var(--bs-menu-link-color-here); + } + .menu-root-here-bg-desktop > .menu-item.here > .menu-link .menu-title { + color: var(--bs-menu-link-color-here); + } + .menu-root-here-bg-desktop > .menu-item.here > .menu-link .menu-icon, +.menu-root-here-bg-desktop > .menu-item.here > .menu-link .menu-icon .svg-icon, +.menu-root-here-bg-desktop > .menu-item.here > .menu-link .menu-icon i { + color: var(--bs-menu-link-color-here); + } + .menu-root-here-bg-desktop > .menu-item.here > .menu-link .menu-bullet .bullet { + background-color: var(--bs-menu-link-color-here); + } + .menu-root-here-bg-desktop > .menu-item.here > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-here); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-here%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-here%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-here); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-here%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-here%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ + } +} +.menu-show-bg .menu-item.show > .menu-link { + transition: color 0.2s ease; + background-color: var(--bs-menu-link-bg-color-show); + color: var(--bs-menu-link-color-show); +} +.menu-show-bg .menu-item.show > .menu-link .menu-title { + color: var(--bs-menu-link-color-show); +} +.menu-show-bg .menu-item.show > .menu-link .menu-icon, +.menu-show-bg .menu-item.show > .menu-link .menu-icon .svg-icon, +.menu-show-bg .menu-item.show > .menu-link .menu-icon i { + color: var(--bs-menu-link-color-show); +} +.menu-show-bg .menu-item.show > .menu-link .menu-bullet .bullet { + background-color: var(--bs-menu-link-color-show); +} +.menu-show-bg .menu-item.show > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-show); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-show%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-show%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-show); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-show%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-show%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-active-bg .menu-item .menu-link.active { + transition: color 0.2s ease; + background-color: var(--bs-menu-link-bg-color-active); + color: var(--bs-menu-link-color-active); +} +.menu-active-bg .menu-item .menu-link.active .menu-title { + color: var(--bs-menu-link-color-active); +} +.menu-active-bg .menu-item .menu-link.active .menu-icon, +.menu-active-bg .menu-item .menu-link.active .menu-icon .svg-icon, +.menu-active-bg .menu-item .menu-link.active .menu-icon i { + color: var(--bs-menu-link-color-active); +} +.menu-active-bg .menu-item .menu-link.active .menu-bullet .bullet { + background-color: var(--bs-menu-link-color-active); +} +.menu-active-bg .menu-item .menu-link.active .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-active); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-active%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-active%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-active); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-active%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-active%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-state-bg .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), .menu-state-bg .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; + background-color: var(--bs-menu-link-bg-color-hover); + color: var(--bs-menu-link-color-hover); +} +.menu-state-bg .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-title, .menu-state-bg .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-title { + color: var(--bs-menu-link-color-hover); +} +.menu-state-bg .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-state-bg .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-state-bg .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon i, .menu-state-bg .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-state-bg .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-state-bg .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon i { + color: var(--bs-menu-link-color-hover); +} +.menu-state-bg .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-bullet .bullet, .menu-state-bg .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-bullet .bullet { + background-color: var(--bs-menu-link-color-hover); +} +.menu-state-bg .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-arrow:after, .menu-state-bg .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-hover); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-hover%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-hover%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-hover); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-hover%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-hover%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-bg .menu-item.here > .menu-link { + transition: color 0.2s ease; + background-color: var(--bs-menu-link-bg-color-here); + color: var(--bs-menu-link-color-here); +} +.menu-state-bg .menu-item.here > .menu-link .menu-title { + color: var(--bs-menu-link-color-here); +} +.menu-state-bg .menu-item.here > .menu-link .menu-icon, +.menu-state-bg .menu-item.here > .menu-link .menu-icon .svg-icon, +.menu-state-bg .menu-item.here > .menu-link .menu-icon i { + color: var(--bs-menu-link-color-here); +} +.menu-state-bg .menu-item.here > .menu-link .menu-bullet .bullet { + background-color: var(--bs-menu-link-color-here); +} +.menu-state-bg .menu-item.here > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-here); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-here%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-here%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-here); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-here%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-here%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-bg .menu-item.show > .menu-link { + transition: color 0.2s ease; + background-color: var(--bs-menu-link-bg-color-show); + color: var(--bs-menu-link-color-show); +} +.menu-state-bg .menu-item.show > .menu-link .menu-title { + color: var(--bs-menu-link-color-show); +} +.menu-state-bg .menu-item.show > .menu-link .menu-icon, +.menu-state-bg .menu-item.show > .menu-link .menu-icon .svg-icon, +.menu-state-bg .menu-item.show > .menu-link .menu-icon i { + color: var(--bs-menu-link-color-show); +} +.menu-state-bg .menu-item.show > .menu-link .menu-bullet .bullet { + background-color: var(--bs-menu-link-color-show); +} +.menu-state-bg .menu-item.show > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-show); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-show%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-show%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-show); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-show%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-show%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-bg .menu-item .menu-link.active { + transition: color 0.2s ease; + background-color: var(--bs-menu-link-bg-color-active); + color: var(--bs-menu-link-color-active); +} +.menu-state-bg .menu-item .menu-link.active .menu-title { + color: var(--bs-menu-link-color-active); +} +.menu-state-bg .menu-item .menu-link.active .menu-icon, +.menu-state-bg .menu-item .menu-link.active .menu-icon .svg-icon, +.menu-state-bg .menu-item .menu-link.active .menu-icon i { + color: var(--bs-menu-link-color-active); +} +.menu-state-bg .menu-item .menu-link.active .menu-bullet .bullet { + background-color: var(--bs-menu-link-color-active); +} +.menu-state-bg .menu-item .menu-link.active .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-active); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-active%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-active%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-active); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-active%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-active%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-state-color .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), .menu-state-color .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; + color: var(--bs-menu-link-color-hover); +} +.menu-state-color .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-title, .menu-state-color .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-title { + color: var(--bs-menu-link-color-hover); +} +.menu-state-color .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-state-color .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-state-color .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon i, .menu-state-color .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-state-color .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-state-color .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon i { + color: var(--bs-menu-link-color-hover); +} +.menu-state-color .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-bullet .bullet, .menu-state-color .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-bullet .bullet { + background-color: var(--bs-menu-link-color-hover); +} +.menu-state-color .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-arrow:after, .menu-state-color .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-hover); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-hover%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-hover%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-hover); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-hover%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-hover%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-color .menu-item.here > .menu-link { + transition: color 0.2s ease; + color: var(--bs-menu-link-color-here); +} +.menu-state-color .menu-item.here > .menu-link .menu-title { + color: var(--bs-menu-link-color-here); +} +.menu-state-color .menu-item.here > .menu-link .menu-icon, +.menu-state-color .menu-item.here > .menu-link .menu-icon .svg-icon, +.menu-state-color .menu-item.here > .menu-link .menu-icon i { + color: var(--bs-menu-link-color-here); +} +.menu-state-color .menu-item.here > .menu-link .menu-bullet .bullet { + background-color: var(--bs-menu-link-color-here); +} +.menu-state-color .menu-item.here > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-here); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-here%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-here%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-here); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-here%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-here%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-color .menu-item.show > .menu-link { + transition: color 0.2s ease; + color: var(--bs-menu-link-color-show); +} +.menu-state-color .menu-item.show > .menu-link .menu-title { + color: var(--bs-menu-link-color-show); +} +.menu-state-color .menu-item.show > .menu-link .menu-icon, +.menu-state-color .menu-item.show > .menu-link .menu-icon .svg-icon, +.menu-state-color .menu-item.show > .menu-link .menu-icon i { + color: var(--bs-menu-link-color-show); +} +.menu-state-color .menu-item.show > .menu-link .menu-bullet .bullet { + background-color: var(--bs-menu-link-color-show); +} +.menu-state-color .menu-item.show > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-show); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-show%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-show%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-show); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-show%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-show%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-color .menu-item .menu-link.active { + transition: color 0.2s ease; + color: var(--bs-menu-link-color-active); +} +.menu-state-color .menu-item .menu-link.active .menu-title { + color: var(--bs-menu-link-color-active); +} +.menu-state-color .menu-item .menu-link.active .menu-icon, +.menu-state-color .menu-item .menu-link.active .menu-icon .svg-icon, +.menu-state-color .menu-item .menu-link.active .menu-icon i { + color: var(--bs-menu-link-color-active); +} +.menu-state-color .menu-item .menu-link.active .menu-bullet .bullet { + background-color: var(--bs-menu-link-color-active); +} +.menu-state-color .menu-item .menu-link.active .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-active); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-active%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-active%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-menu-link-color-active); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-active%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-menu-link-color-active%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-hover-bg-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), .menu-hover-bg-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; + background-color: var(--bs-primary); + color: var(--bs-primary-inverse); +} +.menu-hover-bg-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-title, .menu-hover-bg-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-title { + color: var(--bs-primary-inverse); +} +.menu-hover-bg-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-hover-bg-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-hover-bg-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon i, .menu-hover-bg-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-hover-bg-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-hover-bg-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon i { + color: var(--bs-primary-inverse); +} +.menu-hover-bg-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-bullet .bullet, .menu-hover-bg-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-bullet .bullet { + background-color: var(--bs-primary-inverse); +} +.menu-hover-bg-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-arrow:after, .menu-hover-bg-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-show-bg-primary .menu-item.show > .menu-link { + transition: color 0.2s ease; + background-color: var(--bs-primary); + color: var(--bs-primary-inverse); +} +.menu-show-bg-primary .menu-item.show > .menu-link .menu-title { + color: var(--bs-primary-inverse); +} +.menu-show-bg-primary .menu-item.show > .menu-link .menu-icon, +.menu-show-bg-primary .menu-item.show > .menu-link .menu-icon .svg-icon, +.menu-show-bg-primary .menu-item.show > .menu-link .menu-icon i { + color: var(--bs-primary-inverse); +} +.menu-show-bg-primary .menu-item.show > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary-inverse); +} +.menu-show-bg-primary .menu-item.show > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-here-bg-primary .menu-item.here > .menu-link { + transition: color 0.2s ease; + background-color: var(--bs-primary); + color: var(--bs-primary-inverse); +} +.menu-here-bg-primary .menu-item.here > .menu-link .menu-title { + color: var(--bs-primary-inverse); +} +.menu-here-bg-primary .menu-item.here > .menu-link .menu-icon, +.menu-here-bg-primary .menu-item.here > .menu-link .menu-icon .svg-icon, +.menu-here-bg-primary .menu-item.here > .menu-link .menu-icon i { + color: var(--bs-primary-inverse); +} +.menu-here-bg-primary .menu-item.here > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary-inverse); +} +.menu-here-bg-primary .menu-item.here > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-active-bg-primary .menu-item .menu-link.active { + transition: color 0.2s ease; + background-color: var(--bs-primary); + color: var(--bs-primary-inverse); +} +.menu-active-bg-primary .menu-item .menu-link.active .menu-title { + color: var(--bs-primary-inverse); +} +.menu-active-bg-primary .menu-item .menu-link.active .menu-icon, +.menu-active-bg-primary .menu-item .menu-link.active .menu-icon .svg-icon, +.menu-active-bg-primary .menu-item .menu-link.active .menu-icon i { + color: var(--bs-primary-inverse); +} +.menu-active-bg-primary .menu-item .menu-link.active .menu-bullet .bullet { + background-color: var(--bs-primary-inverse); +} +.menu-active-bg-primary .menu-item .menu-link.active .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-state-bg-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), .menu-state-bg-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; + background-color: var(--bs-primary); + color: var(--bs-primary-inverse); +} +.menu-state-bg-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-title, .menu-state-bg-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-title { + color: var(--bs-primary-inverse); +} +.menu-state-bg-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-state-bg-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-state-bg-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon i, .menu-state-bg-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-state-bg-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-state-bg-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon i { + color: var(--bs-primary-inverse); +} +.menu-state-bg-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-bullet .bullet, .menu-state-bg-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-bullet .bullet { + background-color: var(--bs-primary-inverse); +} +.menu-state-bg-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-arrow:after, .menu-state-bg-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-bg-primary .menu-item.show > .menu-link { + transition: color 0.2s ease; + background-color: var(--bs-primary); + color: var(--bs-primary-inverse); +} +.menu-state-bg-primary .menu-item.show > .menu-link .menu-title { + color: var(--bs-primary-inverse); +} +.menu-state-bg-primary .menu-item.show > .menu-link .menu-icon, +.menu-state-bg-primary .menu-item.show > .menu-link .menu-icon .svg-icon, +.menu-state-bg-primary .menu-item.show > .menu-link .menu-icon i { + color: var(--bs-primary-inverse); +} +.menu-state-bg-primary .menu-item.show > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary-inverse); +} +.menu-state-bg-primary .menu-item.show > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-bg-primary .menu-item.here > .menu-link { + transition: color 0.2s ease; + background-color: var(--bs-primary); + color: var(--bs-primary-inverse); +} +.menu-state-bg-primary .menu-item.here > .menu-link .menu-title { + color: var(--bs-primary-inverse); +} +.menu-state-bg-primary .menu-item.here > .menu-link .menu-icon, +.menu-state-bg-primary .menu-item.here > .menu-link .menu-icon .svg-icon, +.menu-state-bg-primary .menu-item.here > .menu-link .menu-icon i { + color: var(--bs-primary-inverse); +} +.menu-state-bg-primary .menu-item.here > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary-inverse); +} +.menu-state-bg-primary .menu-item.here > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-bg-primary .menu-item .menu-link.active { + transition: color 0.2s ease; + background-color: var(--bs-primary); + color: var(--bs-primary-inverse); +} +.menu-state-bg-primary .menu-item .menu-link.active .menu-title { + color: var(--bs-primary-inverse); +} +.menu-state-bg-primary .menu-item .menu-link.active .menu-icon, +.menu-state-bg-primary .menu-item .menu-link.active .menu-icon .svg-icon, +.menu-state-bg-primary .menu-item .menu-link.active .menu-icon i { + color: var(--bs-primary-inverse); +} +.menu-state-bg-primary .menu-item .menu-link.active .menu-bullet .bullet { + background-color: var(--bs-primary-inverse); +} +.menu-state-bg-primary .menu-item .menu-link.active .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-bg-primary .menu-item.show > .menu-link { + transition: color 0.2s ease; + background-color: var(--bs-primary); + color: var(--bs-primary-inverse); +} +.menu-state-bg-primary .menu-item.show > .menu-link .menu-title { + color: var(--bs-primary-inverse); +} +.menu-state-bg-primary .menu-item.show > .menu-link .menu-icon, +.menu-state-bg-primary .menu-item.show > .menu-link .menu-icon .svg-icon, +.menu-state-bg-primary .menu-item.show > .menu-link .menu-icon i { + color: var(--bs-primary-inverse); +} +.menu-state-bg-primary .menu-item.show > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary-inverse); +} +.menu-state-bg-primary .menu-item.show > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-show-bg-light-primary .menu-item.show > .menu-link { + transition: color 0.2s ease; + background-color: var(--bs-primary-light); + color: var(--bs-primary); +} +.menu-show-bg-light-primary .menu-item.show > .menu-link .menu-title { + color: var(--bs-primary); +} +.menu-show-bg-light-primary .menu-item.show > .menu-link .menu-icon, +.menu-show-bg-light-primary .menu-item.show > .menu-link .menu-icon .svg-icon, +.menu-show-bg-light-primary .menu-item.show > .menu-link .menu-icon i { + color: var(--bs-primary); +} +.menu-show-bg-light-primary .menu-item.show > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.menu-show-bg-light-primary .menu-item.show > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-here-bg-light-primary .menu-item.here > .menu-link { + transition: color 0.2s ease; + background-color: var(--bs-primary-light); + color: var(--bs-primary); +} +.menu-here-bg-light-primary .menu-item.here > .menu-link .menu-title { + color: var(--bs-primary); +} +.menu-here-bg-light-primary .menu-item.here > .menu-link .menu-icon, +.menu-here-bg-light-primary .menu-item.here > .menu-link .menu-icon .svg-icon, +.menu-here-bg-light-primary .menu-item.here > .menu-link .menu-icon i { + color: var(--bs-primary); +} +.menu-here-bg-light-primary .menu-item.here > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.menu-here-bg-light-primary .menu-item.here > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-hover-bg-light-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), .menu-hover-bg-light-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; + background-color: var(--bs-primary-light); + color: var(--bs-primary); +} +.menu-hover-bg-light-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-title, .menu-hover-bg-light-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-title { + color: var(--bs-primary); +} +.menu-hover-bg-light-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-hover-bg-light-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-hover-bg-light-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon i, .menu-hover-bg-light-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-hover-bg-light-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-hover-bg-light-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon i { + color: var(--bs-primary); +} +.menu-hover-bg-light-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-bullet .bullet, .menu-hover-bg-light-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.menu-hover-bg-light-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-arrow:after, .menu-hover-bg-light-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-active-bg-light-primary .menu-item .menu-link.active { + transition: color 0.2s ease; + background-color: var(--bs-primary-light); + color: var(--bs-primary); +} +.menu-active-bg-light-primary .menu-item .menu-link.active .menu-title { + color: var(--bs-primary); +} +.menu-active-bg-light-primary .menu-item .menu-link.active .menu-icon, +.menu-active-bg-light-primary .menu-item .menu-link.active .menu-icon .svg-icon, +.menu-active-bg-light-primary .menu-item .menu-link.active .menu-icon i { + color: var(--bs-primary); +} +.menu-active-bg-light-primary .menu-item .menu-link.active .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.menu-active-bg-light-primary .menu-item .menu-link.active .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-state-bg-light-primary .menu-item.show > .menu-link { + transition: color 0.2s ease; + background-color: var(--bs-primary-light); + color: var(--bs-primary); +} +.menu-state-bg-light-primary .menu-item.show > .menu-link .menu-title { + color: var(--bs-primary); +} +.menu-state-bg-light-primary .menu-item.show > .menu-link .menu-icon, +.menu-state-bg-light-primary .menu-item.show > .menu-link .menu-icon .svg-icon, +.menu-state-bg-light-primary .menu-item.show > .menu-link .menu-icon i { + color: var(--bs-primary); +} +.menu-state-bg-light-primary .menu-item.show > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.menu-state-bg-light-primary .menu-item.show > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-bg-light-primary .menu-item.here > .menu-link { + transition: color 0.2s ease; + background-color: var(--bs-primary-light); + color: var(--bs-primary); +} +.menu-state-bg-light-primary .menu-item.here > .menu-link .menu-title { + color: var(--bs-primary); +} +.menu-state-bg-light-primary .menu-item.here > .menu-link .menu-icon, +.menu-state-bg-light-primary .menu-item.here > .menu-link .menu-icon .svg-icon, +.menu-state-bg-light-primary .menu-item.here > .menu-link .menu-icon i { + color: var(--bs-primary); +} +.menu-state-bg-light-primary .menu-item.here > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.menu-state-bg-light-primary .menu-item.here > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-bg-light-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), .menu-state-bg-light-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; + background-color: var(--bs-primary-light); + color: var(--bs-primary); +} +.menu-state-bg-light-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-title, .menu-state-bg-light-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-title { + color: var(--bs-primary); +} +.menu-state-bg-light-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-state-bg-light-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-state-bg-light-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon i, .menu-state-bg-light-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-state-bg-light-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-state-bg-light-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon i { + color: var(--bs-primary); +} +.menu-state-bg-light-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-bullet .bullet, .menu-state-bg-light-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.menu-state-bg-light-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-arrow:after, .menu-state-bg-light-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-bg-light-primary .menu-item .menu-link.active { + transition: color 0.2s ease; + background-color: var(--bs-primary-light); + color: var(--bs-primary); +} +.menu-state-bg-light-primary .menu-item .menu-link.active .menu-title { + color: var(--bs-primary); +} +.menu-state-bg-light-primary .menu-item .menu-link.active .menu-icon, +.menu-state-bg-light-primary .menu-item .menu-link.active .menu-icon .svg-icon, +.menu-state-bg-light-primary .menu-item .menu-link.active .menu-icon i { + color: var(--bs-primary); +} +.menu-state-bg-light-primary .menu-item .menu-link.active .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.menu-state-bg-light-primary .menu-item .menu-link.active .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-hover-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), .menu-hover-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; + color: var(--bs-primary); +} +.menu-hover-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-title, .menu-hover-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-title { + color: var(--bs-primary); +} +.menu-hover-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-hover-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-hover-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon i, .menu-hover-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-hover-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-hover-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon i { + color: var(--bs-primary); +} +.menu-hover-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-bullet .bullet, .menu-hover-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.menu-hover-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-arrow:after, .menu-hover-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-show-primary .menu-item.show > .menu-link { + transition: color 0.2s ease; + color: var(--bs-primary); +} +.menu-show-primary .menu-item.show > .menu-link .menu-title { + color: var(--bs-primary); +} +.menu-show-primary .menu-item.show > .menu-link .menu-icon, +.menu-show-primary .menu-item.show > .menu-link .menu-icon .svg-icon, +.menu-show-primary .menu-item.show > .menu-link .menu-icon i { + color: var(--bs-primary); +} +.menu-show-primary .menu-item.show > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.menu-show-primary .menu-item.show > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-here-primary .menu-item.here > .menu-link { + transition: color 0.2s ease; + color: var(--bs-primary); +} +.menu-here-primary .menu-item.here > .menu-link .menu-title { + color: var(--bs-primary); +} +.menu-here-primary .menu-item.here > .menu-link .menu-icon, +.menu-here-primary .menu-item.here > .menu-link .menu-icon .svg-icon, +.menu-here-primary .menu-item.here > .menu-link .menu-icon i { + color: var(--bs-primary); +} +.menu-here-primary .menu-item.here > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.menu-here-primary .menu-item.here > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-active-primary .menu-item .menu-link.active { + transition: color 0.2s ease; + color: var(--bs-primary); +} +.menu-active-primary .menu-item .menu-link.active .menu-title { + color: var(--bs-primary); +} +.menu-active-primary .menu-item .menu-link.active .menu-icon, +.menu-active-primary .menu-item .menu-link.active .menu-icon .svg-icon, +.menu-active-primary .menu-item .menu-link.active .menu-icon i { + color: var(--bs-primary); +} +.menu-active-primary .menu-item .menu-link.active .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.menu-active-primary .menu-item .menu-link.active .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-state-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), .menu-state-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; + color: var(--bs-primary); +} +.menu-state-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-title, .menu-state-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-title { + color: var(--bs-primary); +} +.menu-state-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-state-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-state-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon i, .menu-state-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-state-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-state-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon i { + color: var(--bs-primary); +} +.menu-state-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-bullet .bullet, .menu-state-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.menu-state-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-arrow:after, .menu-state-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-primary .menu-item.show > .menu-link { + transition: color 0.2s ease; + color: var(--bs-primary); +} +.menu-state-primary .menu-item.show > .menu-link .menu-title { + color: var(--bs-primary); +} +.menu-state-primary .menu-item.show > .menu-link .menu-icon, +.menu-state-primary .menu-item.show > .menu-link .menu-icon .svg-icon, +.menu-state-primary .menu-item.show > .menu-link .menu-icon i { + color: var(--bs-primary); +} +.menu-state-primary .menu-item.show > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.menu-state-primary .menu-item.show > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-primary .menu-item.here > .menu-link { + transition: color 0.2s ease; + color: var(--bs-primary); +} +.menu-state-primary .menu-item.here > .menu-link .menu-title { + color: var(--bs-primary); +} +.menu-state-primary .menu-item.here > .menu-link .menu-icon, +.menu-state-primary .menu-item.here > .menu-link .menu-icon .svg-icon, +.menu-state-primary .menu-item.here > .menu-link .menu-icon i { + color: var(--bs-primary); +} +.menu-state-primary .menu-item.here > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.menu-state-primary .menu-item.here > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-primary .menu-item .menu-link.active { + transition: color 0.2s ease; + color: var(--bs-primary); +} +.menu-state-primary .menu-item .menu-link.active .menu-title { + color: var(--bs-primary); +} +.menu-state-primary .menu-item .menu-link.active .menu-icon, +.menu-state-primary .menu-item .menu-link.active .menu-icon .svg-icon, +.menu-state-primary .menu-item .menu-link.active .menu-icon i { + color: var(--bs-primary); +} +.menu-state-primary .menu-item .menu-link.active .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.menu-state-primary .menu-item .menu-link.active .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-state-dark .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), .menu-state-dark .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; + color: var(--bs-dark); +} +.menu-state-dark .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-title, .menu-state-dark .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-title { + color: var(--bs-dark); +} +.menu-state-dark .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-state-dark .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-state-dark .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon i, .menu-state-dark .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-state-dark .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-state-dark .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon i { + color: var(--bs-dark); +} +.menu-state-dark .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-bullet .bullet, .menu-state-dark .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-bullet .bullet { + background-color: var(--bs-dark); +} +.menu-state-dark .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-arrow:after, .menu-state-dark .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-dark); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-dark%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-dark%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-dark); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-dark%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-dark%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-dark .menu-item.show > .menu-link { + transition: color 0.2s ease; + color: var(--bs-dark); +} +.menu-state-dark .menu-item.show > .menu-link .menu-title { + color: var(--bs-dark); +} +.menu-state-dark .menu-item.show > .menu-link .menu-icon, +.menu-state-dark .menu-item.show > .menu-link .menu-icon .svg-icon, +.menu-state-dark .menu-item.show > .menu-link .menu-icon i { + color: var(--bs-dark); +} +.menu-state-dark .menu-item.show > .menu-link .menu-bullet .bullet { + background-color: var(--bs-dark); +} +.menu-state-dark .menu-item.show > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-dark); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-dark%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-dark%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-dark); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-dark%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-dark%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-dark .menu-item.here > .menu-link { + transition: color 0.2s ease; + color: var(--bs-dark); +} +.menu-state-dark .menu-item.here > .menu-link .menu-title { + color: var(--bs-dark); +} +.menu-state-dark .menu-item.here > .menu-link .menu-icon, +.menu-state-dark .menu-item.here > .menu-link .menu-icon .svg-icon, +.menu-state-dark .menu-item.here > .menu-link .menu-icon i { + color: var(--bs-dark); +} +.menu-state-dark .menu-item.here > .menu-link .menu-bullet .bullet { + background-color: var(--bs-dark); +} +.menu-state-dark .menu-item.here > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-dark); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-dark%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-dark%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-dark); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-dark%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-dark%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-dark .menu-item .menu-link.active { + transition: color 0.2s ease; + color: var(--bs-dark); +} +.menu-state-dark .menu-item .menu-link.active .menu-title { + color: var(--bs-dark); +} +.menu-state-dark .menu-item .menu-link.active .menu-icon, +.menu-state-dark .menu-item .menu-link.active .menu-icon .svg-icon, +.menu-state-dark .menu-item .menu-link.active .menu-icon i { + color: var(--bs-dark); +} +.menu-state-dark .menu-item .menu-link.active .menu-bullet .bullet { + background-color: var(--bs-dark); +} +.menu-state-dark .menu-item .menu-link.active .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-dark); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-dark%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-dark%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-dark); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-dark%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-dark%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-hover-title-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), .menu-hover-title-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; + color: var(--bs-primary); +} +.menu-hover-title-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-title, .menu-hover-title-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-title { + color: var(--bs-primary); +} + +.menu-here-title-primary .menu-item.here > .menu-link { + transition: color 0.2s ease; + color: var(--bs-primary); +} +.menu-here-title-primary .menu-item.here > .menu-link .menu-title { + color: var(--bs-primary); +} + +.menu-show-title-primary .menu-item.show > .menu-link { + transition: color 0.2s ease; + color: var(--bs-primary); +} +.menu-show-title-primary .menu-item.show > .menu-link .menu-title { + color: var(--bs-primary); +} + +.menu-active-title-primary .menu-item .menu-link.active { + transition: color 0.2s ease; + color: var(--bs-primary); +} +.menu-active-title-primary .menu-item .menu-link.active .menu-title { + color: var(--bs-primary); +} + +.menu-state-title-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), .menu-state-title-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; + color: var(--bs-primary); +} +.menu-state-title-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-title, .menu-state-title-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-title { + color: var(--bs-primary); +} +.menu-state-title-primary .menu-item.here > .menu-link { + transition: color 0.2s ease; + color: var(--bs-primary); +} +.menu-state-title-primary .menu-item.here > .menu-link .menu-title { + color: var(--bs-primary); +} +.menu-state-title-primary .menu-item.show > .menu-link { + transition: color 0.2s ease; + color: var(--bs-primary); +} +.menu-state-title-primary .menu-item.show > .menu-link .menu-title { + color: var(--bs-primary); +} +.menu-state-title-primary .menu-item .menu-link.active { + transition: color 0.2s ease; + color: var(--bs-primary); +} +.menu-state-title-primary .menu-item .menu-link.active .menu-title { + color: var(--bs-primary); +} + +.menu-hover-icon-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), .menu-hover-icon-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; +} +.menu-hover-icon-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-hover-icon-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-hover-icon-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon i, .menu-hover-icon-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-hover-icon-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-hover-icon-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon i { + color: var(--bs-primary); +} + +.menu-here-icon-primary .menu-item.here > .menu-link { + transition: color 0.2s ease; +} +.menu-here-icon-primary .menu-item.here > .menu-link .menu-icon, +.menu-here-icon-primary .menu-item.here > .menu-link .menu-icon .svg-icon, +.menu-here-icon-primary .menu-item.here > .menu-link .menu-icon i { + color: var(--bs-primary); +} + +.menu-show-icon-primary .menu-item.show > .menu-link { + transition: color 0.2s ease; +} +.menu-show-icon-primary .menu-item.show > .menu-link .menu-icon, +.menu-show-icon-primary .menu-item.show > .menu-link .menu-icon .svg-icon, +.menu-show-icon-primary .menu-item.show > .menu-link .menu-icon i { + color: var(--bs-primary); +} + +.menu-active-icon-primary .menu-item .menu-link.active { + transition: color 0.2s ease; +} +.menu-active-icon-primary .menu-item .menu-link.active .menu-icon, +.menu-active-icon-primary .menu-item .menu-link.active .menu-icon .svg-icon, +.menu-active-icon-primary .menu-item .menu-link.active .menu-icon i { + color: var(--bs-primary); +} + +.menu-state-icon-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), .menu-state-icon-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; +} +.menu-state-icon-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-state-icon-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-state-icon-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon i, .menu-state-icon-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon, +.menu-state-icon-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.menu-state-icon-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon i { + color: var(--bs-primary); +} +.menu-state-icon-primary .menu-item.here > .menu-link { + transition: color 0.2s ease; +} +.menu-state-icon-primary .menu-item.here > .menu-link .menu-icon, +.menu-state-icon-primary .menu-item.here > .menu-link .menu-icon .svg-icon, +.menu-state-icon-primary .menu-item.here > .menu-link .menu-icon i { + color: var(--bs-primary); +} +.menu-state-icon-primary .menu-item.show > .menu-link { + transition: color 0.2s ease; +} +.menu-state-icon-primary .menu-item.show > .menu-link .menu-icon, +.menu-state-icon-primary .menu-item.show > .menu-link .menu-icon .svg-icon, +.menu-state-icon-primary .menu-item.show > .menu-link .menu-icon i { + color: var(--bs-primary); +} +.menu-state-icon-primary .menu-item .menu-link.active { + transition: color 0.2s ease; +} +.menu-state-icon-primary .menu-item .menu-link.active .menu-icon, +.menu-state-icon-primary .menu-item .menu-link.active .menu-icon .svg-icon, +.menu-state-icon-primary .menu-item .menu-link.active .menu-icon i { + color: var(--bs-primary); +} + +.menu-hover-bullet-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), .menu-hover-bullet-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; +} +.menu-hover-bullet-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-bullet .bullet, .menu-hover-bullet-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-bullet .bullet { + background-color: var(--bs-primary); +} + +.menu-show-bullet-primary .menu-item.show > .menu-link { + transition: color 0.2s ease; +} +.menu-show-bullet-primary .menu-item.show > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary); +} + +.menu-here-bullet-primary .menu-item.here > .menu-link { + transition: color 0.2s ease; +} +.menu-here-bullet-primary .menu-item.here > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary); +} + +.menu-active-bullet-primary .menu-item .menu-link.active { + transition: color 0.2s ease; +} +.menu-active-bullet-primary .menu-item .menu-link.active .menu-bullet .bullet { + background-color: var(--bs-primary); +} + +.menu-state-bullet-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), .menu-state-bullet-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; +} +.menu-state-bullet-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-bullet .bullet, .menu-state-bullet-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.menu-state-bullet-primary .menu-item.here > .menu-link { + transition: color 0.2s ease; +} +.menu-state-bullet-primary .menu-item.here > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.menu-state-bullet-primary .menu-item.show > .menu-link { + transition: color 0.2s ease; +} +.menu-state-bullet-primary .menu-item.show > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.menu-state-bullet-primary .menu-item .menu-link.active { + transition: color 0.2s ease; +} +.menu-state-bullet-primary .menu-item .menu-link.active .menu-bullet .bullet { + background-color: var(--bs-primary); +} + +.menu-hover-arrow-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), .menu-hover-arrow-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; +} +.menu-hover-arrow-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-arrow:after, .menu-hover-arrow-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-here-arrow-primary .menu-item.here > .menu-link { + transition: color 0.2s ease; +} +.menu-here-arrow-primary .menu-item.here > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-show-arrow-primary .menu-item.show > .menu-link { + transition: color 0.2s ease; +} +.menu-show-arrow-primary .menu-item.show > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-active-arrow-primary .menu-item .menu-link.active { + transition: color 0.2s ease; +} +.menu-active-arrow-primary .menu-item .menu-link.active .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.menu-state-arrow-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), .menu-state-arrow-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; +} +.menu-state-arrow-primary .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-arrow:after, .menu-state-arrow-primary .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-arrow-primary .menu-item.here > .menu-link { + transition: color 0.2s ease; +} +.menu-state-arrow-primary .menu-item.here > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-arrow-primary .menu-item.show > .menu-link { + transition: color 0.2s ease; +} +.menu-state-arrow-primary .menu-item.show > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.menu-state-arrow-primary .menu-item .menu-link.active { + transition: color 0.2s ease; +} +.menu-state-arrow-primary .menu-item .menu-link.active .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +.anchor { + display: flex; + align-items: center; +} +.anchor a { + position: relative; + display: none; + align-items: center; + justify-content: flex-start; + height: 1em; + width: 1.25em; + margin-left: -1.25em; + font-weight: 500; + font-size: 0.8em; + color: var(--bs-text-muted); + transition: all 0.2s ease-in-out; +} +.anchor a:before { + content: "#"; +} +.anchor:hover a { + display: flex; +} +.anchor:hover a:hover { + color: var(--bs-primary); + transition: all 0.2s ease-in-out; +} + +.card { + border: 0; +} +.card .card-header { + display: flex; + justify-content: space-between; + align-items: stretch; + flex-wrap: wrap; + min-height: 70px; + padding: 0 2.25rem; + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-bottom: var(--bs-border-width) solid var(--bs-card-border-color); +} +.card .card-header .card-title { + display: flex; + align-items: center; + margin: 0.5rem; + margin-left: 0; +} +.card .card-header .card-title.flex-column { + align-items: flex-start; + justify-content: center; +} +.card .card-header .card-title .card-icon { + margin-right: 0.75rem; + line-height: 0; +} +.card .card-header .card-title .card-icon i { + font-size: 1.25rem; + color: var(--bs-gray-600); + line-height: 0; +} +.card .card-header .card-title .card-icon i:after, .card .card-header .card-title .card-icon i:before { + line-height: 0; +} +.card .card-header .card-title .card-icon .svg-icon { + color: var(--bs-gray-600); +} +.card .card-header .card-title .card-icon .svg-icon svg { + height: 24px; + width: 24px; +} +.card .card-header .card-title, +.card .card-header .card-title .card-label { + font-weight: 500; + font-size: 1.275rem; + color: var(--bs-text-dark); +} +.card .card-header .card-title .card-label { + margin: 0 0.75rem 0 0; + flex-wrap: wrap; +} +.card .card-header .card-title small, .card .card-header .card-title .small { + color: var(--bs-text-muted); + font-size: 1rem; +} +.card .card-header .card-title h1, .card .card-header .card-title .h1, .card .card-header .card-title h2, .card .card-header .card-title .h2, .card .card-header .card-title h3, .card .card-header .card-title .h3, .card .card-header .card-title h4, .card .card-header .card-title .h4, .card .card-header .card-title h5, .card .card-header .card-title .h5, .card .card-header .card-title h6, .card .card-header .card-title .h6 { + margin-bottom: 0; +} +.card .card-header .card-toolbar { + display: flex; + align-items: center; + margin: 0.5rem 0; + flex-wrap: wrap; +} +.card .card-body { + padding: 2rem 2.25rem; + color: var(--bs-card-color); +} +.card .card-footer { + padding: 2rem 2.25rem; + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-top: var(--bs-border-width) solid var(--bs-card-border-color); +} +.card .card-scroll { + position: relative; + overflow: auto; +} +.card.card-px-0 .card-header, +.card.card-px-0 .card-body, +.card.card-px-0 .card-footer { + padding-left: 0; + padding-right: 0; +} +.card.card-py-0 .card-header, +.card.card-py-0 .card-body, +.card.card-py-0 .card-footer { + padding-top: 0; + padding-bottom: 0; +} +.card.card-p-0 .card-header, +.card.card-p-0 .card-body, +.card.card-p-0 .card-footer { + padding: 0; +} +.card.card-dashed { + box-shadow: none; + border: var(--bs-border-width) dashed var(--bs-card-border-dashed-color); +} +.card.card-dashed > .card-header { + border-bottom: 1px dashed var(--bs-card-border-dashed-color); +} +.card.card-dashed > .card-footer { + border-top: 1px dashed var(--bs-card-border-dashed-color); +} +.card.card-bordered { + box-shadow: none; + border: var(--bs-border-width) solid var(--bs-card-border-color); +} +.card.card-flush > .card-header { + border-bottom: 0 !important; +} +.card.card-flush > .card-footer { + border-top: 0 !important; +} +.card.card-shadow { + box-shadow: var(--bs-card-box-shadow); + border: 0; +} +.card.card-reset { + border: 0 !important; + box-shadow: none !important; + background-color: transparent !important; +} +.card.card-reset > .card-header { + border-bottom: 0 !important; +} +.card.card-reset > .card-footer { + border-top: 0 !important; +} + +.card.card-stretch { + height: calc(100% - var(--bs-gutter-y)); +} +.card.card-stretch-75 { + height: calc(75% - var(--bs-gutter-y)); +} +.card.card-stretch-50 { + height: calc(50% - var(--bs-gutter-y)); +} +.card.card-stretch-33 { + height: calc(33.333% - var(--bs-gutter-y)); +} +.card.card-stretch-25 { + height: calc(25% - var(--bs-gutter-y)); +} +.card .card-header-stretch { + padding-top: 0 !important; + padding-bottom: 0 !important; + align-items: stretch; +} +.card .card-header-stretch .card-toolbar { + margin: 0; + align-items: stretch; +} +@media (min-width: 576px) { + .card.card-sm-stretch { + height: calc(100% - var(--bs-gutter-y)); + } + .card.card-sm-stretch-75 { + height: calc(75% - var(--bs-gutter-y)); + } + .card.card-sm-stretch-50 { + height: calc(50% - var(--bs-gutter-y)); + } + .card.card-sm-stretch-33 { + height: calc(33.333% - var(--bs-gutter-y)); + } + .card.card-sm-stretch-25 { + height: calc(25% - var(--bs-gutter-y)); + } + .card .card-header-sm-stretch { + padding-top: 0 !important; + padding-bottom: 0 !important; + align-items: stretch; + } + .card .card-header-sm-stretch .card-toolbar { + margin: 0; + align-items: stretch; + } +} +@media (min-width: 768px) { + .card.card-md-stretch { + height: calc(100% - var(--bs-gutter-y)); + } + .card.card-md-stretch-75 { + height: calc(75% - var(--bs-gutter-y)); + } + .card.card-md-stretch-50 { + height: calc(50% - var(--bs-gutter-y)); + } + .card.card-md-stretch-33 { + height: calc(33.333% - var(--bs-gutter-y)); + } + .card.card-md-stretch-25 { + height: calc(25% - var(--bs-gutter-y)); + } + .card .card-header-md-stretch { + padding-top: 0 !important; + padding-bottom: 0 !important; + align-items: stretch; + } + .card .card-header-md-stretch .card-toolbar { + margin: 0; + align-items: stretch; + } +} +@media (min-width: 992px) { + .card.card-lg-stretch { + height: calc(100% - var(--bs-gutter-y)); + } + .card.card-lg-stretch-75 { + height: calc(75% - var(--bs-gutter-y)); + } + .card.card-lg-stretch-50 { + height: calc(50% - var(--bs-gutter-y)); + } + .card.card-lg-stretch-33 { + height: calc(33.333% - var(--bs-gutter-y)); + } + .card.card-lg-stretch-25 { + height: calc(25% - var(--bs-gutter-y)); + } + .card .card-header-lg-stretch { + padding-top: 0 !important; + padding-bottom: 0 !important; + align-items: stretch; + } + .card .card-header-lg-stretch .card-toolbar { + margin: 0; + align-items: stretch; + } +} +@media (min-width: 1200px) { + .card.card-xl-stretch { + height: calc(100% - var(--bs-gutter-y)); + } + .card.card-xl-stretch-75 { + height: calc(75% - var(--bs-gutter-y)); + } + .card.card-xl-stretch-50 { + height: calc(50% - var(--bs-gutter-y)); + } + .card.card-xl-stretch-33 { + height: calc(33.333% - var(--bs-gutter-y)); + } + .card.card-xl-stretch-25 { + height: calc(25% - var(--bs-gutter-y)); + } + .card .card-header-xl-stretch { + padding-top: 0 !important; + padding-bottom: 0 !important; + align-items: stretch; + } + .card .card-header-xl-stretch .card-toolbar { + margin: 0; + align-items: stretch; + } +} +@media (min-width: 1400px) { + .card.card-xxl-stretch { + height: calc(100% - var(--bs-gutter-y)); + } + .card.card-xxl-stretch-75 { + height: calc(75% - var(--bs-gutter-y)); + } + .card.card-xxl-stretch-50 { + height: calc(50% - var(--bs-gutter-y)); + } + .card.card-xxl-stretch-33 { + height: calc(33.333% - var(--bs-gutter-y)); + } + .card.card-xxl-stretch-25 { + height: calc(25% - var(--bs-gutter-y)); + } + .card .card-header-xxl-stretch { + padding-top: 0 !important; + padding-bottom: 0 !important; + align-items: stretch; + } + .card .card-header-xxl-stretch .card-toolbar { + margin: 0; + align-items: stretch; + } +} + +.card-p { + padding: 2rem 2.25rem !important; +} + +.card-px { + padding-left: 2.25rem !important; + padding-right: 2.25rem !important; +} + +.card-shadow { + box-shadow: var(--bs-card-box-shadow); +} + +.card-py { + padding-top: 2rem !important; + padding-bottom: 2rem !important; +} + +.card-rounded { + border-radius: 0.625rem; +} + +.card-rounded-start { + border-top-left-radius: 0.625rem; + border-bottom-left-radius: 0.625rem; +} + +.card-rounded-end { + border-top-right-radius: 0.625rem; + border-bottom-right-radius: 0.625rem; +} + +.card-rounded-top { + border-top-left-radius: 0.625rem; + border-top-right-radius: 0.625rem; +} + +.card-rounded-bottom { + border-bottom-left-radius: 0.625rem; + border-bottom-right-radius: 0.625rem; +} + +@media (max-width: 767.98px) { + .card > .card-header:not(.flex-nowrap) { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } +} +[data-bs-theme=dark] .card { + --bs-card-box-shadow: ; +} + +.breadcrumb { + display: flex; + align-items: center; + background-color: transparent; + padding: 0; + margin: 0; +} +.breadcrumb .breadcrumb-item { + display: flex; + align-items: center; + padding-left: 0.5rem; +} +.breadcrumb .breadcrumb-item:last-child { + padding-right: 0; +} +.breadcrumb .breadcrumb-item:after { + padding-left: 0.5rem; + content: "/"; +} +.breadcrumb .breadcrumb-item:before { + display: none; +} +.breadcrumb .breadcrumb-item:first-child { + padding-left: 0; +} +.breadcrumb .breadcrumb-item:last-child:after { + display: none; +} + +.breadcrumb-line .breadcrumb-item:after { + content: "-"; +} + +.breadcrumb-dot .breadcrumb-item:after { + content: "•"; +} + +.breadcrumb-separatorless .breadcrumb-item:after { + display: none; +} + +.btn { + --bs-btn-color: var(--bs-body-color); + outline: none !important; +} +.btn:not(.btn-shadow):not(.shadow):not(.shadow-sm):not(.shadow-lg):not(.shadow-xs) { + box-shadow: none; +} +.btn:not(.btn-outline):not(.btn-dashed):not(.border-hover):not(.border-active):not(.btn-flush):not(.btn-icon) { + border: 0; + padding: calc(0.775rem + 1px) calc(1.5rem + 1px); +} +.btn:not(.btn-outline):not(.btn-dashed):not(.border-hover):not(.border-active):not(.btn-flush):not(.btn-icon).btn-lg, .btn-group-lg > .btn:not(.btn-outline):not(.btn-dashed):not(.border-hover):not(.border-active):not(.btn-flush):not(.btn-icon) { + padding: calc(0.825rem + 1px) calc(1.75rem + 1px); +} +.btn:not(.btn-outline):not(.btn-dashed):not(.border-hover):not(.border-active):not(.btn-flush):not(.btn-icon).btn-sm, .btn-group-sm > .btn:not(.btn-outline):not(.btn-dashed):not(.border-hover):not(.border-active):not(.btn-flush):not(.btn-icon) { + padding: calc(0.55rem + 1px) calc(1.25rem + 1px); +} +.btn.btn-link { + border: 0; + border-radius: 0; + padding-left: 0 !important; + padding-right: 0 !important; + text-decoration: none; + font-weight: 500; +} +.btn.btn-outline:not(.btn-outline-dashed) { + border: 1px solid var(--bs-gray-300); +} +.btn.btn-outline-dashed { + border: 1px dashed var(--bs-gray-300); +} +.btn.btn-flush { + appearance: none; + box-shadow: none; + border-radius: 0; + border: none; + cursor: pointer; + background-color: transparent; + outline: none !important; + margin: 0; + padding: 0; +} +.btn.btn-flex { + display: inline-flex; + align-items: center; +} +.btn.btn-trim-start { + justify-content: flex-start !important; + padding-left: 0 !important; +} +.btn.btn-trim-end { + justify-content: flex-end !important; + padding-right: 0 !important; +} + +.btn-reset { + background-color: transparent; + border: 0; + box-shadow: none; + user-select: none; + outline: none; +} + +.btn i { + display: inline-flex; + font-size: 1rem; + padding-right: 0.35rem; + vertical-align: middle; + line-height: 0; +} +.btn .svg-icon { + flex-shrink: 0; + line-height: 0; + margin-right: 0.5rem; +} +.btn.btn-icon { + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0; + height: calc(1.5em + 1.55rem + 2px); + width: calc(1.5em + 1.55rem + 2px); +} +.btn.btn-icon:not(.btn-outline):not(.btn-dashed):not(.border-hover):not(.border-active):not(.btn-flush) { + border: 0; +} +.btn.btn-icon.btn-sm, .btn-group-sm > .btn.btn-icon { + height: calc(1.5em + 1.1rem + 2px); + width: calc(1.5em + 1.1rem + 2px); +} +.btn.btn-icon.btn-lg, .btn-group-lg > .btn.btn-icon { + height: calc(1.5em + 1.65rem + 2px); + width: calc(1.5em + 1.65rem + 2px); +} +.btn.btn-icon.btn-circle { + border-radius: 50%; +} +.btn.btn-icon i, +.btn.btn-icon .svg-icon { + padding: 0; + margin: 0; + line-height: 1; +} + +.btn.btn-outline.btn-outline-dashed { + border-width: 1px; + border-style: dashed; +} +.btn-check:checked + .btn.btn-outline.btn-outline-dashed, .btn-check:active + .btn.btn-outline.btn-outline-dashed, .btn.btn-outline.btn-outline-dashed:focus:not(.btn-active), .btn.btn-outline.btn-outline-dashed:hover:not(.btn-active), .btn.btn-outline.btn-outline-dashed:active:not(.btn-active), .btn.btn-outline.btn-outline-dashed.active, .btn.btn-outline.btn-outline-dashed.show, .show > .btn.btn-outline.btn-outline-dashed { + border-color: var(--bs-primary); +} + +.btn.btn-white { + color: var(--bs-white-inverse); + border-color: var(--bs-white); + background-color: var(--bs-white); +} +.btn.btn-white i, +.btn.btn-white .svg-icon { + color: var(--bs-white-inverse); +} +.btn.btn-white.dropdown-toggle:after { + color: var(--bs-white-inverse); +} +.btn-check:checked + .btn.btn-white, .btn-check:active + .btn.btn-white, .btn.btn-white:focus:not(.btn-active), .btn.btn-white:hover:not(.btn-active), .btn.btn-white:active:not(.btn-active), .btn.btn-white.active, .btn.btn-white.show, .show > .btn.btn-white { + color: var(--bs-white-inverse); + border-color: var(--bs-white-active); + background-color: var(--bs-white-active) !important; +} +.btn-check:checked + .btn.btn-white i, +.btn-check:checked + .btn.btn-white .svg-icon, .btn-check:active + .btn.btn-white i, +.btn-check:active + .btn.btn-white .svg-icon, .btn.btn-white:focus:not(.btn-active) i, +.btn.btn-white:focus:not(.btn-active) .svg-icon, .btn.btn-white:hover:not(.btn-active) i, +.btn.btn-white:hover:not(.btn-active) .svg-icon, .btn.btn-white:active:not(.btn-active) i, +.btn.btn-white:active:not(.btn-active) .svg-icon, .btn.btn-white.active i, +.btn.btn-white.active .svg-icon, .btn.btn-white.show i, +.btn.btn-white.show .svg-icon, .show > .btn.btn-white i, +.show > .btn.btn-white .svg-icon { + color: var(--bs-white-inverse); +} +.btn-check:checked + .btn.btn-white.dropdown-toggle:after, .btn-check:active + .btn.btn-white.dropdown-toggle:after, .btn.btn-white:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-white:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-white:active:not(.btn-active).dropdown-toggle:after, .btn.btn-white.active.dropdown-toggle:after, .btn.btn-white.show.dropdown-toggle:after, .show > .btn.btn-white.dropdown-toggle:after { + color: var(--bs-white-inverse); +} + +.btn.btn-bg-white { + border-color: var(--bs-white); + background-color: var(--bs-white); +} +.btn-check:checked + .btn.btn-active-white, .btn-check:active + .btn.btn-active-white, .btn.btn-active-white:focus:not(.btn-active), .btn.btn-active-white:hover:not(.btn-active), .btn.btn-active-white:active:not(.btn-active), .btn.btn-active-white.active, .btn.btn-active-white.show, .show > .btn.btn-active-white { + color: var(--bs-white-inverse); + border-color: var(--bs-white); + background-color: var(--bs-white) !important; +} +.btn-check:checked + .btn.btn-active-white i, +.btn-check:checked + .btn.btn-active-white .svg-icon, .btn-check:active + .btn.btn-active-white i, +.btn-check:active + .btn.btn-active-white .svg-icon, .btn.btn-active-white:focus:not(.btn-active) i, +.btn.btn-active-white:focus:not(.btn-active) .svg-icon, .btn.btn-active-white:hover:not(.btn-active) i, +.btn.btn-active-white:hover:not(.btn-active) .svg-icon, .btn.btn-active-white:active:not(.btn-active) i, +.btn.btn-active-white:active:not(.btn-active) .svg-icon, .btn.btn-active-white.active i, +.btn.btn-active-white.active .svg-icon, .btn.btn-active-white.show i, +.btn.btn-active-white.show .svg-icon, .show > .btn.btn-active-white i, +.show > .btn.btn-active-white .svg-icon { + color: var(--bs-white-inverse); +} +.btn-check:checked + .btn.btn-active-white.dropdown-toggle:after, .btn-check:active + .btn.btn-active-white.dropdown-toggle:after, .btn.btn-active-white:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-white:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-white:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-white.active.dropdown-toggle:after, .btn.btn-active-white.show.dropdown-toggle:after, .show > .btn.btn-active-white.dropdown-toggle:after { + color: var(--bs-white-inverse); +} + +.btn.btn-outline.btn-outline-white { + color: var(--bs-white); + border-color: var(--bs-white); + background-color: transparent; +} +.btn.btn-outline.btn-outline-white i, +.btn.btn-outline.btn-outline-white .svg-icon { + color: var(--bs-white); +} +.btn.btn-outline.btn-outline-white.dropdown-toggle:after { + color: var(--bs-white); +} +.btn-check:checked + .btn.btn-outline.btn-outline-white, .btn-check:active + .btn.btn-outline.btn-outline-white, .btn.btn-outline.btn-outline-white:focus:not(.btn-active), .btn.btn-outline.btn-outline-white:hover:not(.btn-active), .btn.btn-outline.btn-outline-white:active:not(.btn-active), .btn.btn-outline.btn-outline-white.active, .btn.btn-outline.btn-outline-white.show, .show > .btn.btn-outline.btn-outline-white { + color: var(--bs-white-active); + border-color: var(--bs-white); + background-color: var(--bs-white-light) !important; +} +.btn-check:checked + .btn.btn-outline.btn-outline-white i, +.btn-check:checked + .btn.btn-outline.btn-outline-white .svg-icon, .btn-check:active + .btn.btn-outline.btn-outline-white i, +.btn-check:active + .btn.btn-outline.btn-outline-white .svg-icon, .btn.btn-outline.btn-outline-white:focus:not(.btn-active) i, +.btn.btn-outline.btn-outline-white:focus:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-white:hover:not(.btn-active) i, +.btn.btn-outline.btn-outline-white:hover:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-white:active:not(.btn-active) i, +.btn.btn-outline.btn-outline-white:active:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-white.active i, +.btn.btn-outline.btn-outline-white.active .svg-icon, .btn.btn-outline.btn-outline-white.show i, +.btn.btn-outline.btn-outline-white.show .svg-icon, .show > .btn.btn-outline.btn-outline-white i, +.show > .btn.btn-outline.btn-outline-white .svg-icon { + color: var(--bs-white-active); +} +.btn-check:checked + .btn.btn-outline.btn-outline-white.dropdown-toggle:after, .btn-check:active + .btn.btn-outline.btn-outline-white.dropdown-toggle:after, .btn.btn-outline.btn-outline-white:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-white:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-white:active:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-white.active.dropdown-toggle:after, .btn.btn-outline.btn-outline-white.show.dropdown-toggle:after, .show > .btn.btn-outline.btn-outline-white.dropdown-toggle:after { + color: var(--bs-white-active); +} + +.btn.btn-light { + color: var(--bs-light-inverse); + border-color: var(--bs-light); + background-color: var(--bs-light); +} +.btn.btn-light i, +.btn.btn-light .svg-icon { + color: var(--bs-light-inverse); +} +.btn.btn-light.dropdown-toggle:after { + color: var(--bs-light-inverse); +} +.btn-check:checked + .btn.btn-light, .btn-check:active + .btn.btn-light, .btn.btn-light:focus:not(.btn-active), .btn.btn-light:hover:not(.btn-active), .btn.btn-light:active:not(.btn-active), .btn.btn-light.active, .btn.btn-light.show, .show > .btn.btn-light { + color: var(--bs-light-inverse); + border-color: var(--bs-light-active); + background-color: var(--bs-light-active) !important; +} +.btn-check:checked + .btn.btn-light i, +.btn-check:checked + .btn.btn-light .svg-icon, .btn-check:active + .btn.btn-light i, +.btn-check:active + .btn.btn-light .svg-icon, .btn.btn-light:focus:not(.btn-active) i, +.btn.btn-light:focus:not(.btn-active) .svg-icon, .btn.btn-light:hover:not(.btn-active) i, +.btn.btn-light:hover:not(.btn-active) .svg-icon, .btn.btn-light:active:not(.btn-active) i, +.btn.btn-light:active:not(.btn-active) .svg-icon, .btn.btn-light.active i, +.btn.btn-light.active .svg-icon, .btn.btn-light.show i, +.btn.btn-light.show .svg-icon, .show > .btn.btn-light i, +.show > .btn.btn-light .svg-icon { + color: var(--bs-light-inverse); +} +.btn-check:checked + .btn.btn-light.dropdown-toggle:after, .btn-check:active + .btn.btn-light.dropdown-toggle:after, .btn.btn-light:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-light:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-light:active:not(.btn-active).dropdown-toggle:after, .btn.btn-light.active.dropdown-toggle:after, .btn.btn-light.show.dropdown-toggle:after, .show > .btn.btn-light.dropdown-toggle:after { + color: var(--bs-light-inverse); +} + +.btn.btn-bg-light { + border-color: var(--bs-light); + background-color: var(--bs-light); +} +.btn-check:checked + .btn.btn-active-light, .btn-check:active + .btn.btn-active-light, .btn.btn-active-light:focus:not(.btn-active), .btn.btn-active-light:hover:not(.btn-active), .btn.btn-active-light:active:not(.btn-active), .btn.btn-active-light.active, .btn.btn-active-light.show, .show > .btn.btn-active-light { + color: var(--bs-light-inverse); + border-color: var(--bs-light); + background-color: var(--bs-light) !important; +} +.btn-check:checked + .btn.btn-active-light i, +.btn-check:checked + .btn.btn-active-light .svg-icon, .btn-check:active + .btn.btn-active-light i, +.btn-check:active + .btn.btn-active-light .svg-icon, .btn.btn-active-light:focus:not(.btn-active) i, +.btn.btn-active-light:focus:not(.btn-active) .svg-icon, .btn.btn-active-light:hover:not(.btn-active) i, +.btn.btn-active-light:hover:not(.btn-active) .svg-icon, .btn.btn-active-light:active:not(.btn-active) i, +.btn.btn-active-light:active:not(.btn-active) .svg-icon, .btn.btn-active-light.active i, +.btn.btn-active-light.active .svg-icon, .btn.btn-active-light.show i, +.btn.btn-active-light.show .svg-icon, .show > .btn.btn-active-light i, +.show > .btn.btn-active-light .svg-icon { + color: var(--bs-light-inverse); +} +.btn-check:checked + .btn.btn-active-light.dropdown-toggle:after, .btn-check:active + .btn.btn-active-light.dropdown-toggle:after, .btn.btn-active-light:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light.active.dropdown-toggle:after, .btn.btn-active-light.show.dropdown-toggle:after, .show > .btn.btn-active-light.dropdown-toggle:after { + color: var(--bs-light-inverse); +} + +.btn.btn-outline.btn-outline-light { + color: var(--bs-light); + border-color: var(--bs-light); + background-color: transparent; +} +.btn.btn-outline.btn-outline-light i, +.btn.btn-outline.btn-outline-light .svg-icon { + color: var(--bs-light); +} +.btn.btn-outline.btn-outline-light.dropdown-toggle:after { + color: var(--bs-light); +} +.btn-check:checked + .btn.btn-outline.btn-outline-light, .btn-check:active + .btn.btn-outline.btn-outline-light, .btn.btn-outline.btn-outline-light:focus:not(.btn-active), .btn.btn-outline.btn-outline-light:hover:not(.btn-active), .btn.btn-outline.btn-outline-light:active:not(.btn-active), .btn.btn-outline.btn-outline-light.active, .btn.btn-outline.btn-outline-light.show, .show > .btn.btn-outline.btn-outline-light { + color: var(--bs-light-active); + border-color: var(--bs-light); + background-color: var(--bs-light-light) !important; +} +.btn-check:checked + .btn.btn-outline.btn-outline-light i, +.btn-check:checked + .btn.btn-outline.btn-outline-light .svg-icon, .btn-check:active + .btn.btn-outline.btn-outline-light i, +.btn-check:active + .btn.btn-outline.btn-outline-light .svg-icon, .btn.btn-outline.btn-outline-light:focus:not(.btn-active) i, +.btn.btn-outline.btn-outline-light:focus:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-light:hover:not(.btn-active) i, +.btn.btn-outline.btn-outline-light:hover:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-light:active:not(.btn-active) i, +.btn.btn-outline.btn-outline-light:active:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-light.active i, +.btn.btn-outline.btn-outline-light.active .svg-icon, .btn.btn-outline.btn-outline-light.show i, +.btn.btn-outline.btn-outline-light.show .svg-icon, .show > .btn.btn-outline.btn-outline-light i, +.show > .btn.btn-outline.btn-outline-light .svg-icon { + color: var(--bs-light-active); +} +.btn-check:checked + .btn.btn-outline.btn-outline-light.dropdown-toggle:after, .btn-check:active + .btn.btn-outline.btn-outline-light.dropdown-toggle:after, .btn.btn-outline.btn-outline-light:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-light:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-light:active:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-light.active.dropdown-toggle:after, .btn.btn-outline.btn-outline-light.show.dropdown-toggle:after, .show > .btn.btn-outline.btn-outline-light.dropdown-toggle:after { + color: var(--bs-light-active); +} + +.btn.btn-primary { + color: var(--bs-primary-inverse); + border-color: var(--bs-primary); + background-color: var(--bs-primary); +} +.btn.btn-primary i, +.btn.btn-primary .svg-icon { + color: var(--bs-primary-inverse); +} +.btn.btn-primary.dropdown-toggle:after { + color: var(--bs-primary-inverse); +} +.btn-check:checked + .btn.btn-primary, .btn-check:active + .btn.btn-primary, .btn.btn-primary:focus:not(.btn-active), .btn.btn-primary:hover:not(.btn-active), .btn.btn-primary:active:not(.btn-active), .btn.btn-primary.active, .btn.btn-primary.show, .show > .btn.btn-primary { + color: var(--bs-primary-inverse); + border-color: var(--bs-primary-active); + background-color: var(--bs-primary-active) !important; +} +.btn-check:checked + .btn.btn-primary i, +.btn-check:checked + .btn.btn-primary .svg-icon, .btn-check:active + .btn.btn-primary i, +.btn-check:active + .btn.btn-primary .svg-icon, .btn.btn-primary:focus:not(.btn-active) i, +.btn.btn-primary:focus:not(.btn-active) .svg-icon, .btn.btn-primary:hover:not(.btn-active) i, +.btn.btn-primary:hover:not(.btn-active) .svg-icon, .btn.btn-primary:active:not(.btn-active) i, +.btn.btn-primary:active:not(.btn-active) .svg-icon, .btn.btn-primary.active i, +.btn.btn-primary.active .svg-icon, .btn.btn-primary.show i, +.btn.btn-primary.show .svg-icon, .show > .btn.btn-primary i, +.show > .btn.btn-primary .svg-icon { + color: var(--bs-primary-inverse); +} +.btn-check:checked + .btn.btn-primary.dropdown-toggle:after, .btn-check:active + .btn.btn-primary.dropdown-toggle:after, .btn.btn-primary:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-primary:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-primary:active:not(.btn-active).dropdown-toggle:after, .btn.btn-primary.active.dropdown-toggle:after, .btn.btn-primary.show.dropdown-toggle:after, .show > .btn.btn-primary.dropdown-toggle:after { + color: var(--bs-primary-inverse); +} + +.btn.btn-light-primary { + color: var(--bs-primary); + border-color: var(--bs-primary-light); + background-color: var(--bs-primary-light); +} +.btn.btn-light-primary i, +.btn.btn-light-primary .svg-icon { + color: var(--bs-primary); +} +.btn.btn-light-primary.dropdown-toggle:after { + color: var(--bs-primary); +} +.btn-check:checked + .btn.btn-light-primary, .btn-check:active + .btn.btn-light-primary, .btn.btn-light-primary:focus:not(.btn-active), .btn.btn-light-primary:hover:not(.btn-active), .btn.btn-light-primary:active:not(.btn-active), .btn.btn-light-primary.active, .btn.btn-light-primary.show, .show > .btn.btn-light-primary { + color: var(--bs-primary-inverse); + border-color: var(--bs-primary); + background-color: var(--bs-primary) !important; +} +.btn-check:checked + .btn.btn-light-primary i, +.btn-check:checked + .btn.btn-light-primary .svg-icon, .btn-check:active + .btn.btn-light-primary i, +.btn-check:active + .btn.btn-light-primary .svg-icon, .btn.btn-light-primary:focus:not(.btn-active) i, +.btn.btn-light-primary:focus:not(.btn-active) .svg-icon, .btn.btn-light-primary:hover:not(.btn-active) i, +.btn.btn-light-primary:hover:not(.btn-active) .svg-icon, .btn.btn-light-primary:active:not(.btn-active) i, +.btn.btn-light-primary:active:not(.btn-active) .svg-icon, .btn.btn-light-primary.active i, +.btn.btn-light-primary.active .svg-icon, .btn.btn-light-primary.show i, +.btn.btn-light-primary.show .svg-icon, .show > .btn.btn-light-primary i, +.show > .btn.btn-light-primary .svg-icon { + color: var(--bs-primary-inverse); +} +.btn-check:checked + .btn.btn-light-primary.dropdown-toggle:after, .btn-check:active + .btn.btn-light-primary.dropdown-toggle:after, .btn.btn-light-primary:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-light-primary:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-light-primary:active:not(.btn-active).dropdown-toggle:after, .btn.btn-light-primary.active.dropdown-toggle:after, .btn.btn-light-primary.show.dropdown-toggle:after, .show > .btn.btn-light-primary.dropdown-toggle:after { + color: var(--bs-primary-inverse); +} + +.btn.btn-bg-primary { + border-color: var(--bs-primary); + background-color: var(--bs-primary); +} +.btn-check:checked + .btn.btn-active-primary, .btn-check:active + .btn.btn-active-primary, .btn.btn-active-primary:focus:not(.btn-active), .btn.btn-active-primary:hover:not(.btn-active), .btn.btn-active-primary:active:not(.btn-active), .btn.btn-active-primary.active, .btn.btn-active-primary.show, .show > .btn.btn-active-primary { + color: var(--bs-primary-inverse); + border-color: var(--bs-primary); + background-color: var(--bs-primary) !important; +} +.btn-check:checked + .btn.btn-active-primary i, +.btn-check:checked + .btn.btn-active-primary .svg-icon, .btn-check:active + .btn.btn-active-primary i, +.btn-check:active + .btn.btn-active-primary .svg-icon, .btn.btn-active-primary:focus:not(.btn-active) i, +.btn.btn-active-primary:focus:not(.btn-active) .svg-icon, .btn.btn-active-primary:hover:not(.btn-active) i, +.btn.btn-active-primary:hover:not(.btn-active) .svg-icon, .btn.btn-active-primary:active:not(.btn-active) i, +.btn.btn-active-primary:active:not(.btn-active) .svg-icon, .btn.btn-active-primary.active i, +.btn.btn-active-primary.active .svg-icon, .btn.btn-active-primary.show i, +.btn.btn-active-primary.show .svg-icon, .show > .btn.btn-active-primary i, +.show > .btn.btn-active-primary .svg-icon { + color: var(--bs-primary-inverse); +} +.btn-check:checked + .btn.btn-active-primary.dropdown-toggle:after, .btn-check:active + .btn.btn-active-primary.dropdown-toggle:after, .btn.btn-active-primary:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-primary:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-primary:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-primary.active.dropdown-toggle:after, .btn.btn-active-primary.show.dropdown-toggle:after, .show > .btn.btn-active-primary.dropdown-toggle:after { + color: var(--bs-primary-inverse); +} + +.btn-check:checked + .btn.btn-active-light-primary, .btn-check:active + .btn.btn-active-light-primary, .btn.btn-active-light-primary:focus:not(.btn-active), .btn.btn-active-light-primary:hover:not(.btn-active), .btn.btn-active-light-primary:active:not(.btn-active), .btn.btn-active-light-primary.active, .btn.btn-active-light-primary.show, .show > .btn.btn-active-light-primary { + color: var(--bs-primary); + border-color: var(--bs-primary-light); + background-color: var(--bs-primary-light) !important; +} +.btn-check:checked + .btn.btn-active-light-primary i, +.btn-check:checked + .btn.btn-active-light-primary .svg-icon, .btn-check:active + .btn.btn-active-light-primary i, +.btn-check:active + .btn.btn-active-light-primary .svg-icon, .btn.btn-active-light-primary:focus:not(.btn-active) i, +.btn.btn-active-light-primary:focus:not(.btn-active) .svg-icon, .btn.btn-active-light-primary:hover:not(.btn-active) i, +.btn.btn-active-light-primary:hover:not(.btn-active) .svg-icon, .btn.btn-active-light-primary:active:not(.btn-active) i, +.btn.btn-active-light-primary:active:not(.btn-active) .svg-icon, .btn.btn-active-light-primary.active i, +.btn.btn-active-light-primary.active .svg-icon, .btn.btn-active-light-primary.show i, +.btn.btn-active-light-primary.show .svg-icon, .show > .btn.btn-active-light-primary i, +.show > .btn.btn-active-light-primary .svg-icon { + color: var(--bs-primary); +} +.btn-check:checked + .btn.btn-active-light-primary.dropdown-toggle:after, .btn-check:active + .btn.btn-active-light-primary.dropdown-toggle:after, .btn.btn-active-light-primary:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-primary:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-primary:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-primary.active.dropdown-toggle:after, .btn.btn-active-light-primary.show.dropdown-toggle:after, .show > .btn.btn-active-light-primary.dropdown-toggle:after { + color: var(--bs-primary); +} + +.btn.btn-outline.btn-outline-primary { + color: var(--bs-primary); + border-color: var(--bs-primary); + background-color: transparent; +} +.btn.btn-outline.btn-outline-primary i, +.btn.btn-outline.btn-outline-primary .svg-icon { + color: var(--bs-primary); +} +.btn.btn-outline.btn-outline-primary.dropdown-toggle:after { + color: var(--bs-primary); +} +.btn-check:checked + .btn.btn-outline.btn-outline-primary, .btn-check:active + .btn.btn-outline.btn-outline-primary, .btn.btn-outline.btn-outline-primary:focus:not(.btn-active), .btn.btn-outline.btn-outline-primary:hover:not(.btn-active), .btn.btn-outline.btn-outline-primary:active:not(.btn-active), .btn.btn-outline.btn-outline-primary.active, .btn.btn-outline.btn-outline-primary.show, .show > .btn.btn-outline.btn-outline-primary { + color: var(--bs-primary-active); + border-color: var(--bs-primary); + background-color: var(--bs-primary-light) !important; +} +.btn-check:checked + .btn.btn-outline.btn-outline-primary i, +.btn-check:checked + .btn.btn-outline.btn-outline-primary .svg-icon, .btn-check:active + .btn.btn-outline.btn-outline-primary i, +.btn-check:active + .btn.btn-outline.btn-outline-primary .svg-icon, .btn.btn-outline.btn-outline-primary:focus:not(.btn-active) i, +.btn.btn-outline.btn-outline-primary:focus:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-primary:hover:not(.btn-active) i, +.btn.btn-outline.btn-outline-primary:hover:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-primary:active:not(.btn-active) i, +.btn.btn-outline.btn-outline-primary:active:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-primary.active i, +.btn.btn-outline.btn-outline-primary.active .svg-icon, .btn.btn-outline.btn-outline-primary.show i, +.btn.btn-outline.btn-outline-primary.show .svg-icon, .show > .btn.btn-outline.btn-outline-primary i, +.show > .btn.btn-outline.btn-outline-primary .svg-icon { + color: var(--bs-primary-active); +} +.btn-check:checked + .btn.btn-outline.btn-outline-primary.dropdown-toggle:after, .btn-check:active + .btn.btn-outline.btn-outline-primary.dropdown-toggle:after, .btn.btn-outline.btn-outline-primary:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-primary:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-primary:active:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-primary.active.dropdown-toggle:after, .btn.btn-outline.btn-outline-primary.show.dropdown-toggle:after, .show > .btn.btn-outline.btn-outline-primary.dropdown-toggle:after { + color: var(--bs-primary-active); +} + +.btn.btn-secondary { + color: var(--bs-secondary-inverse); + border-color: var(--bs-secondary); + background-color: var(--bs-secondary); +} +.btn.btn-secondary i, +.btn.btn-secondary .svg-icon { + color: var(--bs-secondary-inverse); +} +.btn.btn-secondary.dropdown-toggle:after { + color: var(--bs-secondary-inverse); +} +.btn-check:checked + .btn.btn-secondary, .btn-check:active + .btn.btn-secondary, .btn.btn-secondary:focus:not(.btn-active), .btn.btn-secondary:hover:not(.btn-active), .btn.btn-secondary:active:not(.btn-active), .btn.btn-secondary.active, .btn.btn-secondary.show, .show > .btn.btn-secondary { + color: var(--bs-secondary-inverse); + border-color: var(--bs-secondary-active); + background-color: var(--bs-secondary-active) !important; +} +.btn-check:checked + .btn.btn-secondary i, +.btn-check:checked + .btn.btn-secondary .svg-icon, .btn-check:active + .btn.btn-secondary i, +.btn-check:active + .btn.btn-secondary .svg-icon, .btn.btn-secondary:focus:not(.btn-active) i, +.btn.btn-secondary:focus:not(.btn-active) .svg-icon, .btn.btn-secondary:hover:not(.btn-active) i, +.btn.btn-secondary:hover:not(.btn-active) .svg-icon, .btn.btn-secondary:active:not(.btn-active) i, +.btn.btn-secondary:active:not(.btn-active) .svg-icon, .btn.btn-secondary.active i, +.btn.btn-secondary.active .svg-icon, .btn.btn-secondary.show i, +.btn.btn-secondary.show .svg-icon, .show > .btn.btn-secondary i, +.show > .btn.btn-secondary .svg-icon { + color: var(--bs-secondary-inverse); +} +.btn-check:checked + .btn.btn-secondary.dropdown-toggle:after, .btn-check:active + .btn.btn-secondary.dropdown-toggle:after, .btn.btn-secondary:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-secondary:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-secondary:active:not(.btn-active).dropdown-toggle:after, .btn.btn-secondary.active.dropdown-toggle:after, .btn.btn-secondary.show.dropdown-toggle:after, .show > .btn.btn-secondary.dropdown-toggle:after { + color: var(--bs-secondary-inverse); +} + +.btn.btn-light-secondary { + color: var(--bs-secondary); + border-color: var(--bs-secondary-light); + background-color: var(--bs-secondary-light); +} +.btn.btn-light-secondary i, +.btn.btn-light-secondary .svg-icon { + color: var(--bs-secondary); +} +.btn.btn-light-secondary.dropdown-toggle:after { + color: var(--bs-secondary); +} +.btn-check:checked + .btn.btn-light-secondary, .btn-check:active + .btn.btn-light-secondary, .btn.btn-light-secondary:focus:not(.btn-active), .btn.btn-light-secondary:hover:not(.btn-active), .btn.btn-light-secondary:active:not(.btn-active), .btn.btn-light-secondary.active, .btn.btn-light-secondary.show, .show > .btn.btn-light-secondary { + color: var(--bs-secondary-inverse); + border-color: var(--bs-secondary); + background-color: var(--bs-secondary) !important; +} +.btn-check:checked + .btn.btn-light-secondary i, +.btn-check:checked + .btn.btn-light-secondary .svg-icon, .btn-check:active + .btn.btn-light-secondary i, +.btn-check:active + .btn.btn-light-secondary .svg-icon, .btn.btn-light-secondary:focus:not(.btn-active) i, +.btn.btn-light-secondary:focus:not(.btn-active) .svg-icon, .btn.btn-light-secondary:hover:not(.btn-active) i, +.btn.btn-light-secondary:hover:not(.btn-active) .svg-icon, .btn.btn-light-secondary:active:not(.btn-active) i, +.btn.btn-light-secondary:active:not(.btn-active) .svg-icon, .btn.btn-light-secondary.active i, +.btn.btn-light-secondary.active .svg-icon, .btn.btn-light-secondary.show i, +.btn.btn-light-secondary.show .svg-icon, .show > .btn.btn-light-secondary i, +.show > .btn.btn-light-secondary .svg-icon { + color: var(--bs-secondary-inverse); +} +.btn-check:checked + .btn.btn-light-secondary.dropdown-toggle:after, .btn-check:active + .btn.btn-light-secondary.dropdown-toggle:after, .btn.btn-light-secondary:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-light-secondary:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-light-secondary:active:not(.btn-active).dropdown-toggle:after, .btn.btn-light-secondary.active.dropdown-toggle:after, .btn.btn-light-secondary.show.dropdown-toggle:after, .show > .btn.btn-light-secondary.dropdown-toggle:after { + color: var(--bs-secondary-inverse); +} + +.btn.btn-bg-secondary { + border-color: var(--bs-secondary); + background-color: var(--bs-secondary); +} +.btn-check:checked + .btn.btn-active-secondary, .btn-check:active + .btn.btn-active-secondary, .btn.btn-active-secondary:focus:not(.btn-active), .btn.btn-active-secondary:hover:not(.btn-active), .btn.btn-active-secondary:active:not(.btn-active), .btn.btn-active-secondary.active, .btn.btn-active-secondary.show, .show > .btn.btn-active-secondary { + color: var(--bs-secondary-inverse); + border-color: var(--bs-secondary); + background-color: var(--bs-secondary) !important; +} +.btn-check:checked + .btn.btn-active-secondary i, +.btn-check:checked + .btn.btn-active-secondary .svg-icon, .btn-check:active + .btn.btn-active-secondary i, +.btn-check:active + .btn.btn-active-secondary .svg-icon, .btn.btn-active-secondary:focus:not(.btn-active) i, +.btn.btn-active-secondary:focus:not(.btn-active) .svg-icon, .btn.btn-active-secondary:hover:not(.btn-active) i, +.btn.btn-active-secondary:hover:not(.btn-active) .svg-icon, .btn.btn-active-secondary:active:not(.btn-active) i, +.btn.btn-active-secondary:active:not(.btn-active) .svg-icon, .btn.btn-active-secondary.active i, +.btn.btn-active-secondary.active .svg-icon, .btn.btn-active-secondary.show i, +.btn.btn-active-secondary.show .svg-icon, .show > .btn.btn-active-secondary i, +.show > .btn.btn-active-secondary .svg-icon { + color: var(--bs-secondary-inverse); +} +.btn-check:checked + .btn.btn-active-secondary.dropdown-toggle:after, .btn-check:active + .btn.btn-active-secondary.dropdown-toggle:after, .btn.btn-active-secondary:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-secondary:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-secondary:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-secondary.active.dropdown-toggle:after, .btn.btn-active-secondary.show.dropdown-toggle:after, .show > .btn.btn-active-secondary.dropdown-toggle:after { + color: var(--bs-secondary-inverse); +} + +.btn-check:checked + .btn.btn-active-light-secondary, .btn-check:active + .btn.btn-active-light-secondary, .btn.btn-active-light-secondary:focus:not(.btn-active), .btn.btn-active-light-secondary:hover:not(.btn-active), .btn.btn-active-light-secondary:active:not(.btn-active), .btn.btn-active-light-secondary.active, .btn.btn-active-light-secondary.show, .show > .btn.btn-active-light-secondary { + color: var(--bs-secondary); + border-color: var(--bs-secondary-light); + background-color: var(--bs-secondary-light) !important; +} +.btn-check:checked + .btn.btn-active-light-secondary i, +.btn-check:checked + .btn.btn-active-light-secondary .svg-icon, .btn-check:active + .btn.btn-active-light-secondary i, +.btn-check:active + .btn.btn-active-light-secondary .svg-icon, .btn.btn-active-light-secondary:focus:not(.btn-active) i, +.btn.btn-active-light-secondary:focus:not(.btn-active) .svg-icon, .btn.btn-active-light-secondary:hover:not(.btn-active) i, +.btn.btn-active-light-secondary:hover:not(.btn-active) .svg-icon, .btn.btn-active-light-secondary:active:not(.btn-active) i, +.btn.btn-active-light-secondary:active:not(.btn-active) .svg-icon, .btn.btn-active-light-secondary.active i, +.btn.btn-active-light-secondary.active .svg-icon, .btn.btn-active-light-secondary.show i, +.btn.btn-active-light-secondary.show .svg-icon, .show > .btn.btn-active-light-secondary i, +.show > .btn.btn-active-light-secondary .svg-icon { + color: var(--bs-secondary); +} +.btn-check:checked + .btn.btn-active-light-secondary.dropdown-toggle:after, .btn-check:active + .btn.btn-active-light-secondary.dropdown-toggle:after, .btn.btn-active-light-secondary:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-secondary:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-secondary:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-secondary.active.dropdown-toggle:after, .btn.btn-active-light-secondary.show.dropdown-toggle:after, .show > .btn.btn-active-light-secondary.dropdown-toggle:after { + color: var(--bs-secondary); +} + +.btn.btn-outline.btn-outline-secondary { + color: var(--bs-secondary); + border-color: var(--bs-secondary); + background-color: transparent; +} +.btn.btn-outline.btn-outline-secondary i, +.btn.btn-outline.btn-outline-secondary .svg-icon { + color: var(--bs-secondary); +} +.btn.btn-outline.btn-outline-secondary.dropdown-toggle:after { + color: var(--bs-secondary); +} +.btn-check:checked + .btn.btn-outline.btn-outline-secondary, .btn-check:active + .btn.btn-outline.btn-outline-secondary, .btn.btn-outline.btn-outline-secondary:focus:not(.btn-active), .btn.btn-outline.btn-outline-secondary:hover:not(.btn-active), .btn.btn-outline.btn-outline-secondary:active:not(.btn-active), .btn.btn-outline.btn-outline-secondary.active, .btn.btn-outline.btn-outline-secondary.show, .show > .btn.btn-outline.btn-outline-secondary { + color: var(--bs-secondary-active); + border-color: var(--bs-secondary); + background-color: var(--bs-secondary-light) !important; +} +.btn-check:checked + .btn.btn-outline.btn-outline-secondary i, +.btn-check:checked + .btn.btn-outline.btn-outline-secondary .svg-icon, .btn-check:active + .btn.btn-outline.btn-outline-secondary i, +.btn-check:active + .btn.btn-outline.btn-outline-secondary .svg-icon, .btn.btn-outline.btn-outline-secondary:focus:not(.btn-active) i, +.btn.btn-outline.btn-outline-secondary:focus:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-secondary:hover:not(.btn-active) i, +.btn.btn-outline.btn-outline-secondary:hover:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-secondary:active:not(.btn-active) i, +.btn.btn-outline.btn-outline-secondary:active:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-secondary.active i, +.btn.btn-outline.btn-outline-secondary.active .svg-icon, .btn.btn-outline.btn-outline-secondary.show i, +.btn.btn-outline.btn-outline-secondary.show .svg-icon, .show > .btn.btn-outline.btn-outline-secondary i, +.show > .btn.btn-outline.btn-outline-secondary .svg-icon { + color: var(--bs-secondary-active); +} +.btn-check:checked + .btn.btn-outline.btn-outline-secondary.dropdown-toggle:after, .btn-check:active + .btn.btn-outline.btn-outline-secondary.dropdown-toggle:after, .btn.btn-outline.btn-outline-secondary:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-secondary:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-secondary:active:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-secondary.active.dropdown-toggle:after, .btn.btn-outline.btn-outline-secondary.show.dropdown-toggle:after, .show > .btn.btn-outline.btn-outline-secondary.dropdown-toggle:after { + color: var(--bs-secondary-active); +} + +.btn.btn-success { + color: var(--bs-success-inverse); + border-color: var(--bs-success); + background-color: var(--bs-success); +} +.btn.btn-success i, +.btn.btn-success .svg-icon { + color: var(--bs-success-inverse); +} +.btn.btn-success.dropdown-toggle:after { + color: var(--bs-success-inverse); +} +.btn-check:checked + .btn.btn-success, .btn-check:active + .btn.btn-success, .btn.btn-success:focus:not(.btn-active), .btn.btn-success:hover:not(.btn-active), .btn.btn-success:active:not(.btn-active), .btn.btn-success.active, .btn.btn-success.show, .show > .btn.btn-success { + color: var(--bs-success-inverse); + border-color: var(--bs-success-active); + background-color: var(--bs-success-active) !important; +} +.btn-check:checked + .btn.btn-success i, +.btn-check:checked + .btn.btn-success .svg-icon, .btn-check:active + .btn.btn-success i, +.btn-check:active + .btn.btn-success .svg-icon, .btn.btn-success:focus:not(.btn-active) i, +.btn.btn-success:focus:not(.btn-active) .svg-icon, .btn.btn-success:hover:not(.btn-active) i, +.btn.btn-success:hover:not(.btn-active) .svg-icon, .btn.btn-success:active:not(.btn-active) i, +.btn.btn-success:active:not(.btn-active) .svg-icon, .btn.btn-success.active i, +.btn.btn-success.active .svg-icon, .btn.btn-success.show i, +.btn.btn-success.show .svg-icon, .show > .btn.btn-success i, +.show > .btn.btn-success .svg-icon { + color: var(--bs-success-inverse); +} +.btn-check:checked + .btn.btn-success.dropdown-toggle:after, .btn-check:active + .btn.btn-success.dropdown-toggle:after, .btn.btn-success:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-success:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-success:active:not(.btn-active).dropdown-toggle:after, .btn.btn-success.active.dropdown-toggle:after, .btn.btn-success.show.dropdown-toggle:after, .show > .btn.btn-success.dropdown-toggle:after { + color: var(--bs-success-inverse); +} + +.btn.btn-light-success { + color: var(--bs-success); + border-color: var(--bs-success-light); + background-color: var(--bs-success-light); +} +.btn.btn-light-success i, +.btn.btn-light-success .svg-icon { + color: var(--bs-success); +} +.btn.btn-light-success.dropdown-toggle:after { + color: var(--bs-success); +} +.btn-check:checked + .btn.btn-light-success, .btn-check:active + .btn.btn-light-success, .btn.btn-light-success:focus:not(.btn-active), .btn.btn-light-success:hover:not(.btn-active), .btn.btn-light-success:active:not(.btn-active), .btn.btn-light-success.active, .btn.btn-light-success.show, .show > .btn.btn-light-success { + color: var(--bs-success-inverse); + border-color: var(--bs-success); + background-color: var(--bs-success) !important; +} +.btn-check:checked + .btn.btn-light-success i, +.btn-check:checked + .btn.btn-light-success .svg-icon, .btn-check:active + .btn.btn-light-success i, +.btn-check:active + .btn.btn-light-success .svg-icon, .btn.btn-light-success:focus:not(.btn-active) i, +.btn.btn-light-success:focus:not(.btn-active) .svg-icon, .btn.btn-light-success:hover:not(.btn-active) i, +.btn.btn-light-success:hover:not(.btn-active) .svg-icon, .btn.btn-light-success:active:not(.btn-active) i, +.btn.btn-light-success:active:not(.btn-active) .svg-icon, .btn.btn-light-success.active i, +.btn.btn-light-success.active .svg-icon, .btn.btn-light-success.show i, +.btn.btn-light-success.show .svg-icon, .show > .btn.btn-light-success i, +.show > .btn.btn-light-success .svg-icon { + color: var(--bs-success-inverse); +} +.btn-check:checked + .btn.btn-light-success.dropdown-toggle:after, .btn-check:active + .btn.btn-light-success.dropdown-toggle:after, .btn.btn-light-success:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-light-success:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-light-success:active:not(.btn-active).dropdown-toggle:after, .btn.btn-light-success.active.dropdown-toggle:after, .btn.btn-light-success.show.dropdown-toggle:after, .show > .btn.btn-light-success.dropdown-toggle:after { + color: var(--bs-success-inverse); +} + +.btn.btn-bg-success { + border-color: var(--bs-success); + background-color: var(--bs-success); +} +.btn-check:checked + .btn.btn-active-success, .btn-check:active + .btn.btn-active-success, .btn.btn-active-success:focus:not(.btn-active), .btn.btn-active-success:hover:not(.btn-active), .btn.btn-active-success:active:not(.btn-active), .btn.btn-active-success.active, .btn.btn-active-success.show, .show > .btn.btn-active-success { + color: var(--bs-success-inverse); + border-color: var(--bs-success); + background-color: var(--bs-success) !important; +} +.btn-check:checked + .btn.btn-active-success i, +.btn-check:checked + .btn.btn-active-success .svg-icon, .btn-check:active + .btn.btn-active-success i, +.btn-check:active + .btn.btn-active-success .svg-icon, .btn.btn-active-success:focus:not(.btn-active) i, +.btn.btn-active-success:focus:not(.btn-active) .svg-icon, .btn.btn-active-success:hover:not(.btn-active) i, +.btn.btn-active-success:hover:not(.btn-active) .svg-icon, .btn.btn-active-success:active:not(.btn-active) i, +.btn.btn-active-success:active:not(.btn-active) .svg-icon, .btn.btn-active-success.active i, +.btn.btn-active-success.active .svg-icon, .btn.btn-active-success.show i, +.btn.btn-active-success.show .svg-icon, .show > .btn.btn-active-success i, +.show > .btn.btn-active-success .svg-icon { + color: var(--bs-success-inverse); +} +.btn-check:checked + .btn.btn-active-success.dropdown-toggle:after, .btn-check:active + .btn.btn-active-success.dropdown-toggle:after, .btn.btn-active-success:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-success:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-success:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-success.active.dropdown-toggle:after, .btn.btn-active-success.show.dropdown-toggle:after, .show > .btn.btn-active-success.dropdown-toggle:after { + color: var(--bs-success-inverse); +} + +.btn-check:checked + .btn.btn-active-light-success, .btn-check:active + .btn.btn-active-light-success, .btn.btn-active-light-success:focus:not(.btn-active), .btn.btn-active-light-success:hover:not(.btn-active), .btn.btn-active-light-success:active:not(.btn-active), .btn.btn-active-light-success.active, .btn.btn-active-light-success.show, .show > .btn.btn-active-light-success { + color: var(--bs-success); + border-color: var(--bs-success-light); + background-color: var(--bs-success-light) !important; +} +.btn-check:checked + .btn.btn-active-light-success i, +.btn-check:checked + .btn.btn-active-light-success .svg-icon, .btn-check:active + .btn.btn-active-light-success i, +.btn-check:active + .btn.btn-active-light-success .svg-icon, .btn.btn-active-light-success:focus:not(.btn-active) i, +.btn.btn-active-light-success:focus:not(.btn-active) .svg-icon, .btn.btn-active-light-success:hover:not(.btn-active) i, +.btn.btn-active-light-success:hover:not(.btn-active) .svg-icon, .btn.btn-active-light-success:active:not(.btn-active) i, +.btn.btn-active-light-success:active:not(.btn-active) .svg-icon, .btn.btn-active-light-success.active i, +.btn.btn-active-light-success.active .svg-icon, .btn.btn-active-light-success.show i, +.btn.btn-active-light-success.show .svg-icon, .show > .btn.btn-active-light-success i, +.show > .btn.btn-active-light-success .svg-icon { + color: var(--bs-success); +} +.btn-check:checked + .btn.btn-active-light-success.dropdown-toggle:after, .btn-check:active + .btn.btn-active-light-success.dropdown-toggle:after, .btn.btn-active-light-success:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-success:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-success:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-success.active.dropdown-toggle:after, .btn.btn-active-light-success.show.dropdown-toggle:after, .show > .btn.btn-active-light-success.dropdown-toggle:after { + color: var(--bs-success); +} + +.btn.btn-outline.btn-outline-success { + color: var(--bs-success); + border-color: var(--bs-success); + background-color: transparent; +} +.btn.btn-outline.btn-outline-success i, +.btn.btn-outline.btn-outline-success .svg-icon { + color: var(--bs-success); +} +.btn.btn-outline.btn-outline-success.dropdown-toggle:after { + color: var(--bs-success); +} +.btn-check:checked + .btn.btn-outline.btn-outline-success, .btn-check:active + .btn.btn-outline.btn-outline-success, .btn.btn-outline.btn-outline-success:focus:not(.btn-active), .btn.btn-outline.btn-outline-success:hover:not(.btn-active), .btn.btn-outline.btn-outline-success:active:not(.btn-active), .btn.btn-outline.btn-outline-success.active, .btn.btn-outline.btn-outline-success.show, .show > .btn.btn-outline.btn-outline-success { + color: var(--bs-success-active); + border-color: var(--bs-success); + background-color: var(--bs-success-light) !important; +} +.btn-check:checked + .btn.btn-outline.btn-outline-success i, +.btn-check:checked + .btn.btn-outline.btn-outline-success .svg-icon, .btn-check:active + .btn.btn-outline.btn-outline-success i, +.btn-check:active + .btn.btn-outline.btn-outline-success .svg-icon, .btn.btn-outline.btn-outline-success:focus:not(.btn-active) i, +.btn.btn-outline.btn-outline-success:focus:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-success:hover:not(.btn-active) i, +.btn.btn-outline.btn-outline-success:hover:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-success:active:not(.btn-active) i, +.btn.btn-outline.btn-outline-success:active:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-success.active i, +.btn.btn-outline.btn-outline-success.active .svg-icon, .btn.btn-outline.btn-outline-success.show i, +.btn.btn-outline.btn-outline-success.show .svg-icon, .show > .btn.btn-outline.btn-outline-success i, +.show > .btn.btn-outline.btn-outline-success .svg-icon { + color: var(--bs-success-active); +} +.btn-check:checked + .btn.btn-outline.btn-outline-success.dropdown-toggle:after, .btn-check:active + .btn.btn-outline.btn-outline-success.dropdown-toggle:after, .btn.btn-outline.btn-outline-success:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-success:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-success:active:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-success.active.dropdown-toggle:after, .btn.btn-outline.btn-outline-success.show.dropdown-toggle:after, .show > .btn.btn-outline.btn-outline-success.dropdown-toggle:after { + color: var(--bs-success-active); +} + +.btn.btn-info { + color: var(--bs-info-inverse); + border-color: var(--bs-info); + background-color: var(--bs-info); +} +.btn.btn-info i, +.btn.btn-info .svg-icon { + color: var(--bs-info-inverse); +} +.btn.btn-info.dropdown-toggle:after { + color: var(--bs-info-inverse); +} +.btn-check:checked + .btn.btn-info, .btn-check:active + .btn.btn-info, .btn.btn-info:focus:not(.btn-active), .btn.btn-info:hover:not(.btn-active), .btn.btn-info:active:not(.btn-active), .btn.btn-info.active, .btn.btn-info.show, .show > .btn.btn-info { + color: var(--bs-info-inverse); + border-color: var(--bs-info-active); + background-color: var(--bs-info-active) !important; +} +.btn-check:checked + .btn.btn-info i, +.btn-check:checked + .btn.btn-info .svg-icon, .btn-check:active + .btn.btn-info i, +.btn-check:active + .btn.btn-info .svg-icon, .btn.btn-info:focus:not(.btn-active) i, +.btn.btn-info:focus:not(.btn-active) .svg-icon, .btn.btn-info:hover:not(.btn-active) i, +.btn.btn-info:hover:not(.btn-active) .svg-icon, .btn.btn-info:active:not(.btn-active) i, +.btn.btn-info:active:not(.btn-active) .svg-icon, .btn.btn-info.active i, +.btn.btn-info.active .svg-icon, .btn.btn-info.show i, +.btn.btn-info.show .svg-icon, .show > .btn.btn-info i, +.show > .btn.btn-info .svg-icon { + color: var(--bs-info-inverse); +} +.btn-check:checked + .btn.btn-info.dropdown-toggle:after, .btn-check:active + .btn.btn-info.dropdown-toggle:after, .btn.btn-info:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-info:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-info:active:not(.btn-active).dropdown-toggle:after, .btn.btn-info.active.dropdown-toggle:after, .btn.btn-info.show.dropdown-toggle:after, .show > .btn.btn-info.dropdown-toggle:after { + color: var(--bs-info-inverse); +} + +.btn.btn-light-info { + color: var(--bs-info); + border-color: var(--bs-info-light); + background-color: var(--bs-info-light); +} +.btn.btn-light-info i, +.btn.btn-light-info .svg-icon { + color: var(--bs-info); +} +.btn.btn-light-info.dropdown-toggle:after { + color: var(--bs-info); +} +.btn-check:checked + .btn.btn-light-info, .btn-check:active + .btn.btn-light-info, .btn.btn-light-info:focus:not(.btn-active), .btn.btn-light-info:hover:not(.btn-active), .btn.btn-light-info:active:not(.btn-active), .btn.btn-light-info.active, .btn.btn-light-info.show, .show > .btn.btn-light-info { + color: var(--bs-info-inverse); + border-color: var(--bs-info); + background-color: var(--bs-info) !important; +} +.btn-check:checked + .btn.btn-light-info i, +.btn-check:checked + .btn.btn-light-info .svg-icon, .btn-check:active + .btn.btn-light-info i, +.btn-check:active + .btn.btn-light-info .svg-icon, .btn.btn-light-info:focus:not(.btn-active) i, +.btn.btn-light-info:focus:not(.btn-active) .svg-icon, .btn.btn-light-info:hover:not(.btn-active) i, +.btn.btn-light-info:hover:not(.btn-active) .svg-icon, .btn.btn-light-info:active:not(.btn-active) i, +.btn.btn-light-info:active:not(.btn-active) .svg-icon, .btn.btn-light-info.active i, +.btn.btn-light-info.active .svg-icon, .btn.btn-light-info.show i, +.btn.btn-light-info.show .svg-icon, .show > .btn.btn-light-info i, +.show > .btn.btn-light-info .svg-icon { + color: var(--bs-info-inverse); +} +.btn-check:checked + .btn.btn-light-info.dropdown-toggle:after, .btn-check:active + .btn.btn-light-info.dropdown-toggle:after, .btn.btn-light-info:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-light-info:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-light-info:active:not(.btn-active).dropdown-toggle:after, .btn.btn-light-info.active.dropdown-toggle:after, .btn.btn-light-info.show.dropdown-toggle:after, .show > .btn.btn-light-info.dropdown-toggle:after { + color: var(--bs-info-inverse); +} + +.btn.btn-bg-info { + border-color: var(--bs-info); + background-color: var(--bs-info); +} +.btn-check:checked + .btn.btn-active-info, .btn-check:active + .btn.btn-active-info, .btn.btn-active-info:focus:not(.btn-active), .btn.btn-active-info:hover:not(.btn-active), .btn.btn-active-info:active:not(.btn-active), .btn.btn-active-info.active, .btn.btn-active-info.show, .show > .btn.btn-active-info { + color: var(--bs-info-inverse); + border-color: var(--bs-info); + background-color: var(--bs-info) !important; +} +.btn-check:checked + .btn.btn-active-info i, +.btn-check:checked + .btn.btn-active-info .svg-icon, .btn-check:active + .btn.btn-active-info i, +.btn-check:active + .btn.btn-active-info .svg-icon, .btn.btn-active-info:focus:not(.btn-active) i, +.btn.btn-active-info:focus:not(.btn-active) .svg-icon, .btn.btn-active-info:hover:not(.btn-active) i, +.btn.btn-active-info:hover:not(.btn-active) .svg-icon, .btn.btn-active-info:active:not(.btn-active) i, +.btn.btn-active-info:active:not(.btn-active) .svg-icon, .btn.btn-active-info.active i, +.btn.btn-active-info.active .svg-icon, .btn.btn-active-info.show i, +.btn.btn-active-info.show .svg-icon, .show > .btn.btn-active-info i, +.show > .btn.btn-active-info .svg-icon { + color: var(--bs-info-inverse); +} +.btn-check:checked + .btn.btn-active-info.dropdown-toggle:after, .btn-check:active + .btn.btn-active-info.dropdown-toggle:after, .btn.btn-active-info:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-info:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-info:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-info.active.dropdown-toggle:after, .btn.btn-active-info.show.dropdown-toggle:after, .show > .btn.btn-active-info.dropdown-toggle:after { + color: var(--bs-info-inverse); +} + +.btn-check:checked + .btn.btn-active-light-info, .btn-check:active + .btn.btn-active-light-info, .btn.btn-active-light-info:focus:not(.btn-active), .btn.btn-active-light-info:hover:not(.btn-active), .btn.btn-active-light-info:active:not(.btn-active), .btn.btn-active-light-info.active, .btn.btn-active-light-info.show, .show > .btn.btn-active-light-info { + color: var(--bs-info); + border-color: var(--bs-info-light); + background-color: var(--bs-info-light) !important; +} +.btn-check:checked + .btn.btn-active-light-info i, +.btn-check:checked + .btn.btn-active-light-info .svg-icon, .btn-check:active + .btn.btn-active-light-info i, +.btn-check:active + .btn.btn-active-light-info .svg-icon, .btn.btn-active-light-info:focus:not(.btn-active) i, +.btn.btn-active-light-info:focus:not(.btn-active) .svg-icon, .btn.btn-active-light-info:hover:not(.btn-active) i, +.btn.btn-active-light-info:hover:not(.btn-active) .svg-icon, .btn.btn-active-light-info:active:not(.btn-active) i, +.btn.btn-active-light-info:active:not(.btn-active) .svg-icon, .btn.btn-active-light-info.active i, +.btn.btn-active-light-info.active .svg-icon, .btn.btn-active-light-info.show i, +.btn.btn-active-light-info.show .svg-icon, .show > .btn.btn-active-light-info i, +.show > .btn.btn-active-light-info .svg-icon { + color: var(--bs-info); +} +.btn-check:checked + .btn.btn-active-light-info.dropdown-toggle:after, .btn-check:active + .btn.btn-active-light-info.dropdown-toggle:after, .btn.btn-active-light-info:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-info:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-info:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-info.active.dropdown-toggle:after, .btn.btn-active-light-info.show.dropdown-toggle:after, .show > .btn.btn-active-light-info.dropdown-toggle:after { + color: var(--bs-info); +} + +.btn.btn-outline.btn-outline-info { + color: var(--bs-info); + border-color: var(--bs-info); + background-color: transparent; +} +.btn.btn-outline.btn-outline-info i, +.btn.btn-outline.btn-outline-info .svg-icon { + color: var(--bs-info); +} +.btn.btn-outline.btn-outline-info.dropdown-toggle:after { + color: var(--bs-info); +} +.btn-check:checked + .btn.btn-outline.btn-outline-info, .btn-check:active + .btn.btn-outline.btn-outline-info, .btn.btn-outline.btn-outline-info:focus:not(.btn-active), .btn.btn-outline.btn-outline-info:hover:not(.btn-active), .btn.btn-outline.btn-outline-info:active:not(.btn-active), .btn.btn-outline.btn-outline-info.active, .btn.btn-outline.btn-outline-info.show, .show > .btn.btn-outline.btn-outline-info { + color: var(--bs-info-active); + border-color: var(--bs-info); + background-color: var(--bs-info-light) !important; +} +.btn-check:checked + .btn.btn-outline.btn-outline-info i, +.btn-check:checked + .btn.btn-outline.btn-outline-info .svg-icon, .btn-check:active + .btn.btn-outline.btn-outline-info i, +.btn-check:active + .btn.btn-outline.btn-outline-info .svg-icon, .btn.btn-outline.btn-outline-info:focus:not(.btn-active) i, +.btn.btn-outline.btn-outline-info:focus:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-info:hover:not(.btn-active) i, +.btn.btn-outline.btn-outline-info:hover:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-info:active:not(.btn-active) i, +.btn.btn-outline.btn-outline-info:active:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-info.active i, +.btn.btn-outline.btn-outline-info.active .svg-icon, .btn.btn-outline.btn-outline-info.show i, +.btn.btn-outline.btn-outline-info.show .svg-icon, .show > .btn.btn-outline.btn-outline-info i, +.show > .btn.btn-outline.btn-outline-info .svg-icon { + color: var(--bs-info-active); +} +.btn-check:checked + .btn.btn-outline.btn-outline-info.dropdown-toggle:after, .btn-check:active + .btn.btn-outline.btn-outline-info.dropdown-toggle:after, .btn.btn-outline.btn-outline-info:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-info:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-info:active:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-info.active.dropdown-toggle:after, .btn.btn-outline.btn-outline-info.show.dropdown-toggle:after, .show > .btn.btn-outline.btn-outline-info.dropdown-toggle:after { + color: var(--bs-info-active); +} + +.btn.btn-warning { + color: var(--bs-warning-inverse); + border-color: var(--bs-warning); + background-color: var(--bs-warning); +} +.btn.btn-warning i, +.btn.btn-warning .svg-icon { + color: var(--bs-warning-inverse); +} +.btn.btn-warning.dropdown-toggle:after { + color: var(--bs-warning-inverse); +} +.btn-check:checked + .btn.btn-warning, .btn-check:active + .btn.btn-warning, .btn.btn-warning:focus:not(.btn-active), .btn.btn-warning:hover:not(.btn-active), .btn.btn-warning:active:not(.btn-active), .btn.btn-warning.active, .btn.btn-warning.show, .show > .btn.btn-warning { + color: var(--bs-warning-inverse); + border-color: var(--bs-warning-active); + background-color: var(--bs-warning-active) !important; +} +.btn-check:checked + .btn.btn-warning i, +.btn-check:checked + .btn.btn-warning .svg-icon, .btn-check:active + .btn.btn-warning i, +.btn-check:active + .btn.btn-warning .svg-icon, .btn.btn-warning:focus:not(.btn-active) i, +.btn.btn-warning:focus:not(.btn-active) .svg-icon, .btn.btn-warning:hover:not(.btn-active) i, +.btn.btn-warning:hover:not(.btn-active) .svg-icon, .btn.btn-warning:active:not(.btn-active) i, +.btn.btn-warning:active:not(.btn-active) .svg-icon, .btn.btn-warning.active i, +.btn.btn-warning.active .svg-icon, .btn.btn-warning.show i, +.btn.btn-warning.show .svg-icon, .show > .btn.btn-warning i, +.show > .btn.btn-warning .svg-icon { + color: var(--bs-warning-inverse); +} +.btn-check:checked + .btn.btn-warning.dropdown-toggle:after, .btn-check:active + .btn.btn-warning.dropdown-toggle:after, .btn.btn-warning:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-warning:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-warning:active:not(.btn-active).dropdown-toggle:after, .btn.btn-warning.active.dropdown-toggle:after, .btn.btn-warning.show.dropdown-toggle:after, .show > .btn.btn-warning.dropdown-toggle:after { + color: var(--bs-warning-inverse); +} + +.btn.btn-light-warning { + color: var(--bs-warning); + border-color: var(--bs-warning-light); + background-color: var(--bs-warning-light); +} +.btn.btn-light-warning i, +.btn.btn-light-warning .svg-icon { + color: var(--bs-warning); +} +.btn.btn-light-warning.dropdown-toggle:after { + color: var(--bs-warning); +} +.btn-check:checked + .btn.btn-light-warning, .btn-check:active + .btn.btn-light-warning, .btn.btn-light-warning:focus:not(.btn-active), .btn.btn-light-warning:hover:not(.btn-active), .btn.btn-light-warning:active:not(.btn-active), .btn.btn-light-warning.active, .btn.btn-light-warning.show, .show > .btn.btn-light-warning { + color: var(--bs-warning-inverse); + border-color: var(--bs-warning); + background-color: var(--bs-warning) !important; +} +.btn-check:checked + .btn.btn-light-warning i, +.btn-check:checked + .btn.btn-light-warning .svg-icon, .btn-check:active + .btn.btn-light-warning i, +.btn-check:active + .btn.btn-light-warning .svg-icon, .btn.btn-light-warning:focus:not(.btn-active) i, +.btn.btn-light-warning:focus:not(.btn-active) .svg-icon, .btn.btn-light-warning:hover:not(.btn-active) i, +.btn.btn-light-warning:hover:not(.btn-active) .svg-icon, .btn.btn-light-warning:active:not(.btn-active) i, +.btn.btn-light-warning:active:not(.btn-active) .svg-icon, .btn.btn-light-warning.active i, +.btn.btn-light-warning.active .svg-icon, .btn.btn-light-warning.show i, +.btn.btn-light-warning.show .svg-icon, .show > .btn.btn-light-warning i, +.show > .btn.btn-light-warning .svg-icon { + color: var(--bs-warning-inverse); +} +.btn-check:checked + .btn.btn-light-warning.dropdown-toggle:after, .btn-check:active + .btn.btn-light-warning.dropdown-toggle:after, .btn.btn-light-warning:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-light-warning:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-light-warning:active:not(.btn-active).dropdown-toggle:after, .btn.btn-light-warning.active.dropdown-toggle:after, .btn.btn-light-warning.show.dropdown-toggle:after, .show > .btn.btn-light-warning.dropdown-toggle:after { + color: var(--bs-warning-inverse); +} + +.btn.btn-bg-warning { + border-color: var(--bs-warning); + background-color: var(--bs-warning); +} +.btn-check:checked + .btn.btn-active-warning, .btn-check:active + .btn.btn-active-warning, .btn.btn-active-warning:focus:not(.btn-active), .btn.btn-active-warning:hover:not(.btn-active), .btn.btn-active-warning:active:not(.btn-active), .btn.btn-active-warning.active, .btn.btn-active-warning.show, .show > .btn.btn-active-warning { + color: var(--bs-warning-inverse); + border-color: var(--bs-warning); + background-color: var(--bs-warning) !important; +} +.btn-check:checked + .btn.btn-active-warning i, +.btn-check:checked + .btn.btn-active-warning .svg-icon, .btn-check:active + .btn.btn-active-warning i, +.btn-check:active + .btn.btn-active-warning .svg-icon, .btn.btn-active-warning:focus:not(.btn-active) i, +.btn.btn-active-warning:focus:not(.btn-active) .svg-icon, .btn.btn-active-warning:hover:not(.btn-active) i, +.btn.btn-active-warning:hover:not(.btn-active) .svg-icon, .btn.btn-active-warning:active:not(.btn-active) i, +.btn.btn-active-warning:active:not(.btn-active) .svg-icon, .btn.btn-active-warning.active i, +.btn.btn-active-warning.active .svg-icon, .btn.btn-active-warning.show i, +.btn.btn-active-warning.show .svg-icon, .show > .btn.btn-active-warning i, +.show > .btn.btn-active-warning .svg-icon { + color: var(--bs-warning-inverse); +} +.btn-check:checked + .btn.btn-active-warning.dropdown-toggle:after, .btn-check:active + .btn.btn-active-warning.dropdown-toggle:after, .btn.btn-active-warning:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-warning:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-warning:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-warning.active.dropdown-toggle:after, .btn.btn-active-warning.show.dropdown-toggle:after, .show > .btn.btn-active-warning.dropdown-toggle:after { + color: var(--bs-warning-inverse); +} + +.btn-check:checked + .btn.btn-active-light-warning, .btn-check:active + .btn.btn-active-light-warning, .btn.btn-active-light-warning:focus:not(.btn-active), .btn.btn-active-light-warning:hover:not(.btn-active), .btn.btn-active-light-warning:active:not(.btn-active), .btn.btn-active-light-warning.active, .btn.btn-active-light-warning.show, .show > .btn.btn-active-light-warning { + color: var(--bs-warning); + border-color: var(--bs-warning-light); + background-color: var(--bs-warning-light) !important; +} +.btn-check:checked + .btn.btn-active-light-warning i, +.btn-check:checked + .btn.btn-active-light-warning .svg-icon, .btn-check:active + .btn.btn-active-light-warning i, +.btn-check:active + .btn.btn-active-light-warning .svg-icon, .btn.btn-active-light-warning:focus:not(.btn-active) i, +.btn.btn-active-light-warning:focus:not(.btn-active) .svg-icon, .btn.btn-active-light-warning:hover:not(.btn-active) i, +.btn.btn-active-light-warning:hover:not(.btn-active) .svg-icon, .btn.btn-active-light-warning:active:not(.btn-active) i, +.btn.btn-active-light-warning:active:not(.btn-active) .svg-icon, .btn.btn-active-light-warning.active i, +.btn.btn-active-light-warning.active .svg-icon, .btn.btn-active-light-warning.show i, +.btn.btn-active-light-warning.show .svg-icon, .show > .btn.btn-active-light-warning i, +.show > .btn.btn-active-light-warning .svg-icon { + color: var(--bs-warning); +} +.btn-check:checked + .btn.btn-active-light-warning.dropdown-toggle:after, .btn-check:active + .btn.btn-active-light-warning.dropdown-toggle:after, .btn.btn-active-light-warning:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-warning:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-warning:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-warning.active.dropdown-toggle:after, .btn.btn-active-light-warning.show.dropdown-toggle:after, .show > .btn.btn-active-light-warning.dropdown-toggle:after { + color: var(--bs-warning); +} + +.btn.btn-outline.btn-outline-warning { + color: var(--bs-warning); + border-color: var(--bs-warning); + background-color: transparent; +} +.btn.btn-outline.btn-outline-warning i, +.btn.btn-outline.btn-outline-warning .svg-icon { + color: var(--bs-warning); +} +.btn.btn-outline.btn-outline-warning.dropdown-toggle:after { + color: var(--bs-warning); +} +.btn-check:checked + .btn.btn-outline.btn-outline-warning, .btn-check:active + .btn.btn-outline.btn-outline-warning, .btn.btn-outline.btn-outline-warning:focus:not(.btn-active), .btn.btn-outline.btn-outline-warning:hover:not(.btn-active), .btn.btn-outline.btn-outline-warning:active:not(.btn-active), .btn.btn-outline.btn-outline-warning.active, .btn.btn-outline.btn-outline-warning.show, .show > .btn.btn-outline.btn-outline-warning { + color: var(--bs-warning-active); + border-color: var(--bs-warning); + background-color: var(--bs-warning-light) !important; +} +.btn-check:checked + .btn.btn-outline.btn-outline-warning i, +.btn-check:checked + .btn.btn-outline.btn-outline-warning .svg-icon, .btn-check:active + .btn.btn-outline.btn-outline-warning i, +.btn-check:active + .btn.btn-outline.btn-outline-warning .svg-icon, .btn.btn-outline.btn-outline-warning:focus:not(.btn-active) i, +.btn.btn-outline.btn-outline-warning:focus:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-warning:hover:not(.btn-active) i, +.btn.btn-outline.btn-outline-warning:hover:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-warning:active:not(.btn-active) i, +.btn.btn-outline.btn-outline-warning:active:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-warning.active i, +.btn.btn-outline.btn-outline-warning.active .svg-icon, .btn.btn-outline.btn-outline-warning.show i, +.btn.btn-outline.btn-outline-warning.show .svg-icon, .show > .btn.btn-outline.btn-outline-warning i, +.show > .btn.btn-outline.btn-outline-warning .svg-icon { + color: var(--bs-warning-active); +} +.btn-check:checked + .btn.btn-outline.btn-outline-warning.dropdown-toggle:after, .btn-check:active + .btn.btn-outline.btn-outline-warning.dropdown-toggle:after, .btn.btn-outline.btn-outline-warning:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-warning:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-warning:active:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-warning.active.dropdown-toggle:after, .btn.btn-outline.btn-outline-warning.show.dropdown-toggle:after, .show > .btn.btn-outline.btn-outline-warning.dropdown-toggle:after { + color: var(--bs-warning-active); +} + +.btn.btn-danger { + color: var(--bs-danger-inverse); + border-color: var(--bs-danger); + background-color: var(--bs-danger); +} +.btn.btn-danger i, +.btn.btn-danger .svg-icon { + color: var(--bs-danger-inverse); +} +.btn.btn-danger.dropdown-toggle:after { + color: var(--bs-danger-inverse); +} +.btn-check:checked + .btn.btn-danger, .btn-check:active + .btn.btn-danger, .btn.btn-danger:focus:not(.btn-active), .btn.btn-danger:hover:not(.btn-active), .btn.btn-danger:active:not(.btn-active), .btn.btn-danger.active, .btn.btn-danger.show, .show > .btn.btn-danger { + color: var(--bs-danger-inverse); + border-color: var(--bs-danger-active); + background-color: var(--bs-danger-active) !important; +} +.btn-check:checked + .btn.btn-danger i, +.btn-check:checked + .btn.btn-danger .svg-icon, .btn-check:active + .btn.btn-danger i, +.btn-check:active + .btn.btn-danger .svg-icon, .btn.btn-danger:focus:not(.btn-active) i, +.btn.btn-danger:focus:not(.btn-active) .svg-icon, .btn.btn-danger:hover:not(.btn-active) i, +.btn.btn-danger:hover:not(.btn-active) .svg-icon, .btn.btn-danger:active:not(.btn-active) i, +.btn.btn-danger:active:not(.btn-active) .svg-icon, .btn.btn-danger.active i, +.btn.btn-danger.active .svg-icon, .btn.btn-danger.show i, +.btn.btn-danger.show .svg-icon, .show > .btn.btn-danger i, +.show > .btn.btn-danger .svg-icon { + color: var(--bs-danger-inverse); +} +.btn-check:checked + .btn.btn-danger.dropdown-toggle:after, .btn-check:active + .btn.btn-danger.dropdown-toggle:after, .btn.btn-danger:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-danger:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-danger:active:not(.btn-active).dropdown-toggle:after, .btn.btn-danger.active.dropdown-toggle:after, .btn.btn-danger.show.dropdown-toggle:after, .show > .btn.btn-danger.dropdown-toggle:after { + color: var(--bs-danger-inverse); +} + +.btn.btn-light-danger { + color: var(--bs-danger); + border-color: var(--bs-danger-light); + background-color: var(--bs-danger-light); +} +.btn.btn-light-danger i, +.btn.btn-light-danger .svg-icon { + color: var(--bs-danger); +} +.btn.btn-light-danger.dropdown-toggle:after { + color: var(--bs-danger); +} +.btn-check:checked + .btn.btn-light-danger, .btn-check:active + .btn.btn-light-danger, .btn.btn-light-danger:focus:not(.btn-active), .btn.btn-light-danger:hover:not(.btn-active), .btn.btn-light-danger:active:not(.btn-active), .btn.btn-light-danger.active, .btn.btn-light-danger.show, .show > .btn.btn-light-danger { + color: var(--bs-danger-inverse); + border-color: var(--bs-danger); + background-color: var(--bs-danger) !important; +} +.btn-check:checked + .btn.btn-light-danger i, +.btn-check:checked + .btn.btn-light-danger .svg-icon, .btn-check:active + .btn.btn-light-danger i, +.btn-check:active + .btn.btn-light-danger .svg-icon, .btn.btn-light-danger:focus:not(.btn-active) i, +.btn.btn-light-danger:focus:not(.btn-active) .svg-icon, .btn.btn-light-danger:hover:not(.btn-active) i, +.btn.btn-light-danger:hover:not(.btn-active) .svg-icon, .btn.btn-light-danger:active:not(.btn-active) i, +.btn.btn-light-danger:active:not(.btn-active) .svg-icon, .btn.btn-light-danger.active i, +.btn.btn-light-danger.active .svg-icon, .btn.btn-light-danger.show i, +.btn.btn-light-danger.show .svg-icon, .show > .btn.btn-light-danger i, +.show > .btn.btn-light-danger .svg-icon { + color: var(--bs-danger-inverse); +} +.btn-check:checked + .btn.btn-light-danger.dropdown-toggle:after, .btn-check:active + .btn.btn-light-danger.dropdown-toggle:after, .btn.btn-light-danger:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-light-danger:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-light-danger:active:not(.btn-active).dropdown-toggle:after, .btn.btn-light-danger.active.dropdown-toggle:after, .btn.btn-light-danger.show.dropdown-toggle:after, .show > .btn.btn-light-danger.dropdown-toggle:after { + color: var(--bs-danger-inverse); +} + +.btn.btn-bg-danger { + border-color: var(--bs-danger); + background-color: var(--bs-danger); +} +.btn-check:checked + .btn.btn-active-danger, .btn-check:active + .btn.btn-active-danger, .btn.btn-active-danger:focus:not(.btn-active), .btn.btn-active-danger:hover:not(.btn-active), .btn.btn-active-danger:active:not(.btn-active), .btn.btn-active-danger.active, .btn.btn-active-danger.show, .show > .btn.btn-active-danger { + color: var(--bs-danger-inverse); + border-color: var(--bs-danger); + background-color: var(--bs-danger) !important; +} +.btn-check:checked + .btn.btn-active-danger i, +.btn-check:checked + .btn.btn-active-danger .svg-icon, .btn-check:active + .btn.btn-active-danger i, +.btn-check:active + .btn.btn-active-danger .svg-icon, .btn.btn-active-danger:focus:not(.btn-active) i, +.btn.btn-active-danger:focus:not(.btn-active) .svg-icon, .btn.btn-active-danger:hover:not(.btn-active) i, +.btn.btn-active-danger:hover:not(.btn-active) .svg-icon, .btn.btn-active-danger:active:not(.btn-active) i, +.btn.btn-active-danger:active:not(.btn-active) .svg-icon, .btn.btn-active-danger.active i, +.btn.btn-active-danger.active .svg-icon, .btn.btn-active-danger.show i, +.btn.btn-active-danger.show .svg-icon, .show > .btn.btn-active-danger i, +.show > .btn.btn-active-danger .svg-icon { + color: var(--bs-danger-inverse); +} +.btn-check:checked + .btn.btn-active-danger.dropdown-toggle:after, .btn-check:active + .btn.btn-active-danger.dropdown-toggle:after, .btn.btn-active-danger:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-danger:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-danger:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-danger.active.dropdown-toggle:after, .btn.btn-active-danger.show.dropdown-toggle:after, .show > .btn.btn-active-danger.dropdown-toggle:after { + color: var(--bs-danger-inverse); +} + +.btn-check:checked + .btn.btn-active-light-danger, .btn-check:active + .btn.btn-active-light-danger, .btn.btn-active-light-danger:focus:not(.btn-active), .btn.btn-active-light-danger:hover:not(.btn-active), .btn.btn-active-light-danger:active:not(.btn-active), .btn.btn-active-light-danger.active, .btn.btn-active-light-danger.show, .show > .btn.btn-active-light-danger { + color: var(--bs-danger); + border-color: var(--bs-danger-light); + background-color: var(--bs-danger-light) !important; +} +.btn-check:checked + .btn.btn-active-light-danger i, +.btn-check:checked + .btn.btn-active-light-danger .svg-icon, .btn-check:active + .btn.btn-active-light-danger i, +.btn-check:active + .btn.btn-active-light-danger .svg-icon, .btn.btn-active-light-danger:focus:not(.btn-active) i, +.btn.btn-active-light-danger:focus:not(.btn-active) .svg-icon, .btn.btn-active-light-danger:hover:not(.btn-active) i, +.btn.btn-active-light-danger:hover:not(.btn-active) .svg-icon, .btn.btn-active-light-danger:active:not(.btn-active) i, +.btn.btn-active-light-danger:active:not(.btn-active) .svg-icon, .btn.btn-active-light-danger.active i, +.btn.btn-active-light-danger.active .svg-icon, .btn.btn-active-light-danger.show i, +.btn.btn-active-light-danger.show .svg-icon, .show > .btn.btn-active-light-danger i, +.show > .btn.btn-active-light-danger .svg-icon { + color: var(--bs-danger); +} +.btn-check:checked + .btn.btn-active-light-danger.dropdown-toggle:after, .btn-check:active + .btn.btn-active-light-danger.dropdown-toggle:after, .btn.btn-active-light-danger:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-danger:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-danger:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-danger.active.dropdown-toggle:after, .btn.btn-active-light-danger.show.dropdown-toggle:after, .show > .btn.btn-active-light-danger.dropdown-toggle:after { + color: var(--bs-danger); +} + +.btn.btn-outline.btn-outline-danger { + color: var(--bs-danger); + border-color: var(--bs-danger); + background-color: transparent; +} +.btn.btn-outline.btn-outline-danger i, +.btn.btn-outline.btn-outline-danger .svg-icon { + color: var(--bs-danger); +} +.btn.btn-outline.btn-outline-danger.dropdown-toggle:after { + color: var(--bs-danger); +} +.btn-check:checked + .btn.btn-outline.btn-outline-danger, .btn-check:active + .btn.btn-outline.btn-outline-danger, .btn.btn-outline.btn-outline-danger:focus:not(.btn-active), .btn.btn-outline.btn-outline-danger:hover:not(.btn-active), .btn.btn-outline.btn-outline-danger:active:not(.btn-active), .btn.btn-outline.btn-outline-danger.active, .btn.btn-outline.btn-outline-danger.show, .show > .btn.btn-outline.btn-outline-danger { + color: var(--bs-danger-active); + border-color: var(--bs-danger); + background-color: var(--bs-danger-light) !important; +} +.btn-check:checked + .btn.btn-outline.btn-outline-danger i, +.btn-check:checked + .btn.btn-outline.btn-outline-danger .svg-icon, .btn-check:active + .btn.btn-outline.btn-outline-danger i, +.btn-check:active + .btn.btn-outline.btn-outline-danger .svg-icon, .btn.btn-outline.btn-outline-danger:focus:not(.btn-active) i, +.btn.btn-outline.btn-outline-danger:focus:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-danger:hover:not(.btn-active) i, +.btn.btn-outline.btn-outline-danger:hover:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-danger:active:not(.btn-active) i, +.btn.btn-outline.btn-outline-danger:active:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-danger.active i, +.btn.btn-outline.btn-outline-danger.active .svg-icon, .btn.btn-outline.btn-outline-danger.show i, +.btn.btn-outline.btn-outline-danger.show .svg-icon, .show > .btn.btn-outline.btn-outline-danger i, +.show > .btn.btn-outline.btn-outline-danger .svg-icon { + color: var(--bs-danger-active); +} +.btn-check:checked + .btn.btn-outline.btn-outline-danger.dropdown-toggle:after, .btn-check:active + .btn.btn-outline.btn-outline-danger.dropdown-toggle:after, .btn.btn-outline.btn-outline-danger:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-danger:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-danger:active:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-danger.active.dropdown-toggle:after, .btn.btn-outline.btn-outline-danger.show.dropdown-toggle:after, .show > .btn.btn-outline.btn-outline-danger.dropdown-toggle:after { + color: var(--bs-danger-active); +} + +.btn.btn-dark { + color: var(--bs-dark-inverse); + border-color: var(--bs-dark); + background-color: var(--bs-dark); +} +.btn.btn-dark i, +.btn.btn-dark .svg-icon { + color: var(--bs-dark-inverse); +} +.btn.btn-dark.dropdown-toggle:after { + color: var(--bs-dark-inverse); +} +.btn-check:checked + .btn.btn-dark, .btn-check:active + .btn.btn-dark, .btn.btn-dark:focus:not(.btn-active), .btn.btn-dark:hover:not(.btn-active), .btn.btn-dark:active:not(.btn-active), .btn.btn-dark.active, .btn.btn-dark.show, .show > .btn.btn-dark { + color: var(--bs-dark-inverse); + border-color: var(--bs-dark-active); + background-color: var(--bs-dark-active) !important; +} +.btn-check:checked + .btn.btn-dark i, +.btn-check:checked + .btn.btn-dark .svg-icon, .btn-check:active + .btn.btn-dark i, +.btn-check:active + .btn.btn-dark .svg-icon, .btn.btn-dark:focus:not(.btn-active) i, +.btn.btn-dark:focus:not(.btn-active) .svg-icon, .btn.btn-dark:hover:not(.btn-active) i, +.btn.btn-dark:hover:not(.btn-active) .svg-icon, .btn.btn-dark:active:not(.btn-active) i, +.btn.btn-dark:active:not(.btn-active) .svg-icon, .btn.btn-dark.active i, +.btn.btn-dark.active .svg-icon, .btn.btn-dark.show i, +.btn.btn-dark.show .svg-icon, .show > .btn.btn-dark i, +.show > .btn.btn-dark .svg-icon { + color: var(--bs-dark-inverse); +} +.btn-check:checked + .btn.btn-dark.dropdown-toggle:after, .btn-check:active + .btn.btn-dark.dropdown-toggle:after, .btn.btn-dark:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-dark:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-dark:active:not(.btn-active).dropdown-toggle:after, .btn.btn-dark.active.dropdown-toggle:after, .btn.btn-dark.show.dropdown-toggle:after, .show > .btn.btn-dark.dropdown-toggle:after { + color: var(--bs-dark-inverse); +} + +.btn.btn-light-dark { + color: var(--bs-dark); + border-color: var(--bs-dark-light); + background-color: var(--bs-dark-light); +} +.btn.btn-light-dark i, +.btn.btn-light-dark .svg-icon { + color: var(--bs-dark); +} +.btn.btn-light-dark.dropdown-toggle:after { + color: var(--bs-dark); +} +.btn-check:checked + .btn.btn-light-dark, .btn-check:active + .btn.btn-light-dark, .btn.btn-light-dark:focus:not(.btn-active), .btn.btn-light-dark:hover:not(.btn-active), .btn.btn-light-dark:active:not(.btn-active), .btn.btn-light-dark.active, .btn.btn-light-dark.show, .show > .btn.btn-light-dark { + color: var(--bs-dark-inverse); + border-color: var(--bs-dark); + background-color: var(--bs-dark) !important; +} +.btn-check:checked + .btn.btn-light-dark i, +.btn-check:checked + .btn.btn-light-dark .svg-icon, .btn-check:active + .btn.btn-light-dark i, +.btn-check:active + .btn.btn-light-dark .svg-icon, .btn.btn-light-dark:focus:not(.btn-active) i, +.btn.btn-light-dark:focus:not(.btn-active) .svg-icon, .btn.btn-light-dark:hover:not(.btn-active) i, +.btn.btn-light-dark:hover:not(.btn-active) .svg-icon, .btn.btn-light-dark:active:not(.btn-active) i, +.btn.btn-light-dark:active:not(.btn-active) .svg-icon, .btn.btn-light-dark.active i, +.btn.btn-light-dark.active .svg-icon, .btn.btn-light-dark.show i, +.btn.btn-light-dark.show .svg-icon, .show > .btn.btn-light-dark i, +.show > .btn.btn-light-dark .svg-icon { + color: var(--bs-dark-inverse); +} +.btn-check:checked + .btn.btn-light-dark.dropdown-toggle:after, .btn-check:active + .btn.btn-light-dark.dropdown-toggle:after, .btn.btn-light-dark:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-light-dark:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-light-dark:active:not(.btn-active).dropdown-toggle:after, .btn.btn-light-dark.active.dropdown-toggle:after, .btn.btn-light-dark.show.dropdown-toggle:after, .show > .btn.btn-light-dark.dropdown-toggle:after { + color: var(--bs-dark-inverse); +} + +.btn.btn-bg-dark { + border-color: var(--bs-dark); + background-color: var(--bs-dark); +} +.btn-check:checked + .btn.btn-active-dark, .btn-check:active + .btn.btn-active-dark, .btn.btn-active-dark:focus:not(.btn-active), .btn.btn-active-dark:hover:not(.btn-active), .btn.btn-active-dark:active:not(.btn-active), .btn.btn-active-dark.active, .btn.btn-active-dark.show, .show > .btn.btn-active-dark { + color: var(--bs-dark-inverse); + border-color: var(--bs-dark); + background-color: var(--bs-dark) !important; +} +.btn-check:checked + .btn.btn-active-dark i, +.btn-check:checked + .btn.btn-active-dark .svg-icon, .btn-check:active + .btn.btn-active-dark i, +.btn-check:active + .btn.btn-active-dark .svg-icon, .btn.btn-active-dark:focus:not(.btn-active) i, +.btn.btn-active-dark:focus:not(.btn-active) .svg-icon, .btn.btn-active-dark:hover:not(.btn-active) i, +.btn.btn-active-dark:hover:not(.btn-active) .svg-icon, .btn.btn-active-dark:active:not(.btn-active) i, +.btn.btn-active-dark:active:not(.btn-active) .svg-icon, .btn.btn-active-dark.active i, +.btn.btn-active-dark.active .svg-icon, .btn.btn-active-dark.show i, +.btn.btn-active-dark.show .svg-icon, .show > .btn.btn-active-dark i, +.show > .btn.btn-active-dark .svg-icon { + color: var(--bs-dark-inverse); +} +.btn-check:checked + .btn.btn-active-dark.dropdown-toggle:after, .btn-check:active + .btn.btn-active-dark.dropdown-toggle:after, .btn.btn-active-dark:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-dark:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-dark:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-dark.active.dropdown-toggle:after, .btn.btn-active-dark.show.dropdown-toggle:after, .show > .btn.btn-active-dark.dropdown-toggle:after { + color: var(--bs-dark-inverse); +} + +.btn-check:checked + .btn.btn-active-light-dark, .btn-check:active + .btn.btn-active-light-dark, .btn.btn-active-light-dark:focus:not(.btn-active), .btn.btn-active-light-dark:hover:not(.btn-active), .btn.btn-active-light-dark:active:not(.btn-active), .btn.btn-active-light-dark.active, .btn.btn-active-light-dark.show, .show > .btn.btn-active-light-dark { + color: var(--bs-dark); + border-color: var(--bs-dark-light); + background-color: var(--bs-dark-light) !important; +} +.btn-check:checked + .btn.btn-active-light-dark i, +.btn-check:checked + .btn.btn-active-light-dark .svg-icon, .btn-check:active + .btn.btn-active-light-dark i, +.btn-check:active + .btn.btn-active-light-dark .svg-icon, .btn.btn-active-light-dark:focus:not(.btn-active) i, +.btn.btn-active-light-dark:focus:not(.btn-active) .svg-icon, .btn.btn-active-light-dark:hover:not(.btn-active) i, +.btn.btn-active-light-dark:hover:not(.btn-active) .svg-icon, .btn.btn-active-light-dark:active:not(.btn-active) i, +.btn.btn-active-light-dark:active:not(.btn-active) .svg-icon, .btn.btn-active-light-dark.active i, +.btn.btn-active-light-dark.active .svg-icon, .btn.btn-active-light-dark.show i, +.btn.btn-active-light-dark.show .svg-icon, .show > .btn.btn-active-light-dark i, +.show > .btn.btn-active-light-dark .svg-icon { + color: var(--bs-dark); +} +.btn-check:checked + .btn.btn-active-light-dark.dropdown-toggle:after, .btn-check:active + .btn.btn-active-light-dark.dropdown-toggle:after, .btn.btn-active-light-dark:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-dark:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-dark:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-light-dark.active.dropdown-toggle:after, .btn.btn-active-light-dark.show.dropdown-toggle:after, .show > .btn.btn-active-light-dark.dropdown-toggle:after { + color: var(--bs-dark); +} + +.btn.btn-outline.btn-outline-dark { + color: var(--bs-dark); + border-color: var(--bs-dark); + background-color: transparent; +} +.btn.btn-outline.btn-outline-dark i, +.btn.btn-outline.btn-outline-dark .svg-icon { + color: var(--bs-dark); +} +.btn.btn-outline.btn-outline-dark.dropdown-toggle:after { + color: var(--bs-dark); +} +.btn-check:checked + .btn.btn-outline.btn-outline-dark, .btn-check:active + .btn.btn-outline.btn-outline-dark, .btn.btn-outline.btn-outline-dark:focus:not(.btn-active), .btn.btn-outline.btn-outline-dark:hover:not(.btn-active), .btn.btn-outline.btn-outline-dark:active:not(.btn-active), .btn.btn-outline.btn-outline-dark.active, .btn.btn-outline.btn-outline-dark.show, .show > .btn.btn-outline.btn-outline-dark { + color: var(--bs-dark-active); + border-color: var(--bs-dark); + background-color: var(--bs-dark-light) !important; +} +.btn-check:checked + .btn.btn-outline.btn-outline-dark i, +.btn-check:checked + .btn.btn-outline.btn-outline-dark .svg-icon, .btn-check:active + .btn.btn-outline.btn-outline-dark i, +.btn-check:active + .btn.btn-outline.btn-outline-dark .svg-icon, .btn.btn-outline.btn-outline-dark:focus:not(.btn-active) i, +.btn.btn-outline.btn-outline-dark:focus:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-dark:hover:not(.btn-active) i, +.btn.btn-outline.btn-outline-dark:hover:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-dark:active:not(.btn-active) i, +.btn.btn-outline.btn-outline-dark:active:not(.btn-active) .svg-icon, .btn.btn-outline.btn-outline-dark.active i, +.btn.btn-outline.btn-outline-dark.active .svg-icon, .btn.btn-outline.btn-outline-dark.show i, +.btn.btn-outline.btn-outline-dark.show .svg-icon, .show > .btn.btn-outline.btn-outline-dark i, +.show > .btn.btn-outline.btn-outline-dark .svg-icon { + color: var(--bs-dark-active); +} +.btn-check:checked + .btn.btn-outline.btn-outline-dark.dropdown-toggle:after, .btn-check:active + .btn.btn-outline.btn-outline-dark.dropdown-toggle:after, .btn.btn-outline.btn-outline-dark:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-dark:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-dark:active:not(.btn-active).dropdown-toggle:after, .btn.btn-outline.btn-outline-dark.active.dropdown-toggle:after, .btn.btn-outline.btn-outline-dark.show.dropdown-toggle:after, .show > .btn.btn-outline.btn-outline-dark.dropdown-toggle:after { + color: var(--bs-dark-active); +} + +.btn.btn-color-white { + color: var(--bs-text-white); +} +.btn.btn-color-white i, +.btn.btn-color-white .svg-icon { + color: var(--bs-text-white); +} +.btn.btn-color-white.dropdown-toggle:after { + color: var(--bs-text-white); +} +.btn-check:checked + .btn.btn-active-color-white, .btn-check:active + .btn.btn-active-color-white, .btn.btn-active-color-white:focus:not(.btn-active), .btn.btn-active-color-white:hover:not(.btn-active), .btn.btn-active-color-white:active:not(.btn-active), .btn.btn-active-color-white.active, .btn.btn-active-color-white.show, .show > .btn.btn-active-color-white { + color: var(--bs-text-white); +} +.btn-check:checked + .btn.btn-active-color-white i, +.btn-check:checked + .btn.btn-active-color-white .svg-icon, .btn-check:active + .btn.btn-active-color-white i, +.btn-check:active + .btn.btn-active-color-white .svg-icon, .btn.btn-active-color-white:focus:not(.btn-active) i, +.btn.btn-active-color-white:focus:not(.btn-active) .svg-icon, .btn.btn-active-color-white:hover:not(.btn-active) i, +.btn.btn-active-color-white:hover:not(.btn-active) .svg-icon, .btn.btn-active-color-white:active:not(.btn-active) i, +.btn.btn-active-color-white:active:not(.btn-active) .svg-icon, .btn.btn-active-color-white.active i, +.btn.btn-active-color-white.active .svg-icon, .btn.btn-active-color-white.show i, +.btn.btn-active-color-white.show .svg-icon, .show > .btn.btn-active-color-white i, +.show > .btn.btn-active-color-white .svg-icon { + color: var(--bs-text-white); +} +.btn-check:checked + .btn.btn-active-color-white.dropdown-toggle:after, .btn-check:active + .btn.btn-active-color-white.dropdown-toggle:after, .btn.btn-active-color-white:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-white:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-white:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-white.active.dropdown-toggle:after, .btn.btn-active-color-white.show.dropdown-toggle:after, .show > .btn.btn-active-color-white.dropdown-toggle:after { + color: var(--bs-text-white); +} + +.btn.btn-icon-white i, +.btn.btn-icon-white .svg-icon { + color: var(--bs-text-white); +} +.btn.btn-icon-white.dropdown-toggle:after { + color: var(--bs-text-white); +} +.btn-check:checked + .btn.btn-active-icon-white i, +.btn-check:checked + .btn.btn-active-icon-white .svg-icon, .btn-check:active + .btn.btn-active-icon-white i, +.btn-check:active + .btn.btn-active-icon-white .svg-icon, .btn.btn-active-icon-white:focus:not(.btn-active) i, +.btn.btn-active-icon-white:focus:not(.btn-active) .svg-icon, .btn.btn-active-icon-white:hover:not(.btn-active) i, +.btn.btn-active-icon-white:hover:not(.btn-active) .svg-icon, .btn.btn-active-icon-white:active:not(.btn-active) i, +.btn.btn-active-icon-white:active:not(.btn-active) .svg-icon, .btn.btn-active-icon-white.active i, +.btn.btn-active-icon-white.active .svg-icon, .btn.btn-active-icon-white.show i, +.btn.btn-active-icon-white.show .svg-icon, .show > .btn.btn-active-icon-white i, +.show > .btn.btn-active-icon-white .svg-icon { + color: var(--bs-text-white); +} +.btn-check:checked + .btn.btn-active-icon-white.dropdown-toggle:after, .btn-check:active + .btn.btn-active-icon-white.dropdown-toggle:after, .btn.btn-active-icon-white:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-white:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-white:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-white.active.dropdown-toggle:after, .btn.btn-active-icon-white.show.dropdown-toggle:after, .show > .btn.btn-active-icon-white.dropdown-toggle:after { + color: var(--bs-text-white); +} + +.btn.btn-text-white { + color: var(--bs-text-white); +} +.btn-check:checked + .btn.btn-active-text-white, .btn-check:active + .btn.btn-active-text-white, .btn.btn-active-text-white:focus:not(.btn-active), .btn.btn-active-text-white:hover:not(.btn-active), .btn.btn-active-text-white:active:not(.btn-active), .btn.btn-active-text-white.active, .btn.btn-active-text-white.show, .show > .btn.btn-active-text-white { + color: var(--bs-text-white); +} + +.btn.btn-color-primary { + color: var(--bs-text-primary); +} +.btn.btn-color-primary i, +.btn.btn-color-primary .svg-icon { + color: var(--bs-text-primary); +} +.btn.btn-color-primary.dropdown-toggle:after { + color: var(--bs-text-primary); +} +.btn-check:checked + .btn.btn-active-color-primary, .btn-check:active + .btn.btn-active-color-primary, .btn.btn-active-color-primary:focus:not(.btn-active), .btn.btn-active-color-primary:hover:not(.btn-active), .btn.btn-active-color-primary:active:not(.btn-active), .btn.btn-active-color-primary.active, .btn.btn-active-color-primary.show, .show > .btn.btn-active-color-primary { + color: var(--bs-text-primary); +} +.btn-check:checked + .btn.btn-active-color-primary i, +.btn-check:checked + .btn.btn-active-color-primary .svg-icon, .btn-check:active + .btn.btn-active-color-primary i, +.btn-check:active + .btn.btn-active-color-primary .svg-icon, .btn.btn-active-color-primary:focus:not(.btn-active) i, +.btn.btn-active-color-primary:focus:not(.btn-active) .svg-icon, .btn.btn-active-color-primary:hover:not(.btn-active) i, +.btn.btn-active-color-primary:hover:not(.btn-active) .svg-icon, .btn.btn-active-color-primary:active:not(.btn-active) i, +.btn.btn-active-color-primary:active:not(.btn-active) .svg-icon, .btn.btn-active-color-primary.active i, +.btn.btn-active-color-primary.active .svg-icon, .btn.btn-active-color-primary.show i, +.btn.btn-active-color-primary.show .svg-icon, .show > .btn.btn-active-color-primary i, +.show > .btn.btn-active-color-primary .svg-icon { + color: var(--bs-text-primary); +} +.btn-check:checked + .btn.btn-active-color-primary.dropdown-toggle:after, .btn-check:active + .btn.btn-active-color-primary.dropdown-toggle:after, .btn.btn-active-color-primary:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-primary:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-primary:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-primary.active.dropdown-toggle:after, .btn.btn-active-color-primary.show.dropdown-toggle:after, .show > .btn.btn-active-color-primary.dropdown-toggle:after { + color: var(--bs-text-primary); +} + +.btn.btn-icon-primary i, +.btn.btn-icon-primary .svg-icon { + color: var(--bs-text-primary); +} +.btn.btn-icon-primary.dropdown-toggle:after { + color: var(--bs-text-primary); +} +.btn-check:checked + .btn.btn-active-icon-primary i, +.btn-check:checked + .btn.btn-active-icon-primary .svg-icon, .btn-check:active + .btn.btn-active-icon-primary i, +.btn-check:active + .btn.btn-active-icon-primary .svg-icon, .btn.btn-active-icon-primary:focus:not(.btn-active) i, +.btn.btn-active-icon-primary:focus:not(.btn-active) .svg-icon, .btn.btn-active-icon-primary:hover:not(.btn-active) i, +.btn.btn-active-icon-primary:hover:not(.btn-active) .svg-icon, .btn.btn-active-icon-primary:active:not(.btn-active) i, +.btn.btn-active-icon-primary:active:not(.btn-active) .svg-icon, .btn.btn-active-icon-primary.active i, +.btn.btn-active-icon-primary.active .svg-icon, .btn.btn-active-icon-primary.show i, +.btn.btn-active-icon-primary.show .svg-icon, .show > .btn.btn-active-icon-primary i, +.show > .btn.btn-active-icon-primary .svg-icon { + color: var(--bs-text-primary); +} +.btn-check:checked + .btn.btn-active-icon-primary.dropdown-toggle:after, .btn-check:active + .btn.btn-active-icon-primary.dropdown-toggle:after, .btn.btn-active-icon-primary:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-primary:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-primary:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-primary.active.dropdown-toggle:after, .btn.btn-active-icon-primary.show.dropdown-toggle:after, .show > .btn.btn-active-icon-primary.dropdown-toggle:after { + color: var(--bs-text-primary); +} + +.btn.btn-text-primary { + color: var(--bs-text-primary); +} +.btn-check:checked + .btn.btn-active-text-primary, .btn-check:active + .btn.btn-active-text-primary, .btn.btn-active-text-primary:focus:not(.btn-active), .btn.btn-active-text-primary:hover:not(.btn-active), .btn.btn-active-text-primary:active:not(.btn-active), .btn.btn-active-text-primary.active, .btn.btn-active-text-primary.show, .show > .btn.btn-active-text-primary { + color: var(--bs-text-primary); +} + +.btn.btn-color-secondary { + color: var(--bs-text-secondary); +} +.btn.btn-color-secondary i, +.btn.btn-color-secondary .svg-icon { + color: var(--bs-text-secondary); +} +.btn.btn-color-secondary.dropdown-toggle:after { + color: var(--bs-text-secondary); +} +.btn-check:checked + .btn.btn-active-color-secondary, .btn-check:active + .btn.btn-active-color-secondary, .btn.btn-active-color-secondary:focus:not(.btn-active), .btn.btn-active-color-secondary:hover:not(.btn-active), .btn.btn-active-color-secondary:active:not(.btn-active), .btn.btn-active-color-secondary.active, .btn.btn-active-color-secondary.show, .show > .btn.btn-active-color-secondary { + color: var(--bs-text-secondary); +} +.btn-check:checked + .btn.btn-active-color-secondary i, +.btn-check:checked + .btn.btn-active-color-secondary .svg-icon, .btn-check:active + .btn.btn-active-color-secondary i, +.btn-check:active + .btn.btn-active-color-secondary .svg-icon, .btn.btn-active-color-secondary:focus:not(.btn-active) i, +.btn.btn-active-color-secondary:focus:not(.btn-active) .svg-icon, .btn.btn-active-color-secondary:hover:not(.btn-active) i, +.btn.btn-active-color-secondary:hover:not(.btn-active) .svg-icon, .btn.btn-active-color-secondary:active:not(.btn-active) i, +.btn.btn-active-color-secondary:active:not(.btn-active) .svg-icon, .btn.btn-active-color-secondary.active i, +.btn.btn-active-color-secondary.active .svg-icon, .btn.btn-active-color-secondary.show i, +.btn.btn-active-color-secondary.show .svg-icon, .show > .btn.btn-active-color-secondary i, +.show > .btn.btn-active-color-secondary .svg-icon { + color: var(--bs-text-secondary); +} +.btn-check:checked + .btn.btn-active-color-secondary.dropdown-toggle:after, .btn-check:active + .btn.btn-active-color-secondary.dropdown-toggle:after, .btn.btn-active-color-secondary:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-secondary:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-secondary:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-secondary.active.dropdown-toggle:after, .btn.btn-active-color-secondary.show.dropdown-toggle:after, .show > .btn.btn-active-color-secondary.dropdown-toggle:after { + color: var(--bs-text-secondary); +} + +.btn.btn-icon-secondary i, +.btn.btn-icon-secondary .svg-icon { + color: var(--bs-text-secondary); +} +.btn.btn-icon-secondary.dropdown-toggle:after { + color: var(--bs-text-secondary); +} +.btn-check:checked + .btn.btn-active-icon-secondary i, +.btn-check:checked + .btn.btn-active-icon-secondary .svg-icon, .btn-check:active + .btn.btn-active-icon-secondary i, +.btn-check:active + .btn.btn-active-icon-secondary .svg-icon, .btn.btn-active-icon-secondary:focus:not(.btn-active) i, +.btn.btn-active-icon-secondary:focus:not(.btn-active) .svg-icon, .btn.btn-active-icon-secondary:hover:not(.btn-active) i, +.btn.btn-active-icon-secondary:hover:not(.btn-active) .svg-icon, .btn.btn-active-icon-secondary:active:not(.btn-active) i, +.btn.btn-active-icon-secondary:active:not(.btn-active) .svg-icon, .btn.btn-active-icon-secondary.active i, +.btn.btn-active-icon-secondary.active .svg-icon, .btn.btn-active-icon-secondary.show i, +.btn.btn-active-icon-secondary.show .svg-icon, .show > .btn.btn-active-icon-secondary i, +.show > .btn.btn-active-icon-secondary .svg-icon { + color: var(--bs-text-secondary); +} +.btn-check:checked + .btn.btn-active-icon-secondary.dropdown-toggle:after, .btn-check:active + .btn.btn-active-icon-secondary.dropdown-toggle:after, .btn.btn-active-icon-secondary:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-secondary:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-secondary:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-secondary.active.dropdown-toggle:after, .btn.btn-active-icon-secondary.show.dropdown-toggle:after, .show > .btn.btn-active-icon-secondary.dropdown-toggle:after { + color: var(--bs-text-secondary); +} + +.btn.btn-text-secondary { + color: var(--bs-text-secondary); +} +.btn-check:checked + .btn.btn-active-text-secondary, .btn-check:active + .btn.btn-active-text-secondary, .btn.btn-active-text-secondary:focus:not(.btn-active), .btn.btn-active-text-secondary:hover:not(.btn-active), .btn.btn-active-text-secondary:active:not(.btn-active), .btn.btn-active-text-secondary.active, .btn.btn-active-text-secondary.show, .show > .btn.btn-active-text-secondary { + color: var(--bs-text-secondary); +} + +.btn.btn-color-light { + color: var(--bs-text-light); +} +.btn.btn-color-light i, +.btn.btn-color-light .svg-icon { + color: var(--bs-text-light); +} +.btn.btn-color-light.dropdown-toggle:after { + color: var(--bs-text-light); +} +.btn-check:checked + .btn.btn-active-color-light, .btn-check:active + .btn.btn-active-color-light, .btn.btn-active-color-light:focus:not(.btn-active), .btn.btn-active-color-light:hover:not(.btn-active), .btn.btn-active-color-light:active:not(.btn-active), .btn.btn-active-color-light.active, .btn.btn-active-color-light.show, .show > .btn.btn-active-color-light { + color: var(--bs-text-light); +} +.btn-check:checked + .btn.btn-active-color-light i, +.btn-check:checked + .btn.btn-active-color-light .svg-icon, .btn-check:active + .btn.btn-active-color-light i, +.btn-check:active + .btn.btn-active-color-light .svg-icon, .btn.btn-active-color-light:focus:not(.btn-active) i, +.btn.btn-active-color-light:focus:not(.btn-active) .svg-icon, .btn.btn-active-color-light:hover:not(.btn-active) i, +.btn.btn-active-color-light:hover:not(.btn-active) .svg-icon, .btn.btn-active-color-light:active:not(.btn-active) i, +.btn.btn-active-color-light:active:not(.btn-active) .svg-icon, .btn.btn-active-color-light.active i, +.btn.btn-active-color-light.active .svg-icon, .btn.btn-active-color-light.show i, +.btn.btn-active-color-light.show .svg-icon, .show > .btn.btn-active-color-light i, +.show > .btn.btn-active-color-light .svg-icon { + color: var(--bs-text-light); +} +.btn-check:checked + .btn.btn-active-color-light.dropdown-toggle:after, .btn-check:active + .btn.btn-active-color-light.dropdown-toggle:after, .btn.btn-active-color-light:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-light:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-light:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-light.active.dropdown-toggle:after, .btn.btn-active-color-light.show.dropdown-toggle:after, .show > .btn.btn-active-color-light.dropdown-toggle:after { + color: var(--bs-text-light); +} + +.btn.btn-icon-light i, +.btn.btn-icon-light .svg-icon { + color: var(--bs-text-light); +} +.btn.btn-icon-light.dropdown-toggle:after { + color: var(--bs-text-light); +} +.btn-check:checked + .btn.btn-active-icon-light i, +.btn-check:checked + .btn.btn-active-icon-light .svg-icon, .btn-check:active + .btn.btn-active-icon-light i, +.btn-check:active + .btn.btn-active-icon-light .svg-icon, .btn.btn-active-icon-light:focus:not(.btn-active) i, +.btn.btn-active-icon-light:focus:not(.btn-active) .svg-icon, .btn.btn-active-icon-light:hover:not(.btn-active) i, +.btn.btn-active-icon-light:hover:not(.btn-active) .svg-icon, .btn.btn-active-icon-light:active:not(.btn-active) i, +.btn.btn-active-icon-light:active:not(.btn-active) .svg-icon, .btn.btn-active-icon-light.active i, +.btn.btn-active-icon-light.active .svg-icon, .btn.btn-active-icon-light.show i, +.btn.btn-active-icon-light.show .svg-icon, .show > .btn.btn-active-icon-light i, +.show > .btn.btn-active-icon-light .svg-icon { + color: var(--bs-text-light); +} +.btn-check:checked + .btn.btn-active-icon-light.dropdown-toggle:after, .btn-check:active + .btn.btn-active-icon-light.dropdown-toggle:after, .btn.btn-active-icon-light:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-light:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-light:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-light.active.dropdown-toggle:after, .btn.btn-active-icon-light.show.dropdown-toggle:after, .show > .btn.btn-active-icon-light.dropdown-toggle:after { + color: var(--bs-text-light); +} + +.btn.btn-text-light { + color: var(--bs-text-light); +} +.btn-check:checked + .btn.btn-active-text-light, .btn-check:active + .btn.btn-active-text-light, .btn.btn-active-text-light:focus:not(.btn-active), .btn.btn-active-text-light:hover:not(.btn-active), .btn.btn-active-text-light:active:not(.btn-active), .btn.btn-active-text-light.active, .btn.btn-active-text-light.show, .show > .btn.btn-active-text-light { + color: var(--bs-text-light); +} + +.btn.btn-color-success { + color: var(--bs-text-success); +} +.btn.btn-color-success i, +.btn.btn-color-success .svg-icon { + color: var(--bs-text-success); +} +.btn.btn-color-success.dropdown-toggle:after { + color: var(--bs-text-success); +} +.btn-check:checked + .btn.btn-active-color-success, .btn-check:active + .btn.btn-active-color-success, .btn.btn-active-color-success:focus:not(.btn-active), .btn.btn-active-color-success:hover:not(.btn-active), .btn.btn-active-color-success:active:not(.btn-active), .btn.btn-active-color-success.active, .btn.btn-active-color-success.show, .show > .btn.btn-active-color-success { + color: var(--bs-text-success); +} +.btn-check:checked + .btn.btn-active-color-success i, +.btn-check:checked + .btn.btn-active-color-success .svg-icon, .btn-check:active + .btn.btn-active-color-success i, +.btn-check:active + .btn.btn-active-color-success .svg-icon, .btn.btn-active-color-success:focus:not(.btn-active) i, +.btn.btn-active-color-success:focus:not(.btn-active) .svg-icon, .btn.btn-active-color-success:hover:not(.btn-active) i, +.btn.btn-active-color-success:hover:not(.btn-active) .svg-icon, .btn.btn-active-color-success:active:not(.btn-active) i, +.btn.btn-active-color-success:active:not(.btn-active) .svg-icon, .btn.btn-active-color-success.active i, +.btn.btn-active-color-success.active .svg-icon, .btn.btn-active-color-success.show i, +.btn.btn-active-color-success.show .svg-icon, .show > .btn.btn-active-color-success i, +.show > .btn.btn-active-color-success .svg-icon { + color: var(--bs-text-success); +} +.btn-check:checked + .btn.btn-active-color-success.dropdown-toggle:after, .btn-check:active + .btn.btn-active-color-success.dropdown-toggle:after, .btn.btn-active-color-success:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-success:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-success:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-success.active.dropdown-toggle:after, .btn.btn-active-color-success.show.dropdown-toggle:after, .show > .btn.btn-active-color-success.dropdown-toggle:after { + color: var(--bs-text-success); +} + +.btn.btn-icon-success i, +.btn.btn-icon-success .svg-icon { + color: var(--bs-text-success); +} +.btn.btn-icon-success.dropdown-toggle:after { + color: var(--bs-text-success); +} +.btn-check:checked + .btn.btn-active-icon-success i, +.btn-check:checked + .btn.btn-active-icon-success .svg-icon, .btn-check:active + .btn.btn-active-icon-success i, +.btn-check:active + .btn.btn-active-icon-success .svg-icon, .btn.btn-active-icon-success:focus:not(.btn-active) i, +.btn.btn-active-icon-success:focus:not(.btn-active) .svg-icon, .btn.btn-active-icon-success:hover:not(.btn-active) i, +.btn.btn-active-icon-success:hover:not(.btn-active) .svg-icon, .btn.btn-active-icon-success:active:not(.btn-active) i, +.btn.btn-active-icon-success:active:not(.btn-active) .svg-icon, .btn.btn-active-icon-success.active i, +.btn.btn-active-icon-success.active .svg-icon, .btn.btn-active-icon-success.show i, +.btn.btn-active-icon-success.show .svg-icon, .show > .btn.btn-active-icon-success i, +.show > .btn.btn-active-icon-success .svg-icon { + color: var(--bs-text-success); +} +.btn-check:checked + .btn.btn-active-icon-success.dropdown-toggle:after, .btn-check:active + .btn.btn-active-icon-success.dropdown-toggle:after, .btn.btn-active-icon-success:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-success:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-success:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-success.active.dropdown-toggle:after, .btn.btn-active-icon-success.show.dropdown-toggle:after, .show > .btn.btn-active-icon-success.dropdown-toggle:after { + color: var(--bs-text-success); +} + +.btn.btn-text-success { + color: var(--bs-text-success); +} +.btn-check:checked + .btn.btn-active-text-success, .btn-check:active + .btn.btn-active-text-success, .btn.btn-active-text-success:focus:not(.btn-active), .btn.btn-active-text-success:hover:not(.btn-active), .btn.btn-active-text-success:active:not(.btn-active), .btn.btn-active-text-success.active, .btn.btn-active-text-success.show, .show > .btn.btn-active-text-success { + color: var(--bs-text-success); +} + +.btn.btn-color-info { + color: var(--bs-text-info); +} +.btn.btn-color-info i, +.btn.btn-color-info .svg-icon { + color: var(--bs-text-info); +} +.btn.btn-color-info.dropdown-toggle:after { + color: var(--bs-text-info); +} +.btn-check:checked + .btn.btn-active-color-info, .btn-check:active + .btn.btn-active-color-info, .btn.btn-active-color-info:focus:not(.btn-active), .btn.btn-active-color-info:hover:not(.btn-active), .btn.btn-active-color-info:active:not(.btn-active), .btn.btn-active-color-info.active, .btn.btn-active-color-info.show, .show > .btn.btn-active-color-info { + color: var(--bs-text-info); +} +.btn-check:checked + .btn.btn-active-color-info i, +.btn-check:checked + .btn.btn-active-color-info .svg-icon, .btn-check:active + .btn.btn-active-color-info i, +.btn-check:active + .btn.btn-active-color-info .svg-icon, .btn.btn-active-color-info:focus:not(.btn-active) i, +.btn.btn-active-color-info:focus:not(.btn-active) .svg-icon, .btn.btn-active-color-info:hover:not(.btn-active) i, +.btn.btn-active-color-info:hover:not(.btn-active) .svg-icon, .btn.btn-active-color-info:active:not(.btn-active) i, +.btn.btn-active-color-info:active:not(.btn-active) .svg-icon, .btn.btn-active-color-info.active i, +.btn.btn-active-color-info.active .svg-icon, .btn.btn-active-color-info.show i, +.btn.btn-active-color-info.show .svg-icon, .show > .btn.btn-active-color-info i, +.show > .btn.btn-active-color-info .svg-icon { + color: var(--bs-text-info); +} +.btn-check:checked + .btn.btn-active-color-info.dropdown-toggle:after, .btn-check:active + .btn.btn-active-color-info.dropdown-toggle:after, .btn.btn-active-color-info:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-info:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-info:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-info.active.dropdown-toggle:after, .btn.btn-active-color-info.show.dropdown-toggle:after, .show > .btn.btn-active-color-info.dropdown-toggle:after { + color: var(--bs-text-info); +} + +.btn.btn-icon-info i, +.btn.btn-icon-info .svg-icon { + color: var(--bs-text-info); +} +.btn.btn-icon-info.dropdown-toggle:after { + color: var(--bs-text-info); +} +.btn-check:checked + .btn.btn-active-icon-info i, +.btn-check:checked + .btn.btn-active-icon-info .svg-icon, .btn-check:active + .btn.btn-active-icon-info i, +.btn-check:active + .btn.btn-active-icon-info .svg-icon, .btn.btn-active-icon-info:focus:not(.btn-active) i, +.btn.btn-active-icon-info:focus:not(.btn-active) .svg-icon, .btn.btn-active-icon-info:hover:not(.btn-active) i, +.btn.btn-active-icon-info:hover:not(.btn-active) .svg-icon, .btn.btn-active-icon-info:active:not(.btn-active) i, +.btn.btn-active-icon-info:active:not(.btn-active) .svg-icon, .btn.btn-active-icon-info.active i, +.btn.btn-active-icon-info.active .svg-icon, .btn.btn-active-icon-info.show i, +.btn.btn-active-icon-info.show .svg-icon, .show > .btn.btn-active-icon-info i, +.show > .btn.btn-active-icon-info .svg-icon { + color: var(--bs-text-info); +} +.btn-check:checked + .btn.btn-active-icon-info.dropdown-toggle:after, .btn-check:active + .btn.btn-active-icon-info.dropdown-toggle:after, .btn.btn-active-icon-info:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-info:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-info:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-info.active.dropdown-toggle:after, .btn.btn-active-icon-info.show.dropdown-toggle:after, .show > .btn.btn-active-icon-info.dropdown-toggle:after { + color: var(--bs-text-info); +} + +.btn.btn-text-info { + color: var(--bs-text-info); +} +.btn-check:checked + .btn.btn-active-text-info, .btn-check:active + .btn.btn-active-text-info, .btn.btn-active-text-info:focus:not(.btn-active), .btn.btn-active-text-info:hover:not(.btn-active), .btn.btn-active-text-info:active:not(.btn-active), .btn.btn-active-text-info.active, .btn.btn-active-text-info.show, .show > .btn.btn-active-text-info { + color: var(--bs-text-info); +} + +.btn.btn-color-warning { + color: var(--bs-text-warning); +} +.btn.btn-color-warning i, +.btn.btn-color-warning .svg-icon { + color: var(--bs-text-warning); +} +.btn.btn-color-warning.dropdown-toggle:after { + color: var(--bs-text-warning); +} +.btn-check:checked + .btn.btn-active-color-warning, .btn-check:active + .btn.btn-active-color-warning, .btn.btn-active-color-warning:focus:not(.btn-active), .btn.btn-active-color-warning:hover:not(.btn-active), .btn.btn-active-color-warning:active:not(.btn-active), .btn.btn-active-color-warning.active, .btn.btn-active-color-warning.show, .show > .btn.btn-active-color-warning { + color: var(--bs-text-warning); +} +.btn-check:checked + .btn.btn-active-color-warning i, +.btn-check:checked + .btn.btn-active-color-warning .svg-icon, .btn-check:active + .btn.btn-active-color-warning i, +.btn-check:active + .btn.btn-active-color-warning .svg-icon, .btn.btn-active-color-warning:focus:not(.btn-active) i, +.btn.btn-active-color-warning:focus:not(.btn-active) .svg-icon, .btn.btn-active-color-warning:hover:not(.btn-active) i, +.btn.btn-active-color-warning:hover:not(.btn-active) .svg-icon, .btn.btn-active-color-warning:active:not(.btn-active) i, +.btn.btn-active-color-warning:active:not(.btn-active) .svg-icon, .btn.btn-active-color-warning.active i, +.btn.btn-active-color-warning.active .svg-icon, .btn.btn-active-color-warning.show i, +.btn.btn-active-color-warning.show .svg-icon, .show > .btn.btn-active-color-warning i, +.show > .btn.btn-active-color-warning .svg-icon { + color: var(--bs-text-warning); +} +.btn-check:checked + .btn.btn-active-color-warning.dropdown-toggle:after, .btn-check:active + .btn.btn-active-color-warning.dropdown-toggle:after, .btn.btn-active-color-warning:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-warning:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-warning:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-warning.active.dropdown-toggle:after, .btn.btn-active-color-warning.show.dropdown-toggle:after, .show > .btn.btn-active-color-warning.dropdown-toggle:after { + color: var(--bs-text-warning); +} + +.btn.btn-icon-warning i, +.btn.btn-icon-warning .svg-icon { + color: var(--bs-text-warning); +} +.btn.btn-icon-warning.dropdown-toggle:after { + color: var(--bs-text-warning); +} +.btn-check:checked + .btn.btn-active-icon-warning i, +.btn-check:checked + .btn.btn-active-icon-warning .svg-icon, .btn-check:active + .btn.btn-active-icon-warning i, +.btn-check:active + .btn.btn-active-icon-warning .svg-icon, .btn.btn-active-icon-warning:focus:not(.btn-active) i, +.btn.btn-active-icon-warning:focus:not(.btn-active) .svg-icon, .btn.btn-active-icon-warning:hover:not(.btn-active) i, +.btn.btn-active-icon-warning:hover:not(.btn-active) .svg-icon, .btn.btn-active-icon-warning:active:not(.btn-active) i, +.btn.btn-active-icon-warning:active:not(.btn-active) .svg-icon, .btn.btn-active-icon-warning.active i, +.btn.btn-active-icon-warning.active .svg-icon, .btn.btn-active-icon-warning.show i, +.btn.btn-active-icon-warning.show .svg-icon, .show > .btn.btn-active-icon-warning i, +.show > .btn.btn-active-icon-warning .svg-icon { + color: var(--bs-text-warning); +} +.btn-check:checked + .btn.btn-active-icon-warning.dropdown-toggle:after, .btn-check:active + .btn.btn-active-icon-warning.dropdown-toggle:after, .btn.btn-active-icon-warning:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-warning:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-warning:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-warning.active.dropdown-toggle:after, .btn.btn-active-icon-warning.show.dropdown-toggle:after, .show > .btn.btn-active-icon-warning.dropdown-toggle:after { + color: var(--bs-text-warning); +} + +.btn.btn-text-warning { + color: var(--bs-text-warning); +} +.btn-check:checked + .btn.btn-active-text-warning, .btn-check:active + .btn.btn-active-text-warning, .btn.btn-active-text-warning:focus:not(.btn-active), .btn.btn-active-text-warning:hover:not(.btn-active), .btn.btn-active-text-warning:active:not(.btn-active), .btn.btn-active-text-warning.active, .btn.btn-active-text-warning.show, .show > .btn.btn-active-text-warning { + color: var(--bs-text-warning); +} + +.btn.btn-color-danger { + color: var(--bs-text-danger); +} +.btn.btn-color-danger i, +.btn.btn-color-danger .svg-icon { + color: var(--bs-text-danger); +} +.btn.btn-color-danger.dropdown-toggle:after { + color: var(--bs-text-danger); +} +.btn-check:checked + .btn.btn-active-color-danger, .btn-check:active + .btn.btn-active-color-danger, .btn.btn-active-color-danger:focus:not(.btn-active), .btn.btn-active-color-danger:hover:not(.btn-active), .btn.btn-active-color-danger:active:not(.btn-active), .btn.btn-active-color-danger.active, .btn.btn-active-color-danger.show, .show > .btn.btn-active-color-danger { + color: var(--bs-text-danger); +} +.btn-check:checked + .btn.btn-active-color-danger i, +.btn-check:checked + .btn.btn-active-color-danger .svg-icon, .btn-check:active + .btn.btn-active-color-danger i, +.btn-check:active + .btn.btn-active-color-danger .svg-icon, .btn.btn-active-color-danger:focus:not(.btn-active) i, +.btn.btn-active-color-danger:focus:not(.btn-active) .svg-icon, .btn.btn-active-color-danger:hover:not(.btn-active) i, +.btn.btn-active-color-danger:hover:not(.btn-active) .svg-icon, .btn.btn-active-color-danger:active:not(.btn-active) i, +.btn.btn-active-color-danger:active:not(.btn-active) .svg-icon, .btn.btn-active-color-danger.active i, +.btn.btn-active-color-danger.active .svg-icon, .btn.btn-active-color-danger.show i, +.btn.btn-active-color-danger.show .svg-icon, .show > .btn.btn-active-color-danger i, +.show > .btn.btn-active-color-danger .svg-icon { + color: var(--bs-text-danger); +} +.btn-check:checked + .btn.btn-active-color-danger.dropdown-toggle:after, .btn-check:active + .btn.btn-active-color-danger.dropdown-toggle:after, .btn.btn-active-color-danger:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-danger:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-danger:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-danger.active.dropdown-toggle:after, .btn.btn-active-color-danger.show.dropdown-toggle:after, .show > .btn.btn-active-color-danger.dropdown-toggle:after { + color: var(--bs-text-danger); +} + +.btn.btn-icon-danger i, +.btn.btn-icon-danger .svg-icon { + color: var(--bs-text-danger); +} +.btn.btn-icon-danger.dropdown-toggle:after { + color: var(--bs-text-danger); +} +.btn-check:checked + .btn.btn-active-icon-danger i, +.btn-check:checked + .btn.btn-active-icon-danger .svg-icon, .btn-check:active + .btn.btn-active-icon-danger i, +.btn-check:active + .btn.btn-active-icon-danger .svg-icon, .btn.btn-active-icon-danger:focus:not(.btn-active) i, +.btn.btn-active-icon-danger:focus:not(.btn-active) .svg-icon, .btn.btn-active-icon-danger:hover:not(.btn-active) i, +.btn.btn-active-icon-danger:hover:not(.btn-active) .svg-icon, .btn.btn-active-icon-danger:active:not(.btn-active) i, +.btn.btn-active-icon-danger:active:not(.btn-active) .svg-icon, .btn.btn-active-icon-danger.active i, +.btn.btn-active-icon-danger.active .svg-icon, .btn.btn-active-icon-danger.show i, +.btn.btn-active-icon-danger.show .svg-icon, .show > .btn.btn-active-icon-danger i, +.show > .btn.btn-active-icon-danger .svg-icon { + color: var(--bs-text-danger); +} +.btn-check:checked + .btn.btn-active-icon-danger.dropdown-toggle:after, .btn-check:active + .btn.btn-active-icon-danger.dropdown-toggle:after, .btn.btn-active-icon-danger:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-danger:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-danger:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-danger.active.dropdown-toggle:after, .btn.btn-active-icon-danger.show.dropdown-toggle:after, .show > .btn.btn-active-icon-danger.dropdown-toggle:after { + color: var(--bs-text-danger); +} + +.btn.btn-text-danger { + color: var(--bs-text-danger); +} +.btn-check:checked + .btn.btn-active-text-danger, .btn-check:active + .btn.btn-active-text-danger, .btn.btn-active-text-danger:focus:not(.btn-active), .btn.btn-active-text-danger:hover:not(.btn-active), .btn.btn-active-text-danger:active:not(.btn-active), .btn.btn-active-text-danger.active, .btn.btn-active-text-danger.show, .show > .btn.btn-active-text-danger { + color: var(--bs-text-danger); +} + +.btn.btn-color-dark { + color: var(--bs-text-dark); +} +.btn.btn-color-dark i, +.btn.btn-color-dark .svg-icon { + color: var(--bs-text-dark); +} +.btn.btn-color-dark.dropdown-toggle:after { + color: var(--bs-text-dark); +} +.btn-check:checked + .btn.btn-active-color-dark, .btn-check:active + .btn.btn-active-color-dark, .btn.btn-active-color-dark:focus:not(.btn-active), .btn.btn-active-color-dark:hover:not(.btn-active), .btn.btn-active-color-dark:active:not(.btn-active), .btn.btn-active-color-dark.active, .btn.btn-active-color-dark.show, .show > .btn.btn-active-color-dark { + color: var(--bs-text-dark); +} +.btn-check:checked + .btn.btn-active-color-dark i, +.btn-check:checked + .btn.btn-active-color-dark .svg-icon, .btn-check:active + .btn.btn-active-color-dark i, +.btn-check:active + .btn.btn-active-color-dark .svg-icon, .btn.btn-active-color-dark:focus:not(.btn-active) i, +.btn.btn-active-color-dark:focus:not(.btn-active) .svg-icon, .btn.btn-active-color-dark:hover:not(.btn-active) i, +.btn.btn-active-color-dark:hover:not(.btn-active) .svg-icon, .btn.btn-active-color-dark:active:not(.btn-active) i, +.btn.btn-active-color-dark:active:not(.btn-active) .svg-icon, .btn.btn-active-color-dark.active i, +.btn.btn-active-color-dark.active .svg-icon, .btn.btn-active-color-dark.show i, +.btn.btn-active-color-dark.show .svg-icon, .show > .btn.btn-active-color-dark i, +.show > .btn.btn-active-color-dark .svg-icon { + color: var(--bs-text-dark); +} +.btn-check:checked + .btn.btn-active-color-dark.dropdown-toggle:after, .btn-check:active + .btn.btn-active-color-dark.dropdown-toggle:after, .btn.btn-active-color-dark:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-dark:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-dark:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-dark.active.dropdown-toggle:after, .btn.btn-active-color-dark.show.dropdown-toggle:after, .show > .btn.btn-active-color-dark.dropdown-toggle:after { + color: var(--bs-text-dark); +} + +.btn.btn-icon-dark i, +.btn.btn-icon-dark .svg-icon { + color: var(--bs-text-dark); +} +.btn.btn-icon-dark.dropdown-toggle:after { + color: var(--bs-text-dark); +} +.btn-check:checked + .btn.btn-active-icon-dark i, +.btn-check:checked + .btn.btn-active-icon-dark .svg-icon, .btn-check:active + .btn.btn-active-icon-dark i, +.btn-check:active + .btn.btn-active-icon-dark .svg-icon, .btn.btn-active-icon-dark:focus:not(.btn-active) i, +.btn.btn-active-icon-dark:focus:not(.btn-active) .svg-icon, .btn.btn-active-icon-dark:hover:not(.btn-active) i, +.btn.btn-active-icon-dark:hover:not(.btn-active) .svg-icon, .btn.btn-active-icon-dark:active:not(.btn-active) i, +.btn.btn-active-icon-dark:active:not(.btn-active) .svg-icon, .btn.btn-active-icon-dark.active i, +.btn.btn-active-icon-dark.active .svg-icon, .btn.btn-active-icon-dark.show i, +.btn.btn-active-icon-dark.show .svg-icon, .show > .btn.btn-active-icon-dark i, +.show > .btn.btn-active-icon-dark .svg-icon { + color: var(--bs-text-dark); +} +.btn-check:checked + .btn.btn-active-icon-dark.dropdown-toggle:after, .btn-check:active + .btn.btn-active-icon-dark.dropdown-toggle:after, .btn.btn-active-icon-dark:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-dark:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-dark:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-dark.active.dropdown-toggle:after, .btn.btn-active-icon-dark.show.dropdown-toggle:after, .show > .btn.btn-active-icon-dark.dropdown-toggle:after { + color: var(--bs-text-dark); +} + +.btn.btn-text-dark { + color: var(--bs-text-dark); +} +.btn-check:checked + .btn.btn-active-text-dark, .btn-check:active + .btn.btn-active-text-dark, .btn.btn-active-text-dark:focus:not(.btn-active), .btn.btn-active-text-dark:hover:not(.btn-active), .btn.btn-active-text-dark:active:not(.btn-active), .btn.btn-active-text-dark.active, .btn.btn-active-text-dark.show, .show > .btn.btn-active-text-dark { + color: var(--bs-text-dark); +} + +.btn.btn-color-muted { + color: var(--bs-text-muted); +} +.btn.btn-color-muted i, +.btn.btn-color-muted .svg-icon { + color: var(--bs-text-muted); +} +.btn.btn-color-muted.dropdown-toggle:after { + color: var(--bs-text-muted); +} +.btn-check:checked + .btn.btn-active-color-muted, .btn-check:active + .btn.btn-active-color-muted, .btn.btn-active-color-muted:focus:not(.btn-active), .btn.btn-active-color-muted:hover:not(.btn-active), .btn.btn-active-color-muted:active:not(.btn-active), .btn.btn-active-color-muted.active, .btn.btn-active-color-muted.show, .show > .btn.btn-active-color-muted { + color: var(--bs-text-muted); +} +.btn-check:checked + .btn.btn-active-color-muted i, +.btn-check:checked + .btn.btn-active-color-muted .svg-icon, .btn-check:active + .btn.btn-active-color-muted i, +.btn-check:active + .btn.btn-active-color-muted .svg-icon, .btn.btn-active-color-muted:focus:not(.btn-active) i, +.btn.btn-active-color-muted:focus:not(.btn-active) .svg-icon, .btn.btn-active-color-muted:hover:not(.btn-active) i, +.btn.btn-active-color-muted:hover:not(.btn-active) .svg-icon, .btn.btn-active-color-muted:active:not(.btn-active) i, +.btn.btn-active-color-muted:active:not(.btn-active) .svg-icon, .btn.btn-active-color-muted.active i, +.btn.btn-active-color-muted.active .svg-icon, .btn.btn-active-color-muted.show i, +.btn.btn-active-color-muted.show .svg-icon, .show > .btn.btn-active-color-muted i, +.show > .btn.btn-active-color-muted .svg-icon { + color: var(--bs-text-muted); +} +.btn-check:checked + .btn.btn-active-color-muted.dropdown-toggle:after, .btn-check:active + .btn.btn-active-color-muted.dropdown-toggle:after, .btn.btn-active-color-muted:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-muted:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-muted:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-muted.active.dropdown-toggle:after, .btn.btn-active-color-muted.show.dropdown-toggle:after, .show > .btn.btn-active-color-muted.dropdown-toggle:after { + color: var(--bs-text-muted); +} + +.btn.btn-icon-muted i, +.btn.btn-icon-muted .svg-icon { + color: var(--bs-text-muted); +} +.btn.btn-icon-muted.dropdown-toggle:after { + color: var(--bs-text-muted); +} +.btn-check:checked + .btn.btn-active-icon-muted i, +.btn-check:checked + .btn.btn-active-icon-muted .svg-icon, .btn-check:active + .btn.btn-active-icon-muted i, +.btn-check:active + .btn.btn-active-icon-muted .svg-icon, .btn.btn-active-icon-muted:focus:not(.btn-active) i, +.btn.btn-active-icon-muted:focus:not(.btn-active) .svg-icon, .btn.btn-active-icon-muted:hover:not(.btn-active) i, +.btn.btn-active-icon-muted:hover:not(.btn-active) .svg-icon, .btn.btn-active-icon-muted:active:not(.btn-active) i, +.btn.btn-active-icon-muted:active:not(.btn-active) .svg-icon, .btn.btn-active-icon-muted.active i, +.btn.btn-active-icon-muted.active .svg-icon, .btn.btn-active-icon-muted.show i, +.btn.btn-active-icon-muted.show .svg-icon, .show > .btn.btn-active-icon-muted i, +.show > .btn.btn-active-icon-muted .svg-icon { + color: var(--bs-text-muted); +} +.btn-check:checked + .btn.btn-active-icon-muted.dropdown-toggle:after, .btn-check:active + .btn.btn-active-icon-muted.dropdown-toggle:after, .btn.btn-active-icon-muted:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-muted:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-muted:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-muted.active.dropdown-toggle:after, .btn.btn-active-icon-muted.show.dropdown-toggle:after, .show > .btn.btn-active-icon-muted.dropdown-toggle:after { + color: var(--bs-text-muted); +} + +.btn.btn-text-muted { + color: var(--bs-text-muted); +} +.btn-check:checked + .btn.btn-active-text-muted, .btn-check:active + .btn.btn-active-text-muted, .btn.btn-active-text-muted:focus:not(.btn-active), .btn.btn-active-text-muted:hover:not(.btn-active), .btn.btn-active-text-muted:active:not(.btn-active), .btn.btn-active-text-muted.active, .btn.btn-active-text-muted.show, .show > .btn.btn-active-text-muted { + color: var(--bs-text-muted); +} + +.btn.btn-color-gray-100 { + color: var(--bs-text-gray-100); +} +.btn.btn-color-gray-100 i, +.btn.btn-color-gray-100 .svg-icon { + color: var(--bs-text-gray-100); +} +.btn.btn-color-gray-100.dropdown-toggle:after { + color: var(--bs-text-gray-100); +} +.btn-check:checked + .btn.btn-active-color-gray-100, .btn-check:active + .btn.btn-active-color-gray-100, .btn.btn-active-color-gray-100:focus:not(.btn-active), .btn.btn-active-color-gray-100:hover:not(.btn-active), .btn.btn-active-color-gray-100:active:not(.btn-active), .btn.btn-active-color-gray-100.active, .btn.btn-active-color-gray-100.show, .show > .btn.btn-active-color-gray-100 { + color: var(--bs-text-gray-100); +} +.btn-check:checked + .btn.btn-active-color-gray-100 i, +.btn-check:checked + .btn.btn-active-color-gray-100 .svg-icon, .btn-check:active + .btn.btn-active-color-gray-100 i, +.btn-check:active + .btn.btn-active-color-gray-100 .svg-icon, .btn.btn-active-color-gray-100:focus:not(.btn-active) i, +.btn.btn-active-color-gray-100:focus:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-100:hover:not(.btn-active) i, +.btn.btn-active-color-gray-100:hover:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-100:active:not(.btn-active) i, +.btn.btn-active-color-gray-100:active:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-100.active i, +.btn.btn-active-color-gray-100.active .svg-icon, .btn.btn-active-color-gray-100.show i, +.btn.btn-active-color-gray-100.show .svg-icon, .show > .btn.btn-active-color-gray-100 i, +.show > .btn.btn-active-color-gray-100 .svg-icon { + color: var(--bs-text-gray-100); +} +.btn-check:checked + .btn.btn-active-color-gray-100.dropdown-toggle:after, .btn-check:active + .btn.btn-active-color-gray-100.dropdown-toggle:after, .btn.btn-active-color-gray-100:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-100:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-100:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-100.active.dropdown-toggle:after, .btn.btn-active-color-gray-100.show.dropdown-toggle:after, .show > .btn.btn-active-color-gray-100.dropdown-toggle:after { + color: var(--bs-text-gray-100); +} + +.btn.btn-icon-gray-100 i, +.btn.btn-icon-gray-100 .svg-icon { + color: var(--bs-text-gray-100); +} +.btn.btn-icon-gray-100.dropdown-toggle:after { + color: var(--bs-text-gray-100); +} +.btn-check:checked + .btn.btn-active-icon-gray-100 i, +.btn-check:checked + .btn.btn-active-icon-gray-100 .svg-icon, .btn-check:active + .btn.btn-active-icon-gray-100 i, +.btn-check:active + .btn.btn-active-icon-gray-100 .svg-icon, .btn.btn-active-icon-gray-100:focus:not(.btn-active) i, +.btn.btn-active-icon-gray-100:focus:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-100:hover:not(.btn-active) i, +.btn.btn-active-icon-gray-100:hover:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-100:active:not(.btn-active) i, +.btn.btn-active-icon-gray-100:active:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-100.active i, +.btn.btn-active-icon-gray-100.active .svg-icon, .btn.btn-active-icon-gray-100.show i, +.btn.btn-active-icon-gray-100.show .svg-icon, .show > .btn.btn-active-icon-gray-100 i, +.show > .btn.btn-active-icon-gray-100 .svg-icon { + color: var(--bs-text-gray-100); +} +.btn-check:checked + .btn.btn-active-icon-gray-100.dropdown-toggle:after, .btn-check:active + .btn.btn-active-icon-gray-100.dropdown-toggle:after, .btn.btn-active-icon-gray-100:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-100:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-100:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-100.active.dropdown-toggle:after, .btn.btn-active-icon-gray-100.show.dropdown-toggle:after, .show > .btn.btn-active-icon-gray-100.dropdown-toggle:after { + color: var(--bs-text-gray-100); +} + +.btn.btn-text-gray-100 { + color: var(--bs-text-gray-100); +} +.btn-check:checked + .btn.btn-active-text-gray-100, .btn-check:active + .btn.btn-active-text-gray-100, .btn.btn-active-text-gray-100:focus:not(.btn-active), .btn.btn-active-text-gray-100:hover:not(.btn-active), .btn.btn-active-text-gray-100:active:not(.btn-active), .btn.btn-active-text-gray-100.active, .btn.btn-active-text-gray-100.show, .show > .btn.btn-active-text-gray-100 { + color: var(--bs-text-gray-100); +} + +.btn.btn-color-gray-200 { + color: var(--bs-text-gray-200); +} +.btn.btn-color-gray-200 i, +.btn.btn-color-gray-200 .svg-icon { + color: var(--bs-text-gray-200); +} +.btn.btn-color-gray-200.dropdown-toggle:after { + color: var(--bs-text-gray-200); +} +.btn-check:checked + .btn.btn-active-color-gray-200, .btn-check:active + .btn.btn-active-color-gray-200, .btn.btn-active-color-gray-200:focus:not(.btn-active), .btn.btn-active-color-gray-200:hover:not(.btn-active), .btn.btn-active-color-gray-200:active:not(.btn-active), .btn.btn-active-color-gray-200.active, .btn.btn-active-color-gray-200.show, .show > .btn.btn-active-color-gray-200 { + color: var(--bs-text-gray-200); +} +.btn-check:checked + .btn.btn-active-color-gray-200 i, +.btn-check:checked + .btn.btn-active-color-gray-200 .svg-icon, .btn-check:active + .btn.btn-active-color-gray-200 i, +.btn-check:active + .btn.btn-active-color-gray-200 .svg-icon, .btn.btn-active-color-gray-200:focus:not(.btn-active) i, +.btn.btn-active-color-gray-200:focus:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-200:hover:not(.btn-active) i, +.btn.btn-active-color-gray-200:hover:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-200:active:not(.btn-active) i, +.btn.btn-active-color-gray-200:active:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-200.active i, +.btn.btn-active-color-gray-200.active .svg-icon, .btn.btn-active-color-gray-200.show i, +.btn.btn-active-color-gray-200.show .svg-icon, .show > .btn.btn-active-color-gray-200 i, +.show > .btn.btn-active-color-gray-200 .svg-icon { + color: var(--bs-text-gray-200); +} +.btn-check:checked + .btn.btn-active-color-gray-200.dropdown-toggle:after, .btn-check:active + .btn.btn-active-color-gray-200.dropdown-toggle:after, .btn.btn-active-color-gray-200:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-200:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-200:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-200.active.dropdown-toggle:after, .btn.btn-active-color-gray-200.show.dropdown-toggle:after, .show > .btn.btn-active-color-gray-200.dropdown-toggle:after { + color: var(--bs-text-gray-200); +} + +.btn.btn-icon-gray-200 i, +.btn.btn-icon-gray-200 .svg-icon { + color: var(--bs-text-gray-200); +} +.btn.btn-icon-gray-200.dropdown-toggle:after { + color: var(--bs-text-gray-200); +} +.btn-check:checked + .btn.btn-active-icon-gray-200 i, +.btn-check:checked + .btn.btn-active-icon-gray-200 .svg-icon, .btn-check:active + .btn.btn-active-icon-gray-200 i, +.btn-check:active + .btn.btn-active-icon-gray-200 .svg-icon, .btn.btn-active-icon-gray-200:focus:not(.btn-active) i, +.btn.btn-active-icon-gray-200:focus:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-200:hover:not(.btn-active) i, +.btn.btn-active-icon-gray-200:hover:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-200:active:not(.btn-active) i, +.btn.btn-active-icon-gray-200:active:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-200.active i, +.btn.btn-active-icon-gray-200.active .svg-icon, .btn.btn-active-icon-gray-200.show i, +.btn.btn-active-icon-gray-200.show .svg-icon, .show > .btn.btn-active-icon-gray-200 i, +.show > .btn.btn-active-icon-gray-200 .svg-icon { + color: var(--bs-text-gray-200); +} +.btn-check:checked + .btn.btn-active-icon-gray-200.dropdown-toggle:after, .btn-check:active + .btn.btn-active-icon-gray-200.dropdown-toggle:after, .btn.btn-active-icon-gray-200:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-200:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-200:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-200.active.dropdown-toggle:after, .btn.btn-active-icon-gray-200.show.dropdown-toggle:after, .show > .btn.btn-active-icon-gray-200.dropdown-toggle:after { + color: var(--bs-text-gray-200); +} + +.btn.btn-text-gray-200 { + color: var(--bs-text-gray-200); +} +.btn-check:checked + .btn.btn-active-text-gray-200, .btn-check:active + .btn.btn-active-text-gray-200, .btn.btn-active-text-gray-200:focus:not(.btn-active), .btn.btn-active-text-gray-200:hover:not(.btn-active), .btn.btn-active-text-gray-200:active:not(.btn-active), .btn.btn-active-text-gray-200.active, .btn.btn-active-text-gray-200.show, .show > .btn.btn-active-text-gray-200 { + color: var(--bs-text-gray-200); +} + +.btn.btn-color-gray-300 { + color: var(--bs-text-gray-300); +} +.btn.btn-color-gray-300 i, +.btn.btn-color-gray-300 .svg-icon { + color: var(--bs-text-gray-300); +} +.btn.btn-color-gray-300.dropdown-toggle:after { + color: var(--bs-text-gray-300); +} +.btn-check:checked + .btn.btn-active-color-gray-300, .btn-check:active + .btn.btn-active-color-gray-300, .btn.btn-active-color-gray-300:focus:not(.btn-active), .btn.btn-active-color-gray-300:hover:not(.btn-active), .btn.btn-active-color-gray-300:active:not(.btn-active), .btn.btn-active-color-gray-300.active, .btn.btn-active-color-gray-300.show, .show > .btn.btn-active-color-gray-300 { + color: var(--bs-text-gray-300); +} +.btn-check:checked + .btn.btn-active-color-gray-300 i, +.btn-check:checked + .btn.btn-active-color-gray-300 .svg-icon, .btn-check:active + .btn.btn-active-color-gray-300 i, +.btn-check:active + .btn.btn-active-color-gray-300 .svg-icon, .btn.btn-active-color-gray-300:focus:not(.btn-active) i, +.btn.btn-active-color-gray-300:focus:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-300:hover:not(.btn-active) i, +.btn.btn-active-color-gray-300:hover:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-300:active:not(.btn-active) i, +.btn.btn-active-color-gray-300:active:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-300.active i, +.btn.btn-active-color-gray-300.active .svg-icon, .btn.btn-active-color-gray-300.show i, +.btn.btn-active-color-gray-300.show .svg-icon, .show > .btn.btn-active-color-gray-300 i, +.show > .btn.btn-active-color-gray-300 .svg-icon { + color: var(--bs-text-gray-300); +} +.btn-check:checked + .btn.btn-active-color-gray-300.dropdown-toggle:after, .btn-check:active + .btn.btn-active-color-gray-300.dropdown-toggle:after, .btn.btn-active-color-gray-300:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-300:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-300:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-300.active.dropdown-toggle:after, .btn.btn-active-color-gray-300.show.dropdown-toggle:after, .show > .btn.btn-active-color-gray-300.dropdown-toggle:after { + color: var(--bs-text-gray-300); +} + +.btn.btn-icon-gray-300 i, +.btn.btn-icon-gray-300 .svg-icon { + color: var(--bs-text-gray-300); +} +.btn.btn-icon-gray-300.dropdown-toggle:after { + color: var(--bs-text-gray-300); +} +.btn-check:checked + .btn.btn-active-icon-gray-300 i, +.btn-check:checked + .btn.btn-active-icon-gray-300 .svg-icon, .btn-check:active + .btn.btn-active-icon-gray-300 i, +.btn-check:active + .btn.btn-active-icon-gray-300 .svg-icon, .btn.btn-active-icon-gray-300:focus:not(.btn-active) i, +.btn.btn-active-icon-gray-300:focus:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-300:hover:not(.btn-active) i, +.btn.btn-active-icon-gray-300:hover:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-300:active:not(.btn-active) i, +.btn.btn-active-icon-gray-300:active:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-300.active i, +.btn.btn-active-icon-gray-300.active .svg-icon, .btn.btn-active-icon-gray-300.show i, +.btn.btn-active-icon-gray-300.show .svg-icon, .show > .btn.btn-active-icon-gray-300 i, +.show > .btn.btn-active-icon-gray-300 .svg-icon { + color: var(--bs-text-gray-300); +} +.btn-check:checked + .btn.btn-active-icon-gray-300.dropdown-toggle:after, .btn-check:active + .btn.btn-active-icon-gray-300.dropdown-toggle:after, .btn.btn-active-icon-gray-300:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-300:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-300:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-300.active.dropdown-toggle:after, .btn.btn-active-icon-gray-300.show.dropdown-toggle:after, .show > .btn.btn-active-icon-gray-300.dropdown-toggle:after { + color: var(--bs-text-gray-300); +} + +.btn.btn-text-gray-300 { + color: var(--bs-text-gray-300); +} +.btn-check:checked + .btn.btn-active-text-gray-300, .btn-check:active + .btn.btn-active-text-gray-300, .btn.btn-active-text-gray-300:focus:not(.btn-active), .btn.btn-active-text-gray-300:hover:not(.btn-active), .btn.btn-active-text-gray-300:active:not(.btn-active), .btn.btn-active-text-gray-300.active, .btn.btn-active-text-gray-300.show, .show > .btn.btn-active-text-gray-300 { + color: var(--bs-text-gray-300); +} + +.btn.btn-color-gray-400 { + color: var(--bs-text-gray-400); +} +.btn.btn-color-gray-400 i, +.btn.btn-color-gray-400 .svg-icon { + color: var(--bs-text-gray-400); +} +.btn.btn-color-gray-400.dropdown-toggle:after { + color: var(--bs-text-gray-400); +} +.btn-check:checked + .btn.btn-active-color-gray-400, .btn-check:active + .btn.btn-active-color-gray-400, .btn.btn-active-color-gray-400:focus:not(.btn-active), .btn.btn-active-color-gray-400:hover:not(.btn-active), .btn.btn-active-color-gray-400:active:not(.btn-active), .btn.btn-active-color-gray-400.active, .btn.btn-active-color-gray-400.show, .show > .btn.btn-active-color-gray-400 { + color: var(--bs-text-gray-400); +} +.btn-check:checked + .btn.btn-active-color-gray-400 i, +.btn-check:checked + .btn.btn-active-color-gray-400 .svg-icon, .btn-check:active + .btn.btn-active-color-gray-400 i, +.btn-check:active + .btn.btn-active-color-gray-400 .svg-icon, .btn.btn-active-color-gray-400:focus:not(.btn-active) i, +.btn.btn-active-color-gray-400:focus:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-400:hover:not(.btn-active) i, +.btn.btn-active-color-gray-400:hover:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-400:active:not(.btn-active) i, +.btn.btn-active-color-gray-400:active:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-400.active i, +.btn.btn-active-color-gray-400.active .svg-icon, .btn.btn-active-color-gray-400.show i, +.btn.btn-active-color-gray-400.show .svg-icon, .show > .btn.btn-active-color-gray-400 i, +.show > .btn.btn-active-color-gray-400 .svg-icon { + color: var(--bs-text-gray-400); +} +.btn-check:checked + .btn.btn-active-color-gray-400.dropdown-toggle:after, .btn-check:active + .btn.btn-active-color-gray-400.dropdown-toggle:after, .btn.btn-active-color-gray-400:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-400:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-400:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-400.active.dropdown-toggle:after, .btn.btn-active-color-gray-400.show.dropdown-toggle:after, .show > .btn.btn-active-color-gray-400.dropdown-toggle:after { + color: var(--bs-text-gray-400); +} + +.btn.btn-icon-gray-400 i, +.btn.btn-icon-gray-400 .svg-icon { + color: var(--bs-text-gray-400); +} +.btn.btn-icon-gray-400.dropdown-toggle:after { + color: var(--bs-text-gray-400); +} +.btn-check:checked + .btn.btn-active-icon-gray-400 i, +.btn-check:checked + .btn.btn-active-icon-gray-400 .svg-icon, .btn-check:active + .btn.btn-active-icon-gray-400 i, +.btn-check:active + .btn.btn-active-icon-gray-400 .svg-icon, .btn.btn-active-icon-gray-400:focus:not(.btn-active) i, +.btn.btn-active-icon-gray-400:focus:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-400:hover:not(.btn-active) i, +.btn.btn-active-icon-gray-400:hover:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-400:active:not(.btn-active) i, +.btn.btn-active-icon-gray-400:active:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-400.active i, +.btn.btn-active-icon-gray-400.active .svg-icon, .btn.btn-active-icon-gray-400.show i, +.btn.btn-active-icon-gray-400.show .svg-icon, .show > .btn.btn-active-icon-gray-400 i, +.show > .btn.btn-active-icon-gray-400 .svg-icon { + color: var(--bs-text-gray-400); +} +.btn-check:checked + .btn.btn-active-icon-gray-400.dropdown-toggle:after, .btn-check:active + .btn.btn-active-icon-gray-400.dropdown-toggle:after, .btn.btn-active-icon-gray-400:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-400:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-400:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-400.active.dropdown-toggle:after, .btn.btn-active-icon-gray-400.show.dropdown-toggle:after, .show > .btn.btn-active-icon-gray-400.dropdown-toggle:after { + color: var(--bs-text-gray-400); +} + +.btn.btn-text-gray-400 { + color: var(--bs-text-gray-400); +} +.btn-check:checked + .btn.btn-active-text-gray-400, .btn-check:active + .btn.btn-active-text-gray-400, .btn.btn-active-text-gray-400:focus:not(.btn-active), .btn.btn-active-text-gray-400:hover:not(.btn-active), .btn.btn-active-text-gray-400:active:not(.btn-active), .btn.btn-active-text-gray-400.active, .btn.btn-active-text-gray-400.show, .show > .btn.btn-active-text-gray-400 { + color: var(--bs-text-gray-400); +} + +.btn.btn-color-gray-500 { + color: var(--bs-text-gray-500); +} +.btn.btn-color-gray-500 i, +.btn.btn-color-gray-500 .svg-icon { + color: var(--bs-text-gray-500); +} +.btn.btn-color-gray-500.dropdown-toggle:after { + color: var(--bs-text-gray-500); +} +.btn-check:checked + .btn.btn-active-color-gray-500, .btn-check:active + .btn.btn-active-color-gray-500, .btn.btn-active-color-gray-500:focus:not(.btn-active), .btn.btn-active-color-gray-500:hover:not(.btn-active), .btn.btn-active-color-gray-500:active:not(.btn-active), .btn.btn-active-color-gray-500.active, .btn.btn-active-color-gray-500.show, .show > .btn.btn-active-color-gray-500 { + color: var(--bs-text-gray-500); +} +.btn-check:checked + .btn.btn-active-color-gray-500 i, +.btn-check:checked + .btn.btn-active-color-gray-500 .svg-icon, .btn-check:active + .btn.btn-active-color-gray-500 i, +.btn-check:active + .btn.btn-active-color-gray-500 .svg-icon, .btn.btn-active-color-gray-500:focus:not(.btn-active) i, +.btn.btn-active-color-gray-500:focus:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-500:hover:not(.btn-active) i, +.btn.btn-active-color-gray-500:hover:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-500:active:not(.btn-active) i, +.btn.btn-active-color-gray-500:active:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-500.active i, +.btn.btn-active-color-gray-500.active .svg-icon, .btn.btn-active-color-gray-500.show i, +.btn.btn-active-color-gray-500.show .svg-icon, .show > .btn.btn-active-color-gray-500 i, +.show > .btn.btn-active-color-gray-500 .svg-icon { + color: var(--bs-text-gray-500); +} +.btn-check:checked + .btn.btn-active-color-gray-500.dropdown-toggle:after, .btn-check:active + .btn.btn-active-color-gray-500.dropdown-toggle:after, .btn.btn-active-color-gray-500:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-500:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-500:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-500.active.dropdown-toggle:after, .btn.btn-active-color-gray-500.show.dropdown-toggle:after, .show > .btn.btn-active-color-gray-500.dropdown-toggle:after { + color: var(--bs-text-gray-500); +} + +.btn.btn-icon-gray-500 i, +.btn.btn-icon-gray-500 .svg-icon { + color: var(--bs-text-gray-500); +} +.btn.btn-icon-gray-500.dropdown-toggle:after { + color: var(--bs-text-gray-500); +} +.btn-check:checked + .btn.btn-active-icon-gray-500 i, +.btn-check:checked + .btn.btn-active-icon-gray-500 .svg-icon, .btn-check:active + .btn.btn-active-icon-gray-500 i, +.btn-check:active + .btn.btn-active-icon-gray-500 .svg-icon, .btn.btn-active-icon-gray-500:focus:not(.btn-active) i, +.btn.btn-active-icon-gray-500:focus:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-500:hover:not(.btn-active) i, +.btn.btn-active-icon-gray-500:hover:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-500:active:not(.btn-active) i, +.btn.btn-active-icon-gray-500:active:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-500.active i, +.btn.btn-active-icon-gray-500.active .svg-icon, .btn.btn-active-icon-gray-500.show i, +.btn.btn-active-icon-gray-500.show .svg-icon, .show > .btn.btn-active-icon-gray-500 i, +.show > .btn.btn-active-icon-gray-500 .svg-icon { + color: var(--bs-text-gray-500); +} +.btn-check:checked + .btn.btn-active-icon-gray-500.dropdown-toggle:after, .btn-check:active + .btn.btn-active-icon-gray-500.dropdown-toggle:after, .btn.btn-active-icon-gray-500:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-500:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-500:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-500.active.dropdown-toggle:after, .btn.btn-active-icon-gray-500.show.dropdown-toggle:after, .show > .btn.btn-active-icon-gray-500.dropdown-toggle:after { + color: var(--bs-text-gray-500); +} + +.btn.btn-text-gray-500 { + color: var(--bs-text-gray-500); +} +.btn-check:checked + .btn.btn-active-text-gray-500, .btn-check:active + .btn.btn-active-text-gray-500, .btn.btn-active-text-gray-500:focus:not(.btn-active), .btn.btn-active-text-gray-500:hover:not(.btn-active), .btn.btn-active-text-gray-500:active:not(.btn-active), .btn.btn-active-text-gray-500.active, .btn.btn-active-text-gray-500.show, .show > .btn.btn-active-text-gray-500 { + color: var(--bs-text-gray-500); +} + +.btn.btn-color-gray-600 { + color: var(--bs-text-gray-600); +} +.btn.btn-color-gray-600 i, +.btn.btn-color-gray-600 .svg-icon { + color: var(--bs-text-gray-600); +} +.btn.btn-color-gray-600.dropdown-toggle:after { + color: var(--bs-text-gray-600); +} +.btn-check:checked + .btn.btn-active-color-gray-600, .btn-check:active + .btn.btn-active-color-gray-600, .btn.btn-active-color-gray-600:focus:not(.btn-active), .btn.btn-active-color-gray-600:hover:not(.btn-active), .btn.btn-active-color-gray-600:active:not(.btn-active), .btn.btn-active-color-gray-600.active, .btn.btn-active-color-gray-600.show, .show > .btn.btn-active-color-gray-600 { + color: var(--bs-text-gray-600); +} +.btn-check:checked + .btn.btn-active-color-gray-600 i, +.btn-check:checked + .btn.btn-active-color-gray-600 .svg-icon, .btn-check:active + .btn.btn-active-color-gray-600 i, +.btn-check:active + .btn.btn-active-color-gray-600 .svg-icon, .btn.btn-active-color-gray-600:focus:not(.btn-active) i, +.btn.btn-active-color-gray-600:focus:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-600:hover:not(.btn-active) i, +.btn.btn-active-color-gray-600:hover:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-600:active:not(.btn-active) i, +.btn.btn-active-color-gray-600:active:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-600.active i, +.btn.btn-active-color-gray-600.active .svg-icon, .btn.btn-active-color-gray-600.show i, +.btn.btn-active-color-gray-600.show .svg-icon, .show > .btn.btn-active-color-gray-600 i, +.show > .btn.btn-active-color-gray-600 .svg-icon { + color: var(--bs-text-gray-600); +} +.btn-check:checked + .btn.btn-active-color-gray-600.dropdown-toggle:after, .btn-check:active + .btn.btn-active-color-gray-600.dropdown-toggle:after, .btn.btn-active-color-gray-600:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-600:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-600:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-600.active.dropdown-toggle:after, .btn.btn-active-color-gray-600.show.dropdown-toggle:after, .show > .btn.btn-active-color-gray-600.dropdown-toggle:after { + color: var(--bs-text-gray-600); +} + +.btn.btn-icon-gray-600 i, +.btn.btn-icon-gray-600 .svg-icon { + color: var(--bs-text-gray-600); +} +.btn.btn-icon-gray-600.dropdown-toggle:after { + color: var(--bs-text-gray-600); +} +.btn-check:checked + .btn.btn-active-icon-gray-600 i, +.btn-check:checked + .btn.btn-active-icon-gray-600 .svg-icon, .btn-check:active + .btn.btn-active-icon-gray-600 i, +.btn-check:active + .btn.btn-active-icon-gray-600 .svg-icon, .btn.btn-active-icon-gray-600:focus:not(.btn-active) i, +.btn.btn-active-icon-gray-600:focus:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-600:hover:not(.btn-active) i, +.btn.btn-active-icon-gray-600:hover:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-600:active:not(.btn-active) i, +.btn.btn-active-icon-gray-600:active:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-600.active i, +.btn.btn-active-icon-gray-600.active .svg-icon, .btn.btn-active-icon-gray-600.show i, +.btn.btn-active-icon-gray-600.show .svg-icon, .show > .btn.btn-active-icon-gray-600 i, +.show > .btn.btn-active-icon-gray-600 .svg-icon { + color: var(--bs-text-gray-600); +} +.btn-check:checked + .btn.btn-active-icon-gray-600.dropdown-toggle:after, .btn-check:active + .btn.btn-active-icon-gray-600.dropdown-toggle:after, .btn.btn-active-icon-gray-600:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-600:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-600:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-600.active.dropdown-toggle:after, .btn.btn-active-icon-gray-600.show.dropdown-toggle:after, .show > .btn.btn-active-icon-gray-600.dropdown-toggle:after { + color: var(--bs-text-gray-600); +} + +.btn.btn-text-gray-600 { + color: var(--bs-text-gray-600); +} +.btn-check:checked + .btn.btn-active-text-gray-600, .btn-check:active + .btn.btn-active-text-gray-600, .btn.btn-active-text-gray-600:focus:not(.btn-active), .btn.btn-active-text-gray-600:hover:not(.btn-active), .btn.btn-active-text-gray-600:active:not(.btn-active), .btn.btn-active-text-gray-600.active, .btn.btn-active-text-gray-600.show, .show > .btn.btn-active-text-gray-600 { + color: var(--bs-text-gray-600); +} + +.btn.btn-color-gray-700 { + color: var(--bs-text-gray-700); +} +.btn.btn-color-gray-700 i, +.btn.btn-color-gray-700 .svg-icon { + color: var(--bs-text-gray-700); +} +.btn.btn-color-gray-700.dropdown-toggle:after { + color: var(--bs-text-gray-700); +} +.btn-check:checked + .btn.btn-active-color-gray-700, .btn-check:active + .btn.btn-active-color-gray-700, .btn.btn-active-color-gray-700:focus:not(.btn-active), .btn.btn-active-color-gray-700:hover:not(.btn-active), .btn.btn-active-color-gray-700:active:not(.btn-active), .btn.btn-active-color-gray-700.active, .btn.btn-active-color-gray-700.show, .show > .btn.btn-active-color-gray-700 { + color: var(--bs-text-gray-700); +} +.btn-check:checked + .btn.btn-active-color-gray-700 i, +.btn-check:checked + .btn.btn-active-color-gray-700 .svg-icon, .btn-check:active + .btn.btn-active-color-gray-700 i, +.btn-check:active + .btn.btn-active-color-gray-700 .svg-icon, .btn.btn-active-color-gray-700:focus:not(.btn-active) i, +.btn.btn-active-color-gray-700:focus:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-700:hover:not(.btn-active) i, +.btn.btn-active-color-gray-700:hover:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-700:active:not(.btn-active) i, +.btn.btn-active-color-gray-700:active:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-700.active i, +.btn.btn-active-color-gray-700.active .svg-icon, .btn.btn-active-color-gray-700.show i, +.btn.btn-active-color-gray-700.show .svg-icon, .show > .btn.btn-active-color-gray-700 i, +.show > .btn.btn-active-color-gray-700 .svg-icon { + color: var(--bs-text-gray-700); +} +.btn-check:checked + .btn.btn-active-color-gray-700.dropdown-toggle:after, .btn-check:active + .btn.btn-active-color-gray-700.dropdown-toggle:after, .btn.btn-active-color-gray-700:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-700:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-700:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-700.active.dropdown-toggle:after, .btn.btn-active-color-gray-700.show.dropdown-toggle:after, .show > .btn.btn-active-color-gray-700.dropdown-toggle:after { + color: var(--bs-text-gray-700); +} + +.btn.btn-icon-gray-700 i, +.btn.btn-icon-gray-700 .svg-icon { + color: var(--bs-text-gray-700); +} +.btn.btn-icon-gray-700.dropdown-toggle:after { + color: var(--bs-text-gray-700); +} +.btn-check:checked + .btn.btn-active-icon-gray-700 i, +.btn-check:checked + .btn.btn-active-icon-gray-700 .svg-icon, .btn-check:active + .btn.btn-active-icon-gray-700 i, +.btn-check:active + .btn.btn-active-icon-gray-700 .svg-icon, .btn.btn-active-icon-gray-700:focus:not(.btn-active) i, +.btn.btn-active-icon-gray-700:focus:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-700:hover:not(.btn-active) i, +.btn.btn-active-icon-gray-700:hover:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-700:active:not(.btn-active) i, +.btn.btn-active-icon-gray-700:active:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-700.active i, +.btn.btn-active-icon-gray-700.active .svg-icon, .btn.btn-active-icon-gray-700.show i, +.btn.btn-active-icon-gray-700.show .svg-icon, .show > .btn.btn-active-icon-gray-700 i, +.show > .btn.btn-active-icon-gray-700 .svg-icon { + color: var(--bs-text-gray-700); +} +.btn-check:checked + .btn.btn-active-icon-gray-700.dropdown-toggle:after, .btn-check:active + .btn.btn-active-icon-gray-700.dropdown-toggle:after, .btn.btn-active-icon-gray-700:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-700:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-700:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-700.active.dropdown-toggle:after, .btn.btn-active-icon-gray-700.show.dropdown-toggle:after, .show > .btn.btn-active-icon-gray-700.dropdown-toggle:after { + color: var(--bs-text-gray-700); +} + +.btn.btn-text-gray-700 { + color: var(--bs-text-gray-700); +} +.btn-check:checked + .btn.btn-active-text-gray-700, .btn-check:active + .btn.btn-active-text-gray-700, .btn.btn-active-text-gray-700:focus:not(.btn-active), .btn.btn-active-text-gray-700:hover:not(.btn-active), .btn.btn-active-text-gray-700:active:not(.btn-active), .btn.btn-active-text-gray-700.active, .btn.btn-active-text-gray-700.show, .show > .btn.btn-active-text-gray-700 { + color: var(--bs-text-gray-700); +} + +.btn.btn-color-gray-800 { + color: var(--bs-text-gray-800); +} +.btn.btn-color-gray-800 i, +.btn.btn-color-gray-800 .svg-icon { + color: var(--bs-text-gray-800); +} +.btn.btn-color-gray-800.dropdown-toggle:after { + color: var(--bs-text-gray-800); +} +.btn-check:checked + .btn.btn-active-color-gray-800, .btn-check:active + .btn.btn-active-color-gray-800, .btn.btn-active-color-gray-800:focus:not(.btn-active), .btn.btn-active-color-gray-800:hover:not(.btn-active), .btn.btn-active-color-gray-800:active:not(.btn-active), .btn.btn-active-color-gray-800.active, .btn.btn-active-color-gray-800.show, .show > .btn.btn-active-color-gray-800 { + color: var(--bs-text-gray-800); +} +.btn-check:checked + .btn.btn-active-color-gray-800 i, +.btn-check:checked + .btn.btn-active-color-gray-800 .svg-icon, .btn-check:active + .btn.btn-active-color-gray-800 i, +.btn-check:active + .btn.btn-active-color-gray-800 .svg-icon, .btn.btn-active-color-gray-800:focus:not(.btn-active) i, +.btn.btn-active-color-gray-800:focus:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-800:hover:not(.btn-active) i, +.btn.btn-active-color-gray-800:hover:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-800:active:not(.btn-active) i, +.btn.btn-active-color-gray-800:active:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-800.active i, +.btn.btn-active-color-gray-800.active .svg-icon, .btn.btn-active-color-gray-800.show i, +.btn.btn-active-color-gray-800.show .svg-icon, .show > .btn.btn-active-color-gray-800 i, +.show > .btn.btn-active-color-gray-800 .svg-icon { + color: var(--bs-text-gray-800); +} +.btn-check:checked + .btn.btn-active-color-gray-800.dropdown-toggle:after, .btn-check:active + .btn.btn-active-color-gray-800.dropdown-toggle:after, .btn.btn-active-color-gray-800:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-800:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-800:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-800.active.dropdown-toggle:after, .btn.btn-active-color-gray-800.show.dropdown-toggle:after, .show > .btn.btn-active-color-gray-800.dropdown-toggle:after { + color: var(--bs-text-gray-800); +} + +.btn.btn-icon-gray-800 i, +.btn.btn-icon-gray-800 .svg-icon { + color: var(--bs-text-gray-800); +} +.btn.btn-icon-gray-800.dropdown-toggle:after { + color: var(--bs-text-gray-800); +} +.btn-check:checked + .btn.btn-active-icon-gray-800 i, +.btn-check:checked + .btn.btn-active-icon-gray-800 .svg-icon, .btn-check:active + .btn.btn-active-icon-gray-800 i, +.btn-check:active + .btn.btn-active-icon-gray-800 .svg-icon, .btn.btn-active-icon-gray-800:focus:not(.btn-active) i, +.btn.btn-active-icon-gray-800:focus:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-800:hover:not(.btn-active) i, +.btn.btn-active-icon-gray-800:hover:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-800:active:not(.btn-active) i, +.btn.btn-active-icon-gray-800:active:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-800.active i, +.btn.btn-active-icon-gray-800.active .svg-icon, .btn.btn-active-icon-gray-800.show i, +.btn.btn-active-icon-gray-800.show .svg-icon, .show > .btn.btn-active-icon-gray-800 i, +.show > .btn.btn-active-icon-gray-800 .svg-icon { + color: var(--bs-text-gray-800); +} +.btn-check:checked + .btn.btn-active-icon-gray-800.dropdown-toggle:after, .btn-check:active + .btn.btn-active-icon-gray-800.dropdown-toggle:after, .btn.btn-active-icon-gray-800:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-800:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-800:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-800.active.dropdown-toggle:after, .btn.btn-active-icon-gray-800.show.dropdown-toggle:after, .show > .btn.btn-active-icon-gray-800.dropdown-toggle:after { + color: var(--bs-text-gray-800); +} + +.btn.btn-text-gray-800 { + color: var(--bs-text-gray-800); +} +.btn-check:checked + .btn.btn-active-text-gray-800, .btn-check:active + .btn.btn-active-text-gray-800, .btn.btn-active-text-gray-800:focus:not(.btn-active), .btn.btn-active-text-gray-800:hover:not(.btn-active), .btn.btn-active-text-gray-800:active:not(.btn-active), .btn.btn-active-text-gray-800.active, .btn.btn-active-text-gray-800.show, .show > .btn.btn-active-text-gray-800 { + color: var(--bs-text-gray-800); +} + +.btn.btn-color-gray-900 { + color: var(--bs-text-gray-900); +} +.btn.btn-color-gray-900 i, +.btn.btn-color-gray-900 .svg-icon { + color: var(--bs-text-gray-900); +} +.btn.btn-color-gray-900.dropdown-toggle:after { + color: var(--bs-text-gray-900); +} +.btn-check:checked + .btn.btn-active-color-gray-900, .btn-check:active + .btn.btn-active-color-gray-900, .btn.btn-active-color-gray-900:focus:not(.btn-active), .btn.btn-active-color-gray-900:hover:not(.btn-active), .btn.btn-active-color-gray-900:active:not(.btn-active), .btn.btn-active-color-gray-900.active, .btn.btn-active-color-gray-900.show, .show > .btn.btn-active-color-gray-900 { + color: var(--bs-text-gray-900); +} +.btn-check:checked + .btn.btn-active-color-gray-900 i, +.btn-check:checked + .btn.btn-active-color-gray-900 .svg-icon, .btn-check:active + .btn.btn-active-color-gray-900 i, +.btn-check:active + .btn.btn-active-color-gray-900 .svg-icon, .btn.btn-active-color-gray-900:focus:not(.btn-active) i, +.btn.btn-active-color-gray-900:focus:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-900:hover:not(.btn-active) i, +.btn.btn-active-color-gray-900:hover:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-900:active:not(.btn-active) i, +.btn.btn-active-color-gray-900:active:not(.btn-active) .svg-icon, .btn.btn-active-color-gray-900.active i, +.btn.btn-active-color-gray-900.active .svg-icon, .btn.btn-active-color-gray-900.show i, +.btn.btn-active-color-gray-900.show .svg-icon, .show > .btn.btn-active-color-gray-900 i, +.show > .btn.btn-active-color-gray-900 .svg-icon { + color: var(--bs-text-gray-900); +} +.btn-check:checked + .btn.btn-active-color-gray-900.dropdown-toggle:after, .btn-check:active + .btn.btn-active-color-gray-900.dropdown-toggle:after, .btn.btn-active-color-gray-900:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-900:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-900:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-color-gray-900.active.dropdown-toggle:after, .btn.btn-active-color-gray-900.show.dropdown-toggle:after, .show > .btn.btn-active-color-gray-900.dropdown-toggle:after { + color: var(--bs-text-gray-900); +} + +.btn.btn-icon-gray-900 i, +.btn.btn-icon-gray-900 .svg-icon { + color: var(--bs-text-gray-900); +} +.btn.btn-icon-gray-900.dropdown-toggle:after { + color: var(--bs-text-gray-900); +} +.btn-check:checked + .btn.btn-active-icon-gray-900 i, +.btn-check:checked + .btn.btn-active-icon-gray-900 .svg-icon, .btn-check:active + .btn.btn-active-icon-gray-900 i, +.btn-check:active + .btn.btn-active-icon-gray-900 .svg-icon, .btn.btn-active-icon-gray-900:focus:not(.btn-active) i, +.btn.btn-active-icon-gray-900:focus:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-900:hover:not(.btn-active) i, +.btn.btn-active-icon-gray-900:hover:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-900:active:not(.btn-active) i, +.btn.btn-active-icon-gray-900:active:not(.btn-active) .svg-icon, .btn.btn-active-icon-gray-900.active i, +.btn.btn-active-icon-gray-900.active .svg-icon, .btn.btn-active-icon-gray-900.show i, +.btn.btn-active-icon-gray-900.show .svg-icon, .show > .btn.btn-active-icon-gray-900 i, +.show > .btn.btn-active-icon-gray-900 .svg-icon { + color: var(--bs-text-gray-900); +} +.btn-check:checked + .btn.btn-active-icon-gray-900.dropdown-toggle:after, .btn-check:active + .btn.btn-active-icon-gray-900.dropdown-toggle:after, .btn.btn-active-icon-gray-900:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-900:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-900:active:not(.btn-active).dropdown-toggle:after, .btn.btn-active-icon-gray-900.active.dropdown-toggle:after, .btn.btn-active-icon-gray-900.show.dropdown-toggle:after, .show > .btn.btn-active-icon-gray-900.dropdown-toggle:after { + color: var(--bs-text-gray-900); +} + +.btn.btn-text-gray-900 { + color: var(--bs-text-gray-900); +} +.btn-check:checked + .btn.btn-active-text-gray-900, .btn-check:active + .btn.btn-active-text-gray-900, .btn.btn-active-text-gray-900:focus:not(.btn-active), .btn.btn-active-text-gray-900:hover:not(.btn-active), .btn.btn-active-text-gray-900:active:not(.btn-active), .btn.btn-active-text-gray-900.active, .btn.btn-active-text-gray-900.show, .show > .btn.btn-active-text-gray-900 { + color: var(--bs-text-gray-900); +} + +.btn.btn-facebook { + color: #ffffff; + border-color: #3b5998; + background-color: #3b5998; +} +.btn.btn-facebook i, +.btn.btn-facebook .svg-icon { + color: #ffffff; +} +.btn.btn-facebook.dropdown-toggle:after { + color: #ffffff; +} +.btn-check:checked + .btn.btn-facebook, .btn-check:active + .btn.btn-facebook, .btn.btn-facebook:focus:not(.btn-active), .btn.btn-facebook:hover:not(.btn-active), .btn.btn-facebook:active:not(.btn-active), .btn.btn-facebook.active, .btn.btn-facebook.show, .show > .btn.btn-facebook { + border-color: #30497c; + background-color: #30497c !important; +} + +.btn.btn-light-facebook { + color: #3b5998; + border-color: rgba(59, 89, 152, 0.1); + background-color: rgba(59, 89, 152, 0.1); +} +.btn.btn-light-facebook i, +.btn.btn-light-facebook .svg-icon { + color: #3b5998; +} +.btn.btn-light-facebook.dropdown-toggle:after { + color: #3b5998; +} +.btn-check:checked + .btn.btn-light-facebook, .btn-check:active + .btn.btn-light-facebook, .btn.btn-light-facebook:focus:not(.btn-active), .btn.btn-light-facebook:hover:not(.btn-active), .btn.btn-light-facebook:active:not(.btn-active), .btn.btn-light-facebook.active, .btn.btn-light-facebook.show, .show > .btn.btn-light-facebook { + color: #ffffff; + border-color: #3b5998; + background-color: #3b5998 !important; +} +.btn-check:checked + .btn.btn-light-facebook i, +.btn-check:checked + .btn.btn-light-facebook .svg-icon, .btn-check:active + .btn.btn-light-facebook i, +.btn-check:active + .btn.btn-light-facebook .svg-icon, .btn.btn-light-facebook:focus:not(.btn-active) i, +.btn.btn-light-facebook:focus:not(.btn-active) .svg-icon, .btn.btn-light-facebook:hover:not(.btn-active) i, +.btn.btn-light-facebook:hover:not(.btn-active) .svg-icon, .btn.btn-light-facebook:active:not(.btn-active) i, +.btn.btn-light-facebook:active:not(.btn-active) .svg-icon, .btn.btn-light-facebook.active i, +.btn.btn-light-facebook.active .svg-icon, .btn.btn-light-facebook.show i, +.btn.btn-light-facebook.show .svg-icon, .show > .btn.btn-light-facebook i, +.show > .btn.btn-light-facebook .svg-icon { + color: #ffffff; +} +.btn-check:checked + .btn.btn-light-facebook.dropdown-toggle:after, .btn-check:active + .btn.btn-light-facebook.dropdown-toggle:after, .btn.btn-light-facebook:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-light-facebook:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-light-facebook:active:not(.btn-active).dropdown-toggle:after, .btn.btn-light-facebook.active.dropdown-toggle:after, .btn.btn-light-facebook.show.dropdown-toggle:after, .show > .btn.btn-light-facebook.dropdown-toggle:after { + color: #ffffff; +} + +.btn.btn-google { + color: #ffffff; + border-color: #dd4b39; + background-color: #dd4b39; +} +.btn.btn-google i, +.btn.btn-google .svg-icon { + color: #ffffff; +} +.btn.btn-google.dropdown-toggle:after { + color: #ffffff; +} +.btn-check:checked + .btn.btn-google, .btn-check:active + .btn.btn-google, .btn.btn-google:focus:not(.btn-active), .btn.btn-google:hover:not(.btn-active), .btn.btn-google:active:not(.btn-active), .btn.btn-google.active, .btn.btn-google.show, .show > .btn.btn-google { + border-color: #cd3623; + background-color: #cd3623 !important; +} + +.btn.btn-light-google { + color: #dd4b39; + border-color: rgba(221, 75, 57, 0.1); + background-color: rgba(221, 75, 57, 0.1); +} +.btn.btn-light-google i, +.btn.btn-light-google .svg-icon { + color: #dd4b39; +} +.btn.btn-light-google.dropdown-toggle:after { + color: #dd4b39; +} +.btn-check:checked + .btn.btn-light-google, .btn-check:active + .btn.btn-light-google, .btn.btn-light-google:focus:not(.btn-active), .btn.btn-light-google:hover:not(.btn-active), .btn.btn-light-google:active:not(.btn-active), .btn.btn-light-google.active, .btn.btn-light-google.show, .show > .btn.btn-light-google { + color: #ffffff; + border-color: #dd4b39; + background-color: #dd4b39 !important; +} +.btn-check:checked + .btn.btn-light-google i, +.btn-check:checked + .btn.btn-light-google .svg-icon, .btn-check:active + .btn.btn-light-google i, +.btn-check:active + .btn.btn-light-google .svg-icon, .btn.btn-light-google:focus:not(.btn-active) i, +.btn.btn-light-google:focus:not(.btn-active) .svg-icon, .btn.btn-light-google:hover:not(.btn-active) i, +.btn.btn-light-google:hover:not(.btn-active) .svg-icon, .btn.btn-light-google:active:not(.btn-active) i, +.btn.btn-light-google:active:not(.btn-active) .svg-icon, .btn.btn-light-google.active i, +.btn.btn-light-google.active .svg-icon, .btn.btn-light-google.show i, +.btn.btn-light-google.show .svg-icon, .show > .btn.btn-light-google i, +.show > .btn.btn-light-google .svg-icon { + color: #ffffff; +} +.btn-check:checked + .btn.btn-light-google.dropdown-toggle:after, .btn-check:active + .btn.btn-light-google.dropdown-toggle:after, .btn.btn-light-google:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-light-google:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-light-google:active:not(.btn-active).dropdown-toggle:after, .btn.btn-light-google.active.dropdown-toggle:after, .btn.btn-light-google.show.dropdown-toggle:after, .show > .btn.btn-light-google.dropdown-toggle:after { + color: #ffffff; +} + +.btn.btn-twitter { + color: #ffffff; + border-color: #1da1f2; + background-color: #1da1f2; +} +.btn.btn-twitter i, +.btn.btn-twitter .svg-icon { + color: #ffffff; +} +.btn.btn-twitter.dropdown-toggle:after { + color: #ffffff; +} +.btn-check:checked + .btn.btn-twitter, .btn-check:active + .btn.btn-twitter, .btn.btn-twitter:focus:not(.btn-active), .btn.btn-twitter:hover:not(.btn-active), .btn.btn-twitter:active:not(.btn-active), .btn.btn-twitter.active, .btn.btn-twitter.show, .show > .btn.btn-twitter { + border-color: #0d8ddc; + background-color: #0d8ddc !important; +} + +.btn.btn-light-twitter { + color: #1da1f2; + border-color: rgba(29, 161, 242, 0.1); + background-color: rgba(29, 161, 242, 0.1); +} +.btn.btn-light-twitter i, +.btn.btn-light-twitter .svg-icon { + color: #1da1f2; +} +.btn.btn-light-twitter.dropdown-toggle:after { + color: #1da1f2; +} +.btn-check:checked + .btn.btn-light-twitter, .btn-check:active + .btn.btn-light-twitter, .btn.btn-light-twitter:focus:not(.btn-active), .btn.btn-light-twitter:hover:not(.btn-active), .btn.btn-light-twitter:active:not(.btn-active), .btn.btn-light-twitter.active, .btn.btn-light-twitter.show, .show > .btn.btn-light-twitter { + color: #ffffff; + border-color: #1da1f2; + background-color: #1da1f2 !important; +} +.btn-check:checked + .btn.btn-light-twitter i, +.btn-check:checked + .btn.btn-light-twitter .svg-icon, .btn-check:active + .btn.btn-light-twitter i, +.btn-check:active + .btn.btn-light-twitter .svg-icon, .btn.btn-light-twitter:focus:not(.btn-active) i, +.btn.btn-light-twitter:focus:not(.btn-active) .svg-icon, .btn.btn-light-twitter:hover:not(.btn-active) i, +.btn.btn-light-twitter:hover:not(.btn-active) .svg-icon, .btn.btn-light-twitter:active:not(.btn-active) i, +.btn.btn-light-twitter:active:not(.btn-active) .svg-icon, .btn.btn-light-twitter.active i, +.btn.btn-light-twitter.active .svg-icon, .btn.btn-light-twitter.show i, +.btn.btn-light-twitter.show .svg-icon, .show > .btn.btn-light-twitter i, +.show > .btn.btn-light-twitter .svg-icon { + color: #ffffff; +} +.btn-check:checked + .btn.btn-light-twitter.dropdown-toggle:after, .btn-check:active + .btn.btn-light-twitter.dropdown-toggle:after, .btn.btn-light-twitter:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-light-twitter:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-light-twitter:active:not(.btn-active).dropdown-toggle:after, .btn.btn-light-twitter.active.dropdown-toggle:after, .btn.btn-light-twitter.show.dropdown-toggle:after, .show > .btn.btn-light-twitter.dropdown-toggle:after { + color: #ffffff; +} + +.btn.btn-instagram { + color: #ffffff; + border-color: #e1306c; + background-color: #e1306c; +} +.btn.btn-instagram i, +.btn.btn-instagram .svg-icon { + color: #ffffff; +} +.btn.btn-instagram.dropdown-toggle:after { + color: #ffffff; +} +.btn-check:checked + .btn.btn-instagram, .btn-check:active + .btn.btn-instagram, .btn.btn-instagram:focus:not(.btn-active), .btn.btn-instagram:hover:not(.btn-active), .btn.btn-instagram:active:not(.btn-active), .btn.btn-instagram.active, .btn.btn-instagram.show, .show > .btn.btn-instagram { + border-color: #cd1e59; + background-color: #cd1e59 !important; +} + +.btn.btn-light-instagram { + color: #e1306c; + border-color: rgba(225, 48, 108, 0.1); + background-color: rgba(225, 48, 108, 0.1); +} +.btn.btn-light-instagram i, +.btn.btn-light-instagram .svg-icon { + color: #e1306c; +} +.btn.btn-light-instagram.dropdown-toggle:after { + color: #e1306c; +} +.btn-check:checked + .btn.btn-light-instagram, .btn-check:active + .btn.btn-light-instagram, .btn.btn-light-instagram:focus:not(.btn-active), .btn.btn-light-instagram:hover:not(.btn-active), .btn.btn-light-instagram:active:not(.btn-active), .btn.btn-light-instagram.active, .btn.btn-light-instagram.show, .show > .btn.btn-light-instagram { + color: #ffffff; + border-color: #e1306c; + background-color: #e1306c !important; +} +.btn-check:checked + .btn.btn-light-instagram i, +.btn-check:checked + .btn.btn-light-instagram .svg-icon, .btn-check:active + .btn.btn-light-instagram i, +.btn-check:active + .btn.btn-light-instagram .svg-icon, .btn.btn-light-instagram:focus:not(.btn-active) i, +.btn.btn-light-instagram:focus:not(.btn-active) .svg-icon, .btn.btn-light-instagram:hover:not(.btn-active) i, +.btn.btn-light-instagram:hover:not(.btn-active) .svg-icon, .btn.btn-light-instagram:active:not(.btn-active) i, +.btn.btn-light-instagram:active:not(.btn-active) .svg-icon, .btn.btn-light-instagram.active i, +.btn.btn-light-instagram.active .svg-icon, .btn.btn-light-instagram.show i, +.btn.btn-light-instagram.show .svg-icon, .show > .btn.btn-light-instagram i, +.show > .btn.btn-light-instagram .svg-icon { + color: #ffffff; +} +.btn-check:checked + .btn.btn-light-instagram.dropdown-toggle:after, .btn-check:active + .btn.btn-light-instagram.dropdown-toggle:after, .btn.btn-light-instagram:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-light-instagram:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-light-instagram:active:not(.btn-active).dropdown-toggle:after, .btn.btn-light-instagram.active.dropdown-toggle:after, .btn.btn-light-instagram.show.dropdown-toggle:after, .show > .btn.btn-light-instagram.dropdown-toggle:after { + color: #ffffff; +} + +.btn.btn-youtube { + color: #ffffff; + border-color: #ff0000; + background-color: #ff0000; +} +.btn.btn-youtube i, +.btn.btn-youtube .svg-icon { + color: #ffffff; +} +.btn.btn-youtube.dropdown-toggle:after { + color: #ffffff; +} +.btn-check:checked + .btn.btn-youtube, .btn-check:active + .btn.btn-youtube, .btn.btn-youtube:focus:not(.btn-active), .btn.btn-youtube:hover:not(.btn-active), .btn.btn-youtube:active:not(.btn-active), .btn.btn-youtube.active, .btn.btn-youtube.show, .show > .btn.btn-youtube { + border-color: #d90000; + background-color: #d90000 !important; +} + +.btn.btn-light-youtube { + color: #ff0000; + border-color: rgba(255, 0, 0, 0.1); + background-color: rgba(255, 0, 0, 0.1); +} +.btn.btn-light-youtube i, +.btn.btn-light-youtube .svg-icon { + color: #ff0000; +} +.btn.btn-light-youtube.dropdown-toggle:after { + color: #ff0000; +} +.btn-check:checked + .btn.btn-light-youtube, .btn-check:active + .btn.btn-light-youtube, .btn.btn-light-youtube:focus:not(.btn-active), .btn.btn-light-youtube:hover:not(.btn-active), .btn.btn-light-youtube:active:not(.btn-active), .btn.btn-light-youtube.active, .btn.btn-light-youtube.show, .show > .btn.btn-light-youtube { + color: #ffffff; + border-color: #ff0000; + background-color: #ff0000 !important; +} +.btn-check:checked + .btn.btn-light-youtube i, +.btn-check:checked + .btn.btn-light-youtube .svg-icon, .btn-check:active + .btn.btn-light-youtube i, +.btn-check:active + .btn.btn-light-youtube .svg-icon, .btn.btn-light-youtube:focus:not(.btn-active) i, +.btn.btn-light-youtube:focus:not(.btn-active) .svg-icon, .btn.btn-light-youtube:hover:not(.btn-active) i, +.btn.btn-light-youtube:hover:not(.btn-active) .svg-icon, .btn.btn-light-youtube:active:not(.btn-active) i, +.btn.btn-light-youtube:active:not(.btn-active) .svg-icon, .btn.btn-light-youtube.active i, +.btn.btn-light-youtube.active .svg-icon, .btn.btn-light-youtube.show i, +.btn.btn-light-youtube.show .svg-icon, .show > .btn.btn-light-youtube i, +.show > .btn.btn-light-youtube .svg-icon { + color: #ffffff; +} +.btn-check:checked + .btn.btn-light-youtube.dropdown-toggle:after, .btn-check:active + .btn.btn-light-youtube.dropdown-toggle:after, .btn.btn-light-youtube:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-light-youtube:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-light-youtube:active:not(.btn-active).dropdown-toggle:after, .btn.btn-light-youtube.active.dropdown-toggle:after, .btn.btn-light-youtube.show.dropdown-toggle:after, .show > .btn.btn-light-youtube.dropdown-toggle:after { + color: #ffffff; +} + +.btn.btn-linkedin { + color: #ffffff; + border-color: #0077b5; + background-color: #0077b5; +} +.btn.btn-linkedin i, +.btn.btn-linkedin .svg-icon { + color: #ffffff; +} +.btn.btn-linkedin.dropdown-toggle:after { + color: #ffffff; +} +.btn-check:checked + .btn.btn-linkedin, .btn-check:active + .btn.btn-linkedin, .btn.btn-linkedin:focus:not(.btn-active), .btn.btn-linkedin:hover:not(.btn-active), .btn.btn-linkedin:active:not(.btn-active), .btn.btn-linkedin.active, .btn.btn-linkedin.show, .show > .btn.btn-linkedin { + border-color: #005e8f; + background-color: #005e8f !important; +} + +.btn.btn-light-linkedin { + color: #0077b5; + border-color: rgba(0, 119, 181, 0.1); + background-color: rgba(0, 119, 181, 0.1); +} +.btn.btn-light-linkedin i, +.btn.btn-light-linkedin .svg-icon { + color: #0077b5; +} +.btn.btn-light-linkedin.dropdown-toggle:after { + color: #0077b5; +} +.btn-check:checked + .btn.btn-light-linkedin, .btn-check:active + .btn.btn-light-linkedin, .btn.btn-light-linkedin:focus:not(.btn-active), .btn.btn-light-linkedin:hover:not(.btn-active), .btn.btn-light-linkedin:active:not(.btn-active), .btn.btn-light-linkedin.active, .btn.btn-light-linkedin.show, .show > .btn.btn-light-linkedin { + color: #ffffff; + border-color: #0077b5; + background-color: #0077b5 !important; +} +.btn-check:checked + .btn.btn-light-linkedin i, +.btn-check:checked + .btn.btn-light-linkedin .svg-icon, .btn-check:active + .btn.btn-light-linkedin i, +.btn-check:active + .btn.btn-light-linkedin .svg-icon, .btn.btn-light-linkedin:focus:not(.btn-active) i, +.btn.btn-light-linkedin:focus:not(.btn-active) .svg-icon, .btn.btn-light-linkedin:hover:not(.btn-active) i, +.btn.btn-light-linkedin:hover:not(.btn-active) .svg-icon, .btn.btn-light-linkedin:active:not(.btn-active) i, +.btn.btn-light-linkedin:active:not(.btn-active) .svg-icon, .btn.btn-light-linkedin.active i, +.btn.btn-light-linkedin.active .svg-icon, .btn.btn-light-linkedin.show i, +.btn.btn-light-linkedin.show .svg-icon, .show > .btn.btn-light-linkedin i, +.show > .btn.btn-light-linkedin .svg-icon { + color: #ffffff; +} +.btn-check:checked + .btn.btn-light-linkedin.dropdown-toggle:after, .btn-check:active + .btn.btn-light-linkedin.dropdown-toggle:after, .btn.btn-light-linkedin:focus:not(.btn-active).dropdown-toggle:after, .btn.btn-light-linkedin:hover:not(.btn-active).dropdown-toggle:after, .btn.btn-light-linkedin:active:not(.btn-active).dropdown-toggle:after, .btn.btn-light-linkedin.active.dropdown-toggle:after, .btn.btn-light-linkedin.show.dropdown-toggle:after, .show > .btn.btn-light-linkedin.dropdown-toggle:after { + color: #ffffff; +} + +code:not([class*=language-]) { + font-weight: 400; + color: var(--bs-code-color); + line-height: inherit; + font-size: inherit; + background-color: var(--bs-code-bg); + padding: 0.1rem 0.4rem; + margin: 0 0.5rem; + box-shadow: var(--bs-code-box-shadow); + border-radius: 0.3rem; +} + +.form-control.form-control-transparent { + background-color: transparent; + border-color: transparent; +} +.dropdown.show > .form-control.form-control-transparent, .form-control.form-control-transparent:active, .form-control.form-control-transparent.active, .form-control.form-control-transparent:focus, .form-control.form-control-transparent.focus { + background-color: transparent; + border-color: transparent; +} +.form-control.form-control-flush { + border: 0; + background-color: transparent; + outline: none !important; + box-shadow: none; + border-radius: 0; +} + +.form-control.form-control-solid { + background-color: var(--bs-gray-100); + border-color: var(--bs-gray-100); + color: var(--bs-gray-700); + transition: color 0.2s ease; +} +.form-control.form-control-solid::placeholder { + color: var(--bs-gray-500); +} +.form-control.form-control-solid::-moz-placeholder { + color: var(--bs-gray-500); + opacity: 1; +} +.dropdown.show > .form-control.form-control-solid, .form-control.form-control-solid:active, .form-control.form-control-solid.active, .form-control.form-control-solid:focus, .form-control.form-control-solid.focus { + background-color: var(--bs-gray-200); + border-color: var(--bs-gray-200); + color: var(--bs-gray-700); + transition: color 0.2s ease; +} + +.form-control-solid-bg { + background-color: var(--bs-gray-100); +} + +.form-control-plaintext { + color: var(--bs-gray-700); +} + +.placeholder-gray-500::placeholder { + color: var(--bs-gray-500); +} +.placeholder-gray-500::-moz-placeholder { + color: var(--bs-gray-500); + opacity: 1; +} + +.placeholder-white::placeholder { + color: #ffffff; +} +.placeholder-white::-moz-placeholder { + color: #ffffff; + opacity: 1; +} + +.resize-none { + resize: none; +} + +.form-floating .form-control.form-control-solid::placeholder { + color: transparent; +} + +.form-select { + appearance: none; +} +.form-select:focus { + border-color: var(--bs-form-select-focus-border-color); + box-shadow: var(--bs-form-select-box-shadow), var(--bs-form-select-focus-box-shadow); +} +.form-select:disabled { + color: var(--bs-form-select-disabled-color); + background-color: var(--bs-form-select-disabled-bg); + border-color: var(--bs-form-select-disabled-border-color); +} +.form-select:-moz-focusring { + text-shadow: 0 0 0 var(--bs-form-select-color); +} +.form-select.form-select-solid { + background-color: var(--bs-gray-100); + border-color: var(--bs-gray-100); + color: var(--bs-gray-700); + transition: color 0.2s ease; +} +.form-select.form-select-solid::placeholder { + color: var(--bs-gray-500); +} +.form-select.form-select-solid::-moz-placeholder { + color: var(--bs-gray-500); + opacity: 1; +} +.dropdown.show > .form-select.form-select-solid, .form-select.form-select-solid:active, .form-select.form-select-solid.active, .form-select.form-select-solid:focus, .form-select.form-select-solid.focus { + background-color: var(--bs-gray-200); + border-color: var(--bs-gray-200) !important; + color: var(--bs-gray-700); + transition: color 0.2s ease; +} +.form-select.form-select-transparent { + background-color: transparent; + border-color: transparent; + color: var(--bs-gray-700); +} +.form-select.form-select-transparent::placeholder { + color: var(--bs-gray-500); +} +.form-select.form-select-transparent::-moz-placeholder { + color: var(--bs-gray-500); + opacity: 1; +} +.dropdown.show > .form-select.form-select-transparent, .form-select.form-select-transparent:active, .form-select.form-select-transparent.active, .form-select.form-select-transparent:focus, .form-select.form-select-transparent.focus { + background-color: transparent; + border-color: transparent !important; + color: var(--bs-gray-700); +} + +.form-check:not(.form-switch) .form-check-input[type=checkbox] { + background-size: 60% 60%; +} +.form-check.form-check-sm .form-check-input { + height: 1.55rem; + width: 1.55rem; +} +.form-check.form-check-lg .form-check-input { + height: 2.25rem; + width: 2.25rem; +} +.form-check.form-check-inline { + display: inline-block; + margin-right: 1rem; +} +.form-check.form-check-solid .form-check-input { + border: 0; +} +.form-check.form-check-solid .form-check-input:not(:checked) { + background-color: var(--bs-gray-200); +} +.form-check.form-check-success .form-check-input:checked { + background-color: var(--bs-success); +} +.form-check.form-check-danger .form-check-input:checked { + background-color: var(--bs-danger); +} +.form-check.form-check-warning .form-check-input:checked { + background-color: var(--bs-warning); +} + +.form-check-custom { + display: flex; + align-items: center; + padding-left: 0; + margin: 0; +} +.form-check-custom .form-check-input { + margin: 0; + float: none; + flex-shrink: 0; +} +.form-check-custom .form-check-label { + margin-left: 0.55rem; +} + +.form-switch.form-check-custom .form-check-input { + height: 2.25rem; +} +.form-switch.form-check-custom.form-switch-sm .form-check-input { + height: 1.5rem; + width: 2.5rem; +} +.form-switch.form-check-custom.form-switch-lg .form-check-input { + height: 2.75rem; + width: 3.75rem; +} +.form-switch.form-check-solid .form-check-input { + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23ffffff'/%3e%3c/svg%3e"); +} +.form-switch.form-check-solid .form-check-input:not(:checked) { + background-color: var(--bs-gray-200); +} + +[data-bs-theme=dark] .form-switch .form-check-input:focus:not(:checked) { + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e"); +} + +.form-check-image { + position: relative; + overflow: hidden; +} +.form-check-image img { + max-width: 100%; +} +.form-check-image .form-check-wrapper { + border-radius: 0.625rem; + border: 2px solid transparent; + transition: all 0.2s ease-in-out; + cursor: pointer; + overflow: hidden; + margin-bottom: 0.75rem; +} +.form-check-image .form-check-rounded { + border-radius: 0.625rem; +} +.form-check-image .form-check-label { + font-weight: 600; + margin-left: 0.5rem; +} +.form-check-image.active .form-check-wrapper { + border-color: var(--bs-primary); +} +.form-check-image.form-check-success.active .form-check-wrapper { + border-color: var(--bs-success); +} +.form-check-image.form-check-danger.active .form-check-wrapper { + border-color: var(--bs-danger); +} +.form-check-image.disabled { + opacity: 0.65; +} + +.input-group.input-group-solid { + border-radius: 0.475rem; +} +.input-group.input-group-solid.input-group-sm { + border-radius: 0.425rem; +} +.input-group.input-group-solid.input-group-lg { + border-radius: 0.625rem; +} +.input-group.input-group-solid .input-group-text { + background-color: var(--bs-gray-100); + border-color: var(--bs-gray-100); +} +.input-group.input-group-solid .input-group-text + .form-control { + border-left-color: var(--bs-gray-300); +} +.input-group.input-group-solid .form-control { + background-color: var(--bs-gray-100); + border-color: var(--bs-gray-100); +} +.input-group.input-group-solid .form-control + .input-group-text { + border-left-color: var(--bs-gray-300); +} + +.form-floating .form-control.form-control-solid::placeholder { + color: transparent; +} + +.required:after { + content: "*"; + position: relative; + font-size: inherit; + color: var(--bs-danger); + padding-left: 0.25rem; + font-weight: 600; +} + +.progress-vertical { + display: flex; + align-items: stretch; + justify-content: space-between; +} +.progress-vertical .progress { + height: 100%; + border-radius: 0.475rem; + display: flex; + align-items: flex-end; + margin-right: 1rem; +} +.progress-vertical .progress:last-child { + margin-right: 0; +} +.progress-vertical .progress .progress-bar { + width: 8px; + border-radius: 0.475rem; +} + +.table:not(.table-bordered) > :not(:first-child) { + border-color: transparent; + border-width: 0; + border-style: none; +} +.table:not(.table-bordered) > :not(:last-child) > :last-child > * { + border-bottom-color: inherit; +} +.table:not(.table-bordered) tr, .table:not(.table-bordered) th, .table:not(.table-bordered) td { + border-color: inherit; + border-width: inherit; + border-style: inherit; + text-transform: inherit; + font-weight: inherit; + font-size: inherit; + color: inherit; + height: inherit; + min-height: inherit; +} +.table:not(.table-bordered) tr:first-child, .table:not(.table-bordered) th:first-child, .table:not(.table-bordered) td:first-child { + padding-left: 0; +} +.table:not(.table-bordered) tr:last-child, .table:not(.table-bordered) th:last-child, .table:not(.table-bordered) td:last-child { + padding-right: 0; +} +.table:not(.table-bordered) tfoot tr:last-child, +.table:not(.table-bordered) tbody tr:last-child { + border-bottom: 0 !important; +} +.table:not(.table-bordered) tfoot tr:last-child th, .table:not(.table-bordered) tfoot tr:last-child td, +.table:not(.table-bordered) tbody tr:last-child th, +.table:not(.table-bordered) tbody tr:last-child td { + border-bottom: 0 !important; +} +.table:not(.table-bordered) tfoot th, .table:not(.table-bordered) tfoot td { + border-top: inherit; +} +.table:not(.table-bordered).table-rounded { + border-radius: 0.475rem; + border-spacing: 0; + border-collapse: separate; +} +.table:not(.table-bordered).table-flush tr, .table:not(.table-bordered).table-flush th, .table:not(.table-bordered).table-flush td { + padding: inherit; +} +.table:not(.table-bordered).table-row-bordered tr { + border-bottom-width: 1px; + border-bottom-style: solid; + border-bottom-color: var(--bs-border-color); +} +.table:not(.table-bordered).table-row-bordered tfoot th, .table:not(.table-bordered).table-row-bordered tfoot td { + border-top-width: 1px !important; +} +.table:not(.table-bordered).table-row-dashed tr { + border-bottom-width: 1px; + border-bottom-style: dashed; + border-bottom-color: var(--bs-border-color); +} +.table:not(.table-bordered).table-row-dashed tfoot th, .table:not(.table-bordered).table-row-dashed tfoot td { + border-top-width: 1px !important; +} +.table:not(.table-bordered).table-row-gray-100 tr { + border-bottom-color: var(--bs-gray-100); +} +.table:not(.table-bordered).table-row-gray-200 tr { + border-bottom-color: var(--bs-gray-200); +} +.table:not(.table-bordered).table-row-gray-300 tr { + border-bottom-color: var(--bs-gray-300); +} +.table:not(.table-bordered).table-row-gray-400 tr { + border-bottom-color: var(--bs-gray-400); +} +.table:not(.table-bordered).table-row-gray-500 tr { + border-bottom-color: var(--bs-gray-500); +} +.table:not(.table-bordered).table-row-gray-600 tr { + border-bottom-color: var(--bs-gray-600); +} +.table:not(.table-bordered).table-row-gray-700 tr { + border-bottom-color: var(--bs-gray-700); +} +.table:not(.table-bordered).table-row-gray-800 tr { + border-bottom-color: var(--bs-gray-800); +} +.table:not(.table-bordered).table-row-gray-900 tr { + border-bottom-color: var(--bs-gray-900); +} + +.table-layout-fixed { + table-layout: fixed; +} + +.table-sort:after { + opacity: 0; +} + +.table-sort, +.table-sort-asc, +.table-sort-desc { + vertical-align: middle; +} +.table-sort:after, +.table-sort-asc:after, +.table-sort-desc:after { + position: relative; + display: inline-block; + width: 0.75rem; + height: 0.75rem; + content: " "; + bottom: auto; + right: auto; + left: auto; + margin-left: 0.5rem; +} + +.table-sort-asc:after { + opacity: 1; + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-muted); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-muted%29'%3e%3cpath d='M3.23571 2.72011L4.97917 4.46358C5.15176 4.63618 5.43158 4.63617 5.60417 4.46358C5.77676 4.29099 5.77676 4.01118 5.60417 3.83861L3.29463 1.52904C3.13192 1.36629 2.86809 1.36629 2.70538 1.52904L0.395812 3.83861C0.22325 4.01117 0.22325 4.29099 0.395812 4.46358C0.568437 4.63617 0.84825 4.63617 1.02081 4.46358L2.76429 2.72011C2.89446 2.58994 3.10554 2.58994 3.23571 2.72011Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-muted%29'%3e%3cpath d='M3.23571 2.72011L4.97917 4.46358C5.15176 4.63618 5.43158 4.63617 5.60417 4.46358C5.77676 4.29099 5.77676 4.01118 5.60417 3.83861L3.29463 1.52904C3.13192 1.36629 2.86809 1.36629 2.70538 1.52904L0.395812 3.83861C0.22325 4.01117 0.22325 4.29099 0.395812 4.46358C0.568437 4.63617 0.84825 4.63617 1.02081 4.46358L2.76429 2.72011C2.89446 2.58994 3.10554 2.58994 3.23571 2.72011Z'/%3e%3c/svg%3e"); +} + +.table-sort-desc:after { + opacity: 1; + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-muted); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-muted%29'%3e%3cpath d='M2.76429 3.27989L1.02083 1.53642C0.848244 1.36382 0.568419 1.36383 0.395831 1.53642C0.223244 1.70901 0.223244 1.98882 0.395831 2.16139L2.70537 4.47096C2.86808 4.63371 3.13191 4.63371 3.29462 4.47096L5.60419 2.16139C5.77675 1.98883 5.77675 1.70901 5.60419 1.53642C5.43156 1.36383 5.15175 1.36383 4.97919 1.53642L3.23571 3.27989C3.10554 3.41006 2.89446 3.41006 2.76429 3.27989Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-muted%29'%3e%3cpath d='M2.76429 3.27989L1.02083 1.53642C0.848244 1.36382 0.568419 1.36383 0.395831 1.53642C0.223244 1.70901 0.223244 1.98882 0.395831 2.16139L2.70537 4.47096C2.86808 4.63371 3.13191 4.63371 3.29462 4.47096L5.60419 2.16139C5.77675 1.98883 5.77675 1.70901 5.60419 1.53642C5.43156 1.36383 5.15175 1.36383 4.97919 1.53642L3.23571 3.27989C3.10554 3.41006 2.89446 3.41006 2.76429 3.27989Z'/%3e%3c/svg%3e"); +} + +.table-loading-message { + display: none; + position: absolute; + top: 50%; + left: 50%; + border-radius: 0.475rem; + box-shadow: var(--bs-table-loading-message-box-shadow); + background-color: var(--bs-table-loading-message-bg); + color: var(--bs-table-loading-message-color); + font-weight: 600; + margin: 0 !important; + width: auto; + padding: 0.85rem 2rem !important; + transform: translateX(-50%) translateY(-50%); +} + +.table-loading { + position: relative; +} +.table-loading .table-loading-message { + display: block; +} + +.table.g-0 th, .table.g-0 td { + padding: 0rem; +} +.table.g-0 th.dtr-control, .table.g-0 td.dtr-control { + padding-left: 0rem !important; +} + +.table.gy-0 th, .table.gy-0 td { + padding-top: 0rem; + padding-bottom: 0rem; +} + +.table.gx-0 th, .table.gx-0 td { + padding-left: 0rem; + padding-right: 0rem; +} +.table.gx-0 th.dtr-control, .table.gx-0 td.dtr-control { + padding-left: 0rem !important; +} + +.table.gs-0 th:first-child, .table.gs-0 td:first-child { + padding-left: 0rem; +} +.table.gs-0 th:last-child, .table.gs-0 td:last-child { + padding-right: 0rem; +} +.table.gs-0 th.dtr-control:first-child, .table.gs-0 td.dtr-control:first-child { + padding-left: 0rem !important; +} + +.table.g-1 th, .table.g-1 td { + padding: 0.25rem; +} +.table.g-1 th.dtr-control, .table.g-1 td.dtr-control { + padding-left: 0.25rem !important; +} + +.table.gy-1 th, .table.gy-1 td { + padding-top: 0.25rem; + padding-bottom: 0.25rem; +} + +.table.gx-1 th, .table.gx-1 td { + padding-left: 0.25rem; + padding-right: 0.25rem; +} +.table.gx-1 th.dtr-control, .table.gx-1 td.dtr-control { + padding-left: 0.25rem !important; +} + +.table.gs-1 th:first-child, .table.gs-1 td:first-child { + padding-left: 0.25rem; +} +.table.gs-1 th:last-child, .table.gs-1 td:last-child { + padding-right: 0.25rem; +} +.table.gs-1 th.dtr-control:first-child, .table.gs-1 td.dtr-control:first-child { + padding-left: 0.25rem !important; +} + +.table.g-2 th, .table.g-2 td { + padding: 0.5rem; +} +.table.g-2 th.dtr-control, .table.g-2 td.dtr-control { + padding-left: 0.5rem !important; +} + +.table.gy-2 th, .table.gy-2 td { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.table.gx-2 th, .table.gx-2 td { + padding-left: 0.5rem; + padding-right: 0.5rem; +} +.table.gx-2 th.dtr-control, .table.gx-2 td.dtr-control { + padding-left: 0.5rem !important; +} + +.table.gs-2 th:first-child, .table.gs-2 td:first-child { + padding-left: 0.5rem; +} +.table.gs-2 th:last-child, .table.gs-2 td:last-child { + padding-right: 0.5rem; +} +.table.gs-2 th.dtr-control:first-child, .table.gs-2 td.dtr-control:first-child { + padding-left: 0.5rem !important; +} + +.table.g-3 th, .table.g-3 td { + padding: 0.75rem; +} +.table.g-3 th.dtr-control, .table.g-3 td.dtr-control { + padding-left: 0.75rem !important; +} + +.table.gy-3 th, .table.gy-3 td { + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} + +.table.gx-3 th, .table.gx-3 td { + padding-left: 0.75rem; + padding-right: 0.75rem; +} +.table.gx-3 th.dtr-control, .table.gx-3 td.dtr-control { + padding-left: 0.75rem !important; +} + +.table.gs-3 th:first-child, .table.gs-3 td:first-child { + padding-left: 0.75rem; +} +.table.gs-3 th:last-child, .table.gs-3 td:last-child { + padding-right: 0.75rem; +} +.table.gs-3 th.dtr-control:first-child, .table.gs-3 td.dtr-control:first-child { + padding-left: 0.75rem !important; +} + +.table.g-4 th, .table.g-4 td { + padding: 1rem; +} +.table.g-4 th.dtr-control, .table.g-4 td.dtr-control { + padding-left: 1rem !important; +} + +.table.gy-4 th, .table.gy-4 td { + padding-top: 1rem; + padding-bottom: 1rem; +} + +.table.gx-4 th, .table.gx-4 td { + padding-left: 1rem; + padding-right: 1rem; +} +.table.gx-4 th.dtr-control, .table.gx-4 td.dtr-control { + padding-left: 1rem !important; +} + +.table.gs-4 th:first-child, .table.gs-4 td:first-child { + padding-left: 1rem; +} +.table.gs-4 th:last-child, .table.gs-4 td:last-child { + padding-right: 1rem; +} +.table.gs-4 th.dtr-control:first-child, .table.gs-4 td.dtr-control:first-child { + padding-left: 1rem !important; +} + +.table.g-5 th, .table.g-5 td { + padding: 1.25rem; +} +.table.g-5 th.dtr-control, .table.g-5 td.dtr-control { + padding-left: 1.25rem !important; +} + +.table.gy-5 th, .table.gy-5 td { + padding-top: 1.25rem; + padding-bottom: 1.25rem; +} + +.table.gx-5 th, .table.gx-5 td { + padding-left: 1.25rem; + padding-right: 1.25rem; +} +.table.gx-5 th.dtr-control, .table.gx-5 td.dtr-control { + padding-left: 1.25rem !important; +} + +.table.gs-5 th:first-child, .table.gs-5 td:first-child { + padding-left: 1.25rem; +} +.table.gs-5 th:last-child, .table.gs-5 td:last-child { + padding-right: 1.25rem; +} +.table.gs-5 th.dtr-control:first-child, .table.gs-5 td.dtr-control:first-child { + padding-left: 1.25rem !important; +} + +.table.g-6 th, .table.g-6 td { + padding: 1.5rem; +} +.table.g-6 th.dtr-control, .table.g-6 td.dtr-control { + padding-left: 1.5rem !important; +} + +.table.gy-6 th, .table.gy-6 td { + padding-top: 1.5rem; + padding-bottom: 1.5rem; +} + +.table.gx-6 th, .table.gx-6 td { + padding-left: 1.5rem; + padding-right: 1.5rem; +} +.table.gx-6 th.dtr-control, .table.gx-6 td.dtr-control { + padding-left: 1.5rem !important; +} + +.table.gs-6 th:first-child, .table.gs-6 td:first-child { + padding-left: 1.5rem; +} +.table.gs-6 th:last-child, .table.gs-6 td:last-child { + padding-right: 1.5rem; +} +.table.gs-6 th.dtr-control:first-child, .table.gs-6 td.dtr-control:first-child { + padding-left: 1.5rem !important; +} + +.table.g-7 th, .table.g-7 td { + padding: 1.75rem; +} +.table.g-7 th.dtr-control, .table.g-7 td.dtr-control { + padding-left: 1.75rem !important; +} + +.table.gy-7 th, .table.gy-7 td { + padding-top: 1.75rem; + padding-bottom: 1.75rem; +} + +.table.gx-7 th, .table.gx-7 td { + padding-left: 1.75rem; + padding-right: 1.75rem; +} +.table.gx-7 th.dtr-control, .table.gx-7 td.dtr-control { + padding-left: 1.75rem !important; +} + +.table.gs-7 th:first-child, .table.gs-7 td:first-child { + padding-left: 1.75rem; +} +.table.gs-7 th:last-child, .table.gs-7 td:last-child { + padding-right: 1.75rem; +} +.table.gs-7 th.dtr-control:first-child, .table.gs-7 td.dtr-control:first-child { + padding-left: 1.75rem !important; +} + +.table.g-8 th, .table.g-8 td { + padding: 2rem; +} +.table.g-8 th.dtr-control, .table.g-8 td.dtr-control { + padding-left: 2rem !important; +} + +.table.gy-8 th, .table.gy-8 td { + padding-top: 2rem; + padding-bottom: 2rem; +} + +.table.gx-8 th, .table.gx-8 td { + padding-left: 2rem; + padding-right: 2rem; +} +.table.gx-8 th.dtr-control, .table.gx-8 td.dtr-control { + padding-left: 2rem !important; +} + +.table.gs-8 th:first-child, .table.gs-8 td:first-child { + padding-left: 2rem; +} +.table.gs-8 th:last-child, .table.gs-8 td:last-child { + padding-right: 2rem; +} +.table.gs-8 th.dtr-control:first-child, .table.gs-8 td.dtr-control:first-child { + padding-left: 2rem !important; +} + +.table.g-9 th, .table.g-9 td { + padding: 2.25rem; +} +.table.g-9 th.dtr-control, .table.g-9 td.dtr-control { + padding-left: 2.25rem !important; +} + +.table.gy-9 th, .table.gy-9 td { + padding-top: 2.25rem; + padding-bottom: 2.25rem; +} + +.table.gx-9 th, .table.gx-9 td { + padding-left: 2.25rem; + padding-right: 2.25rem; +} +.table.gx-9 th.dtr-control, .table.gx-9 td.dtr-control { + padding-left: 2.25rem !important; +} + +.table.gs-9 th:first-child, .table.gs-9 td:first-child { + padding-left: 2.25rem; +} +.table.gs-9 th:last-child, .table.gs-9 td:last-child { + padding-right: 2.25rem; +} +.table.gs-9 th.dtr-control:first-child, .table.gs-9 td.dtr-control:first-child { + padding-left: 2.25rem !important; +} + +.table.g-10 th, .table.g-10 td { + padding: 2.5rem; +} +.table.g-10 th.dtr-control, .table.g-10 td.dtr-control { + padding-left: 2.5rem !important; +} + +.table.gy-10 th, .table.gy-10 td { + padding-top: 2.5rem; + padding-bottom: 2.5rem; +} + +.table.gx-10 th, .table.gx-10 td { + padding-left: 2.5rem; + padding-right: 2.5rem; +} +.table.gx-10 th.dtr-control, .table.gx-10 td.dtr-control { + padding-left: 2.5rem !important; +} + +.table.gs-10 th:first-child, .table.gs-10 td:first-child { + padding-left: 2.5rem; +} +.table.gs-10 th:last-child, .table.gs-10 td:last-child { + padding-right: 2.5rem; +} +.table.gs-10 th.dtr-control:first-child, .table.gs-10 td.dtr-control:first-child { + padding-left: 2.5rem !important; +} + +@media (min-width: 576px) { + .table.g-sm-0 th, .table.g-sm-0 td { + padding: 0rem; + } + .table.g-sm-0 th.dtr-control, .table.g-sm-0 td.dtr-control { + padding-left: 0rem !important; + } + .table.gy-sm-0 th, .table.gy-sm-0 td { + padding-top: 0rem; + padding-bottom: 0rem; + } + .table.gx-sm-0 th, .table.gx-sm-0 td { + padding-left: 0rem; + padding-right: 0rem; + } + .table.gx-sm-0 th.dtr-control, .table.gx-sm-0 td.dtr-control { + padding-left: 0rem !important; + } + .table.gs-sm-0 th:first-child, .table.gs-sm-0 td:first-child { + padding-left: 0rem; + } + .table.gs-sm-0 th:last-child, .table.gs-sm-0 td:last-child { + padding-right: 0rem; + } + .table.gs-sm-0 th.dtr-control:first-child, .table.gs-sm-0 td.dtr-control:first-child { + padding-left: 0rem !important; + } + .table.g-sm-1 th, .table.g-sm-1 td { + padding: 0.25rem; + } + .table.g-sm-1 th.dtr-control, .table.g-sm-1 td.dtr-control { + padding-left: 0.25rem !important; + } + .table.gy-sm-1 th, .table.gy-sm-1 td { + padding-top: 0.25rem; + padding-bottom: 0.25rem; + } + .table.gx-sm-1 th, .table.gx-sm-1 td { + padding-left: 0.25rem; + padding-right: 0.25rem; + } + .table.gx-sm-1 th.dtr-control, .table.gx-sm-1 td.dtr-control { + padding-left: 0.25rem !important; + } + .table.gs-sm-1 th:first-child, .table.gs-sm-1 td:first-child { + padding-left: 0.25rem; + } + .table.gs-sm-1 th:last-child, .table.gs-sm-1 td:last-child { + padding-right: 0.25rem; + } + .table.gs-sm-1 th.dtr-control:first-child, .table.gs-sm-1 td.dtr-control:first-child { + padding-left: 0.25rem !important; + } + .table.g-sm-2 th, .table.g-sm-2 td { + padding: 0.5rem; + } + .table.g-sm-2 th.dtr-control, .table.g-sm-2 td.dtr-control { + padding-left: 0.5rem !important; + } + .table.gy-sm-2 th, .table.gy-sm-2 td { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .table.gx-sm-2 th, .table.gx-sm-2 td { + padding-left: 0.5rem; + padding-right: 0.5rem; + } + .table.gx-sm-2 th.dtr-control, .table.gx-sm-2 td.dtr-control { + padding-left: 0.5rem !important; + } + .table.gs-sm-2 th:first-child, .table.gs-sm-2 td:first-child { + padding-left: 0.5rem; + } + .table.gs-sm-2 th:last-child, .table.gs-sm-2 td:last-child { + padding-right: 0.5rem; + } + .table.gs-sm-2 th.dtr-control:first-child, .table.gs-sm-2 td.dtr-control:first-child { + padding-left: 0.5rem !important; + } + .table.g-sm-3 th, .table.g-sm-3 td { + padding: 0.75rem; + } + .table.g-sm-3 th.dtr-control, .table.g-sm-3 td.dtr-control { + padding-left: 0.75rem !important; + } + .table.gy-sm-3 th, .table.gy-sm-3 td { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + } + .table.gx-sm-3 th, .table.gx-sm-3 td { + padding-left: 0.75rem; + padding-right: 0.75rem; + } + .table.gx-sm-3 th.dtr-control, .table.gx-sm-3 td.dtr-control { + padding-left: 0.75rem !important; + } + .table.gs-sm-3 th:first-child, .table.gs-sm-3 td:first-child { + padding-left: 0.75rem; + } + .table.gs-sm-3 th:last-child, .table.gs-sm-3 td:last-child { + padding-right: 0.75rem; + } + .table.gs-sm-3 th.dtr-control:first-child, .table.gs-sm-3 td.dtr-control:first-child { + padding-left: 0.75rem !important; + } + .table.g-sm-4 th, .table.g-sm-4 td { + padding: 1rem; + } + .table.g-sm-4 th.dtr-control, .table.g-sm-4 td.dtr-control { + padding-left: 1rem !important; + } + .table.gy-sm-4 th, .table.gy-sm-4 td { + padding-top: 1rem; + padding-bottom: 1rem; + } + .table.gx-sm-4 th, .table.gx-sm-4 td { + padding-left: 1rem; + padding-right: 1rem; + } + .table.gx-sm-4 th.dtr-control, .table.gx-sm-4 td.dtr-control { + padding-left: 1rem !important; + } + .table.gs-sm-4 th:first-child, .table.gs-sm-4 td:first-child { + padding-left: 1rem; + } + .table.gs-sm-4 th:last-child, .table.gs-sm-4 td:last-child { + padding-right: 1rem; + } + .table.gs-sm-4 th.dtr-control:first-child, .table.gs-sm-4 td.dtr-control:first-child { + padding-left: 1rem !important; + } + .table.g-sm-5 th, .table.g-sm-5 td { + padding: 1.25rem; + } + .table.g-sm-5 th.dtr-control, .table.g-sm-5 td.dtr-control { + padding-left: 1.25rem !important; + } + .table.gy-sm-5 th, .table.gy-sm-5 td { + padding-top: 1.25rem; + padding-bottom: 1.25rem; + } + .table.gx-sm-5 th, .table.gx-sm-5 td { + padding-left: 1.25rem; + padding-right: 1.25rem; + } + .table.gx-sm-5 th.dtr-control, .table.gx-sm-5 td.dtr-control { + padding-left: 1.25rem !important; + } + .table.gs-sm-5 th:first-child, .table.gs-sm-5 td:first-child { + padding-left: 1.25rem; + } + .table.gs-sm-5 th:last-child, .table.gs-sm-5 td:last-child { + padding-right: 1.25rem; + } + .table.gs-sm-5 th.dtr-control:first-child, .table.gs-sm-5 td.dtr-control:first-child { + padding-left: 1.25rem !important; + } + .table.g-sm-6 th, .table.g-sm-6 td { + padding: 1.5rem; + } + .table.g-sm-6 th.dtr-control, .table.g-sm-6 td.dtr-control { + padding-left: 1.5rem !important; + } + .table.gy-sm-6 th, .table.gy-sm-6 td { + padding-top: 1.5rem; + padding-bottom: 1.5rem; + } + .table.gx-sm-6 th, .table.gx-sm-6 td { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .table.gx-sm-6 th.dtr-control, .table.gx-sm-6 td.dtr-control { + padding-left: 1.5rem !important; + } + .table.gs-sm-6 th:first-child, .table.gs-sm-6 td:first-child { + padding-left: 1.5rem; + } + .table.gs-sm-6 th:last-child, .table.gs-sm-6 td:last-child { + padding-right: 1.5rem; + } + .table.gs-sm-6 th.dtr-control:first-child, .table.gs-sm-6 td.dtr-control:first-child { + padding-left: 1.5rem !important; + } + .table.g-sm-7 th, .table.g-sm-7 td { + padding: 1.75rem; + } + .table.g-sm-7 th.dtr-control, .table.g-sm-7 td.dtr-control { + padding-left: 1.75rem !important; + } + .table.gy-sm-7 th, .table.gy-sm-7 td { + padding-top: 1.75rem; + padding-bottom: 1.75rem; + } + .table.gx-sm-7 th, .table.gx-sm-7 td { + padding-left: 1.75rem; + padding-right: 1.75rem; + } + .table.gx-sm-7 th.dtr-control, .table.gx-sm-7 td.dtr-control { + padding-left: 1.75rem !important; + } + .table.gs-sm-7 th:first-child, .table.gs-sm-7 td:first-child { + padding-left: 1.75rem; + } + .table.gs-sm-7 th:last-child, .table.gs-sm-7 td:last-child { + padding-right: 1.75rem; + } + .table.gs-sm-7 th.dtr-control:first-child, .table.gs-sm-7 td.dtr-control:first-child { + padding-left: 1.75rem !important; + } + .table.g-sm-8 th, .table.g-sm-8 td { + padding: 2rem; + } + .table.g-sm-8 th.dtr-control, .table.g-sm-8 td.dtr-control { + padding-left: 2rem !important; + } + .table.gy-sm-8 th, .table.gy-sm-8 td { + padding-top: 2rem; + padding-bottom: 2rem; + } + .table.gx-sm-8 th, .table.gx-sm-8 td { + padding-left: 2rem; + padding-right: 2rem; + } + .table.gx-sm-8 th.dtr-control, .table.gx-sm-8 td.dtr-control { + padding-left: 2rem !important; + } + .table.gs-sm-8 th:first-child, .table.gs-sm-8 td:first-child { + padding-left: 2rem; + } + .table.gs-sm-8 th:last-child, .table.gs-sm-8 td:last-child { + padding-right: 2rem; + } + .table.gs-sm-8 th.dtr-control:first-child, .table.gs-sm-8 td.dtr-control:first-child { + padding-left: 2rem !important; + } + .table.g-sm-9 th, .table.g-sm-9 td { + padding: 2.25rem; + } + .table.g-sm-9 th.dtr-control, .table.g-sm-9 td.dtr-control { + padding-left: 2.25rem !important; + } + .table.gy-sm-9 th, .table.gy-sm-9 td { + padding-top: 2.25rem; + padding-bottom: 2.25rem; + } + .table.gx-sm-9 th, .table.gx-sm-9 td { + padding-left: 2.25rem; + padding-right: 2.25rem; + } + .table.gx-sm-9 th.dtr-control, .table.gx-sm-9 td.dtr-control { + padding-left: 2.25rem !important; + } + .table.gs-sm-9 th:first-child, .table.gs-sm-9 td:first-child { + padding-left: 2.25rem; + } + .table.gs-sm-9 th:last-child, .table.gs-sm-9 td:last-child { + padding-right: 2.25rem; + } + .table.gs-sm-9 th.dtr-control:first-child, .table.gs-sm-9 td.dtr-control:first-child { + padding-left: 2.25rem !important; + } + .table.g-sm-10 th, .table.g-sm-10 td { + padding: 2.5rem; + } + .table.g-sm-10 th.dtr-control, .table.g-sm-10 td.dtr-control { + padding-left: 2.5rem !important; + } + .table.gy-sm-10 th, .table.gy-sm-10 td { + padding-top: 2.5rem; + padding-bottom: 2.5rem; + } + .table.gx-sm-10 th, .table.gx-sm-10 td { + padding-left: 2.5rem; + padding-right: 2.5rem; + } + .table.gx-sm-10 th.dtr-control, .table.gx-sm-10 td.dtr-control { + padding-left: 2.5rem !important; + } + .table.gs-sm-10 th:first-child, .table.gs-sm-10 td:first-child { + padding-left: 2.5rem; + } + .table.gs-sm-10 th:last-child, .table.gs-sm-10 td:last-child { + padding-right: 2.5rem; + } + .table.gs-sm-10 th.dtr-control:first-child, .table.gs-sm-10 td.dtr-control:first-child { + padding-left: 2.5rem !important; + } +} +@media (min-width: 768px) { + .table.g-md-0 th, .table.g-md-0 td { + padding: 0rem; + } + .table.g-md-0 th.dtr-control, .table.g-md-0 td.dtr-control { + padding-left: 0rem !important; + } + .table.gy-md-0 th, .table.gy-md-0 td { + padding-top: 0rem; + padding-bottom: 0rem; + } + .table.gx-md-0 th, .table.gx-md-0 td { + padding-left: 0rem; + padding-right: 0rem; + } + .table.gx-md-0 th.dtr-control, .table.gx-md-0 td.dtr-control { + padding-left: 0rem !important; + } + .table.gs-md-0 th:first-child, .table.gs-md-0 td:first-child { + padding-left: 0rem; + } + .table.gs-md-0 th:last-child, .table.gs-md-0 td:last-child { + padding-right: 0rem; + } + .table.gs-md-0 th.dtr-control:first-child, .table.gs-md-0 td.dtr-control:first-child { + padding-left: 0rem !important; + } + .table.g-md-1 th, .table.g-md-1 td { + padding: 0.25rem; + } + .table.g-md-1 th.dtr-control, .table.g-md-1 td.dtr-control { + padding-left: 0.25rem !important; + } + .table.gy-md-1 th, .table.gy-md-1 td { + padding-top: 0.25rem; + padding-bottom: 0.25rem; + } + .table.gx-md-1 th, .table.gx-md-1 td { + padding-left: 0.25rem; + padding-right: 0.25rem; + } + .table.gx-md-1 th.dtr-control, .table.gx-md-1 td.dtr-control { + padding-left: 0.25rem !important; + } + .table.gs-md-1 th:first-child, .table.gs-md-1 td:first-child { + padding-left: 0.25rem; + } + .table.gs-md-1 th:last-child, .table.gs-md-1 td:last-child { + padding-right: 0.25rem; + } + .table.gs-md-1 th.dtr-control:first-child, .table.gs-md-1 td.dtr-control:first-child { + padding-left: 0.25rem !important; + } + .table.g-md-2 th, .table.g-md-2 td { + padding: 0.5rem; + } + .table.g-md-2 th.dtr-control, .table.g-md-2 td.dtr-control { + padding-left: 0.5rem !important; + } + .table.gy-md-2 th, .table.gy-md-2 td { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .table.gx-md-2 th, .table.gx-md-2 td { + padding-left: 0.5rem; + padding-right: 0.5rem; + } + .table.gx-md-2 th.dtr-control, .table.gx-md-2 td.dtr-control { + padding-left: 0.5rem !important; + } + .table.gs-md-2 th:first-child, .table.gs-md-2 td:first-child { + padding-left: 0.5rem; + } + .table.gs-md-2 th:last-child, .table.gs-md-2 td:last-child { + padding-right: 0.5rem; + } + .table.gs-md-2 th.dtr-control:first-child, .table.gs-md-2 td.dtr-control:first-child { + padding-left: 0.5rem !important; + } + .table.g-md-3 th, .table.g-md-3 td { + padding: 0.75rem; + } + .table.g-md-3 th.dtr-control, .table.g-md-3 td.dtr-control { + padding-left: 0.75rem !important; + } + .table.gy-md-3 th, .table.gy-md-3 td { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + } + .table.gx-md-3 th, .table.gx-md-3 td { + padding-left: 0.75rem; + padding-right: 0.75rem; + } + .table.gx-md-3 th.dtr-control, .table.gx-md-3 td.dtr-control { + padding-left: 0.75rem !important; + } + .table.gs-md-3 th:first-child, .table.gs-md-3 td:first-child { + padding-left: 0.75rem; + } + .table.gs-md-3 th:last-child, .table.gs-md-3 td:last-child { + padding-right: 0.75rem; + } + .table.gs-md-3 th.dtr-control:first-child, .table.gs-md-3 td.dtr-control:first-child { + padding-left: 0.75rem !important; + } + .table.g-md-4 th, .table.g-md-4 td { + padding: 1rem; + } + .table.g-md-4 th.dtr-control, .table.g-md-4 td.dtr-control { + padding-left: 1rem !important; + } + .table.gy-md-4 th, .table.gy-md-4 td { + padding-top: 1rem; + padding-bottom: 1rem; + } + .table.gx-md-4 th, .table.gx-md-4 td { + padding-left: 1rem; + padding-right: 1rem; + } + .table.gx-md-4 th.dtr-control, .table.gx-md-4 td.dtr-control { + padding-left: 1rem !important; + } + .table.gs-md-4 th:first-child, .table.gs-md-4 td:first-child { + padding-left: 1rem; + } + .table.gs-md-4 th:last-child, .table.gs-md-4 td:last-child { + padding-right: 1rem; + } + .table.gs-md-4 th.dtr-control:first-child, .table.gs-md-4 td.dtr-control:first-child { + padding-left: 1rem !important; + } + .table.g-md-5 th, .table.g-md-5 td { + padding: 1.25rem; + } + .table.g-md-5 th.dtr-control, .table.g-md-5 td.dtr-control { + padding-left: 1.25rem !important; + } + .table.gy-md-5 th, .table.gy-md-5 td { + padding-top: 1.25rem; + padding-bottom: 1.25rem; + } + .table.gx-md-5 th, .table.gx-md-5 td { + padding-left: 1.25rem; + padding-right: 1.25rem; + } + .table.gx-md-5 th.dtr-control, .table.gx-md-5 td.dtr-control { + padding-left: 1.25rem !important; + } + .table.gs-md-5 th:first-child, .table.gs-md-5 td:first-child { + padding-left: 1.25rem; + } + .table.gs-md-5 th:last-child, .table.gs-md-5 td:last-child { + padding-right: 1.25rem; + } + .table.gs-md-5 th.dtr-control:first-child, .table.gs-md-5 td.dtr-control:first-child { + padding-left: 1.25rem !important; + } + .table.g-md-6 th, .table.g-md-6 td { + padding: 1.5rem; + } + .table.g-md-6 th.dtr-control, .table.g-md-6 td.dtr-control { + padding-left: 1.5rem !important; + } + .table.gy-md-6 th, .table.gy-md-6 td { + padding-top: 1.5rem; + padding-bottom: 1.5rem; + } + .table.gx-md-6 th, .table.gx-md-6 td { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .table.gx-md-6 th.dtr-control, .table.gx-md-6 td.dtr-control { + padding-left: 1.5rem !important; + } + .table.gs-md-6 th:first-child, .table.gs-md-6 td:first-child { + padding-left: 1.5rem; + } + .table.gs-md-6 th:last-child, .table.gs-md-6 td:last-child { + padding-right: 1.5rem; + } + .table.gs-md-6 th.dtr-control:first-child, .table.gs-md-6 td.dtr-control:first-child { + padding-left: 1.5rem !important; + } + .table.g-md-7 th, .table.g-md-7 td { + padding: 1.75rem; + } + .table.g-md-7 th.dtr-control, .table.g-md-7 td.dtr-control { + padding-left: 1.75rem !important; + } + .table.gy-md-7 th, .table.gy-md-7 td { + padding-top: 1.75rem; + padding-bottom: 1.75rem; + } + .table.gx-md-7 th, .table.gx-md-7 td { + padding-left: 1.75rem; + padding-right: 1.75rem; + } + .table.gx-md-7 th.dtr-control, .table.gx-md-7 td.dtr-control { + padding-left: 1.75rem !important; + } + .table.gs-md-7 th:first-child, .table.gs-md-7 td:first-child { + padding-left: 1.75rem; + } + .table.gs-md-7 th:last-child, .table.gs-md-7 td:last-child { + padding-right: 1.75rem; + } + .table.gs-md-7 th.dtr-control:first-child, .table.gs-md-7 td.dtr-control:first-child { + padding-left: 1.75rem !important; + } + .table.g-md-8 th, .table.g-md-8 td { + padding: 2rem; + } + .table.g-md-8 th.dtr-control, .table.g-md-8 td.dtr-control { + padding-left: 2rem !important; + } + .table.gy-md-8 th, .table.gy-md-8 td { + padding-top: 2rem; + padding-bottom: 2rem; + } + .table.gx-md-8 th, .table.gx-md-8 td { + padding-left: 2rem; + padding-right: 2rem; + } + .table.gx-md-8 th.dtr-control, .table.gx-md-8 td.dtr-control { + padding-left: 2rem !important; + } + .table.gs-md-8 th:first-child, .table.gs-md-8 td:first-child { + padding-left: 2rem; + } + .table.gs-md-8 th:last-child, .table.gs-md-8 td:last-child { + padding-right: 2rem; + } + .table.gs-md-8 th.dtr-control:first-child, .table.gs-md-8 td.dtr-control:first-child { + padding-left: 2rem !important; + } + .table.g-md-9 th, .table.g-md-9 td { + padding: 2.25rem; + } + .table.g-md-9 th.dtr-control, .table.g-md-9 td.dtr-control { + padding-left: 2.25rem !important; + } + .table.gy-md-9 th, .table.gy-md-9 td { + padding-top: 2.25rem; + padding-bottom: 2.25rem; + } + .table.gx-md-9 th, .table.gx-md-9 td { + padding-left: 2.25rem; + padding-right: 2.25rem; + } + .table.gx-md-9 th.dtr-control, .table.gx-md-9 td.dtr-control { + padding-left: 2.25rem !important; + } + .table.gs-md-9 th:first-child, .table.gs-md-9 td:first-child { + padding-left: 2.25rem; + } + .table.gs-md-9 th:last-child, .table.gs-md-9 td:last-child { + padding-right: 2.25rem; + } + .table.gs-md-9 th.dtr-control:first-child, .table.gs-md-9 td.dtr-control:first-child { + padding-left: 2.25rem !important; + } + .table.g-md-10 th, .table.g-md-10 td { + padding: 2.5rem; + } + .table.g-md-10 th.dtr-control, .table.g-md-10 td.dtr-control { + padding-left: 2.5rem !important; + } + .table.gy-md-10 th, .table.gy-md-10 td { + padding-top: 2.5rem; + padding-bottom: 2.5rem; + } + .table.gx-md-10 th, .table.gx-md-10 td { + padding-left: 2.5rem; + padding-right: 2.5rem; + } + .table.gx-md-10 th.dtr-control, .table.gx-md-10 td.dtr-control { + padding-left: 2.5rem !important; + } + .table.gs-md-10 th:first-child, .table.gs-md-10 td:first-child { + padding-left: 2.5rem; + } + .table.gs-md-10 th:last-child, .table.gs-md-10 td:last-child { + padding-right: 2.5rem; + } + .table.gs-md-10 th.dtr-control:first-child, .table.gs-md-10 td.dtr-control:first-child { + padding-left: 2.5rem !important; + } +} +@media (min-width: 992px) { + .table.g-lg-0 th, .table.g-lg-0 td { + padding: 0rem; + } + .table.g-lg-0 th.dtr-control, .table.g-lg-0 td.dtr-control { + padding-left: 0rem !important; + } + .table.gy-lg-0 th, .table.gy-lg-0 td { + padding-top: 0rem; + padding-bottom: 0rem; + } + .table.gx-lg-0 th, .table.gx-lg-0 td { + padding-left: 0rem; + padding-right: 0rem; + } + .table.gx-lg-0 th.dtr-control, .table.gx-lg-0 td.dtr-control { + padding-left: 0rem !important; + } + .table.gs-lg-0 th:first-child, .table.gs-lg-0 td:first-child { + padding-left: 0rem; + } + .table.gs-lg-0 th:last-child, .table.gs-lg-0 td:last-child { + padding-right: 0rem; + } + .table.gs-lg-0 th.dtr-control:first-child, .table.gs-lg-0 td.dtr-control:first-child { + padding-left: 0rem !important; + } + .table.g-lg-1 th, .table.g-lg-1 td { + padding: 0.25rem; + } + .table.g-lg-1 th.dtr-control, .table.g-lg-1 td.dtr-control { + padding-left: 0.25rem !important; + } + .table.gy-lg-1 th, .table.gy-lg-1 td { + padding-top: 0.25rem; + padding-bottom: 0.25rem; + } + .table.gx-lg-1 th, .table.gx-lg-1 td { + padding-left: 0.25rem; + padding-right: 0.25rem; + } + .table.gx-lg-1 th.dtr-control, .table.gx-lg-1 td.dtr-control { + padding-left: 0.25rem !important; + } + .table.gs-lg-1 th:first-child, .table.gs-lg-1 td:first-child { + padding-left: 0.25rem; + } + .table.gs-lg-1 th:last-child, .table.gs-lg-1 td:last-child { + padding-right: 0.25rem; + } + .table.gs-lg-1 th.dtr-control:first-child, .table.gs-lg-1 td.dtr-control:first-child { + padding-left: 0.25rem !important; + } + .table.g-lg-2 th, .table.g-lg-2 td { + padding: 0.5rem; + } + .table.g-lg-2 th.dtr-control, .table.g-lg-2 td.dtr-control { + padding-left: 0.5rem !important; + } + .table.gy-lg-2 th, .table.gy-lg-2 td { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .table.gx-lg-2 th, .table.gx-lg-2 td { + padding-left: 0.5rem; + padding-right: 0.5rem; + } + .table.gx-lg-2 th.dtr-control, .table.gx-lg-2 td.dtr-control { + padding-left: 0.5rem !important; + } + .table.gs-lg-2 th:first-child, .table.gs-lg-2 td:first-child { + padding-left: 0.5rem; + } + .table.gs-lg-2 th:last-child, .table.gs-lg-2 td:last-child { + padding-right: 0.5rem; + } + .table.gs-lg-2 th.dtr-control:first-child, .table.gs-lg-2 td.dtr-control:first-child { + padding-left: 0.5rem !important; + } + .table.g-lg-3 th, .table.g-lg-3 td { + padding: 0.75rem; + } + .table.g-lg-3 th.dtr-control, .table.g-lg-3 td.dtr-control { + padding-left: 0.75rem !important; + } + .table.gy-lg-3 th, .table.gy-lg-3 td { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + } + .table.gx-lg-3 th, .table.gx-lg-3 td { + padding-left: 0.75rem; + padding-right: 0.75rem; + } + .table.gx-lg-3 th.dtr-control, .table.gx-lg-3 td.dtr-control { + padding-left: 0.75rem !important; + } + .table.gs-lg-3 th:first-child, .table.gs-lg-3 td:first-child { + padding-left: 0.75rem; + } + .table.gs-lg-3 th:last-child, .table.gs-lg-3 td:last-child { + padding-right: 0.75rem; + } + .table.gs-lg-3 th.dtr-control:first-child, .table.gs-lg-3 td.dtr-control:first-child { + padding-left: 0.75rem !important; + } + .table.g-lg-4 th, .table.g-lg-4 td { + padding: 1rem; + } + .table.g-lg-4 th.dtr-control, .table.g-lg-4 td.dtr-control { + padding-left: 1rem !important; + } + .table.gy-lg-4 th, .table.gy-lg-4 td { + padding-top: 1rem; + padding-bottom: 1rem; + } + .table.gx-lg-4 th, .table.gx-lg-4 td { + padding-left: 1rem; + padding-right: 1rem; + } + .table.gx-lg-4 th.dtr-control, .table.gx-lg-4 td.dtr-control { + padding-left: 1rem !important; + } + .table.gs-lg-4 th:first-child, .table.gs-lg-4 td:first-child { + padding-left: 1rem; + } + .table.gs-lg-4 th:last-child, .table.gs-lg-4 td:last-child { + padding-right: 1rem; + } + .table.gs-lg-4 th.dtr-control:first-child, .table.gs-lg-4 td.dtr-control:first-child { + padding-left: 1rem !important; + } + .table.g-lg-5 th, .table.g-lg-5 td { + padding: 1.25rem; + } + .table.g-lg-5 th.dtr-control, .table.g-lg-5 td.dtr-control { + padding-left: 1.25rem !important; + } + .table.gy-lg-5 th, .table.gy-lg-5 td { + padding-top: 1.25rem; + padding-bottom: 1.25rem; + } + .table.gx-lg-5 th, .table.gx-lg-5 td { + padding-left: 1.25rem; + padding-right: 1.25rem; + } + .table.gx-lg-5 th.dtr-control, .table.gx-lg-5 td.dtr-control { + padding-left: 1.25rem !important; + } + .table.gs-lg-5 th:first-child, .table.gs-lg-5 td:first-child { + padding-left: 1.25rem; + } + .table.gs-lg-5 th:last-child, .table.gs-lg-5 td:last-child { + padding-right: 1.25rem; + } + .table.gs-lg-5 th.dtr-control:first-child, .table.gs-lg-5 td.dtr-control:first-child { + padding-left: 1.25rem !important; + } + .table.g-lg-6 th, .table.g-lg-6 td { + padding: 1.5rem; + } + .table.g-lg-6 th.dtr-control, .table.g-lg-6 td.dtr-control { + padding-left: 1.5rem !important; + } + .table.gy-lg-6 th, .table.gy-lg-6 td { + padding-top: 1.5rem; + padding-bottom: 1.5rem; + } + .table.gx-lg-6 th, .table.gx-lg-6 td { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .table.gx-lg-6 th.dtr-control, .table.gx-lg-6 td.dtr-control { + padding-left: 1.5rem !important; + } + .table.gs-lg-6 th:first-child, .table.gs-lg-6 td:first-child { + padding-left: 1.5rem; + } + .table.gs-lg-6 th:last-child, .table.gs-lg-6 td:last-child { + padding-right: 1.5rem; + } + .table.gs-lg-6 th.dtr-control:first-child, .table.gs-lg-6 td.dtr-control:first-child { + padding-left: 1.5rem !important; + } + .table.g-lg-7 th, .table.g-lg-7 td { + padding: 1.75rem; + } + .table.g-lg-7 th.dtr-control, .table.g-lg-7 td.dtr-control { + padding-left: 1.75rem !important; + } + .table.gy-lg-7 th, .table.gy-lg-7 td { + padding-top: 1.75rem; + padding-bottom: 1.75rem; + } + .table.gx-lg-7 th, .table.gx-lg-7 td { + padding-left: 1.75rem; + padding-right: 1.75rem; + } + .table.gx-lg-7 th.dtr-control, .table.gx-lg-7 td.dtr-control { + padding-left: 1.75rem !important; + } + .table.gs-lg-7 th:first-child, .table.gs-lg-7 td:first-child { + padding-left: 1.75rem; + } + .table.gs-lg-7 th:last-child, .table.gs-lg-7 td:last-child { + padding-right: 1.75rem; + } + .table.gs-lg-7 th.dtr-control:first-child, .table.gs-lg-7 td.dtr-control:first-child { + padding-left: 1.75rem !important; + } + .table.g-lg-8 th, .table.g-lg-8 td { + padding: 2rem; + } + .table.g-lg-8 th.dtr-control, .table.g-lg-8 td.dtr-control { + padding-left: 2rem !important; + } + .table.gy-lg-8 th, .table.gy-lg-8 td { + padding-top: 2rem; + padding-bottom: 2rem; + } + .table.gx-lg-8 th, .table.gx-lg-8 td { + padding-left: 2rem; + padding-right: 2rem; + } + .table.gx-lg-8 th.dtr-control, .table.gx-lg-8 td.dtr-control { + padding-left: 2rem !important; + } + .table.gs-lg-8 th:first-child, .table.gs-lg-8 td:first-child { + padding-left: 2rem; + } + .table.gs-lg-8 th:last-child, .table.gs-lg-8 td:last-child { + padding-right: 2rem; + } + .table.gs-lg-8 th.dtr-control:first-child, .table.gs-lg-8 td.dtr-control:first-child { + padding-left: 2rem !important; + } + .table.g-lg-9 th, .table.g-lg-9 td { + padding: 2.25rem; + } + .table.g-lg-9 th.dtr-control, .table.g-lg-9 td.dtr-control { + padding-left: 2.25rem !important; + } + .table.gy-lg-9 th, .table.gy-lg-9 td { + padding-top: 2.25rem; + padding-bottom: 2.25rem; + } + .table.gx-lg-9 th, .table.gx-lg-9 td { + padding-left: 2.25rem; + padding-right: 2.25rem; + } + .table.gx-lg-9 th.dtr-control, .table.gx-lg-9 td.dtr-control { + padding-left: 2.25rem !important; + } + .table.gs-lg-9 th:first-child, .table.gs-lg-9 td:first-child { + padding-left: 2.25rem; + } + .table.gs-lg-9 th:last-child, .table.gs-lg-9 td:last-child { + padding-right: 2.25rem; + } + .table.gs-lg-9 th.dtr-control:first-child, .table.gs-lg-9 td.dtr-control:first-child { + padding-left: 2.25rem !important; + } + .table.g-lg-10 th, .table.g-lg-10 td { + padding: 2.5rem; + } + .table.g-lg-10 th.dtr-control, .table.g-lg-10 td.dtr-control { + padding-left: 2.5rem !important; + } + .table.gy-lg-10 th, .table.gy-lg-10 td { + padding-top: 2.5rem; + padding-bottom: 2.5rem; + } + .table.gx-lg-10 th, .table.gx-lg-10 td { + padding-left: 2.5rem; + padding-right: 2.5rem; + } + .table.gx-lg-10 th.dtr-control, .table.gx-lg-10 td.dtr-control { + padding-left: 2.5rem !important; + } + .table.gs-lg-10 th:first-child, .table.gs-lg-10 td:first-child { + padding-left: 2.5rem; + } + .table.gs-lg-10 th:last-child, .table.gs-lg-10 td:last-child { + padding-right: 2.5rem; + } + .table.gs-lg-10 th.dtr-control:first-child, .table.gs-lg-10 td.dtr-control:first-child { + padding-left: 2.5rem !important; + } +} +@media (min-width: 1200px) { + .table.g-xl-0 th, .table.g-xl-0 td { + padding: 0rem; + } + .table.g-xl-0 th.dtr-control, .table.g-xl-0 td.dtr-control { + padding-left: 0rem !important; + } + .table.gy-xl-0 th, .table.gy-xl-0 td { + padding-top: 0rem; + padding-bottom: 0rem; + } + .table.gx-xl-0 th, .table.gx-xl-0 td { + padding-left: 0rem; + padding-right: 0rem; + } + .table.gx-xl-0 th.dtr-control, .table.gx-xl-0 td.dtr-control { + padding-left: 0rem !important; + } + .table.gs-xl-0 th:first-child, .table.gs-xl-0 td:first-child { + padding-left: 0rem; + } + .table.gs-xl-0 th:last-child, .table.gs-xl-0 td:last-child { + padding-right: 0rem; + } + .table.gs-xl-0 th.dtr-control:first-child, .table.gs-xl-0 td.dtr-control:first-child { + padding-left: 0rem !important; + } + .table.g-xl-1 th, .table.g-xl-1 td { + padding: 0.25rem; + } + .table.g-xl-1 th.dtr-control, .table.g-xl-1 td.dtr-control { + padding-left: 0.25rem !important; + } + .table.gy-xl-1 th, .table.gy-xl-1 td { + padding-top: 0.25rem; + padding-bottom: 0.25rem; + } + .table.gx-xl-1 th, .table.gx-xl-1 td { + padding-left: 0.25rem; + padding-right: 0.25rem; + } + .table.gx-xl-1 th.dtr-control, .table.gx-xl-1 td.dtr-control { + padding-left: 0.25rem !important; + } + .table.gs-xl-1 th:first-child, .table.gs-xl-1 td:first-child { + padding-left: 0.25rem; + } + .table.gs-xl-1 th:last-child, .table.gs-xl-1 td:last-child { + padding-right: 0.25rem; + } + .table.gs-xl-1 th.dtr-control:first-child, .table.gs-xl-1 td.dtr-control:first-child { + padding-left: 0.25rem !important; + } + .table.g-xl-2 th, .table.g-xl-2 td { + padding: 0.5rem; + } + .table.g-xl-2 th.dtr-control, .table.g-xl-2 td.dtr-control { + padding-left: 0.5rem !important; + } + .table.gy-xl-2 th, .table.gy-xl-2 td { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .table.gx-xl-2 th, .table.gx-xl-2 td { + padding-left: 0.5rem; + padding-right: 0.5rem; + } + .table.gx-xl-2 th.dtr-control, .table.gx-xl-2 td.dtr-control { + padding-left: 0.5rem !important; + } + .table.gs-xl-2 th:first-child, .table.gs-xl-2 td:first-child { + padding-left: 0.5rem; + } + .table.gs-xl-2 th:last-child, .table.gs-xl-2 td:last-child { + padding-right: 0.5rem; + } + .table.gs-xl-2 th.dtr-control:first-child, .table.gs-xl-2 td.dtr-control:first-child { + padding-left: 0.5rem !important; + } + .table.g-xl-3 th, .table.g-xl-3 td { + padding: 0.75rem; + } + .table.g-xl-3 th.dtr-control, .table.g-xl-3 td.dtr-control { + padding-left: 0.75rem !important; + } + .table.gy-xl-3 th, .table.gy-xl-3 td { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + } + .table.gx-xl-3 th, .table.gx-xl-3 td { + padding-left: 0.75rem; + padding-right: 0.75rem; + } + .table.gx-xl-3 th.dtr-control, .table.gx-xl-3 td.dtr-control { + padding-left: 0.75rem !important; + } + .table.gs-xl-3 th:first-child, .table.gs-xl-3 td:first-child { + padding-left: 0.75rem; + } + .table.gs-xl-3 th:last-child, .table.gs-xl-3 td:last-child { + padding-right: 0.75rem; + } + .table.gs-xl-3 th.dtr-control:first-child, .table.gs-xl-3 td.dtr-control:first-child { + padding-left: 0.75rem !important; + } + .table.g-xl-4 th, .table.g-xl-4 td { + padding: 1rem; + } + .table.g-xl-4 th.dtr-control, .table.g-xl-4 td.dtr-control { + padding-left: 1rem !important; + } + .table.gy-xl-4 th, .table.gy-xl-4 td { + padding-top: 1rem; + padding-bottom: 1rem; + } + .table.gx-xl-4 th, .table.gx-xl-4 td { + padding-left: 1rem; + padding-right: 1rem; + } + .table.gx-xl-4 th.dtr-control, .table.gx-xl-4 td.dtr-control { + padding-left: 1rem !important; + } + .table.gs-xl-4 th:first-child, .table.gs-xl-4 td:first-child { + padding-left: 1rem; + } + .table.gs-xl-4 th:last-child, .table.gs-xl-4 td:last-child { + padding-right: 1rem; + } + .table.gs-xl-4 th.dtr-control:first-child, .table.gs-xl-4 td.dtr-control:first-child { + padding-left: 1rem !important; + } + .table.g-xl-5 th, .table.g-xl-5 td { + padding: 1.25rem; + } + .table.g-xl-5 th.dtr-control, .table.g-xl-5 td.dtr-control { + padding-left: 1.25rem !important; + } + .table.gy-xl-5 th, .table.gy-xl-5 td { + padding-top: 1.25rem; + padding-bottom: 1.25rem; + } + .table.gx-xl-5 th, .table.gx-xl-5 td { + padding-left: 1.25rem; + padding-right: 1.25rem; + } + .table.gx-xl-5 th.dtr-control, .table.gx-xl-5 td.dtr-control { + padding-left: 1.25rem !important; + } + .table.gs-xl-5 th:first-child, .table.gs-xl-5 td:first-child { + padding-left: 1.25rem; + } + .table.gs-xl-5 th:last-child, .table.gs-xl-5 td:last-child { + padding-right: 1.25rem; + } + .table.gs-xl-5 th.dtr-control:first-child, .table.gs-xl-5 td.dtr-control:first-child { + padding-left: 1.25rem !important; + } + .table.g-xl-6 th, .table.g-xl-6 td { + padding: 1.5rem; + } + .table.g-xl-6 th.dtr-control, .table.g-xl-6 td.dtr-control { + padding-left: 1.5rem !important; + } + .table.gy-xl-6 th, .table.gy-xl-6 td { + padding-top: 1.5rem; + padding-bottom: 1.5rem; + } + .table.gx-xl-6 th, .table.gx-xl-6 td { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .table.gx-xl-6 th.dtr-control, .table.gx-xl-6 td.dtr-control { + padding-left: 1.5rem !important; + } + .table.gs-xl-6 th:first-child, .table.gs-xl-6 td:first-child { + padding-left: 1.5rem; + } + .table.gs-xl-6 th:last-child, .table.gs-xl-6 td:last-child { + padding-right: 1.5rem; + } + .table.gs-xl-6 th.dtr-control:first-child, .table.gs-xl-6 td.dtr-control:first-child { + padding-left: 1.5rem !important; + } + .table.g-xl-7 th, .table.g-xl-7 td { + padding: 1.75rem; + } + .table.g-xl-7 th.dtr-control, .table.g-xl-7 td.dtr-control { + padding-left: 1.75rem !important; + } + .table.gy-xl-7 th, .table.gy-xl-7 td { + padding-top: 1.75rem; + padding-bottom: 1.75rem; + } + .table.gx-xl-7 th, .table.gx-xl-7 td { + padding-left: 1.75rem; + padding-right: 1.75rem; + } + .table.gx-xl-7 th.dtr-control, .table.gx-xl-7 td.dtr-control { + padding-left: 1.75rem !important; + } + .table.gs-xl-7 th:first-child, .table.gs-xl-7 td:first-child { + padding-left: 1.75rem; + } + .table.gs-xl-7 th:last-child, .table.gs-xl-7 td:last-child { + padding-right: 1.75rem; + } + .table.gs-xl-7 th.dtr-control:first-child, .table.gs-xl-7 td.dtr-control:first-child { + padding-left: 1.75rem !important; + } + .table.g-xl-8 th, .table.g-xl-8 td { + padding: 2rem; + } + .table.g-xl-8 th.dtr-control, .table.g-xl-8 td.dtr-control { + padding-left: 2rem !important; + } + .table.gy-xl-8 th, .table.gy-xl-8 td { + padding-top: 2rem; + padding-bottom: 2rem; + } + .table.gx-xl-8 th, .table.gx-xl-8 td { + padding-left: 2rem; + padding-right: 2rem; + } + .table.gx-xl-8 th.dtr-control, .table.gx-xl-8 td.dtr-control { + padding-left: 2rem !important; + } + .table.gs-xl-8 th:first-child, .table.gs-xl-8 td:first-child { + padding-left: 2rem; + } + .table.gs-xl-8 th:last-child, .table.gs-xl-8 td:last-child { + padding-right: 2rem; + } + .table.gs-xl-8 th.dtr-control:first-child, .table.gs-xl-8 td.dtr-control:first-child { + padding-left: 2rem !important; + } + .table.g-xl-9 th, .table.g-xl-9 td { + padding: 2.25rem; + } + .table.g-xl-9 th.dtr-control, .table.g-xl-9 td.dtr-control { + padding-left: 2.25rem !important; + } + .table.gy-xl-9 th, .table.gy-xl-9 td { + padding-top: 2.25rem; + padding-bottom: 2.25rem; + } + .table.gx-xl-9 th, .table.gx-xl-9 td { + padding-left: 2.25rem; + padding-right: 2.25rem; + } + .table.gx-xl-9 th.dtr-control, .table.gx-xl-9 td.dtr-control { + padding-left: 2.25rem !important; + } + .table.gs-xl-9 th:first-child, .table.gs-xl-9 td:first-child { + padding-left: 2.25rem; + } + .table.gs-xl-9 th:last-child, .table.gs-xl-9 td:last-child { + padding-right: 2.25rem; + } + .table.gs-xl-9 th.dtr-control:first-child, .table.gs-xl-9 td.dtr-control:first-child { + padding-left: 2.25rem !important; + } + .table.g-xl-10 th, .table.g-xl-10 td { + padding: 2.5rem; + } + .table.g-xl-10 th.dtr-control, .table.g-xl-10 td.dtr-control { + padding-left: 2.5rem !important; + } + .table.gy-xl-10 th, .table.gy-xl-10 td { + padding-top: 2.5rem; + padding-bottom: 2.5rem; + } + .table.gx-xl-10 th, .table.gx-xl-10 td { + padding-left: 2.5rem; + padding-right: 2.5rem; + } + .table.gx-xl-10 th.dtr-control, .table.gx-xl-10 td.dtr-control { + padding-left: 2.5rem !important; + } + .table.gs-xl-10 th:first-child, .table.gs-xl-10 td:first-child { + padding-left: 2.5rem; + } + .table.gs-xl-10 th:last-child, .table.gs-xl-10 td:last-child { + padding-right: 2.5rem; + } + .table.gs-xl-10 th.dtr-control:first-child, .table.gs-xl-10 td.dtr-control:first-child { + padding-left: 2.5rem !important; + } +} +@media (min-width: 1400px) { + .table.g-xxl-0 th, .table.g-xxl-0 td { + padding: 0rem; + } + .table.g-xxl-0 th.dtr-control, .table.g-xxl-0 td.dtr-control { + padding-left: 0rem !important; + } + .table.gy-xxl-0 th, .table.gy-xxl-0 td { + padding-top: 0rem; + padding-bottom: 0rem; + } + .table.gx-xxl-0 th, .table.gx-xxl-0 td { + padding-left: 0rem; + padding-right: 0rem; + } + .table.gx-xxl-0 th.dtr-control, .table.gx-xxl-0 td.dtr-control { + padding-left: 0rem !important; + } + .table.gs-xxl-0 th:first-child, .table.gs-xxl-0 td:first-child { + padding-left: 0rem; + } + .table.gs-xxl-0 th:last-child, .table.gs-xxl-0 td:last-child { + padding-right: 0rem; + } + .table.gs-xxl-0 th.dtr-control:first-child, .table.gs-xxl-0 td.dtr-control:first-child { + padding-left: 0rem !important; + } + .table.g-xxl-1 th, .table.g-xxl-1 td { + padding: 0.25rem; + } + .table.g-xxl-1 th.dtr-control, .table.g-xxl-1 td.dtr-control { + padding-left: 0.25rem !important; + } + .table.gy-xxl-1 th, .table.gy-xxl-1 td { + padding-top: 0.25rem; + padding-bottom: 0.25rem; + } + .table.gx-xxl-1 th, .table.gx-xxl-1 td { + padding-left: 0.25rem; + padding-right: 0.25rem; + } + .table.gx-xxl-1 th.dtr-control, .table.gx-xxl-1 td.dtr-control { + padding-left: 0.25rem !important; + } + .table.gs-xxl-1 th:first-child, .table.gs-xxl-1 td:first-child { + padding-left: 0.25rem; + } + .table.gs-xxl-1 th:last-child, .table.gs-xxl-1 td:last-child { + padding-right: 0.25rem; + } + .table.gs-xxl-1 th.dtr-control:first-child, .table.gs-xxl-1 td.dtr-control:first-child { + padding-left: 0.25rem !important; + } + .table.g-xxl-2 th, .table.g-xxl-2 td { + padding: 0.5rem; + } + .table.g-xxl-2 th.dtr-control, .table.g-xxl-2 td.dtr-control { + padding-left: 0.5rem !important; + } + .table.gy-xxl-2 th, .table.gy-xxl-2 td { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + } + .table.gx-xxl-2 th, .table.gx-xxl-2 td { + padding-left: 0.5rem; + padding-right: 0.5rem; + } + .table.gx-xxl-2 th.dtr-control, .table.gx-xxl-2 td.dtr-control { + padding-left: 0.5rem !important; + } + .table.gs-xxl-2 th:first-child, .table.gs-xxl-2 td:first-child { + padding-left: 0.5rem; + } + .table.gs-xxl-2 th:last-child, .table.gs-xxl-2 td:last-child { + padding-right: 0.5rem; + } + .table.gs-xxl-2 th.dtr-control:first-child, .table.gs-xxl-2 td.dtr-control:first-child { + padding-left: 0.5rem !important; + } + .table.g-xxl-3 th, .table.g-xxl-3 td { + padding: 0.75rem; + } + .table.g-xxl-3 th.dtr-control, .table.g-xxl-3 td.dtr-control { + padding-left: 0.75rem !important; + } + .table.gy-xxl-3 th, .table.gy-xxl-3 td { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + } + .table.gx-xxl-3 th, .table.gx-xxl-3 td { + padding-left: 0.75rem; + padding-right: 0.75rem; + } + .table.gx-xxl-3 th.dtr-control, .table.gx-xxl-3 td.dtr-control { + padding-left: 0.75rem !important; + } + .table.gs-xxl-3 th:first-child, .table.gs-xxl-3 td:first-child { + padding-left: 0.75rem; + } + .table.gs-xxl-3 th:last-child, .table.gs-xxl-3 td:last-child { + padding-right: 0.75rem; + } + .table.gs-xxl-3 th.dtr-control:first-child, .table.gs-xxl-3 td.dtr-control:first-child { + padding-left: 0.75rem !important; + } + .table.g-xxl-4 th, .table.g-xxl-4 td { + padding: 1rem; + } + .table.g-xxl-4 th.dtr-control, .table.g-xxl-4 td.dtr-control { + padding-left: 1rem !important; + } + .table.gy-xxl-4 th, .table.gy-xxl-4 td { + padding-top: 1rem; + padding-bottom: 1rem; + } + .table.gx-xxl-4 th, .table.gx-xxl-4 td { + padding-left: 1rem; + padding-right: 1rem; + } + .table.gx-xxl-4 th.dtr-control, .table.gx-xxl-4 td.dtr-control { + padding-left: 1rem !important; + } + .table.gs-xxl-4 th:first-child, .table.gs-xxl-4 td:first-child { + padding-left: 1rem; + } + .table.gs-xxl-4 th:last-child, .table.gs-xxl-4 td:last-child { + padding-right: 1rem; + } + .table.gs-xxl-4 th.dtr-control:first-child, .table.gs-xxl-4 td.dtr-control:first-child { + padding-left: 1rem !important; + } + .table.g-xxl-5 th, .table.g-xxl-5 td { + padding: 1.25rem; + } + .table.g-xxl-5 th.dtr-control, .table.g-xxl-5 td.dtr-control { + padding-left: 1.25rem !important; + } + .table.gy-xxl-5 th, .table.gy-xxl-5 td { + padding-top: 1.25rem; + padding-bottom: 1.25rem; + } + .table.gx-xxl-5 th, .table.gx-xxl-5 td { + padding-left: 1.25rem; + padding-right: 1.25rem; + } + .table.gx-xxl-5 th.dtr-control, .table.gx-xxl-5 td.dtr-control { + padding-left: 1.25rem !important; + } + .table.gs-xxl-5 th:first-child, .table.gs-xxl-5 td:first-child { + padding-left: 1.25rem; + } + .table.gs-xxl-5 th:last-child, .table.gs-xxl-5 td:last-child { + padding-right: 1.25rem; + } + .table.gs-xxl-5 th.dtr-control:first-child, .table.gs-xxl-5 td.dtr-control:first-child { + padding-left: 1.25rem !important; + } + .table.g-xxl-6 th, .table.g-xxl-6 td { + padding: 1.5rem; + } + .table.g-xxl-6 th.dtr-control, .table.g-xxl-6 td.dtr-control { + padding-left: 1.5rem !important; + } + .table.gy-xxl-6 th, .table.gy-xxl-6 td { + padding-top: 1.5rem; + padding-bottom: 1.5rem; + } + .table.gx-xxl-6 th, .table.gx-xxl-6 td { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + .table.gx-xxl-6 th.dtr-control, .table.gx-xxl-6 td.dtr-control { + padding-left: 1.5rem !important; + } + .table.gs-xxl-6 th:first-child, .table.gs-xxl-6 td:first-child { + padding-left: 1.5rem; + } + .table.gs-xxl-6 th:last-child, .table.gs-xxl-6 td:last-child { + padding-right: 1.5rem; + } + .table.gs-xxl-6 th.dtr-control:first-child, .table.gs-xxl-6 td.dtr-control:first-child { + padding-left: 1.5rem !important; + } + .table.g-xxl-7 th, .table.g-xxl-7 td { + padding: 1.75rem; + } + .table.g-xxl-7 th.dtr-control, .table.g-xxl-7 td.dtr-control { + padding-left: 1.75rem !important; + } + .table.gy-xxl-7 th, .table.gy-xxl-7 td { + padding-top: 1.75rem; + padding-bottom: 1.75rem; + } + .table.gx-xxl-7 th, .table.gx-xxl-7 td { + padding-left: 1.75rem; + padding-right: 1.75rem; + } + .table.gx-xxl-7 th.dtr-control, .table.gx-xxl-7 td.dtr-control { + padding-left: 1.75rem !important; + } + .table.gs-xxl-7 th:first-child, .table.gs-xxl-7 td:first-child { + padding-left: 1.75rem; + } + .table.gs-xxl-7 th:last-child, .table.gs-xxl-7 td:last-child { + padding-right: 1.75rem; + } + .table.gs-xxl-7 th.dtr-control:first-child, .table.gs-xxl-7 td.dtr-control:first-child { + padding-left: 1.75rem !important; + } + .table.g-xxl-8 th, .table.g-xxl-8 td { + padding: 2rem; + } + .table.g-xxl-8 th.dtr-control, .table.g-xxl-8 td.dtr-control { + padding-left: 2rem !important; + } + .table.gy-xxl-8 th, .table.gy-xxl-8 td { + padding-top: 2rem; + padding-bottom: 2rem; + } + .table.gx-xxl-8 th, .table.gx-xxl-8 td { + padding-left: 2rem; + padding-right: 2rem; + } + .table.gx-xxl-8 th.dtr-control, .table.gx-xxl-8 td.dtr-control { + padding-left: 2rem !important; + } + .table.gs-xxl-8 th:first-child, .table.gs-xxl-8 td:first-child { + padding-left: 2rem; + } + .table.gs-xxl-8 th:last-child, .table.gs-xxl-8 td:last-child { + padding-right: 2rem; + } + .table.gs-xxl-8 th.dtr-control:first-child, .table.gs-xxl-8 td.dtr-control:first-child { + padding-left: 2rem !important; + } + .table.g-xxl-9 th, .table.g-xxl-9 td { + padding: 2.25rem; + } + .table.g-xxl-9 th.dtr-control, .table.g-xxl-9 td.dtr-control { + padding-left: 2.25rem !important; + } + .table.gy-xxl-9 th, .table.gy-xxl-9 td { + padding-top: 2.25rem; + padding-bottom: 2.25rem; + } + .table.gx-xxl-9 th, .table.gx-xxl-9 td { + padding-left: 2.25rem; + padding-right: 2.25rem; + } + .table.gx-xxl-9 th.dtr-control, .table.gx-xxl-9 td.dtr-control { + padding-left: 2.25rem !important; + } + .table.gs-xxl-9 th:first-child, .table.gs-xxl-9 td:first-child { + padding-left: 2.25rem; + } + .table.gs-xxl-9 th:last-child, .table.gs-xxl-9 td:last-child { + padding-right: 2.25rem; + } + .table.gs-xxl-9 th.dtr-control:first-child, .table.gs-xxl-9 td.dtr-control:first-child { + padding-left: 2.25rem !important; + } + .table.g-xxl-10 th, .table.g-xxl-10 td { + padding: 2.5rem; + } + .table.g-xxl-10 th.dtr-control, .table.g-xxl-10 td.dtr-control { + padding-left: 2.5rem !important; + } + .table.gy-xxl-10 th, .table.gy-xxl-10 td { + padding-top: 2.5rem; + padding-bottom: 2.5rem; + } + .table.gx-xxl-10 th, .table.gx-xxl-10 td { + padding-left: 2.5rem; + padding-right: 2.5rem; + } + .table.gx-xxl-10 th.dtr-control, .table.gx-xxl-10 td.dtr-control { + padding-left: 2.5rem !important; + } + .table.gs-xxl-10 th:first-child, .table.gs-xxl-10 td:first-child { + padding-left: 2.5rem; + } + .table.gs-xxl-10 th:last-child, .table.gs-xxl-10 td:last-child { + padding-right: 2.5rem; + } + .table.gs-xxl-10 th.dtr-control:first-child, .table.gs-xxl-10 td.dtr-control:first-child { + padding-left: 2.5rem !important; + } +} +.popover { + --bs-popover-header-border-color: $popover-header-border-color; +} +.popover .popover-header { + font-size: 1rem; + font-weight: 500; + border-bottom: 1px solid var(--bs-popover-header-border-color); +} +.popover .popover-dismiss { + position: absolute; + top: 0.85rem; + right: 0.85rem; + height: 1.25rem; + width: 1.25rem; + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-500); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-gray-500%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-gray-500%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); + mask-size: 50%; + -webkit-mask-size: 50%; +} +.popover .popover-dismiss:hover { + background-color: var(--bs-primary); +} +.popover .popover-dismiss + .popover-header { + padding-right: 2.5rem; +} + +[data-bs-theme=dark] .popover { + --bs-popover-bg: #2B2B40; + --bs-popover-header-bg: #2B2B40; + --bs-popover-box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.3); + --bs-popover-header-border-color: #323248; +} + +.popover-inverse { + background-color: var(--bs-gray-900); + border: 0; +} +.popover-inverse .popover-header { + background-color: var(--bs-gray-900); + color: var(--bs-gray-200); + border-bottom-color: var(--bs-gray-800); +} +.popover-inverse .popover-body { + color: var(--bs-gray-400); +} +.popover-inverse.bs-popover-top > .popover-arrow::before, .popover-inverse.bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before { + border-top-color: var(--bs-gray-100); +} +.popover-inverse.bs-popover-top > .popover-arrow::after, .popover-inverse.bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + border-top-color: var(--bs-gray-900); +} +.popover-inverse.bs-popover-end > .popover-arrow::before, .popover-inverse.bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before { + border-right-color: var(--bs-gray-100); +} +.popover-inverse.bs-popover-end > .popover-arrow::after, .popover-inverse.bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + border-right-color: var(--bs-gray-900); +} +.popover-inverse.bs-popover-bottom > .popover-arrow::before, .popover-inverse.bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before { + border-bottom-color: var(--bs-gray-100); +} +.popover-inverse.bs-popover-bottom > .popover-arrow::after, .popover-inverse.bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + border-bottom-color: var(--bs-gray-900); +} +.popover-inverse.bs-popover-bottom .popover-header::before, .popover-inverse.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before { + border-bottom-color: var(--bs-gray-900); +} +.popover-inverse.bs-popover-start > .popover-arrow::before, .popover-inverse.bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before { + border-left-color: var(--bs-gray-100); +} +.popover-inverse.bs-popover-start > .popover-arrow::after, .popover-inverse.bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + border-left-color: var(--bs-gray-900); +} + +.tooltip .tooltip-inner { + box-shadow: var(--bs-tooltip-box-shadow); +} +.tooltip.tooltop-auto-width .tooltip-inner { + white-space: nowrap; + max-width: none; +} +.tooltip.tooltip-inverse .tooltip-inner { + color: var(--bs-dark-inverse); + background-color: var(--bs-dark); +} +.tooltip.tooltip-inverse.bs-tooltip-top .tooltip-arrow::before, .tooltip.tooltip-inverse.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before { + border-top-color: var(--bs-dark); +} +.tooltip.tooltip-inverse.bs-tooltip-end .tooltip-arrow::before, .tooltip.tooltip-inverse.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before { + border-right-color: var(--bs-dark); +} +.tooltip.tooltip-inverse.bs-tooltip-bottom .tooltip-arrow::before, .tooltip.tooltip-inverse.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before { + border-bottom-color: var(--bs-dark); +} +.tooltip.tooltip-inverse.bs-tooltip-start .tooltip-arrow::before, .tooltip.tooltip-inverse.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before { + border-left-color: var(--bs-dark); +} + +[data-bs-theme=dark] .tooltip { + --bs-tooltip-bg: #2B2B40; + --bs-tooltip-box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.15); +} + +.accordion .accordion-header { + cursor: pointer; +} +.accordion.accordion-icon-toggle .accordion-icon { + display: flex; + flex-shrink: 0; + transition: all 0.2s ease-in-out; + transform: rotate(90deg); + align-items: center; + justify-content: center; +} +.accordion.accordion-icon-toggle .accordion-icon i, +.accordion.accordion-icon-toggle .accordion-icon .svg-icon { + color: var(--bs-primary); +} +.accordion.accordion-icon-toggle .collapsed .accordion-icon { + transition: all 0.2s ease-in-out; + transform: rotate(0); +} +.accordion.accordion-icon-toggle .collapsed .accordion-icon i, +.accordion.accordion-icon-toggle .collapsed .accordion-icon .svg-icon { + color: var(--bs-text-muted); +} +.accordion.accordion-borderless .accordion-item { + border: 0; +} +.accordion.accordion-flush .accordion-item { + background-color: transparent; + border: 0; + border-radius: 0; + padding-left: 0; + padding-right: 0; +} + +.image-input { + position: relative; + display: inline-block; + border-radius: 0.475rem; + background-repeat: no-repeat; + background-size: cover; +} +.image-input:not(.image-input-empty) { + background-image: none !important; +} +.image-input .image-input-wrapper { + width: 120px; + height: 120px; + border-radius: 0.475rem; + background-repeat: no-repeat; + background-size: cover; +} +.image-input [data-kt-image-input-action] { + cursor: pointer; + position: absolute; + transform: translate(-50%, -50%); +} +.image-input [data-kt-image-input-action=change] { + left: 100%; + top: 0; +} +.image-input [data-kt-image-input-action=change] input { + width: 0 !important; + height: 0 !important; + overflow: hidden; + opacity: 0; +} +.image-input [data-kt-image-input-action=cancel], +.image-input [data-kt-image-input-action=remove] { + position: absolute; + left: 100%; + top: 100%; +} +.image-input [data-kt-image-input-action=cancel] { + display: none; +} +.image-input.image-input-changed [data-kt-image-input-action=cancel] { + display: flex; +} +.image-input.image-input-changed [data-kt-image-input-action=remove] { + display: none; +} +.image-input.image-input-empty [data-kt-image-input-action=remove], +.image-input.image-input-empty [data-kt-image-input-action=cancel] { + display: none; +} +.image-input.image-input-circle { + border-radius: 50%; +} +.image-input.image-input-circle .image-input-wrapper { + border-radius: 50%; +} +.image-input.image-input-circle [data-kt-image-input-action=change] { + left: 100%; + top: 0; + transform: translate(-100%, 0%); +} +.image-input.image-input-circle [data-kt-image-input-action=cancel], +.image-input.image-input-circle [data-kt-image-input-action=remove] { + left: 100%; + top: 100%; + transform: translate(-100%, -100%); +} +.image-input.image-input-outline .image-input-wrapper { + border: 3px solid var(--bs-body-bg); + box-shadow: var(--bs-box-shadow); +} + +.symbol { + display: inline-block; + flex-shrink: 0; + position: relative; + border-radius: 0.475rem; +} +.symbol .symbol-label { + display: flex; + align-items: center; + justify-content: center; + font-weight: 500; + color: var(--bs-symbol-label-color); + background-color: var(--bs-symbol-label-bg); + background-repeat: no-repeat; + background-position: center center; + background-size: cover; + border-radius: 0.475rem; +} +.symbol .symbol-label:after { + border-radius: 0.475rem; +} +.symbol .symbol-badge { + position: absolute; + border-radius: 100%; + top: 0; + left: 50%; + transform: translateX(-50%) translateY(-50%) !important; +} +.symbol > img { + width: 100%; + flex-shrink: 0; + display: inline-block; + border-radius: 0.475rem; +} +.symbol.symbol-square, +.symbol.symbol-square > img, +.symbol.symbol-square .symbol-label { + border-radius: 0 !important; +} +.symbol.symbol-circle, +.symbol.symbol-circle > img, +.symbol.symbol-circle .symbol-label { + border-radius: 50%; +} +.symbol.symbol-circle:after, +.symbol.symbol-circle > img:after, +.symbol.symbol-circle .symbol-label:after { + border-radius: 50%; +} +.symbol > img { + width: 50px; + height: 50px; +} +.symbol .symbol-label { + width: 50px; + height: 50px; +} +.symbol.symbol-fixed .symbol-label { + width: 50px; + height: 50px; +} +.symbol.symbol-fixed > img { + width: 50px; + height: 50px; + max-width: none; +} +.symbol.symbol-2by3 .symbol-label { + height: 50px; + width: 75px; +} +.symbol.symbol-2by3 > img { + height: 50px; + width: 75px; + max-width: none; +} +.symbol.symbol-20px > img { + width: 20px; + height: 20px; +} +.symbol.symbol-20px .symbol-label { + width: 20px; + height: 20px; +} +.symbol.symbol-20px.symbol-fixed .symbol-label { + width: 20px; + height: 20px; +} +.symbol.symbol-20px.symbol-fixed > img { + width: 20px; + height: 20px; + max-width: none; +} +.symbol.symbol-20px.symbol-2by3 .symbol-label { + height: 20px; + width: 30px; +} +.symbol.symbol-20px.symbol-2by3 > img { + height: 20px; + width: 30px; + max-width: none; +} +.symbol.symbol-25px > img { + width: 25px; + height: 25px; +} +.symbol.symbol-25px .symbol-label { + width: 25px; + height: 25px; +} +.symbol.symbol-25px.symbol-fixed .symbol-label { + width: 25px; + height: 25px; +} +.symbol.symbol-25px.symbol-fixed > img { + width: 25px; + height: 25px; + max-width: none; +} +.symbol.symbol-25px.symbol-2by3 .symbol-label { + height: 25px; + width: 37.5px; +} +.symbol.symbol-25px.symbol-2by3 > img { + height: 25px; + width: 37.5px; + max-width: none; +} +.symbol.symbol-30px > img { + width: 30px; + height: 30px; +} +.symbol.symbol-30px .symbol-label { + width: 30px; + height: 30px; +} +.symbol.symbol-30px.symbol-fixed .symbol-label { + width: 30px; + height: 30px; +} +.symbol.symbol-30px.symbol-fixed > img { + width: 30px; + height: 30px; + max-width: none; +} +.symbol.symbol-30px.symbol-2by3 .symbol-label { + height: 30px; + width: 45px; +} +.symbol.symbol-30px.symbol-2by3 > img { + height: 30px; + width: 45px; + max-width: none; +} +.symbol.symbol-35px > img { + width: 35px; + height: 35px; +} +.symbol.symbol-35px .symbol-label { + width: 35px; + height: 35px; +} +.symbol.symbol-35px.symbol-fixed .symbol-label { + width: 35px; + height: 35px; +} +.symbol.symbol-35px.symbol-fixed > img { + width: 35px; + height: 35px; + max-width: none; +} +.symbol.symbol-35px.symbol-2by3 .symbol-label { + height: 35px; + width: 52.5px; +} +.symbol.symbol-35px.symbol-2by3 > img { + height: 35px; + width: 52.5px; + max-width: none; +} +.symbol.symbol-40px > img { + width: 40px; + height: 40px; +} +.symbol.symbol-40px .symbol-label { + width: 40px; + height: 40px; +} +.symbol.symbol-40px.symbol-fixed .symbol-label { + width: 40px; + height: 40px; +} +.symbol.symbol-40px.symbol-fixed > img { + width: 40px; + height: 40px; + max-width: none; +} +.symbol.symbol-40px.symbol-2by3 .symbol-label { + height: 40px; + width: 60px; +} +.symbol.symbol-40px.symbol-2by3 > img { + height: 40px; + width: 60px; + max-width: none; +} +.symbol.symbol-45px > img { + width: 45px; + height: 45px; +} +.symbol.symbol-45px .symbol-label { + width: 45px; + height: 45px; +} +.symbol.symbol-45px.symbol-fixed .symbol-label { + width: 45px; + height: 45px; +} +.symbol.symbol-45px.symbol-fixed > img { + width: 45px; + height: 45px; + max-width: none; +} +.symbol.symbol-45px.symbol-2by3 .symbol-label { + height: 45px; + width: 67.5px; +} +.symbol.symbol-45px.symbol-2by3 > img { + height: 45px; + width: 67.5px; + max-width: none; +} +.symbol.symbol-50px > img { + width: 50px; + height: 50px; +} +.symbol.symbol-50px .symbol-label { + width: 50px; + height: 50px; +} +.symbol.symbol-50px.symbol-fixed .symbol-label { + width: 50px; + height: 50px; +} +.symbol.symbol-50px.symbol-fixed > img { + width: 50px; + height: 50px; + max-width: none; +} +.symbol.symbol-50px.symbol-2by3 .symbol-label { + height: 50px; + width: 75px; +} +.symbol.symbol-50px.symbol-2by3 > img { + height: 50px; + width: 75px; + max-width: none; +} +.symbol.symbol-55px > img { + width: 55px; + height: 55px; +} +.symbol.symbol-55px .symbol-label { + width: 55px; + height: 55px; +} +.symbol.symbol-55px.symbol-fixed .symbol-label { + width: 55px; + height: 55px; +} +.symbol.symbol-55px.symbol-fixed > img { + width: 55px; + height: 55px; + max-width: none; +} +.symbol.symbol-55px.symbol-2by3 .symbol-label { + height: 55px; + width: 82.5px; +} +.symbol.symbol-55px.symbol-2by3 > img { + height: 55px; + width: 82.5px; + max-width: none; +} +.symbol.symbol-60px > img { + width: 60px; + height: 60px; +} +.symbol.symbol-60px .symbol-label { + width: 60px; + height: 60px; +} +.symbol.symbol-60px.symbol-fixed .symbol-label { + width: 60px; + height: 60px; +} +.symbol.symbol-60px.symbol-fixed > img { + width: 60px; + height: 60px; + max-width: none; +} +.symbol.symbol-60px.symbol-2by3 .symbol-label { + height: 60px; + width: 90px; +} +.symbol.symbol-60px.symbol-2by3 > img { + height: 60px; + width: 90px; + max-width: none; +} +.symbol.symbol-65px > img { + width: 65px; + height: 65px; +} +.symbol.symbol-65px .symbol-label { + width: 65px; + height: 65px; +} +.symbol.symbol-65px.symbol-fixed .symbol-label { + width: 65px; + height: 65px; +} +.symbol.symbol-65px.symbol-fixed > img { + width: 65px; + height: 65px; + max-width: none; +} +.symbol.symbol-65px.symbol-2by3 .symbol-label { + height: 65px; + width: 97.5px; +} +.symbol.symbol-65px.symbol-2by3 > img { + height: 65px; + width: 97.5px; + max-width: none; +} +.symbol.symbol-70px > img { + width: 70px; + height: 70px; +} +.symbol.symbol-70px .symbol-label { + width: 70px; + height: 70px; +} +.symbol.symbol-70px.symbol-fixed .symbol-label { + width: 70px; + height: 70px; +} +.symbol.symbol-70px.symbol-fixed > img { + width: 70px; + height: 70px; + max-width: none; +} +.symbol.symbol-70px.symbol-2by3 .symbol-label { + height: 70px; + width: 105px; +} +.symbol.symbol-70px.symbol-2by3 > img { + height: 70px; + width: 105px; + max-width: none; +} +.symbol.symbol-75px > img { + width: 75px; + height: 75px; +} +.symbol.symbol-75px .symbol-label { + width: 75px; + height: 75px; +} +.symbol.symbol-75px.symbol-fixed .symbol-label { + width: 75px; + height: 75px; +} +.symbol.symbol-75px.symbol-fixed > img { + width: 75px; + height: 75px; + max-width: none; +} +.symbol.symbol-75px.symbol-2by3 .symbol-label { + height: 75px; + width: 112.5px; +} +.symbol.symbol-75px.symbol-2by3 > img { + height: 75px; + width: 112.5px; + max-width: none; +} +.symbol.symbol-90px > img { + width: 90px; + height: 90px; +} +.symbol.symbol-90px .symbol-label { + width: 90px; + height: 90px; +} +.symbol.symbol-90px.symbol-fixed .symbol-label { + width: 90px; + height: 90px; +} +.symbol.symbol-90px.symbol-fixed > img { + width: 90px; + height: 90px; + max-width: none; +} +.symbol.symbol-90px.symbol-2by3 .symbol-label { + height: 90px; + width: 135px; +} +.symbol.symbol-90px.symbol-2by3 > img { + height: 90px; + width: 135px; + max-width: none; +} +.symbol.symbol-100px > img { + width: 100px; + height: 100px; +} +.symbol.symbol-100px .symbol-label { + width: 100px; + height: 100px; +} +.symbol.symbol-100px.symbol-fixed .symbol-label { + width: 100px; + height: 100px; +} +.symbol.symbol-100px.symbol-fixed > img { + width: 100px; + height: 100px; + max-width: none; +} +.symbol.symbol-100px.symbol-2by3 .symbol-label { + height: 100px; + width: 150px; +} +.symbol.symbol-100px.symbol-2by3 > img { + height: 100px; + width: 150px; + max-width: none; +} +.symbol.symbol-125px > img { + width: 125px; + height: 125px; +} +.symbol.symbol-125px .symbol-label { + width: 125px; + height: 125px; +} +.symbol.symbol-125px.symbol-fixed .symbol-label { + width: 125px; + height: 125px; +} +.symbol.symbol-125px.symbol-fixed > img { + width: 125px; + height: 125px; + max-width: none; +} +.symbol.symbol-125px.symbol-2by3 .symbol-label { + height: 125px; + width: 187.5px; +} +.symbol.symbol-125px.symbol-2by3 > img { + height: 125px; + width: 187.5px; + max-width: none; +} +.symbol.symbol-150px > img { + width: 150px; + height: 150px; +} +.symbol.symbol-150px .symbol-label { + width: 150px; + height: 150px; +} +.symbol.symbol-150px.symbol-fixed .symbol-label { + width: 150px; + height: 150px; +} +.symbol.symbol-150px.symbol-fixed > img { + width: 150px; + height: 150px; + max-width: none; +} +.symbol.symbol-150px.symbol-2by3 .symbol-label { + height: 150px; + width: 225px; +} +.symbol.symbol-150px.symbol-2by3 > img { + height: 150px; + width: 225px; + max-width: none; +} +.symbol.symbol-160px > img { + width: 160px; + height: 160px; +} +.symbol.symbol-160px .symbol-label { + width: 160px; + height: 160px; +} +.symbol.symbol-160px.symbol-fixed .symbol-label { + width: 160px; + height: 160px; +} +.symbol.symbol-160px.symbol-fixed > img { + width: 160px; + height: 160px; + max-width: none; +} +.symbol.symbol-160px.symbol-2by3 .symbol-label { + height: 160px; + width: 240px; +} +.symbol.symbol-160px.symbol-2by3 > img { + height: 160px; + width: 240px; + max-width: none; +} +.symbol.symbol-175px > img { + width: 175px; + height: 175px; +} +.symbol.symbol-175px .symbol-label { + width: 175px; + height: 175px; +} +.symbol.symbol-175px.symbol-fixed .symbol-label { + width: 175px; + height: 175px; +} +.symbol.symbol-175px.symbol-fixed > img { + width: 175px; + height: 175px; + max-width: none; +} +.symbol.symbol-175px.symbol-2by3 .symbol-label { + height: 175px; + width: 262.5px; +} +.symbol.symbol-175px.symbol-2by3 > img { + height: 175px; + width: 262.5px; + max-width: none; +} +.symbol.symbol-200px > img { + width: 200px; + height: 200px; +} +.symbol.symbol-200px .symbol-label { + width: 200px; + height: 200px; +} +.symbol.symbol-200px.symbol-fixed .symbol-label { + width: 200px; + height: 200px; +} +.symbol.symbol-200px.symbol-fixed > img { + width: 200px; + height: 200px; + max-width: none; +} +.symbol.symbol-200px.symbol-2by3 .symbol-label { + height: 200px; + width: 300px; +} +.symbol.symbol-200px.symbol-2by3 > img { + height: 200px; + width: 300px; + max-width: none; +} +@media (min-width: 576px) { + .symbol.symbol-sm-20px > img { + width: 20px; + height: 20px; + } + .symbol.symbol-sm-20px .symbol-label { + width: 20px; + height: 20px; + } + .symbol.symbol-sm-20px.symbol-fixed .symbol-label { + width: 20px; + height: 20px; + } + .symbol.symbol-sm-20px.symbol-fixed > img { + width: 20px; + height: 20px; + max-width: none; + } + .symbol.symbol-sm-20px.symbol-2by3 .symbol-label { + height: 20px; + width: 30px; + } + .symbol.symbol-sm-20px.symbol-2by3 > img { + height: 20px; + width: 30px; + max-width: none; + } + .symbol.symbol-sm-25px > img { + width: 25px; + height: 25px; + } + .symbol.symbol-sm-25px .symbol-label { + width: 25px; + height: 25px; + } + .symbol.symbol-sm-25px.symbol-fixed .symbol-label { + width: 25px; + height: 25px; + } + .symbol.symbol-sm-25px.symbol-fixed > img { + width: 25px; + height: 25px; + max-width: none; + } + .symbol.symbol-sm-25px.symbol-2by3 .symbol-label { + height: 25px; + width: 37.5px; + } + .symbol.symbol-sm-25px.symbol-2by3 > img { + height: 25px; + width: 37.5px; + max-width: none; + } + .symbol.symbol-sm-30px > img { + width: 30px; + height: 30px; + } + .symbol.symbol-sm-30px .symbol-label { + width: 30px; + height: 30px; + } + .symbol.symbol-sm-30px.symbol-fixed .symbol-label { + width: 30px; + height: 30px; + } + .symbol.symbol-sm-30px.symbol-fixed > img { + width: 30px; + height: 30px; + max-width: none; + } + .symbol.symbol-sm-30px.symbol-2by3 .symbol-label { + height: 30px; + width: 45px; + } + .symbol.symbol-sm-30px.symbol-2by3 > img { + height: 30px; + width: 45px; + max-width: none; + } + .symbol.symbol-sm-35px > img { + width: 35px; + height: 35px; + } + .symbol.symbol-sm-35px .symbol-label { + width: 35px; + height: 35px; + } + .symbol.symbol-sm-35px.symbol-fixed .symbol-label { + width: 35px; + height: 35px; + } + .symbol.symbol-sm-35px.symbol-fixed > img { + width: 35px; + height: 35px; + max-width: none; + } + .symbol.symbol-sm-35px.symbol-2by3 .symbol-label { + height: 35px; + width: 52.5px; + } + .symbol.symbol-sm-35px.symbol-2by3 > img { + height: 35px; + width: 52.5px; + max-width: none; + } + .symbol.symbol-sm-40px > img { + width: 40px; + height: 40px; + } + .symbol.symbol-sm-40px .symbol-label { + width: 40px; + height: 40px; + } + .symbol.symbol-sm-40px.symbol-fixed .symbol-label { + width: 40px; + height: 40px; + } + .symbol.symbol-sm-40px.symbol-fixed > img { + width: 40px; + height: 40px; + max-width: none; + } + .symbol.symbol-sm-40px.symbol-2by3 .symbol-label { + height: 40px; + width: 60px; + } + .symbol.symbol-sm-40px.symbol-2by3 > img { + height: 40px; + width: 60px; + max-width: none; + } + .symbol.symbol-sm-45px > img { + width: 45px; + height: 45px; + } + .symbol.symbol-sm-45px .symbol-label { + width: 45px; + height: 45px; + } + .symbol.symbol-sm-45px.symbol-fixed .symbol-label { + width: 45px; + height: 45px; + } + .symbol.symbol-sm-45px.symbol-fixed > img { + width: 45px; + height: 45px; + max-width: none; + } + .symbol.symbol-sm-45px.symbol-2by3 .symbol-label { + height: 45px; + width: 67.5px; + } + .symbol.symbol-sm-45px.symbol-2by3 > img { + height: 45px; + width: 67.5px; + max-width: none; + } + .symbol.symbol-sm-50px > img { + width: 50px; + height: 50px; + } + .symbol.symbol-sm-50px .symbol-label { + width: 50px; + height: 50px; + } + .symbol.symbol-sm-50px.symbol-fixed .symbol-label { + width: 50px; + height: 50px; + } + .symbol.symbol-sm-50px.symbol-fixed > img { + width: 50px; + height: 50px; + max-width: none; + } + .symbol.symbol-sm-50px.symbol-2by3 .symbol-label { + height: 50px; + width: 75px; + } + .symbol.symbol-sm-50px.symbol-2by3 > img { + height: 50px; + width: 75px; + max-width: none; + } + .symbol.symbol-sm-55px > img { + width: 55px; + height: 55px; + } + .symbol.symbol-sm-55px .symbol-label { + width: 55px; + height: 55px; + } + .symbol.symbol-sm-55px.symbol-fixed .symbol-label { + width: 55px; + height: 55px; + } + .symbol.symbol-sm-55px.symbol-fixed > img { + width: 55px; + height: 55px; + max-width: none; + } + .symbol.symbol-sm-55px.symbol-2by3 .symbol-label { + height: 55px; + width: 82.5px; + } + .symbol.symbol-sm-55px.symbol-2by3 > img { + height: 55px; + width: 82.5px; + max-width: none; + } + .symbol.symbol-sm-60px > img { + width: 60px; + height: 60px; + } + .symbol.symbol-sm-60px .symbol-label { + width: 60px; + height: 60px; + } + .symbol.symbol-sm-60px.symbol-fixed .symbol-label { + width: 60px; + height: 60px; + } + .symbol.symbol-sm-60px.symbol-fixed > img { + width: 60px; + height: 60px; + max-width: none; + } + .symbol.symbol-sm-60px.symbol-2by3 .symbol-label { + height: 60px; + width: 90px; + } + .symbol.symbol-sm-60px.symbol-2by3 > img { + height: 60px; + width: 90px; + max-width: none; + } + .symbol.symbol-sm-65px > img { + width: 65px; + height: 65px; + } + .symbol.symbol-sm-65px .symbol-label { + width: 65px; + height: 65px; + } + .symbol.symbol-sm-65px.symbol-fixed .symbol-label { + width: 65px; + height: 65px; + } + .symbol.symbol-sm-65px.symbol-fixed > img { + width: 65px; + height: 65px; + max-width: none; + } + .symbol.symbol-sm-65px.symbol-2by3 .symbol-label { + height: 65px; + width: 97.5px; + } + .symbol.symbol-sm-65px.symbol-2by3 > img { + height: 65px; + width: 97.5px; + max-width: none; + } + .symbol.symbol-sm-70px > img { + width: 70px; + height: 70px; + } + .symbol.symbol-sm-70px .symbol-label { + width: 70px; + height: 70px; + } + .symbol.symbol-sm-70px.symbol-fixed .symbol-label { + width: 70px; + height: 70px; + } + .symbol.symbol-sm-70px.symbol-fixed > img { + width: 70px; + height: 70px; + max-width: none; + } + .symbol.symbol-sm-70px.symbol-2by3 .symbol-label { + height: 70px; + width: 105px; + } + .symbol.symbol-sm-70px.symbol-2by3 > img { + height: 70px; + width: 105px; + max-width: none; + } + .symbol.symbol-sm-75px > img { + width: 75px; + height: 75px; + } + .symbol.symbol-sm-75px .symbol-label { + width: 75px; + height: 75px; + } + .symbol.symbol-sm-75px.symbol-fixed .symbol-label { + width: 75px; + height: 75px; + } + .symbol.symbol-sm-75px.symbol-fixed > img { + width: 75px; + height: 75px; + max-width: none; + } + .symbol.symbol-sm-75px.symbol-2by3 .symbol-label { + height: 75px; + width: 112.5px; + } + .symbol.symbol-sm-75px.symbol-2by3 > img { + height: 75px; + width: 112.5px; + max-width: none; + } + .symbol.symbol-sm-90px > img { + width: 90px; + height: 90px; + } + .symbol.symbol-sm-90px .symbol-label { + width: 90px; + height: 90px; + } + .symbol.symbol-sm-90px.symbol-fixed .symbol-label { + width: 90px; + height: 90px; + } + .symbol.symbol-sm-90px.symbol-fixed > img { + width: 90px; + height: 90px; + max-width: none; + } + .symbol.symbol-sm-90px.symbol-2by3 .symbol-label { + height: 90px; + width: 135px; + } + .symbol.symbol-sm-90px.symbol-2by3 > img { + height: 90px; + width: 135px; + max-width: none; + } + .symbol.symbol-sm-100px > img { + width: 100px; + height: 100px; + } + .symbol.symbol-sm-100px .symbol-label { + width: 100px; + height: 100px; + } + .symbol.symbol-sm-100px.symbol-fixed .symbol-label { + width: 100px; + height: 100px; + } + .symbol.symbol-sm-100px.symbol-fixed > img { + width: 100px; + height: 100px; + max-width: none; + } + .symbol.symbol-sm-100px.symbol-2by3 .symbol-label { + height: 100px; + width: 150px; + } + .symbol.symbol-sm-100px.symbol-2by3 > img { + height: 100px; + width: 150px; + max-width: none; + } + .symbol.symbol-sm-125px > img { + width: 125px; + height: 125px; + } + .symbol.symbol-sm-125px .symbol-label { + width: 125px; + height: 125px; + } + .symbol.symbol-sm-125px.symbol-fixed .symbol-label { + width: 125px; + height: 125px; + } + .symbol.symbol-sm-125px.symbol-fixed > img { + width: 125px; + height: 125px; + max-width: none; + } + .symbol.symbol-sm-125px.symbol-2by3 .symbol-label { + height: 125px; + width: 187.5px; + } + .symbol.symbol-sm-125px.symbol-2by3 > img { + height: 125px; + width: 187.5px; + max-width: none; + } + .symbol.symbol-sm-150px > img { + width: 150px; + height: 150px; + } + .symbol.symbol-sm-150px .symbol-label { + width: 150px; + height: 150px; + } + .symbol.symbol-sm-150px.symbol-fixed .symbol-label { + width: 150px; + height: 150px; + } + .symbol.symbol-sm-150px.symbol-fixed > img { + width: 150px; + height: 150px; + max-width: none; + } + .symbol.symbol-sm-150px.symbol-2by3 .symbol-label { + height: 150px; + width: 225px; + } + .symbol.symbol-sm-150px.symbol-2by3 > img { + height: 150px; + width: 225px; + max-width: none; + } + .symbol.symbol-sm-160px > img { + width: 160px; + height: 160px; + } + .symbol.symbol-sm-160px .symbol-label { + width: 160px; + height: 160px; + } + .symbol.symbol-sm-160px.symbol-fixed .symbol-label { + width: 160px; + height: 160px; + } + .symbol.symbol-sm-160px.symbol-fixed > img { + width: 160px; + height: 160px; + max-width: none; + } + .symbol.symbol-sm-160px.symbol-2by3 .symbol-label { + height: 160px; + width: 240px; + } + .symbol.symbol-sm-160px.symbol-2by3 > img { + height: 160px; + width: 240px; + max-width: none; + } + .symbol.symbol-sm-175px > img { + width: 175px; + height: 175px; + } + .symbol.symbol-sm-175px .symbol-label { + width: 175px; + height: 175px; + } + .symbol.symbol-sm-175px.symbol-fixed .symbol-label { + width: 175px; + height: 175px; + } + .symbol.symbol-sm-175px.symbol-fixed > img { + width: 175px; + height: 175px; + max-width: none; + } + .symbol.symbol-sm-175px.symbol-2by3 .symbol-label { + height: 175px; + width: 262.5px; + } + .symbol.symbol-sm-175px.symbol-2by3 > img { + height: 175px; + width: 262.5px; + max-width: none; + } + .symbol.symbol-sm-200px > img { + width: 200px; + height: 200px; + } + .symbol.symbol-sm-200px .symbol-label { + width: 200px; + height: 200px; + } + .symbol.symbol-sm-200px.symbol-fixed .symbol-label { + width: 200px; + height: 200px; + } + .symbol.symbol-sm-200px.symbol-fixed > img { + width: 200px; + height: 200px; + max-width: none; + } + .symbol.symbol-sm-200px.symbol-2by3 .symbol-label { + height: 200px; + width: 300px; + } + .symbol.symbol-sm-200px.symbol-2by3 > img { + height: 200px; + width: 300px; + max-width: none; + } +} +@media (min-width: 768px) { + .symbol.symbol-md-20px > img { + width: 20px; + height: 20px; + } + .symbol.symbol-md-20px .symbol-label { + width: 20px; + height: 20px; + } + .symbol.symbol-md-20px.symbol-fixed .symbol-label { + width: 20px; + height: 20px; + } + .symbol.symbol-md-20px.symbol-fixed > img { + width: 20px; + height: 20px; + max-width: none; + } + .symbol.symbol-md-20px.symbol-2by3 .symbol-label { + height: 20px; + width: 30px; + } + .symbol.symbol-md-20px.symbol-2by3 > img { + height: 20px; + width: 30px; + max-width: none; + } + .symbol.symbol-md-25px > img { + width: 25px; + height: 25px; + } + .symbol.symbol-md-25px .symbol-label { + width: 25px; + height: 25px; + } + .symbol.symbol-md-25px.symbol-fixed .symbol-label { + width: 25px; + height: 25px; + } + .symbol.symbol-md-25px.symbol-fixed > img { + width: 25px; + height: 25px; + max-width: none; + } + .symbol.symbol-md-25px.symbol-2by3 .symbol-label { + height: 25px; + width: 37.5px; + } + .symbol.symbol-md-25px.symbol-2by3 > img { + height: 25px; + width: 37.5px; + max-width: none; + } + .symbol.symbol-md-30px > img { + width: 30px; + height: 30px; + } + .symbol.symbol-md-30px .symbol-label { + width: 30px; + height: 30px; + } + .symbol.symbol-md-30px.symbol-fixed .symbol-label { + width: 30px; + height: 30px; + } + .symbol.symbol-md-30px.symbol-fixed > img { + width: 30px; + height: 30px; + max-width: none; + } + .symbol.symbol-md-30px.symbol-2by3 .symbol-label { + height: 30px; + width: 45px; + } + .symbol.symbol-md-30px.symbol-2by3 > img { + height: 30px; + width: 45px; + max-width: none; + } + .symbol.symbol-md-35px > img { + width: 35px; + height: 35px; + } + .symbol.symbol-md-35px .symbol-label { + width: 35px; + height: 35px; + } + .symbol.symbol-md-35px.symbol-fixed .symbol-label { + width: 35px; + height: 35px; + } + .symbol.symbol-md-35px.symbol-fixed > img { + width: 35px; + height: 35px; + max-width: none; + } + .symbol.symbol-md-35px.symbol-2by3 .symbol-label { + height: 35px; + width: 52.5px; + } + .symbol.symbol-md-35px.symbol-2by3 > img { + height: 35px; + width: 52.5px; + max-width: none; + } + .symbol.symbol-md-40px > img { + width: 40px; + height: 40px; + } + .symbol.symbol-md-40px .symbol-label { + width: 40px; + height: 40px; + } + .symbol.symbol-md-40px.symbol-fixed .symbol-label { + width: 40px; + height: 40px; + } + .symbol.symbol-md-40px.symbol-fixed > img { + width: 40px; + height: 40px; + max-width: none; + } + .symbol.symbol-md-40px.symbol-2by3 .symbol-label { + height: 40px; + width: 60px; + } + .symbol.symbol-md-40px.symbol-2by3 > img { + height: 40px; + width: 60px; + max-width: none; + } + .symbol.symbol-md-45px > img { + width: 45px; + height: 45px; + } + .symbol.symbol-md-45px .symbol-label { + width: 45px; + height: 45px; + } + .symbol.symbol-md-45px.symbol-fixed .symbol-label { + width: 45px; + height: 45px; + } + .symbol.symbol-md-45px.symbol-fixed > img { + width: 45px; + height: 45px; + max-width: none; + } + .symbol.symbol-md-45px.symbol-2by3 .symbol-label { + height: 45px; + width: 67.5px; + } + .symbol.symbol-md-45px.symbol-2by3 > img { + height: 45px; + width: 67.5px; + max-width: none; + } + .symbol.symbol-md-50px > img { + width: 50px; + height: 50px; + } + .symbol.symbol-md-50px .symbol-label { + width: 50px; + height: 50px; + } + .symbol.symbol-md-50px.symbol-fixed .symbol-label { + width: 50px; + height: 50px; + } + .symbol.symbol-md-50px.symbol-fixed > img { + width: 50px; + height: 50px; + max-width: none; + } + .symbol.symbol-md-50px.symbol-2by3 .symbol-label { + height: 50px; + width: 75px; + } + .symbol.symbol-md-50px.symbol-2by3 > img { + height: 50px; + width: 75px; + max-width: none; + } + .symbol.symbol-md-55px > img { + width: 55px; + height: 55px; + } + .symbol.symbol-md-55px .symbol-label { + width: 55px; + height: 55px; + } + .symbol.symbol-md-55px.symbol-fixed .symbol-label { + width: 55px; + height: 55px; + } + .symbol.symbol-md-55px.symbol-fixed > img { + width: 55px; + height: 55px; + max-width: none; + } + .symbol.symbol-md-55px.symbol-2by3 .symbol-label { + height: 55px; + width: 82.5px; + } + .symbol.symbol-md-55px.symbol-2by3 > img { + height: 55px; + width: 82.5px; + max-width: none; + } + .symbol.symbol-md-60px > img { + width: 60px; + height: 60px; + } + .symbol.symbol-md-60px .symbol-label { + width: 60px; + height: 60px; + } + .symbol.symbol-md-60px.symbol-fixed .symbol-label { + width: 60px; + height: 60px; + } + .symbol.symbol-md-60px.symbol-fixed > img { + width: 60px; + height: 60px; + max-width: none; + } + .symbol.symbol-md-60px.symbol-2by3 .symbol-label { + height: 60px; + width: 90px; + } + .symbol.symbol-md-60px.symbol-2by3 > img { + height: 60px; + width: 90px; + max-width: none; + } + .symbol.symbol-md-65px > img { + width: 65px; + height: 65px; + } + .symbol.symbol-md-65px .symbol-label { + width: 65px; + height: 65px; + } + .symbol.symbol-md-65px.symbol-fixed .symbol-label { + width: 65px; + height: 65px; + } + .symbol.symbol-md-65px.symbol-fixed > img { + width: 65px; + height: 65px; + max-width: none; + } + .symbol.symbol-md-65px.symbol-2by3 .symbol-label { + height: 65px; + width: 97.5px; + } + .symbol.symbol-md-65px.symbol-2by3 > img { + height: 65px; + width: 97.5px; + max-width: none; + } + .symbol.symbol-md-70px > img { + width: 70px; + height: 70px; + } + .symbol.symbol-md-70px .symbol-label { + width: 70px; + height: 70px; + } + .symbol.symbol-md-70px.symbol-fixed .symbol-label { + width: 70px; + height: 70px; + } + .symbol.symbol-md-70px.symbol-fixed > img { + width: 70px; + height: 70px; + max-width: none; + } + .symbol.symbol-md-70px.symbol-2by3 .symbol-label { + height: 70px; + width: 105px; + } + .symbol.symbol-md-70px.symbol-2by3 > img { + height: 70px; + width: 105px; + max-width: none; + } + .symbol.symbol-md-75px > img { + width: 75px; + height: 75px; + } + .symbol.symbol-md-75px .symbol-label { + width: 75px; + height: 75px; + } + .symbol.symbol-md-75px.symbol-fixed .symbol-label { + width: 75px; + height: 75px; + } + .symbol.symbol-md-75px.symbol-fixed > img { + width: 75px; + height: 75px; + max-width: none; + } + .symbol.symbol-md-75px.symbol-2by3 .symbol-label { + height: 75px; + width: 112.5px; + } + .symbol.symbol-md-75px.symbol-2by3 > img { + height: 75px; + width: 112.5px; + max-width: none; + } + .symbol.symbol-md-90px > img { + width: 90px; + height: 90px; + } + .symbol.symbol-md-90px .symbol-label { + width: 90px; + height: 90px; + } + .symbol.symbol-md-90px.symbol-fixed .symbol-label { + width: 90px; + height: 90px; + } + .symbol.symbol-md-90px.symbol-fixed > img { + width: 90px; + height: 90px; + max-width: none; + } + .symbol.symbol-md-90px.symbol-2by3 .symbol-label { + height: 90px; + width: 135px; + } + .symbol.symbol-md-90px.symbol-2by3 > img { + height: 90px; + width: 135px; + max-width: none; + } + .symbol.symbol-md-100px > img { + width: 100px; + height: 100px; + } + .symbol.symbol-md-100px .symbol-label { + width: 100px; + height: 100px; + } + .symbol.symbol-md-100px.symbol-fixed .symbol-label { + width: 100px; + height: 100px; + } + .symbol.symbol-md-100px.symbol-fixed > img { + width: 100px; + height: 100px; + max-width: none; + } + .symbol.symbol-md-100px.symbol-2by3 .symbol-label { + height: 100px; + width: 150px; + } + .symbol.symbol-md-100px.symbol-2by3 > img { + height: 100px; + width: 150px; + max-width: none; + } + .symbol.symbol-md-125px > img { + width: 125px; + height: 125px; + } + .symbol.symbol-md-125px .symbol-label { + width: 125px; + height: 125px; + } + .symbol.symbol-md-125px.symbol-fixed .symbol-label { + width: 125px; + height: 125px; + } + .symbol.symbol-md-125px.symbol-fixed > img { + width: 125px; + height: 125px; + max-width: none; + } + .symbol.symbol-md-125px.symbol-2by3 .symbol-label { + height: 125px; + width: 187.5px; + } + .symbol.symbol-md-125px.symbol-2by3 > img { + height: 125px; + width: 187.5px; + max-width: none; + } + .symbol.symbol-md-150px > img { + width: 150px; + height: 150px; + } + .symbol.symbol-md-150px .symbol-label { + width: 150px; + height: 150px; + } + .symbol.symbol-md-150px.symbol-fixed .symbol-label { + width: 150px; + height: 150px; + } + .symbol.symbol-md-150px.symbol-fixed > img { + width: 150px; + height: 150px; + max-width: none; + } + .symbol.symbol-md-150px.symbol-2by3 .symbol-label { + height: 150px; + width: 225px; + } + .symbol.symbol-md-150px.symbol-2by3 > img { + height: 150px; + width: 225px; + max-width: none; + } + .symbol.symbol-md-160px > img { + width: 160px; + height: 160px; + } + .symbol.symbol-md-160px .symbol-label { + width: 160px; + height: 160px; + } + .symbol.symbol-md-160px.symbol-fixed .symbol-label { + width: 160px; + height: 160px; + } + .symbol.symbol-md-160px.symbol-fixed > img { + width: 160px; + height: 160px; + max-width: none; + } + .symbol.symbol-md-160px.symbol-2by3 .symbol-label { + height: 160px; + width: 240px; + } + .symbol.symbol-md-160px.symbol-2by3 > img { + height: 160px; + width: 240px; + max-width: none; + } + .symbol.symbol-md-175px > img { + width: 175px; + height: 175px; + } + .symbol.symbol-md-175px .symbol-label { + width: 175px; + height: 175px; + } + .symbol.symbol-md-175px.symbol-fixed .symbol-label { + width: 175px; + height: 175px; + } + .symbol.symbol-md-175px.symbol-fixed > img { + width: 175px; + height: 175px; + max-width: none; + } + .symbol.symbol-md-175px.symbol-2by3 .symbol-label { + height: 175px; + width: 262.5px; + } + .symbol.symbol-md-175px.symbol-2by3 > img { + height: 175px; + width: 262.5px; + max-width: none; + } + .symbol.symbol-md-200px > img { + width: 200px; + height: 200px; + } + .symbol.symbol-md-200px .symbol-label { + width: 200px; + height: 200px; + } + .symbol.symbol-md-200px.symbol-fixed .symbol-label { + width: 200px; + height: 200px; + } + .symbol.symbol-md-200px.symbol-fixed > img { + width: 200px; + height: 200px; + max-width: none; + } + .symbol.symbol-md-200px.symbol-2by3 .symbol-label { + height: 200px; + width: 300px; + } + .symbol.symbol-md-200px.symbol-2by3 > img { + height: 200px; + width: 300px; + max-width: none; + } +} +@media (min-width: 992px) { + .symbol.symbol-lg-20px > img { + width: 20px; + height: 20px; + } + .symbol.symbol-lg-20px .symbol-label { + width: 20px; + height: 20px; + } + .symbol.symbol-lg-20px.symbol-fixed .symbol-label { + width: 20px; + height: 20px; + } + .symbol.symbol-lg-20px.symbol-fixed > img { + width: 20px; + height: 20px; + max-width: none; + } + .symbol.symbol-lg-20px.symbol-2by3 .symbol-label { + height: 20px; + width: 30px; + } + .symbol.symbol-lg-20px.symbol-2by3 > img { + height: 20px; + width: 30px; + max-width: none; + } + .symbol.symbol-lg-25px > img { + width: 25px; + height: 25px; + } + .symbol.symbol-lg-25px .symbol-label { + width: 25px; + height: 25px; + } + .symbol.symbol-lg-25px.symbol-fixed .symbol-label { + width: 25px; + height: 25px; + } + .symbol.symbol-lg-25px.symbol-fixed > img { + width: 25px; + height: 25px; + max-width: none; + } + .symbol.symbol-lg-25px.symbol-2by3 .symbol-label { + height: 25px; + width: 37.5px; + } + .symbol.symbol-lg-25px.symbol-2by3 > img { + height: 25px; + width: 37.5px; + max-width: none; + } + .symbol.symbol-lg-30px > img { + width: 30px; + height: 30px; + } + .symbol.symbol-lg-30px .symbol-label { + width: 30px; + height: 30px; + } + .symbol.symbol-lg-30px.symbol-fixed .symbol-label { + width: 30px; + height: 30px; + } + .symbol.symbol-lg-30px.symbol-fixed > img { + width: 30px; + height: 30px; + max-width: none; + } + .symbol.symbol-lg-30px.symbol-2by3 .symbol-label { + height: 30px; + width: 45px; + } + .symbol.symbol-lg-30px.symbol-2by3 > img { + height: 30px; + width: 45px; + max-width: none; + } + .symbol.symbol-lg-35px > img { + width: 35px; + height: 35px; + } + .symbol.symbol-lg-35px .symbol-label { + width: 35px; + height: 35px; + } + .symbol.symbol-lg-35px.symbol-fixed .symbol-label { + width: 35px; + height: 35px; + } + .symbol.symbol-lg-35px.symbol-fixed > img { + width: 35px; + height: 35px; + max-width: none; + } + .symbol.symbol-lg-35px.symbol-2by3 .symbol-label { + height: 35px; + width: 52.5px; + } + .symbol.symbol-lg-35px.symbol-2by3 > img { + height: 35px; + width: 52.5px; + max-width: none; + } + .symbol.symbol-lg-40px > img { + width: 40px; + height: 40px; + } + .symbol.symbol-lg-40px .symbol-label { + width: 40px; + height: 40px; + } + .symbol.symbol-lg-40px.symbol-fixed .symbol-label { + width: 40px; + height: 40px; + } + .symbol.symbol-lg-40px.symbol-fixed > img { + width: 40px; + height: 40px; + max-width: none; + } + .symbol.symbol-lg-40px.symbol-2by3 .symbol-label { + height: 40px; + width: 60px; + } + .symbol.symbol-lg-40px.symbol-2by3 > img { + height: 40px; + width: 60px; + max-width: none; + } + .symbol.symbol-lg-45px > img { + width: 45px; + height: 45px; + } + .symbol.symbol-lg-45px .symbol-label { + width: 45px; + height: 45px; + } + .symbol.symbol-lg-45px.symbol-fixed .symbol-label { + width: 45px; + height: 45px; + } + .symbol.symbol-lg-45px.symbol-fixed > img { + width: 45px; + height: 45px; + max-width: none; + } + .symbol.symbol-lg-45px.symbol-2by3 .symbol-label { + height: 45px; + width: 67.5px; + } + .symbol.symbol-lg-45px.symbol-2by3 > img { + height: 45px; + width: 67.5px; + max-width: none; + } + .symbol.symbol-lg-50px > img { + width: 50px; + height: 50px; + } + .symbol.symbol-lg-50px .symbol-label { + width: 50px; + height: 50px; + } + .symbol.symbol-lg-50px.symbol-fixed .symbol-label { + width: 50px; + height: 50px; + } + .symbol.symbol-lg-50px.symbol-fixed > img { + width: 50px; + height: 50px; + max-width: none; + } + .symbol.symbol-lg-50px.symbol-2by3 .symbol-label { + height: 50px; + width: 75px; + } + .symbol.symbol-lg-50px.symbol-2by3 > img { + height: 50px; + width: 75px; + max-width: none; + } + .symbol.symbol-lg-55px > img { + width: 55px; + height: 55px; + } + .symbol.symbol-lg-55px .symbol-label { + width: 55px; + height: 55px; + } + .symbol.symbol-lg-55px.symbol-fixed .symbol-label { + width: 55px; + height: 55px; + } + .symbol.symbol-lg-55px.symbol-fixed > img { + width: 55px; + height: 55px; + max-width: none; + } + .symbol.symbol-lg-55px.symbol-2by3 .symbol-label { + height: 55px; + width: 82.5px; + } + .symbol.symbol-lg-55px.symbol-2by3 > img { + height: 55px; + width: 82.5px; + max-width: none; + } + .symbol.symbol-lg-60px > img { + width: 60px; + height: 60px; + } + .symbol.symbol-lg-60px .symbol-label { + width: 60px; + height: 60px; + } + .symbol.symbol-lg-60px.symbol-fixed .symbol-label { + width: 60px; + height: 60px; + } + .symbol.symbol-lg-60px.symbol-fixed > img { + width: 60px; + height: 60px; + max-width: none; + } + .symbol.symbol-lg-60px.symbol-2by3 .symbol-label { + height: 60px; + width: 90px; + } + .symbol.symbol-lg-60px.symbol-2by3 > img { + height: 60px; + width: 90px; + max-width: none; + } + .symbol.symbol-lg-65px > img { + width: 65px; + height: 65px; + } + .symbol.symbol-lg-65px .symbol-label { + width: 65px; + height: 65px; + } + .symbol.symbol-lg-65px.symbol-fixed .symbol-label { + width: 65px; + height: 65px; + } + .symbol.symbol-lg-65px.symbol-fixed > img { + width: 65px; + height: 65px; + max-width: none; + } + .symbol.symbol-lg-65px.symbol-2by3 .symbol-label { + height: 65px; + width: 97.5px; + } + .symbol.symbol-lg-65px.symbol-2by3 > img { + height: 65px; + width: 97.5px; + max-width: none; + } + .symbol.symbol-lg-70px > img { + width: 70px; + height: 70px; + } + .symbol.symbol-lg-70px .symbol-label { + width: 70px; + height: 70px; + } + .symbol.symbol-lg-70px.symbol-fixed .symbol-label { + width: 70px; + height: 70px; + } + .symbol.symbol-lg-70px.symbol-fixed > img { + width: 70px; + height: 70px; + max-width: none; + } + .symbol.symbol-lg-70px.symbol-2by3 .symbol-label { + height: 70px; + width: 105px; + } + .symbol.symbol-lg-70px.symbol-2by3 > img { + height: 70px; + width: 105px; + max-width: none; + } + .symbol.symbol-lg-75px > img { + width: 75px; + height: 75px; + } + .symbol.symbol-lg-75px .symbol-label { + width: 75px; + height: 75px; + } + .symbol.symbol-lg-75px.symbol-fixed .symbol-label { + width: 75px; + height: 75px; + } + .symbol.symbol-lg-75px.symbol-fixed > img { + width: 75px; + height: 75px; + max-width: none; + } + .symbol.symbol-lg-75px.symbol-2by3 .symbol-label { + height: 75px; + width: 112.5px; + } + .symbol.symbol-lg-75px.symbol-2by3 > img { + height: 75px; + width: 112.5px; + max-width: none; + } + .symbol.symbol-lg-90px > img { + width: 90px; + height: 90px; + } + .symbol.symbol-lg-90px .symbol-label { + width: 90px; + height: 90px; + } + .symbol.symbol-lg-90px.symbol-fixed .symbol-label { + width: 90px; + height: 90px; + } + .symbol.symbol-lg-90px.symbol-fixed > img { + width: 90px; + height: 90px; + max-width: none; + } + .symbol.symbol-lg-90px.symbol-2by3 .symbol-label { + height: 90px; + width: 135px; + } + .symbol.symbol-lg-90px.symbol-2by3 > img { + height: 90px; + width: 135px; + max-width: none; + } + .symbol.symbol-lg-100px > img { + width: 100px; + height: 100px; + } + .symbol.symbol-lg-100px .symbol-label { + width: 100px; + height: 100px; + } + .symbol.symbol-lg-100px.symbol-fixed .symbol-label { + width: 100px; + height: 100px; + } + .symbol.symbol-lg-100px.symbol-fixed > img { + width: 100px; + height: 100px; + max-width: none; + } + .symbol.symbol-lg-100px.symbol-2by3 .symbol-label { + height: 100px; + width: 150px; + } + .symbol.symbol-lg-100px.symbol-2by3 > img { + height: 100px; + width: 150px; + max-width: none; + } + .symbol.symbol-lg-125px > img { + width: 125px; + height: 125px; + } + .symbol.symbol-lg-125px .symbol-label { + width: 125px; + height: 125px; + } + .symbol.symbol-lg-125px.symbol-fixed .symbol-label { + width: 125px; + height: 125px; + } + .symbol.symbol-lg-125px.symbol-fixed > img { + width: 125px; + height: 125px; + max-width: none; + } + .symbol.symbol-lg-125px.symbol-2by3 .symbol-label { + height: 125px; + width: 187.5px; + } + .symbol.symbol-lg-125px.symbol-2by3 > img { + height: 125px; + width: 187.5px; + max-width: none; + } + .symbol.symbol-lg-150px > img { + width: 150px; + height: 150px; + } + .symbol.symbol-lg-150px .symbol-label { + width: 150px; + height: 150px; + } + .symbol.symbol-lg-150px.symbol-fixed .symbol-label { + width: 150px; + height: 150px; + } + .symbol.symbol-lg-150px.symbol-fixed > img { + width: 150px; + height: 150px; + max-width: none; + } + .symbol.symbol-lg-150px.symbol-2by3 .symbol-label { + height: 150px; + width: 225px; + } + .symbol.symbol-lg-150px.symbol-2by3 > img { + height: 150px; + width: 225px; + max-width: none; + } + .symbol.symbol-lg-160px > img { + width: 160px; + height: 160px; + } + .symbol.symbol-lg-160px .symbol-label { + width: 160px; + height: 160px; + } + .symbol.symbol-lg-160px.symbol-fixed .symbol-label { + width: 160px; + height: 160px; + } + .symbol.symbol-lg-160px.symbol-fixed > img { + width: 160px; + height: 160px; + max-width: none; + } + .symbol.symbol-lg-160px.symbol-2by3 .symbol-label { + height: 160px; + width: 240px; + } + .symbol.symbol-lg-160px.symbol-2by3 > img { + height: 160px; + width: 240px; + max-width: none; + } + .symbol.symbol-lg-175px > img { + width: 175px; + height: 175px; + } + .symbol.symbol-lg-175px .symbol-label { + width: 175px; + height: 175px; + } + .symbol.symbol-lg-175px.symbol-fixed .symbol-label { + width: 175px; + height: 175px; + } + .symbol.symbol-lg-175px.symbol-fixed > img { + width: 175px; + height: 175px; + max-width: none; + } + .symbol.symbol-lg-175px.symbol-2by3 .symbol-label { + height: 175px; + width: 262.5px; + } + .symbol.symbol-lg-175px.symbol-2by3 > img { + height: 175px; + width: 262.5px; + max-width: none; + } + .symbol.symbol-lg-200px > img { + width: 200px; + height: 200px; + } + .symbol.symbol-lg-200px .symbol-label { + width: 200px; + height: 200px; + } + .symbol.symbol-lg-200px.symbol-fixed .symbol-label { + width: 200px; + height: 200px; + } + .symbol.symbol-lg-200px.symbol-fixed > img { + width: 200px; + height: 200px; + max-width: none; + } + .symbol.symbol-lg-200px.symbol-2by3 .symbol-label { + height: 200px; + width: 300px; + } + .symbol.symbol-lg-200px.symbol-2by3 > img { + height: 200px; + width: 300px; + max-width: none; + } +} +@media (min-width: 1200px) { + .symbol.symbol-xl-20px > img { + width: 20px; + height: 20px; + } + .symbol.symbol-xl-20px .symbol-label { + width: 20px; + height: 20px; + } + .symbol.symbol-xl-20px.symbol-fixed .symbol-label { + width: 20px; + height: 20px; + } + .symbol.symbol-xl-20px.symbol-fixed > img { + width: 20px; + height: 20px; + max-width: none; + } + .symbol.symbol-xl-20px.symbol-2by3 .symbol-label { + height: 20px; + width: 30px; + } + .symbol.symbol-xl-20px.symbol-2by3 > img { + height: 20px; + width: 30px; + max-width: none; + } + .symbol.symbol-xl-25px > img { + width: 25px; + height: 25px; + } + .symbol.symbol-xl-25px .symbol-label { + width: 25px; + height: 25px; + } + .symbol.symbol-xl-25px.symbol-fixed .symbol-label { + width: 25px; + height: 25px; + } + .symbol.symbol-xl-25px.symbol-fixed > img { + width: 25px; + height: 25px; + max-width: none; + } + .symbol.symbol-xl-25px.symbol-2by3 .symbol-label { + height: 25px; + width: 37.5px; + } + .symbol.symbol-xl-25px.symbol-2by3 > img { + height: 25px; + width: 37.5px; + max-width: none; + } + .symbol.symbol-xl-30px > img { + width: 30px; + height: 30px; + } + .symbol.symbol-xl-30px .symbol-label { + width: 30px; + height: 30px; + } + .symbol.symbol-xl-30px.symbol-fixed .symbol-label { + width: 30px; + height: 30px; + } + .symbol.symbol-xl-30px.symbol-fixed > img { + width: 30px; + height: 30px; + max-width: none; + } + .symbol.symbol-xl-30px.symbol-2by3 .symbol-label { + height: 30px; + width: 45px; + } + .symbol.symbol-xl-30px.symbol-2by3 > img { + height: 30px; + width: 45px; + max-width: none; + } + .symbol.symbol-xl-35px > img { + width: 35px; + height: 35px; + } + .symbol.symbol-xl-35px .symbol-label { + width: 35px; + height: 35px; + } + .symbol.symbol-xl-35px.symbol-fixed .symbol-label { + width: 35px; + height: 35px; + } + .symbol.symbol-xl-35px.symbol-fixed > img { + width: 35px; + height: 35px; + max-width: none; + } + .symbol.symbol-xl-35px.symbol-2by3 .symbol-label { + height: 35px; + width: 52.5px; + } + .symbol.symbol-xl-35px.symbol-2by3 > img { + height: 35px; + width: 52.5px; + max-width: none; + } + .symbol.symbol-xl-40px > img { + width: 40px; + height: 40px; + } + .symbol.symbol-xl-40px .symbol-label { + width: 40px; + height: 40px; + } + .symbol.symbol-xl-40px.symbol-fixed .symbol-label { + width: 40px; + height: 40px; + } + .symbol.symbol-xl-40px.symbol-fixed > img { + width: 40px; + height: 40px; + max-width: none; + } + .symbol.symbol-xl-40px.symbol-2by3 .symbol-label { + height: 40px; + width: 60px; + } + .symbol.symbol-xl-40px.symbol-2by3 > img { + height: 40px; + width: 60px; + max-width: none; + } + .symbol.symbol-xl-45px > img { + width: 45px; + height: 45px; + } + .symbol.symbol-xl-45px .symbol-label { + width: 45px; + height: 45px; + } + .symbol.symbol-xl-45px.symbol-fixed .symbol-label { + width: 45px; + height: 45px; + } + .symbol.symbol-xl-45px.symbol-fixed > img { + width: 45px; + height: 45px; + max-width: none; + } + .symbol.symbol-xl-45px.symbol-2by3 .symbol-label { + height: 45px; + width: 67.5px; + } + .symbol.symbol-xl-45px.symbol-2by3 > img { + height: 45px; + width: 67.5px; + max-width: none; + } + .symbol.symbol-xl-50px > img { + width: 50px; + height: 50px; + } + .symbol.symbol-xl-50px .symbol-label { + width: 50px; + height: 50px; + } + .symbol.symbol-xl-50px.symbol-fixed .symbol-label { + width: 50px; + height: 50px; + } + .symbol.symbol-xl-50px.symbol-fixed > img { + width: 50px; + height: 50px; + max-width: none; + } + .symbol.symbol-xl-50px.symbol-2by3 .symbol-label { + height: 50px; + width: 75px; + } + .symbol.symbol-xl-50px.symbol-2by3 > img { + height: 50px; + width: 75px; + max-width: none; + } + .symbol.symbol-xl-55px > img { + width: 55px; + height: 55px; + } + .symbol.symbol-xl-55px .symbol-label { + width: 55px; + height: 55px; + } + .symbol.symbol-xl-55px.symbol-fixed .symbol-label { + width: 55px; + height: 55px; + } + .symbol.symbol-xl-55px.symbol-fixed > img { + width: 55px; + height: 55px; + max-width: none; + } + .symbol.symbol-xl-55px.symbol-2by3 .symbol-label { + height: 55px; + width: 82.5px; + } + .symbol.symbol-xl-55px.symbol-2by3 > img { + height: 55px; + width: 82.5px; + max-width: none; + } + .symbol.symbol-xl-60px > img { + width: 60px; + height: 60px; + } + .symbol.symbol-xl-60px .symbol-label { + width: 60px; + height: 60px; + } + .symbol.symbol-xl-60px.symbol-fixed .symbol-label { + width: 60px; + height: 60px; + } + .symbol.symbol-xl-60px.symbol-fixed > img { + width: 60px; + height: 60px; + max-width: none; + } + .symbol.symbol-xl-60px.symbol-2by3 .symbol-label { + height: 60px; + width: 90px; + } + .symbol.symbol-xl-60px.symbol-2by3 > img { + height: 60px; + width: 90px; + max-width: none; + } + .symbol.symbol-xl-65px > img { + width: 65px; + height: 65px; + } + .symbol.symbol-xl-65px .symbol-label { + width: 65px; + height: 65px; + } + .symbol.symbol-xl-65px.symbol-fixed .symbol-label { + width: 65px; + height: 65px; + } + .symbol.symbol-xl-65px.symbol-fixed > img { + width: 65px; + height: 65px; + max-width: none; + } + .symbol.symbol-xl-65px.symbol-2by3 .symbol-label { + height: 65px; + width: 97.5px; + } + .symbol.symbol-xl-65px.symbol-2by3 > img { + height: 65px; + width: 97.5px; + max-width: none; + } + .symbol.symbol-xl-70px > img { + width: 70px; + height: 70px; + } + .symbol.symbol-xl-70px .symbol-label { + width: 70px; + height: 70px; + } + .symbol.symbol-xl-70px.symbol-fixed .symbol-label { + width: 70px; + height: 70px; + } + .symbol.symbol-xl-70px.symbol-fixed > img { + width: 70px; + height: 70px; + max-width: none; + } + .symbol.symbol-xl-70px.symbol-2by3 .symbol-label { + height: 70px; + width: 105px; + } + .symbol.symbol-xl-70px.symbol-2by3 > img { + height: 70px; + width: 105px; + max-width: none; + } + .symbol.symbol-xl-75px > img { + width: 75px; + height: 75px; + } + .symbol.symbol-xl-75px .symbol-label { + width: 75px; + height: 75px; + } + .symbol.symbol-xl-75px.symbol-fixed .symbol-label { + width: 75px; + height: 75px; + } + .symbol.symbol-xl-75px.symbol-fixed > img { + width: 75px; + height: 75px; + max-width: none; + } + .symbol.symbol-xl-75px.symbol-2by3 .symbol-label { + height: 75px; + width: 112.5px; + } + .symbol.symbol-xl-75px.symbol-2by3 > img { + height: 75px; + width: 112.5px; + max-width: none; + } + .symbol.symbol-xl-90px > img { + width: 90px; + height: 90px; + } + .symbol.symbol-xl-90px .symbol-label { + width: 90px; + height: 90px; + } + .symbol.symbol-xl-90px.symbol-fixed .symbol-label { + width: 90px; + height: 90px; + } + .symbol.symbol-xl-90px.symbol-fixed > img { + width: 90px; + height: 90px; + max-width: none; + } + .symbol.symbol-xl-90px.symbol-2by3 .symbol-label { + height: 90px; + width: 135px; + } + .symbol.symbol-xl-90px.symbol-2by3 > img { + height: 90px; + width: 135px; + max-width: none; + } + .symbol.symbol-xl-100px > img { + width: 100px; + height: 100px; + } + .symbol.symbol-xl-100px .symbol-label { + width: 100px; + height: 100px; + } + .symbol.symbol-xl-100px.symbol-fixed .symbol-label { + width: 100px; + height: 100px; + } + .symbol.symbol-xl-100px.symbol-fixed > img { + width: 100px; + height: 100px; + max-width: none; + } + .symbol.symbol-xl-100px.symbol-2by3 .symbol-label { + height: 100px; + width: 150px; + } + .symbol.symbol-xl-100px.symbol-2by3 > img { + height: 100px; + width: 150px; + max-width: none; + } + .symbol.symbol-xl-125px > img { + width: 125px; + height: 125px; + } + .symbol.symbol-xl-125px .symbol-label { + width: 125px; + height: 125px; + } + .symbol.symbol-xl-125px.symbol-fixed .symbol-label { + width: 125px; + height: 125px; + } + .symbol.symbol-xl-125px.symbol-fixed > img { + width: 125px; + height: 125px; + max-width: none; + } + .symbol.symbol-xl-125px.symbol-2by3 .symbol-label { + height: 125px; + width: 187.5px; + } + .symbol.symbol-xl-125px.symbol-2by3 > img { + height: 125px; + width: 187.5px; + max-width: none; + } + .symbol.symbol-xl-150px > img { + width: 150px; + height: 150px; + } + .symbol.symbol-xl-150px .symbol-label { + width: 150px; + height: 150px; + } + .symbol.symbol-xl-150px.symbol-fixed .symbol-label { + width: 150px; + height: 150px; + } + .symbol.symbol-xl-150px.symbol-fixed > img { + width: 150px; + height: 150px; + max-width: none; + } + .symbol.symbol-xl-150px.symbol-2by3 .symbol-label { + height: 150px; + width: 225px; + } + .symbol.symbol-xl-150px.symbol-2by3 > img { + height: 150px; + width: 225px; + max-width: none; + } + .symbol.symbol-xl-160px > img { + width: 160px; + height: 160px; + } + .symbol.symbol-xl-160px .symbol-label { + width: 160px; + height: 160px; + } + .symbol.symbol-xl-160px.symbol-fixed .symbol-label { + width: 160px; + height: 160px; + } + .symbol.symbol-xl-160px.symbol-fixed > img { + width: 160px; + height: 160px; + max-width: none; + } + .symbol.symbol-xl-160px.symbol-2by3 .symbol-label { + height: 160px; + width: 240px; + } + .symbol.symbol-xl-160px.symbol-2by3 > img { + height: 160px; + width: 240px; + max-width: none; + } + .symbol.symbol-xl-175px > img { + width: 175px; + height: 175px; + } + .symbol.symbol-xl-175px .symbol-label { + width: 175px; + height: 175px; + } + .symbol.symbol-xl-175px.symbol-fixed .symbol-label { + width: 175px; + height: 175px; + } + .symbol.symbol-xl-175px.symbol-fixed > img { + width: 175px; + height: 175px; + max-width: none; + } + .symbol.symbol-xl-175px.symbol-2by3 .symbol-label { + height: 175px; + width: 262.5px; + } + .symbol.symbol-xl-175px.symbol-2by3 > img { + height: 175px; + width: 262.5px; + max-width: none; + } + .symbol.symbol-xl-200px > img { + width: 200px; + height: 200px; + } + .symbol.symbol-xl-200px .symbol-label { + width: 200px; + height: 200px; + } + .symbol.symbol-xl-200px.symbol-fixed .symbol-label { + width: 200px; + height: 200px; + } + .symbol.symbol-xl-200px.symbol-fixed > img { + width: 200px; + height: 200px; + max-width: none; + } + .symbol.symbol-xl-200px.symbol-2by3 .symbol-label { + height: 200px; + width: 300px; + } + .symbol.symbol-xl-200px.symbol-2by3 > img { + height: 200px; + width: 300px; + max-width: none; + } +} +@media (min-width: 1400px) { + .symbol.symbol-xxl-20px > img { + width: 20px; + height: 20px; + } + .symbol.symbol-xxl-20px .symbol-label { + width: 20px; + height: 20px; + } + .symbol.symbol-xxl-20px.symbol-fixed .symbol-label { + width: 20px; + height: 20px; + } + .symbol.symbol-xxl-20px.symbol-fixed > img { + width: 20px; + height: 20px; + max-width: none; + } + .symbol.symbol-xxl-20px.symbol-2by3 .symbol-label { + height: 20px; + width: 30px; + } + .symbol.symbol-xxl-20px.symbol-2by3 > img { + height: 20px; + width: 30px; + max-width: none; + } + .symbol.symbol-xxl-25px > img { + width: 25px; + height: 25px; + } + .symbol.symbol-xxl-25px .symbol-label { + width: 25px; + height: 25px; + } + .symbol.symbol-xxl-25px.symbol-fixed .symbol-label { + width: 25px; + height: 25px; + } + .symbol.symbol-xxl-25px.symbol-fixed > img { + width: 25px; + height: 25px; + max-width: none; + } + .symbol.symbol-xxl-25px.symbol-2by3 .symbol-label { + height: 25px; + width: 37.5px; + } + .symbol.symbol-xxl-25px.symbol-2by3 > img { + height: 25px; + width: 37.5px; + max-width: none; + } + .symbol.symbol-xxl-30px > img { + width: 30px; + height: 30px; + } + .symbol.symbol-xxl-30px .symbol-label { + width: 30px; + height: 30px; + } + .symbol.symbol-xxl-30px.symbol-fixed .symbol-label { + width: 30px; + height: 30px; + } + .symbol.symbol-xxl-30px.symbol-fixed > img { + width: 30px; + height: 30px; + max-width: none; + } + .symbol.symbol-xxl-30px.symbol-2by3 .symbol-label { + height: 30px; + width: 45px; + } + .symbol.symbol-xxl-30px.symbol-2by3 > img { + height: 30px; + width: 45px; + max-width: none; + } + .symbol.symbol-xxl-35px > img { + width: 35px; + height: 35px; + } + .symbol.symbol-xxl-35px .symbol-label { + width: 35px; + height: 35px; + } + .symbol.symbol-xxl-35px.symbol-fixed .symbol-label { + width: 35px; + height: 35px; + } + .symbol.symbol-xxl-35px.symbol-fixed > img { + width: 35px; + height: 35px; + max-width: none; + } + .symbol.symbol-xxl-35px.symbol-2by3 .symbol-label { + height: 35px; + width: 52.5px; + } + .symbol.symbol-xxl-35px.symbol-2by3 > img { + height: 35px; + width: 52.5px; + max-width: none; + } + .symbol.symbol-xxl-40px > img { + width: 40px; + height: 40px; + } + .symbol.symbol-xxl-40px .symbol-label { + width: 40px; + height: 40px; + } + .symbol.symbol-xxl-40px.symbol-fixed .symbol-label { + width: 40px; + height: 40px; + } + .symbol.symbol-xxl-40px.symbol-fixed > img { + width: 40px; + height: 40px; + max-width: none; + } + .symbol.symbol-xxl-40px.symbol-2by3 .symbol-label { + height: 40px; + width: 60px; + } + .symbol.symbol-xxl-40px.symbol-2by3 > img { + height: 40px; + width: 60px; + max-width: none; + } + .symbol.symbol-xxl-45px > img { + width: 45px; + height: 45px; + } + .symbol.symbol-xxl-45px .symbol-label { + width: 45px; + height: 45px; + } + .symbol.symbol-xxl-45px.symbol-fixed .symbol-label { + width: 45px; + height: 45px; + } + .symbol.symbol-xxl-45px.symbol-fixed > img { + width: 45px; + height: 45px; + max-width: none; + } + .symbol.symbol-xxl-45px.symbol-2by3 .symbol-label { + height: 45px; + width: 67.5px; + } + .symbol.symbol-xxl-45px.symbol-2by3 > img { + height: 45px; + width: 67.5px; + max-width: none; + } + .symbol.symbol-xxl-50px > img { + width: 50px; + height: 50px; + } + .symbol.symbol-xxl-50px .symbol-label { + width: 50px; + height: 50px; + } + .symbol.symbol-xxl-50px.symbol-fixed .symbol-label { + width: 50px; + height: 50px; + } + .symbol.symbol-xxl-50px.symbol-fixed > img { + width: 50px; + height: 50px; + max-width: none; + } + .symbol.symbol-xxl-50px.symbol-2by3 .symbol-label { + height: 50px; + width: 75px; + } + .symbol.symbol-xxl-50px.symbol-2by3 > img { + height: 50px; + width: 75px; + max-width: none; + } + .symbol.symbol-xxl-55px > img { + width: 55px; + height: 55px; + } + .symbol.symbol-xxl-55px .symbol-label { + width: 55px; + height: 55px; + } + .symbol.symbol-xxl-55px.symbol-fixed .symbol-label { + width: 55px; + height: 55px; + } + .symbol.symbol-xxl-55px.symbol-fixed > img { + width: 55px; + height: 55px; + max-width: none; + } + .symbol.symbol-xxl-55px.symbol-2by3 .symbol-label { + height: 55px; + width: 82.5px; + } + .symbol.symbol-xxl-55px.symbol-2by3 > img { + height: 55px; + width: 82.5px; + max-width: none; + } + .symbol.symbol-xxl-60px > img { + width: 60px; + height: 60px; + } + .symbol.symbol-xxl-60px .symbol-label { + width: 60px; + height: 60px; + } + .symbol.symbol-xxl-60px.symbol-fixed .symbol-label { + width: 60px; + height: 60px; + } + .symbol.symbol-xxl-60px.symbol-fixed > img { + width: 60px; + height: 60px; + max-width: none; + } + .symbol.symbol-xxl-60px.symbol-2by3 .symbol-label { + height: 60px; + width: 90px; + } + .symbol.symbol-xxl-60px.symbol-2by3 > img { + height: 60px; + width: 90px; + max-width: none; + } + .symbol.symbol-xxl-65px > img { + width: 65px; + height: 65px; + } + .symbol.symbol-xxl-65px .symbol-label { + width: 65px; + height: 65px; + } + .symbol.symbol-xxl-65px.symbol-fixed .symbol-label { + width: 65px; + height: 65px; + } + .symbol.symbol-xxl-65px.symbol-fixed > img { + width: 65px; + height: 65px; + max-width: none; + } + .symbol.symbol-xxl-65px.symbol-2by3 .symbol-label { + height: 65px; + width: 97.5px; + } + .symbol.symbol-xxl-65px.symbol-2by3 > img { + height: 65px; + width: 97.5px; + max-width: none; + } + .symbol.symbol-xxl-70px > img { + width: 70px; + height: 70px; + } + .symbol.symbol-xxl-70px .symbol-label { + width: 70px; + height: 70px; + } + .symbol.symbol-xxl-70px.symbol-fixed .symbol-label { + width: 70px; + height: 70px; + } + .symbol.symbol-xxl-70px.symbol-fixed > img { + width: 70px; + height: 70px; + max-width: none; + } + .symbol.symbol-xxl-70px.symbol-2by3 .symbol-label { + height: 70px; + width: 105px; + } + .symbol.symbol-xxl-70px.symbol-2by3 > img { + height: 70px; + width: 105px; + max-width: none; + } + .symbol.symbol-xxl-75px > img { + width: 75px; + height: 75px; + } + .symbol.symbol-xxl-75px .symbol-label { + width: 75px; + height: 75px; + } + .symbol.symbol-xxl-75px.symbol-fixed .symbol-label { + width: 75px; + height: 75px; + } + .symbol.symbol-xxl-75px.symbol-fixed > img { + width: 75px; + height: 75px; + max-width: none; + } + .symbol.symbol-xxl-75px.symbol-2by3 .symbol-label { + height: 75px; + width: 112.5px; + } + .symbol.symbol-xxl-75px.symbol-2by3 > img { + height: 75px; + width: 112.5px; + max-width: none; + } + .symbol.symbol-xxl-90px > img { + width: 90px; + height: 90px; + } + .symbol.symbol-xxl-90px .symbol-label { + width: 90px; + height: 90px; + } + .symbol.symbol-xxl-90px.symbol-fixed .symbol-label { + width: 90px; + height: 90px; + } + .symbol.symbol-xxl-90px.symbol-fixed > img { + width: 90px; + height: 90px; + max-width: none; + } + .symbol.symbol-xxl-90px.symbol-2by3 .symbol-label { + height: 90px; + width: 135px; + } + .symbol.symbol-xxl-90px.symbol-2by3 > img { + height: 90px; + width: 135px; + max-width: none; + } + .symbol.symbol-xxl-100px > img { + width: 100px; + height: 100px; + } + .symbol.symbol-xxl-100px .symbol-label { + width: 100px; + height: 100px; + } + .symbol.symbol-xxl-100px.symbol-fixed .symbol-label { + width: 100px; + height: 100px; + } + .symbol.symbol-xxl-100px.symbol-fixed > img { + width: 100px; + height: 100px; + max-width: none; + } + .symbol.symbol-xxl-100px.symbol-2by3 .symbol-label { + height: 100px; + width: 150px; + } + .symbol.symbol-xxl-100px.symbol-2by3 > img { + height: 100px; + width: 150px; + max-width: none; + } + .symbol.symbol-xxl-125px > img { + width: 125px; + height: 125px; + } + .symbol.symbol-xxl-125px .symbol-label { + width: 125px; + height: 125px; + } + .symbol.symbol-xxl-125px.symbol-fixed .symbol-label { + width: 125px; + height: 125px; + } + .symbol.symbol-xxl-125px.symbol-fixed > img { + width: 125px; + height: 125px; + max-width: none; + } + .symbol.symbol-xxl-125px.symbol-2by3 .symbol-label { + height: 125px; + width: 187.5px; + } + .symbol.symbol-xxl-125px.symbol-2by3 > img { + height: 125px; + width: 187.5px; + max-width: none; + } + .symbol.symbol-xxl-150px > img { + width: 150px; + height: 150px; + } + .symbol.symbol-xxl-150px .symbol-label { + width: 150px; + height: 150px; + } + .symbol.symbol-xxl-150px.symbol-fixed .symbol-label { + width: 150px; + height: 150px; + } + .symbol.symbol-xxl-150px.symbol-fixed > img { + width: 150px; + height: 150px; + max-width: none; + } + .symbol.symbol-xxl-150px.symbol-2by3 .symbol-label { + height: 150px; + width: 225px; + } + .symbol.symbol-xxl-150px.symbol-2by3 > img { + height: 150px; + width: 225px; + max-width: none; + } + .symbol.symbol-xxl-160px > img { + width: 160px; + height: 160px; + } + .symbol.symbol-xxl-160px .symbol-label { + width: 160px; + height: 160px; + } + .symbol.symbol-xxl-160px.symbol-fixed .symbol-label { + width: 160px; + height: 160px; + } + .symbol.symbol-xxl-160px.symbol-fixed > img { + width: 160px; + height: 160px; + max-width: none; + } + .symbol.symbol-xxl-160px.symbol-2by3 .symbol-label { + height: 160px; + width: 240px; + } + .symbol.symbol-xxl-160px.symbol-2by3 > img { + height: 160px; + width: 240px; + max-width: none; + } + .symbol.symbol-xxl-175px > img { + width: 175px; + height: 175px; + } + .symbol.symbol-xxl-175px .symbol-label { + width: 175px; + height: 175px; + } + .symbol.symbol-xxl-175px.symbol-fixed .symbol-label { + width: 175px; + height: 175px; + } + .symbol.symbol-xxl-175px.symbol-fixed > img { + width: 175px; + height: 175px; + max-width: none; + } + .symbol.symbol-xxl-175px.symbol-2by3 .symbol-label { + height: 175px; + width: 262.5px; + } + .symbol.symbol-xxl-175px.symbol-2by3 > img { + height: 175px; + width: 262.5px; + max-width: none; + } + .symbol.symbol-xxl-200px > img { + width: 200px; + height: 200px; + } + .symbol.symbol-xxl-200px .symbol-label { + width: 200px; + height: 200px; + } + .symbol.symbol-xxl-200px.symbol-fixed .symbol-label { + width: 200px; + height: 200px; + } + .symbol.symbol-xxl-200px.symbol-fixed > img { + width: 200px; + height: 200px; + max-width: none; + } + .symbol.symbol-xxl-200px.symbol-2by3 .symbol-label { + height: 200px; + width: 300px; + } + .symbol.symbol-xxl-200px.symbol-2by3 > img { + height: 200px; + width: 300px; + max-width: none; + } +} + +.symbol-group { + display: flex; + flex-wrap: wrap; + align-items: center; + margin-left: 10px; +} +.symbol-group .symbol { + position: relative; + z-index: 0; + margin-left: -10px; + transition: all 0.3s ease; +} +.symbol-group .symbol:hover { + transition: all 0.3s ease; + z-index: 1; +} +.symbol-group .symbol-badge { + border: 2px solid var(--bs-body-bg); +} +.symbol-group .symbol-label { + position: relative; +} +.symbol-group .symbol-label:after { + display: block; + content: " "; + border-radius: inherit; + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + border: 2px solid var(--bs-symbol-border-color); + -webkit-background-clip: padding-box; /* for Safari */ + background-clip: padding-box; /* for IE9+, Firefox 4+, Opera, Chrome */ +} +.symbol-group.symbol-hover .symbol { + cursor: pointer; +} + +.pulse { + position: relative; +} +.pulse.pulse-white .pulse-ring { + border-color: var(--bs-white); +} +.pulse.pulse-light .pulse-ring { + border-color: var(--bs-light); +} +.pulse.pulse-primary .pulse-ring { + border-color: var(--bs-primary); +} +.pulse.pulse-secondary .pulse-ring { + border-color: var(--bs-secondary); +} +.pulse.pulse-success .pulse-ring { + border-color: var(--bs-success); +} +.pulse.pulse-info .pulse-ring { + border-color: var(--bs-info); +} +.pulse.pulse-warning .pulse-ring { + border-color: var(--bs-warning); +} +.pulse.pulse-danger .pulse-ring { + border-color: var(--bs-danger); +} +.pulse.pulse-dark .pulse-ring { + border-color: var(--bs-dark); +} + +.pulse-ring { + display: block; + border-radius: 40px; + height: 40px; + width: 40px; + position: absolute; + animation: animation-pulse 3.5s ease-out; + animation-iteration-count: infinite; + opacity: 0; + border-width: 3px; + border-style: solid; + border-color: var(--bs-gray-500); +} + +@keyframes animation-pulse { + 0% { + -webkit-transform: scale(0.1, 0.1); + opacity: 0; + } + 60% { + -webkit-transform: scale(0.1, 0.1); + opacity: 0; + } + 65% { + opacity: 1; + } + 100% { + -webkit-transform: scale(1.2, 1.2); + opacity: 0; + } +} +[data-kt-app-page-loading=on] *, +.page-loading * { + transition: none !important; +} + +.page-loader { + background-color: var(--bs-body-bg); + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 10000; + display: none; +} +[data-kt-app-page-loading=on] .page-loader, .page-loading .page-loader { + display: flex; + justify-content: center; + align-items: center; +} + +.scrolltop { + position: fixed; + display: none; + cursor: pointer; + z-index: 105; + justify-content: center; + align-items: center; + width: 36px; + height: 36px; + bottom: 43px; + right: 7px; + background-color: var(--bs-scrolltop-bg-color); + box-shadow: var(--bs-scrolltop-box-shadow); + opacity: 0; + transition: color 0.2s ease; + border-radius: 0.475rem; +} +.scrolltop .svg-icon { + color: var(--bs-scrolltop-icon-color); +} +.scrolltop .svg-icon svg { + height: 24px; + width: 24px; +} +.scrolltop > i { + font-size: 1.3rem; + color: var(--bs-scrolltop-icon-color); +} +.scrolltop:hover { + background-color: var(--bs-scrolltop-bg-color-hover); +} +.scrolltop:hover .svg-icon, +.scrolltop:hover i { + color: var(--bs-scrolltop-icon-color-hover); +} +[data-kt-scrolltop=on] .scrolltop { + opacity: var(--bs-scrolltop-opacity-on); + animation: animation-scrolltop 0.4s ease-out 1; + display: flex; +} +[data-kt-scrolltop=on] .scrolltop:hover { + transition: color 0.2s ease; + opacity: var(--bs-scrolltop-opacity-hover); +} + +@media (max-width: 991.98px) { + .scrolltop { + bottom: 23px; + right: 5px; + width: 30px; + height: 30px; + } +} +@keyframes animation-scrolltop { + from { + margin-bottom: -15px; + } + to { + margin-bottom: 0; + } +} +.svg-icon { + line-height: 1; + color: var(--bs-text-muted); +} +.svg-icon svg { + height: 1.15rem; + width: 1.15rem; +} +.svg-icon.svg-icon-white { + color: var(--bs-text-white); +} +.svg-icon.svg-icon-primary { + color: var(--bs-text-primary); +} +.svg-icon.svg-icon-secondary { + color: var(--bs-text-secondary); +} +.svg-icon.svg-icon-light { + color: var(--bs-text-light); +} +.svg-icon.svg-icon-success { + color: var(--bs-text-success); +} +.svg-icon.svg-icon-info { + color: var(--bs-text-info); +} +.svg-icon.svg-icon-warning { + color: var(--bs-text-warning); +} +.svg-icon.svg-icon-danger { + color: var(--bs-text-danger); +} +.svg-icon.svg-icon-dark { + color: var(--bs-text-dark); +} +.svg-icon.svg-icon-muted { + color: var(--bs-text-muted); +} +.svg-icon.svg-icon-gray-100 { + color: var(--bs-text-gray-100); +} +.svg-icon.svg-icon-gray-200 { + color: var(--bs-text-gray-200); +} +.svg-icon.svg-icon-gray-300 { + color: var(--bs-text-gray-300); +} +.svg-icon.svg-icon-gray-400 { + color: var(--bs-text-gray-400); +} +.svg-icon.svg-icon-gray-500 { + color: var(--bs-text-gray-500); +} +.svg-icon.svg-icon-gray-600 { + color: var(--bs-text-gray-600); +} +.svg-icon.svg-icon-gray-700 { + color: var(--bs-text-gray-700); +} +.svg-icon.svg-icon-gray-800 { + color: var(--bs-text-gray-800); +} +.svg-icon.svg-icon-gray-900 { + color: var(--bs-text-gray-900); +} +.svg-icon.svg-icon-1 svg { + height: 1.75rem !important; + width: 1.75rem !important; +} +.svg-icon.svg-icon-2 svg { + height: 1.5rem !important; + width: 1.5rem !important; +} +.svg-icon.svg-icon-3 svg { + height: 1.35rem !important; + width: 1.35rem !important; +} +.svg-icon.svg-icon-4 svg { + height: 1.25rem !important; + width: 1.25rem !important; +} +.svg-icon.svg-icon-5 svg { + height: 1.15rem !important; + width: 1.15rem !important; +} +.svg-icon.svg-icon-6 svg { + height: 1.075rem !important; + width: 1.075rem !important; +} +.svg-icon.svg-icon-7 svg { + height: 0.95rem !important; + width: 0.95rem !important; +} +.svg-icon.svg-icon-8 svg { + height: 0.85rem !important; + width: 0.85rem !important; +} +.svg-icon.svg-icon-9 svg { + height: 0.75rem !important; + width: 0.75rem !important; +} +.svg-icon.svg-icon-10 svg { + height: 0.5rem !important; + width: 0.5rem !important; +} +.svg-icon.svg-icon-base svg { + height: 1rem !important; + width: 1rem !important; +} +.svg-icon.svg-icon-fluid svg { + height: 100% !important; + width: 100% !important; +} +.svg-icon.svg-icon-2x svg { + height: 2rem !important; + width: 2rem !important; +} +.svg-icon.svg-icon-2qx svg { + height: 2.25rem !important; + width: 2.25rem !important; +} +.svg-icon.svg-icon-2hx svg { + height: 2.5rem !important; + width: 2.5rem !important; +} +.svg-icon.svg-icon-2tx svg { + height: 2.75rem !important; + width: 2.75rem !important; +} +.svg-icon.svg-icon-3x svg { + height: 3rem !important; + width: 3rem !important; +} +.svg-icon.svg-icon-3qx svg { + height: 3.25rem !important; + width: 3.25rem !important; +} +.svg-icon.svg-icon-3hx svg { + height: 3.5rem !important; + width: 3.5rem !important; +} +.svg-icon.svg-icon-3tx svg { + height: 3.75rem !important; + width: 3.75rem !important; +} +.svg-icon.svg-icon-4x svg { + height: 4rem !important; + width: 4rem !important; +} +.svg-icon.svg-icon-4qx svg { + height: 4.25rem !important; + width: 4.25rem !important; +} +.svg-icon.svg-icon-4hx svg { + height: 4.5rem !important; + width: 4.5rem !important; +} +.svg-icon.svg-icon-4tx svg { + height: 4.75rem !important; + width: 4.75rem !important; +} +.svg-icon.svg-icon-5x svg { + height: 5rem !important; + width: 5rem !important; +} +.svg-icon.svg-icon-5qx svg { + height: 5.25rem !important; + width: 5.25rem !important; +} +.svg-icon.svg-icon-5hx svg { + height: 5.5rem !important; + width: 5.5rem !important; +} +.svg-icon.svg-icon-5tx svg { + height: 5.75rem !important; + width: 5.75rem !important; +} +@media (min-width: 576px) { + .svg-icon.svg-icon-sm-1 svg { + height: 1.75rem !important; + width: 1.75rem !important; + } + .svg-icon.svg-icon-sm-2 svg { + height: 1.5rem !important; + width: 1.5rem !important; + } + .svg-icon.svg-icon-sm-3 svg { + height: 1.35rem !important; + width: 1.35rem !important; + } + .svg-icon.svg-icon-sm-4 svg { + height: 1.25rem !important; + width: 1.25rem !important; + } + .svg-icon.svg-icon-sm-5 svg { + height: 1.15rem !important; + width: 1.15rem !important; + } + .svg-icon.svg-icon-sm-6 svg { + height: 1.075rem !important; + width: 1.075rem !important; + } + .svg-icon.svg-icon-sm-7 svg { + height: 0.95rem !important; + width: 0.95rem !important; + } + .svg-icon.svg-icon-sm-8 svg { + height: 0.85rem !important; + width: 0.85rem !important; + } + .svg-icon.svg-icon-sm-9 svg { + height: 0.75rem !important; + width: 0.75rem !important; + } + .svg-icon.svg-icon-sm-10 svg { + height: 0.5rem !important; + width: 0.5rem !important; + } + .svg-icon.svg-icon-sm-base svg { + height: 1rem !important; + width: 1rem !important; + } + .svg-icon.svg-icon-sm-fluid svg { + height: 100% !important; + width: 100% !important; + } + .svg-icon.svg-icon-sm-2x svg { + height: 2rem !important; + width: 2rem !important; + } + .svg-icon.svg-icon-sm-2qx svg { + height: 2.25rem !important; + width: 2.25rem !important; + } + .svg-icon.svg-icon-sm-2hx svg { + height: 2.5rem !important; + width: 2.5rem !important; + } + .svg-icon.svg-icon-sm-2tx svg { + height: 2.75rem !important; + width: 2.75rem !important; + } + .svg-icon.svg-icon-sm-3x svg { + height: 3rem !important; + width: 3rem !important; + } + .svg-icon.svg-icon-sm-3qx svg { + height: 3.25rem !important; + width: 3.25rem !important; + } + .svg-icon.svg-icon-sm-3hx svg { + height: 3.5rem !important; + width: 3.5rem !important; + } + .svg-icon.svg-icon-sm-3tx svg { + height: 3.75rem !important; + width: 3.75rem !important; + } + .svg-icon.svg-icon-sm-4x svg { + height: 4rem !important; + width: 4rem !important; + } + .svg-icon.svg-icon-sm-4qx svg { + height: 4.25rem !important; + width: 4.25rem !important; + } + .svg-icon.svg-icon-sm-4hx svg { + height: 4.5rem !important; + width: 4.5rem !important; + } + .svg-icon.svg-icon-sm-4tx svg { + height: 4.75rem !important; + width: 4.75rem !important; + } + .svg-icon.svg-icon-sm-5x svg { + height: 5rem !important; + width: 5rem !important; + } + .svg-icon.svg-icon-sm-5qx svg { + height: 5.25rem !important; + width: 5.25rem !important; + } + .svg-icon.svg-icon-sm-5hx svg { + height: 5.5rem !important; + width: 5.5rem !important; + } + .svg-icon.svg-icon-sm-5tx svg { + height: 5.75rem !important; + width: 5.75rem !important; + } +} +@media (min-width: 768px) { + .svg-icon.svg-icon-md-1 svg { + height: 1.75rem !important; + width: 1.75rem !important; + } + .svg-icon.svg-icon-md-2 svg { + height: 1.5rem !important; + width: 1.5rem !important; + } + .svg-icon.svg-icon-md-3 svg { + height: 1.35rem !important; + width: 1.35rem !important; + } + .svg-icon.svg-icon-md-4 svg { + height: 1.25rem !important; + width: 1.25rem !important; + } + .svg-icon.svg-icon-md-5 svg { + height: 1.15rem !important; + width: 1.15rem !important; + } + .svg-icon.svg-icon-md-6 svg { + height: 1.075rem !important; + width: 1.075rem !important; + } + .svg-icon.svg-icon-md-7 svg { + height: 0.95rem !important; + width: 0.95rem !important; + } + .svg-icon.svg-icon-md-8 svg { + height: 0.85rem !important; + width: 0.85rem !important; + } + .svg-icon.svg-icon-md-9 svg { + height: 0.75rem !important; + width: 0.75rem !important; + } + .svg-icon.svg-icon-md-10 svg { + height: 0.5rem !important; + width: 0.5rem !important; + } + .svg-icon.svg-icon-md-base svg { + height: 1rem !important; + width: 1rem !important; + } + .svg-icon.svg-icon-md-fluid svg { + height: 100% !important; + width: 100% !important; + } + .svg-icon.svg-icon-md-2x svg { + height: 2rem !important; + width: 2rem !important; + } + .svg-icon.svg-icon-md-2qx svg { + height: 2.25rem !important; + width: 2.25rem !important; + } + .svg-icon.svg-icon-md-2hx svg { + height: 2.5rem !important; + width: 2.5rem !important; + } + .svg-icon.svg-icon-md-2tx svg { + height: 2.75rem !important; + width: 2.75rem !important; + } + .svg-icon.svg-icon-md-3x svg { + height: 3rem !important; + width: 3rem !important; + } + .svg-icon.svg-icon-md-3qx svg { + height: 3.25rem !important; + width: 3.25rem !important; + } + .svg-icon.svg-icon-md-3hx svg { + height: 3.5rem !important; + width: 3.5rem !important; + } + .svg-icon.svg-icon-md-3tx svg { + height: 3.75rem !important; + width: 3.75rem !important; + } + .svg-icon.svg-icon-md-4x svg { + height: 4rem !important; + width: 4rem !important; + } + .svg-icon.svg-icon-md-4qx svg { + height: 4.25rem !important; + width: 4.25rem !important; + } + .svg-icon.svg-icon-md-4hx svg { + height: 4.5rem !important; + width: 4.5rem !important; + } + .svg-icon.svg-icon-md-4tx svg { + height: 4.75rem !important; + width: 4.75rem !important; + } + .svg-icon.svg-icon-md-5x svg { + height: 5rem !important; + width: 5rem !important; + } + .svg-icon.svg-icon-md-5qx svg { + height: 5.25rem !important; + width: 5.25rem !important; + } + .svg-icon.svg-icon-md-5hx svg { + height: 5.5rem !important; + width: 5.5rem !important; + } + .svg-icon.svg-icon-md-5tx svg { + height: 5.75rem !important; + width: 5.75rem !important; + } +} +@media (min-width: 992px) { + .svg-icon.svg-icon-lg-1 svg { + height: 1.75rem !important; + width: 1.75rem !important; + } + .svg-icon.svg-icon-lg-2 svg { + height: 1.5rem !important; + width: 1.5rem !important; + } + .svg-icon.svg-icon-lg-3 svg { + height: 1.35rem !important; + width: 1.35rem !important; + } + .svg-icon.svg-icon-lg-4 svg { + height: 1.25rem !important; + width: 1.25rem !important; + } + .svg-icon.svg-icon-lg-5 svg { + height: 1.15rem !important; + width: 1.15rem !important; + } + .svg-icon.svg-icon-lg-6 svg { + height: 1.075rem !important; + width: 1.075rem !important; + } + .svg-icon.svg-icon-lg-7 svg { + height: 0.95rem !important; + width: 0.95rem !important; + } + .svg-icon.svg-icon-lg-8 svg { + height: 0.85rem !important; + width: 0.85rem !important; + } + .svg-icon.svg-icon-lg-9 svg { + height: 0.75rem !important; + width: 0.75rem !important; + } + .svg-icon.svg-icon-lg-10 svg { + height: 0.5rem !important; + width: 0.5rem !important; + } + .svg-icon.svg-icon-lg-base svg { + height: 1rem !important; + width: 1rem !important; + } + .svg-icon.svg-icon-lg-fluid svg { + height: 100% !important; + width: 100% !important; + } + .svg-icon.svg-icon-lg-2x svg { + height: 2rem !important; + width: 2rem !important; + } + .svg-icon.svg-icon-lg-2qx svg { + height: 2.25rem !important; + width: 2.25rem !important; + } + .svg-icon.svg-icon-lg-2hx svg { + height: 2.5rem !important; + width: 2.5rem !important; + } + .svg-icon.svg-icon-lg-2tx svg { + height: 2.75rem !important; + width: 2.75rem !important; + } + .svg-icon.svg-icon-lg-3x svg { + height: 3rem !important; + width: 3rem !important; + } + .svg-icon.svg-icon-lg-3qx svg { + height: 3.25rem !important; + width: 3.25rem !important; + } + .svg-icon.svg-icon-lg-3hx svg { + height: 3.5rem !important; + width: 3.5rem !important; + } + .svg-icon.svg-icon-lg-3tx svg { + height: 3.75rem !important; + width: 3.75rem !important; + } + .svg-icon.svg-icon-lg-4x svg { + height: 4rem !important; + width: 4rem !important; + } + .svg-icon.svg-icon-lg-4qx svg { + height: 4.25rem !important; + width: 4.25rem !important; + } + .svg-icon.svg-icon-lg-4hx svg { + height: 4.5rem !important; + width: 4.5rem !important; + } + .svg-icon.svg-icon-lg-4tx svg { + height: 4.75rem !important; + width: 4.75rem !important; + } + .svg-icon.svg-icon-lg-5x svg { + height: 5rem !important; + width: 5rem !important; + } + .svg-icon.svg-icon-lg-5qx svg { + height: 5.25rem !important; + width: 5.25rem !important; + } + .svg-icon.svg-icon-lg-5hx svg { + height: 5.5rem !important; + width: 5.5rem !important; + } + .svg-icon.svg-icon-lg-5tx svg { + height: 5.75rem !important; + width: 5.75rem !important; + } +} +@media (min-width: 1200px) { + .svg-icon.svg-icon-xl-1 svg { + height: 1.75rem !important; + width: 1.75rem !important; + } + .svg-icon.svg-icon-xl-2 svg { + height: 1.5rem !important; + width: 1.5rem !important; + } + .svg-icon.svg-icon-xl-3 svg { + height: 1.35rem !important; + width: 1.35rem !important; + } + .svg-icon.svg-icon-xl-4 svg { + height: 1.25rem !important; + width: 1.25rem !important; + } + .svg-icon.svg-icon-xl-5 svg { + height: 1.15rem !important; + width: 1.15rem !important; + } + .svg-icon.svg-icon-xl-6 svg { + height: 1.075rem !important; + width: 1.075rem !important; + } + .svg-icon.svg-icon-xl-7 svg { + height: 0.95rem !important; + width: 0.95rem !important; + } + .svg-icon.svg-icon-xl-8 svg { + height: 0.85rem !important; + width: 0.85rem !important; + } + .svg-icon.svg-icon-xl-9 svg { + height: 0.75rem !important; + width: 0.75rem !important; + } + .svg-icon.svg-icon-xl-10 svg { + height: 0.5rem !important; + width: 0.5rem !important; + } + .svg-icon.svg-icon-xl-base svg { + height: 1rem !important; + width: 1rem !important; + } + .svg-icon.svg-icon-xl-fluid svg { + height: 100% !important; + width: 100% !important; + } + .svg-icon.svg-icon-xl-2x svg { + height: 2rem !important; + width: 2rem !important; + } + .svg-icon.svg-icon-xl-2qx svg { + height: 2.25rem !important; + width: 2.25rem !important; + } + .svg-icon.svg-icon-xl-2hx svg { + height: 2.5rem !important; + width: 2.5rem !important; + } + .svg-icon.svg-icon-xl-2tx svg { + height: 2.75rem !important; + width: 2.75rem !important; + } + .svg-icon.svg-icon-xl-3x svg { + height: 3rem !important; + width: 3rem !important; + } + .svg-icon.svg-icon-xl-3qx svg { + height: 3.25rem !important; + width: 3.25rem !important; + } + .svg-icon.svg-icon-xl-3hx svg { + height: 3.5rem !important; + width: 3.5rem !important; + } + .svg-icon.svg-icon-xl-3tx svg { + height: 3.75rem !important; + width: 3.75rem !important; + } + .svg-icon.svg-icon-xl-4x svg { + height: 4rem !important; + width: 4rem !important; + } + .svg-icon.svg-icon-xl-4qx svg { + height: 4.25rem !important; + width: 4.25rem !important; + } + .svg-icon.svg-icon-xl-4hx svg { + height: 4.5rem !important; + width: 4.5rem !important; + } + .svg-icon.svg-icon-xl-4tx svg { + height: 4.75rem !important; + width: 4.75rem !important; + } + .svg-icon.svg-icon-xl-5x svg { + height: 5rem !important; + width: 5rem !important; + } + .svg-icon.svg-icon-xl-5qx svg { + height: 5.25rem !important; + width: 5.25rem !important; + } + .svg-icon.svg-icon-xl-5hx svg { + height: 5.5rem !important; + width: 5.5rem !important; + } + .svg-icon.svg-icon-xl-5tx svg { + height: 5.75rem !important; + width: 5.75rem !important; + } +} +@media (min-width: 1400px) { + .svg-icon.svg-icon-xxl-1 svg { + height: 1.75rem !important; + width: 1.75rem !important; + } + .svg-icon.svg-icon-xxl-2 svg { + height: 1.5rem !important; + width: 1.5rem !important; + } + .svg-icon.svg-icon-xxl-3 svg { + height: 1.35rem !important; + width: 1.35rem !important; + } + .svg-icon.svg-icon-xxl-4 svg { + height: 1.25rem !important; + width: 1.25rem !important; + } + .svg-icon.svg-icon-xxl-5 svg { + height: 1.15rem !important; + width: 1.15rem !important; + } + .svg-icon.svg-icon-xxl-6 svg { + height: 1.075rem !important; + width: 1.075rem !important; + } + .svg-icon.svg-icon-xxl-7 svg { + height: 0.95rem !important; + width: 0.95rem !important; + } + .svg-icon.svg-icon-xxl-8 svg { + height: 0.85rem !important; + width: 0.85rem !important; + } + .svg-icon.svg-icon-xxl-9 svg { + height: 0.75rem !important; + width: 0.75rem !important; + } + .svg-icon.svg-icon-xxl-10 svg { + height: 0.5rem !important; + width: 0.5rem !important; + } + .svg-icon.svg-icon-xxl-base svg { + height: 1rem !important; + width: 1rem !important; + } + .svg-icon.svg-icon-xxl-fluid svg { + height: 100% !important; + width: 100% !important; + } + .svg-icon.svg-icon-xxl-2x svg { + height: 2rem !important; + width: 2rem !important; + } + .svg-icon.svg-icon-xxl-2qx svg { + height: 2.25rem !important; + width: 2.25rem !important; + } + .svg-icon.svg-icon-xxl-2hx svg { + height: 2.5rem !important; + width: 2.5rem !important; + } + .svg-icon.svg-icon-xxl-2tx svg { + height: 2.75rem !important; + width: 2.75rem !important; + } + .svg-icon.svg-icon-xxl-3x svg { + height: 3rem !important; + width: 3rem !important; + } + .svg-icon.svg-icon-xxl-3qx svg { + height: 3.25rem !important; + width: 3.25rem !important; + } + .svg-icon.svg-icon-xxl-3hx svg { + height: 3.5rem !important; + width: 3.5rem !important; + } + .svg-icon.svg-icon-xxl-3tx svg { + height: 3.75rem !important; + width: 3.75rem !important; + } + .svg-icon.svg-icon-xxl-4x svg { + height: 4rem !important; + width: 4rem !important; + } + .svg-icon.svg-icon-xxl-4qx svg { + height: 4.25rem !important; + width: 4.25rem !important; + } + .svg-icon.svg-icon-xxl-4hx svg { + height: 4.5rem !important; + width: 4.5rem !important; + } + .svg-icon.svg-icon-xxl-4tx svg { + height: 4.75rem !important; + width: 4.75rem !important; + } + .svg-icon.svg-icon-xxl-5x svg { + height: 5rem !important; + width: 5rem !important; + } + .svg-icon.svg-icon-xxl-5qx svg { + height: 5.25rem !important; + width: 5.25rem !important; + } + .svg-icon.svg-icon-xxl-5hx svg { + height: 5.5rem !important; + width: 5.5rem !important; + } + .svg-icon.svg-icon-xxl-5tx svg { + height: 5.75rem !important; + width: 5.75rem !important; + } +} + +.fixed-top { + position: fixed; + z-index: 101; + top: 0; + left: 0; + right: 0; +} + +@media (min-width: 576px) { + .fixed-top-sm { + position: fixed; + z-index: 101; + top: 0; + left: 0; + right: 0; + } +} +@media (min-width: 768px) { + .fixed-top-md { + position: fixed; + z-index: 101; + top: 0; + left: 0; + right: 0; + } +} +@media (min-width: 992px) { + .fixed-top-lg { + position: fixed; + z-index: 101; + top: 0; + left: 0; + right: 0; + } +} +@media (min-width: 1200px) { + .fixed-top-xl { + position: fixed; + z-index: 101; + top: 0; + left: 0; + right: 0; + } +} +@media (min-width: 1400px) { + .fixed-top-xxl { + position: fixed; + z-index: 101; + top: 0; + left: 0; + right: 0; + } +} +.timeline .timeline-item { + position: relative; + padding: 0; + margin: 0; + display: flex; + align-items: flex-start; +} +.timeline .timeline-item:last-child .timeline-line { + bottom: 100%; +} +.timeline .timeline-line { + display: block; + content: " "; + justify-content: center; + position: absolute; + z-index: 0; + left: 0; + top: 0; + bottom: 0; + transform: translate(50%); + border-left-width: 1px; + border-left-style: dashed; + border-left-color: var(--bs-gray-300); +} +.timeline .timeline-icon { + z-index: 1; + flex-shrink: 0; + margin-right: 1rem; +} +.timeline .timeline-content { + width: 100%; + overflow: auto; + margin-bottom: 1.5rem; +} +.timeline.timeline-center .timeline-item { + align-items: center; +} +.timeline.timeline-center .timeline-item:first-child .timeline-line { + top: 50%; +} +.timeline.timeline-center .timeline-item:last-child .timeline-line { + bottom: 50%; +} + +.timeline-label { + position: relative; +} +.timeline-label:before { + content: ""; + position: absolute; + left: 51px; + width: 3px; + top: 0; + bottom: 0; + background-color: var(--bs-gray-200); +} +.timeline-label .timeline-item { + display: flex; + align-items: flex-start; + position: relative; + margin-bottom: 1.7rem; +} +.timeline-label .timeline-item:last-child { + margin-bottom: 0; +} +.timeline-label .timeline-label { + width: 50px; + flex-shrink: 0; + position: relative; + color: var(--bs-gray-800); +} +.timeline-label .timeline-badge { + flex-shrink: 0; + background-color: var(--bs-body-bg); + width: 1rem; + height: 1rem; + border-radius: 100%; + display: flex; + justify-content: center; + align-items: center; + z-index: 1; + position: relative; + margin-top: 1px; + margin-left: -0.5rem; + padding: 3px !important; + border: 6px solid var(--bs-body-bg) !important; +} +.timeline-label .timeline-badge span { + display: block; + border-radius: 100%; + width: 6px; + height: 6px; + background-color: var(--bs-gray-200); +} +.timeline-label .timeline-content { + flex-grow: 1; +} + +.overlay { + position: relative; +} +.overlay .overlay-layer { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + display: flex; + justify-content: center; + align-items: center; + background-color: var(--bs-overlay-bg); + transition: all 0.3s ease; + opacity: 0; +} +.overlay.overlay-show .overlay-layer, .overlay.overlay-block .overlay-layer, .overlay:hover .overlay-layer { + transition: all 0.3s ease; + opacity: 1; +} +.overlay.overlay-block { + cursor: wait; +} + +.bullet { + display: inline-block; + background-color: var(--bs-bullet-bg-color); + border-radius: 6px; + width: 8px; + height: 4px; + flex-shrink: 0; +} + +.bullet-dot { + width: 4px; + height: 4px; + border-radius: 100% !important; +} + +.bullet-vertical { + width: 4px; + height: 8px; +} + +.bullet-line { + width: 5px; + height: 1px; + border-radius: 0; +} + +.drawer { + display: flex !important; + overflow: auto; + z-index: 110; + position: fixed; + top: 0; + bottom: 0; + background-color: var(--bs-drawer-bg-color); + transition: transform 0.3s ease-in-out !important; +} +.drawer.drawer-start { + left: 0; + transform: translateX(-100%); +} +.drawer.drawer-end { + right: 0; + transform: translateX(100%); +} +.drawer.drawer-on { + transform: none; + box-shadow: var(--bs-drawer-box-shadow); + transition: transform 0.3s ease-in-out !important; +} + +.drawer-overlay { + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + overflow: hidden; + z-index: 109; + background-color: var(--bs-drawer-overlay-bg-color); + animation: animation-drawer-fade-in 0.3s ease-in-out 1; +} + +[data-kt-drawer=true] { + display: none; +} + +@keyframes animation-drawer-fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@media (max-width: 991.98px) { + body[data-kt-drawer=on] { + overflow: hidden; + } +} +.badge { + --bs-badge-color: var(--bs-badge-color); + display: inline-flex; + align-items: center; +} +.badge.badge-circle, .badge.badge-square { + display: inline-flex; + align-items: center; + justify-content: center; + height: 1.75rem; + min-width: 1.75rem; + padding: 0 0.1rem; + line-height: 0; +} +.badge.badge-circle { + border-radius: 50%; + padding: 0; + min-width: unset; + width: 1.75rem; +} +.badge.badge-sm { + min-width: 1.5rem; + font-size: 0.8rem; +} +.badge.badge-sm.badge-square { + height: 1.5rem; +} +.badge.badge-sm.badge-circle { + width: 1.5rem; + height: 1.5rem; +} +.badge.badge-lg { + min-width: 2rem; + font-size: 1rem; +} +.badge.badge-lg.badge-square { + height: 2rem; +} +.badge.badge-lg.badge-circle { + width: 2rem; + height: 2rem; +} + +.badge-white { + color: var(--bs-white-inverse); + background-color: var(--bs-white); +} +.badge-white.badge-outline { + border: 1px solid var(--bs-white); + color: var(--bs-white); + background-color: transparent; +} + +.badge-light-white { + color: var(--bs-white); + background-color: var(--bs-white-light); +} + +.badge-light { + color: var(--bs-light-inverse); + background-color: var(--bs-light); +} +.badge-light.badge-outline { + border: 1px solid var(--bs-light); + color: var(--bs-light); + background-color: transparent; +} + +.badge-light-light { + color: var(--bs-light); + background-color: var(--bs-light-light); +} + +.badge-primary { + color: var(--bs-primary-inverse); + background-color: var(--bs-primary); +} +.badge-primary.badge-outline { + border: 1px solid var(--bs-primary); + color: var(--bs-primary); + background-color: transparent; +} + +.badge-light-primary { + color: var(--bs-primary); + background-color: var(--bs-primary-light); +} + +.badge-secondary { + color: var(--bs-secondary-inverse); + background-color: var(--bs-secondary); +} +.badge-secondary.badge-outline { + border: 1px solid var(--bs-secondary); + color: var(--bs-secondary); + background-color: transparent; +} + +.badge-light-secondary { + color: var(--bs-secondary); + background-color: var(--bs-secondary-light); +} + +.badge-success { + color: var(--bs-success-inverse); + background-color: var(--bs-success); +} +.badge-success.badge-outline { + border: 1px solid var(--bs-success); + color: var(--bs-success); + background-color: transparent; +} + +.badge-light-success { + color: var(--bs-success); + background-color: var(--bs-success-light); +} + +.badge-info { + color: var(--bs-info-inverse); + background-color: var(--bs-info); +} +.badge-info.badge-outline { + border: 1px solid var(--bs-info); + color: var(--bs-info); + background-color: transparent; +} + +.badge-light-info { + color: var(--bs-info); + background-color: var(--bs-info-light); +} + +.badge-warning { + color: var(--bs-warning-inverse); + background-color: var(--bs-warning); +} +.badge-warning.badge-outline { + border: 1px solid var(--bs-warning); + color: var(--bs-warning); + background-color: transparent; +} + +.badge-light-warning { + color: var(--bs-warning); + background-color: var(--bs-warning-light); +} + +.badge-danger { + color: var(--bs-danger-inverse); + background-color: var(--bs-danger); +} +.badge-danger.badge-outline { + border: 1px solid var(--bs-danger); + color: var(--bs-danger); + background-color: transparent; +} + +.badge-light-danger { + color: var(--bs-danger); + background-color: var(--bs-danger-light); +} + +.badge-dark { + color: var(--bs-dark-inverse); + background-color: var(--bs-dark); +} +.badge-dark.badge-outline { + border: 1px solid var(--bs-dark); + color: var(--bs-dark); + background-color: transparent; +} + +.badge-light-dark { + color: var(--bs-dark); + background-color: var(--bs-dark-light); +} + +.indicator-progress { + display: none; +} +[data-kt-indicator=on] > .indicator-progress { + display: inline-block; +} + +[data-kt-indicator=on] > .indicator-label { + display: none; +} + +.hover-elevate-up { + transition: transform 0.3s ease; +} +.hover-elevate-up:hover { + transform: translateY(-2.5%); + transition: transform 0.3s ease; +} + +.hover-elevate-down { + transition: transform 0.3s ease; +} +.hover-elevate-down:hover { + transform: translateY(2.5%); + transition: transform 0.3s ease; +} + +.hover-scale { + transition: transform 0.3s ease; +} +.hover-scale:hover { + transform: scale(1.1); + transition: transform 0.3s ease; +} + +.hover-rotate-end { + transition: transform 0.3s ease; +} +.hover-rotate-end:hover { + transform: rotate(4deg); + transition: transform 0.3s ease; +} + +.hover-rotate-start { + transition: transform 0.3s ease; +} +.hover-rotate-start:hover { + transform: rotate(-4deg); + transition: transform 0.3s ease; +} + +.rotate { + display: inline-flex; + align-items: center; +} + +.rotate-90 { + transition: transform 0.3s ease; + backface-visibility: hidden; + will-change: transform; +} +.collapsible:not(.collapsed) > .rotate-90, .show > .rotate-90, .active > .rotate-90 { + transform: rotateZ(90deg); + transition: transform 0.3s ease; +} +[direction=rtl] .collapsible:not(.collapsed) > .rotate-90, [direction=rtl] .show > .rotate-90, [direction=rtl] .active > .rotate-90 { + transform: rotateZ(-90deg); +} + +.rotate-n90 { + transition: transform 0.3s ease; + backface-visibility: hidden; + will-change: transform; +} +.collapsible:not(.collapsed) > .rotate-n90, .show > .rotate-n90, .active > .rotate-n90 { + transform: rotateZ(-90deg); + transition: transform 0.3s ease; +} +[direction=rtl] .collapsible:not(.collapsed) > .rotate-n90, [direction=rtl] .show > .rotate-n90, [direction=rtl] .active > .rotate-n90 { + transform: rotateZ(90deg); +} + +.rotate-180 { + transition: transform 0.3s ease; + backface-visibility: hidden; + will-change: transform; +} +.collapsible:not(.collapsed) > .rotate-180, .show > .rotate-180, .active > .rotate-180 { + transform: rotateZ(180deg); + transition: transform 0.3s ease; +} +[direction=rtl] .collapsible:not(.collapsed) > .rotate-180, [direction=rtl] .show > .rotate-180, [direction=rtl] .active > .rotate-180 { + transform: rotateZ(-180deg); +} + +.rotate-n180 { + transition: transform 0.3s ease; + backface-visibility: hidden; + will-change: transform; +} +.collapsible:not(.collapsed) > .rotate-n180, .show > .rotate-n180, .active > .rotate-n180 { + transform: rotateZ(-180deg); + transition: transform 0.3s ease; +} +[direction=rtl] .collapsible:not(.collapsed) > .rotate-n180, [direction=rtl] .show > .rotate-n180, [direction=rtl] .active > .rotate-n180 { + transform: rotateZ(180deg); +} + +.rotate-270 { + transition: transform 0.3s ease; + backface-visibility: hidden; + will-change: transform; +} +.collapsible:not(.collapsed) > .rotate-270, .show > .rotate-270, .active > .rotate-270 { + transform: rotateZ(270deg); + transition: transform 0.3s ease; +} +[direction=rtl] .collapsible:not(.collapsed) > .rotate-270, [direction=rtl] .show > .rotate-270, [direction=rtl] .active > .rotate-270 { + transform: rotateZ(-270deg); +} + +.rotate-n270 { + transition: transform 0.3s ease; + backface-visibility: hidden; + will-change: transform; +} +.collapsible:not(.collapsed) > .rotate-n270, .show > .rotate-n270, .active > .rotate-n270 { + transform: rotateZ(-270deg); + transition: transform 0.3s ease; +} +[direction=rtl] .collapsible:not(.collapsed) > .rotate-n270, [direction=rtl] .show > .rotate-n270, [direction=rtl] .active > .rotate-n270 { + transform: rotateZ(270deg); +} + +@media (min-width: 992px) { + main, +span, +ol, +ul, +pre, +div { + scrollbar-width: thin; + scrollbar-color: var(--bs-scrollbar-color) transparent; + } + main::-webkit-scrollbar, +span::-webkit-scrollbar, +ol::-webkit-scrollbar, +ul::-webkit-scrollbar, +pre::-webkit-scrollbar, +div::-webkit-scrollbar { + width: var(--bs-scrollbar-size); + height: var(--bs-scrollbar-size); + } + main ::-webkit-scrollbar-track, +span ::-webkit-scrollbar-track, +ol ::-webkit-scrollbar-track, +ul ::-webkit-scrollbar-track, +pre ::-webkit-scrollbar-track, +div ::-webkit-scrollbar-track { + background-color: transparent; + } + main ::-webkit-scrollbar-thumb, +span ::-webkit-scrollbar-thumb, +ol ::-webkit-scrollbar-thumb, +ul ::-webkit-scrollbar-thumb, +pre ::-webkit-scrollbar-thumb, +div ::-webkit-scrollbar-thumb { + border-radius: var(--bs-scrollbar-size); + } + main::-webkit-scrollbar-thumb, +span::-webkit-scrollbar-thumb, +ol::-webkit-scrollbar-thumb, +ul::-webkit-scrollbar-thumb, +pre::-webkit-scrollbar-thumb, +div::-webkit-scrollbar-thumb { + background-color: var(--bs-scrollbar-color); + } + main::-webkit-scrollbar-corner, +span::-webkit-scrollbar-corner, +ol::-webkit-scrollbar-corner, +ul::-webkit-scrollbar-corner, +pre::-webkit-scrollbar-corner, +div::-webkit-scrollbar-corner { + background-color: transparent; + } + main:hover, +span:hover, +ol:hover, +ul:hover, +pre:hover, +div:hover { + scrollbar-color: var(--bs-scrollbar-hover-color) transparent; + } + main:hover::-webkit-scrollbar-thumb, +span:hover::-webkit-scrollbar-thumb, +ol:hover::-webkit-scrollbar-thumb, +ul:hover::-webkit-scrollbar-thumb, +pre:hover::-webkit-scrollbar-thumb, +div:hover::-webkit-scrollbar-thumb { + background-color: var(--bs-scrollbar-hover-color); + } + main:hover::-webkit-scrollbar-corner, +span:hover::-webkit-scrollbar-corner, +ol:hover::-webkit-scrollbar-corner, +ul:hover::-webkit-scrollbar-corner, +pre:hover::-webkit-scrollbar-corner, +div:hover::-webkit-scrollbar-corner { + background-color: transparent; + } +} +.scroll { + overflow: scroll; + position: relative; +} +@media (max-width: 991.98px) { + .scroll { + overflow: auto; + } +} + +.scroll-x { + overflow-x: scroll; + position: relative; +} +@media (max-width: 991.98px) { + .scroll-x { + overflow-x: auto; + } +} + +.scroll-y { + overflow-y: scroll; + position: relative; +} +@media (max-width: 991.98px) { + .scroll-y { + overflow-y: auto; + } +} + +.hover-scroll, +.hover-scroll-overlay { + position: relative; +} +@media (min-width: 992px) { + .hover-scroll, +.hover-scroll-overlay { + overflow: hidden; + } + @-moz-document url-prefix() { + .hover-scroll, +.hover-scroll-overlay { + overflow: scroll; + } + } + .safari-mode .hover-scroll, +.safari-mode .hover-scroll-overlay { + overflow: scroll; + } + .hover-scroll::-webkit-scrollbar, +.hover-scroll-overlay::-webkit-scrollbar { + width: var(--bs-scrollbar-overlay-size); + height: var(--bs-scrollbar-overlay-size); + } + .hover-scroll::-webkit-scrollbar-thumb, +.hover-scroll-overlay::-webkit-scrollbar-thumb { + background-clip: content-box; + border: var(--bs-scrollbar-overlay-space) solid transparent; + border-radius: var(--bs-scrollbar-overlay-size); + } + .hover-scroll:hover, +.hover-scroll-overlay:hover { + overflow: overlay; + } +} +@media (max-width: 991.98px) { + .hover-scroll, +.hover-scroll-overlay { + overflow: auto; + } +} + +.hover-scroll-y, +.hover-scroll-overlay-y { + position: relative; +} +@media (min-width: 992px) { + .hover-scroll-y, +.hover-scroll-overlay-y { + overflow-y: hidden; + } + @-moz-document url-prefix() { + .hover-scroll-y, +.hover-scroll-overlay-y { + overflow-y: scroll; + } + } + .safari-mode .hover-scroll-y, +.safari-mode .hover-scroll-overlay-y { + overflow-y: scroll; + } + .hover-scroll-y::-webkit-scrollbar, +.hover-scroll-overlay-y::-webkit-scrollbar { + width: var(--bs-scrollbar-overlay-size); + } + .hover-scroll-y::-webkit-scrollbar-thumb, +.hover-scroll-overlay-y::-webkit-scrollbar-thumb { + background-clip: content-box; + border: var(--bs-scrollbar-overlay-space) solid transparent; + border-radius: var(--bs-scrollbar-overlay-size); + } + .hover-scroll-y:hover, +.hover-scroll-overlay-y:hover { + overflow-y: overlay; + } +} +@media (max-width: 991.98px) { + .hover-scroll-y, +.hover-scroll-overlay-y { + overflow-y: auto; + } +} + +.hover-scroll-x, +.hover-scroll-overlay-x { + position: relative; +} +@media (min-width: 992px) { + .hover-scroll-x, +.hover-scroll-overlay-x { + overflow-x: hidden; + } + @-moz-document url-prefix() { + .hover-scroll-x, +.hover-scroll-overlay-x { + overflow-x: scroll; + } + } + .safari-mode .hover-scroll-x, +.safari-mode .hover-scroll-overlay-x { + overflow-x: scroll; + } + .hover-scroll-x::-webkit-scrollbar, +.hover-scroll-overlay-x::-webkit-scrollbar { + height: var(--bs-scrollbar-overlay-size); + } + .hover-scroll-x::-webkit-scrollbar-thumb, +.hover-scroll-overlay-x::-webkit-scrollbar-thumb { + background-clip: content-box; + border: var(--bs-scrollbar-overlay-space) solid transparent; + border-radius: var(--bs-scrollbar-overlay-size); + } + .hover-scroll-x:hover, +.hover-scroll-overlay-x:hover { + overflow-x: overlay; + } +} +@media (max-width: 991.98px) { + .hover-scroll-x, +.hover-scroll-overlay-x { + overflow-x: auto; + } +} + +.scroll-ps { + padding-left: var(--bs-scrollbar-size) !important; +} + +.scroll-ms { + margin-left: var(--bs-scrollbar-size) !important; +} + +.scroll-mb { + margin-bottom: var(--bs-scrollbar-size) !important; +} + +.scroll-pe { + padding-right: var(--bs-scrollbar-size) !important; +} + +.scroll-me { + margin-right: var(--bs-scrollbar-size) !important; +} + +.scroll-px { + padding-left: var(--bs-scrollbar-size) !important; + padding-right: var(--bs-scrollbar-size) !important; +} + +.scroll-mx { + margin-left: var(--bs-scrollbar-size) !important; + margin-right: var(--bs-scrollbar-size) !important; +} + +.rating { + display: flex; + align-items: center; +} + +.rating-input { + position: absolute !important; + left: -9999px !important; +} +.rating-input[disabled] { + display: none; +} + +.rating-label { + padding: 0; + margin: 0; +} +.rating-label > i, .rating-label > .svg-icon { + line-height: 1; + color: var(--bs-rating-color-default); +} + +label.rating-label { + cursor: pointer; +} + +div.rating-label.checked > i, div.rating-label.checked > .svg-icon, +label.rating-label > i, +label.rating-label > .svg-icon { + color: var(--bs-rating-color-active); +} + +.rating-input:checked ~ .rating-label > i, .rating-input:checked ~ .rating-label > .svg-icon { + color: var(--bs-rating-color-default); +} + +.rating:hover label.rating-label > i, .rating:hover label.rating-label > .svg-icon { + color: var(--bs-rating-color-active); +} + +label.rating-label:hover ~ .rating-label { + color: var(--bs-rating-color-default); +} +label.rating-label:hover ~ .rating-label > i, label.rating-label:hover ~ .rating-label > .svg-icon { + color: var(--bs-rating-color-default); +} + +.stepper [data-kt-stepper-element=info], +.stepper [data-kt-stepper-element=content] { + display: none; +} +.stepper [data-kt-stepper-element=info].current, +.stepper [data-kt-stepper-element=content].current { + display: flex; +} +.stepper .stepper-item[data-kt-stepper-action=step] { + cursor: pointer; +} +.stepper [data-kt-stepper-action=final] { + display: none; +} +.stepper [data-kt-stepper-action=previous] { + display: none; +} +.stepper [data-kt-stepper-action=next] { + display: inline-block; +} +.stepper [data-kt-stepper-action=submit] { + display: none; +} +.stepper.first [data-kt-stepper-action=previous] { + display: none; +} +.stepper.first [data-kt-stepper-action=next] { + display: inline-block; +} +.stepper.first [data-kt-stepper-action=submit] { + display: none; +} +.stepper.between [data-kt-stepper-action=previous] { + display: inline-block; +} +.stepper.between [data-kt-stepper-action=next] { + display: inline-block; +} +.stepper.between [data-kt-stepper-action=submit] { + display: none; +} +.stepper.last [data-kt-stepper-action=final] { + display: inline-block; +} +.stepper.last [data-kt-stepper-action=final].btn-flex { + display: flex; +} +.stepper.last [data-kt-stepper-action=previous] { + display: inline-block; +} +.stepper.last [data-kt-stepper-action=previous].btn-flex { + display: flex; +} +.stepper.last [data-kt-stepper-action=next] { + display: none; +} +.stepper.last [data-kt-stepper-action=next].btn-flex { + display: flex; +} +.stepper.last [data-kt-stepper-action=submit] { + display: inline-block; +} +.stepper.last [data-kt-stepper-action=submit].btn-flex { + display: flex; +} + +.stepper.stepper-pills { + --bs-stepper-pills-size: 40px; + --bs-stepper-icon-border-radius: 9px; + --bs-stepper-icon-check-size: 1rem; + --bs-stepper-icon-bg-color: var(--bs-primary-light); + --bs-stepper-icon-bg-color-current: var(--bs-primary); + --bs-stepper-icon-bg-color-completed: var(--bs-primary-light); + --bs-stepper-icon-border: 0; + --bs-stepper-icon-border-current: 0; + --bs-stepper-icon-border-completed: 0; + --bs-stepper-icon-number-color: var(--bs-primary); + --bs-stepper-icon-number-color-current: var(--bs-white); + --bs-stepper-icon-check-color-completed: var(--bs-primary); + --bs-stepper-label-title-opacity: 1; + --bs-stepper-label-title-opacity-current: 1; + --bs-stepper-label-title-opacity-completed: 1; + --bs-stepper-label-title-color: var(--bs-gray-800); + --bs-stepper-label-title-color-current: var(--bs-gray-600); + --bs-stepper-label-title-color-completed: var(--bs-text-muted); + --bs-stepper-label-desc-opacity: 1; + --bs-stepper-label-desc-opacity-current: 1; + --bs-stepper-label-desc-opacity-completed: 1; + --bs-stepper-label-desc-color: var(--bs-text-muted); + --bs-stepper-label-desc-color-current: var(--bs-text-400); + --bs-stepper-label-desc-color-completed: var(--bs-gray-400); + --bs-stepper-line-border: 1px dashed var(--bs-gray-300); +} +.stepper.stepper-pills .stepper-nav { + display: flex; +} +.stepper.stepper-pills .stepper-item { + display: flex; + align-items: center; + transition: color 0.2s ease; +} +.stepper.stepper-pills .stepper-item .stepper-icon { + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + transition: color 0.2s ease; + width: var(--bs-stepper-pills-size); + height: var(--bs-stepper-pills-size); + border-radius: var(--bs-stepper-icon-border-radius); + background-color: var(--bs-stepper-icon-bg-color); + border: var(--bs-stepper-icon-border); + margin-right: 1.5rem; +} +.stepper.stepper-pills .stepper-item .stepper-icon .stepper-check { + display: none; + font-size: var(--bs-stepper-icon-check-size); +} +.stepper.stepper-pills .stepper-item .stepper-icon .stepper-number { + font-weight: 600; + color: var(--bs-stepper-icon-number-color); + font-size: 1.25rem; +} +.stepper.stepper-pills .stepper-item .stepper-label { + display: flex; + flex-direction: column; + justify-content: center; +} +.stepper.stepper-pills .stepper-item .stepper-label .stepper-title { + color: var(--bs-stepper-label-title-color); + opacity: var(--bs-stepper-label-title-opacity); + font-weight: 600; + font-size: 1.25rem; + margin-bottom: 0.3rem; +} +.stepper.stepper-pills .stepper-item .stepper-label .stepper-desc { + opacity: var(--bs-stepper-label-desc-opacity); + color: var(--bs-stepper-label-desc-color); +} +.stepper.stepper-pills .stepper-item.current { + transition: color 0.2s ease; +} +.stepper.stepper-pills .stepper-item.current .stepper-icon { + transition: color 0.2s ease; + background-color: var(--bs-stepper-icon-bg-color-current); + border: var(--bs-stepper-icon-border-current); +} +.stepper.stepper-pills .stepper-item.current .stepper-icon .stepper-check { + display: none; +} +.stepper.stepper-pills .stepper-item.current .stepper-icon .stepper-number { + color: var(--bs-stepper-icon-number-color-current); + font-size: 1.35rem; +} +.stepper.stepper-pills .stepper-item.current .stepper-label .stepper-title { + opacity: var(--bs-stepper-label-title-opacity-current); + color: var(--bs-stepper-label-title-color-current); +} +.stepper.stepper-pills .stepper-item.current .stepper-label .stepper-desc { + opacity: var(--bs-stepper-label-desc-opacity-current); + color: var(--bs-stepper-label-desc-color-current); +} +.stepper.stepper-pills .stepper-item.current.mark-completed:last-child .stepper-icon, .stepper.stepper-pills .stepper-item.completed .stepper-icon { + transition: color 0.2s ease; + background-color: var(--bs-stepper-icon-bg-color-completed); + border: var(--bs-stepper-icon-border-completed); +} +.stepper.stepper-pills .stepper-item.current.mark-completed:last-child .stepper-icon .stepper-check, .stepper.stepper-pills .stepper-item.completed .stepper-icon .stepper-check { + color: var(--bs-stepper-icon-check-color-completed); + display: inline-block; +} +.stepper.stepper-pills .stepper-item.current.mark-completed:last-child .stepper-icon .stepper-number, .stepper.stepper-pills .stepper-item.completed .stepper-icon .stepper-number { + display: none; +} +.stepper.stepper-pills .stepper-item.current.mark-completed:last-child .stepper-label .stepper-title, .stepper.stepper-pills .stepper-item.completed .stepper-label .stepper-title { + opacity: var(--bs-stepper-label-title-opacity-completed); + color: var(--bs-stepper-label-title-color-completed); +} +.stepper.stepper-pills .stepper-item.current.mark-completed:last-child .stepper-label .stepper-desc, .stepper.stepper-pills .stepper-item.completed .stepper-label .stepper-desc { + opacity: var(--bs-stepper-label-desc-opacity-completed); + color: var(--bs-stepper-label-desc-color-completed); +} +.stepper.stepper-pills.stepper-column .stepper-nav { + flex-direction: column; + align-items: start; +} +.stepper.stepper-pills.stepper-column .stepper-item { + flex-direction: column; + justify-content: start; + align-items: stretch; + padding: 0; + margin: 0; +} +.stepper.stepper-pills.stepper-column .stepper-wrapper { + display: flex; + align-items: center; +} +.stepper.stepper-pills.stepper-column .stepper-icon { + z-index: 1; +} +.stepper.stepper-pills.stepper-column .stepper-line { + display: block; + flex-grow: 1; + margin-left: calc(var(--bs-stepper-pills-size) / 2); + border-left: var(--bs-stepper-line-border); + margin-top: 2px; + margin-bottom: 2px; +} + +.stepper.stepper-links .stepper-nav { + display: flex; + margin: 0 auto; + justify-content: center; + align-items: center; + flex-wrap: wrap; +} +.stepper.stepper-links .stepper-nav .stepper-item { + position: relative; + flex-shrink: 0; + margin: 1rem 1.5rem; +} +.stepper.stepper-links .stepper-nav .stepper-item:after { + content: " "; + position: absolute; + top: 2.3rem; + left: 0; + height: 2px; + width: 100%; + background-color: transparent; + transition: color 0.2s ease; +} +.stepper.stepper-links .stepper-nav .stepper-item .stepper-title { + color: var(--bs-dark); + font-weight: 600; + font-size: 1.25rem; +} +.stepper.stepper-links .stepper-nav .stepper-item.current { + transition: color 0.2s ease; +} +.stepper.stepper-links .stepper-nav .stepper-item.current .stepper-title { + color: var(--bs-primary); +} +.stepper.stepper-links .stepper-nav .stepper-item.current:after { + background-color: var(--bs-primary); +} +.stepper.stepper-links .stepper-nav .stepper-item.current.mark-completed:last-child .stepper-title, .stepper.stepper-links .stepper-nav .stepper-item.completed .stepper-title { + color: var(--bs-gray-400); +} + +.toggle.collapsible:not(.collapsed) .toggle-off, .toggle.active .toggle-off { + display: none; +} +.toggle.collapsible.collapsed .toggle-on, .toggle:not(.collapsible):not(.active) .toggle-on { + display: none; +} + +.xehagon { + clip-path: polygon(45% 1.3397459622%, 46.5797985667% 0.6030737921%, 48.2635182233% 0.1519224699%, 50% 0%, 51.7364817767% 0.1519224699%, 53.4202014333% 0.6030737921%, 55% 1.3397459622%, 89.6410161514% 21.3397459622%, 91.0688922482% 22.3395555688%, 92.3014605826% 23.5721239031%, 93.3012701892% 25%, 94.0379423592% 26.5797985667%, 94.4890936815% 28.2635182233%, 94.6410161514% 30%, 94.6410161514% 70%, 94.4890936815% 71.7364817767%, 94.0379423592% 73.4202014333%, 93.3012701892% 75%, 92.3014605826% 76.4278760969%, 91.0688922482% 77.6604444312%, 89.6410161514% 78.6602540378%, 55% 98.6602540378%, 53.4202014333% 99.3969262079%, 51.7364817767% 99.8480775301%, 50% 100%, 48.2635182233% 99.8480775301%, 46.5797985667% 99.3969262079%, 45% 98.6602540378%, 10.3589838486% 78.6602540378%, 8.9311077518% 77.6604444312%, 7.6985394174% 76.4278760969%, 6.6987298108% 75%, 5.9620576408% 73.4202014333%, 5.5109063185% 71.7364817767%, 5.3589838486% 70%, 5.3589838486% 30%, 5.5109063185% 28.2635182233%, 5.9620576408% 26.5797985667%, 6.6987298108% 25%, 7.6985394174% 23.5721239031%, 8.9311077518% 22.3395555688%, 10.3589838486% 21.3397459622%); +} + +.octagon { + clip-path: polygon(46.1731656763% 0.7612046749%, 47.411809549% 0.3407417371%, 48.6947380778% 0.0855513863%, 50% 0%, 51.3052619222% 0.0855513863%, 52.588190451% 0.3407417371%, 53.8268343237% 0.7612046749%, 82.1111055711% 12.4769334274%, 83.2842712475% 13.0554747147%, 84.3718855375% 13.7821953496%, 85.3553390593% 14.6446609407%, 86.2178046504% 15.6281144625%, 86.9445252853% 16.7157287525%, 87.5230665726% 17.8888944289%, 99.2387953251% 46.1731656763%, 99.6592582629% 47.411809549%, 99.9144486137% 48.6947380778%, 100% 50%, 99.9144486137% 51.3052619222%, 99.6592582629% 52.588190451%, 99.2387953251% 53.8268343237%, 87.5230665726% 82.1111055711%, 86.9445252853% 83.2842712475%, 86.2178046504% 84.3718855375%, 85.3553390593% 85.3553390593%, 84.3718855375% 86.2178046504%, 83.2842712475% 86.9445252853%, 82.1111055711% 87.5230665726%, 53.8268343237% 99.2387953251%, 52.588190451% 99.6592582629%, 51.3052619222% 99.9144486137%, 50% 100%, 48.6947380778% 99.9144486137%, 47.411809549% 99.6592582629%, 46.1731656763% 99.2387953251%, 17.8888944289% 87.5230665726%, 16.7157287525% 86.9445252853%, 15.6281144625% 86.2178046504%, 14.6446609407% 85.3553390593%, 13.7821953496% 84.3718855375%, 13.0554747147% 83.2842712475%, 12.4769334274% 82.1111055711%, 0.7612046749% 53.8268343237%, 0.3407417371% 52.588190451%, 0.0855513863% 51.3052619222%, 0% 50%, 0.0855513863% 48.6947380778%, 0.3407417371% 47.411809549%, 0.7612046749% 46.1731656763%, 12.4769334274% 17.8888944289%, 13.0554747147% 16.7157287525%, 13.7821953496% 15.6281144625%, 14.6446609407% 14.6446609407%, 15.6281144625% 13.7821953496%, 16.7157287525% 13.0554747147%, 17.8888944289% 12.4769334274%); +} + +.ribbon { + position: relative; +} +.ribbon .ribbon-label { + display: flex; + justify-content: center; + align-items: center; + padding: 5px 10px; + position: absolute; + z-index: 1; + background-color: var(--bs-ribbon-label-bg); + box-shadow: var(--bs-ribbon-label-box-shadow); + color: var(--bs-primary-inverse); + top: 50%; + right: 0; + transform: translateX(5px) translateY(-50%); +} +.ribbon .ribbon-label > .ribbon-inner { + z-index: -1; + position: absolute; + padding: 0; + width: 100%; + height: 100%; + top: 0; + left: 0; +} +.ribbon .ribbon-label:after { + border-color: var(--bs-ribbon-label-border-color); +} +.ribbon-vertical .ribbon-label { + padding: 5px 10px; + min-width: 36px; + min-height: 46px; + text-align: center; +} +.ribbon.ribbon-top .ribbon-label { + top: 0; + transform: translateX(-15px) translateY(-4px); + border-bottom-right-radius: 0.475rem; + border-bottom-left-radius: 0.475rem; +} +.ribbon.ribbon-bottom .ribbon-label { + border-top-right-radius: 0.475rem; + border-top-left-radius: 0.475rem; +} +.ribbon.ribbon-start .ribbon-label { + top: 50%; + left: 0; + right: auto; + transform: translateX(-5px) translateY(-50%); + border-top-right-radius: 0.475rem; + border-bottom-right-radius: 0.475rem; +} +.ribbon.ribbon-end .ribbon-label { + border-top-left-radius: 0.475rem; + border-bottom-left-radius: 0.475rem; +} + +.ribbon.ribbon-clip.ribbon-start .ribbon-label { + left: -5px; +} +.ribbon.ribbon-clip.ribbon-start .ribbon-label .ribbon-inner { + border-top-right-radius: 0.475rem; + border-bottom-right-radius: 0.475rem; +} +.ribbon.ribbon-clip.ribbon-start .ribbon-label .ribbon-inner:before, .ribbon.ribbon-clip.ribbon-start .ribbon-label .ribbon-inner:after { + content: ""; + position: absolute; + border-style: solid; + border-color: transparent !important; + bottom: -10px; +} +.ribbon.ribbon-clip.ribbon-start .ribbon-label .ribbon-inner:before { + border-width: 0 10px 10px 0; + border-right-color: var(--bs-ribbon-clip-bg) !important; + left: 0; +} +.ribbon.ribbon-clip.ribbon-end .ribbon-label { + right: -5px; +} +.ribbon.ribbon-clip.ribbon-end .ribbon-label .ribbon-inner { + border-top-left-radius: 0.475rem; + border-bottom-left-radius: 0.475rem; +} +.ribbon.ribbon-clip.ribbon-end .ribbon-label .ribbon-inner:before, .ribbon.ribbon-clip.ribbon-end .ribbon-label .ribbon-inner:after { + content: ""; + position: absolute; + border-style: solid; + border-color: transparent !important; + bottom: -10px; +} +.ribbon.ribbon-clip.ribbon-end .ribbon-label .ribbon-inner:before { + border-width: 0 0 10px 10px; + border-left-color: var(--bs-ribbon-clip-bg) !important; + right: 0; +} + +.ribbon.ribbon-triangle { + position: absolute; + z-index: 1; + display: flex; + align-items: flex-start; + justify-content: flex-start; +} +.ribbon.ribbon-triangle.ribbon-top-start { + top: 0; + left: 0; + width: 4rem; + height: 4rem; + border-bottom: solid 2rem transparent !important; + border-left: solid 2rem transparent; + border-right: solid 2rem transparent !important; + border-top: solid 2rem transparent; +} +.ribbon.ribbon-triangle.ribbon-top-end { + top: 0; + right: 0; + width: 4rem; + height: 4rem; + border-bottom: solid 2rem transparent !important; + border-left: solid 2rem transparent !important; + border-right: solid 2rem transparent; + border-top: solid 2rem transparent; +} +.ribbon.ribbon-triangle.ribbon-bottom-start { + bottom: 0; + left: 0; + width: 4rem; + height: 4rem; + border-bottom: solid 2rem transparent; + border-left: solid 2rem transparent; + border-right: solid 2rem transparent !important; + border-top: solid 2rem transparent !important; +} +.ribbon.ribbon-triangle.ribbon-bottom-end { + bottom: 0; + right: 0; + width: 4rem; + height: 4rem; + border-bottom: solid 2rem transparent; + border-right: solid 2rem transparent; + border-left: solid 2rem transparent !important; + border-top: solid 2rem transparent !important; +} + +.blockui { + position: relative; +} +.blockui .blockui-overlay { + transition: all 0.3s ease; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + display: flex; + justify-content: center; + align-items: center; + background-color: var(--bs-blockui-overlay-bg); +} +.blockui .blockui-overlay .spinner-border { + height: 1.35rem; + width: 1.35rem; +} +.blockui .blockui-message { + display: flex; + align-items: center; + border-radius: 0.475rem; + box-shadow: var(--bs-blockui-message-box-shadow); + background-color: var(--bs-blockui-message-bg); + color: var(--bs-gray-700); + font-weight: 600; + margin: 0 !important; + width: auto; + padding: 0.85rem 1.75rem !important; +} +.blockui .blockui-message .spinner-border { + margin-right: 0.65rem; +} + +[data-bs-theme=dark] .blockui { + --bs-blockui-overlay-bg: rgba(255, 255, 255, 0.05); + --bs-blockui-message-bg: #2B2B40; + --bs-blockui-message-box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.15); +} + +.explore-btn-toggle { + color: var(--bs-gray-600); + background-color: #ffffff; +} +.explore-btn-toggle:hover, .explore-btn-toggle:focus, .explore-btn-toggle:active { + color: #ffffff; + background-color: #00B2FF; +} + +.explore-btn-dismiss { + border: 0; +} +.explore-btn-dismiss:hover i, +.explore-btn-dismiss:hover .svg-icon { + color: #00B2FF; +} + +.explore-btn-primary { + border: 0; + color: #ffffff; + background-color: #00B2FF; +} +.explore-btn-primary:hover { + color: #ffffff; + background-color: #0098DA; +} + +.explore-btn-secondary { + border: 0; + color: var(--bs-gray-600); + background-color: var(--bs-gray-100); +} +.explore-btn-secondary:hover { + color: var(--bs-gray-800); + background-color: var(--bs-gray-200); +} + +.explore-btn-outline { + border: 1px dashed var(--bs-gray-300) !important; +} +.explore-btn-outline:hover, .explore-btn-outline.active { + border: 1px dashed #50CD89 !important; + background-color: #E8FFF3; +} + +.explore-link { + color: #00B2FF; +} +.explore-link:hover { + color: #0098DA; +} + +.explore-link-hover:hover { + color: #00B2FF !important; +} + +.explore-icon-success { + color: #50CD89; +} + +.explore-icon-danger { + color: #F1416C; +} + +.explore-label-free { + color: #ffffff; + background-color: #FFC700; +} + +.explore-label-pro { + color: #ffffff; + background-color: #50CD89; +} + +.app-engage { + position: fixed; + right: 0; + top: 50%; + transform: translateY(-50%); + display: flex; + flex-direction: column; + align-items: end; + z-index: 5; + padding-right: 12px; +} +.app-engage .app-engage-btn { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + box-shadow: var(--bs-engage-btn-box-shadow); + border-width: 1px; + border-style: solid; + font-size: 12px; + font-weight: 600; + margin-bottom: 8px; + border-radius: 6px; + width: 66px; + height: 70px; + color: var(--bs-engage-btn-color); + border-color: var(--bs-engage-btn-border-color); + background-color: var(--bs-engage-btn-bg); +} +.app-engage .app-engage-btn i, +.app-engage .app-engage-btn .svg-icon { + color: var(--bs-engage-btn-icon-color); +} +.app-engage .app-engage-btn.dropdown-toggle:after { + color: var(--bs-engage-btn-icon-color); +} +.app-engage .app-engage-btn.hover-dark:hover { + color: var(--bs-dark-inverse); + border-color: var(--bs-dark); + background-color: var(--bs-dark); +} +.app-engage .app-engage-btn.hover-dark:hover i, +.app-engage .app-engage-btn.hover-dark:hover .svg-icon { + color: var(--bs-dark-inverse); +} +.app-engage .app-engage-btn.hover-primary:hover { + color: var(--bs-primary-inverse); + border-color: var(--bs-primary); + background-color: var(--bs-primary); +} +.app-engage .app-engage-btn.hover-primary:hover i, +.app-engage .app-engage-btn.hover-primary:hover .svg-icon { + color: var(--bs-primary-inverse); +} +.app-engage .app-engage-btn.hover-success:hover { + color: var(--bs-success-inverse); + border-color: var(--bs-success); + background-color: var(--bs-success); +} +.app-engage .app-engage-btn.hover-success:hover i, +.app-engage .app-engage-btn.hover-success:hover .svg-icon { + color: var(--bs-success-inverse); +} +.app-engage .app-engage-btn.app-engage-btn-toggle-off { + width: 35px; + height: 35px; +} +.app-engage .app-engage-btn.app-engage-btn-toggle-on { + width: 35px; + height: 35px; + display: none; +} +.app-engage.app-engage-hide .app-engage-btn { + visibility: hidden; +} +.app-engage.app-engage-hide .app-engage-btn.app-engage-btn-toggle-off { + display: none; +} +.app-engage.app-engage-hide .app-engage-btn.app-engage-btn-toggle-on { + visibility: visible; + display: flex; +} + +.engage-btn { + display: flex; + align-items: center; + height: 35px !important; + color: var(--bs-engage-btn-color); + border-color: var(--bs-engage-btn-bg); + background-color: var(--bs-engage-btn-bg); +} +.engage-btn i, +.engage-btn .svg-icon { + color: var(--bs-engage-btn-color); +} +.engage-btn.dropdown-toggle:after { + color: var(--bs-engage-btn-color); +} +.btn-check:checked + .engage-btn, .btn-check:active + .engage-btn, .engage-btn:focus:not(.btn-active), .engage-btn:hover:not(.btn-active), .engage-btn:active:not(.btn-active), .engage-btn.active, .engage-btn.show, .show > .engage-btn { + color: var(--bs-engage-btn-color-active); + border-color: var(--bs-engage-btn-bg); + background-color: var(--bs-engage-btn-bg) !important; +} +.btn-check:checked + .engage-btn i, +.btn-check:checked + .engage-btn .svg-icon, .btn-check:active + .engage-btn i, +.btn-check:active + .engage-btn .svg-icon, .engage-btn:focus:not(.btn-active) i, +.engage-btn:focus:not(.btn-active) .svg-icon, .engage-btn:hover:not(.btn-active) i, +.engage-btn:hover:not(.btn-active) .svg-icon, .engage-btn:active:not(.btn-active) i, +.engage-btn:active:not(.btn-active) .svg-icon, .engage-btn.active i, +.engage-btn.active .svg-icon, .engage-btn.show i, +.engage-btn.show .svg-icon, .show > .engage-btn i, +.show > .engage-btn .svg-icon { + color: var(--bs-engage-btn-color-active); +} +.btn-check:checked + .engage-btn.dropdown-toggle:after, .btn-check:active + .engage-btn.dropdown-toggle:after, .engage-btn:focus:not(.btn-active).dropdown-toggle:after, .engage-btn:hover:not(.btn-active).dropdown-toggle:after, .engage-btn:active:not(.btn-active).dropdown-toggle:after, .engage-btn.active.dropdown-toggle:after, .engage-btn.show.dropdown-toggle:after, .show > .engage-btn.dropdown-toggle:after { + color: var(--bs-engage-btn-color-active); +} + +.cookiealert { + background: inherit; + color: inherit; +} + +@media print { + .print-content-only { + padding: 0 !important; + background: none !important; + } + .print-content-only .wrapper, +.print-content-only .page, +.print-content-only .page-title .content, +.print-content-only .container, +.print-content-only .container-xxl, +.print-content-only .container-fluid, +.print-content-only .container-sm, +.print-content-only .container-md, +.print-content-only .container-lg, +.print-content-only .container-xl { + background: none !important; + padding: 0 !important; + margin: 0 !important; + } + .print-content-only .aside, +.print-content-only .sidebar, +.print-content-only .scrolltop, +.print-content-only .header, +.print-content-only .footer, +.print-content-only .toolbar, +.print-content-only .drawer, +.print-content-only .btn { + display: none !important; + } +} +.bg-white { + --bs-bg-rgb-color: var(--bs-white-bg-rgb); + background-color: #000000 !important; +} + +.bg-black { + --bs-bg-rgb-color: var(--bs-black-bg-rgb); + background-color: #000000 !important; +} + +.bg-body { + --bs-bg-rgb-color: var(--bs-body-bg-rgb); + background-color: var(--bs-body-bg) !important; +} + +.bg-hover-body { + cursor: pointer; +} +.bg-hover-body:hover { + background-color: var(--bs-body-bg) !important; +} + +.bg-active-body.active { + background-color: var(--bs-body-bg) !important; +} + +.bg-state-body { + cursor: pointer; +} +.bg-state-body.active, .bg-state-body:hover { + background-color: var(--bs-body-bg) !important; +} + +.bg-white { + --bs-bg-rgb-color: var(--bs-white-rgb); + background-color: var(--bs-white) !important; +} + +.bg-white-active { + --bs-bg-rgb-color: var(--bs-white-active-rgb); + background-color: var(--bs-white-active) !important; +} + +.bg-hover-white { + cursor: pointer; +} +.bg-hover-white:hover { + background-color: var(--bs-white) !important; +} + +.bg-active-white.active { + background-color: var(--bs-white) !important; +} + +.bg-state-white { + cursor: pointer; +} +.bg-state-white.active, .bg-state-white:hover { + background-color: var(--bs-white) !important; +} + +.bg-light { + --bs-bg-rgb-color: var(--bs-light-rgb); + background-color: var(--bs-light) !important; +} + +.bg-light-active { + --bs-bg-rgb-color: var(--bs-light-active-rgb); + background-color: var(--bs-light-active) !important; +} + +.bg-hover-light { + cursor: pointer; +} +.bg-hover-light:hover { + background-color: var(--bs-light) !important; +} + +.bg-active-light.active { + background-color: var(--bs-light) !important; +} + +.bg-state-light { + cursor: pointer; +} +.bg-state-light.active, .bg-state-light:hover { + background-color: var(--bs-light) !important; +} + +.bg-light-primary { + background-color: var(--bs-primary-light) !important; +} + +.bg-primary { + --bs-bg-rgb-color: var(--bs-primary-rgb); + background-color: var(--bs-primary) !important; +} + +.bg-primary-active { + --bs-bg-rgb-color: var(--bs-primary-active-rgb); + background-color: var(--bs-primary-active) !important; +} + +.bg-hover-light-primary { + cursor: pointer; +} +.bg-hover-light-primary:hover { + background-color: var(--bs-primary-light) !important; +} + +.bg-state-light-primary { + cursor: pointer; +} +.bg-state-light-primary.active, .bg-state-light-primary:hover { + background-color: var(--bs-primary-light) !important; +} + +.bg-hover-primary { + cursor: pointer; +} +.bg-hover-primary:hover { + background-color: var(--bs-primary) !important; +} + +.bg-active-primary.active { + background-color: var(--bs-primary) !important; +} + +.bg-state-primary { + cursor: pointer; +} +.bg-state-primary.active, .bg-state-primary:hover { + background-color: var(--bs-primary) !important; +} + +.bg-light-secondary { + background-color: var(--bs-secondary-light) !important; +} + +.bg-secondary { + --bs-bg-rgb-color: var(--bs-secondary-rgb); + background-color: var(--bs-secondary) !important; +} + +.bg-secondary-active { + --bs-bg-rgb-color: var(--bs-secondary-active-rgb); + background-color: var(--bs-secondary-active) !important; +} + +.bg-hover-light-secondary { + cursor: pointer; +} +.bg-hover-light-secondary:hover { + background-color: var(--bs-secondary-light) !important; +} + +.bg-state-light-secondary { + cursor: pointer; +} +.bg-state-light-secondary.active, .bg-state-light-secondary:hover { + background-color: var(--bs-secondary-light) !important; +} + +.bg-hover-secondary { + cursor: pointer; +} +.bg-hover-secondary:hover { + background-color: var(--bs-secondary) !important; +} + +.bg-active-secondary.active { + background-color: var(--bs-secondary) !important; +} + +.bg-state-secondary { + cursor: pointer; +} +.bg-state-secondary.active, .bg-state-secondary:hover { + background-color: var(--bs-secondary) !important; +} + +.bg-light-success { + background-color: var(--bs-success-light) !important; +} + +.bg-success { + --bs-bg-rgb-color: var(--bs-success-rgb); + background-color: var(--bs-success) !important; +} + +.bg-success-active { + --bs-bg-rgb-color: var(--bs-success-active-rgb); + background-color: var(--bs-success-active) !important; +} + +.bg-hover-light-success { + cursor: pointer; +} +.bg-hover-light-success:hover { + background-color: var(--bs-success-light) !important; +} + +.bg-state-light-success { + cursor: pointer; +} +.bg-state-light-success.active, .bg-state-light-success:hover { + background-color: var(--bs-success-light) !important; +} + +.bg-hover-success { + cursor: pointer; +} +.bg-hover-success:hover { + background-color: var(--bs-success) !important; +} + +.bg-active-success.active { + background-color: var(--bs-success) !important; +} + +.bg-state-success { + cursor: pointer; +} +.bg-state-success.active, .bg-state-success:hover { + background-color: var(--bs-success) !important; +} + +.bg-light-info { + background-color: var(--bs-info-light) !important; +} + +.bg-info { + --bs-bg-rgb-color: var(--bs-info-rgb); + background-color: var(--bs-info) !important; +} + +.bg-info-active { + --bs-bg-rgb-color: var(--bs-info-active-rgb); + background-color: var(--bs-info-active) !important; +} + +.bg-hover-light-info { + cursor: pointer; +} +.bg-hover-light-info:hover { + background-color: var(--bs-info-light) !important; +} + +.bg-state-light-info { + cursor: pointer; +} +.bg-state-light-info.active, .bg-state-light-info:hover { + background-color: var(--bs-info-light) !important; +} + +.bg-hover-info { + cursor: pointer; +} +.bg-hover-info:hover { + background-color: var(--bs-info) !important; +} + +.bg-active-info.active { + background-color: var(--bs-info) !important; +} + +.bg-state-info { + cursor: pointer; +} +.bg-state-info.active, .bg-state-info:hover { + background-color: var(--bs-info) !important; +} + +.bg-light-warning { + background-color: var(--bs-warning-light) !important; +} + +.bg-warning { + --bs-bg-rgb-color: var(--bs-warning-rgb); + background-color: var(--bs-warning) !important; +} + +.bg-warning-active { + --bs-bg-rgb-color: var(--bs-warning-active-rgb); + background-color: var(--bs-warning-active) !important; +} + +.bg-hover-light-warning { + cursor: pointer; +} +.bg-hover-light-warning:hover { + background-color: var(--bs-warning-light) !important; +} + +.bg-state-light-warning { + cursor: pointer; +} +.bg-state-light-warning.active, .bg-state-light-warning:hover { + background-color: var(--bs-warning-light) !important; +} + +.bg-hover-warning { + cursor: pointer; +} +.bg-hover-warning:hover { + background-color: var(--bs-warning) !important; +} + +.bg-active-warning.active { + background-color: var(--bs-warning) !important; +} + +.bg-state-warning { + cursor: pointer; +} +.bg-state-warning.active, .bg-state-warning:hover { + background-color: var(--bs-warning) !important; +} + +.bg-light-danger { + background-color: var(--bs-danger-light) !important; +} + +.bg-danger { + --bs-bg-rgb-color: var(--bs-danger-rgb); + background-color: var(--bs-danger) !important; +} + +.bg-danger-active { + --bs-bg-rgb-color: var(--bs-danger-active-rgb); + background-color: var(--bs-danger-active) !important; +} + +.bg-hover-light-danger { + cursor: pointer; +} +.bg-hover-light-danger:hover { + background-color: var(--bs-danger-light) !important; +} + +.bg-state-light-danger { + cursor: pointer; +} +.bg-state-light-danger.active, .bg-state-light-danger:hover { + background-color: var(--bs-danger-light) !important; +} + +.bg-hover-danger { + cursor: pointer; +} +.bg-hover-danger:hover { + background-color: var(--bs-danger) !important; +} + +.bg-active-danger.active { + background-color: var(--bs-danger) !important; +} + +.bg-state-danger { + cursor: pointer; +} +.bg-state-danger.active, .bg-state-danger:hover { + background-color: var(--bs-danger) !important; +} + +.bg-light-dark { + background-color: var(--bs-dark-light) !important; +} + +.bg-dark { + --bs-bg-rgb-color: var(--bs-dark-rgb); + background-color: var(--bs-dark) !important; +} + +.bg-dark-active { + --bs-bg-rgb-color: var(--bs-dark-active-rgb); + background-color: var(--bs-dark-active) !important; +} + +.bg-hover-light-dark { + cursor: pointer; +} +.bg-hover-light-dark:hover { + background-color: var(--bs-dark-light) !important; +} + +.bg-state-light-dark { + cursor: pointer; +} +.bg-state-light-dark.active, .bg-state-light-dark:hover { + background-color: var(--bs-dark-light) !important; +} + +.bg-hover-dark { + cursor: pointer; +} +.bg-hover-dark:hover { + background-color: var(--bs-dark) !important; +} + +.bg-active-dark.active { + background-color: var(--bs-dark) !important; +} + +.bg-state-dark { + cursor: pointer; +} +.bg-state-dark.active, .bg-state-dark:hover { + background-color: var(--bs-dark) !important; +} + +.bg-gray-100 { + --bs-bg-rgb-color: var(--bs-gray-100-rgb); + background-color: var(--bs-gray-100); +} + +.bg-gray-100i { + --bs-bg-rgb-color: var(--bs-gray-100-rgb); + background-color: var(--bs-gray-100) !important; +} + +.bg-gray-200 { + --bs-bg-rgb-color: var(--bs-gray-200-rgb); + background-color: var(--bs-gray-200); +} + +.bg-gray-200i { + --bs-bg-rgb-color: var(--bs-gray-200-rgb); + background-color: var(--bs-gray-200) !important; +} + +.bg-gray-300 { + --bs-bg-rgb-color: var(--bs-gray-300-rgb); + background-color: var(--bs-gray-300); +} + +.bg-gray-300i { + --bs-bg-rgb-color: var(--bs-gray-300-rgb); + background-color: var(--bs-gray-300) !important; +} + +.bg-gray-400 { + --bs-bg-rgb-color: var(--bs-gray-400-rgb); + background-color: var(--bs-gray-400); +} + +.bg-gray-400i { + --bs-bg-rgb-color: var(--bs-gray-400-rgb); + background-color: var(--bs-gray-400) !important; +} + +.bg-gray-500 { + --bs-bg-rgb-color: var(--bs-gray-500-rgb); + background-color: var(--bs-gray-500); +} + +.bg-gray-500i { + --bs-bg-rgb-color: var(--bs-gray-500-rgb); + background-color: var(--bs-gray-500) !important; +} + +.bg-gray-600 { + --bs-bg-rgb-color: var(--bs-gray-600-rgb); + background-color: var(--bs-gray-600); +} + +.bg-gray-600i { + --bs-bg-rgb-color: var(--bs-gray-600-rgb); + background-color: var(--bs-gray-600) !important; +} + +.bg-gray-700 { + --bs-bg-rgb-color: var(--bs-gray-700-rgb); + background-color: var(--bs-gray-700); +} + +.bg-gray-700i { + --bs-bg-rgb-color: var(--bs-gray-700-rgb); + background-color: var(--bs-gray-700) !important; +} + +.bg-gray-800 { + --bs-bg-rgb-color: var(--bs-gray-800-rgb); + background-color: var(--bs-gray-800); +} + +.bg-gray-800i { + --bs-bg-rgb-color: var(--bs-gray-800-rgb); + background-color: var(--bs-gray-800) !important; +} + +.bg-gray-900 { + --bs-bg-rgb-color: var(--bs-gray-900-rgb); + background-color: var(--bs-gray-900); +} + +.bg-gray-900i { + --bs-bg-rgb-color: var(--bs-gray-900-rgb); + background-color: var(--bs-gray-900) !important; +} + +.bg-opacity-0 { + background-color: rgba(var(--bs-bg-rgb-color), 0) !important; +} + +.bg-hover-opacity-0:hover { + background-color: rgba(var(--bs-bg-rgb-color), 0) !important; +} + +.bg-active-opacity-0.active { + background-color: rgba(var(--bs-bg-rgb-color), 0) !important; +} + +.bg-state-opacity-0 .active, .bg-state-opacity-0:hover { + background-color: rgba(var(--bs-bg-rgb-color), 0) !important; +} + +.bg-opacity-5 { + background-color: rgba(var(--bs-bg-rgb-color), 0.05) !important; +} + +.bg-hover-opacity-5:hover { + background-color: rgba(var(--bs-bg-rgb-color), 0.05) !important; +} + +.bg-active-opacity-5.active { + background-color: rgba(var(--bs-bg-rgb-color), 0.05) !important; +} + +.bg-state-opacity-5 .active, .bg-state-opacity-5:hover { + background-color: rgba(var(--bs-bg-rgb-color), 0.05) !important; +} + +.bg-opacity-10 { + background-color: rgba(var(--bs-bg-rgb-color), 0.1) !important; +} + +.bg-hover-opacity-10:hover { + background-color: rgba(var(--bs-bg-rgb-color), 0.1) !important; +} + +.bg-active-opacity-10.active { + background-color: rgba(var(--bs-bg-rgb-color), 0.1) !important; +} + +.bg-state-opacity-10 .active, .bg-state-opacity-10:hover { + background-color: rgba(var(--bs-bg-rgb-color), 0.1) !important; +} + +.bg-opacity-15 { + background-color: rgba(var(--bs-bg-rgb-color), 0.15) !important; +} + +.bg-hover-opacity-15:hover { + background-color: rgba(var(--bs-bg-rgb-color), 0.15) !important; +} + +.bg-active-opacity-15.active { + background-color: rgba(var(--bs-bg-rgb-color), 0.15) !important; +} + +.bg-state-opacity-15 .active, .bg-state-opacity-15:hover { + background-color: rgba(var(--bs-bg-rgb-color), 0.15) !important; +} + +.bg-opacity-20 { + background-color: rgba(var(--bs-bg-rgb-color), 0.2) !important; +} + +.bg-hover-opacity-20:hover { + background-color: rgba(var(--bs-bg-rgb-color), 0.2) !important; +} + +.bg-active-opacity-20.active { + background-color: rgba(var(--bs-bg-rgb-color), 0.2) !important; +} + +.bg-state-opacity-20 .active, .bg-state-opacity-20:hover { + background-color: rgba(var(--bs-bg-rgb-color), 0.2) !important; +} + +.bg-opacity-25 { + background-color: rgba(var(--bs-bg-rgb-color), 0.25) !important; +} + +.bg-hover-opacity-25:hover { + background-color: rgba(var(--bs-bg-rgb-color), 0.25) !important; +} + +.bg-active-opacity-25.active { + background-color: rgba(var(--bs-bg-rgb-color), 0.25) !important; +} + +.bg-state-opacity-25 .active, .bg-state-opacity-25:hover { + background-color: rgba(var(--bs-bg-rgb-color), 0.25) !important; +} + +.bg-opacity-50 { + background-color: rgba(var(--bs-bg-rgb-color), 0.5) !important; +} + +.bg-hover-opacity-50:hover { + background-color: rgba(var(--bs-bg-rgb-color), 0.5) !important; +} + +.bg-active-opacity-50.active { + background-color: rgba(var(--bs-bg-rgb-color), 0.5) !important; +} + +.bg-state-opacity-50 .active, .bg-state-opacity-50:hover { + background-color: rgba(var(--bs-bg-rgb-color), 0.5) !important; +} + +.bg-opacity-75 { + background-color: rgba(var(--bs-bg-rgb-color), 0.75) !important; +} + +.bg-hover-opacity-75:hover { + background-color: rgba(var(--bs-bg-rgb-color), 0.75) !important; +} + +.bg-active-opacity-75.active { + background-color: rgba(var(--bs-bg-rgb-color), 0.75) !important; +} + +.bg-state-opacity-75 .active, .bg-state-opacity-75:hover { + background-color: rgba(var(--bs-bg-rgb-color), 0.75) !important; +} + +.bg-opacity-100 { + background-color: rgba(var(--bs-bg-rgb-color), 1) !important; +} + +.bg-hover-opacity-100:hover { + background-color: rgba(var(--bs-bg-rgb-color), 1) !important; +} + +.bg-active-opacity-100.active { + background-color: rgba(var(--bs-bg-rgb-color), 1) !important; +} + +.bg-state-opacity-100 .active, .bg-state-opacity-100:hover { + background-color: rgba(var(--bs-bg-rgb-color), 1) !important; +} + +.bgi-no-repeat { + background-repeat: no-repeat; +} + +.bgi-position-y-top { + background-position-y: top; +} + +.bgi-position-y-bottom { + background-position-y: bottom; +} + +.bgi-position-y-center { + background-position-y: center; +} + +.bgi-position-x-start { + background-position-x: left; +} + +.bgi-position-x-end { + background-position-x: right; +} + +.bgi-position-x-center { + background-position-x: center; +} + +.bgi-position-top { + background-position: 0 top; +} + +.bgi-position-bottom { + background-position: 0 bottom; +} + +.bgi-position-center { + background-position: center; +} + +.bgi-size-auto { + background-size: auto; +} + +.bgi-size-cover { + background-size: cover; +} + +.bgi-size-contain { + background-size: contain; +} + +.bgi-attachment-fixed { + background-attachment: fixed; +} + +.bgi-attachment-scroll { + background-attachment: scroll; +} + +@media (min-width: 576px) { + .bgi-size-sm-auto { + background-size: auto; + } + .bgi-size-sm-cover { + background-size: cover; + } + .bgi-size-sm-contain { + background-size: contain; + } + .bgi-attachment-sm-fixed { + background-attachment: fixed; + } + .bgi-attachment-sm-scroll { + background-attachment: scroll; + } +} +@media (min-width: 768px) { + .bgi-size-md-auto { + background-size: auto; + } + .bgi-size-md-cover { + background-size: cover; + } + .bgi-size-md-contain { + background-size: contain; + } + .bgi-attachment-md-fixed { + background-attachment: fixed; + } + .bgi-attachment-md-scroll { + background-attachment: scroll; + } +} +@media (min-width: 992px) { + .bgi-size-lg-auto { + background-size: auto; + } + .bgi-size-lg-cover { + background-size: cover; + } + .bgi-size-lg-contain { + background-size: contain; + } + .bgi-attachment-lg-fixed { + background-attachment: fixed; + } + .bgi-attachment-lg-scroll { + background-attachment: scroll; + } +} +@media (min-width: 1200px) { + .bgi-size-xl-auto { + background-size: auto; + } + .bgi-size-xl-cover { + background-size: cover; + } + .bgi-size-xl-contain { + background-size: contain; + } + .bgi-attachment-xl-fixed { + background-attachment: fixed; + } + .bgi-attachment-xl-scroll { + background-attachment: scroll; + } +} +@media (min-width: 1400px) { + .bgi-size-xxl-auto { + background-size: auto; + } + .bgi-size-xxl-cover { + background-size: cover; + } + .bgi-size-xxl-contain { + background-size: contain; + } + .bgi-attachment-xxl-fixed { + background-attachment: fixed; + } + .bgi-attachment-xxl-scroll { + background-attachment: scroll; + } +} +.border-active:not(.active):not(:active):not(:hover):not(:focus) { + border-color: transparent !important; +} + +.border-hover:not(:hover):not(:focus):not(.active):not(:active) { + cursor: pointer; + border-color: transparent !important; +} + +.border-gray-100 { + border-color: var(--bs-gray-100) !important; +} + +.border-gray-200 { + border-color: var(--bs-gray-200) !important; +} + +.border-gray-300 { + border-color: var(--bs-gray-300) !important; +} + +.border-gray-400 { + border-color: var(--bs-gray-400) !important; +} + +.border-gray-500 { + border-color: var(--bs-gray-500) !important; +} + +.border-gray-600 { + border-color: var(--bs-gray-600) !important; +} + +.border-gray-700 { + border-color: var(--bs-gray-700) !important; +} + +.border-gray-800 { + border-color: var(--bs-gray-800) !important; +} + +.border-gray-900 { + border-color: var(--bs-gray-900) !important; +} + +.border-hover-white:hover { + border-color: var(--bs-white) !important; +} + +.border-active-white.active { + border-color: var(--bs-white) !important; +} + +.border-hover-light:hover { + border-color: var(--bs-light) !important; +} + +.border-active-light.active { + border-color: var(--bs-light) !important; +} + +.border-hover-primary:hover { + border-color: var(--bs-primary) !important; +} + +.border-active-primary.active { + border-color: var(--bs-primary) !important; +} + +.border-hover-secondary:hover { + border-color: var(--bs-secondary) !important; +} + +.border-active-secondary.active { + border-color: var(--bs-secondary) !important; +} + +.border-hover-success:hover { + border-color: var(--bs-success) !important; +} + +.border-active-success.active { + border-color: var(--bs-success) !important; +} + +.border-hover-info:hover { + border-color: var(--bs-info) !important; +} + +.border-active-info.active { + border-color: var(--bs-info) !important; +} + +.border-hover-warning:hover { + border-color: var(--bs-warning) !important; +} + +.border-active-warning.active { + border-color: var(--bs-warning) !important; +} + +.border-hover-danger:hover { + border-color: var(--bs-danger) !important; +} + +.border-active-danger.active { + border-color: var(--bs-danger) !important; +} + +.border-hover-dark:hover { + border-color: var(--bs-dark) !important; +} + +.border-active-dark.active { + border-color: var(--bs-dark) !important; +} + +.border-hover-transparent:hover { + border-color: transparent !important; +} + +.border-dashed { + border-style: dashed !important; + border-color: var(--bs-border-dashed-color); +} + +.border-top-dashed { + border-top-style: dashed !important; +} + +.border-bottom-dashed { + border-bottom-style: dashed !important; +} + +.border-start-dashed { + border-left-style: dashed !important; +} + +.border-end-dashed { + border-right-style: dashed !important; +} + +.border-dotted { + border-style: dotted !important; +} + +.border-top-dotted { + border-top-style: dotted !important; +} + +.border-bottom-dotted { + border-bottom-style: dotted !important; +} + +.border-start-dotted { + border-left-style: dotted !important; +} + +.border-end-dotted { + border-right-style: dotted !important; +} + +.border-transparent { + border-color: transparent !important; +} + +.border-body { + border-color: var(--bs-body-bg) !important; +} + +.rounded-top-0 { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; +} + +.rounded-bottom-0 { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +.rounded-start-0 { + border-top-left-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} + +.rounded-end-0 { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.flex-root { + flex: 1; +} + +.flex-column-auto { + flex: none; +} + +.flex-column-fluid { + flex: 1 0 auto; +} + +.flex-row-auto { + flex: 0 0 auto; +} + +.flex-row-fluid { + flex: 1 auto; + min-width: 0; +} + +.flex-center { + justify-content: center; + align-items: center; +} + +.flex-start { + justify-content: start; + align-items: start; +} + +.flex-end { + justify-content: end; + align-items: end; +} + +.flex-stack { + justify-content: space-between; + align-items: center; +} + +@media (min-width: 576px) { + .flex-sm-root { + flex: 1; + } + .flex-sm-column-auto { + flex: none; + } + .flex-sm-column-fluid { + flex: 1 0 auto; + } + .flex-sm-row-auto { + flex: 0 0 auto; + } + .flex-sm-row-fluid { + flex: 1 auto; + min-width: 0; + } + .flex-sm-center { + justify-content: center; + align-items: center; + } + .flex-sm-start { + justify-content: start; + align-items: start; + } + .flex-sm-end { + justify-content: end; + align-items: end; + } + .flex-sm-stack { + justify-content: space-between; + align-items: center; + } +} +@media (min-width: 768px) { + .flex-md-root { + flex: 1; + } + .flex-md-column-auto { + flex: none; + } + .flex-md-column-fluid { + flex: 1 0 auto; + } + .flex-md-row-auto { + flex: 0 0 auto; + } + .flex-md-row-fluid { + flex: 1 auto; + min-width: 0; + } + .flex-md-center { + justify-content: center; + align-items: center; + } + .flex-md-start { + justify-content: start; + align-items: start; + } + .flex-md-end { + justify-content: end; + align-items: end; + } + .flex-md-stack { + justify-content: space-between; + align-items: center; + } +} +@media (min-width: 992px) { + .flex-lg-root { + flex: 1; + } + .flex-lg-column-auto { + flex: none; + } + .flex-lg-column-fluid { + flex: 1 0 auto; + } + .flex-lg-row-auto { + flex: 0 0 auto; + } + .flex-lg-row-fluid { + flex: 1 auto; + min-width: 0; + } + .flex-lg-center { + justify-content: center; + align-items: center; + } + .flex-lg-start { + justify-content: start; + align-items: start; + } + .flex-lg-end { + justify-content: end; + align-items: end; + } + .flex-lg-stack { + justify-content: space-between; + align-items: center; + } +} +@media (min-width: 1200px) { + .flex-xl-root { + flex: 1; + } + .flex-xl-column-auto { + flex: none; + } + .flex-xl-column-fluid { + flex: 1 0 auto; + } + .flex-xl-row-auto { + flex: 0 0 auto; + } + .flex-xl-row-fluid { + flex: 1 auto; + min-width: 0; + } + .flex-xl-center { + justify-content: center; + align-items: center; + } + .flex-xl-start { + justify-content: start; + align-items: start; + } + .flex-xl-end { + justify-content: end; + align-items: end; + } + .flex-xl-stack { + justify-content: space-between; + align-items: center; + } +} +@media (min-width: 1400px) { + .flex-xxl-root { + flex: 1; + } + .flex-xxl-column-auto { + flex: none; + } + .flex-xxl-column-fluid { + flex: 1 0 auto; + } + .flex-xxl-row-auto { + flex: 0 0 auto; + } + .flex-xxl-row-fluid { + flex: 1 auto; + min-width: 0; + } + .flex-xxl-center { + justify-content: center; + align-items: center; + } + .flex-xxl-start { + justify-content: start; + align-items: start; + } + .flex-xxl-end { + justify-content: end; + align-items: end; + } + .flex-xxl-stack { + justify-content: space-between; + align-items: center; + } +} +.flex-equal { + flex-grow: 1; + flex-basis: 0; + flex-shrink: 0; +} + +.shadow-xs { + box-shadow: var(--bs-box-shadow-xs); +} + +.shadow-sm { + box-shadow: var(--bs-box-shadow-sm); +} + +.shadow { + box-shadow: var(--bs-box-shadow); +} + +.shadow-lg { + box-shadow: var(--bs-box-shadow-lg); +} + +.text-white { + color: var(--bs-text-white) !important; +} + +.text-hover-white { + transition: color 0.2s ease; +} +.text-hover-white i { + transition: color 0.2s ease; +} +.text-hover-white:hover { + transition: color 0.2s ease; + color: var(--bs-text-white) !important; +} +.text-hover-white:hover i { + transition: color 0.2s ease; + color: var(--bs-text-white) !important; +} +.text-hover-white:hover .svg-icon { + color: var(--bs-text-white) !important; +} + +.text-active-white { + transition: color 0.2s ease; +} +.text-active-white i { + transition: color 0.2s ease; +} +.text-active-white.active { + transition: color 0.2s ease; + color: var(--bs-text-white) !important; +} +.text-active-white.active i { + transition: color 0.2s ease; + color: var(--bs-text-white) !important; +} +.text-active-white.active .svg-icon { + color: var(--bs-text-white) !important; +} + +.text-primary { + color: var(--bs-text-primary) !important; +} + +.text-inverse-primary { + color: var(--bs-primary-inverse) !important; +} + +.text-light-primary { + color: var(--bs-primary-light) !important; +} + +.text-hover-primary { + transition: color 0.2s ease; +} +.text-hover-primary i { + transition: color 0.2s ease; +} +.text-hover-primary:hover { + transition: color 0.2s ease; + color: var(--bs-text-primary) !important; +} +.text-hover-primary:hover i { + transition: color 0.2s ease; + color: var(--bs-text-primary) !important; +} +.text-hover-primary:hover .svg-icon { + color: var(--bs-text-primary) !important; +} + +.text-active-primary { + transition: color 0.2s ease; +} +.text-active-primary i { + transition: color 0.2s ease; +} +.text-active-primary.active { + transition: color 0.2s ease; + color: var(--bs-text-primary) !important; +} +.text-active-primary.active i { + transition: color 0.2s ease; + color: var(--bs-text-primary) !important; +} +.text-active-primary.active .svg-icon { + color: var(--bs-text-primary) !important; +} + +.text-secondary { + color: var(--bs-text-secondary) !important; +} + +.text-inverse-secondary { + color: var(--bs-secondary-inverse) !important; +} + +.text-light-secondary { + color: var(--bs-secondary-light) !important; +} + +.text-hover-secondary { + transition: color 0.2s ease; +} +.text-hover-secondary i { + transition: color 0.2s ease; +} +.text-hover-secondary:hover { + transition: color 0.2s ease; + color: var(--bs-text-secondary) !important; +} +.text-hover-secondary:hover i { + transition: color 0.2s ease; + color: var(--bs-text-secondary) !important; +} +.text-hover-secondary:hover .svg-icon { + color: var(--bs-text-secondary) !important; +} + +.text-active-secondary { + transition: color 0.2s ease; +} +.text-active-secondary i { + transition: color 0.2s ease; +} +.text-active-secondary.active { + transition: color 0.2s ease; + color: var(--bs-text-secondary) !important; +} +.text-active-secondary.active i { + transition: color 0.2s ease; + color: var(--bs-text-secondary) !important; +} +.text-active-secondary.active .svg-icon { + color: var(--bs-text-secondary) !important; +} + +.text-light { + color: var(--bs-text-light) !important; +} + +.text-inverse-light { + color: var(--bs-light-inverse) !important; +} + +.text-hover-light { + transition: color 0.2s ease; +} +.text-hover-light i { + transition: color 0.2s ease; +} +.text-hover-light:hover { + transition: color 0.2s ease; + color: var(--bs-text-light) !important; +} +.text-hover-light:hover i { + transition: color 0.2s ease; + color: var(--bs-text-light) !important; +} +.text-hover-light:hover .svg-icon { + color: var(--bs-text-light) !important; +} + +.text-active-light { + transition: color 0.2s ease; +} +.text-active-light i { + transition: color 0.2s ease; +} +.text-active-light.active { + transition: color 0.2s ease; + color: var(--bs-text-light) !important; +} +.text-active-light.active i { + transition: color 0.2s ease; + color: var(--bs-text-light) !important; +} +.text-active-light.active .svg-icon { + color: var(--bs-text-light) !important; +} + +.text-success { + color: var(--bs-text-success) !important; +} + +.text-inverse-success { + color: var(--bs-success-inverse) !important; +} + +.text-light-success { + color: var(--bs-success-light) !important; +} + +.text-hover-success { + transition: color 0.2s ease; +} +.text-hover-success i { + transition: color 0.2s ease; +} +.text-hover-success:hover { + transition: color 0.2s ease; + color: var(--bs-text-success) !important; +} +.text-hover-success:hover i { + transition: color 0.2s ease; + color: var(--bs-text-success) !important; +} +.text-hover-success:hover .svg-icon { + color: var(--bs-text-success) !important; +} + +.text-active-success { + transition: color 0.2s ease; +} +.text-active-success i { + transition: color 0.2s ease; +} +.text-active-success.active { + transition: color 0.2s ease; + color: var(--bs-text-success) !important; +} +.text-active-success.active i { + transition: color 0.2s ease; + color: var(--bs-text-success) !important; +} +.text-active-success.active .svg-icon { + color: var(--bs-text-success) !important; +} + +.text-info { + color: var(--bs-text-info) !important; +} + +.text-inverse-info { + color: var(--bs-info-inverse) !important; +} + +.text-light-info { + color: var(--bs-info-light) !important; +} + +.text-hover-info { + transition: color 0.2s ease; +} +.text-hover-info i { + transition: color 0.2s ease; +} +.text-hover-info:hover { + transition: color 0.2s ease; + color: var(--bs-text-info) !important; +} +.text-hover-info:hover i { + transition: color 0.2s ease; + color: var(--bs-text-info) !important; +} +.text-hover-info:hover .svg-icon { + color: var(--bs-text-info) !important; +} + +.text-active-info { + transition: color 0.2s ease; +} +.text-active-info i { + transition: color 0.2s ease; +} +.text-active-info.active { + transition: color 0.2s ease; + color: var(--bs-text-info) !important; +} +.text-active-info.active i { + transition: color 0.2s ease; + color: var(--bs-text-info) !important; +} +.text-active-info.active .svg-icon { + color: var(--bs-text-info) !important; +} + +.text-warning { + color: var(--bs-text-warning) !important; +} + +.text-inverse-warning { + color: var(--bs-warning-inverse) !important; +} + +.text-light-warning { + color: var(--bs-warning-light) !important; +} + +.text-hover-warning { + transition: color 0.2s ease; +} +.text-hover-warning i { + transition: color 0.2s ease; +} +.text-hover-warning:hover { + transition: color 0.2s ease; + color: var(--bs-text-warning) !important; +} +.text-hover-warning:hover i { + transition: color 0.2s ease; + color: var(--bs-text-warning) !important; +} +.text-hover-warning:hover .svg-icon { + color: var(--bs-text-warning) !important; +} + +.text-active-warning { + transition: color 0.2s ease; +} +.text-active-warning i { + transition: color 0.2s ease; +} +.text-active-warning.active { + transition: color 0.2s ease; + color: var(--bs-text-warning) !important; +} +.text-active-warning.active i { + transition: color 0.2s ease; + color: var(--bs-text-warning) !important; +} +.text-active-warning.active .svg-icon { + color: var(--bs-text-warning) !important; +} + +.text-danger { + color: var(--bs-text-danger) !important; +} + +.text-inverse-danger { + color: var(--bs-danger-inverse) !important; +} + +.text-light-danger { + color: var(--bs-danger-light) !important; +} + +.text-hover-danger { + transition: color 0.2s ease; +} +.text-hover-danger i { + transition: color 0.2s ease; +} +.text-hover-danger:hover { + transition: color 0.2s ease; + color: var(--bs-text-danger) !important; +} +.text-hover-danger:hover i { + transition: color 0.2s ease; + color: var(--bs-text-danger) !important; +} +.text-hover-danger:hover .svg-icon { + color: var(--bs-text-danger) !important; +} + +.text-active-danger { + transition: color 0.2s ease; +} +.text-active-danger i { + transition: color 0.2s ease; +} +.text-active-danger.active { + transition: color 0.2s ease; + color: var(--bs-text-danger) !important; +} +.text-active-danger.active i { + transition: color 0.2s ease; + color: var(--bs-text-danger) !important; +} +.text-active-danger.active .svg-icon { + color: var(--bs-text-danger) !important; +} + +.text-dark { + color: var(--bs-text-dark) !important; +} + +.text-inverse-dark { + color: var(--bs-dark-inverse) !important; +} + +.text-light-dark { + color: var(--bs-dark-light) !important; +} + +.text-hover-dark { + transition: color 0.2s ease; +} +.text-hover-dark i { + transition: color 0.2s ease; +} +.text-hover-dark:hover { + transition: color 0.2s ease; + color: var(--bs-text-dark) !important; +} +.text-hover-dark:hover i { + transition: color 0.2s ease; + color: var(--bs-text-dark) !important; +} +.text-hover-dark:hover .svg-icon { + color: var(--bs-text-dark) !important; +} + +.text-active-dark { + transition: color 0.2s ease; +} +.text-active-dark i { + transition: color 0.2s ease; +} +.text-active-dark.active { + transition: color 0.2s ease; + color: var(--bs-text-dark) !important; +} +.text-active-dark.active i { + transition: color 0.2s ease; + color: var(--bs-text-dark) !important; +} +.text-active-dark.active .svg-icon { + color: var(--bs-text-dark) !important; +} + +.text-muted { + color: var(--bs-text-muted) !important; +} + +.text-hover-muted { + transition: color 0.2s ease; +} +.text-hover-muted i { + transition: color 0.2s ease; +} +.text-hover-muted:hover { + transition: color 0.2s ease; + color: var(--bs-text-muted) !important; +} +.text-hover-muted:hover i { + transition: color 0.2s ease; + color: var(--bs-text-muted) !important; +} +.text-hover-muted:hover .svg-icon { + color: var(--bs-text-muted) !important; +} + +.text-active-muted { + transition: color 0.2s ease; +} +.text-active-muted i { + transition: color 0.2s ease; +} +.text-active-muted.active { + transition: color 0.2s ease; + color: var(--bs-text-muted) !important; +} +.text-active-muted.active i { + transition: color 0.2s ease; + color: var(--bs-text-muted) !important; +} +.text-active-muted.active .svg-icon { + color: var(--bs-text-muted) !important; +} + +.text-gray-100 { + color: var(--bs-text-gray-100) !important; +} + +.text-hover-gray-100 { + transition: color 0.2s ease; +} +.text-hover-gray-100 i { + transition: color 0.2s ease; +} +.text-hover-gray-100:hover { + transition: color 0.2s ease; + color: var(--bs-text-gray-100) !important; +} +.text-hover-gray-100:hover i { + transition: color 0.2s ease; + color: var(--bs-text-gray-100) !important; +} +.text-hover-gray-100:hover .svg-icon { + color: var(--bs-text-gray-100) !important; +} + +.text-active-gray-100 { + transition: color 0.2s ease; +} +.text-active-gray-100 i { + transition: color 0.2s ease; +} +.text-active-gray-100.active { + transition: color 0.2s ease; + color: var(--bs-text-gray-100) !important; +} +.text-active-gray-100.active i { + transition: color 0.2s ease; + color: var(--bs-text-gray-100) !important; +} +.text-active-gray-100.active .svg-icon { + color: var(--bs-text-gray-100) !important; +} + +.text-gray-200 { + color: var(--bs-text-gray-200) !important; +} + +.text-hover-gray-200 { + transition: color 0.2s ease; +} +.text-hover-gray-200 i { + transition: color 0.2s ease; +} +.text-hover-gray-200:hover { + transition: color 0.2s ease; + color: var(--bs-text-gray-200) !important; +} +.text-hover-gray-200:hover i { + transition: color 0.2s ease; + color: var(--bs-text-gray-200) !important; +} +.text-hover-gray-200:hover .svg-icon { + color: var(--bs-text-gray-200) !important; +} + +.text-active-gray-200 { + transition: color 0.2s ease; +} +.text-active-gray-200 i { + transition: color 0.2s ease; +} +.text-active-gray-200.active { + transition: color 0.2s ease; + color: var(--bs-text-gray-200) !important; +} +.text-active-gray-200.active i { + transition: color 0.2s ease; + color: var(--bs-text-gray-200) !important; +} +.text-active-gray-200.active .svg-icon { + color: var(--bs-text-gray-200) !important; +} + +.text-gray-300 { + color: var(--bs-text-gray-300) !important; +} + +.text-hover-gray-300 { + transition: color 0.2s ease; +} +.text-hover-gray-300 i { + transition: color 0.2s ease; +} +.text-hover-gray-300:hover { + transition: color 0.2s ease; + color: var(--bs-text-gray-300) !important; +} +.text-hover-gray-300:hover i { + transition: color 0.2s ease; + color: var(--bs-text-gray-300) !important; +} +.text-hover-gray-300:hover .svg-icon { + color: var(--bs-text-gray-300) !important; +} + +.text-active-gray-300 { + transition: color 0.2s ease; +} +.text-active-gray-300 i { + transition: color 0.2s ease; +} +.text-active-gray-300.active { + transition: color 0.2s ease; + color: var(--bs-text-gray-300) !important; +} +.text-active-gray-300.active i { + transition: color 0.2s ease; + color: var(--bs-text-gray-300) !important; +} +.text-active-gray-300.active .svg-icon { + color: var(--bs-text-gray-300) !important; +} + +.text-gray-400 { + color: var(--bs-text-gray-400) !important; +} + +.text-hover-gray-400 { + transition: color 0.2s ease; +} +.text-hover-gray-400 i { + transition: color 0.2s ease; +} +.text-hover-gray-400:hover { + transition: color 0.2s ease; + color: var(--bs-text-gray-400) !important; +} +.text-hover-gray-400:hover i { + transition: color 0.2s ease; + color: var(--bs-text-gray-400) !important; +} +.text-hover-gray-400:hover .svg-icon { + color: var(--bs-text-gray-400) !important; +} + +.text-active-gray-400 { + transition: color 0.2s ease; +} +.text-active-gray-400 i { + transition: color 0.2s ease; +} +.text-active-gray-400.active { + transition: color 0.2s ease; + color: var(--bs-text-gray-400) !important; +} +.text-active-gray-400.active i { + transition: color 0.2s ease; + color: var(--bs-text-gray-400) !important; +} +.text-active-gray-400.active .svg-icon { + color: var(--bs-text-gray-400) !important; +} + +.text-gray-500 { + color: var(--bs-text-gray-500) !important; +} + +.text-hover-gray-500 { + transition: color 0.2s ease; +} +.text-hover-gray-500 i { + transition: color 0.2s ease; +} +.text-hover-gray-500:hover { + transition: color 0.2s ease; + color: var(--bs-text-gray-500) !important; +} +.text-hover-gray-500:hover i { + transition: color 0.2s ease; + color: var(--bs-text-gray-500) !important; +} +.text-hover-gray-500:hover .svg-icon { + color: var(--bs-text-gray-500) !important; +} + +.text-active-gray-500 { + transition: color 0.2s ease; +} +.text-active-gray-500 i { + transition: color 0.2s ease; +} +.text-active-gray-500.active { + transition: color 0.2s ease; + color: var(--bs-text-gray-500) !important; +} +.text-active-gray-500.active i { + transition: color 0.2s ease; + color: var(--bs-text-gray-500) !important; +} +.text-active-gray-500.active .svg-icon { + color: var(--bs-text-gray-500) !important; +} + +.text-gray-600 { + color: var(--bs-text-gray-600) !important; +} + +.text-hover-gray-600 { + transition: color 0.2s ease; +} +.text-hover-gray-600 i { + transition: color 0.2s ease; +} +.text-hover-gray-600:hover { + transition: color 0.2s ease; + color: var(--bs-text-gray-600) !important; +} +.text-hover-gray-600:hover i { + transition: color 0.2s ease; + color: var(--bs-text-gray-600) !important; +} +.text-hover-gray-600:hover .svg-icon { + color: var(--bs-text-gray-600) !important; +} + +.text-active-gray-600 { + transition: color 0.2s ease; +} +.text-active-gray-600 i { + transition: color 0.2s ease; +} +.text-active-gray-600.active { + transition: color 0.2s ease; + color: var(--bs-text-gray-600) !important; +} +.text-active-gray-600.active i { + transition: color 0.2s ease; + color: var(--bs-text-gray-600) !important; +} +.text-active-gray-600.active .svg-icon { + color: var(--bs-text-gray-600) !important; +} + +.text-gray-700 { + color: var(--bs-text-gray-700) !important; +} + +.text-hover-gray-700 { + transition: color 0.2s ease; +} +.text-hover-gray-700 i { + transition: color 0.2s ease; +} +.text-hover-gray-700:hover { + transition: color 0.2s ease; + color: var(--bs-text-gray-700) !important; +} +.text-hover-gray-700:hover i { + transition: color 0.2s ease; + color: var(--bs-text-gray-700) !important; +} +.text-hover-gray-700:hover .svg-icon { + color: var(--bs-text-gray-700) !important; +} + +.text-active-gray-700 { + transition: color 0.2s ease; +} +.text-active-gray-700 i { + transition: color 0.2s ease; +} +.text-active-gray-700.active { + transition: color 0.2s ease; + color: var(--bs-text-gray-700) !important; +} +.text-active-gray-700.active i { + transition: color 0.2s ease; + color: var(--bs-text-gray-700) !important; +} +.text-active-gray-700.active .svg-icon { + color: var(--bs-text-gray-700) !important; +} + +.text-gray-800 { + color: var(--bs-text-gray-800) !important; +} + +.text-hover-gray-800 { + transition: color 0.2s ease; +} +.text-hover-gray-800 i { + transition: color 0.2s ease; +} +.text-hover-gray-800:hover { + transition: color 0.2s ease; + color: var(--bs-text-gray-800) !important; +} +.text-hover-gray-800:hover i { + transition: color 0.2s ease; + color: var(--bs-text-gray-800) !important; +} +.text-hover-gray-800:hover .svg-icon { + color: var(--bs-text-gray-800) !important; +} + +.text-active-gray-800 { + transition: color 0.2s ease; +} +.text-active-gray-800 i { + transition: color 0.2s ease; +} +.text-active-gray-800.active { + transition: color 0.2s ease; + color: var(--bs-text-gray-800) !important; +} +.text-active-gray-800.active i { + transition: color 0.2s ease; + color: var(--bs-text-gray-800) !important; +} +.text-active-gray-800.active .svg-icon { + color: var(--bs-text-gray-800) !important; +} + +.text-gray-900 { + color: var(--bs-text-gray-900) !important; +} + +.text-hover-gray-900 { + transition: color 0.2s ease; +} +.text-hover-gray-900 i { + transition: color 0.2s ease; +} +.text-hover-gray-900:hover { + transition: color 0.2s ease; + color: var(--bs-text-gray-900) !important; +} +.text-hover-gray-900:hover i { + transition: color 0.2s ease; + color: var(--bs-text-gray-900) !important; +} +.text-hover-gray-900:hover .svg-icon { + color: var(--bs-text-gray-900) !important; +} + +.text-active-gray-900 { + transition: color 0.2s ease; +} +.text-active-gray-900 i { + transition: color 0.2s ease; +} +.text-active-gray-900.active { + transition: color 0.2s ease; + color: var(--bs-text-gray-900) !important; +} +.text-active-gray-900.active i { + transition: color 0.2s ease; + color: var(--bs-text-gray-900) !important; +} +.text-active-gray-900.active .svg-icon { + color: var(--bs-text-gray-900) !important; +} + +.parent-hover .parent-hover-white { + transition: color 0.2s ease; +} +.parent-hover:hover .parent-hover-white { + transition: color 0.2s ease; + color: var(--bs-text-white) !important; +} +.parent-hover .parent-hover-primary { + transition: color 0.2s ease; +} +.parent-hover:hover .parent-hover-primary { + transition: color 0.2s ease; + color: var(--bs-text-primary) !important; +} +.parent-hover .parent-hover-secondary { + transition: color 0.2s ease; +} +.parent-hover:hover .parent-hover-secondary { + transition: color 0.2s ease; + color: var(--bs-text-secondary) !important; +} +.parent-hover .parent-hover-light { + transition: color 0.2s ease; +} +.parent-hover:hover .parent-hover-light { + transition: color 0.2s ease; + color: var(--bs-text-light) !important; +} +.parent-hover .parent-hover-success { + transition: color 0.2s ease; +} +.parent-hover:hover .parent-hover-success { + transition: color 0.2s ease; + color: var(--bs-text-success) !important; +} +.parent-hover .parent-hover-info { + transition: color 0.2s ease; +} +.parent-hover:hover .parent-hover-info { + transition: color 0.2s ease; + color: var(--bs-text-info) !important; +} +.parent-hover .parent-hover-warning { + transition: color 0.2s ease; +} +.parent-hover:hover .parent-hover-warning { + transition: color 0.2s ease; + color: var(--bs-text-warning) !important; +} +.parent-hover .parent-hover-danger { + transition: color 0.2s ease; +} +.parent-hover:hover .parent-hover-danger { + transition: color 0.2s ease; + color: var(--bs-text-danger) !important; +} +.parent-hover .parent-hover-dark { + transition: color 0.2s ease; +} +.parent-hover:hover .parent-hover-dark { + transition: color 0.2s ease; + color: var(--bs-text-dark) !important; +} +.parent-hover .parent-hover-muted { + transition: color 0.2s ease; +} +.parent-hover:hover .parent-hover-muted { + transition: color 0.2s ease; + color: var(--bs-text-muted) !important; +} +.parent-hover .parent-hover-gray-100 { + transition: color 0.2s ease; +} +.parent-hover:hover .parent-hover-gray-100 { + transition: color 0.2s ease; + color: var(--bs-text-gray-100) !important; +} +.parent-hover .parent-hover-gray-200 { + transition: color 0.2s ease; +} +.parent-hover:hover .parent-hover-gray-200 { + transition: color 0.2s ease; + color: var(--bs-text-gray-200) !important; +} +.parent-hover .parent-hover-gray-300 { + transition: color 0.2s ease; +} +.parent-hover:hover .parent-hover-gray-300 { + transition: color 0.2s ease; + color: var(--bs-text-gray-300) !important; +} +.parent-hover .parent-hover-gray-400 { + transition: color 0.2s ease; +} +.parent-hover:hover .parent-hover-gray-400 { + transition: color 0.2s ease; + color: var(--bs-text-gray-400) !important; +} +.parent-hover .parent-hover-gray-500 { + transition: color 0.2s ease; +} +.parent-hover:hover .parent-hover-gray-500 { + transition: color 0.2s ease; + color: var(--bs-text-gray-500) !important; +} +.parent-hover .parent-hover-gray-600 { + transition: color 0.2s ease; +} +.parent-hover:hover .parent-hover-gray-600 { + transition: color 0.2s ease; + color: var(--bs-text-gray-600) !important; +} +.parent-hover .parent-hover-gray-700 { + transition: color 0.2s ease; +} +.parent-hover:hover .parent-hover-gray-700 { + transition: color 0.2s ease; + color: var(--bs-text-gray-700) !important; +} +.parent-hover .parent-hover-gray-800 { + transition: color 0.2s ease; +} +.parent-hover:hover .parent-hover-gray-800 { + transition: color 0.2s ease; + color: var(--bs-text-gray-800) !important; +} +.parent-hover .parent-hover-gray-900 { + transition: color 0.2s ease; +} +.parent-hover:hover .parent-hover-gray-900 { + transition: color 0.2s ease; + color: var(--bs-text-gray-900) !important; +} + +.text-transparent { + color: transparent; +} + +.cursor-pointer { + cursor: pointer; +} + +.cursor-default { + cursor: default; +} + +.cursor-move { + cursor: move; +} + +i.bi, i[class^=fonticon-], i[class*=" fonticon-"], i[class^=fa-], i[class*=" fa-"], i[class^=la-], i[class*=" la-"] { + line-height: 1; + font-size: 1rem; + color: var(--bs-text-muted); +} + +a { + transition: color 0.2s ease; +} +a:hover { + transition: color 0.2s ease; +} + +.opacity-active-0.active { + opacity: 0 !important; +} + +.opacity-state-0:hover, .opacity-state-0.active { + opacity: 0 !important; +} + +.opacity-active-5.active { + opacity: 0.05 !important; +} + +.opacity-state-5:hover, .opacity-state-5.active { + opacity: 0.05 !important; +} + +.opacity-active-10.active { + opacity: 0.1 !important; +} + +.opacity-state-10:hover, .opacity-state-10.active { + opacity: 0.1 !important; +} + +.opacity-active-15.active { + opacity: 0.15 !important; +} + +.opacity-state-15:hover, .opacity-state-15.active { + opacity: 0.15 !important; +} + +.opacity-active-20.active { + opacity: 0.2 !important; +} + +.opacity-state-20:hover, .opacity-state-20.active { + opacity: 0.2 !important; +} + +.opacity-active-25.active { + opacity: 0.25 !important; +} + +.opacity-state-25:hover, .opacity-state-25.active { + opacity: 0.25 !important; +} + +.opacity-active-50.active { + opacity: 0.5 !important; +} + +.opacity-state-50:hover, .opacity-state-50.active { + opacity: 0.5 !important; +} + +.opacity-active-75.active { + opacity: 0.75 !important; +} + +.opacity-state-75:hover, .opacity-state-75.active { + opacity: 0.75 !important; +} + +.opacity-active-100.active { + opacity: 1 !important; +} + +.opacity-state-100:hover, .opacity-state-100.active { + opacity: 1 !important; +} + +.transform-90 { + transform: rotate(90deg); + transform-origin: right top; +} + +.stepper.stepper-pills.stepper-multistep { + --bs-stepper-pills-size: 46px; + --bs-stepper-icon-border-radius: 9px; + --bs-stepper-icon-check-size: 1.25rem; + --bs-stepper-icon-bg-color: rgba(255, 255, 255, 0.03); + --bs-stepper-icon-bg-color-current: var(--bs-success); + --bs-stepper-icon-bg-color-completed: rgba(255, 255, 255, 0.03); + --bs-stepper-icon-border: 1px dashed rgba(255, 255, 255, 0.3); + --bs-stepper-icon-border-current: 0; + --bs-stepper-icon-border-completed: 1px dashed rgba(255, 255, 255, 0.3); + --bs-stepper-icon-number-color: var(--bs-white); + --bs-stepper-icon-number-color-current: var(--bs-white); + --bs-stepper-icon-number-color-completed: var(--bs-white); + --bs-stepper-icon-check-color-completed: var(--bs-success); + --bs-stepper-label-title-opacity: 0.7; + --bs-stepper-label-title-opacity-current: 1; + --bs-stepper-label-title-opacity-completed: 1; + --bs-stepper-label-title-color: var(--bs-white); + --bs-stepper-label-title-color-current: var(--bs-white); + --bs-stepper-label-title-color-completed: var(--bs-white); + --bs-stepper-label-desc-opacity: 0.7; + --bs-stepper-label-desc-opacity-current: 0.7; + --bs-stepper-label-desc-opacity-completed: 0.7; + --bs-stepper-label-desc-color: var(--bs-white); + --bs-stepper-label-desc-color-current: var(--bs-white); + --bs-stepper-label-desc-color-completed: var(--bs-white); + --bs-stepper-line-border: 1px dashed rgba(255, 255, 255, 0.3); +} + +.landing-dark-bg { + background-color: #13263C; +} + +.landing-dark-color { + color: #13263C; +} + +.landing-dark-border { + border: 1px dashed #2C3F5B; +} + +.landing-dark-separator { + border-top: 1px dashed #2C3F5B; +} + +.landing-curve { + position: relative; +} +.landing-curve svg { + position: relative; + top: 0; + display: block; +} + +.landing-header { + display: flex; + align-items: center; + height: 100px; +} +.landing-header .logo-default { + display: block; +} +.landing-header .logo-sticky { + display: none; +} +.landing-header .menu .menu-link.active { + color: #ffffff; +} +[data-kt-sticky-landing-header=on] .landing-header .menu .menu-link.active { + color: #009ef7; + background-color: rgba(239, 242, 245, 0.4); +} +[data-kt-sticky-landing-header=on] .landing-header { + padding: 0; + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 100; + background-color: #ffffff; + box-shadow: 0px 10px 30px 0px rgba(82, 63, 105, 0.05); + height: 70px; +} +[data-kt-sticky-landing-header=on] .landing-header .logo-sticky { + display: block; +} +[data-kt-sticky-landing-header=on] .landing-header .logo-default { + display: none; +} + +body[data-kt-sticky-landing-header=on] { + padding-top: 100px; +} + +@media (max-width: 991.98px) { + .landing-header { + height: 70px; + } + .landing-header .landing-menu-wrapper { + position: relative; + overflow: auto; + } + [data-kt-sticky-landing-header=on] .landing-header { + height: 70px; + } + .landing-header .menu .menu-link.active { + color: #009ef7; + background-color: rgba(239, 242, 245, 0.4); + } + body[data-kt-sticky-landing-header=on] { + padding-top: 70px; + } +} +[data-bs-theme=light] { + --bs-app-bg-color: #f5f8fa; + --bs-app-blank-bg-color: #ffffff; + --bs-app-header-base-bg-color: #ffffff; + --bs-app-header-base-box-shadow: 0px 10px 30px 0px rgba(82, 63, 105, 0.05); + --bs-app-toolbar-base-bg-color: #ffffff; + --bs-app-toolbar-base-box-shadow: 0px 10px 30px 0px rgba(82, 63, 105, 0.05); + --bs-app-toolbar-base-border-top: 1px solid #F4F4F4; + --bs-app-footer-bg-color: #ffffff; + --bs-app-footer-box-shadow: 0px 10px 30px 0px rgba(82, 63, 105, 0.05); +} + +[data-bs-theme=dark] { + --bs-app-bg-color: #151521; + --bs-app-blank-bg-color: #151521; + --bs-app-header-base-bg-color: #1e1e2d; + --bs-app-header-base-box-shadow: none; + --bs-app-toolbar-base-bg-color: #1a1a27; + --bs-app-toolbar-base-box-shadow: none; + --bs-app-toolbar-base-border-top: 0; + --bs-app-footer-bg-color: #1e1e2d; + --bs-app-footer-box-shadow: none; +} + +html { + font-family: sans-serif; + text-size-adjust: 100%; +} + +html, +body { + height: 100%; + margin: 0px; + padding: 0px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-size: 13px !important; + font-weight: 400; + font-family: Inter, Helvetica, "sans-serif"; +} +@media (max-width: 991.98px) { + html, +body { + font-size: 12px !important; + } +} +@media (max-width: 767.98px) { + html, +body { + font-size: 12px !important; + } +} + +body { + display: flex; + flex-direction: column; +} +body a:hover, +body a:active, +body a:focus { + text-decoration: none !important; +} + +canvas { + user-select: none; +} + +router-outlet { + display: none; +} + +body, +.app-default { + background-color: var(--bs-app-bg-color); +} + +.app-blank { + background-color: var(--bs-app-blank-bg-color); +} + +[data-kt-app-reset-transition=true] * { + transition: none !important; +} + +.app-page { + display: flex; +} + +[data-kt-app-page-loading=on] { + overflow: hidden; +} + +[data-kt-app-page-loading=on] * { + transition: none !important; +} + +.app-page-loader { + background: var(--bs-body-bg); + color: var(--bs-body-color); + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 10000; + display: none; +} +[data-kt-app-page-loading=on] .app-page-loader { + display: flex; + justify-content: center; + align-items: center; +} + +@media (min-width: 992px) { + .app-container { + padding-left: 30px !important; + padding-right: 30px !important; + } + .app-container-fit-desktop { + padding-left: 0 !important; + padding-right: 0 !important; + } +} +@media (max-width: 991.98px) { + .app-container { + max-width: none; + padding-left: 20px !important; + padding-right: 20px !important; + } + .app-container-fit-mobile { + padding-left: 0 !important; + padding-right: 0 !important; + } +} +@media print { + .app-print-content-only { + padding: 0 !important; + background: none !important; + } + .app-print-content-only .app-wrapper, +.app-print-content-only .app-page, +.app-print-content-only .app-page-title, +.app-print-content-only .app-content, +.app-print-content-only .app-container { + background: none !important; + padding: 0 !important; + margin: 0 !important; + } + .app-print-content-only .app-aside, +.app-print-content-only .app-aside-panel, +.app-print-content-only .app-sidebar, +.app-print-content-only .app-sidebar-panel, +.app-print-content-only .app-header, +.app-print-content-only .app-footer, +.app-print-content-only .app-toolbar, +.app-print-content-only .drawer, +.app-print-content-only .scrolltop, +.app-print-content-only .btn { + display: none !important; + } +} +.app-navbar { + display: flex; + align-items: stretch; +} +.app-navbar .app-navbar-item { + display: flex; + align-items: center; +} +.app-navbar.app-navbar-stretch .app-navbar-item { + align-items: stretch; +} + +.app-header { + transition: none; + display: flex; + align-items: stretch; + background-color: var(--bs-app-header-base-bg-color); + box-shadow: var(--bs-app-header-base-box-shadow); + border-bottom: var(--bs-app-header-base-border-bottom); +} + +@media (min-width: 992px) { + :root { + --bs-app-header-height: 70px; + --bs-app-header-height-actual: 70px; + } + [data-kt-app-header-sticky=on] { + --bs-app-header-height: 70px; + --bs-app-header-height-actual: 70px; + } + [data-kt-app-header-sticky=on][data-kt-app-header-stacked=true] { + --bs-app-header-height: calc(var(--bs-app-header-primary-height, 0px) + var(--bs-app-header-secondary-height, 0px) + var(--bs-app-header-tertiary-height, 0px)); + --bs-app-header-height-actual: calc(70px + 70px + 70px); + } + [data-kt-app-header-minimize=on] { + --bs-app-header-height: 70px; + } + .app-header { + height: var(--bs-app-header-height); + } + [data-kt-app-header-fixed=true] .app-header { + z-index: 100; + position: fixed; + left: 0; + right: 0; + top: 0; + } + [data-kt-app-header-static=true] .app-header { + position: relative; + } + [data-kt-app-header-stacked=true] .app-header { + flex-direction: column; + height: calc(var(--bs-app-header-primary-height) + var(--bs-app-header-secondary-height, 0px) + var(--bs-app-header-tertiary-height, 0px)); + } + [data-kt-app-header-sticky=on] .app-header { + position: fixed; + left: 0; + right: 0; + top: 0; + z-index: 100; + background-color: var(--bs-app-header-sticky-bg-color); + box-shadow: var(--bs-app-header-sticky-box-shadow); + border-bottom: var(--bs-app-header-sticky-border-bottom); + } + [data-kt-app-header-minimize=on] .app-header { + transition: none; + z-index: 100; + background-color: var(--bs-app-header-minimize-bg-color); + box-shadow: var(--bs-app-header-minimize-box-shadow); + border-bottom: var(--bs-app-header-minimize-border-bottom); + } + .app-header .app-header-mobile-drawer { + display: flex; + } + [data-kt-app-header-fixed=true][data-kt-app-sidebar-fixed=true][data-kt-app-sidebar-push-header=true] .app-header, [data-kt-app-header-fixed=true][data-kt-app-sidebar-sticky=on][data-kt-app-sidebar-push-header=true] .app-header { + left: calc(var(--bs-app-sidebar-width) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px)); + } + body:not([data-kt-app-header-fixed=true])[data-kt-app-sidebar-fixed=true][data-kt-app-sidebar-push-header=true] .app-header, body:not([data-kt-app-header-fixed=true])[data-kt-app-sidebar-sticky=on][data-kt-app-sidebar-push-header=true] .app-header { + margin-left: calc(var(--bs-app-sidebar-width) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px)); + } + [data-kt-app-header-fixed=true][data-kt-app-sidebar-panel-fixed=true][data-kt-app-sidebar-panel-push-header=true] .app-header, [data-kt-app-header-fixed=true][data-kt-app-sidebar-panel-sticky=on][data-kt-app-sidebar-panel-push-header=true] .app-header { + left: calc(var(--bs-app-sidebar-width) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px) + var(--bs-app-sidebar-panel-width) + var(--bs-app-sidebar-panel-gap-start, 0px) + var(--bs-app-sidebar-panel-gap-end, 0px)); + } + body:not([data-kt-app-header-fixed=true])[data-kt-app-sidebar-panel-fixed=true][data-kt-app-sidebar-panel-push-header=true] .app-header, body:not([data-kt-app-header-fixed=true])[data-kt-app-sidebar-panel-sticky=on][data-kt-app-sidebar-panel-push-header=true] .app-header { + margin-left: calc(var(--bs-app-sidebar-width) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px) + var(--bs-app-sidebar-panel-width) + var(--bs-app-sidebar-panel-gap-start, 0px) + var(--bs-app-sidebar-panel-gap-end, 0px)); + } + [data-kt-app-header-fixed=true][data-kt-app-toolbar-fixed=true] .app-header { + box-shadow: none; + } +} +@media (max-width: 991.98px) { + :root { + --bs-app-header-height: 60px; + } + [data-kt-app-header-sticky=on] { + --bs-app-header-height: 70px; + --bs-app-header-height-actual: 70px; + } + [data-kt-app-header-minimize=on] { + --bs-app-header-height: 70px; + --bs-app-header-height-actual: 70px; + } + .app-header { + height: var(--bs-app-header-height); + align-items: stretch; + } + .app-header .app-header-mobile-drawer { + display: none; + } + [data-kt-app-header-stacked=true] .app-header { + flex-direction: column; + height: calc(var(--bs-app-header-primary-height) + var(--bs-app-header-secondary-height, 0px) + var(--bs-app-header-tertiary-height, 0px)); + } + [data-kt-app-header-fixed-mobile=true] .app-header { + z-index: 100; + transition: none; + position: fixed; + left: 0; + right: 0; + top: 0; + } + [data-kt-app-header-sticky=on] .app-header { + position: fixed; + left: 0; + right: 0; + top: 0; + z-index: 100; + background-color: var(--bs-app-header-sticky-bg-color); + box-shadow: var(--bs-app-header-sticky-box-shadow); + border-bottom: var(--bs-app-header-sticky-border-bottom); + } + [data-kt-app-header-minimize=on] .app-header { + z-index: 100; + transition: none; + background-color: var(--bs-app-header-minimize-bg-color); + box-shadow: var(--bs-app-header-minimize-box-shadow); + border-bottom: var(--bs-app-header-minimize-border-bottom); + } + [data-kt-app-header-fixed-mobile=true][data-kt-app-toolbar-fixed-mobile=true] .app-header { + box-shadow: none; + } + [data-kt-app-header-fixed-mobile=true][data-kt-app-toolbar-sticky=on] .app-header { + box-shadow: none; + } +} +.app-header-primary { + transition: none; + display: flex; + align-items: stretch; +} + +@media (min-width: 992px) { + .app-header-primary { + background-color: var(--bs-app-header-primary-base-bg-color); + box-shadow: var(--bs-app-header-primary-base-box-shadow); + border-bottom: var(--bs-app-header-primary-base-border-bottom); + } + [data-kt-app-header-primary-enabled=true] { + --bs-app-header-primary-height: 70px; + } + [data-kt-app-header-primary-enabled=true][data-kt-app-header-sticky=on] { + --bs-app-header-primary-height: 70px; + } + [data-kt-app-header-primary-enabled=true][data-kt-app-header-minimize=on] { + --bs-app-header-primary-height: 70px; + } + [data-kt-app-header-primary-enabled=true][data-kt-app-header-sticky=on][data-kt-app-header-primary-sticky-hide=true] { + --bs-app-header-primary-height: 0; + } + .app-header-primary { + height: var(--bs-app-header-primary-height); + } + [data-kt-app-header-primary-fixed=true] .app-header-primary { + z-index: 100; + position: fixed; + left: 0; + right: 0; + top: 0; + } + [data-kt-app-header-primary-static=true] .app-header-primary { + position: relative; + } + [data-kt-app-header-primary-sticky=on] .app-header-primary { + position: fixed; + left: 0; + right: 0; + top: 0; + height: 70px; + z-index: 100; + background-color: var(--bs-app-header-primary-sticky-bg-color); + box-shadow: var(--bs-app-header-primary-sticky-box-shadow); + border-bottom: var(--bs-app-header-primary-sticky-border-bottom); + } + [data-kt-app-header-primary-minimize=on] .app-header-primary { + transition: none; + height: 70px; + z-index: 100; + background-color: var(--bs-app-header-primary-minimize-bg-color); + box-shadow: var(--bs-app-header-primary-minimize-box-shadow); + border-bottom: var(--bs-app-header-primary-minimize-border-bottom); + } + [data-kt-app-header-sticky=on][data-kt-app-header-primary-sticky-hide=true] .app-header-primary { + display: none !important; + } + [data-kt-app-header-primary-enabled=true][data-kt-app-sidebar-fixed=true][data-kt-app-sidebar-push-header=true] .app-header-primary { + left: calc(var(--bs-app-sidebar-width) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px)); + } + [data-kt-app-header-primary-enabled=true][data-kt-app-sidebar-panel-fixed=true][data-kt-app-sidebar-panel-push-header=true] .app-header-primary { + left: calc(var(--bs-app-sidebar-width) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px) + var(--bs-app-sidebar-panel-width) + var(--bs-app-sidebar-panel-gap-start, 0px) + var(--bs-app-sidebar-panel-gap-end, 0px)); + } +} +@media (max-width: 991.98px) { + .app-header .app-header-primary { + flex-grow: 1; + height: var(--bs-app-header-primary-height); + border-bottom: var(--bs-app-header-primary-base-border-bottom); + box-shadow: var(--bs-app-header-primary-base-box-shadow); + } + .app-header-primary { + background-color: var(--bs-app-header-primary-base-bg-color); + } + [data-kt-app-header-primary-enabled=true] { + --bs-app-header-primary-height: 60px; + } + [data-kt-app-header-primary-enabled=true][data-kt-app-header-sticky=on] { + --bs-app-header-primary-height: 60px; + } + [data-kt-app-header-primary-enabled=true][data-kt-app-header-minimize=on] { + --bs-app-header-primary-height: 60px; + } +} +.app-header-secondary { + transition: none; + display: flex; + align-items: stretch; +} + +@media (min-width: 992px) { + .app-header-secondary { + background-color: var(--bs-app-header-secondary-base-bg-color); + box-shadow: var(--bs-app-header-secondary-base-box-shadow); + border-top: var(--bs-app-header-secondary-base-border-top); + border-bottom: var(--bs-app-header-secondary-base-border-bottom); + } + [data-kt-app-header-secondary-enabled=true] { + --bs-app-header-secondary-height: 70px; + } + [data-kt-app-header-secondary-enabled=true][data-kt-app-header-sticky=on] { + --bs-app-header-secondary-height: 70px; + } + [data-kt-app-header-secondary-enabled=true][data-kt-app-header-minimize=on] { + --bs-app-header-secondary-height: 70px; + } + [data-kt-app-header-secondary-enabled=true][data-kt-app-header-sticky=on][data-kt-app-header-secondary-sticky-hide=true] { + --bs-app-header-secondary-height: 0; + } + .app-header-secondary { + height: var(--bs-app-header-secondary-height); + } + [data-kt-app-header-secondary-fixed=true] .app-header-secondary { + z-index: 100; + position: fixed; + left: 0; + right: 0; + top: 0; + } + [data-kt-app-header-secondary-static=true] .app-header-secondary { + position: static; + } + [data-kt-app-header-secondary-sticky=on] .app-header-secondary { + transition: none; + position: fixed; + left: 0; + right: 0; + top: 0; + height: 70px; + z-index: 100; + background-color: var(--bs-app-header-secondary-sticky-bg-color); + box-shadow: var(--bs-app-header-secondary-sticky-box-shadow); + border-bottom: var(--bs-app-header-secondary-sticky-border-bottom); + } + [data-kt-app-header-secondary-minimize=on] .app-header-secondary { + transition: none; + height: 70px; + z-index: 100; + background-color: var(--bs-app-header-secondary-minimize-bg-color); + box-shadow: var(--bs-app-header-secondary-minimize-box-shadow); + border-bottom: var(--bs-app-header-secondary-minimize-border-bottom); + } + [data-kt-app-header-sticky=on][data-kt-app-header-secondary-sticky-hide=true] .app-header-secondary { + display: none !important; + } + [data-kt-app-header-secondary-enabled=true][data-kt-app-sidebar-fixed=true][data-kt-app-sidebar-push-header=true] .app-header-secondary { + left: calc(var(--bs-app-sidebar-width) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px)); + } + [data-kt-app-header-secondary-enabled=true][data-kt-app-sidebar-panel-fixed=true][data-kt-app-sidebar-panel-push-header=true] .app-header-secondary { + left: calc(var(--bs-app-sidebar-width) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px) + var(--bs-app-sidebar-panel-width) + var(--bs-app-sidebar-panel-gap-start, 0px) + var(--bs-app-sidebar-panel-gap-end, 0px)); + } +} +@media (max-width: 991.98px) { + .app-header .app-header-secondary { + flex-grow: 1; + height: var(--bs-app-header-secondary-height); + box-shadow: var(--bs-app-header-secondary-base-box-shadow); + border-top: var(--bs-app-header-secondary-base-border-top); + border-bottom: var(--bs-app-header-secondary-base-border-bottom); + } + .app-header-secondary { + background-color: var(--bs-app-header-secondary-base-bg-color); + } + [data-kt-app-header-secondary-enabled=true] { + --bs-app-header-secondary-height: 60px; + } + [data-kt-app-header-secondary-enabled=true][data-kt-app-header-sticky=on] { + --bs-app-header-secondary-height: 60px; + } + [data-kt-app-header-secondary-enabled=true][data-kt-app-header-minimize=on] { + --bs-app-header-secondary-height: 60px; + } +} +.app-header-tertiary { + transition: none; + display: flex; + align-items: stretch; +} + +@media (min-width: 992px) { + .app-header-tertiary { + background-color: var(--bs-app-header-tertiary-base-bg-color); + box-shadow: var(--bs-app-header-tertiary-base-box-shadow); + border-top: var(--bs-app-header-tertiary-base-border-top); + border-bottom: var(--bs-app-header-tertiary-base-border-bottom); + } + [data-kt-app-header-tertiary-enabled=true] { + --bs-app-header-tertiary-height: 70px; + } + [data-kt-app-header-tertiary-enabled=true][data-kt-app-header-sticky=on] { + --bs-app-header-tertiary-height: 70px; + } + [data-kt-app-header-tertiary-enabled=true][data-kt-app-header-minimize=on] { + --bs-app-header-tertiary-height: 70px; + } + [data-kt-app-header-tertiary-enabled=true][data-kt-app-header-sticky=on][data-kt-app-header-tertiary-sticky-hide=true] { + --bs-app-header-tertiary-height: 0; + } + .app-header-tertiary { + height: var(--bs-app-header-tertiary-height); + } + [data-kt-app-header-tertiary-fixed=true] .app-header-tertiary { + z-index: 100; + position: fixed; + left: 0; + right: 0; + top: 0; + } + [data-kt-app-header-tertiary-static=true] .app-header-tertiary { + position: static; + } + [data-kt-app-header-tertiary-sticky=on] .app-header-tertiary { + transition: none; + position: fixed; + left: 0; + right: 0; + top: 0; + height: 70px; + z-index: 100; + background-color: var(--bs-app-header-tertiary-sticky-bg-color); + box-shadow: var(--bs-app-header-tertiary-sticky-box-shadow); + border-bottom: var(--bs-app-header-tertiary-sticky-border-bottom); + } + [data-kt-app-header-tertiary-minimize=on] .app-header-tertiary { + transition: none; + height: 70px; + z-index: 100; + background-color: var(--bs-app-header-tertiary-minimize-bg-color); + box-shadow: var(--bs-app-header-tertiary-minimize-box-shadow); + border-bottom: var(--bs-app-header-tertiary-minimize-border-bottom); + } + [data-kt-app-header-sticky=on][data-kt-app-header-tertiary-sticky-hide=true] .app-header-tertiary { + display: none !important; + } + [data-kt-app-header-tertiary-enabled=true][data-kt-app-sidebar-fixed=true][data-kt-app-sidebar-push-header=true] .app-header-tertiary { + left: calc(var(--bs-app-sidebar-width) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px)); + } + [data-kt-app-header-tertiary-enabled=true][data-kt-app-sidebar-panel-fixed=true][data-kt-app-sidebar-panel-push-header=true] .app-header-tertiary { + left: calc(var(--bs-app-sidebar-width) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px) + var(--bs-app-sidebar-panel-width) + var(--bs-app-sidebar-panel-gap-start, 0px) + var(--bs-app-sidebar-panel-gap-end, 0px)); + } +} +@media (max-width: 991.98px) { + .app-header .app-header-tertiary { + flex-grow: 1; + height: var(--bs-app-header-tertiary-height); + border-top: var(--bs-app-header-tertiary-base-border-top); + box-shadow: var(--bs-app-header-tertiary-base-box-shadow); + } + .app-header-tertiary { + background-color: var(--bs-app-header-tertiary-base-bg-color); + } + [data-kt-app-header-tertiary-enabled=true] { + --bs-app-header-tertiary-height: 70px; + } + [data-kt-app-header-tertiary-enabled=true][data-kt-app-header-sticky=on] { + --bs-app-header-tertiary-height: 60px; + } + [data-kt-app-header-secondary-enabled=true][data-kt-app-header-minimize=on] { + --bs-app-header-tertiary-height: 60px; + } +} +.app-toolbar { + display: flex; + align-items: stretch; + background-color: var(--bs-app-toolbar-base-bg-color); + box-shadow: var(--bs-app-toolbar-base-box-shadow); + border-top: var(--bs-app-toolbar-base-border-top); + border-bottom: var(--bs-app-toolbar-base-border-bottom); +} +.app-toolbar.app-toolbar-minimize { + transition: none; +} + +@media (min-width: 992px) { + :root { + --bs-app-toolbar-height: 55px; + --bs-app-toolbar-height-actual: 55px; + } + [data-kt-app-toolbar-sticky=on] { + --bs-app-toolbar-height: 70px; + } + [data-kt-app-toolbar-minimize=on] { + --bs-app-toolbar-height: 70px; + } + .app-toolbar { + height: var(--bs-app-toolbar-height); + } + [data-kt-app-header-fixed=true][data-kt-app-toolbar-fixed=true] .app-toolbar { + z-index: 99; + position: fixed; + left: 0; + right: 0; + top: 0; + } + [data-kt-app-toolbar-sticky=on] .app-toolbar { + position: fixed; + left: 0; + right: 0; + top: 0; + box-shadow: var(--bs-app-toolbar-sticky-box-shadow); + background-color: var(--bs-app-toolbar-sticky-bg-color); + border-top: var(--bs-app-toolbar-sticky-border-top); + border-bottom: var(--bs-app-toolbar-sticky-border-bottom); + z-index: 99; + } + [data-kt-app-toolbar-minimize=on] .app-toolbar { + transition: none; + box-shadow: var(--bs-app-toolbar-minimize-box-shadow); + background-color: var(--bs-app-toolbar-minimize-bg-color); + border-top: var(--bs-app-toolbar-minimize-border-top); + border-bottom: var(--bs-app-toolbar-minimize-border-bottom); + z-index: 99; + } + [data-kt-app-toolbar-fixed=true][data-kt-app-header-fixed=true] .app-toolbar { + top: var(--bs-app-header-height); + } + [data-kt-app-toolbar-sticky=on][data-kt-app-sidebar-fixed=true][data-kt-app-sidebar-push-toolbar=true] .app-toolbar, [data-kt-app-toolbar-fixed=true][data-kt-app-sidebar-fixed=true][data-kt-app-sidebar-push-toolbar=true] .app-toolbar { + left: calc(var(--bs-app-sidebar-width) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px)); + } + [data-kt-app-toolbar-sticky=on][data-kt-app-sidebar-panel-fixed=true][data-kt-app-sidebar-panel-push-toolbar=true] .app-toolbar, [data-kt-app-toolbar-fixed=true][data-kt-app-sidebar-panel-fixed=true][data-kt-app-sidebar-panel-push-toolbar=true] .app-toolbar { + left: calc(var(--bs-app-sidebar-width) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px) + var(--bs-app-sidebar-panel-width) + var(--bs-app-sidebar-panel-gap-start, 0px) + var(--bs-app-sidebar-panel-gap-end, 0px)); + } + [data-kt-app-toolbar-sticky=on][data-kt-app-aside-fixed=true][data-kt-app-aside-push-toolbar=true] .app-toolbar, [data-kt-app-toolbar-fixed=true][data-kt-app-aside-fixed=true][data-kt-app-aside-push-toolbar=true] .app-toolbar { + right: calc(var(--bs-app-aside-width) + var(--bs-app-aside-gap-start, 0px) + var(--bs-app-aside-gap-end, 0px)); + } +} +@media (max-width: 991.98px) { + :root { + --bs-app-toolbar-height: ; + } + [data-kt-app-toolbar-sticky=on] { + --bs-app-toolbar-height: 70px; + } + [data-kt-app-toolbar-minimize=on] { + --bs-app-toolbar-height: 70px; + } + .app-toolbar { + height: var(--bs-app-toolbar-height); + } + [data-kt-app-header-fixed-mobile=true][data-kt-app-toolbar-fixed-mobile=true] .app-toolbar { + z-index: 99; + position: fixed; + top: calc(var(--bs-app-header-height, 0px) + var(--bs-app-header-mobile-height, 0px)); + left: 0; + right: 0; + } + [data-kt-app-toolbar-sticky=on] .app-toolbar { + position: fixed; + left: 0; + right: 0; + top: var(--bs-app-header-height, 0px); + box-shadow: var(--bs-app-toolbar-sticky-box-shadow); + background-color: var(--bs-app-toolbar-sticky-bg-color); + border-top: var(--bs-app-toolbar-sticky-border-top); + border-bottom: var(--bs-app-toolbar-sticky-border-bottom); + z-index: 99; + } + [data-kt-app-toolbar-minimize=on] .app-toolbar { + transition: none; + box-shadow: var(--bs-app-toolbar-minimize-box-shadow); + background-color: var(--bs-app-toolbar-minimize-bg-color); + border-top: var(--bs-app-toolbar-minimize-border-top); + border-bottom: var(--bs-app-toolbar-minimize-border-bottom); + z-index: 99; + } +} +.app-hero { + display: flex; + align-items: stretch; + background-color: var(--bs-app-hero-bg-color); + box-shadow: var(--bs-app-hero-box-shadow); + border-top: var(--bs-app-hero-border-top); + border-bottom: var(--bs-app-hero-border-bottom); +} + +.app-sidebar { + transition: width 0.3s ease; + background-color: var(--bs-app-sidebar-base-bg-color); + box-shadow: var(--bs-app-sidebar-base-box-shadow); + border-left: var(--bs-app-sidebar-base-border-start); + border-right: var(--bs-app-sidebar-base-border-end); +} + +.app-sidebar-minimize-d-flex, +.app-sidebar-sticky-d-flex, +.app-sidebar-collapse-d-flex, +.app-sidebar-minimize-mobile-d-flex, +.app-sidebar-collapse-mobile-d-flex { + display: none; +} + +@media (min-width: 992px) { + .app-sidebar { + display: flex; + flex-shrink: 0; + width: var(--bs-app-sidebar-width); + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + :root { + --bs-app-sidebar-width: 265px; + --bs-app-sidebar-width-actual: 265px; + --bs-app-sidebar-gap-start: 0px; + --bs-app-sidebar-gap-end: 0px; + --bs-app-sidebar-gap-top: 0px; + --bs-app-sidebar-gap-bottom: 0px; + } + [data-kt-app-sidebar-stacked=true] { + --bs-app-sidebar-width: calc(var(--bs-app-sidebar-primary-width) + var(--bs-app-sidebar-secondary-width, 0px)); + } + [data-kt-app-sidebar-minimize=on] { + --bs-app-sidebar-width: 75px; + --bs-app-sidebar-gap-start: 0px; + --bs-app-sidebar-gap-end: 0px; + --bs-app-sidebar-gap-top: 0px; + --bs-app-sidebar-gap-bottom: 0px; + } + [data-kt-app-sidebar-sticky=on] { + --bs-app-sidebar-width: 300px; + --bs-app-sidebar-gap-start: 0px; + --bs-app-sidebar-gap-end: 0px; + --bs-app-sidebar-gap-top: 0px; + --bs-app-sidebar-gap-bottom: 0px; + } + [data-kt-app-sidebar-collapse=on] { + --bs-app-sidebar-width: 0px; + } + [data-kt-app-sidebar-static=true] .app-sidebar { + position: relative; + } + [data-kt-app-sidebar-offcanvas=true] .app-sidebar { + display: none; + } + [data-kt-app-sidebar-fixed=true] .app-sidebar { + position: fixed; + z-index: 105; + top: 0; + bottom: 0; + left: 0; + } + [data-kt-app-sidebar-stacked=true] .app-sidebar { + align-items: stretch; + } + [data-kt-app-sidebar-sticky=on] .app-sidebar { + position: fixed; + transition: width 0.3s ease; + top: auto; + bottom: auto; + left: auto; + z-index: 105; + box-shadow: var(--bs-app-sidebar-sticky-box-shadow); + border-left: var(--bs-app-sidebar-sticky-border-start); + border-right: var(--bs-app-sidebar-sticky-border-end); + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + [data-kt-app-sidebar-minimize=on] .app-sidebar { + transition: width 0.3s ease; + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + [data-kt-app-sidebar-hoverable=true] .app-sidebar .app-sidebar-wrapper { + width: var(--bs-app-sidebar-width-actual); + } + [data-kt-app-sidebar-hoverable=true][data-kt-app-sidebar-minimize=on] .app-sidebar:hover:not(.animating) { + transition: width 0.3s ease; + width: var(--bs-app-sidebar-width-actual); + } + [data-kt-app-sidebar-collapse=on] .app-sidebar { + transition: width 0.3s ease; + width: var(--bs-app-sidebar-width-actual); + margin-left: calc(-1 * var(--bs-app-sidebar-width-actual)); + } + [data-kt-app-sidebar-minimize=on] .app-sidebar-minimize-d-none { + display: none !important; + } + [data-kt-app-sidebar-minimize=on] .app-sidebar-minimize-d-flex { + display: flex !important; + } + [data-kt-app-sidebar-sticky=on] .app-sidebar-sticky-d-none { + display: none !important; + } + [data-kt-app-sidebar-sticky=on] .app-sidebar-sticky-d-flex { + display: flex !important; + } + [data-kt-app-sidebar-collapse=on] .app-sidebar-collapse-d-none { + display: none !important; + } + [data-kt-app-sidebar-collapse=on] .app-sidebar-collapse-d-flex { + display: flex !important; + } + [data-kt-app-sidebar-fixed=true][data-kt-app-header-fixed=true]:not([data-kt-app-sidebar-push-header=true]) .app-sidebar { + top: var(--bs-app-header-height); + } + [data-kt-app-sidebar-fixed=true][data-kt-app-header-fixed=true][data-kt-app-toolbar-fixed=true]:not([data-kt-app-sidebar-push-toolbar=true]) .app-sidebar { + top: calc(var(--bs-app-header-height) + var(--bs-app-toolbar-height, 0px)); + } +} +@media (max-width: 991.98px) { + .app-sidebar { + display: none; + width: var(--bs-app-sidebar-width); + z-index: 106; + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + :root { + --bs-app-sidebar-width: 250px; + --bs-app-sidebar-width-actual: 250px; + --bs-app-sidebar-gap-start: 0px; + --bs-app-sidebar-gap-end: 0px; + --bs-app-sidebar-gap-top: 0px; + --bs-app-sidebar-gap-bottom: 0px; + } + [data-kt-app-sidebar-stacked=true] { + --bs-app-sidebar-width: calc(var(--bs-app-sidebar-primary-width) + var(--bs-app-sidebar-secondary-width, 0)); + } + [data-kt-app-sidebar-minimize-mobile=on] { + --bs-app-sidebar-width: 75px; + --bs-app-sidebar-gap-start: 0px; + --bs-app-sidebar-gap-end: 0px; + --bs-app-sidebar-gap-top: 0px; + --bs-app-sidebar-gap-bottom: 0px; + } + [data-kt-app-sidebar-collapse-mobile=on] { + --bs-app-sidebar-width: 0px; + } + [data-kt-app-sidebar-stacked=true] .app-sidebar { + align-items: stretch; + } + [data-kt-app-sidebar-minimize-mobile=on] .app-sidebar { + transition: width 0.3s ease; + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + [data-kt-app-sidebar-hoverable-mobile=true] .app-sidebar .app-sidebar-wrapper { + width: var(--bs-app-sidebar-width-actual); + } + [data-kt-app-sidebar-hoverable-mobile=true][data-kt-app-sidebar-minimize-mobile=on] .app-sidebar:hover:not(.animating) { + transition: width 0.3s ease; + width: var(--bs-app-sidebar-width-actual); + box-shadow: var(--bs-app-sidebar-minimize-hover-box-shadow-mobile); + } + [data-kt-app-sidebar-collapse-mobile=on] .app-sidebar { + transition: width 0.3s ease; + width: var(--bs-app-sidebar-width-actual); + margin-left: calc(-1 * var(--bs-app-sidebar-width-actual)); + } + [data-kt-app-sidebar-minimize-mobile=on] .app-sidebar-minimize-mobile-d-none { + display: none !important; + } + [data-kt-app-sidebar-minimize-mobile=on] .app-sidebar-minimize-mobile-d-flex { + display: flex !important; + } + [data-kt-app-sidebar-collapse-mobile=on] .app-sidebar-collapse-mobile-d-none { + display: none !important; + } + [data-kt-app-sidebar-collapse-mobile=on] .app-sidebar-collapse-mobile-d-flex { + display: flex !important; + } +} +.app-sidebar-primary { + transition: none; + position: relative; + flex-shrink: 0; + background-color: var(--bs-app-sidebar-primary-base-bg-color); + box-shadow: var(--bs-app-sidebar-primary-base-box-shadow); + border-left: var(--bs-app-sidebar-primary-base-border-start); + border-right: var(--bs-app-sidebar-primary-base-border-end); +} + +.app-sidebar-primary-collapse-d-flex, +.app-sidebar-primary-minimize-d-flex, +.app-sidebar-primary-collapse-mobile-d-flex, +.app-sidebar-primary-minimize-mobile-d-flex { + display: none; +} + +@media (min-width: 992px) { + .app-sidebar-primary { + z-index: 1; + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + :root { + --bs-app-sidebar-primary-width-actual: 100px; + } + [data-kt-app-sidebar-stacked=true] { + --bs-app-sidebar-primary-width: 100px; + --bs-app-sidebar-primary-gap-start: 0px; + --bs-app-sidebar-primary-gap-end: 0px; + --bs-app-sidebar-primary-gap-top: 0px; + --bs-app-sidebar-primary-gap-bottom: 0px; + } + [data-kt-app-sidebar-primary-minimize=on] { + --bs-app-sidebar-primary-width: 75px; + --bs-app-sidebar-primary-gap-start: 0px; + --bs-app-sidebar-primary-gap-end: 0px; + --bs-app-sidebar-primary-gap-top: 0px; + --bs-app-sidebar-primary-gap-bottom: 0px; + } + [data-kt-app-sidebar-primary-collapse=on] { + --bs-app-sidebar-primary-width: 0px; + } + .app-sidebar-primary { + width: var(--bs-app-sidebar-primary-width); + } + [data-kt-app-sidebar-primary-collapse=on] .app-sidebar-primary { + transition: none; + width: var(--bs-app-sidebar-primary-width-actual); + margin-left: calc(-1 * var(--bs-app-sidebar-primary-width-actual)); + } + [data-kt-app-sidebar-primary-minimize=on] .app-sidebar-primary { + transition: none; + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + [data-kt-app-sidebar-primary-hoverable=true] .app-sidebar-primary .app-sidebar-primary-hoverable { + width: var(--bs-app-sidebar-primary-width-actual); + } + [data-kt-app-sidebar-primary-hoverable=true][data-kt-app-sidebar-primary-minimize=on] .app-sidebar-primary:hover:not(.animating) { + transition: none; + width: var(--bs-app-sidebar-primary-width-actual); + box-shadow: var(--bs-app-sidebar-primary-minimize-hover-box-shadow); + } + [data-kt-app-sidebar-fixed=true][data-kt-app-header-fixed=true][data-kt-app-sidebar-primary-below-header=true] .app-sidebar-primary { + top: var(--bs-app-header-height); + } + [data-kt-app-sidebar-fixed=true][data-kt-app-header-fixed=true][data-kt-app-toolbar-fixed=true][data-kt-app-sidebar-primary-below-toolbar=true] .app-sidebar-primary { + top: calc(var(--bs-app-header-height) + var(--bs-app-toolbar-height, 0)); + } + [data-kt-app-sidebar-primary-minimize=on] .app-sidebar-primary-minimize-d-none { + display: none !important; + } + [data-kt-app-sidebar-primary-minimize=on] .app-sidebar-primary-minimize-d-flex { + display: flex !important; + } + [data-kt-app-sidebar-primary-collapse=on] .app-sidebar-primary-collapse-d-none { + display: none !important; + } + [data-kt-app-sidebar-primary-collapse=on] .app-sidebar-primary-collapse-d-flex { + display: flex !important; + } +} +@media (max-width: 991.98px) { + .app-sidebar-primary { + z-index: 1; + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + :root { + --bs-app-sidebar-primary-width-actual: 100px; + } + [data-kt-app-sidebar-stacked=true] { + --bs-app-sidebar-primary-width: 100px; + --bs-app-sidebar-primary-gap-start: 0px; + --bs-app-sidebar-primary-gap-end: 0px; + --bs-app-sidebar-primary-gap-top: 0px; + --bs-app-sidebar-primary-gap-bottom: 0px; + } + [data-kt-app-sidebar-primary-minimize-mobile=on] { + --bs-app-sidebar-primary-width: 75px; + --bs-app-sidebar-primary-gap-start: 0px; + --bs-app-sidebar-primary-gap-end: 0px; + --bs-app-sidebar-primary-gap-top: 0px; + --bs-app-sidebar-primary-gap-bottom: 0px; + } + [data-kt-app-sidebar-primary-collapse-mobile=on] { + --bs-app-sidebar-primary-width: 0px; + } + .app-sidebar-primary { + width: var(--bs-app-sidebar-primary-width); + } + [data-kt-app-sidebar-primary-collapse-mobile=on] .app-sidebar-primary { + transition: none; + width: var(--bs-app-sidebar-primary-width-actual); + margin-left: calc(-1 * var(--bs-app-sidebar-primary-width-actual)); + } + [data-kt-app-sidebar-primary-minimize-mobile=on] .app-sidebar-primary { + transition: none; + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + [data-kt-app-sidebar-primary-hoverable-mobile=true] .app-sidebar-primary .app-sidebar-primary-hoverable { + width: var(--bs-app-sidebar-primary-width-actual); + } + [data-kt-app-sidebar-primary-hoverable-mobile=true][data-kt-app-sidebar-primary-minimize-mobile=on] .app-sidebar-primary:hover:not(.animating) { + transition: none; + width: var(--bs-app-sidebar-primary-width-actual); + box-shadow: var(--bs-app-sidebar-primary-minimize-hover-box-shadow-mobile); + } + [data-kt-app-sidebar-primary-minimize-mobile=on] .app-sidebar-primary-minimize-mobile-d-none { + display: none !important; + } + [data-kt-app-sidebar-primary-minimize-mobile=on] .app-sidebar-primary-minimize-mobile-d-flex { + display: flex !important; + } + [data-kt-app-sidebar-primary-collapse-mobile=on] .app-sidebar-primary-collapse-mobile-d-none { + display: none !important; + } + [data-kt-app-sidebar-primary-collapse-mobile=on] .app-sidebar-primary-collapse-mobile-d-flex { + display: flex !important; + } +} +.app-sidebar-secondary { + transition: width 0.3s ease, margin 0.3s ease; + position: relative; + flex-shrink: 0; + background-color: var(--bs-app-sidebar-secondary-base-bg-color); + box-shadow: var(--bs-app-sidebar-secondary-base-box-shadow); + border-left: var(--bs-app-sidebar-secondary-base-border-start); + border-right: var(--bs-app-sidebar-secondary-base-border-end); +} + +.app-sidebar-secondary-collapse-d-flex, +.app-sidebar-secondary-minimize-d-flex, +.app-sidebar-secondary-collapse-mobile-d-flex, +.app-sidebar-secondary-minimize-mobile-d-flex { + display: none; +} + +@media (min-width: 992px) { + .app-sidebar-secondary { + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + [data-kt-app-sidebar-secondary-enabled=true] { + --bs-app-sidebar-secondary-width-actual: calc( + 265px - + 100px - + 0px - + 0px - + 0px - + 0px + ); + } + [data-kt-app-sidebar-secondary-enabled=true][data-kt-app-sidebar-stacked=true] { + --bs-app-sidebar-secondary-width: calc( + 265px - + 100px - + 0px - + 0px - + 0px - + 0px + ); + --bs-app-sidebar-secondary-gap-start: 0px; + --bs-app-sidebar-secondary-gap-end: 0px; + --bs-app-sidebar-secondary-gap-top: 0px; + --bs-app-sidebar-secondary-gap-bottom: 0px; + } + [data-kt-app-sidebar-secondary-enabled=true][data-kt-app-sidebar-secondary-minimize=on] { + --bs-app-sidebar-secondary-width: 75px; + --bs-app-sidebar-secondary-gap-start: 0px; + --bs-app-sidebar-secondary-gap-end: 0px; + --bs-app-sidebar-secondary-gap-top: 0px; + --bs-app-sidebar-secondary-gap-bottom: 0px; + } + [data-kt-app-sidebar-secondary-enabled=true][data-kt-app-sidebar-secondary-collapse=on] { + --bs-app-sidebar-secondary-width-actual: calc( + 265px - + 100px - + 0px - + 0px - + 0px - + 0px + ); + --bs-app-sidebar-secondary-width: 0px; + } + .app-sidebar-secondary { + width: var(--bs-app-sidebar-secondary-width); + } + [data-kt-app-sidebar-secondary-collapse=on] .app-sidebar-secondary { + transition: width 0.3s ease, margin 0.3s ease; + width: var(--bs-app-sidebar-secondary-width-actual); + margin-left: calc(-1 * var(--bs-app-sidebar-secondary-width-actual)); + } + [data-kt-app-sidebar-secondary-minimize=on] .app-sidebar-secondary { + transition: width 0.3s ease, margin 0.3s ease; + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + [data-kt-app-sidebar-secondary-hoverable=true] .app-sidebar-secondary .app-sidebar-secondary-hoverable { + width: var(--bs-app-sidebar-secondary-width-actual); + } + [data-kt-app-sidebar-secondary-hoverable=true][data-kt-app-sidebar-secondary-minimize=on] .app-sidebar-secondary:hover:not(.animating) { + transition: width 0.3s ease, margin 0.3s ease; + width: var(--bs-app-sidebar-secondary-width-actual); + box-shadow: var(--bs-app-sidebar-secondary-minimize-hover-box-shadow); + } + [data-kt-app-sidebar-fixed=true][data-kt-app-header-fixed=true][data-kt-app-sidebar-secondary-below-header=true] .app-sidebar-secondary { + top: var(--bs-app-header-height); + } + [data-kt-app-sidebar-fixed=true][data-kt-app-header-fixed=true][data-kt-app-toolbar-fixed=true][data-kt-app-sidebar-secondary-below-toolbar=true] .app-sidebar-secondary { + top: calc(var(--bs-app-header-height) + var(--bs-app-toolbar-height, 0)); + } + [data-kt-app-sidebar-secondary-enabled=true][data-kt-app-sidebar-secondary-minimize=on] .app-sidebar-secondary-minimize-d-none { + display: none !important; + } + [data-kt-app-sidebar-secondary-enabled=true][data-kt-app-sidebar-secondary-minimize=on] .app-sidebar-secondary-minimize-d-flex { + display: flex !important; + } + [data-kt-app-sidebar-secondary-enabled=true][data-kt-app-sidebar-secondary-collapse=on] .app-sidebar-secondary-collapse-d-none { + display: none !important; + } + [data-kt-app-sidebar-secondary-enabled=true][data-kt-app-sidebar-secondary-collapse=on] .app-sidebar-secondary-collapse-d-flex { + display: flex !important; + } +} +@media (max-width: 991.98px) { + .app-sidebar-secondary { + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + [data-kt-app-sidebar-secondary-enabled=true] { + --bs-app-sidebar-secondary-width-actual: calc( + 250px - + 100px - + 0px - + 0px - + 0px - + 0px + ); + } + [data-kt-app-sidebar-secondary-enabled=true][data-kt-app-sidebar-stacked=true] { + --bs-app-sidebar-secondary-width: calc( + 250px - + 100px - + 0px - + 0px - + 0px - + 0px + ); + --bs-app-sidebar-secondary-gap-start: 0px; + --bs-app-sidebar-secondary-gap-end: 0px; + --bs-app-sidebar-secondary-gap-top: 0px; + --bs-app-sidebar-secondary-gap-bottom: 0px; + } + [data-kt-app-sidebar-secondary-enabled=true][data-kt-app-sidebar-secondary-minimize-mobile=on] { + --bs-app-sidebar-secondary-width: 75px; + --bs-app-sidebar-secondary-gap-start: 0px; + --bs-app-sidebar-secondary-gap-end: 0px; + --bs-app-sidebar-secondary-gap-top: 0px; + --bs-app-sidebar-secondary-gap-bottom: 0px; + } + [data-kt-app-sidebar-secondary-enabled=true][data-kt-app-sidebar-secondary-collapse-mobile=on] { + --bs-app-sidebar-secondary-width-actual: calc( + 250px - + 100px - + 0px - + 0px - + 0px - + 0px + ); + --bs-app-sidebar-secondary-width: 0px; + } + .app-sidebar-secondary { + width: var(--bs-app-sidebar-secondary-width); + } + [data-kt-app-sidebar-secondary-collapse-mobile=on] .app-sidebar-secondary { + transition: width 0.3s ease, margin 0.3s ease; + width: var(--bs-app-sidebar-secondary-width-actual); + margin-left: calc(-1 * var(--bs-app-sidebar-secondary-width-actual)); + } + [data-kt-app-sidebar-secondary-minimize-mobile=on] .app-sidebar-secondary { + transition: width 0.3s ease, margin 0.3s ease; + background-color: var(--bs-app-sidebar-secondary-minimize-bg-color-mobile); + box-shadow: var(--bs-app-sidebar-secondary-minimize-box-shadow-mobile); + border-left: var(--bs-app-sidebar-secondary-minimize-border-start-mobile); + border-right: var(--bs-app-sidebar-secondary-minimize-border-end-mobile); + } + [data-kt-app-sidebar-secondary-hoverable-mobile=true] .app-sidebar-secondary .app-sidebar-secondary-hoverable { + width: var(--bs-app-sidebar-secondary-width-actual); + } + [data-kt-app-sidebar-secondary-hoverable-mobile=true][data-kt-app-sidebar-secondary-minimize-mobile=on] .app-sidebar-secondary:hover:not(.animating) { + transition: width 0.3s ease, margin 0.3s ease; + width: var(--bs-app-sidebar-secondary-width-actual); + box-shadow: var(--bs-app-sidebar-secondary-minimize-hover-box-shadow-mobile); + } + [data-kt-app-sidebar-secondary-enabled=true][data-kt-app-sidebar-secondary-minimize-mobile=on] .app-sidebar-secondary-minimize-mobile-d-none { + display: none !important; + } + [data-kt-app-sidebar-secondary-enabled=true][data-kt-app-sidebar-secondary-minimize-mobile=on] .app-sidebar-secondary-minimize-mobile-d-flex { + display: flex !important; + } + [data-kt-app-sidebar-secondary-enabled=true][data-kt-app-sidebar-secondary-collapse=on] .app-sidebar-secondary-collapse-mobile-d-none { + display: none !important; + } + [data-kt-app-sidebar-secondary-enabled=true][data-kt-app-sidebar-secondary-collapse=on] .app-sidebar-secondary-collapse-mobile-d-flex { + display: flex !important; + } +} +.app-sidebar-panel { + transition: none; + background-color: var(--bs-app-sidebar-panel-base-bg-color); + box-shadow: var(--bs-app-sidebar-panel-base-box-shadow); + border-left: var(--bs-app-sidebar-panel-base-border-start); + border-right: var(--bs-app-sidebar-panel-base-border-end); +} + +.app-sidebar-panel-minimize-d-flex, +.app-sidebar-panel-sticky-d-flex, +.app-sidebar-panel-collapse-d-flex, +.app-sidebar-panel-minimize-mobile-d-flex, +.app-sidebar-panel-collapse-mobile-d-flex { + display: none; +} + +@media (min-width: 992px) { + .app-sidebar-panel { + display: flex; + flex-shrink: 0; + width: var(--bs-app-sidebar-panel-width); + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + :root { + --bs-app-sidebar-panel-width: 300px; + --bs-app-sidebar-panel-width-actual: 300px; + --bs-app-sidebar-panel-gap-start: 0px; + --bs-app-sidebar-panel-gap-end: 0px; + --bs-app-sidebar-panel-gap-top: 0px; + --bs-app-sidebar-panel-gap-bottom: 0px; + } + [data-kt-app-sidebar-panel-minimize=on] { + --bs-app-sidebar-panel-width: 75px; + --bs-app-sidebar-panel-gap-start: 0px; + --bs-app-sidebar-panel-gap-end: 0px; + --bs-app-sidebar-panel-gap-top: 0px; + --bs-app-sidebar-panel-gap-bottom: 0px; + } + [data-kt-app-sidebar-panel-sticky=on] { + --bs-app-sidebar-panel-width: 300px; + --bs-app-sidebar-panel-gap-start: 0px; + --bs-app-sidebar-panel-gap-end: 0px; + --bs-app-sidebar-panel-gap-top: 0px; + --bs-app-sidebar-panel-gap-bottom: 0px; + } + [data-kt-app-sidebar-panel-collapse=on] { + --bs-app-sidebar-panel-width-actual: 300px; + --bs-app-sidebar-panel-width: 0px; + } + [data-kt-app-sidebar-panel-static=true] .app-sidebar-panel { + position: relative; + } + [data-kt-app-sidebar-panel-offcanvas=true] .app-sidebar-panel { + display: none; + } + [data-kt-app-sidebar-panel-fixed=true] .app-sidebar-panel { + z-index: 104; + position: fixed; + left: calc(var(--bs-app-sidebar-width) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px)); + top: 0; + bottom: 0; + } + [data-kt-app-sidebar-panel-sticky=on] .app-sidebar-panel { + position: fixed; + left: calc(var(--bs-app-sidebar-width) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px)); + top: 0; + bottom: 0; + transition: none; + z-index: 104; + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + [data-kt-app-sidebar-panel-minimize=on] .app-sidebar-panel { + transition: none; + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + [data-kt-app-sidebar-panel-hoverable=true] .app-sidebar-panel .app-sidebar-panel-hoverable { + width: var(--bs-app-sidebar-panel-width-actual); + } + [data-kt-app-sidebar-panel-hoverable=true][data-kt-app-sidebar-panel-minimize=on] .app-sidebar-panel:hover:not(.animating) { + transition: none; + width: var(--bs-app-sidebar-panel-width-actual); + box-shadow: var(--bs-app-sidebar-panel-minimize-hover-box-shadow); + } + [data-kt-app-sidebar-panel-collapse=on] .app-sidebar-panel { + transition: none; + width: var(--bs-app-sidebar-panel-width-actual); + margin-left: calc(-1 * (var(--bs-app-sidebar-panel-width-actual) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px))); + } + [data-kt-app-sidebar-panel-fixed=true][data-kt-app-header-fixed=true]:not([data-kt-app-sidebar-panel-push-header=true]) .app-sidebar-panel { + top: var(--bs-app-header-height); + } + [data-kt-app-sidebar-panel-fixed=true][data-kt-app-header-fixed=true][data-kt-app-toolbar-fixed=true]:not([data-kt-app-sidebar-panel-push-toolbar=true]) .app-sidebar-panel { + top: calc(var(--bs-app-header-height) + var(--bs-app-toolbar-height, 0)); + } + [data-kt-app-sidebar-panel-minimize=on] .app-sidebar-panel-minimize-d-none { + display: none !important; + } + [data-kt-app-sidebar-panel-minimize=on] .app-sidebar-panel-minimize-d-flex { + display: flex !important; + } + [data-kt-app-sidebar-panel-sticky=on] .app-sidebar-panel-sticky-d-none { + display: none !important; + } + [data-kt-app-sidebar-panel-sticky=on] .app-sidebar-panel-sticky-d-flex { + display: flex !important; + } + [data-kt-app-sidebar-panel-collapse=on] .app-sidebar-panel-collapse-d-none { + display: none !important; + } + [data-kt-app-sidebar-panel-collapse=on] .app-sidebar-panel-collapse-d-flex { + display: flex !important; + } +} +@media (max-width: 991.98px) { + .app-sidebar-panel { + display: none; + width: var(--bs-app-sidebar-panel-width); + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + :root { + --bs-app-sidebar-panel-gap-start: 0px; + --bs-app-sidebar-panel-gap-end: 0px; + --bs-app-sidebar-panel-gap-top: 0px; + --bs-app-sidebar-panel-gap-bottom: 0px; + } + [data-kt-app-sidebar-panel-minimize-mobile=on] { + --bs-app-sidebar-panel-width: 75px; + --bs-app-sidebar-panel-gap-start: 0px; + --bs-app-sidebar-panel-gap-end: 0px; + --bs-app-sidebar-panel-gap-top: 0px; + --bs-app-sidebar-panel-gap-bottom: 0px; + } + [data-kt-app-sidebar-panel-collapse-mobile=on] { + --bs-app-sidebar-panel-width-actual: 300px; + --bs-app-sidebar-panel-width: 0px; + } + [data-kt-app-sidebar-panel-minimize-mobile=on] .app-sidebar-panel { + transition: none; + background-color: var(--bs-app-sidebar-panel-minimize-bg-color-mobile); + box-shadow: var(--bs-app-sidebar-panel-minimize-box-shadow-mobile); + border-left: var(--bs-app-sidebar-panel-minimize-border-start-mobile); + border-right: var(--bs-app-sidebar-panel-minimize-border-end-mobile); + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + [data-kt-app-sidebar-panel-hoverable-mobile=true] .app-sidebar-panel .app-sidebar-panel-hoverable { + width: var(--bs-app-sidebar-panel-width-actual); + } + [data-kt-app-sidebar-panel-hoverable-mobile=true][data-kt-app-sidebar-panel-minimize-mobile=on] .app-sidebar-panel:hover:not(.animating) { + transition: none; + width: var(--bs-app-sidebar-panel-width-actual); + box-shadow: var(--bs-app-sidebar-panel-minimize-hover-box-shadow-mobile); + } + [data-kt-app-sidebar-panel-collapse-mobile=on] .app-sidebar-panel { + transition: none; + width: var(--bs-app-sidebar-panel-width-actual); + margin-left: calc(-1 * var(--bs-app-sidebar-panel-width-actual)); + } + [data-kt-app-sidebar-panel-minimize-mobile=on] .app-sidebar-panel-minimize-mobile-d-none { + display: none !important; + } + [data-kt-app-sidebar-panel-minimize-mobile=on] .app-sidebar-panel-minimize-mobile-d-flex { + display: flex !important; + } + [data-kt-app-sidebar-panel-collapse-mobile=on] .app-sidebar-panel-collapse-mobile-d-none { + display: none !important; + } + [data-kt-app-sidebar-panel-collapse-mobile=on] .app-sidebar-panel-collapse-mobile-d-flex { + display: flex !important; + } +} +.app-aside { + transition: none; + background-color: var(--bs-app-aside-base-bg-color); + box-shadow: var(--bs-app-aside-base-box-shadow); + border-left: var(--bs-app-aside-base-border-left); + border-right: var(--bs-app-aside-base-border-right); +} + +.app-aside-minimize-d-flex, +.app-aside-sticky-d-flex, +.app-aside-collapse-d-flex, +.app-aside-minimize-mobile-d-flex, +.app-aside-collapse-mobile-d-flex { + display: none; +} + +@media (min-width: 992px) { + .app-aside { + display: flex; + flex-shrink: 0; + width: var(--bs-app-aside-width); + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + :root { + --bs-app-aside-width: 300px; + --bs-app-aside-width-actual: 300px; + --bs-app-aside-gap-start: 0px; + --bs-app-aside-gap-end: 0px; + --bs-app-aside-gap-top: 0px; + --bs-app-aside-gap-bottom: 0px; + } + [data-kt-app-aside-stacked=true] { + --bs-app-aside-width: calc(var(--bs-app-aside-primary-width) + var(--bs-app-aside-secondary-width)); + } + [data-kt-app-aside-minimize=on] { + --bs-app-aside-width: 75px; + --bs-app-aside-gap-start: 0px; + --bs-app-aside-gap-end: 0px; + --bs-app-aside-gap-top: 0px; + --bs-app-aside-gap-bottom: 0px; + } + [data-kt-app-aside-sticky=on] { + --bs-app-aside-width: 300px; + --bs-app-aside-gap-start: 0px; + --bs-app-aside-gap-end: 0px; + --bs-app-aside-gap-top: 0px; + --bs-app-aside-gap-bottom: 0px; + } + [data-kt-app-aside-collapse=on] { + --bs-app-aside-width: 0px; + } + [data-kt-app-aside-static=true] .app-aside { + position: relative; + } + [data-kt-app-aside-offcanvas=true] .app-aside { + display: none; + } + [data-kt-app-aside-fixed=true] .app-aside { + position: fixed; + z-index: 105; + top: 0; + bottom: 0; + right: 0; + } + [data-kt-app-aside-stacked=true] .app-aside { + align-items: stretch; + } + [data-kt-app-aside-sticky=on] .app-aside { + position: fixed; + transition: none; + box-shadow: var(--bs-app-aside-sticky-box-shadow); + border-left: var(--bs-aside-sticky-border-start); + border-right: var(--bs-app-aside-sticky-border-end); + top: auto; + bottom: auto; + left: auto; + z-index: 105; + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + [data-kt-app-aside-minimize=on] .app-aside { + transition: none; + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + [data-kt-app-aside-hoverable=true] .app-aside .app-aside-wrapper { + width: var(--bs-app-aside-width-actual); + } + [data-kt-app-aside-hoverable=true][data-kt-app-aside-minimize=on] .app-aside:hover:not(.animating) { + transition: none; + width: var(--bs-app-aside-width-actual); + box-shadow: var(--bs-app-aside-minimize-hover-box-shadow); + } + [data-kt-app-aside-collapse=on] .app-aside { + transition: none; + width: var(--bs-app-aside-width-actual); + margin-right: calc(-1 * var(--bs-app-aside-width-actual)); + } + [data-kt-app-aside-minimize=on] .app-aside-minimize-d-none { + display: none !important; + } + [data-kt-app-aside-minimize=on] .app-aside-minimize-d-flex { + display: flex !important; + } + [data-kt-app-aside-sticky=on] .app-aside-sticky-d-none { + display: none !important; + } + [data-kt-app-aside-sticky=on] .app-aside-sticky-d-flex { + display: flex !important; + } + [data-kt-app-aside-collapse=on] .app-aside-collapse-d-none { + display: none !important; + } + [data-kt-app-aside-collapse=on] .app-aside-collapse-d-flex { + display: flex !important; + } + [data-kt-app-aside-fixed=true][data-kt-app-header-fixed=true]:not([data-kt-app-aside-push-header=true]) .app-aside { + top: var(--bs-app-header-height); + } + [data-kt-app-aside-fixed=true][data-kt-app-header-fixed=true][data-kt-app-toolbar-fixed=true]:not([data-kt-app-aside-push-toolbar=true]) .app-aside { + top: calc(var(--bs-app-header-height) + var(--bs-app-toolbar-height, 0px)); + } +} +@media (max-width: 991.98px) { + .app-aside { + display: none; + width: var(--bs-app-aside-width); + z-index: 106; + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + :root { + --bs-app-aside-width: 275px; + --bs-app-aside-width-actual: 275px; + --bs-app-aside-gap-start: 0px; + --bs-app-aside-gap-end: 0px; + --bs-app-aside-gap-top: 0px; + --bs-app-aside-gap-bottom: 0px; + } + [data-kt-app-aside-minimize-mobile=on] { + --bs-app-aside-width: 75px; + --bs-app-aside-gap-start: 0px; + --bs-app-aside-gap-end: 0px; + --bs-app-aside-gap-top: 0px; + --bs-app-aside-gap-bottom: 0px; + } + [data-kt-app-aside-collapse-mobile=on] { + --bs-app-aside-width: 0px; + } + [data-kt-app-aside-stacked=true] .app-aside { + align-items: stretch; + } + [data-kt-app-aside-minimize-mobile=on] .app-aside { + transition: none; + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + margin-bottom: 0px; + } + [data-kt-app-aside-hoverable-mobile=true] .app-aside .app-aside-wrapper { + width: var(--bs-app-aside-width-actual); + } + [data-kt-app-aside-hoverable-mobile=true][data-kt-app-aside-minimize-mobile=on] .app-aside:hover:not(.animating) { + transition: none; + width: var(--bs-app-aside-width-actual); + box-shadow: var(--bs-app-aside-minimize-hover-box-shadow-mobile); + } + [data-kt-app-aside-collapse-mobile=on] .app-aside { + transition: none; + width: var(--bs-app-aside-width-actual); + margin-right: calc(-1 * var(--bs-app-aside-width-actual)); + } + [data-kt-app-aside-minimize-mobile=on] .app-aside-minimize-mobile-d-none { + display: none !important; + } + [data-kt-app-aside-minimize-mobile=on] .app-aside-minimize-mobile-d-flex { + display: flex !important; + } + [data-kt-app-aside-collapse-mobile=on] .app-aside-collapse-mobile-d-none { + display: none !important; + } + [data-kt-app-aside-collapse-mobile=on] .app-aside-collapse-mobile-d-flex { + display: flex !important; + } +} +.app-wrapper { + display: flex; +} + +@media (min-width: 992px) { + .app-wrapper { + transition: margin-left 0.3s ease, margin-right 0.3s ease; + } + [data-kt-app-header-sticky=on] .app-wrapper { + margin-top: var(--bs-app-header-height-actual); + } + [data-kt-app-header-fixed=true] .app-wrapper { + margin-top: var(--bs-app-header-height); + } + [data-kt-app-toolbar-sticky=on] .app-wrapper { + margin-top: var(--bs-app-toolbar-height); + } + [data-kt-app-header-fixed=true][data-kt-app-toolbar-sticky=on] .app-wrapper { + margin-top: calc(var(--bs-app-header-height-actual) + var(--bs-app-toolbar-height-actual)); + } + [data-kt-app-header-fixed=true][data-kt-app-toolbar-fixed=true] .app-wrapper { + margin-top: calc(var(--bs-app-header-height) + var(--bs-app-toolbar-height)); + } + [data-kt-app-sidebar-fixed=true] .app-wrapper { + margin-left: calc(var(--bs-app-sidebar-width) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px)); + } + [data-kt-app-sidebar-panel-fixed=true] .app-wrapper { + margin-left: calc(var(--bs-app-sidebar-width) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px) + var(--bs-app-sidebar-panel-width) + var(--bs-app-sidebar-panel-gap-start, 0px) + var(--bs-app-sidebar-panel-gap-end, 0px)); + } + [data-kt-app-aside-fixed=true] .app-wrapper { + margin-right: calc(var(--bs-app-aside-width) + var(--bs-app-aside-gap-start, 0px) + var(--bs-app-aside-gap-end, 0px)); + } + [data-kt-app-footer-fixed=true] .app-wrapper { + margin-bottom: var(--bs-app-footer-height); + } +} +@media (max-width: 991.98px) { + .app-wrapper { + transition: margin-left 0.3s ease, margin-right 0.3s ease; + } + [data-kt-app-header-sticky=on] .app-wrapper { + margin-top: var(--bs-app-header-height-actual); + } + [data-kt-app-header-fixed-mobile=true] .app-wrapper { + margin-top: var(--bs-app-header-height); + } + [data-kt-app-header-fixed-mobile=true][data-kt-app-toolbar-sticky=on] .app-wrapper { + margin-top: calc(var(--bs-app-header-height-actual) + var(--bs-app-toolbar-height-actual)); + } + [data-kt-app-footer-fixed-mobile=true] .app-wrapper { + margin-bottom: var(--bs-app-footer-height); + } +} +.app-main { + display: flex; +} + +@media (min-width: 992px) { + .app-main { + transition: margin 0.3s ease; + } + [data-kt-app-sidebar-sticky=true] .app-main { + margin-left: calc(var(--bs-app-sidebar-width) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px)); + } + [data-kt-app-sidebar-panel-sticky=true] .app-main { + margin-left: calc(var(--bs-app-sidebar-width) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px) + var(--bs-app-sidebar-panel-width) + var(--bs-app-sidebar-panel-gap-start, 0px) + var(--bs-app-sidebar-panel-gap-end, 0px)); + } + [data-kt-app-aside-sticky=true] .app-main { + margin-right: calc(var(--bs-app-aside-width) + var(--bs-app-aside-gap-start, 0px) + var(--bs-app-aside-gap-end, 0px)); + } +} +@media (max-width: 991.98px) { + .app-main { + padding-left: 0; + padding-right: 0; + } +} +@media (min-width: 992px) { + .app-content { + padding-top: 30px; + padding-bottom: 30px; + padding-left: 0; + padding-right: 0; + } +} +@media (max-width: 991.98px) { + .app-content { + max-width: none; + padding-top: 20px; + padding-bottom: 20px; + padding-left: 0; + padding-right: 0; + } +} +.app-footer { + transition: left 0.3s ease, right 0.3s ease; + display: flex; + align-items: center; + background-color: var(--bs-app-footer-bg-color); + border-top: var(--bs-app-footer-border-top); +} + +@media (min-width: 992px) { + :root { + --bs-app-footer-height: 60px; + } + .app-footer { + height: var(--bs-app-footer-height); + } + [data-kt-app-footer-fixed=true] .app-footer { + z-index: 100; + box-shadow: var(--bs-app-footer-box-shadow); + position: fixed; + left: 0; + right: 0; + bottom: 0; + } + [data-kt-app-sidebar-fixed=true][data-kt-app-sidebar-push-footer=true] .app-footer { + left: calc(var(--bs-app-sidebar-width) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px)); + } + [data-kt-app-sidebar-panel-fixed=true][data-kt-app-sidebar-panel-push-footer=true] .app-footer { + left: calc(var(--bs-app-sidebar-width) + var(--bs-app-sidebar-gap-start, 0px) + var(--bs-app-sidebar-gap-end, 0px) + var(--bs-app-sidebar-panel-width) + var(--bs-app-sidebar-panel-gap-start, 0px) + var(--bs-app-sidebar-panel-gap-end, 0px)); + } + [data-kt-app-aside-fixed=true][data-kt-app-aside-push-footer=true] .app-footer { + right: calc(var(--bs-app-aside-width) + var(--bs-app-aside-gap-start, 0px) + var(--bs-app-aside-gap-end, 0px)); + } +} +@media (max-width: 991.98px) { + body { + --bs-app-footer-height: auto; + } + .app-footer { + height: var(--bs-app-footer-height); + } + [data-kt-app-footer-fixed-mobile=true] .app-footer { + z-index: 100; + box-shadow: var(--bs-app-footer-box-shadow); + position: fixed; + left: 0; + right: 0; + bottom: 0; + } +} +.app-layout-builder-toggle { + position: fixed; + z-index: 105; + bottom: 40px; + right: 50px; +} + +@media (max-width: 991.98px) { + .app-layout-builder-toggle { + bottom: 20px; + right: 40px; + } +} +[data-bs-theme=light] { + --bs-app-header-base-menu-link-bg-color-active: #F4F6FA; + --bs-app-header-light-separator-color: #E4E6EF; + --bs-app-sidebar-base-toggle-btn-box-shadow: 0px 0px 10px rgba(113, 121, 136, 0.1); + --bs-app-sidebar-base-toggle-btn-bg-color: #ffffff; + --bs-app-sidebar-light-bg-color: #ffffff; + --bs-app-sidebar-light-box-shadow: 0 0 28px 0 rgba(82, 63, 105, 0.05); + --bs-app-sidebar-light-separator-color: #E4E6EF; + --bs-app-sidebar-light-scrollbar-color: #F4F4F4; + --bs-app-sidebar-light-scrollbar-color-hover: #F4F4F4; + --bs-app-sidebar-light-menu-heading-color: #B5B5C3; + --bs-app-sidebar-light-menu-link-bg-color-active: #F4F6FA; + --bs-app-sidebar-light-header-menu-link-bg-color-active: #EAEEF2; +} + +[data-bs-theme=dark] { + --bs-app-header-base-menu-link-bg-color-active: #2A2A3C; + --bs-app-header-light-separator-color: #2B2B40; + --bs-app-sidebar-base-toggle-btn-box-shadow: none; + --bs-app-sidebar-base-toggle-btn-bg-color: #2A2A3C; + --bs-app-sidebar-light-bg-color: #1e1e2d; + --bs-app-sidebar-light-box-shadow: none; + --bs-app-sidebar-light-separator-color: #2B2B40; + --bs-app-sidebar-light-scrollbar-color: #2B2B40; + --bs-app-sidebar-light-scrollbar-color-hover: #2B2B40; + --bs-app-sidebar-light-menu-heading-color: #565674; + --bs-app-sidebar-light-menu-link-bg-color-active: #2A2A3C; + --bs-app-sidebar-light-header-menu-link-bg-color-active: #1b1b29; +} + +@media (min-width: 992px) { + .app-sidebar-toggle { + box-shadow: var(--bs-app-sidebar-base-toggle-btn-box-shadow) !important; + background-color: var(--bs-app-sidebar-base-toggle-btn-bg-color) !important; + } + .app-sidebar-toggle .active .svg-icon { + transform: rotateZ(0deg) !important; + } + [dir=rtl] .app-sidebar-toggle .svg-icon { + transform: rotateZ(180deg); + } + [dir=rtl] .app-sidebar-toggle.active .svg-icon { + transform: rotateZ(0deg) !important; + } + .app-sidebar-logo { + height: var(--bs-app-header-height); + display: flex; + align-items: center; + justify-content: space-between; + position: relative; + flex-shrink: 0; + } + .app-sidebar-menu .menu > .menu-item { + margin-left: 0.115rem; + } +} +@media (max-width: 991.98px) { + .app-sidebar-logo { + display: none; + } +} +.app-sidebar-logo-minimize { + display: none; +} + +.app-sidebar-footer .btn-custom .btn-icon { + display: none; +} + +@media (min-width: 992px) { + [data-kt-app-sidebar-minimize=on]:not([data-kt-app-sidebar-hoverable=true]) .app-sidebar .app-sidebar-logo .app-sidebar-logo-default { + display: none; + } + [data-kt-app-sidebar-minimize=on]:not([data-kt-app-sidebar-hoverable=true]) .app-sidebar .app-sidebar-logo .app-sidebar-logo-minimize { + display: inline-block; + } + [data-kt-app-sidebar-minimize=on]:not([data-kt-app-sidebar-hoverable=true]) .app-sidebar .app-sidebar-wrapper { + width: var(--bs-app-sidebar-width-actual); + } + [data-kt-app-sidebar-minimize=on]:not([data-kt-app-sidebar-hoverable=true]) .app-sidebar .app-sidebar-menu .menu-content, +[data-kt-app-sidebar-minimize=on]:not([data-kt-app-sidebar-hoverable=true]) .app-sidebar .app-sidebar-menu .menu-title { + opacity: 0; + transition: opacity 0.3s ease !important; + } + [data-kt-app-sidebar-minimize=on]:not([data-kt-app-sidebar-hoverable=true]) .app-sidebar .app-sidebar-menu .menu-item.show > .menu-sub { + height: 0; + overflow: hidden; + transition: height 0.3s ease !important; + } + [data-kt-app-sidebar-minimize=on]:not([data-kt-app-sidebar-hoverable=true]) .app-sidebar .app-sidebar-footer .btn-custom { + padding-left: 0 !important; + padding-right: 0 !important; + } + [data-kt-app-sidebar-minimize=on]:not([data-kt-app-sidebar-hoverable=true]) .app-sidebar .app-sidebar-footer .btn-custom .btn-label { + width: 0; + display: none; + } + [data-kt-app-sidebar-minimize=on]:not([data-kt-app-sidebar-hoverable=true]) .app-sidebar .app-sidebar-footer .btn-custom .btn-icon { + width: auto; + display: block; + } + [data-kt-app-sidebar-minimize=on][data-kt-app-sidebar-hoverable=true] .app-sidebar:not(:hover) .app-sidebar-logo .app-sidebar-logo-default { + display: none; + } + [data-kt-app-sidebar-minimize=on][data-kt-app-sidebar-hoverable=true] .app-sidebar:not(:hover) .app-sidebar-logo .app-sidebar-logo-minimize { + display: inline-block; + } + [data-kt-app-sidebar-minimize=on][data-kt-app-sidebar-hoverable=true] .app-sidebar:not(:hover) .app-sidebar-wrapper { + width: var(--bs-app-sidebar-width-actual); + } + [data-kt-app-sidebar-minimize=on][data-kt-app-sidebar-hoverable=true] .app-sidebar:not(:hover) .app-sidebar-menu .menu-content, +[data-kt-app-sidebar-minimize=on][data-kt-app-sidebar-hoverable=true] .app-sidebar:not(:hover) .app-sidebar-menu .menu-title { + opacity: 0; + transition: opacity 0.3s ease !important; + } + [data-kt-app-sidebar-minimize=on][data-kt-app-sidebar-hoverable=true] .app-sidebar:not(:hover) .app-sidebar-menu .menu-item.show > .menu-sub { + height: 0; + overflow: hidden; + transition: height 0.3s ease !important; + } + [data-kt-app-sidebar-minimize=on][data-kt-app-sidebar-hoverable=true] .app-sidebar:not(:hover) .app-sidebar-footer .btn-custom { + padding-left: 0 !important; + padding-right: 0 !important; + } + [data-kt-app-sidebar-minimize=on][data-kt-app-sidebar-hoverable=true] .app-sidebar:not(:hover) .app-sidebar-footer .btn-custom .btn-label { + width: 0; + display: none; + } + [data-kt-app-sidebar-minimize=on][data-kt-app-sidebar-hoverable=true] .app-sidebar:not(:hover) .app-sidebar-footer .btn-custom .btn-icon { + width: auto; + display: block; + } +} +[data-kt-app-layout=dark-sidebar] .app-sidebar { + background-color: #1e1e2d; + border-right: 0 !important; +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .hover-scroll-overlay-y { + scrollbar-color: #323248 transparent; +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .hover-scroll-overlay-y::-webkit-scrollbar-thumb { + background-color: #323248; +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .hover-scroll-overlay-y::-webkit-scrollbar-corner { + background-color: transparent; +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .hover-scroll-overlay-y:hover { + scrollbar-color: #323248 transparent; +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .hover-scroll-overlay-y:hover::-webkit-scrollbar-thumb { + background-color: #323248; +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .hover-scroll-overlay-y:hover::-webkit-scrollbar-corner { + background-color: transparent; +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .app-sidebar-logo { + border-bottom: 1px dashed #393945; +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .btn-custom { + color: #B5B5C3; + background-color: rgba(63, 66, 84, 0.35); +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .btn-custom i, +[data-kt-app-layout=dark-sidebar] .app-sidebar .btn-custom .svg-icon { + color: #B5B5C3; +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .btn-custom.dropdown-toggle:after { + color: #B5B5C3; +} +.btn-check:checked + [data-kt-app-layout=dark-sidebar] .app-sidebar .btn-custom, .btn-check:active + [data-kt-app-layout=dark-sidebar] .app-sidebar .btn-custom, [data-kt-app-layout=dark-sidebar] .app-sidebar .btn-custom:focus:not(.btn-active), [data-kt-app-layout=dark-sidebar] .app-sidebar .btn-custom:hover:not(.btn-active), [data-kt-app-layout=dark-sidebar] .app-sidebar .btn-custom:active:not(.btn-active), [data-kt-app-layout=dark-sidebar] .app-sidebar .btn-custom.active, [data-kt-app-layout=dark-sidebar] .app-sidebar .btn-custom.show, .show > [data-kt-app-layout=dark-sidebar] .app-sidebar .btn-custom { + color: #B5B5C3; + background-color: rgba(63, 66, 84, 0.35) !important; +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-heading { + color: #646477 !important; +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link { + color: #9D9DA6; +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link .menu-title { + color: #9D9DA6; +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link .menu-icon, +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link .menu-icon .svg-icon, +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link .menu-icon i { + color: #C5C5D8; +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link .menu-bullet .bullet { + background-color: #787887; +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: #787887; + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='%23787887'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='%23787887'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: #787887; + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='%23787887'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='%23787887'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), [data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; + color: var(--bs-primary-inverse); +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-title, [data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-title { + color: var(--bs-primary-inverse); +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon, +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon i, [data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon, +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon i { + color: var(--bs-primary-inverse); +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-bullet .bullet, [data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-bullet .bullet { + background-color: var(--bs-primary-inverse); +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-arrow:after, [data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.here > .menu-link { + transition: color 0.2s ease; + color: var(--bs-primary-inverse); +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.here > .menu-link .menu-title { + color: var(--bs-primary-inverse); +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.here > .menu-link .menu-icon, +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.here > .menu-link .menu-icon .svg-icon, +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.here > .menu-link .menu-icon i { + color: var(--bs-primary-inverse); +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.here > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary-inverse); +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.here > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.show > .menu-link { + transition: color 0.2s ease; + color: var(--bs-primary-inverse); +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.show > .menu-link .menu-title { + color: var(--bs-primary-inverse); +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.show > .menu-link .menu-icon, +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.show > .menu-link .menu-icon .svg-icon, +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.show > .menu-link .menu-icon i { + color: var(--bs-primary-inverse); +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.show > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary-inverse); +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item.show > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link.active { + transition: color 0.2s ease; + background-color: #2A2A3C; + color: var(--bs-primary-inverse); +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link.active .menu-title { + color: var(--bs-primary-inverse); +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link.active .menu-icon, +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link.active .menu-icon .svg-icon, +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link.active .menu-icon i { + color: var(--bs-primary-inverse); +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link.active .menu-bullet .bullet { + background-color: var(--bs-primary-inverse); +} +[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-link.active .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +@media (min-width: 992px) { + [data-kt-app-layout=dark-sidebar] .app-sidebar .menu-sub-lg-dropdown { + background-color: #1e1e2d; + } +} +[data-kt-app-layout=light-sidebar] .app-sidebar { + background-color: var(--bs-app-sidebar-light-bg-color); + border-right: 0 !important; +} +[data-kt-app-layout=light-sidebar] .app-sidebar .hover-scroll-overlay-y { + scrollbar-color: var(--bs-app-sidebar-light-scrollbar-color) transparent; +} +[data-kt-app-layout=light-sidebar] .app-sidebar .hover-scroll-overlay-y::-webkit-scrollbar-thumb { + background-color: var(--bs-app-sidebar-light-scrollbar-color); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .hover-scroll-overlay-y::-webkit-scrollbar-corner { + background-color: transparent; +} +[data-kt-app-layout=light-sidebar] .app-sidebar .hover-scroll-overlay-y:hover { + scrollbar-color: var(--bs-app-sidebar-light-scrollbar-color-hover) transparent; +} +[data-kt-app-layout=light-sidebar] .app-sidebar .hover-scroll-overlay-y:hover::-webkit-scrollbar-thumb { + background-color: var(--bs-app-sidebar-light-scrollbar-color-hover); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .hover-scroll-overlay-y:hover::-webkit-scrollbar-corner { + background-color: transparent; +} +[data-kt-app-layout=light-sidebar] .app-sidebar .app-sidebar-logo { + border-bottom: 1px solid var(--bs-app-sidebar-light-separator-color); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu { + font-weight: 500; +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item .menu-heading { + color: var(--bs-app-sidebar-light-menu-heading-color) !important; +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item .menu-link { + color: var(--bs-gray-700); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item .menu-link .menu-title { + color: var(--bs-gray-700); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item .menu-link .menu-icon, +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item .menu-link .menu-icon .svg-icon, +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item .menu-link .menu-icon i { + color: var(--bs-gray-500); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-gray-500); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-500); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-500%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-500%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-500); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-500%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-500%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), [data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; + color: var(--bs-gray-900); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-title, [data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-title { + color: var(--bs-gray-900); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon, +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon i, [data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon, +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon i { + color: var(--bs-gray-700); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-bullet .bullet, [data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-bullet .bullet { + background-color: var(--bs-gray-700); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-arrow:after, [data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-700); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-700%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-700%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-700); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-700%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-700%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.show > .menu-link { + transition: color 0.2s ease; + color: var(--bs-gray-900); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.show > .menu-link .menu-title { + color: var(--bs-gray-900); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.show > .menu-link .menu-icon, +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.show > .menu-link .menu-icon .svg-icon, +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.show > .menu-link .menu-icon i { + color: var(--bs-gray-700); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.show > .menu-link .menu-bullet .bullet { + background-color: var(--bs-gray-700); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.show > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-700); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-700%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-700%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-700); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-700%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-700%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.here > .menu-link { + transition: color 0.2s ease; + color: var(--bs-gray-900); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.here > .menu-link .menu-title { + color: var(--bs-gray-900); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.here > .menu-link .menu-icon, +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.here > .menu-link .menu-icon .svg-icon, +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.here > .menu-link .menu-icon i { + color: var(--bs-gray-700); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.here > .menu-link .menu-bullet .bullet { + background-color: var(--bs-gray-700); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item.here > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-700); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-700%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-700%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-700); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-700%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-700%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item .menu-link.active { + transition: color 0.2s ease; + background-color: var(--bs-app-sidebar-light-menu-link-bg-color-active); + color: var(--bs-primary); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item .menu-link.active .menu-title { + color: var(--bs-primary); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item .menu-link.active .menu-icon, +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item .menu-link.active .menu-icon .svg-icon, +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item .menu-link.active .menu-icon i { + color: var(--bs-primary); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item .menu-link.active .menu-bullet .bullet { + background-color: var(--bs-primary); +} +[data-kt-app-layout=light-sidebar] .app-sidebar .menu .menu-item .menu-link.active .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} + +[data-kt-app-layout=light-sidebar][data-kt-app-header-fixed=true] .app-header { + background-color: var(--bs-app-bg-color); + box-shadow: none; + border-bottom: 1px dashed var(--bs-app-sidebar-light-separator-color); +} +[data-kt-app-layout=light-sidebar][data-kt-app-header-fixed=true] .app-sidebar .app-sidebar-logo { + border-bottom: 1px dashed var(--bs-app-sidebar-light-separator-color); +} + +.app-header-menu .menu .menu-item .menu-link { + color: var(--bs-gray-700); +} +.app-header-menu .menu .menu-item .menu-link .menu-title { + color: var(--bs-gray-700); +} +.app-header-menu .menu .menu-item .menu-link .menu-icon, +.app-header-menu .menu .menu-item .menu-link .menu-icon .svg-icon, +.app-header-menu .menu .menu-item .menu-link .menu-icon i { + color: var(--bs-gray-500); +} +.app-header-menu .menu .menu-item .menu-link .menu-bullet .bullet { + background-color: var(--bs-gray-500); +} +.app-header-menu .menu .menu-item .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-500); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-500%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-500%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-500); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-500%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-gray-500%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.app-header-menu .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), .app-header-menu .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; + background-color: var(--bs-menu-link-bg-color-active); + color: var(--bs-primary); +} +.app-header-menu .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-title, .app-header-menu .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-title { + color: var(--bs-primary); +} +.app-header-menu .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon, +.app-header-menu .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.app-header-menu .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon i, .app-header-menu .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon, +.app-header-menu .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +.app-header-menu .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon i { + color: var(--bs-primary); +} +.app-header-menu .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-bullet .bullet, .app-header-menu .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.app-header-menu .menu .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-arrow:after, .app-header-menu .menu .menu-item:not(.here) .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.app-header-menu .menu .menu-item.show > .menu-link { + transition: color 0.2s ease; + color: var(--bs-primary); +} +.app-header-menu .menu .menu-item.show > .menu-link .menu-title { + color: var(--bs-primary); +} +.app-header-menu .menu .menu-item.show > .menu-link .menu-icon, +.app-header-menu .menu .menu-item.show > .menu-link .menu-icon .svg-icon, +.app-header-menu .menu .menu-item.show > .menu-link .menu-icon i { + color: var(--bs-primary); +} +.app-header-menu .menu .menu-item.show > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.app-header-menu .menu .menu-item.show > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.app-header-menu .menu .menu-item.here > .menu-link { + transition: color 0.2s ease; + background-color: var(--bs-menu-link-bg-color-active); + color: var(--bs-primary); +} +.app-header-menu .menu .menu-item.here > .menu-link .menu-title { + color: var(--bs-primary); +} +.app-header-menu .menu .menu-item.here > .menu-link .menu-icon, +.app-header-menu .menu .menu-item.here > .menu-link .menu-icon .svg-icon, +.app-header-menu .menu .menu-item.here > .menu-link .menu-icon i { + color: var(--bs-primary); +} +.app-header-menu .menu .menu-item.here > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.app-header-menu .menu .menu-item.here > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.app-header-menu .menu .menu-item .menu-link.active { + transition: color 0.2s ease; + background-color: var(--bs-menu-link-bg-color-active); + color: var(--bs-primary); +} +.app-header-menu .menu .menu-item .menu-link.active .menu-title { + color: var(--bs-primary); +} +.app-header-menu .menu .menu-item .menu-link.active .menu-icon, +.app-header-menu .menu .menu-item .menu-link.active .menu-icon .svg-icon, +.app-header-menu .menu .menu-item .menu-link.active .menu-icon i { + color: var(--bs-primary); +} +.app-header-menu .menu .menu-item .menu-link.active .menu-bullet .bullet { + background-color: var(--bs-primary); +} +.app-header-menu .menu .menu-item .menu-link.active .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ +} +.app-header-menu .menu-extended { + --bs-menu-link-bg-color-active: rgba(var(--bs-gray-100-rgb), 0.7); + --bs-menu-link-bg-color-hover: rgba(var(--bs-gray-100-rgb), 0.7); +} +.app-header-menu .menu-extended .menu-custom-icon { + background-color: var(--bs-gray-100); +} +.app-header-menu .menu-extended .menu-link.active .menu-custom-icon, .app-header-menu .menu-extended .menu-link:hover .menu-custom-icon { + background-color: var(--bs-gray-200); +} + +@media (min-width: 992px) { + .app-header-menu .menu > .menu-item { + margin-right: 0.5rem; + } + .app-header-menu .menu > .menu-item > .menu-link { + padding-top: 0.775rem; + padding-bottom: 0.775rem; + font-weight: 500; + } + .app-header-menu .menu > .menu-item.here > .menu-link { + transition: color 0.2s ease; + background-color: var(--bs-app-header-base-menu-link-bg-color-active); + color: var(--bs-primary); + } + .app-header-menu .menu > .menu-item.here > .menu-link .menu-title { + color: var(--bs-primary); + } + .app-header-menu .menu > .menu-item.here > .menu-link .menu-icon, +.app-header-menu .menu > .menu-item.here > .menu-link .menu-icon .svg-icon, +.app-header-menu .menu > .menu-item.here > .menu-link .menu-icon i { + color: var(--bs-primary); + } + .app-header-menu .menu > .menu-item.here > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary); + } + .app-header-menu .menu > .menu-item.here > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ + } +} +@media (max-width: 991.98px) { + .app-header .page-title { + display: none !important; + } +} +[data-kt-app-layout=dark-header] .app-header { + background-color: #1e1e2d; + border-bottom: 0 !important; +} +[data-kt-app-layout=dark-header] .app-header .btn-custom { + color: #B5B5C3; +} +[data-kt-app-layout=dark-header] .app-header .btn-custom i, +[data-kt-app-layout=dark-header] .app-header .btn-custom .svg-icon { + color: #B5B5C3; +} +[data-kt-app-layout=dark-header] .app-header .btn-custom.dropdown-toggle:after { + color: #B5B5C3; +} +.btn-check:checked + [data-kt-app-layout=dark-header] .app-header .btn-custom, .btn-check:active + [data-kt-app-layout=dark-header] .app-header .btn-custom, [data-kt-app-layout=dark-header] .app-header .btn-custom:focus:not(.btn-active), [data-kt-app-layout=dark-header] .app-header .btn-custom:hover:not(.btn-active), [data-kt-app-layout=dark-header] .app-header .btn-custom:active:not(.btn-active), [data-kt-app-layout=dark-header] .app-header .btn-custom.active, [data-kt-app-layout=dark-header] .app-header .btn-custom.show, .show > [data-kt-app-layout=dark-header] .app-header .btn-custom { + color: #B5B5C3; + background-color: rgba(63, 66, 84, 0.35) !important; +} +.btn-check:checked + [data-kt-app-layout=dark-header] .app-header .btn-custom i, +.btn-check:checked + [data-kt-app-layout=dark-header] .app-header .btn-custom .svg-icon, .btn-check:active + [data-kt-app-layout=dark-header] .app-header .btn-custom i, +.btn-check:active + [data-kt-app-layout=dark-header] .app-header .btn-custom .svg-icon, [data-kt-app-layout=dark-header] .app-header .btn-custom:focus:not(.btn-active) i, +[data-kt-app-layout=dark-header] .app-header .btn-custom:focus:not(.btn-active) .svg-icon, [data-kt-app-layout=dark-header] .app-header .btn-custom:hover:not(.btn-active) i, +[data-kt-app-layout=dark-header] .app-header .btn-custom:hover:not(.btn-active) .svg-icon, [data-kt-app-layout=dark-header] .app-header .btn-custom:active:not(.btn-active) i, +[data-kt-app-layout=dark-header] .app-header .btn-custom:active:not(.btn-active) .svg-icon, [data-kt-app-layout=dark-header] .app-header .btn-custom.active i, +[data-kt-app-layout=dark-header] .app-header .btn-custom.active .svg-icon, [data-kt-app-layout=dark-header] .app-header .btn-custom.show i, +[data-kt-app-layout=dark-header] .app-header .btn-custom.show .svg-icon, .show > [data-kt-app-layout=dark-header] .app-header .btn-custom i, +.show > [data-kt-app-layout=dark-header] .app-header .btn-custom .svg-icon { + color: var(--bs-primary); +} +.btn-check:checked + [data-kt-app-layout=dark-header] .app-header .btn-custom.dropdown-toggle:after, .btn-check:active + [data-kt-app-layout=dark-header] .app-header .btn-custom.dropdown-toggle:after, [data-kt-app-layout=dark-header] .app-header .btn-custom:focus:not(.btn-active).dropdown-toggle:after, [data-kt-app-layout=dark-header] .app-header .btn-custom:hover:not(.btn-active).dropdown-toggle:after, [data-kt-app-layout=dark-header] .app-header .btn-custom:active:not(.btn-active).dropdown-toggle:after, [data-kt-app-layout=dark-header] .app-header .btn-custom.active.dropdown-toggle:after, [data-kt-app-layout=dark-header] .app-header .btn-custom.show.dropdown-toggle:after, .show > [data-kt-app-layout=dark-header] .app-header .btn-custom.dropdown-toggle:after { + color: var(--bs-primary); +} +@media (min-width: 992px) { + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item > .menu-link { + color: #9D9DA6; + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item > .menu-link .menu-title { + color: #9D9DA6; + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item > .menu-link .menu-icon, +[data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item > .menu-link .menu-icon .svg-icon, +[data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item > .menu-link .menu-icon i { + color: #C5C5D8; + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item > .menu-link .menu-bullet .bullet { + background-color: #787887; + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: #787887; + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='%23787887'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='%23787887'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: #787887; + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='%23787887'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='%23787887'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here), [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item:not(.here) > .menu-link:hover:not(.disabled):not(.active):not(.here) { + transition: color 0.2s ease; + background-color: #2A2A3C; + color: var(--bs-primary-inverse); + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-title, [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item:not(.here) > .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-title { + color: var(--bs-primary-inverse); + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon, +[data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +[data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-icon i, [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item:not(.here) > .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon, +[data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item:not(.here) > .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon .svg-icon, +[data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item:not(.here) > .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-icon i { + color: var(--bs-primary-inverse); + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-bullet .bullet, [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item:not(.here) > .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-bullet .bullet { + background-color: var(--bs-primary-inverse); + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.hover:not(.here) > .menu-link:not(.disabled):not(.active):not(.here) .menu-arrow:after, [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item:not(.here) > .menu-link:hover:not(.disabled):not(.active):not(.here) .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.show > .menu-link { + transition: color 0.2s ease; + color: var(--bs-primary-inverse); + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.show > .menu-link .menu-title { + color: var(--bs-primary-inverse); + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.show > .menu-link .menu-icon, +[data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.show > .menu-link .menu-icon .svg-icon, +[data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.show > .menu-link .menu-icon i { + color: var(--bs-primary-inverse); + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.show > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary-inverse); + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.show > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.here > .menu-link { + transition: color 0.2s ease; + background-color: #2A2A3C; + color: var(--bs-primary-inverse); + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.here > .menu-link .menu-title { + color: var(--bs-primary-inverse); + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.here > .menu-link .menu-icon, +[data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.here > .menu-link .menu-icon .svg-icon, +[data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.here > .menu-link .menu-icon i { + color: var(--bs-primary-inverse); + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.here > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary-inverse); + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item.here > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item > .menu-link.active { + transition: color 0.2s ease; + background-color: #2A2A3C; + color: var(--bs-primary-inverse); + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item > .menu-link.active .menu-title { + color: var(--bs-primary-inverse); + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item > .menu-link.active .menu-icon, +[data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item > .menu-link.active .menu-icon .svg-icon, +[data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item > .menu-link.active .menu-icon i { + color: var(--bs-primary-inverse); + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item > .menu-link.active .menu-bullet .bullet { + background-color: var(--bs-primary-inverse); + } + [data-kt-app-layout=dark-header] .app-header-menu .menu > .menu-item > .menu-link.active .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary-inverse%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ + } +} + +@media (min-width: 992px) { + [data-kt-app-layout=light-sidebar] .app-header-menu .menu > .menu-item.here > .menu-link { + transition: color 0.2s ease; + background-color: var(--bs-app-sidebar-light-header-menu-link-bg-color-active); + color: var(--bs-primary); + } + [data-kt-app-layout=light-sidebar] .app-header-menu .menu > .menu-item.here > .menu-link .menu-title { + color: var(--bs-primary); + } + [data-kt-app-layout=light-sidebar] .app-header-menu .menu > .menu-item.here > .menu-link .menu-icon, +[data-kt-app-layout=light-sidebar] .app-header-menu .menu > .menu-item.here > .menu-link .menu-icon .svg-icon, +[data-kt-app-layout=light-sidebar] .app-header-menu .menu > .menu-item.here > .menu-link .menu-icon i { + color: var(--bs-primary); + } + [data-kt-app-layout=light-sidebar] .app-header-menu .menu > .menu-item.here > .menu-link .menu-bullet .bullet { + background-color: var(--bs-primary); + } + [data-kt-app-layout=light-sidebar] .app-header-menu .menu > .menu-item.here > .menu-link .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ + } + [data-kt-app-layout=light-sidebar] .app-header-menu .menu > .menu-item > .menu-link.active { + transition: color 0.2s ease; + background-color: var(--bs-app-sidebar-light-header-menu-link-bg-color-active); + color: var(--bs-primary); + } + [data-kt-app-layout=light-sidebar] .app-header-menu .menu > .menu-item > .menu-link.active .menu-title { + color: var(--bs-primary); + } + [data-kt-app-layout=light-sidebar] .app-header-menu .menu > .menu-item > .menu-link.active .menu-icon, +[data-kt-app-layout=light-sidebar] .app-header-menu .menu > .menu-item > .menu-link.active .menu-icon .svg-icon, +[data-kt-app-layout=light-sidebar] .app-header-menu .menu > .menu-item > .menu-link.active .menu-icon i { + color: var(--bs-primary); + } + [data-kt-app-layout=light-sidebar] .app-header-menu .menu > .menu-item > .menu-link.active .menu-bullet .bullet { + background-color: var(--bs-primary); + } + [data-kt-app-layout=light-sidebar] .app-header-menu .menu > .menu-item > .menu-link.active .menu-arrow:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M2.72011 2.76429L4.46358 1.02083C4.63618 0.848244 4.63617 0.568419 4.46358 0.395831C4.29099 0.223244 4.01118 0.223244 3.83861 0.395831L1.52904 2.70537C1.36629 2.86808 1.36629 3.13191 1.52904 3.29462L3.83861 5.60419C4.01117 5.77675 4.29099 5.77675 4.46358 5.60419C4.63617 5.43156 4.63617 5.15175 4.46358 4.97919L2.72011 3.23571C2.58994 3.10554 2.58994 2.89446 2.72011 2.76429Z'/%3e%3c/svg%3e"); + /*rtl:begin:remove*/ + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-primary%29'%3e%3cpath d='M3.27989 3.23571L1.53642 4.97917C1.36382 5.15176 1.36383 5.43158 1.53642 5.60417C1.70901 5.77676 1.98882 5.77676 2.16139 5.60417L4.47096 3.29463C4.63371 3.13192 4.63371 2.86809 4.47096 2.70538L2.16139 0.395812C1.98883 0.22325 1.70901 0.22325 1.53642 0.395812C1.36383 0.568437 1.36383 0.84825 1.53642 1.02081L3.27989 2.76429C3.41006 2.89446 3.41006 3.10554 3.27989 3.23571Z'/%3e%3c/svg%3e"); + /*rtl:end:remove*/ + } +} + +@media (min-width: 992px) { + [data-kt-app-layout=light-sidebar]:not([data-kt-app-header-fixed=true]) .app-header { + background-color: transparent; + box-shadow: none; + border-bottom: 1px solid var(--bs-app-sidebar-light-separator-color); + } +} +@media (max-width: 991.98px) { + [data-kt-app-layout=light-sidebar]:not([data-kt-app-header-fixed-mobile=true]) .app-header { + background-color: transparent; + box-shadow: none; + border-bottom: 1px solid var(--bs-app-sidebar-light-separator-color); + } +} +@media (min-width: 992px) { + [data-kt-app-toolbar-enabled=true]:not([data-kt-app-toolbar-fixed=true]) .app-content { + padding-top: 0; + } +} +@media (max-width: 991.98px) { + [data-kt-app-toolbar-enabled=true]:not([data-kt-app-toolbar-fixed-mobile=true]) .app-content { + padding-top: 0; + } +} +:is([data-kt-app-layout=light-sidebar], [data-kt-app-layout=light-header], [data-kt-app-layout=dark-header]) .app-toolbar .form-select.form-select { + background-color: var(--bs-body-bg) !important; +} + +@media (min-width: 992px) { + body:not([data-kt-app-toolbar-fixed=true]) .app-toolbar { + height: auto; + background-color: transparent; + border-top: 0; + border-bottom: 0; + box-shadow: none; + } +} +@media (max-width: 991.98px) { + body:not([data-kt-app-toolbar-fixed-mobile=true]) .app-toolbar { + height: auto; + background-color: transparent; + border-top: 0; + border-bottom: 0; + box-shadow: none; + } +} +@media (min-width: 992px) { + [data-kt-app-layout=dark-header] .app-header .page-heading { + color: #ffffff !important; + } +} \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/account/api-keys/api-keys.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/account/api-keys/api-keys.js new file mode 100644 index 0000000..f4743ce --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/account/api-keys/api-keys.js @@ -0,0 +1,68 @@ +"use strict"; + +// Class definition +var KTAccountAPIKeys = function () { + // Private functions + var initLicenceCopy = function() { + KTUtil.each(document.querySelectorAll('#kt_api_keys_table [data-action="copy"]'), function(button) { + var tr = button.closest('tr'); + var license = KTUtil.find(tr, '[data-bs-target="license"]'); + + var clipboard = new ClipboardJS(button, { + target: license, + text: function() { + return license.innerHTML; + } + }); + + clipboard.on('success', function(e) { + // Icons + var svgIcon = button.querySelector('.svg-icon'); + var checkIcon = button.querySelector('.bi.bi-check'); + + // exit if check icon is already shown + if (checkIcon) { + return; + } + + // Create check icon + checkIcon = document.createElement('i'); + checkIcon.classList.add('bi'); + checkIcon.classList.add('bi-check'); + checkIcon.classList.add('fs-2x'); + + // Append check icon + button.appendChild(checkIcon); + + // Highlight target + license.classList.add('text-success'); + + // Hide copy icon + svgIcon.classList.add('d-none'); + + // Set 3 seconds timeout to hide the check icon and show copy icon back + setTimeout(function() { + // Remove check icon + svgIcon.classList.remove('d-none'); + // Show check icon back + button.removeChild(checkIcon); + + // Remove highlight + license.classList.remove('text-success'); + }, 3000); + }); + }); + } + + // Public methods + return { + init: function () { + initLicenceCopy(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTAccountAPIKeys.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/account/billing/general.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/account/billing/general.js new file mode 100644 index 0000000..f8265fe --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/account/billing/general.js @@ -0,0 +1,138 @@ +"use strict"; + +// Class definition +var KTAccountBillingGeneral = function () { + // Private variables + var cancelSubscriptionButton; + + // Private functions + var handlePlan = function () { + cancelSubscriptionButton.addEventListener('click', function (e) { + e.preventDefault(); + + swal.fire({ + text: "Are you sure you would like to cancel your subscription ?", + icon: "warning", + buttonsStyling: false, + showDenyButton: true, + confirmButtonText: "Yes", + denyButtonText: 'No', + customClass: { + confirmButton: "btn btn-primary", + denyButton: "btn btn-light-danger" + } + }).then((result) => { + if (result.isConfirmed) { + Swal.fire({ + text: 'Your subscription has been canceled.', + icon: 'success', + confirmButtonText: "Ok", + buttonsStyling: false, + customClass: { + confirmButton: "btn btn-light-primary" + } + }) + } + }); + }); + } + + var handleCardDelete = function() { + KTUtil.on(document.body, '[data-kt-billing-action="card-delete"]', 'click', function(e) { + e.preventDefault(); + + var el = this; + + swal.fire({ + text: "Are you sure you would like to delete selected card ?", + icon: "warning", + buttonsStyling: false, + showDenyButton: true, + confirmButtonText: "Yes", + denyButtonText: 'No', + customClass: { + confirmButton: "btn btn-primary", + denyButton: "btn btn-light-danger" + } + }).then((result) => { + if (result.isConfirmed) { + el.setAttribute('data-kt-indicator', 'on'); + el.disabled = true; + + setTimeout(function() { + Swal.fire({ + text: 'Your selected card has been successfully deleted', + icon: 'success', + confirmButtonText: "Ok", + buttonsStyling: false, + customClass: { + confirmButton: "btn btn-light-primary" + } + }).then((result) => { + el.closest('[data-kt-billing-element="card"]').remove(); + }); + }, 2000); + } + }); + }); + } + + var handleAddressDelete = function() { + KTUtil.on(document.body, '[data-kt-billing-action="address-delete"]', 'click', function(e) { + e.preventDefault(); + + var el = this; + + swal.fire({ + text: "Are you sure you would like to delete selected address ?", + icon: "warning", + buttonsStyling: false, + showDenyButton: true, + confirmButtonText: "Yes", + denyButtonText: 'No', + customClass: { + confirmButton: "btn btn-primary", + denyButton: "btn btn-light-danger" + } + }).then((result) => { + if (result.isConfirmed) { + el.setAttribute('data-kt-indicator', 'on'); + el.disabled = true; + + setTimeout(function() { + Swal.fire({ + text: 'Your selected address has been successfully deleted', + icon: 'success', + confirmButtonText: "Ok", + buttonsStyling: false, + customClass: { + confirmButton: "btn btn-light-primary" + } + }).then((result) => { + el.closest('[data-kt-billing-element="address"]').remove(); + }); + }, 2000); + } + }); + }); + } + + // Public methods + return { + init: function () { + cancelSubscriptionButton = document.querySelector('#kt_account_billing_cancel_subscription_btn'); + + if ( cancelSubscriptionButton ) { + handlePlan(); + } + + handleCardDelete(); + handleAddressDelete(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTAccountBillingGeneral.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/account/orders/classic.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/account/orders/classic.js new file mode 100644 index 0000000..143e2e6 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/account/orders/classic.js @@ -0,0 +1,108 @@ +"use strict"; + +// Class definition +var KTDatatablesClassic = function () { + // Private functions + + var initClassic = function () { + + // Set date data order + const table = document.getElementById('kt_orders_classic'); + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[1].innerHTML, "MMM D, YYYY").format('x'); + dateRow[1].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + const datatable = $(table).DataTable({ + "info": false, + 'order': [] + }); + + // Filter dropdown elements + const filterOrders = document.getElementById('kt_filter_orders'); + const filterYear = document.getElementById('kt_filter_year'); + + // Filter by order status --- official docs reference: https://datatables.net/reference/api/search() + filterOrders.addEventListener('change', function (e) { + datatable.column(3).search(e.target.value).draw(); + }); + + // Filter by date --- official docs reference: https://momentjs.com/docs/ + var minDate; + var maxDate; + filterYear.addEventListener('change', function (e) { + const value = e.target.value; + switch (value) { + case 'thisyear': { + minDate = moment().startOf('year').format('x'); + maxDate = moment().endOf('year').format('x'); + datatable.draw(); + break; + } + case 'thismonth': { + minDate = moment().startOf('month').format('x'); + maxDate = moment().endOf('month').format('x'); + datatable.draw(); + break; + } + case 'lastmonth': { + minDate = moment().subtract(1, 'months').startOf('month').format('x'); + maxDate = moment().subtract(1, 'months').endOf('month').format('x'); + datatable.draw(); + break; + } + case 'last90days': { + minDate = moment().subtract(30, 'days').format('x'); + maxDate = moment().format('x'); + datatable.draw(); + break; + } + default: { + minDate = moment().subtract(100, 'years').startOf('month').format('x'); + maxDate = moment().add(1, 'months').endOf('month').format('x'); + datatable.draw(); + break; + } + } + }); + + // Date range filter --- offical docs reference: https://datatables.net/examples/plug-ins/range_filtering.html + $.fn.dataTable.ext.search.push( + function (settings, data, dataIndex) { + var min = minDate; + var max = maxDate; + var date = parseFloat(moment(data[1]).format('x')) || 0; // use data for the age column + + if ((isNaN(min) && isNaN(max)) || + (isNaN(min) && date <= max) || + (min <= date && isNaN(max)) || + (min <= date && date <= max)) { + return true; + } + return false; + } + ); + + // Search --- official docs reference: https://datatables.net/reference/api/search() + var filterSearch = document.getElementById('kt_filter_search'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Public methods + return { + init: function () { + initClassic(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTDatatablesClassic.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/account/referrals/referral-program.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/account/referrals/referral-program.js new file mode 100644 index 0000000..94d09e8 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/account/referrals/referral-program.js @@ -0,0 +1,43 @@ +"use strict"; + +// Class definition +var KTAccountReferralsReferralProgram = function () { + // Private functions + + var initReferralProgrammClipboard = function() { + var button = document.querySelector('#kt_referral_program_link_copy_btn'); + var input = document.querySelector('#kt_referral_link_input'); + var clipboard = new ClipboardJS(button); + + clipboard.on('success', function(e) { + var buttonCaption = button.innerHTML; + //Add bgcolor + input.classList.add('bg-success'); + input.classList.add('text-inverse-success'); + + button.innerHTML = 'Copied!'; + + setTimeout(function() { + button.innerHTML = buttonCaption; + + // Remove bgcolor + input.classList.remove('bg-success'); + input.classList.remove('text-inverse-success'); + }, 3000); // 3seconds + + e.clearSelection(); + }); + } + + // Public methods + return { + init: function () { + initReferralProgrammClipboard(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTAccountReferralsReferralProgram.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/account/security/license-usage.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/account/security/license-usage.js new file mode 100644 index 0000000..ac5983c --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/account/security/license-usage.js @@ -0,0 +1,68 @@ +"use strict"; + +// Class definition +var KTAccountSecurityLicenseUsage = function () { + // Private functions + var initLicenceCopy = function() { + KTUtil.each(document.querySelectorAll('#kt_security_license_usage_table [data-action="copy"]'), function(button) { + var tr = button.closest('tr'); + var license = KTUtil.find(tr, '[data-bs-target="license"]'); + + var clipboard = new ClipboardJS(button, { + target: license, + text: function() { + return license.innerHTML; + } + }); + + clipboard.on('success', function(e) { + // Icons + var svgIcon = button.querySelector('.svg-icon'); + var checkIcon = button.querySelector('.bi.bi-check'); + + // exit if check icon is already shown + if (checkIcon) { + return; + } + + // Create check icon + checkIcon = document.createElement('i'); + checkIcon.classList.add('bi'); + checkIcon.classList.add('bi-check'); + checkIcon.classList.add('fs-2x'); + + // Append check icon + button.appendChild(checkIcon); + + // Highlight target + license.classList.add('text-success'); + + // Hide copy icon + svgIcon.classList.add('d-none'); + + // Set 3 seconds timeout to hide the check icon and show copy icon back + setTimeout(function() { + // Remove check icon + svgIcon.classList.remove('d-none'); + // Show check icon back + button.removeChild(checkIcon); + + // Remove highlight + license.classList.remove('text-success'); + }, 3000); + }); + }); + } + + // Public methods + return { + init: function () { + initLicenceCopy(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTAccountSecurityLicenseUsage.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/account/security/security-summary.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/account/security/security-summary.js new file mode 100644 index 0000000..3a0f586 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/account/security/security-summary.js @@ -0,0 +1,155 @@ +"use strict"; + +// Class definition +var KTAccountSecuritySummary = function () { + // Private functions + var initChart = function(tabSelector, chartSelector, data1, data2, initByDefault) { + var element = document.querySelector(chartSelector); + var height = parseInt(KTUtil.css(element, 'height')); + + if (!element) { + return; + } + + var options = { + series: [{ + name: 'Net Profit', + data: data1 + }, { + name: 'Revenue', + data: data2 + }], + chart: { + fontFamily: 'inherit', + type: 'bar', + height: height, + toolbar: { + show: false + } + }, + plotOptions: { + bar: { + horizontal: false, + columnWidth: ['35%'], + borderRadius: 6 + } + }, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + stroke: { + show: true, + width: 2, + colors: ['transparent'] + }, + xaxis: { + categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + style: { + colors: KTUtil.getCssVariableValue('--bs-gray-400'), + fontSize: '12px' + } + } + }, + yaxis: { + labels: { + style: { + colors: KTUtil.getCssVariableValue('--bs-gray-400'), + fontSize: '12px' + } + } + }, + fill: { + opacity: 1 + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function (val) { + return "$" + val + " thousands" + } + } + }, + colors: [KTUtil.getCssVariableValue('--bs-primary'), KTUtil.getCssVariableValue('--bs-gray-200')], + grid: { + borderColor: KTUtil.getCssVariableValue('--bs-gray-200'), + strokeDashArray: 4, + yaxis: { + lines: { + show: true + } + } + } + }; + + var chart = new ApexCharts(element, options); + + var init = false; + var tab = document.querySelector(tabSelector); + + if (initByDefault === true) { + setTimeout(function() { + chart.render(); + init = true; + }, 500); + } + + tab.addEventListener('shown.bs.tab', function (event) { + if (init == false) { + chart.render(); + init = true; + } + }) + } + + // Public methods + return { + init: function () { + initChart('#kt_security_summary_tab_hours_agents', '#kt_security_summary_chart_hours_agents', [50, 70, 90, 117, 80, 65, 80, 90, 115, 95, 70, 84], [50, 70, 90, 117, 80, 65, 70, 90, 115, 95, 70, 84], true); + initChart('#kt_security_summary_tab_hours_clients', '#kt_security_summary_chart_hours_clients', [50, 70, 90, 117, 80, 65, 80, 90, 115, 95, 70, 84], [50, 70, 90, 117, 80, 65, 80, 90, 115, 95, 70, 84], false); + + initChart('#kt_security_summary_tab_day', '#kt_security_summary_chart_day_agents', [50, 70, 80, 100, 90, 65, 80, 90, 115, 95, 70, 84], [50, 70, 90, 117, 60, 65, 80, 90, 100, 95, 70, 84], false); + initChart('#kt_security_summary_tab_day_clients', '#kt_security_summary_chart_day_clients', [50, 70, 100, 90, 80, 65, 80, 90, 115, 95, 70, 84], [50, 70, 90, 115, 80, 65, 80, 90, 115, 95, 70, 84], false); + + initChart('#kt_security_summary_tab_week', '#kt_security_summary_chart_week_agents', [50, 70, 75, 117, 80, 65, 80, 90, 115, 95, 50, 84], [50, 60, 90, 117, 80, 65, 80, 90, 115, 95, 70, 84], false); + initChart('#kt_security_summary_tab_week_clients', '#kt_security_summary_chart_week_clients', [50, 70, 90, 117, 80, 65, 80, 90, 100, 80, 70, 84], [50, 70, 90, 117, 80, 65, 80, 90, 100, 95, 70, 84], false); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTAccountSecuritySummary.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/account/settings/deactivate-account.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/account/settings/deactivate-account.js new file mode 100644 index 0000000..08a50ce --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/account/settings/deactivate-account.js @@ -0,0 +1,116 @@ +"use strict"; + +// Class definition +var KTAccountSettingsDeactivateAccount = function () { + // Private variables + var form; + var validation; + var submitButton; + + // Private functions + var initValidation = function () { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validation = FormValidation.formValidation( + form, + { + fields: { + deactivate: { + validators: { + notEmpty: { + message: 'Please check the box to deactivate your account' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + submitButton: new FormValidation.plugins.SubmitButton(), + //defaultSubmit: new FormValidation.plugins.DefaultSubmit(), // Uncomment this line to enable normal button submit after form validation + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + } + + var handleForm = function () { + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + validation.validate().then(function (status) { + if (status == 'Valid') { + + swal.fire({ + text: "Are you sure you would like to deactivate your account?", + icon: "warning", + buttonsStyling: false, + showDenyButton: true, + confirmButtonText: "Yes", + denyButtonText: 'No', + customClass: { + confirmButton: "btn btn-light-primary", + denyButton: "btn btn-danger" + } + }).then((result) => { + if (result.isConfirmed) { + Swal.fire({ + text: 'Your account has been deactivated.', + icon: 'success', + confirmButtonText: "Ok", + buttonsStyling: false, + customClass: { + confirmButton: "btn btn-light-primary" + } + }) + } else if (result.isDenied) { + Swal.fire({ + text: 'Account not deactivated.', + icon: 'info', + confirmButtonText: "Ok", + buttonsStyling: false, + customClass: { + confirmButton: "btn btn-light-primary" + } + }) + } + }); + + } else { + swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-light-primary" + } + }); + } + }); + }); + } + + // Public methods + return { + init: function () { + form = document.querySelector('#kt_account_deactivate_form'); + + if (!form) { + return; + } + + submitButton = document.querySelector('#kt_account_deactivate_account_submit'); + + initValidation(); + handleForm(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTAccountSettingsDeactivateAccount.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/account/settings/overview.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/account/settings/overview.js new file mode 100644 index 0000000..9c47829 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/account/settings/overview.js @@ -0,0 +1,21 @@ +"use strict"; + +// Class definition +var KTAccountSettingsOverview = function () { + // Private functions + var initSettings = function() { + + } + + // Public methods + return { + init: function () { + initSettings(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTAccountSettingsOverview.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/account/settings/profile-details.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/account/settings/profile-details.js new file mode 100644 index 0000000..d70ab38 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/account/settings/profile-details.js @@ -0,0 +1,155 @@ +"use strict"; + +// Class definition +var KTAccountSettingsProfileDetails = function () { + // Private variables + var form; + var submitButton; + var validation; + + // Private functions + var initValidation = function () { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validation = FormValidation.formValidation( + form, + { + fields: { + fname: { + validators: { + notEmpty: { + message: 'First name is required' + } + } + }, + lname: { + validators: { + notEmpty: { + message: 'Last name is required' + } + } + }, + company: { + validators: { + notEmpty: { + message: 'Company name is required' + } + } + }, + phone: { + validators: { + notEmpty: { + message: 'Contact phone number is required' + } + } + }, + country: { + validators: { + notEmpty: { + message: 'Please select a country' + } + } + }, + timezone: { + validators: { + notEmpty: { + message: 'Please select a timezone' + } + } + }, + 'communication[]': { + validators: { + notEmpty: { + message: 'Please select at least one communication method' + } + } + }, + language: { + validators: { + notEmpty: { + message: 'Please select a language' + } + } + }, + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + submitButton: new FormValidation.plugins.SubmitButton(), + //defaultSubmit: new FormValidation.plugins.DefaultSubmit(), // Uncomment this line to enable normal button submit after form validation + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Select2 validation integration + $(form.querySelector('[name="country"]')).on('change', function() { + // Revalidate the color field when an option is chosen + validation.revalidateField('country'); + }); + + $(form.querySelector('[name="language"]')).on('change', function() { + // Revalidate the color field when an option is chosen + validation.revalidateField('language'); + }); + + $(form.querySelector('[name="timezone"]')).on('change', function() { + // Revalidate the color field when an option is chosen + validation.revalidateField('timezone'); + }); + } + + var handleForm = function () { + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + validation.validate().then(function (status) { + if (status == 'Valid') { + + swal.fire({ + text: "Thank you! You've updated your basic info", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-light-primary" + } + }); + + } else { + swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-light-primary" + } + }); + } + }); + }); + } + + // Public methods + return { + init: function () { + form = document.getElementById('kt_account_profile_details_form'); + + if (!form) { + return; + } + + submitButton = form.querySelector('#kt_account_profile_details_submit'); + + initValidation(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTAccountSettingsProfileDetails.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/account/settings/signin-methods.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/account/settings/signin-methods.js new file mode 100644 index 0000000..39fc01e --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/account/settings/signin-methods.js @@ -0,0 +1,236 @@ +"use strict"; + +// Class definition +var KTAccountSettingsSigninMethods = function () { + var signInForm; + var signInMainEl; + var signInEditEl; + var passwordMainEl; + var passwordEditEl; + var signInChangeEmail; + var signInCancelEmail; + var passwordChange; + var passwordCancel; + + var toggleChangeEmail = function () { + signInMainEl.classList.toggle('d-none'); + signInChangeEmail.classList.toggle('d-none'); + signInEditEl.classList.toggle('d-none'); + } + + var toggleChangePassword = function () { + passwordMainEl.classList.toggle('d-none'); + passwordChange.classList.toggle('d-none'); + passwordEditEl.classList.toggle('d-none'); + } + + // Private functions + var initSettings = function () { + if (!signInMainEl) { + return; + } + + // toggle UI + signInChangeEmail.querySelector('button').addEventListener('click', function () { + toggleChangeEmail(); + }); + + signInCancelEmail.addEventListener('click', function () { + toggleChangeEmail(); + }); + + passwordChange.querySelector('button').addEventListener('click', function () { + toggleChangePassword(); + }); + + passwordCancel.addEventListener('click', function () { + toggleChangePassword(); + }); + } + + var handleChangeEmail = function (e) { + var validation; + + if (!signInForm) { + return; + } + + validation = FormValidation.formValidation( + signInForm, + { + fields: { + emailaddress: { + validators: { + notEmpty: { + message: 'Email is required' + }, + emailAddress: { + message: 'The value is not a valid email address' + } + } + }, + + confirmemailpassword: { + validators: { + notEmpty: { + message: 'Password is required' + } + } + } + }, + + plugins: { //Learn more: https://formvalidation.io/guide/plugins + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row' + }) + } + } + ); + + signInForm.querySelector('#kt_signin_submit').addEventListener('click', function (e) { + e.preventDefault(); + console.log('click'); + + validation.validate().then(function (status) { + if (status == 'Valid') { + swal.fire({ + text: "Sent password reset. Please check your email", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn font-weight-bold btn-light-primary" + } + }).then(function(){ + signInForm.reset(); + validation.resetForm(); // Reset formvalidation --- more info: https://formvalidation.io/guide/api/reset-form/ + toggleChangeEmail(); + }); + } else { + swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn font-weight-bold btn-light-primary" + } + }); + } + }); + }); + } + + var handleChangePassword = function (e) { + var validation; + + // form elements + var passwordForm = document.getElementById('kt_signin_change_password'); + + if (!passwordForm) { + return; + } + + validation = FormValidation.formValidation( + passwordForm, + { + fields: { + currentpassword: { + validators: { + notEmpty: { + message: 'Current Password is required' + } + } + }, + + newpassword: { + validators: { + notEmpty: { + message: 'New Password is required' + } + } + }, + + confirmpassword: { + validators: { + notEmpty: { + message: 'Confirm Password is required' + }, + identical: { + compare: function() { + return passwordForm.querySelector('[name="newpassword"]').value; + }, + message: 'The password and its confirm are not the same' + } + } + }, + }, + + plugins: { //Learn more: https://formvalidation.io/guide/plugins + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row' + }) + } + } + ); + + passwordForm.querySelector('#kt_password_submit').addEventListener('click', function (e) { + e.preventDefault(); + console.log('click'); + + validation.validate().then(function (status) { + if (status == 'Valid') { + swal.fire({ + text: "Sent password reset. Please check your email", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn font-weight-bold btn-light-primary" + } + }).then(function(){ + passwordForm.reset(); + validation.resetForm(); // Reset formvalidation --- more info: https://formvalidation.io/guide/api/reset-form/ + toggleChangePassword(); + }); + } else { + swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn font-weight-bold btn-light-primary" + } + }); + } + }); + }); + } + + // Public methods + return { + init: function () { + signInForm = document.getElementById('kt_signin_change_email'); + signInMainEl = document.getElementById('kt_signin_email'); + signInEditEl = document.getElementById('kt_signin_email_edit'); + passwordMainEl = document.getElementById('kt_signin_password'); + passwordEditEl = document.getElementById('kt_signin_password_edit'); + signInChangeEmail = document.getElementById('kt_signin_email_button'); + signInCancelEmail = document.getElementById('kt_signin_cancel'); + passwordChange = document.getElementById('kt_signin_password_button'); + passwordCancel = document.getElementById('kt_password_cancel'); + + initSettings(); + handleChangeEmail(); + handleChangePassword(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTAccountSettingsSigninMethods.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/calendar/calendar.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/calendar/calendar.js new file mode 100644 index 0000000..7faaf52 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/calendar/calendar.js @@ -0,0 +1,831 @@ +"use strict"; + +// Class definition +var KTAppCalendar = function () { + // Shared variables + // Calendar variables + var calendar; + var data = { + id: '', + eventName: '', + eventDescription: '', + eventLocation: '', + startDate: '', + endDate: '', + allDay: false + }; + + // Add event variables + var eventName; + var eventDescription; + var eventLocation; + var startDatepicker; + var startFlatpickr; + var endDatepicker; + var endFlatpickr; + var startTimepicker; + var startTimeFlatpickr; + var endTimepicker + var endTimeFlatpickr; + var modal; + var modalTitle; + var form; + var validator; + var addButton; + var submitButton; + var cancelButton; + var closeButton; + + // View event variables + var viewEventName; + var viewAllDay; + var viewEventDescription; + var viewEventLocation; + var viewStartDate; + var viewEndDate; + var viewModal; + var viewEditButton; + var viewDeleteButton; + + + // Private functions + var initCalendarApp = function () { + // Define variables + var calendarEl = document.getElementById('kt_calendar_app'); + var todayDate = moment().startOf('day'); + var YM = todayDate.format('YYYY-MM'); + var YESTERDAY = todayDate.clone().subtract(1, 'day').format('YYYY-MM-DD'); + var TODAY = todayDate.format('YYYY-MM-DD'); + var TOMORROW = todayDate.clone().add(1, 'day').format('YYYY-MM-DD'); + + // Init calendar --- more info: https://fullcalendar.io/docs/initialize-globals + calendar = new FullCalendar.Calendar(calendarEl, { + //locale: 'es', // Set local --- more info: https://fullcalendar.io/docs/locale + headerToolbar: { + left: 'prev,next today', + center: 'title', + right: 'dayGridMonth,timeGridWeek,timeGridDay' + }, + initialDate: TODAY, + navLinks: true, // can click day/week names to navigate views + selectable: true, + selectMirror: true, + + // Select dates action --- more info: https://fullcalendar.io/docs/select-callback + select: function (arg) { + formatArgs(arg); + handleNewEvent(); + }, + + // Click event --- more info: https://fullcalendar.io/docs/eventClick + eventClick: function (arg) { + formatArgs({ + id: arg.event.id, + title: arg.event.title, + description: arg.event.extendedProps.description, + location: arg.event.extendedProps.location, + startStr: arg.event.startStr, + endStr: arg.event.endStr, + allDay: arg.event.allDay + }); + + handleViewEvent(); + }, + + editable: true, + dayMaxEvents: true, // allow "more" link when too many events + events: [ + { + id: uid(), + title: 'All Day Event', + start: YM + '-01', + end: YM + '-02', + description: 'Toto lorem ipsum dolor sit incid idunt ut', + className: "fc-event-danger fc-event-solid-warning", + location: 'Federation Square' + }, + { + id: uid(), + title: 'Reporting', + start: YM + '-14T13:30:00', + description: 'Lorem ipsum dolor incid idunt ut labore', + end: YM + '-14T14:30:00', + className: "fc-event-success", + location: 'Meeting Room 7.03' + }, + { + id: uid(), + title: 'Company Trip', + start: YM + '-02', + description: 'Lorem ipsum dolor sit tempor incid', + end: YM + '-03', + className: "fc-event-primary", + location: 'Seoul, Korea' + + }, + { + id: uid(), + title: 'ICT Expo 2021 - Product Release', + start: YM + '-03', + description: 'Lorem ipsum dolor sit tempor inci', + end: YM + '-05', + className: "fc-event-light fc-event-solid-primary", + location: 'Melbourne Exhibition Hall' + }, + { + id: uid(), + title: 'Dinner', + start: YM + '-12', + description: 'Lorem ipsum dolor sit amet, conse ctetur', + end: YM + '-13', + location: 'Squire\'s Loft' + }, + { + id: uid(), + title: 'Repeating Event', + start: YM + '-09T16:00:00', + end: YM + '-09T17:00:00', + description: 'Lorem ipsum dolor sit ncididunt ut labore', + className: "fc-event-danger", + location: 'General Area' + }, + { + id: uid(), + title: 'Repeating Event', + description: 'Lorem ipsum dolor sit amet, labore', + start: YM + '-16T16:00:00', + end: YM + '-16T17:00:00', + location: 'General Area' + }, + { + id: uid(), + title: 'Conference', + start: YESTERDAY, + end: TOMORROW, + description: 'Lorem ipsum dolor eius mod tempor labore', + className: "fc-event-primary", + location: 'Conference Hall A' + }, + { + id: uid(), + title: 'Meeting', + start: TODAY + 'T10:30:00', + end: TODAY + 'T12:30:00', + description: 'Lorem ipsum dolor eiu idunt ut labore', + location: 'Meeting Room 11.06' + }, + { + id: uid(), + title: 'Lunch', + start: TODAY + 'T12:00:00', + end: TODAY + 'T14:00:00', + className: "fc-event-info", + description: 'Lorem ipsum dolor sit amet, ut labore', + location: 'Cafeteria' + }, + { + id: uid(), + title: 'Meeting', + start: TODAY + 'T14:30:00', + end: TODAY + 'T15:30:00', + className: "fc-event-warning", + description: 'Lorem ipsum conse ctetur adipi scing', + location: 'Meeting Room 11.10' + }, + { + id: uid(), + title: 'Happy Hour', + start: TODAY + 'T17:30:00', + end: TODAY + 'T21:30:00', + className: "fc-event-info", + description: 'Lorem ipsum dolor sit amet, conse ctetur', + location: 'The English Pub' + }, + { + id: uid(), + title: 'Dinner', + start: TOMORROW + 'T18:00:00', + end: TOMORROW + 'T21:00:00', + className: "fc-event-solid-danger fc-event-light", + description: 'Lorem ipsum dolor sit ctetur adipi scing', + location: 'New York Steakhouse' + }, + { + id: uid(), + title: 'Birthday Party', + start: TOMORROW + 'T12:00:00', + end: TOMORROW + 'T14:00:00', + className: "fc-event-primary", + description: 'Lorem ipsum dolor sit amet, scing', + location: 'The English Pub' + }, + { + id: uid(), + title: 'Site visit', + start: YM + '-28', + end: YM + '-29', + className: "fc-event-solid-info fc-event-light", + description: 'Lorem ipsum dolor sit amet, labore', + location: '271, Spring Street' + } + ], + + // Handle changing calendar views --- more info: https://fullcalendar.io/docs/datesSet + datesSet: function(){ + // do some stuff + } + }); + + calendar.render(); + } + + // Init validator + const initValidator = () => { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'calendar_event_name': { + validators: { + notEmpty: { + message: 'Event name is required' + } + } + }, + 'calendar_event_start_date': { + validators: { + notEmpty: { + message: 'Start date is required' + } + } + }, + 'calendar_event_end_date': { + validators: { + notEmpty: { + message: 'End date is required' + } + } + } + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + } + + // Initialize datepickers --- more info: https://flatpickr.js.org/ + const initDatepickers = () => { + startFlatpickr = flatpickr(startDatepicker, { + enableTime: false, + dateFormat: "Y-m-d", + }); + + endFlatpickr = flatpickr(endDatepicker, { + enableTime: false, + dateFormat: "Y-m-d", + }); + + startTimeFlatpickr = flatpickr(startTimepicker, { + enableTime: true, + noCalendar: true, + dateFormat: "H:i", + }); + + endTimeFlatpickr = flatpickr(endTimepicker, { + enableTime: true, + noCalendar: true, + dateFormat: "H:i", + }); + } + + // Handle add button + const handleAddButton = () => { + addButton.addEventListener('click', e => { + // Reset form data + data = { + id: '', + eventName: '', + eventDescription: '', + startDate: new Date(), + endDate: new Date(), + allDay: false + }; + handleNewEvent(); + }); + } + + // Handle add new event + const handleNewEvent = () => { + // Update modal title + modalTitle.innerText = "Add a New Event"; + + modal.show(); + + // Select datepicker wrapper elements + const datepickerWrappers = form.querySelectorAll('[data-kt-calendar="datepicker"]'); + + // Handle all day toggle + const allDayToggle = form.querySelector('#kt_calendar_datepicker_allday'); + allDayToggle.addEventListener('click', e => { + if (e.target.checked) { + datepickerWrappers.forEach(dw => { + dw.classList.add('d-none'); + }); + } else { + endFlatpickr.setDate(data.startDate, true, 'Y-m-d'); + datepickerWrappers.forEach(dw => { + dw.classList.remove('d-none'); + }); + } + }); + + populateForm(data); + + // Handle submit form + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable submit button whilst loading + submitButton.disabled = true; + + // Simulate form submission + setTimeout(function () { + // Simulate form submission + submitButton.removeAttribute('data-kt-indicator'); + + // Show popup confirmation + Swal.fire({ + text: "New event added to calendar!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + + // Enable submit button after loading + submitButton.disabled = false; + + // Detect if is all day event + let allDayEvent = false; + if (allDayToggle.checked) { allDayEvent = true; } + if (startTimeFlatpickr.selectedDates.length === 0) { allDayEvent = true; } + + // Merge date & time + var startDateTime = moment(startFlatpickr.selectedDates[0]).format(); + var endDateTime = moment(endFlatpickr.selectedDates[endFlatpickr.selectedDates.length - 1]).format(); + if (!allDayEvent) { + const startDate = moment(startFlatpickr.selectedDates[0]).format('YYYY-MM-DD'); + const endDate = startDate; + const startTime = moment(startTimeFlatpickr.selectedDates[0]).format('HH:mm:ss'); + const endTime = moment(endTimeFlatpickr.selectedDates[0]).format('HH:mm:ss'); + + startDateTime = startDate + 'T' + startTime; + endDateTime = endDate + 'T' + endTime; + } + + // Add new event to calendar + calendar.addEvent({ + id: uid(), + title: eventName.value, + description: eventDescription.value, + location: eventLocation.value, + start: startDateTime, + end: endDateTime, + allDay: allDayEvent + }); + calendar.render(); + + // Reset form for demo purposes only + form.reset(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + // Handle edit event + const handleEditEvent = () => { + // Update modal title + modalTitle.innerText = "Edit an Event"; + + modal.show(); + + // Select datepicker wrapper elements + const datepickerWrappers = form.querySelectorAll('[data-kt-calendar="datepicker"]'); + + // Handle all day toggle + const allDayToggle = form.querySelector('#kt_calendar_datepicker_allday'); + allDayToggle.addEventListener('click', e => { + if (e.target.checked) { + datepickerWrappers.forEach(dw => { + dw.classList.add('d-none'); + }); + } else { + endFlatpickr.setDate(data.startDate, true, 'Y-m-d'); + datepickerWrappers.forEach(dw => { + dw.classList.remove('d-none'); + }); + } + }); + + populateForm(data); + + // Handle submit form + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable submit button whilst loading + submitButton.disabled = true; + + // Simulate form submission + setTimeout(function () { + // Simulate form submission + submitButton.removeAttribute('data-kt-indicator'); + + // Show popup confirmation + Swal.fire({ + text: "New event added to calendar!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + + // Enable submit button after loading + submitButton.disabled = false; + + // Remove old event + calendar.getEventById(data.id).remove(); + + // Detect if is all day event + let allDayEvent = false; + if (allDayToggle.checked) { allDayEvent = true; } + if (startTimeFlatpickr.selectedDates.length === 0) { allDayEvent = true; } + + // Merge date & time + var startDateTime = moment(startFlatpickr.selectedDates[0]).format(); + var endDateTime = moment(endFlatpickr.selectedDates[endFlatpickr.selectedDates.length - 1]).format(); + if (!allDayEvent) { + const startDate = moment(startFlatpickr.selectedDates[0]).format('YYYY-MM-DD'); + const endDate = startDate; + const startTime = moment(startTimeFlatpickr.selectedDates[0]).format('HH:mm:ss'); + const endTime = moment(endTimeFlatpickr.selectedDates[0]).format('HH:mm:ss'); + + startDateTime = startDate + 'T' + startTime; + endDateTime = endDate + 'T' + endTime; + } + + // Add new event to calendar + calendar.addEvent({ + id: uid(), + title: eventName.value, + description: eventDescription.value, + location: eventLocation.value, + start: startDateTime, + end: endDateTime, + allDay: allDayEvent + }); + calendar.render(); + + // Reset form for demo purposes only + form.reset(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + // Handle view event + const handleViewEvent = () => { + viewModal.show(); + + // Detect all day event + var eventNameMod; + var startDateMod; + var endDateMod; + + // Generate labels + if (data.allDay) { + eventNameMod = 'All Day'; + startDateMod = moment(data.startDate).format('Do MMM, YYYY'); + endDateMod = moment(data.endDate).format('Do MMM, YYYY'); + } else { + eventNameMod = ''; + startDateMod = moment(data.startDate).format('Do MMM, YYYY - h:mm a'); + endDateMod = moment(data.endDate).format('Do MMM, YYYY - h:mm a'); + } + + // Populate view data + viewEventName.innerText = data.eventName; + viewAllDay.innerText = eventNameMod; + viewEventDescription.innerText = data.eventDescription ? data.eventDescription : '--'; + viewEventLocation.innerText = data.eventLocation ? data.eventLocation : '--'; + viewStartDate.innerText = startDateMod; + viewEndDate.innerText = endDateMod; + } + + // Handle delete event + const handleDeleteEvent = () => { + viewDeleteButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to delete this event?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + calendar.getEventById(data.id).remove(); + + viewModal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your event was not deleted!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + // Handle edit button + const handleEditButton = () => { + viewEditButton.addEventListener('click', e => { + e.preventDefault(); + + viewModal.hide(); + handleEditEvent(); + }); + } + + // Handle cancel button + const handleCancelButton = () => { + // Edit event modal cancel button + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + // Handle close button + const handleCloseButton = () => { + // Edit event modal close button + closeButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + // Handle view button + const handleViewButton = () => { + const viewButton = document.querySelector('#kt_calendar_event_view_button'); + viewButton.addEventListener('click', e => { + e.preventDefault(); + + hidePopovers(); + handleViewEvent(); + }); + } + + // Helper functions + + // Reset form validator on modal close + const resetFormValidator = (element) => { + // Target modal hidden event --- For more info: https://getbootstrap.com/docs/5.0/components/modal/#events + element.addEventListener('hidden.bs.modal', e => { + if (validator) { + // Reset form validator. For more info: https://formvalidation.io/guide/api/reset-form + validator.resetForm(true); + } + }); + } + + // Populate form + const populateForm = () => { + eventName.value = data.eventName ? data.eventName : ''; + eventDescription.value = data.eventDescription ? data.eventDescription : ''; + eventLocation.value = data.eventLocation ? data.eventLocation : ''; + startFlatpickr.setDate(data.startDate, true, 'Y-m-d'); + + // Handle null end dates + const endDate = data.endDate ? data.endDate : moment(data.startDate).format(); + endFlatpickr.setDate(endDate, true, 'Y-m-d'); + + const allDayToggle = form.querySelector('#kt_calendar_datepicker_allday'); + const datepickerWrappers = form.querySelectorAll('[data-kt-calendar="datepicker"]'); + if (data.allDay) { + allDayToggle.checked = true; + datepickerWrappers.forEach(dw => { + dw.classList.add('d-none'); + }); + } else { + startTimeFlatpickr.setDate(data.startDate, true, 'Y-m-d H:i'); + endTimeFlatpickr.setDate(data.endDate, true, 'Y-m-d H:i'); + endFlatpickr.setDate(data.startDate, true, 'Y-m-d'); + allDayToggle.checked = false; + datepickerWrappers.forEach(dw => { + dw.classList.remove('d-none'); + }); + } + } + + // Format FullCalendar reponses + const formatArgs = (res) => { + data.id = res.id; + data.eventName = res.title; + data.eventDescription = res.description; + data.eventLocation = res.location; + data.startDate = res.startStr; + data.endDate = res.endStr; + data.allDay = res.allDay; + } + + // Generate unique IDs for events + const uid = () => { + return Date.now().toString() + Math.floor(Math.random() * 1000).toString(); + } + + return { + // Public Functions + init: function () { + // Define variables + // Add event modal + const element = document.getElementById('kt_modal_add_event'); + form = element.querySelector('#kt_modal_add_event_form'); + eventName = form.querySelector('[name="calendar_event_name"]'); + eventDescription = form.querySelector('[name="calendar_event_description"]'); + eventLocation = form.querySelector('[name="calendar_event_location"]'); + startDatepicker = form.querySelector('#kt_calendar_datepicker_start_date'); + endDatepicker = form.querySelector('#kt_calendar_datepicker_end_date'); + startTimepicker = form.querySelector('#kt_calendar_datepicker_start_time'); + endTimepicker = form.querySelector('#kt_calendar_datepicker_end_time'); + addButton = document.querySelector('[data-kt-calendar="add"]'); + submitButton = form.querySelector('#kt_modal_add_event_submit'); + cancelButton = form.querySelector('#kt_modal_add_event_cancel'); + closeButton = element.querySelector('#kt_modal_add_event_close'); + modalTitle = form.querySelector('[data-kt-calendar="title"]'); + modal = new bootstrap.Modal(element); + + // View event modal + const viewElement = document.getElementById('kt_modal_view_event'); + viewModal = new bootstrap.Modal(viewElement); + viewEventName = viewElement.querySelector('[data-kt-calendar="event_name"]'); + viewAllDay = viewElement.querySelector('[data-kt-calendar="all_day"]'); + viewEventDescription = viewElement.querySelector('[data-kt-calendar="event_description"]'); + viewEventLocation = viewElement.querySelector('[data-kt-calendar="event_location"]'); + viewStartDate = viewElement.querySelector('[data-kt-calendar="event_start_date"]'); + viewEndDate = viewElement.querySelector('[data-kt-calendar="event_end_date"]'); + viewEditButton = viewElement.querySelector('#kt_modal_view_event_edit'); + viewDeleteButton = viewElement.querySelector('#kt_modal_view_event_delete'); + + initCalendarApp(); + initValidator(); + initDatepickers(); + handleEditButton(); + handleAddButton(); + handleDeleteEvent(); + handleCancelButton(); + handleCloseButton(); + resetFormValidator(element); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppCalendar.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/chat/chat.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/chat/chat.js new file mode 100644 index 0000000..f591103 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/chat/chat.js @@ -0,0 +1,72 @@ +"use strict"; + +// Class definition +var KTAppChat = function () { + // Private functions + var handeSend = function (element) { + if (!element) { + return; + } + + // Handle send + KTUtil.on(element, '[data-kt-element="input"]', 'keydown', function(e) { + if (e.keyCode == 13) { + handeMessaging(element); + e.preventDefault(); + + return false; + } + }); + + KTUtil.on(element, '[data-kt-element="send"]', 'click', function(e) { + handeMessaging(element); + }); + } + + var handeMessaging = function(element) { + var messages = element.querySelector('[data-kt-element="messages"]'); + var input = element.querySelector('[data-kt-element="input"]'); + + if (input.value.length === 0 ) { + return; + } + + var messageOutTemplate = messages.querySelector('[data-kt-element="template-out"]'); + var messageInTemplate = messages.querySelector('[data-kt-element="template-in"]'); + var message; + + // Show example outgoing message + message = messageOutTemplate.cloneNode(true); + message.classList.remove('d-none'); + message.querySelector('[data-kt-element="message-text"]').innerText = input.value; + input.value = ''; + messages.appendChild(message); + messages.scrollTop = messages.scrollHeight; + + + setTimeout(function() { + // Show example incoming message + message = messageInTemplate.cloneNode(true); + message.classList.remove('d-none'); + message.querySelector('[data-kt-element="message-text"]').innerText = 'Thank you for your awesome support!'; + messages.appendChild(message); + messages.scrollTop = messages.scrollHeight; + }, 2000); + } + + // Public methods + return { + init: function(element) { + handeSend(element); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + // Init inline chat messenger + KTAppChat.init(document.querySelector('#kt_chat_messenger')); + + // Init drawer chat messenger + KTAppChat.init(document.querySelector('#kt_drawer_chat_messenger')); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/contacts/edit-contact.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/contacts/edit-contact.js new file mode 100644 index 0000000..0ca663c --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/contacts/edit-contact.js @@ -0,0 +1,160 @@ +"use strict"; + +// Class definition +var KTAppContactEdit = function () { + // Shared variables + + + // Private functions + const initForm = () => { + // Select form + const form = document.getElementById('kt_ecommerce_settings_general_form'); + + if (!form) { + return; + } + + // Dynamically create validation non-empty rule + const requiredFields = form.querySelectorAll('.required'); + var detectedField; + var validationFields = { + fields: {}, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + + // Detect required fields + requiredFields.forEach(el => { + const input = el.closest('.fv-row').querySelector('input'); + if (input) { + detectedField = input; + } + + const select = el.closest('.fv-row').querySelector('select'); + if (select) { + detectedField = select; + } + + // Add validation rule + const name = detectedField.getAttribute('name'); + validationFields.fields[name] = { + validators: { + notEmpty: { + message: el.innerText + ' is required' + } + } + } + }); + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + validationFields + ); + + // Submit button handler + const submitButton = form.querySelector('[data-kt-contacts-type="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup error + Swal.fire({ + text: "Oops! There are some error(s) detected.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + // Init Select2 with flags + const initSelect2Flags = () => { + // Format options + var optionFormat = function(item) { + if ( !item.id ) { + return item.text; + } + + var span = document.createElement('span'); + var template = ''; + + template += 'image'; + template += item.text; + + span.innerHTML = template; + + return $(span); + } + + // Init Select2 --- more info: https://select2.org/ + $('[data-kt-ecommerce-settings-type="select2_flags"]').select2({ + placeholder: "Select a country", + minimumResultsForSearch: Infinity, + templateSelection: optionFormat, + templateResult: optionFormat + }); + } + + // Public methods + return { + init: function () { + + initForm(); + initSelect2Flags(); + + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppContactEdit.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/contacts/view-contact.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/contacts/view-contact.js new file mode 100644 index 0000000..325b61f --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/contacts/view-contact.js @@ -0,0 +1,74 @@ +"use strict"; + +// Class definition +var KTAppContactView = function () { + // Private functions + const handleDeleteButton = () => { + // Select form + const deleteButton = document.getElementById('kt_contact_delete'); + + if (!deleteButton) { + return; + } + + deleteButton.addEventListener('click', e => { + // Prevent default button action + e.preventDefault(); + + // Show popup confirmation + Swal.fire({ + text: "Delete contact confirmation", + icon: "warning", + buttonsStyling: false, + showCancelButton: true, + confirmButtonText: "Yes, delete it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-danger", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "Contact has been deleted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.value) { + // Redirect to customers list page + window.location = deleteButton.getAttribute("data-kt-redirect"); + } + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Contact has not been deleted!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + // Public methods + return { + init: function () { + + handleDeleteButton(); + + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppContactView.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/add.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/add.js new file mode 100644 index 0000000..df35986 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/add.js @@ -0,0 +1,238 @@ +"use strict"; + +// Class definition +var KTModalCustomersAdd = function () { + var submitButton; + var cancelButton; + var closeButton; + var validator; + var form; + var modal; + + // Init form inputs + var handleForm = function () { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'name': { + validators: { + notEmpty: { + message: 'Customer name is required' + } + } + }, + 'email': { + validators: { + notEmpty: { + message: 'Customer email is required' + } + } + }, + 'first-name': { + validators: { + notEmpty: { + message: 'First name is required' + } + } + }, + 'last-name': { + validators: { + notEmpty: { + message: 'Last name is required' + } + } + }, + 'country': { + validators: { + notEmpty: { + message: 'Country is required' + } + } + }, + 'address1': { + validators: { + notEmpty: { + message: 'Address 1 is required' + } + } + }, + 'city': { + validators: { + notEmpty: { + message: 'City is required' + } + } + }, + 'state': { + validators: { + notEmpty: { + message: 'State is required' + } + } + }, + 'postcode': { + validators: { + notEmpty: { + message: 'Postcode is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Revalidate country field. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="country"]')).on('change', function() { + // Revalidate the field when an option is chosen + validator.revalidateField('country'); + }); + + // Action buttons + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable submit button whilst loading + submitButton.disabled = true; + + setTimeout(function() { + submitButton.removeAttribute('data-kt-indicator'); + + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + // Hide modal + modal.hide(); + + // Enable submit button after loading + submitButton.disabled = false; + + // Redirect to customers list page + window.location = form.getAttribute("data-kt-redirect"); + } + }); + }, 2000); + } else { + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + closeButton.addEventListener('click', function(e){ + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }) + } + + return { + // Public functions + init: function () { + // Elements + modal = new bootstrap.Modal(document.querySelector('#kt_modal_add_customer')); + + form = document.querySelector('#kt_modal_add_customer_form'); + submitButton = form.querySelector('#kt_modal_add_customer_submit'); + cancelButton = form.querySelector('#kt_modal_add_customer_cancel'); + closeButton = form.querySelector('#kt_modal_add_customer_close'); + + handleForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalCustomersAdd.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/list/export.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/list/export.js new file mode 100644 index 0000000..257159e --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/list/export.js @@ -0,0 +1,189 @@ +"use strict"; + +// Class definition +var KTCustomersExport = function () { + var element; + var submitButton; + var cancelButton; + var closeButton; + var validator; + var form; + var modal; + + // Init form inputs + var handleForm = function () { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'date': { + validators: { + notEmpty: { + message: 'Date range is required' + } + } + }, + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Action buttons + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable submit button whilst loading + submitButton.disabled = true; + + setTimeout(function() { + submitButton.removeAttribute('data-kt-indicator'); + + Swal.fire({ + text: "Customer list has been successfully exported!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + + // Enable submit button after loading + submitButton.disabled = false; + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + closeButton.addEventListener('click', function(e){ + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + var initForm = function () { + const datepicker = form.querySelector("[name=date]"); + + // Handle datepicker range -- For more info on flatpickr plugin, please visit: https://flatpickr.js.org/ + $(datepicker).flatpickr({ + altInput: true, + altFormat: "F j, Y", + dateFormat: "Y-m-d", + mode: "range" + }); + } + + return { + // Public functions + init: function () { + // Elements + element = document.querySelector('#kt_customers_export_modal'); + modal = new bootstrap.Modal(element); + + form = document.querySelector('#kt_customers_export_form'); + submitButton = form.querySelector('#kt_customers_export_submit'); + cancelButton = form.querySelector('#kt_customers_export_cancel'); + closeButton = element.querySelector('#kt_customers_export_close'); + + handleForm(); + initForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTCustomersExport.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/list/list.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/list/list.js new file mode 100644 index 0000000..82ae7d5 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/list/list.js @@ -0,0 +1,282 @@ +"use strict"; + +// Class definition +var KTCustomersList = function () { + // Define shared variables + var datatable; + var filterMonth; + var filterPayment; + var table + + // Private functions + var initCustomerList = function () { + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[5].innerHTML, "DD MMM YYYY, LT").format(); // select date from 5th column in table + dateRow[5].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + 'columnDefs': [ + { orderable: false, targets: 0 }, // Disable ordering on column 0 (checkbox) + { orderable: false, targets: 6 }, // Disable ordering on column 6 (actions) + ] + }); + + // Re-init functions on every table re-draw -- more info: https://datatables.net/reference/event/draw + datatable.on('draw', function () { + initToggleToolbar(); + handleDeleteRows(); + toggleToolbars(); + }); + } + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearchDatatable = () => { + const filterSearch = document.querySelector('[data-kt-customer-table-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Filter Datatable + var handleFilterDatatable = () => { + // Select filter options + filterMonth = $('[data-kt-customer-table-filter="month"]'); + filterPayment = document.querySelectorAll('[data-kt-customer-table-filter="payment_type"] [name="payment_type"]'); + const filterButton = document.querySelector('[data-kt-customer-table-filter="filter"]'); + + // Filter datatable on submit + filterButton.addEventListener('click', function () { + // Get filter values + const monthValue = filterMonth.val(); + let paymentValue = ''; + + // Get payment value + filterPayment.forEach(r => { + if (r.checked) { + paymentValue = r.value; + } + + // Reset payment value if "All" is selected + if (paymentValue === 'all') { + paymentValue = ''; + } + }); + + // Build filter string from filter options + const filterString = monthValue + ' ' + paymentValue; + + // Filter datatable --- official docs reference: https://datatables.net/reference/api/search() + datatable.search(filterString).draw(); + }); + } + + // Delete customer + var handleDeleteRows = () => { + // Select all delete buttons + const deleteButtons = table.querySelectorAll('[data-kt-customer-table-filter="delete_row"]'); + + deleteButtons.forEach(d => { + // Delete button on click + d.addEventListener('click', function (e) { + e.preventDefault(); + + // Select parent row + const parent = e.target.closest('tr'); + + // Get customer name + const customerName = parent.querySelectorAll('td')[1].innerText; + + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete " + customerName + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted " + customerName + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove current row + datatable.row($(parent)).remove().draw(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: customerName + " was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }) + }); + } + + // Reset Filter + var handleResetForm = () => { + // Select reset button + const resetButton = document.querySelector('[data-kt-customer-table-filter="reset"]'); + + // Reset datatable + resetButton.addEventListener('click', function () { + // Reset month + filterMonth.val(null).trigger('change'); + + // Reset payment type + filterPayment[0].checked = true; + + // Reset datatable --- official docs reference: https://datatables.net/reference/api/search() + datatable.search('').draw(); + }); + } + + // Init toggle toolbar + var initToggleToolbar = () => { + // Toggle selected action toolbar + // Select all checkboxes + const checkboxes = table.querySelectorAll('[type="checkbox"]'); + + // Select elements + const deleteSelected = document.querySelector('[data-kt-customer-table-select="delete_selected"]'); + + // Toggle delete selected toolbar + checkboxes.forEach(c => { + // Checkbox on click event + c.addEventListener('click', function () { + setTimeout(function () { + toggleToolbars(); + }, 50); + }); + }); + + // Deleted selected rows + deleteSelected.addEventListener('click', function () { + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete selected customers?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted all selected customers!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove all selected customers + checkboxes.forEach(c => { + if (c.checked) { + datatable.row($(c.closest('tbody tr'))).remove().draw(); + } + }); + + // Remove header checked box + const headerCheckbox = table.querySelectorAll('[type="checkbox"]')[0]; + headerCheckbox.checked = false; + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Selected customers was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }); + } + + // Toggle toolbars + const toggleToolbars = () => { + // Define variables + const toolbarBase = document.querySelector('[data-kt-customer-table-toolbar="base"]'); + const toolbarSelected = document.querySelector('[data-kt-customer-table-toolbar="selected"]'); + const selectedCount = document.querySelector('[data-kt-customer-table-select="selected_count"]'); + + // Select refreshed checkbox DOM elements + const allCheckboxes = table.querySelectorAll('tbody [type="checkbox"]'); + + // Detect checkboxes state & count + let checkedState = false; + let count = 0; + + // Count checked boxes + allCheckboxes.forEach(c => { + if (c.checked) { + checkedState = true; + count++; + } + }); + + // Toggle toolbars + if (checkedState) { + selectedCount.innerHTML = count; + toolbarBase.classList.add('d-none'); + toolbarSelected.classList.remove('d-none'); + } else { + toolbarBase.classList.remove('d-none'); + toolbarSelected.classList.add('d-none'); + } + } + + // Public methods + return { + init: function () { + table = document.querySelector('#kt_customers_table'); + + if (!table) { + return; + } + + initCustomerList(); + initToggleToolbar(); + handleSearchDatatable(); + handleFilterDatatable(); + handleDeleteRows(); + handleResetForm(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTCustomersList.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/update.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/update.js new file mode 100644 index 0000000..64613b1 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/update.js @@ -0,0 +1,131 @@ +"use strict"; + +// Class definition +var KTModalUpdateCustomer = function () { + var element; + var submitButton; + var cancelButton; + var closeButton; + var form; + var modal; + + // Init form inputs + var initForm = function () { + // Action buttons + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Simulate form submission + setTimeout(function () { + // Simulate form submission + submitButton.removeAttribute('data-kt-indicator'); + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + }); + + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + closeButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + return { + // Public functions + init: function () { + // Elements + element = document.querySelector('#kt_modal_update_customer'); + modal = new bootstrap.Modal(element); + + form = element.querySelector('#kt_modal_update_customer_form'); + submitButton = form.querySelector('#kt_modal_update_customer_submit'); + cancelButton = form.querySelector('#kt_modal_update_customer_cancel'); + closeButton = element.querySelector('#kt_modal_update_customer_close'); + + initForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalUpdateCustomer.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/view/add-payment.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/view/add-payment.js new file mode 100644 index 0000000..89a6ecd --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/view/add-payment.js @@ -0,0 +1,207 @@ +"use strict"; + +// Class definition +var KTModalAddPayment = function () { + var element; + var submitButton; + var cancelButton; + var closeButton; + var validator; + var newBalance; + var form; + var modal; + + // Init form inputs + var initForm = function () { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'invoice': { + validators: { + notEmpty: { + message: 'Invoice number is required' + } + } + }, + 'status': { + validators: { + notEmpty: { + message: 'Invoice status is required' + } + } + }, + 'amount': { + validators: { + notEmpty: { + message: 'Invoice amount is required' + } + } + } + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Revalidate country field. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="status"]')).on('change', function () { + // Revalidate the field when an option is chosen + validator.revalidateField('status'); + }); + + // Action buttons + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable submit button whilst loading + submitButton.disabled = true; + + // Simulate form submission + setTimeout(function () { + // Simulate form submission + submitButton.removeAttribute('data-kt-indicator'); + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + + // Enable submit button after loading + submitButton.disabled = false; + + // Reset form for demo purposes only + form.reset(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + closeButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + return { + // Public functions + init: function () { + // Elements + element = document.querySelector('#kt_modal_add_payment'); + modal = new bootstrap.Modal(element); + + form = element.querySelector('#kt_modal_add_payment_form'); + submitButton = form.querySelector('#kt_modal_add_payment_submit'); + cancelButton = form.querySelector('#kt_modal_add_payment_cancel'); + closeButton = element.querySelector('#kt_modal_add_payment_close'); + + initForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalAddPayment.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/view/adjust-balance.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/view/adjust-balance.js new file mode 100644 index 0000000..10af46d --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/view/adjust-balance.js @@ -0,0 +1,241 @@ +"use strict"; + +// Class definition +var KTModalAdjustBalance = function () { + var element; + var submitButton; + var cancelButton; + var closeButton; + var validator; + var maskInput; + var newBalance; + var form; + var modal; + + // Init form inputs + var initForm = function () { + // Init inputmask plugin --- For more info please refer to the official documentation here: https://github.com/RobinHerbots/Inputmask + Inputmask("US$ 9,999,999.99", { + "numericInput": true + }).mask("#kt_modal_inputmask"); + } + + var handleBalanceCalculator = function () { + // Select elements + const currentBalance = element.querySelector('[kt-modal-adjust-balance="current_balance"]'); + newBalance = element.querySelector('[kt-modal-adjust-balance="new_balance"]'); + maskInput = document.getElementById('kt_modal_inputmask'); + + // Get current balance value + const isNegative = currentBalance.innerHTML.includes('-'); + let currentValue = parseFloat(currentBalance.innerHTML.replace(/[^0-9.]/g, '').replace(',', '')); + currentValue = isNegative ? currentValue * -1 : currentValue; + + // On change event for inputmask + let maskValue; + maskInput.addEventListener('focusout', function (e) { + // Get inputmask value on change + maskValue = parseFloat(e.target.value.replace(/[^0-9.]/g, '').replace(',', '')); + + // Set mask value as 0 when NaN detected + if(isNaN(maskValue)){ + maskValue = 0; + } + + // Calculate & set new balance value + newBalance.innerHTML = 'US$ ' + (maskValue + currentValue).toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,'); + }); + } + + // Handle form validation and submittion + var handleForm = function () { + // Stepper custom navigation + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'adjustment': { + validators: { + notEmpty: { + message: 'Adjustment type is required' + } + } + }, + 'amount': { + validators: { + notEmpty: { + message: 'Amount is required' + } + } + } + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Revalidate country field. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="adjustment"]')).on('change', function () { + // Revalidate the field when an option is chosen + validator.revalidateField('adjustment'); + }); + + // Action buttons + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable submit button whilst loading + submitButton.disabled = true; + + // Simulate form submission + setTimeout(function () { + // Simulate form submission + submitButton.removeAttribute('data-kt-indicator'); + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + + // Enable submit button after loading + submitButton.disabled = false; + + // Reset form for demo purposes only + form.reset(); + newBalance.innerHTML = "--"; + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + closeButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + return { + // Public functions + init: function () { + // Elements + element = document.querySelector('#kt_modal_adjust_balance'); + modal = new bootstrap.Modal(element); + + form = element.querySelector('#kt_modal_adjust_balance_form'); + submitButton = form.querySelector('#kt_modal_adjust_balance_submit'); + cancelButton = form.querySelector('#kt_modal_adjust_balance_cancel'); + closeButton = element.querySelector('#kt_modal_adjust_balance_close'); + + initForm(); + handleBalanceCalculator(); + handleForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalAdjustBalance.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/view/invoices.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/view/invoices.js new file mode 100644 index 0000000..ab22f20 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/view/invoices.js @@ -0,0 +1,129 @@ +"use strict"; + +// Class definition +var KTCustomerViewInvoices = function () { + + // Private functions + // Init current year datatable + var initInvoiceYearCurrent = function () { + // Define table element + const id = '#kt_customer_details_invoices_table_1'; + var table = document.querySelector(id); + + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[0].innerHTML, "DD MMM YYYY, LT").format(); // select date from 1st column in table + dateRow[0].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + var datatable = $(id).DataTable({ + "info": false, + 'order': [], + "pageLength": 5, + "lengthChange": false, + 'columnDefs': [ + { orderable: false, targets: 4 }, // Disable ordering on column 0 (download) + ] + }); + } + + // Init year 2020 datatable + var initInvoiceYear2020 = function () { + // Define table element + const id = '#kt_customer_details_invoices_table_2'; + var table = document.querySelector(id); + + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[0].innerHTML, "DD MMM YYYY, LT").format(); // select date from 1st column in table + dateRow[0].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + var datatable = $(id).DataTable({ + "info": false, + 'order': [], + "pageLength": 5, + "lengthChange": false, + 'columnDefs': [ + { orderable: false, targets: 4 }, // Disable ordering on column 0 (download) + ] + }); + } + + // Init year 2019 datatable + var initInvoiceYear2019 = function () { + // Define table element + const id = '#kt_customer_details_invoices_table_3'; + var table = document.querySelector(id); + + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[0].innerHTML, "DD MMM YYYY, LT").format(); // select date from 1st column in table + dateRow[0].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + var datatable = $(id).DataTable({ + "info": false, + 'order': [], + "pageLength": 5, + "lengthChange": false, + 'columnDefs': [ + { orderable: false, targets: 4 }, // Disable ordering on column 0 (download) + ] + }); + } + + // Init year 2018 datatable + var initInvoiceYear2018 = function () { + // Define table element + const id = '#kt_customer_details_invoices_table_4'; + var table = document.querySelector(id); + + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[0].innerHTML, "DD MMM YYYY, LT").format(); // select date from 1st column in table + dateRow[0].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + var datatable = $(id).DataTable({ + "info": false, + 'order': [], + "pageLength": 5, + "lengthChange": false, + 'columnDefs': [ + { orderable: false, targets: 4 }, // Disable ordering on column 0 (download) + ] + }); + } + + // Public methods + return { + init: function () { + initInvoiceYearCurrent(); + initInvoiceYear2020(); + initInvoiceYear2019(); + initInvoiceYear2018(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTCustomerViewInvoices.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/view/payment-method.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/view/payment-method.js new file mode 100644 index 0000000..f63d912 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/view/payment-method.js @@ -0,0 +1,110 @@ +"use strict"; + +// Class definition +var KTCustomerViewPaymentMethod = function () { + + // Private functions + var initPaymentMethod = function () { + // Define variables + const table = document.getElementById('kt_customer_view_payment_method'); + const tableRows = table.querySelectorAll('[ data-kt-customer-payment-method="row"]'); + + tableRows.forEach(row => { + // Select delete button + const deleteButton = row.querySelector('[data-kt-customer-payment-method="delete"]'); + + // Delete button action + deleteButton.addEventListener('click', e => { + e.preventDefault(); + + // Popup confirmation + Swal.fire({ + text: "Are you sure you would like to delete this card?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + row.remove(); + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your card was not deleted!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + }); + } + + // Handle set as primary button + const handlePrimaryButton = () => { + // Define variable + const button = document.querySelector('[data-kt-payment-mehtod-action="set_as_primary"]'); + + button.addEventListener('click', e => { + e.preventDefault(); + + // Popup confirmation + Swal.fire({ + text: "Are you sure you would like to set this card as primary?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, set it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "Your card was set to primary!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your card was not set to primary!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + }; + + // Public methods + return { + init: function () { + initPaymentMethod(); + handlePrimaryButton(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTCustomerViewPaymentMethod.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/view/payment-table.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/view/payment-table.js new file mode 100644 index 0000000..30fba5d --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/view/payment-table.js @@ -0,0 +1,110 @@ +"use strict"; + +// Class definition +var KTCustomerViewPaymentTable = function () { + + // Define shared variables + var datatable; + var table = document.querySelector('#kt_table_customers_payment'); + + // Private functions + var initCustomerView = function () { + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[3].innerHTML, "DD MMM YYYY, LT").format(); // select date from 4th column in table + dateRow[3].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + "pageLength": 5, + "lengthChange": false, + 'columnDefs': [ + { orderable: false, targets: 4 }, // Disable ordering on column 5 (actions) + ] + }); + } + + // Delete customer + var deleteRows = () => { + // Select all delete buttons + const deleteButtons = table.querySelectorAll('[data-kt-customer-table-filter="delete_row"]'); + + deleteButtons.forEach(d => { + // Delete button on click + d.addEventListener('click', function (e) { + e.preventDefault(); + + // Select parent row + const parent = e.target.closest('tr'); + + // Get customer name + const invoiceNumber = parent.querySelectorAll('td')[0].innerText; + + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete " + invoiceNumber + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted " + invoiceNumber + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove current row + datatable.row($(parent)).remove().draw(); + }).then(function () { + // Detect checked checkboxes + toggleToolbars(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: customerName + " was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }) + }); + } + + // Public methods + return { + init: function () { + if (!table) { + return; + } + + initCustomerView(); + deleteRows(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTCustomerViewPaymentTable.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/view/statement.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/view/statement.js new file mode 100644 index 0000000..f2059ab --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/customers/view/statement.js @@ -0,0 +1,129 @@ +"use strict"; + +// Class definition +var KTCustomerViewStatements = function () { + + // Private functions + // Init current year datatable + var initStatementYearCurrent = function () { + // Define table element + const id = '#kt_customer_view_statement_table_1'; + var table = document.querySelector(id); + + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[0].innerHTML, "DD MMM YYYY, LT").format(); // select date from 1st column in table + dateRow[0].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + var datatable = $(id).DataTable({ + "info": false, + 'order': [], + "pageLength": 10, + "lengthChange": false, + 'columnDefs': [ + { orderable: false, targets: 4 }, // Disable ordering on column 0 (download) + ] + }); + } + + // Init year 2020 datatable + var initStatementYear2020 = function () { + // Define table element + const id = '#kt_customer_view_statement_table_2'; + var table = document.querySelector(id); + + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[0].innerHTML, "DD MMM YYYY, LT").format(); // select date from 1st column in table + dateRow[0].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + var datatable = $(id).DataTable({ + "info": false, + 'order': [], + "pageLength": 10, + "lengthChange": false, + 'columnDefs': [ + { orderable: false, targets: 4 }, // Disable ordering on column 0 (download) + ] + }); + } + + // Init year 2019 datatable + var initStatementYear2019 = function () { + // Define table element + const id = '#kt_customer_view_statement_table_3'; + var table = document.querySelector(id); + + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[0].innerHTML, "DD MMM YYYY, LT").format(); // select date from 1st column in table + dateRow[0].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + var datatable = $(id).DataTable({ + "info": false, + 'order': [], + "pageLength": 10, + "lengthChange": false, + 'columnDefs': [ + { orderable: false, targets: 4 }, // Disable ordering on column 0 (download) + ] + }); + } + + // Init year 2018 datatable + var initStatementYear2018 = function () { + // Define table element + const id = '#kt_customer_view_statement_table_4'; + var table = document.querySelector(id); + + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[0].innerHTML, "DD MMM YYYY, LT").format(); // select date from 1st column in table + dateRow[0].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + var datatable = $(id).DataTable({ + "info": false, + 'order': [], + "pageLength": 10, + "lengthChange": false, + 'columnDefs': [ + { orderable: false, targets: 4 }, // Disable ordering on column 0 (download) + ] + }); + } + + // Public methods + return { + init: function () { + initStatementYearCurrent(); + initStatementYear2020(); + initStatementYear2019(); + initStatementYear2018(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTCustomerViewStatements.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/catalog/categories.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/catalog/categories.js new file mode 100644 index 0000000..a7603f1 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/catalog/categories.js @@ -0,0 +1,114 @@ +"use strict"; + +// Class definition +var KTAppEcommerceCategories = function () { + // Shared variables + var table; + var datatable; + + // Private functions + var initDatatable = function () { + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + 'pageLength': 10, + 'columnDefs': [ + { orderable: false, targets: 0 }, // Disable ordering on column 0 (checkbox) + { orderable: false, targets: 3 }, // Disable ordering on column 3 (actions) + ] + }); + + // Re-init functions on datatable re-draws + datatable.on('draw', function () { + handleDeleteRows(); + }); + } + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearchDatatable = () => { + const filterSearch = document.querySelector('[data-kt-ecommerce-category-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Delete cateogry + var handleDeleteRows = () => { + // Select all delete buttons + const deleteButtons = table.querySelectorAll('[data-kt-ecommerce-category-filter="delete_row"]'); + + deleteButtons.forEach(d => { + // Delete button on click + d.addEventListener('click', function (e) { + e.preventDefault(); + + // Select parent row + const parent = e.target.closest('tr'); + + // Get category name + const categoryName = parent.querySelector('[data-kt-ecommerce-category-filter="category_name"]').innerText; + + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete " + categoryName + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted " + categoryName + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove current row + datatable.row($(parent)).remove().draw(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: categoryName + " was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }) + }); + } + + + // Public methods + return { + init: function () { + table = document.querySelector('#kt_ecommerce_category_table'); + + if (!table) { + return; + } + + initDatatable(); + handleSearchDatatable(); + handleDeleteRows(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppEcommerceCategories.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/catalog/products.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/catalog/products.js new file mode 100644 index 0000000..2d3b3f6 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/catalog/products.js @@ -0,0 +1,128 @@ +"use strict"; + +// Class definition +var KTAppEcommerceProducts = function () { + // Shared variables + var table; + var datatable; + + // Private functions + var initDatatable = function () { + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + 'pageLength': 10, + 'columnDefs': [ + { render: DataTable.render.number(',', '.', 2), targets: 4}, + { orderable: false, targets: 0 }, // Disable ordering on column 0 (checkbox) + { orderable: false, targets: 7 }, // Disable ordering on column 7 (actions) + ] + }); + + // Re-init functions on datatable re-draws + datatable.on('draw', function () { + handleDeleteRows(); + }); + } + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearchDatatable = () => { + const filterSearch = document.querySelector('[data-kt-ecommerce-product-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Handle status filter dropdown + var handleStatusFilter = () => { + const filterStatus = document.querySelector('[data-kt-ecommerce-product-filter="status"]'); + $(filterStatus).on('change', e => { + let value = e.target.value; + if(value === 'all'){ + value = ''; + } + datatable.column(6).search(value).draw(); + }); + } + + // Delete cateogry + var handleDeleteRows = () => { + // Select all delete buttons + const deleteButtons = table.querySelectorAll('[data-kt-ecommerce-product-filter="delete_row"]'); + + deleteButtons.forEach(d => { + // Delete button on click + d.addEventListener('click', function (e) { + e.preventDefault(); + + // Select parent row + const parent = e.target.closest('tr'); + + // Get category name + const productName = parent.querySelector('[data-kt-ecommerce-product-filter="product_name"]').innerText; + + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete " + productName + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted " + productName + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove current row + datatable.row($(parent)).remove().draw(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: productName + " was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }) + }); + } + + + // Public methods + return { + init: function () { + table = document.querySelector('#kt_ecommerce_products_table'); + + if (!table) { + return; + } + + initDatatable(); + handleSearchDatatable(); + handleStatusFilter(); + handleDeleteRows(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppEcommerceProducts.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/catalog/save-category.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/catalog/save-category.js new file mode 100644 index 0000000..7f4699c --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/catalog/save-category.js @@ -0,0 +1,287 @@ +"use strict"; + +// Class definition +var KTAppEcommerceSaveCategory = function () { + + // Private functions + + // Init quill editor + const initQuill = () => { + // Define all elements for quill editor + const elements = [ + '#kt_ecommerce_add_category_description', + '#kt_ecommerce_add_category_meta_description' + ]; + + // Loop all elements + elements.forEach(element => { + // Get quill element + let quill = document.querySelector(element); + + // Break if element not found + if (!quill) { + return; + } + + // Init quill --- more info: https://quilljs.com/docs/quickstart/ + quill = new Quill(element, { + modules: { + toolbar: [ + [{ + header: [1, 2, false] + }], + ['bold', 'italic', 'underline'], + ['image', 'code-block'] + ] + }, + placeholder: 'Type your text here...', + theme: 'snow' // or 'bubble' + }); + }); + + } + + // Init tagify + const initTagify = () => { + // Define all elements for tagify + const elements = [ + '#kt_ecommerce_add_category_meta_keywords' + ]; + + // Loop all elements + elements.forEach(element => { + // Get tagify element + const tagify = document.querySelector(element); + + // Break if element not found + if (!tagify) { + return; + } + + // Init tagify --- more info: https://yaireo.github.io/tagify/ + new Tagify(tagify); + }); + } + + // Init form repeater --- more info: https://github.com/DubFriend/jquery.repeater + const initFormRepeater = () => { + $('#kt_ecommerce_add_category_conditions').repeater({ + initEmpty: false, + + defaultValues: { + 'text-input': 'foo' + }, + + show: function () { + $(this).slideDown(); + + // Init select2 on new repeated items + initConditionsSelect2(); + }, + + hide: function (deleteElement) { + $(this).slideUp(deleteElement); + } + }); + } + + // Init condition select2 + const initConditionsSelect2 = () => { + // Tnit new repeating condition types + const allConditionTypes = document.querySelectorAll('[data-kt-ecommerce-catalog-add-category="condition_type"]'); + allConditionTypes.forEach(type => { + if ($(type).hasClass("select2-hidden-accessible")) { + return; + } else { + $(type).select2({ + minimumResultsForSearch: -1 + }); + } + }); + + // Tnit new repeating condition equals + const allConditionEquals = document.querySelectorAll('[data-kt-ecommerce-catalog-add-category="condition_equals"]'); + allConditionEquals.forEach(equal => { + if ($(equal).hasClass("select2-hidden-accessible")) { + return; + } else { + $(equal).select2({ + minimumResultsForSearch: -1 + }); + } + }); + } + + // Category status handler + const handleStatus = () => { + const target = document.getElementById('kt_ecommerce_add_category_status'); + const select = document.getElementById('kt_ecommerce_add_category_status_select'); + const statusClasses = ['bg-success', 'bg-warning', 'bg-danger']; + + $(select).on('change', function (e) { + const value = e.target.value; + + switch (value) { + case "published": { + target.classList.remove(...statusClasses); + target.classList.add('bg-success'); + hideDatepicker(); + break; + } + case "scheduled": { + target.classList.remove(...statusClasses); + target.classList.add('bg-warning'); + showDatepicker(); + break; + } + case "unpublished": { + target.classList.remove(...statusClasses); + target.classList.add('bg-danger'); + hideDatepicker(); + break; + } + default: + break; + } + }); + + + // Handle datepicker + const datepicker = document.getElementById('kt_ecommerce_add_category_status_datepicker'); + + // Init flatpickr --- more info: https://flatpickr.js.org/ + $('#kt_ecommerce_add_category_status_datepicker').flatpickr({ + enableTime: true, + dateFormat: "Y-m-d H:i", + }); + + const showDatepicker = () => { + datepicker.parentNode.classList.remove('d-none'); + } + + const hideDatepicker = () => { + datepicker.parentNode.classList.add('d-none'); + } + } + + // Condition type handler + const handleConditions = () => { + const allConditions = document.querySelectorAll('[name="method"][type="radio"]'); + const conditionMatch = document.querySelector('[data-kt-ecommerce-catalog-add-category="auto-options"]'); + allConditions.forEach(radio => { + radio.addEventListener('change', e => { + if (e.target.value === '1') { + conditionMatch.classList.remove('d-none'); + } else { + conditionMatch.classList.add('d-none'); + } + }); + }) + } + + // Submit form handler + const handleSubmit = () => { + // Define variables + let validator; + + // Get elements + const form = document.getElementById('kt_ecommerce_add_category_form'); + const submitButton = document.getElementById('kt_ecommerce_add_category_submit'); + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'category_name': { + validators: { + notEmpty: { + message: 'Category name is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Handle submit button + submitButton.addEventListener('click', e => { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable submit button whilst loading + submitButton.disabled = true; + + setTimeout(function () { + submitButton.removeAttribute('data-kt-indicator'); + + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + // Enable submit button after loading + submitButton.disabled = false; + + // Redirect to customers list page + window.location = form.getAttribute("data-kt-redirect"); + } + }); + }, 2000); + } else { + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }) + } + + // Public methods + return { + init: function () { + // Init forms + initQuill(); + initTagify(); + initFormRepeater(); + initConditionsSelect2(); + + // Handle forms + handleStatus(); + handleConditions(); + handleSubmit(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppEcommerceSaveCategory.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/catalog/save-product.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/catalog/save-product.js new file mode 100644 index 0000000..33cbe95 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/catalog/save-product.js @@ -0,0 +1,416 @@ +"use strict"; + +// Class definition +var KTAppEcommerceSaveProduct = function () { + + // Private functions + + // Init quill editor + const initQuill = () => { + // Define all elements for quill editor + const elements = [ + '#kt_ecommerce_add_product_description', + '#kt_ecommerce_add_product_meta_description' + ]; + + // Loop all elements + elements.forEach(element => { + // Get quill element + let quill = document.querySelector(element); + + // Break if element not found + if (!quill) { + return; + } + + // Init quill --- more info: https://quilljs.com/docs/quickstart/ + quill = new Quill(element, { + modules: { + toolbar: [ + [{ + header: [1, 2, false] + }], + ['bold', 'italic', 'underline'], + ['image', 'code-block'] + ] + }, + placeholder: 'Type your text here...', + theme: 'snow' // or 'bubble' + }); + }); + } + + // Init tagify + const initTagify = () => { + // Define all elements for tagify + const elements = [ + '#kt_ecommerce_add_product_category', + '#kt_ecommerce_add_product_tags' + ]; + + // Loop all elements + elements.forEach(element => { + // Get tagify element + const tagify = document.querySelector(element); + + // Break if element not found + if (!tagify) { + return; + } + + // Init tagify --- more info: https://yaireo.github.io/tagify/ + new Tagify(tagify, { + whitelist: ["new", "trending", "sale", "discounted", "selling fast", "last 10"], + dropdown: { + maxItems: 20, // <- mixumum allowed rendered suggestions + classname: "tagify__inline__suggestions", // <- custom classname for this dropdown, so it could be targeted + enabled: 0, // <- show suggestions on focus + closeOnSelect: false // <- do not hide the suggestions dropdown once an item has been selected + } + }); + }); + } + + // Init form repeater --- more info: https://github.com/DubFriend/jquery.repeater + const initFormRepeater = () => { + $('#kt_ecommerce_add_product_options').repeater({ + initEmpty: false, + + defaultValues: { + 'text-input': 'foo' + }, + + show: function () { + $(this).slideDown(); + + // Init select2 on new repeated items + initConditionsSelect2(); + }, + + hide: function (deleteElement) { + $(this).slideUp(deleteElement); + } + }); + } + + // Init condition select2 + const initConditionsSelect2 = () => { + // Tnit new repeating condition types + const allConditionTypes = document.querySelectorAll('[data-kt-ecommerce-catalog-add-product="product_option"]'); + allConditionTypes.forEach(type => { + if ($(type).hasClass("select2-hidden-accessible")) { + return; + } else { + $(type).select2({ + minimumResultsForSearch: -1 + }); + } + }); + } + + + // Init noUIslider + const initSlider = () => { + var slider = document.querySelector("#kt_ecommerce_add_product_discount_slider"); + var value = document.querySelector("#kt_ecommerce_add_product_discount_label"); + + noUiSlider.create(slider, { + start: [10], + connect: true, + range: { + "min": 1, + "max": 100 + } + }); + + slider.noUiSlider.on("update", function (values, handle) { + value.innerHTML = Math.round(values[handle]); + if (handle) { + value.innerHTML = Math.round(values[handle]); + } + }); + } + + // Init DropzoneJS --- more info: + const initDropzone = () => { + var myDropzone = new Dropzone("#kt_ecommerce_add_product_media", { + url: "https://keenthemes.com/scripts/void.php", // Set the url for your upload script location + paramName: "file", // The name that will be used to transfer the file + maxFiles: 10, + maxFilesize: 10, // MB + addRemoveLinks: true, + accept: function (file, done) { + if (file.name == "wow.jpg") { + done("Naha, you don't."); + } else { + done(); + } + } + }); + } + + // Handle discount options + const handleDiscount = () => { + const discountOptions = document.querySelectorAll('input[name="discount_option"]'); + const percentageEl = document.getElementById('kt_ecommerce_add_product_discount_percentage'); + const fixedEl = document.getElementById('kt_ecommerce_add_product_discount_fixed'); + + discountOptions.forEach(option => { + option.addEventListener('change', e => { + const value = e.target.value; + + switch (value) { + case '2': { + percentageEl.classList.remove('d-none'); + fixedEl.classList.add('d-none'); + break; + } + case '3': { + percentageEl.classList.add('d-none'); + fixedEl.classList.remove('d-none'); + break; + } + default: { + percentageEl.classList.add('d-none'); + fixedEl.classList.add('d-none'); + break; + } + } + }); + }); + } + + // Shipping option handler + const handleShipping = () => { + const shippingOption = document.getElementById('kt_ecommerce_add_product_shipping_checkbox'); + const shippingForm = document.getElementById('kt_ecommerce_add_product_shipping'); + + shippingOption.addEventListener('change', e => { + const value = e.target.checked; + + if (value) { + shippingForm.classList.remove('d-none'); + } else { + shippingForm.classList.add('d-none'); + } + }); + } + + // Category status handler + const handleStatus = () => { + const target = document.getElementById('kt_ecommerce_add_product_status'); + const select = document.getElementById('kt_ecommerce_add_product_status_select'); + const statusClasses = ['bg-success', 'bg-warning', 'bg-danger']; + + $(select).on('change', function (e) { + const value = e.target.value; + + switch (value) { + case "published": { + target.classList.remove(...statusClasses); + target.classList.add('bg-success'); + hideDatepicker(); + break; + } + case "scheduled": { + target.classList.remove(...statusClasses); + target.classList.add('bg-warning'); + showDatepicker(); + break; + } + case "inactive": { + target.classList.remove(...statusClasses); + target.classList.add('bg-danger'); + hideDatepicker(); + break; + } + case "draft": { + target.classList.remove(...statusClasses); + target.classList.add('bg-primary'); + hideDatepicker(); + break; + } + default: + break; + } + }); + + + // Handle datepicker + const datepicker = document.getElementById('kt_ecommerce_add_product_status_datepicker'); + + // Init flatpickr --- more info: https://flatpickr.js.org/ + $('#kt_ecommerce_add_product_status_datepicker').flatpickr({ + enableTime: true, + dateFormat: "Y-m-d H:i", + }); + + const showDatepicker = () => { + datepicker.parentNode.classList.remove('d-none'); + } + + const hideDatepicker = () => { + datepicker.parentNode.classList.add('d-none'); + } + } + + // Condition type handler + const handleConditions = () => { + const allConditions = document.querySelectorAll('[name="method"][type="radio"]'); + const conditionMatch = document.querySelector('[data-kt-ecommerce-catalog-add-category="auto-options"]'); + allConditions.forEach(radio => { + radio.addEventListener('change', e => { + if (e.target.value === '1') { + conditionMatch.classList.remove('d-none'); + } else { + conditionMatch.classList.add('d-none'); + } + }); + }) + } + + // Submit form handler + const handleSubmit = () => { + // Define variables + let validator; + + // Get elements + const form = document.getElementById('kt_ecommerce_add_product_form'); + const submitButton = document.getElementById('kt_ecommerce_add_product_submit'); + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'product_name': { + validators: { + notEmpty: { + message: 'Product name is required' + } + } + }, + 'sku': { + validators: { + notEmpty: { + message: 'SKU is required' + } + } + }, + 'sku': { + validators: { + notEmpty: { + message: 'Product barcode is required' + } + } + }, + 'shelf': { + validators: { + notEmpty: { + message: 'Shelf quantity is required' + } + } + }, + 'price': { + validators: { + notEmpty: { + message: 'Product base price is required' + } + } + }, + 'tax': { + validators: { + notEmpty: { + message: 'Product tax class is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Handle submit button + submitButton.addEventListener('click', e => { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable submit button whilst loading + submitButton.disabled = true; + + setTimeout(function () { + submitButton.removeAttribute('data-kt-indicator'); + + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + // Enable submit button after loading + submitButton.disabled = false; + + // Redirect to customers list page + window.location = form.getAttribute("data-kt-redirect"); + } + }); + }, 2000); + } else { + Swal.fire({ + html: "Sorry, looks like there are some errors detected, please try again.

Please note that there may be errors in the General or Advanced tabs", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }) + } + + // Public methods + return { + init: function () { + // Init forms + initQuill(); + initTagify(); + initSlider(); + initFormRepeater(); + initDropzone(); + initConditionsSelect2(); + + // Handle forms + handleStatus(); + handleConditions(); + handleDiscount(); + handleShipping(); + handleSubmit(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppEcommerceSaveProduct.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/add-address.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/add-address.js new file mode 100644 index 0000000..2bf9ffc --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/add-address.js @@ -0,0 +1,214 @@ +"use strict"; + +// Class definition +var KTModalAddAddress = function () { + var submitButton; + var cancelButton; + var closeButton; + var validator; + var form; + var modal; + + // Init form inputs + var handleForm = function () { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'name': { + validators: { + notEmpty: { + message: 'Address name is required' + } + } + }, + 'country': { + validators: { + notEmpty: { + message: 'Country is required' + } + } + }, + 'address1': { + validators: { + notEmpty: { + message: 'Address 1 is required' + } + } + }, + 'city': { + validators: { + notEmpty: { + message: 'City is required' + } + } + }, + 'state': { + validators: { + notEmpty: { + message: 'State is required' + } + } + }, + 'postcode': { + validators: { + notEmpty: { + message: 'Postcode is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Revalidate country field. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="country"]')).on('change', function() { + // Revalidate the field when an option is chosen + validator.revalidateField('country'); + }); + + // Action buttons + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable submit button whilst loading + submitButton.disabled = true; + + setTimeout(function() { + submitButton.removeAttribute('data-kt-indicator'); + + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + // Hide modal + modal.hide(); + + // Enable submit button after loading + submitButton.disabled = false; + } + }); + }, 2000); + } else { + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + closeButton.addEventListener('click', function(e){ + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }) + } + + return { + // Public functions + init: function () { + // Elements + modal = new bootstrap.Modal(document.querySelector('#kt_modal_add_address')); + + form = document.querySelector('#kt_modal_add_address_form'); + submitButton = form.querySelector('#kt_modal_add_address_submit'); + cancelButton = form.querySelector('#kt_modal_add_address_cancel'); + closeButton = form.querySelector('#kt_modal_add_address_close'); + + handleForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalAddAddress.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/add-auth-app.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/add-auth-app.js new file mode 100644 index 0000000..ca71185 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/add-auth-app.js @@ -0,0 +1,81 @@ +"use strict"; + +// Class definition +var KTUsersAddAuthApp = function () { + // Shared variables + const element = document.getElementById('kt_modal_add_auth_app'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initAddAuthApp = () => { + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to close?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, close it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + modal.hide(); // Hide modal + } + }); + }); + + } + + // QR code to text code swapper + var initCodeSwap = () => { + const qrCode = element.querySelector('[ data-kt-add-auth-action="qr-code"]'); + const textCode = element.querySelector('[ data-kt-add-auth-action="text-code"]'); + const qrCodeButton = element.querySelector('[ data-kt-add-auth-action="qr-code-button"]'); + const textCodeButton = element.querySelector('[ data-kt-add-auth-action="text-code-button"]'); + const qrCodeLabel = element.querySelector('[ data-kt-add-auth-action="qr-code-label"]'); + const textCodeLabel = element.querySelector('[ data-kt-add-auth-action="text-code-label"]'); + + const toggleClass = () =>{ + qrCode.classList.toggle('d-none'); + qrCodeButton.classList.toggle('d-none'); + qrCodeLabel.classList.toggle('d-none'); + textCode.classList.toggle('d-none'); + textCodeButton.classList.toggle('d-none'); + textCodeLabel.classList.toggle('d-none'); + } + + // Swap to text code handler + textCodeButton.addEventListener('click', e =>{ + e.preventDefault(); + + toggleClass(); + }); + + qrCodeButton.addEventListener('click', e =>{ + e.preventDefault(); + + toggleClass(); + }); + } + + return { + // Public functions + init: function () { + initAddAuthApp(); + initCodeSwap(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersAddAuthApp.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/add-one-time-password.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/add-one-time-password.js new file mode 100644 index 0000000..af78deb --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/add-one-time-password.js @@ -0,0 +1,173 @@ +"use strict"; + +// Class definition +var KTUsersAddOneTimePassword = function () { + // Shared variables + const element = document.getElementById('kt_modal_add_one_time_password'); + const form = element.querySelector('#kt_modal_add_one_time_password_form'); + const modal = new bootstrap.Modal(element); + + // Init one time password modal + var initAddOneTimePassword = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'otp_mobile_number': { + validators: { + notEmpty: { + message: 'Valid mobile number is required' + } + } + }, + 'otp_confirm_password': { + validators: { + notEmpty: { + message: 'Password confirmation is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to close?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, close it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + modal.hide(); // Hide modal + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + return { + // Public functions + init: function () { + initAddOneTimePassword(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersAddOneTimePassword.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/payment-method.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/payment-method.js new file mode 100644 index 0000000..f63d912 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/payment-method.js @@ -0,0 +1,110 @@ +"use strict"; + +// Class definition +var KTCustomerViewPaymentMethod = function () { + + // Private functions + var initPaymentMethod = function () { + // Define variables + const table = document.getElementById('kt_customer_view_payment_method'); + const tableRows = table.querySelectorAll('[ data-kt-customer-payment-method="row"]'); + + tableRows.forEach(row => { + // Select delete button + const deleteButton = row.querySelector('[data-kt-customer-payment-method="delete"]'); + + // Delete button action + deleteButton.addEventListener('click', e => { + e.preventDefault(); + + // Popup confirmation + Swal.fire({ + text: "Are you sure you would like to delete this card?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + row.remove(); + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your card was not deleted!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + }); + } + + // Handle set as primary button + const handlePrimaryButton = () => { + // Define variable + const button = document.querySelector('[data-kt-payment-mehtod-action="set_as_primary"]'); + + button.addEventListener('click', e => { + e.preventDefault(); + + // Popup confirmation + Swal.fire({ + text: "Are you sure you would like to set this card as primary?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, set it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "Your card was set to primary!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your card was not set to primary!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + }; + + // Public methods + return { + init: function () { + initPaymentMethod(); + handlePrimaryButton(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTCustomerViewPaymentMethod.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/transaction-history.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/transaction-history.js new file mode 100644 index 0000000..30fba5d --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/transaction-history.js @@ -0,0 +1,110 @@ +"use strict"; + +// Class definition +var KTCustomerViewPaymentTable = function () { + + // Define shared variables + var datatable; + var table = document.querySelector('#kt_table_customers_payment'); + + // Private functions + var initCustomerView = function () { + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[3].innerHTML, "DD MMM YYYY, LT").format(); // select date from 4th column in table + dateRow[3].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + "pageLength": 5, + "lengthChange": false, + 'columnDefs': [ + { orderable: false, targets: 4 }, // Disable ordering on column 5 (actions) + ] + }); + } + + // Delete customer + var deleteRows = () => { + // Select all delete buttons + const deleteButtons = table.querySelectorAll('[data-kt-customer-table-filter="delete_row"]'); + + deleteButtons.forEach(d => { + // Delete button on click + d.addEventListener('click', function (e) { + e.preventDefault(); + + // Select parent row + const parent = e.target.closest('tr'); + + // Get customer name + const invoiceNumber = parent.querySelectorAll('td')[0].innerText; + + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete " + invoiceNumber + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted " + invoiceNumber + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove current row + datatable.row($(parent)).remove().draw(); + }).then(function () { + // Detect checked checkboxes + toggleToolbars(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: customerName + " was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }) + }); + } + + // Public methods + return { + init: function () { + if (!table) { + return; + } + + initCustomerView(); + deleteRows(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTCustomerViewPaymentTable.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/update-address.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/update-address.js new file mode 100644 index 0000000..a667f85 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/update-address.js @@ -0,0 +1,217 @@ +"use strict"; + +// Class definition +var KTModalUpdateAddress = function () { + var element; + var submitButton; + var cancelButton; + var closeButton; + var form; + var modal; + var validator; + + // Init form inputs + var initForm = function () { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'name': { + validators: { + notEmpty: { + message: 'Address name is required' + } + } + }, + 'country': { + validators: { + notEmpty: { + message: 'Country is required' + } + } + }, + 'address1': { + validators: { + notEmpty: { + message: 'Address 1 is required' + } + } + }, + 'city': { + validators: { + notEmpty: { + message: 'City is required' + } + } + }, + 'state': { + validators: { + notEmpty: { + message: 'State is required' + } + } + }, + 'postcode': { + validators: { + notEmpty: { + message: 'Postcode is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Revalidate country field. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="country"]')).on('change', function () { + // Revalidate the field when an option is chosen + validator.revalidateField('country'); + }); + + // Action buttons + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable submit button whilst loading + submitButton.disabled = true; + + setTimeout(function() { + submitButton.removeAttribute('data-kt-indicator'); + + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + // Hide modal + modal.hide(); + + // Enable submit button after loading + submitButton.disabled = false; + } + }); + }, 2000); + } else { + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + closeButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + return { + // Public functions + init: function () { + // Elements + element = document.querySelector('#kt_modal_update_address'); + modal = new bootstrap.Modal(element); + + form = element.querySelector('#kt_modal_update_address_form'); + submitButton = form.querySelector('#kt_modal_update_address_submit'); + cancelButton = form.querySelector('#kt_modal_update_address_cancel'); + closeButton = element.querySelector('#kt_modal_update_address_close'); + + initForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalUpdateAddress.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/update-password.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/update-password.js new file mode 100644 index 0000000..9110a89 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/update-password.js @@ -0,0 +1,194 @@ +"use strict"; + +// Class definition +var KTUsersUpdatePassword = function () { + // Shared variables + const element = document.getElementById('kt_modal_update_password'); + const form = element.querySelector('#kt_modal_update_password_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initUpdatePassword = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'current_password': { + validators: { + notEmpty: { + message: 'Current password is required' + } + } + }, + 'new_password': { + validators: { + notEmpty: { + message: 'The password is required' + }, + callback: { + message: 'Please enter valid password', + callback: function (input) { + if (input.value.length > 0) { + return validatePassword(); + } + } + } + } + }, + 'confirm_password': { + validators: { + notEmpty: { + message: 'The password confirmation is required' + }, + identical: { + compare: function () { + return form.querySelector('[name="new_password"]').value; + }, + message: 'The password and its confirm are not the same' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } + }); + } + }); + } + + return { + // Public functions + init: function () { + initUpdatePassword(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersUpdatePassword.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/update-phone.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/update-phone.js new file mode 100644 index 0000000..81c437a --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/update-phone.js @@ -0,0 +1,166 @@ +"use strict"; + +// Class definition +var KTUsersUpdateEmail = function () { + // Shared variables + const element = document.getElementById('kt_modal_update_phone'); + const form = element.querySelector('#kt_modal_update_phone_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initUpdateEmail = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'profile_phone': { + validators: { + notEmpty: { + message: 'Phone number is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } + }); + } + }); + } + + return { + // Public functions + init: function () { + initUpdateEmail(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersUpdateEmail.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/update-profile.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/update-profile.js new file mode 100644 index 0000000..6060181 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/details/update-profile.js @@ -0,0 +1,106 @@ +"use strict"; + +// Class definition +var KTEcommerceUpdateProfile = function () { + var submitButton; + var validator; + var form; + + // Init form inputs + var handleForm = function () { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'name': { + validators: { + notEmpty: { + message: 'Name is required' + } + } + }, + 'gen_email': { + validators: { + notEmpty: { + message: 'General Email is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Action buttons + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable submit button whilst loading + submitButton.disabled = true; + + setTimeout(function() { + submitButton.removeAttribute('data-kt-indicator'); + + Swal.fire({ + text: "Your profile has been saved!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + // Enable submit button after loading + submitButton.disabled = false; + } + }); + }, 2000); + } else { + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + return { + // Public functions + init: function () { + // Elements + form = document.querySelector('#kt_ecommerce_customer_profile'); + submitButton = form.querySelector('#kt_ecommerce_customer_profile_submit'); + + handleForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTEcommerceUpdateProfile.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/listing/add.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/listing/add.js new file mode 100644 index 0000000..df35986 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/listing/add.js @@ -0,0 +1,238 @@ +"use strict"; + +// Class definition +var KTModalCustomersAdd = function () { + var submitButton; + var cancelButton; + var closeButton; + var validator; + var form; + var modal; + + // Init form inputs + var handleForm = function () { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'name': { + validators: { + notEmpty: { + message: 'Customer name is required' + } + } + }, + 'email': { + validators: { + notEmpty: { + message: 'Customer email is required' + } + } + }, + 'first-name': { + validators: { + notEmpty: { + message: 'First name is required' + } + } + }, + 'last-name': { + validators: { + notEmpty: { + message: 'Last name is required' + } + } + }, + 'country': { + validators: { + notEmpty: { + message: 'Country is required' + } + } + }, + 'address1': { + validators: { + notEmpty: { + message: 'Address 1 is required' + } + } + }, + 'city': { + validators: { + notEmpty: { + message: 'City is required' + } + } + }, + 'state': { + validators: { + notEmpty: { + message: 'State is required' + } + } + }, + 'postcode': { + validators: { + notEmpty: { + message: 'Postcode is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Revalidate country field. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="country"]')).on('change', function() { + // Revalidate the field when an option is chosen + validator.revalidateField('country'); + }); + + // Action buttons + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable submit button whilst loading + submitButton.disabled = true; + + setTimeout(function() { + submitButton.removeAttribute('data-kt-indicator'); + + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + // Hide modal + modal.hide(); + + // Enable submit button after loading + submitButton.disabled = false; + + // Redirect to customers list page + window.location = form.getAttribute("data-kt-redirect"); + } + }); + }, 2000); + } else { + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + closeButton.addEventListener('click', function(e){ + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }) + } + + return { + // Public functions + init: function () { + // Elements + modal = new bootstrap.Modal(document.querySelector('#kt_modal_add_customer')); + + form = document.querySelector('#kt_modal_add_customer_form'); + submitButton = form.querySelector('#kt_modal_add_customer_submit'); + cancelButton = form.querySelector('#kt_modal_add_customer_cancel'); + closeButton = form.querySelector('#kt_modal_add_customer_close'); + + handleForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalCustomersAdd.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/listing/export.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/listing/export.js new file mode 100644 index 0000000..257159e --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/listing/export.js @@ -0,0 +1,189 @@ +"use strict"; + +// Class definition +var KTCustomersExport = function () { + var element; + var submitButton; + var cancelButton; + var closeButton; + var validator; + var form; + var modal; + + // Init form inputs + var handleForm = function () { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'date': { + validators: { + notEmpty: { + message: 'Date range is required' + } + } + }, + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Action buttons + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable submit button whilst loading + submitButton.disabled = true; + + setTimeout(function() { + submitButton.removeAttribute('data-kt-indicator'); + + Swal.fire({ + text: "Customer list has been successfully exported!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + + // Enable submit button after loading + submitButton.disabled = false; + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + closeButton.addEventListener('click', function(e){ + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + var initForm = function () { + const datepicker = form.querySelector("[name=date]"); + + // Handle datepicker range -- For more info on flatpickr plugin, please visit: https://flatpickr.js.org/ + $(datepicker).flatpickr({ + altInput: true, + altFormat: "F j, Y", + dateFormat: "Y-m-d", + mode: "range" + }); + } + + return { + // Public functions + init: function () { + // Elements + element = document.querySelector('#kt_customers_export_modal'); + modal = new bootstrap.Modal(element); + + form = document.querySelector('#kt_customers_export_form'); + submitButton = form.querySelector('#kt_customers_export_submit'); + cancelButton = form.querySelector('#kt_customers_export_cancel'); + closeButton = element.querySelector('#kt_customers_export_close'); + + handleForm(); + initForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTCustomersExport.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/listing/listing.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/listing/listing.js new file mode 100644 index 0000000..f92760c --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/customers/listing/listing.js @@ -0,0 +1,242 @@ +"use strict"; + +// Class definition +var KTCustomersList = function () { + // Define shared variables + var datatable; + var filterMonth; + var filterPayment; + var table + + // Private functions + var initCustomerList = function () { + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[5].innerHTML, "DD MMM YYYY, LT").format(); // select date from 5th column in table + dateRow[5].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + 'columnDefs': [ + { orderable: false, targets: 0 }, // Disable ordering on column 0 (checkbox) + { orderable: false, targets: 6 }, // Disable ordering on column 6 (actions) + ] + }); + + // Re-init functions on every table re-draw -- more info: https://datatables.net/reference/event/draw + datatable.on('draw', function () { + initToggleToolbar(); + handleDeleteRows(); + toggleToolbars(); + }); + } + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearchDatatable = () => { + const filterSearch = document.querySelector('[data-kt-customer-table-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Delete customer + var handleDeleteRows = () => { + // Select all delete buttons + const deleteButtons = table.querySelectorAll('[data-kt-customer-table-filter="delete_row"]'); + + deleteButtons.forEach(d => { + // Delete button on click + d.addEventListener('click', function (e) { + e.preventDefault(); + + // Select parent row + const parent = e.target.closest('tr'); + + // Get customer name + const customerName = parent.querySelectorAll('td')[1].innerText; + + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete " + customerName + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted " + customerName + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove current row + datatable.row($(parent)).remove().draw(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: customerName + " was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }) + }); + } + + // Handle status filter dropdown + var handleStatusFilter = () => { + const filterStatus = document.querySelector('[data-kt-ecommerce-order-filter="status"]'); + $(filterStatus).on('change', e => { + let value = e.target.value; + if (value === 'all') { + value = ''; + } + datatable.column(3).search(value).draw(); + }); + } + + // Init toggle toolbar + var initToggleToolbar = () => { + // Toggle selected action toolbar + // Select all checkboxes + const checkboxes = table.querySelectorAll('[type="checkbox"]'); + + // Select elements + const deleteSelected = document.querySelector('[data-kt-customer-table-select="delete_selected"]'); + + // Toggle delete selected toolbar + checkboxes.forEach(c => { + // Checkbox on click event + c.addEventListener('click', function () { + setTimeout(function () { + toggleToolbars(); + }, 50); + }); + }); + + // Deleted selected rows + deleteSelected.addEventListener('click', function () { + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete selected customers?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted all selected customers!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove all selected customers + checkboxes.forEach(c => { + if (c.checked) { + datatable.row($(c.closest('tbody tr'))).remove().draw(); + } + }); + + // Remove header checked box + const headerCheckbox = table.querySelectorAll('[type="checkbox"]')[0]; + headerCheckbox.checked = false; + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Selected customers was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }); + } + + // Toggle toolbars + const toggleToolbars = () => { + // Define variables + const toolbarBase = document.querySelector('[data-kt-customer-table-toolbar="base"]'); + const toolbarSelected = document.querySelector('[data-kt-customer-table-toolbar="selected"]'); + const selectedCount = document.querySelector('[data-kt-customer-table-select="selected_count"]'); + + // Select refreshed checkbox DOM elements + const allCheckboxes = table.querySelectorAll('tbody [type="checkbox"]'); + + // Detect checkboxes state & count + let checkedState = false; + let count = 0; + + // Count checked boxes + allCheckboxes.forEach(c => { + if (c.checked) { + checkedState = true; + count++; + } + }); + + // Toggle toolbars + if (checkedState) { + selectedCount.innerHTML = count; + toolbarBase.classList.add('d-none'); + toolbarSelected.classList.remove('d-none'); + } else { + toolbarBase.classList.remove('d-none'); + toolbarSelected.classList.add('d-none'); + } + } + + // Public methods + return { + init: function () { + table = document.querySelector('#kt_customers_table'); + + if (!table) { + return; + } + + initCustomerList(); + initToggleToolbar(); + handleSearchDatatable(); + handleDeleteRows(); + handleStatusFilter(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTCustomersList.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/reports/customer-orders/customer-orders.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/reports/customer-orders/customer-orders.js new file mode 100644 index 0000000..1a7f75f --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/reports/customer-orders/customer-orders.js @@ -0,0 +1,136 @@ +"use strict"; + +// Class definition +var KTAppEcommerceReportCustomerOrders = function () { + // Shared variables + var table; + var datatable; + + // Private functions + var initDatatable = function () { + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[3].innerHTML, "DD MMM YYYY, LT").format(); // select date from 4th column in table + dateRow[3].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + 'pageLength': 10, + }); + } + + // Init daterangepicker + var initDaterangepicker = () => { + var start = moment().subtract(29, "days"); + var end = moment(); + var input = $("#kt_ecommerce_report_customer_orders_daterangepicker"); + + function cb(start, end) { + input.html(start.format("MMMM D, YYYY") + " - " + end.format("MMMM D, YYYY")); + } + + input.daterangepicker({ + startDate: start, + endDate: end, + ranges: { + "Today": [moment(), moment()], + "Yesterday": [moment().subtract(1, "days"), moment().subtract(1, "days")], + "Last 7 Days": [moment().subtract(6, "days"), moment()], + "Last 30 Days": [moment().subtract(29, "days"), moment()], + "This Month": [moment().startOf("month"), moment().endOf("month")], + "Last Month": [moment().subtract(1, "month").startOf("month"), moment().subtract(1, "month").endOf("month")] + } + }, cb); + + cb(start, end); + } + + // Handle status filter dropdown + var handleStatusFilter = () => { + const filterStatus = document.querySelector('[data-kt-ecommerce-order-filter="status"]'); + $(filterStatus).on('change', e => { + let value = e.target.value; + if (value === 'all') { + value = ''; + } + datatable.column(2).search(value).draw(); + }); + } + + // Hook export buttons + var exportButtons = () => { + const documentTitle = 'Customer Orders Report'; + var buttons = new $.fn.dataTable.Buttons(table, { + buttons: [ + { + extend: 'copyHtml5', + title: documentTitle + }, + { + extend: 'excelHtml5', + title: documentTitle + }, + { + extend: 'csvHtml5', + title: documentTitle + }, + { + extend: 'pdfHtml5', + title: documentTitle + } + ] + }).container().appendTo($('#kt_ecommerce_report_customer_orders_export')); + + // Hook dropdown menu click event to datatable export buttons + const exportButtons = document.querySelectorAll('#kt_ecommerce_report_customer_orders_export_menu [data-kt-ecommerce-export]'); + exportButtons.forEach(exportButton => { + exportButton.addEventListener('click', e => { + e.preventDefault(); + + // Get clicked export value + const exportValue = e.target.getAttribute('data-kt-ecommerce-export'); + const target = document.querySelector('.dt-buttons .buttons-' + exportValue); + + // Trigger click event on hidden datatable export buttons + target.click(); + }); + }); + } + + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearchDatatable = () => { + const filterSearch = document.querySelector('[data-kt-ecommerce-order-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Public methods + return { + init: function () { + table = document.querySelector('#kt_ecommerce_report_customer_orders_table'); + + if (!table) { + return; + } + + initDatatable(); + initDaterangepicker(); + exportButtons(); + handleSearchDatatable(); + handleStatusFilter(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppEcommerceReportCustomerOrders.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/reports/returns/returns.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/reports/returns/returns.js new file mode 100644 index 0000000..0c09260 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/reports/returns/returns.js @@ -0,0 +1,123 @@ +"use strict"; + +// Class definition +var KTAppEcommerceReportReturns = function () { + // Shared variables + var table; + var datatable; + + // Private functions + var initDatatable = function () { + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[0].innerHTML, "MMM DD, YYYY").format(); // select date from 4th column in table + dateRow[0].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + 'pageLength': 10, + }); + } + + // Init daterangepicker + var initDaterangepicker = () => { + var start = moment().subtract(29, "days"); + var end = moment(); + var input = $("#kt_ecommerce_report_returns_daterangepicker"); + + function cb(start, end) { + input.html(start.format("MMMM D, YYYY") + " - " + end.format("MMMM D, YYYY")); + } + + input.daterangepicker({ + startDate: start, + endDate: end, + ranges: { + "Today": [moment(), moment()], + "Yesterday": [moment().subtract(1, "days"), moment().subtract(1, "days")], + "Last 7 Days": [moment().subtract(6, "days"), moment()], + "Last 30 Days": [moment().subtract(29, "days"), moment()], + "This Month": [moment().startOf("month"), moment().endOf("month")], + "Last Month": [moment().subtract(1, "month").startOf("month"), moment().subtract(1, "month").endOf("month")] + } + }, cb); + + cb(start, end); + } + + // Hook export buttons + var exportButtons = () => { + const documentTitle = 'Returns Report'; + var buttons = new $.fn.dataTable.Buttons(table, { + buttons: [ + { + extend: 'copyHtml5', + title: documentTitle + }, + { + extend: 'excelHtml5', + title: documentTitle + }, + { + extend: 'csvHtml5', + title: documentTitle + }, + { + extend: 'pdfHtml5', + title: documentTitle + } + ] + }).container().appendTo($('#kt_ecommerce_report_returns_export')); + + // Hook dropdown menu click event to datatable export buttons + const exportButtons = document.querySelectorAll('#kt_ecommerce_report_returns_export_menu [data-kt-ecommerce-export]'); + exportButtons.forEach(exportButton => { + exportButton.addEventListener('click', e => { + e.preventDefault(); + + // Get clicked export value + const exportValue = e.target.getAttribute('data-kt-ecommerce-export'); + const target = document.querySelector('.dt-buttons .buttons-' + exportValue); + + // Trigger click event on hidden datatable export buttons + target.click(); + }); + }); + } + + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearchDatatable = () => { + const filterSearch = document.querySelector('[data-kt-ecommerce-order-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Public methods + return { + init: function () { + table = document.querySelector('#kt_ecommerce_report_returns_table'); + + if (!table) { + return; + } + + initDatatable(); + initDaterangepicker(); + exportButtons(); + handleSearchDatatable(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppEcommerceReportReturns.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/reports/sales/sales.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/reports/sales/sales.js new file mode 100644 index 0000000..9978dea --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/reports/sales/sales.js @@ -0,0 +1,124 @@ +"use strict"; + +// Class definition +var KTAppEcommerceReportSales = function () { + // Shared variables + var table; + var datatable; + + // Private functions + var initDatatable = function () { + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[0].innerHTML, "MMM DD, YYYY").format(); // select date from 4th column in table + dateRow[0].setAttribute('data-order', realDate); + }); + + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + 'pageLength': 10, + }); + } + + // Init daterangepicker + var initDaterangepicker = () => { + var start = moment().subtract(29, "days"); + var end = moment(); + var input = $("#kt_ecommerce_report_sales_daterangepicker"); + + function cb(start, end) { + input.html(start.format("MMMM D, YYYY") + " - " + end.format("MMMM D, YYYY")); + } + + input.daterangepicker({ + startDate: start, + endDate: end, + ranges: { + "Today": [moment(), moment()], + "Yesterday": [moment().subtract(1, "days"), moment().subtract(1, "days")], + "Last 7 Days": [moment().subtract(6, "days"), moment()], + "Last 30 Days": [moment().subtract(29, "days"), moment()], + "This Month": [moment().startOf("month"), moment().endOf("month")], + "Last Month": [moment().subtract(1, "month").startOf("month"), moment().subtract(1, "month").endOf("month")] + } + }, cb); + + cb(start, end); + } + + // Hook export buttons + var exportButtons = () => { + const documentTitle = 'Sales Report'; + var buttons = new $.fn.dataTable.Buttons(table, { + buttons: [ + { + extend: 'copyHtml5', + title: documentTitle + }, + { + extend: 'excelHtml5', + title: documentTitle + }, + { + extend: 'csvHtml5', + title: documentTitle + }, + { + extend: 'pdfHtml5', + title: documentTitle + } + ] + }).container().appendTo($('#kt_ecommerce_report_sales_export')); + + // Hook dropdown menu click event to datatable export buttons + const exportButtons = document.querySelectorAll('#kt_ecommerce_report_sales_export_menu [data-kt-ecommerce-export]'); + exportButtons.forEach(exportButton => { + exportButton.addEventListener('click', e => { + e.preventDefault(); + + // Get clicked export value + const exportValue = e.target.getAttribute('data-kt-ecommerce-export'); + const target = document.querySelector('.dt-buttons .buttons-' + exportValue); + + // Trigger click event on hidden datatable export buttons + target.click(); + }); + }); + } + + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearchDatatable = () => { + const filterSearch = document.querySelector('[data-kt-ecommerce-order-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Public methods + return { + init: function () { + table = document.querySelector('#kt_ecommerce_report_sales_table'); + + if (!table) { + return; + } + + initDatatable(); + initDaterangepicker(); + exportButtons(); + handleSearchDatatable(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppEcommerceReportSales.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/reports/shipping/shipping.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/reports/shipping/shipping.js new file mode 100644 index 0000000..75f12f9 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/reports/shipping/shipping.js @@ -0,0 +1,137 @@ +"use strict"; + +// Class definition +var KTAppEcommerceReportShipping = function () { + // Shared variables + var table; + var datatable; + + // Private functions + var initDatatable = function () { + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[0].innerHTML, "MMM DD, YYYY").format(); // select date from 4th column in table + dateRow[0].setAttribute('data-order', realDate); + }); + + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + 'pageLength': 10, + }); + } + + // Init daterangepicker + var initDaterangepicker = () => { + var start = moment().subtract(29, "days"); + var end = moment(); + var input = $("#kt_ecommerce_report_shipping_daterangepicker"); + + function cb(start, end) { + input.html(start.format("MMMM D, YYYY") + " - " + end.format("MMMM D, YYYY")); + } + + input.daterangepicker({ + startDate: start, + endDate: end, + ranges: { + "Today": [moment(), moment()], + "Yesterday": [moment().subtract(1, "days"), moment().subtract(1, "days")], + "Last 7 Days": [moment().subtract(6, "days"), moment()], + "Last 30 Days": [moment().subtract(29, "days"), moment()], + "This Month": [moment().startOf("month"), moment().endOf("month")], + "Last Month": [moment().subtract(1, "month").startOf("month"), moment().subtract(1, "month").endOf("month")] + } + }, cb); + + cb(start, end); + } + + // Handle status filter dropdown + var handleStatusFilter = () => { + const filterStatus = document.querySelector('[data-kt-ecommerce-order-filter="status"]'); + $(filterStatus).on('change', e => { + let value = e.target.value; + if (value === 'all') { + value = ''; + } + datatable.column(3).search(value).draw(); + }); + } + + // Hook export buttons + var exportButtons = () => { + const documentTitle = 'Shipping Report'; + var buttons = new $.fn.dataTable.Buttons(table, { + buttons: [ + { + extend: 'copyHtml5', + title: documentTitle + }, + { + extend: 'excelHtml5', + title: documentTitle + }, + { + extend: 'csvHtml5', + title: documentTitle + }, + { + extend: 'pdfHtml5', + title: documentTitle + } + ] + }).container().appendTo($('#kt_ecommerce_report_shipping_export')); + + // Hook dropdown menu click event to datatable export buttons + const exportButtons = document.querySelectorAll('#kt_ecommerce_report_shipping_export_menu [data-kt-ecommerce-export]'); + exportButtons.forEach(exportButton => { + exportButton.addEventListener('click', e => { + e.preventDefault(); + + // Get clicked export value + const exportValue = e.target.getAttribute('data-kt-ecommerce-export'); + const target = document.querySelector('.dt-buttons .buttons-' + exportValue); + + // Trigger click event on hidden datatable export buttons + target.click(); + }); + }); + } + + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearchDatatable = () => { + const filterSearch = document.querySelector('[data-kt-ecommerce-order-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Public methods + return { + init: function () { + table = document.querySelector('#kt_ecommerce_report_shipping_table'); + + if (!table) { + return; + } + + initDatatable(); + initDaterangepicker(); + exportButtons(); + handleSearchDatatable(); + handleStatusFilter(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppEcommerceReportShipping.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/reports/views/views.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/reports/views/views.js new file mode 100644 index 0000000..1907350 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/reports/views/views.js @@ -0,0 +1,127 @@ +"use strict"; + +// Class definition +var KTAppEcommerceReportViews = function () { + // Shared variables + var table; + var datatable; + + // Private functions + var initDatatable = function () { + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + 'pageLength': 10, + }); + } + + // Init daterangepicker + var initDaterangepicker = () => { + var start = moment().subtract(29, "days"); + var end = moment(); + var input = $("#kt_ecommerce_report_views_daterangepicker"); + + function cb(start, end) { + input.html(start.format("MMMM D, YYYY") + " - " + end.format("MMMM D, YYYY")); + } + + input.daterangepicker({ + startDate: start, + endDate: end, + ranges: { + "Today": [moment(), moment()], + "Yesterday": [moment().subtract(1, "days"), moment().subtract(1, "days")], + "Last 7 Days": [moment().subtract(6, "days"), moment()], + "Last 30 Days": [moment().subtract(29, "days"), moment()], + "This Month": [moment().startOf("month"), moment().endOf("month")], + "Last Month": [moment().subtract(1, "month").startOf("month"), moment().subtract(1, "month").endOf("month")] + } + }, cb); + + cb(start, end); + } + + // Handle rating filter dropdown + var handleStatusFilter = () => { + const filterStatus = document.querySelector('[data-kt-ecommerce-order-filter="rating"]'); + $(filterStatus).on('change', e => { + let value = e.target.value; + if (value === 'all') { + value = ''; + } + datatable.column(2).search(value).draw(); + }); + } + + // Hook export buttons + var exportButtons = () => { + const documentTitle = 'Product Views Report'; + var buttons = new $.fn.dataTable.Buttons(table, { + buttons: [ + { + extend: 'copyHtml5', + title: documentTitle + }, + { + extend: 'excelHtml5', + title: documentTitle + }, + { + extend: 'csvHtml5', + title: documentTitle + }, + { + extend: 'pdfHtml5', + title: documentTitle + } + ] + }).container().appendTo($('#kt_ecommerce_report_views_export')); + + // Hook dropdown menu click event to datatable export buttons + const exportButtons = document.querySelectorAll('#kt_ecommerce_report_views_export_menu [data-kt-ecommerce-export]'); + exportButtons.forEach(exportButton => { + exportButton.addEventListener('click', e => { + e.preventDefault(); + + // Get clicked export value + const exportValue = e.target.getAttribute('data-kt-ecommerce-export'); + const target = document.querySelector('.dt-buttons .buttons-' + exportValue); + + // Trigger click event on hidden datatable export buttons + target.click(); + }); + }); + } + + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearchDatatable = () => { + const filterSearch = document.querySelector('[data-kt-ecommerce-order-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Public methods + return { + init: function () { + table = document.querySelector('#kt_ecommerce_report_views_table'); + + if (!table) { + return; + } + + initDatatable(); + initDaterangepicker(); + exportButtons(); + handleSearchDatatable(); + handleStatusFilter(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppEcommerceReportViews.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/sales/listing.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/sales/listing.js new file mode 100644 index 0000000..fa807e6 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/sales/listing.js @@ -0,0 +1,181 @@ +"use strict"; + +// Class definition +var KTAppEcommerceSalesListing = function () { + // Shared variables + var table; + var datatable; + var flatpickr; + var minDate, maxDate; + + // Private functions + var initDatatable = function () { + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + 'pageLength': 10, + 'columnDefs': [ + { orderable: false, targets: 0 }, // Disable ordering on column 0 (checkbox) + { orderable: false, targets: 7 }, // Disable ordering on column 7 (actions) + ] + }); + + // Re-init functions on datatable re-draws + datatable.on('draw', function () { + handleDeleteRows(); + }); + } + + // Init flatpickr --- more info :https://flatpickr.js.org/getting-started/ + var initFlatpickr = () => { + const element = document.querySelector('#kt_ecommerce_sales_flatpickr'); + flatpickr = $(element).flatpickr({ + altInput: true, + altFormat: "d/m/Y", + dateFormat: "Y-m-d", + mode: "range", + onChange: function (selectedDates, dateStr, instance) { + handleFlatpickr(selectedDates, dateStr, instance); + }, + }); + } + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearchDatatable = () => { + const filterSearch = document.querySelector('[data-kt-ecommerce-order-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Handle status filter dropdown + var handleStatusFilter = () => { + const filterStatus = document.querySelector('[data-kt-ecommerce-order-filter="status"]'); + $(filterStatus).on('change', e => { + let value = e.target.value; + if (value === 'all') { + value = ''; + } + datatable.column(3).search(value).draw(); + }); + } + + // Handle flatpickr --- more info: https://flatpickr.js.org/events/ + var handleFlatpickr = (selectedDates, dateStr, instance) => { + minDate = selectedDates[0] ? new Date(selectedDates[0]) : null; + maxDate = selectedDates[1] ? new Date(selectedDates[1]) : null; + + // Datatable date filter --- more info: https://datatables.net/extensions/datetime/examples/integration/datatables.html + // Custom filtering function which will search data in column four between two values + $.fn.dataTable.ext.search.push( + function (settings, data, dataIndex) { + var min = minDate; + var max = maxDate; + var dateAdded = new Date(moment($(data[5]).text(), 'DD/MM/YYYY')); + var dateModified = new Date(moment($(data[6]).text(), 'DD/MM/YYYY')); + + if ( + (min === null && max === null) || + (min === null && max >= dateModified) || + (min <= dateAdded && max === null) || + (min <= dateAdded && max >= dateModified) + ) { + return true; + } + return false; + } + ); + datatable.draw(); + } + + // Handle clear flatpickr + var handleClearFlatpickr = () => { + const clearButton = document.querySelector('#kt_ecommerce_sales_flatpickr_clear'); + clearButton.addEventListener('click', e => { + flatpickr.clear(); + }); + } + + // Delete cateogry + var handleDeleteRows = () => { + // Select all delete buttons + const deleteButtons = table.querySelectorAll('[data-kt-ecommerce-order-filter="delete_row"]'); + + deleteButtons.forEach(d => { + // Delete button on click + d.addEventListener('click', function (e) { + e.preventDefault(); + + // Select parent row + const parent = e.target.closest('tr'); + + // Get category name + const orderID = parent.querySelector('[data-kt-ecommerce-order-filter="order_id"]').innerText; + + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete order: " + orderID + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted " + orderID + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove current row + datatable.row($(parent)).remove().draw(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: orderID + " was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }) + }); + } + + + // Public methods + return { + init: function () { + table = document.querySelector('#kt_ecommerce_sales_table'); + + if (!table) { + return; + } + + initDatatable(); + initFlatpickr(); + handleSearchDatatable(); + handleStatusFilter(); + handleDeleteRows(); + handleClearFlatpickr(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppEcommerceSalesListing.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/sales/save-order.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/sales/save-order.js new file mode 100644 index 0000000..c0b94f4 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/sales/save-order.js @@ -0,0 +1,338 @@ +"use strict"; + +// Class definition +var KTAppEcommerceSalesSaveOrder = function () { + // Shared variables + var table; + var datatable; + + // Private functions + const initSaveOrder = () => { + // Init flatpickr + $('#kt_ecommerce_edit_order_date').flatpickr({ + altInput: true, + altFormat: "d F, Y", + dateFormat: "Y-m-d", + }); + + // Init select2 country options + // Format options + const optionFormat = (item) => { + if ( !item.id ) { + return item.text; + } + + var span = document.createElement('span'); + var template = ''; + + template += 'image'; + template += item.text; + + span.innerHTML = template; + + return $(span); + } + + // Init Select2 --- more info: https://select2.org/ + $('#kt_ecommerce_edit_order_billing_country').select2({ + placeholder: "Select a country", + minimumResultsForSearch: Infinity, + templateSelection: optionFormat, + templateResult: optionFormat + }); + + $('#kt_ecommerce_edit_order_shipping_country').select2({ + placeholder: "Select a country", + minimumResultsForSearch: Infinity, + templateSelection: optionFormat, + templateResult: optionFormat + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + table = document.querySelector('#kt_ecommerce_edit_order_product_table'); + datatable = $(table).DataTable({ + 'order': [], + "scrollY": "400px", + "scrollCollapse": true, + "paging": false, + "info": false, + 'columnDefs': [ + { orderable: false, targets: 0 }, // Disable ordering on column 0 (checkbox) + ] + }); + } + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearchDatatable = () => { + const filterSearch = document.querySelector('[data-kt-ecommerce-edit-order-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Handle shipping form + const handleShippingForm = () => { + // Select elements + const element = document.getElementById('kt_ecommerce_edit_order_shipping_form'); + const checkbox = document.getElementById('same_as_billing'); + + // Show/hide shipping form + checkbox.addEventListener('change', e => { + if (e.target.checked) { + element.classList.add('d-none'); + } else { + element.classList.remove('d-none'); + } + }); + } + + // Handle product select + const handleProductSelect = () => { + // Define variables + const checkboxes = table.querySelectorAll('[type="checkbox"]'); + const target = document.getElementById('kt_ecommerce_edit_order_selected_products'); + const totalPrice = document.getElementById('kt_ecommerce_edit_order_total_price'); + + // Loop through all checked products + checkboxes.forEach(checkbox => { + checkbox.addEventListener('change', e => { + // Select parent row element + const parent = checkbox.closest('tr'); + + // Clone parent element as variable + const product = parent.querySelector('[data-kt-ecommerce-edit-order-filter="product"]').cloneNode(true); + + // Create inner wrapper + const innerWrapper = document.createElement('div'); + + // Store inner content + const innerContent = product.innerHTML; + + // Add & remove classes on parent wrapper + const wrapperClassesAdd = ['col', 'my-2']; + const wrapperClassesRemove = ['d-flex', 'align-items-center']; + + // Define additional classes + const additionalClasses = ['border', 'border-dashed', 'rounded', 'p-3', 'bg-body']; + + // Update parent wrapper classes + product.classList.remove(...wrapperClassesRemove); + product.classList.add(...wrapperClassesAdd); + + // Remove parent default content + product.innerHTML = ''; + + // Update inner wrapper classes + innerWrapper.classList.add(...wrapperClassesRemove); + innerWrapper.classList.add(...additionalClasses); + + // Apply stored inner content into new inner wrapper + innerWrapper.innerHTML = innerContent; + + // Append new inner wrapper to parent wrapper + product.appendChild(innerWrapper); + + // Get product id + const productId = product.getAttribute('data-kt-ecommerce-edit-order-id'); + + if (e.target.checked) { + // Add product to selected product wrapper + target.appendChild(product); + } else { + // Remove product from selected product wrapper + const selectedProduct = target.querySelector('[data-kt-ecommerce-edit-order-id="' + productId + '"]'); + if (selectedProduct) { + target.removeChild(selectedProduct); + } + } + + // Trigger empty message logic + detectEmpty(); + }); + }); + + // Handle empty list message + const detectEmpty = () => { + // Select elements + const message = target.querySelector('span'); + const products = target.querySelectorAll('[data-kt-ecommerce-edit-order-filter="product"]'); + + // Detect if element is empty + if (products.length < 1) { + // Show message + message.classList.remove('d-none'); + + // Reset price + totalPrice.innerText = '0.00'; + } else { + // Hide message + message.classList.add('d-none'); + + // Calculate price + calculateTotal(products); + } + } + + // Calculate total cost + const calculateTotal = (products) => { + let countPrice = 0; + + // Loop through all selected prodcucts + products.forEach(product => { + // Get product price + const price = parseFloat(product.querySelector('[data-kt-ecommerce-edit-order-filter="price"]').innerText); + + // Add to total + countPrice = parseFloat(countPrice + price); + }); + + // Update total price + totalPrice.innerText = countPrice.toFixed(2); + } + } + + // Submit form handler + const handleSubmit = () => { + // Define variables + let validator; + + // Get elements + const form = document.getElementById('kt_ecommerce_edit_order_form'); + const submitButton = document.getElementById('kt_ecommerce_edit_order_submit'); + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'payment_method': { + validators: { + notEmpty: { + message: 'Payment method is required' + } + } + }, + 'shipping_method': { + validators: { + notEmpty: { + message: 'Shipping method is required' + } + } + }, + 'order_date': { + validators: { + notEmpty: { + message: 'Order date is required' + } + } + }, + 'billing_order_address_1': { + validators: { + notEmpty: { + message: 'Address line 1 is required' + } + } + }, + 'billing_order_postcode': { + validators: { + notEmpty: { + message: 'Postcode is required' + } + } + }, + 'billing_order_state': { + validators: { + notEmpty: { + message: 'State is required' + } + } + }, + 'billing_order_country': { + validators: { + notEmpty: { + message: 'Country is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Handle submit button + submitButton.addEventListener('click', e => { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable submit button whilst loading + submitButton.disabled = true; + + setTimeout(function () { + submitButton.removeAttribute('data-kt-indicator'); + + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + // Enable submit button after loading + submitButton.disabled = false; + + // Redirect to customers list page + window.location = form.getAttribute("data-kt-redirect"); + } + }); + }, 2000); + } else { + Swal.fire({ + html: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }) + } + + + // Public methods + return { + init: function () { + + initSaveOrder(); + handleSearchDatatable(); + handleShippingForm(); + handleProductSelect(); + handleSubmit(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppEcommerceSalesSaveOrder.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/settings/settings.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/settings/settings.js new file mode 100644 index 0000000..d2d053a --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/ecommerce/settings/settings.js @@ -0,0 +1,188 @@ +"use strict"; + +// Class definition +var KTAppEcommerceSettings = function () { + // Shared variables + + + // Private functions + const initForms = () => { + const forms = [ + 'kt_ecommerce_settings_general_form', + 'kt_ecommerce_settings_general_store', + 'kt_ecommerce_settings_general_localization', + 'kt_ecommerce_settings_general_products', + 'kt_ecommerce_settings_general_customers', + ]; + + // Init all forms + forms.forEach(formId => { + // Select form + const form = document.getElementById(formId); + + if(!form){ + return; + } + + // Dynamically create validation non-empty rule + const requiredFields = form.querySelectorAll('.required'); + var detectedField; + var validationFields = { + fields: {}, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + + // Detect required fields + requiredFields.forEach(el => { + const input = el.closest('.row').querySelector('input'); + if (input) { + detectedField = input; + } + + const textarea = el.closest('.row').querySelector('textarea'); + if (textarea) { + detectedField = textarea; + } + + const select = el.closest('.row').querySelector('select'); + if (select) { + detectedField = select; + } + + // Add validation rule + const name = detectedField.getAttribute('name'); + validationFields.fields[name] = { + validators: { + notEmpty: { + message: el.innerText + ' is required' + } + } + } + }); + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + validationFields + ); + + // Submit button handler + const submitButton = form.querySelector('[data-kt-ecommerce-settings-type="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup error + Swal.fire({ + text: "Oops! There are some error(s) detected.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + }); + } + + // Init Tagify + const initTagify = () => { + // Get tagify elements + const elements = document.querySelectorAll('[data-kt-ecommerce-settings-type="tagify"]'); + + // Init tagify + elements.forEach(element => { + new Tagify(element); + }); + } + + // Init Select2 with flags + const initSelect2Flags = () => { + // Format options + const optionFormat = (item) => { + if ( !item.id ) { + return item.text; + } + + var span = document.createElement('span'); + var template = ''; + + template += 'image'; + template += item.text; + + span.innerHTML = template; + + return $(span); + } + + // Init Select2 --- more info: https://select2.org/ + $('[data-kt-ecommerce-settings-type="select2_flags"]').select2({ + placeholder: "Select a country", + minimumResultsForSearch: Infinity, + templateSelection: optionFormat, + templateResult: optionFormat + }); + } + + // Public methods + return { + init: function () { + + initForms(); + initTagify(); + initSelect2Flags(); + + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppEcommerceSettings.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/file-manager/list.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/file-manager/list.js new file mode 100644 index 0000000..389b073 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/file-manager/list.js @@ -0,0 +1,939 @@ +"use strict"; + +// Class definition +var KTFileManagerList = function () { + // Define shared variables + var datatable; + var table + + // Define template element variables + var uploadTemplate; + var renameTemplate; + var actionTemplate; + var checkboxTemplate; + + + // Private functions + const initTemplates = () => { + uploadTemplate = document.querySelector('[data-kt-filemanager-template="upload"]'); + renameTemplate = document.querySelector('[data-kt-filemanager-template="rename"]'); + actionTemplate = document.querySelector('[data-kt-filemanager-template="action"]'); + checkboxTemplate = document.querySelector('[data-kt-filemanager-template="checkbox"]'); + } + + const initDatatable = () => { + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const dateCol = dateRow[3]; // select date from 4th column in table + const realDate = moment(dateCol.innerHTML, "DD MMM YYYY, LT").format(); + dateCol.setAttribute('data-order', realDate); + }); + + const foldersListOptions = { + "info": false, + 'order': [], + "scrollY": "700px", + "scrollCollapse": true, + "paging": false, + 'ordering': false, + 'columns': [ + { data: 'checkbox' }, + { data: 'name' }, + { data: 'size' }, + { data: 'date' }, + { data: 'action' }, + ], + 'language': { + emptyTable: `
+ +
No items found.
+
Start creating new folders or uploading a new file!
+
` + } + }; + + const filesListOptions = { + "info": false, + 'order': [], + 'pageLength': 10, + "lengthChange": false, + 'ordering': false, + 'columns': [ + { data: 'checkbox' }, + { data: 'name' }, + { data: 'size' }, + { data: 'date' }, + { data: 'action' }, + ], + 'language': { + emptyTable: `
+ +
No items found.
+
Start creating new folders or uploading a new file!
+
` + }, + conditionalPaging: true + }; + + // Define datatable options to load + var loadOptions; + if (table.getAttribute('data-kt-filemanager-table') === 'folders') { + loadOptions = foldersListOptions; + } else { + loadOptions = filesListOptions; + } + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable(loadOptions); + + // Re-init functions on every table re-draw -- more info: https://datatables.net/reference/event/draw + datatable.on('draw', function () { + initToggleToolbar(); + handleDeleteRows(); + toggleToolbars(); + resetNewFolder(); + KTMenu.createInstances(); + initCopyLink(); + countTotalItems(); + handleRename(); + }); + } + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + const handleSearchDatatable = () => { + const filterSearch = document.querySelector('[data-kt-filemanager-table-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Delete customer + const handleDeleteRows = () => { + // Select all delete buttons + const deleteButtons = table.querySelectorAll('[data-kt-filemanager-table-filter="delete_row"]'); + + deleteButtons.forEach(d => { + // Delete button on click + d.addEventListener('click', function (e) { + e.preventDefault(); + + // Select parent row + const parent = e.target.closest('tr'); + + // Get customer name + const fileName = parent.querySelectorAll('td')[1].innerText; + + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete " + fileName + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted " + fileName + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove current row + datatable.row($(parent)).remove().draw(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: customerName + " was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }) + }); + } + + // Init toggle toolbar + const initToggleToolbar = () => { + // Toggle selected action toolbar + // Select all checkboxes + var checkboxes = table.querySelectorAll('[type="checkbox"]'); + if (table.getAttribute('data-kt-filemanager-table') === 'folders') { + checkboxes = document.querySelectorAll('#kt_file_manager_list_wrapper [type="checkbox"]'); + } + + // Select elements + const deleteSelected = document.querySelector('[data-kt-filemanager-table-select="delete_selected"]'); + + // Toggle delete selected toolbar + checkboxes.forEach(c => { + // Checkbox on click event + c.addEventListener('click', function () { + console.log(c); + setTimeout(function () { + toggleToolbars(); + }, 50); + }); + }); + + // Deleted selected rows + deleteSelected.addEventListener('click', function () { + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete selected files or folders?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted all selected files or folders!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove all selected customers + checkboxes.forEach(c => { + if (c.checked) { + datatable.row($(c.closest('tbody tr'))).remove().draw(); + } + }); + + // Remove header checked box + const headerCheckbox = table.querySelectorAll('[type="checkbox"]')[0]; + headerCheckbox.checked = false; + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Selected files or folders was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }); + } + + // Toggle toolbars + const toggleToolbars = () => { + // Define variables + const toolbarBase = document.querySelector('[data-kt-filemanager-table-toolbar="base"]'); + const toolbarSelected = document.querySelector('[data-kt-filemanager-table-toolbar="selected"]'); + const selectedCount = document.querySelector('[data-kt-filemanager-table-select="selected_count"]'); + + // Select refreshed checkbox DOM elements + const allCheckboxes = table.querySelectorAll('tbody [type="checkbox"]'); + + // Detect checkboxes state & count + let checkedState = false; + let count = 0; + + // Count checked boxes + allCheckboxes.forEach(c => { + if (c.checked) { + checkedState = true; + count++; + } + }); + + // Toggle toolbars + if (checkedState) { + selectedCount.innerHTML = count; + toolbarBase.classList.add('d-none'); + toolbarSelected.classList.remove('d-none'); + } else { + toolbarBase.classList.remove('d-none'); + toolbarSelected.classList.add('d-none'); + } + } + + // Handle new folder + const handleNewFolder = () => { + // Select button + const newFolder = document.getElementById('kt_file_manager_new_folder'); + + // Handle click action + newFolder.addEventListener('click', e => { + e.preventDefault(); + + // Ignore if input already exist + if (table.querySelector('#kt_file_manager_new_folder_row')) { + return; + } + + // Add new blank row to datatable + const tableBody = table.querySelector('tbody'); + const rowElement = uploadTemplate.cloneNode(true); // Clone template markup + tableBody.prepend(rowElement); + + // Define template interactive elements + const rowForm = rowElement.querySelector('#kt_file_manager_add_folder_form'); + const rowButton = rowElement.querySelector('#kt_file_manager_add_folder'); + const cancelButton = rowElement.querySelector('#kt_file_manager_cancel_folder'); + const folderIcon = rowElement.querySelector('.svg-icon-2x'); + const rowInput = rowElement.querySelector('[name="new_folder_name"]'); + + // Define validator + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + rowForm, + { + fields: { + 'new_folder_name': { + validators: { + notEmpty: { + message: 'Folder name is required' + } + } + }, + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Handle add new folder button + rowButton.addEventListener('click', e => { + e.preventDefault(); + + // Activate indicator + rowButton.setAttribute("data-kt-indicator", "on"); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Simulate process for demo only + setTimeout(function () { + // Create folder link + const folderLink = document.createElement('a'); + const folderLinkClasses = ['text-gray-800', 'text-hover-primary']; + folderLink.setAttribute('href', '?page=apps/file-manager/blank'); + folderLink.classList.add(...folderLinkClasses); + folderLink.innerText = rowInput.value; + + const newRow = datatable.row.add({ + 'checkbox': checkboxTemplate.innerHTML, + 'name': folderIcon.outerHTML + folderLink.outerHTML, + "size": '-', + "date": '-', + 'action': actionTemplate.innerHTML + }).node(); + $(newRow).find('td').eq(4).attr('data-kt-filemanager-table', 'action_dropdown'); + $(newRow).find('td').eq(4).addClass('text-end'); // Add custom class to last 'td' element --- more info: https://datatables.net/forums/discussion/22341/row-add-cell-class + + // Re-sort datatable to allow new folder added at the top + var index = datatable.row(0).index(), + rowCount = datatable.data().length - 1, + insertedRow = datatable.row(rowCount).data(), + tempRow; + + for (var i = rowCount; i > index; i--) { + tempRow = datatable.row(i - 1).data(); + datatable.row(i).data(tempRow); + datatable.row(i - 1).data(insertedRow); + } + + toastr.options = { + "closeButton": true, + "debug": false, + "newestOnTop": false, + "progressBar": false, + "positionClass": "toastr-top-right", + "preventDuplicates": false, + "showDuration": "300", + "hideDuration": "1000", + "timeOut": "5000", + "extendedTimeOut": "1000", + "showEasing": "swing", + "hideEasing": "linear", + "showMethod": "fadeIn", + "hideMethod": "fadeOut" + }; + + toastr.success(rowInput.value + ' was created!'); + + // Disable indicator + rowButton.removeAttribute("data-kt-indicator"); + + // Reset input + rowInput.value = ''; + + datatable.draw(false); + + }, 2000); + } else { + // Disable indicator + rowButton.removeAttribute("data-kt-indicator"); + } + }); + } + }); + + // Handle cancel new folder button + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + // Activate indicator + cancelButton.setAttribute("data-kt-indicator", "on"); + + setTimeout(function () { + // Disable indicator + cancelButton.removeAttribute("data-kt-indicator"); + + // Toggle toastr + toastr.options = { + "closeButton": true, + "debug": false, + "newestOnTop": false, + "progressBar": false, + "positionClass": "toastr-top-right", + "preventDuplicates": false, + "showDuration": "300", + "hideDuration": "1000", + "timeOut": "5000", + "extendedTimeOut": "1000", + "showEasing": "swing", + "hideEasing": "linear", + "showMethod": "fadeIn", + "hideMethod": "fadeOut" + }; + + toastr.error('Cancelled new folder creation'); + resetNewFolder(); + }, 1000); + }); + }); + } + + // Reset add new folder input + const resetNewFolder = () => { + const newFolderRow = table.querySelector('#kt_file_manager_new_folder_row'); + + if (newFolderRow) { + newFolderRow.parentNode.removeChild(newFolderRow); + } + } + + // Handle rename file or folder + const handleRename = () => { + const renameButton = table.querySelectorAll('[data-kt-filemanager-table="rename"]'); + + renameButton.forEach(button => { + button.addEventListener('click', renameCallback); + }); + } + + // Rename callback + const renameCallback = (e) => { + e.preventDefault(); + + // Define shared value + let nameValue; + + // Stop renaming if there's an input existing + if (table.querySelectorAll('#kt_file_manager_rename_input').length > 0) { + Swal.fire({ + text: "Unsaved input detected. Please save or cancel the current item", + icon: "warning", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-danger" + } + }); + + return; + } + + // Select parent row + const parent = e.target.closest('tr'); + + // Get name column + const nameCol = parent.querySelectorAll('td')[1]; + const colIcon = nameCol.querySelector('.svg-icon'); + nameValue = nameCol.innerText; + + // Set rename input template + const renameInput = renameTemplate.cloneNode(true); + renameInput.querySelector('#kt_file_manager_rename_folder_icon').innerHTML = colIcon.outerHTML; + + // Swap current column content with input template + nameCol.innerHTML = renameInput.innerHTML; + + // Set input value with current file/folder name + parent.querySelector('#kt_file_manager_rename_input').value = nameValue; + + // Rename file / folder validator + var renameValidator = FormValidation.formValidation( + nameCol, + { + fields: { + 'rename_folder_name': { + validators: { + notEmpty: { + message: 'Name is required' + } + } + }, + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Rename input button action + const renameInputButton = document.querySelector('#kt_file_manager_rename_folder'); + renameInputButton.addEventListener('click', e => { + e.preventDefault(); + + // Detect if valid + if (renameValidator) { + renameValidator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Pop up confirmation + Swal.fire({ + text: "Are you sure you want to rename " + nameValue + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, rename it!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have renamed " + nameValue + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Get new file / folder name value + const newValue = document.querySelector('#kt_file_manager_rename_input').value; + + // New column data template + const newData = `
+ ${colIcon.outerHTML} + ${newValue} +
`; + + // Draw datatable with new content -- Add more events here for any server-side events + datatable.cell($(nameCol)).data(newData).draw(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: nameValue + " was not renamed.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + } + }); + } + }); + + // Cancel rename input + const cancelInputButton = document.querySelector('#kt_file_manager_rename_folder_cancel'); + cancelInputButton.addEventListener('click', e => { + e.preventDefault(); + + // Simulate process for demo only + cancelInputButton.setAttribute("data-kt-indicator", "on"); + + setTimeout(function () { + const revertTemplate = `
+ ${colIcon.outerHTML} + ${nameValue} +
`; + + // Remove spinner + cancelInputButton.removeAttribute("data-kt-indicator"); + + // Draw datatable with new content -- Add more events here for any server-side events + datatable.cell($(nameCol)).data(revertTemplate).draw(); + + // Toggle toastr + toastr.options = { + "closeButton": true, + "debug": false, + "newestOnTop": false, + "progressBar": false, + "positionClass": "toastr-top-right", + "preventDuplicates": false, + "showDuration": "300", + "hideDuration": "1000", + "timeOut": "5000", + "extendedTimeOut": "1000", + "showEasing": "swing", + "hideEasing": "linear", + "showMethod": "fadeIn", + "hideMethod": "fadeOut" + }; + + toastr.error('Cancelled rename function'); + }, 1000); + }); + } + + // Init dropzone + const initDropzone = () => { + // set the dropzone container id + const id = "#kt_modal_upload_dropzone"; + const dropzone = document.querySelector(id); + + // set the preview element template + var previewNode = dropzone.querySelector(".dropzone-item"); + previewNode.id = ""; + var previewTemplate = previewNode.parentNode.innerHTML; + previewNode.parentNode.removeChild(previewNode); + + var myDropzone = new Dropzone(id, { // Make the whole body a dropzone + url: "path/to/your/server", // Set the url for your upload script location + parallelUploads: 10, + previewTemplate: previewTemplate, + maxFilesize: 1, // Max filesize in MB + autoProcessQueue: false, // Stop auto upload + autoQueue: false, // Make sure the files aren't queued until manually added + previewsContainer: id + " .dropzone-items", // Define the container to display the previews + clickable: id + " .dropzone-select" // Define the element that should be used as click trigger to select files. + }); + + myDropzone.on("addedfile", function (file) { + // Hook each start button + file.previewElement.querySelector(id + " .dropzone-start").onclick = function () { + // myDropzone.enqueueFile(file); -- default dropzone function + + // Process simulation for demo only + const progressBar = file.previewElement.querySelector('.progress-bar'); + progressBar.style.opacity = "1"; + var width = 1; + var timer = setInterval(function () { + if (width >= 100) { + myDropzone.emit("success", file); + myDropzone.emit("complete", file); + clearInterval(timer); + } else { + width++; + progressBar.style.width = width + '%'; + } + }, 20); + }; + + const dropzoneItems = dropzone.querySelectorAll('.dropzone-item'); + dropzoneItems.forEach(dropzoneItem => { + dropzoneItem.style.display = ''; + }); + dropzone.querySelector('.dropzone-upload').style.display = "inline-block"; + dropzone.querySelector('.dropzone-remove-all').style.display = "inline-block"; + }); + + // Hide the total progress bar when nothing's uploading anymore + myDropzone.on("complete", function (file) { + const progressBars = dropzone.querySelectorAll('.dz-complete'); + setTimeout(function () { + progressBars.forEach(progressBar => { + progressBar.querySelector('.progress-bar').style.opacity = "0"; + progressBar.querySelector('.progress').style.opacity = "0"; + progressBar.querySelector('.dropzone-start').style.opacity = "0"; + }); + }, 300); + }); + + // Setup the buttons for all transfers + dropzone.querySelector(".dropzone-upload").addEventListener('click', function () { + // myDropzone.processQueue(); --- default dropzone process + + // Process simulation for demo only + myDropzone.files.forEach(file => { + const progressBar = file.previewElement.querySelector('.progress-bar'); + progressBar.style.opacity = "1"; + var width = 1; + var timer = setInterval(function () { + if (width >= 100) { + myDropzone.emit("success", file); + myDropzone.emit("complete", file); + clearInterval(timer); + } else { + width++; + progressBar.style.width = width + '%'; + } + }, 20); + }); + }); + + // Setup the button for remove all files + dropzone.querySelector(".dropzone-remove-all").addEventListener('click', function () { + Swal.fire({ + text: "Are you sure you would like to remove all files?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, remove it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + dropzone.querySelector('.dropzone-upload').style.display = "none"; + dropzone.querySelector('.dropzone-remove-all').style.display = "none"; + myDropzone.removeAllFiles(true); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your files was not removed!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // On all files completed upload + myDropzone.on("queuecomplete", function (progress) { + const uploadIcons = dropzone.querySelectorAll('.dropzone-upload'); + uploadIcons.forEach(uploadIcon => { + uploadIcon.style.display = "none"; + }); + }); + + // On all files removed + myDropzone.on("removedfile", function (file) { + if (myDropzone.files.length < 1) { + dropzone.querySelector('.dropzone-upload').style.display = "none"; + dropzone.querySelector('.dropzone-remove-all').style.display = "none"; + } + }); + } + + // Init copy link + const initCopyLink = () => { + // Select all copy link elements + const elements = table.querySelectorAll('[data-kt-filemanger-table="copy_link"]'); + + elements.forEach(el => { + // Define elements + const button = el.querySelector('button'); + const generator = el.querySelector('[data-kt-filemanger-table="copy_link_generator"]'); + const result = el.querySelector('[data-kt-filemanger-table="copy_link_result"]'); + const input = el.querySelector('input'); + + // Click action + button.addEventListener('click', e => { + e.preventDefault(); + + // Reset toggle + generator.classList.remove('d-none'); + result.classList.add('d-none'); + + var linkTimeout; + clearTimeout(linkTimeout); + linkTimeout = setTimeout(() => { + generator.classList.add('d-none'); + result.classList.remove('d-none'); + input.select(); + }, 2000); + }); + }); + } + + // Handle move to folder + const handleMoveToFolder = () => { + const element = document.querySelector('#kt_modal_move_to_folder'); + const form = element.querySelector('#kt_modal_move_to_folder_form'); + const saveButton = form.querySelector('#kt_modal_move_to_folder_submit'); + const moveModal = new bootstrap.Modal(element); + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'move_to_folder': { + validators: { + notEmpty: { + message: 'Please select a folder.' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + saveButton.addEventListener('click', e => { + e.preventDefault(); + + saveButton.setAttribute("data-kt-indicator", "on"); + + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Simulate process for demo only + setTimeout(function () { + + Swal.fire({ + text: "Are you sure you would like to move to this folder", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, move it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.isConfirmed) { + form.reset(); // Reset form + moveModal.hide(); // Hide modal + + toastr.options = { + "closeButton": true, + "debug": false, + "newestOnTop": false, + "progressBar": false, + "positionClass": "toastr-top-right", + "preventDuplicates": false, + "showDuration": "300", + "hideDuration": "1000", + "timeOut": "5000", + "extendedTimeOut": "1000", + "showEasing": "swing", + "hideEasing": "linear", + "showMethod": "fadeIn", + "hideMethod": "fadeOut" + }; + + toastr.success('1 item has been moved.'); + + saveButton.removeAttribute("data-kt-indicator"); + } else { + Swal.fire({ + text: "Your action has been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + + saveButton.removeAttribute("data-kt-indicator"); + } + }); + }, 500); + } else { + saveButton.removeAttribute("data-kt-indicator"); + } + }); + } + }); + } + + // Count total number of items + const countTotalItems = () => { + const counter = document.getElementById('kt_file_manager_items_counter'); + + // Count total number of elements in datatable --- more info: https://datatables.net/reference/api/count() + counter.innerText = datatable.rows().count() + ' items'; + } + + // Public methods + return { + init: function () { + table = document.querySelector('#kt_file_manager_list'); + + if (!table) { + return; + } + + initTemplates(); + initDatatable(); + initToggleToolbar(); + handleSearchDatatable(); + handleDeleteRows(); + handleNewFolder(); + initDropzone(); + initCopyLink(); + handleRename(); + handleMoveToFolder(); + countTotalItems(); + KTMenu.createInstances(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTFileManagerList.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/file-manager/settings.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/file-manager/settings.js new file mode 100644 index 0000000..936def4 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/file-manager/settings.js @@ -0,0 +1,55 @@ +"use strict"; + +// Class definition +var KTAppFileManagerSettings = function () { + var form; + + // Private functions + var handleForm = function() { + const saveButton = form.querySelector('#kt_file_manager_settings_submit'); + + saveButton.addEventListener('click', e => { + e.preventDefault(); + + saveButton.setAttribute("data-kt-indicator", "on"); + + // Simulate process for demo only + setTimeout(function(){ + toastr.options = { + "closeButton": true, + "debug": false, + "newestOnTop": false, + "progressBar": false, + "positionClass": "toast-top-right", + "preventDuplicates": false, + "showDuration": "300", + "hideDuration": "1000", + "timeOut": "5000", + "extendedTimeOut": "1000", + "showEasing": "swing", + "hideEasing": "linear", + "showMethod": "fadeIn", + "hideMethod": "fadeOut" + }; + + toastr.success('File manager settings have been saved'); + + saveButton.removeAttribute("data-kt-indicator"); + }, 1000); + }); + } + + // Public methods + return { + init: function(element) { + form = document.querySelector('#kt_file_manager_settings'); + + handleForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppFileManagerSettings.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/inbox/compose.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/inbox/compose.js new file mode 100644 index 0000000..3e218e5 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/inbox/compose.js @@ -0,0 +1,294 @@ +"use strict"; + +// Class definition +var KTAppInboxCompose = function () { + // Private functions + // Init reply form + const initForm = () => { + // Set variables + const form = document.querySelector('#kt_inbox_compose_form'); + const allTagify = form.querySelectorAll('[data-kt-inbox-form="tagify"]'); + + // Handle CC and BCC + handleCCandBCC(form); + + // Handle submit form + handleSubmit(form); + + // Init tagify + allTagify.forEach(tagify => { + initTagify(tagify); + }); + + // Init quill editor + initQuill(form); + + // Init dropzone + initDropzone(form); + } + + // Handle CC and BCC toggle + const handleCCandBCC = (el) => { + // Get elements + const ccElement = el.querySelector('[data-kt-inbox-form="cc"]'); + const ccButton = el.querySelector('[data-kt-inbox-form="cc_button"]'); + const ccClose = el.querySelector('[data-kt-inbox-form="cc_close"]'); + const bccElement = el.querySelector('[data-kt-inbox-form="bcc"]'); + const bccButton = el.querySelector('[data-kt-inbox-form="bcc_button"]'); + const bccClose = el.querySelector('[data-kt-inbox-form="bcc_close"]'); + + // Handle CC button click + ccButton.addEventListener('click', e => { + e.preventDefault(); + + ccElement.classList.remove('d-none'); + ccElement.classList.add('d-flex'); + }); + + // Handle CC close button click + ccClose.addEventListener('click', e => { + e.preventDefault(); + + ccElement.classList.add('d-none'); + ccElement.classList.remove('d-flex'); + }); + + // Handle BCC button click + bccButton.addEventListener('click', e => { + e.preventDefault(); + + bccElement.classList.remove('d-none'); + bccElement.classList.add('d-flex'); + }); + + // Handle CC close button click + bccClose.addEventListener('click', e => { + e.preventDefault(); + + bccElement.classList.add('d-none'); + bccElement.classList.remove('d-flex'); + }); + } + + // Handle submit form + const handleSubmit = (el) => { + const submitButton = el.querySelector('[data-kt-inbox-form="send"]'); + + // Handle button click event + submitButton.addEventListener("click", function () { + // Activate indicator + submitButton.setAttribute("data-kt-indicator", "on"); + + // Disable indicator after 3 seconds + setTimeout(function () { + submitButton.removeAttribute("data-kt-indicator"); + }, 3000); + }); + } + + // Init tagify + const initTagify = (el) => { + var inputElm = el; + + const usersList = [ + { value: 1, name: 'Emma Smith', avatar: 'avatars/300-6.jpg', email: 'e.smith@kpmg.com.au' }, + { value: 2, name: 'Max Smith', avatar: 'avatars/300-1.jpg', email: 'max@kt.com' }, + { value: 3, name: 'Sean Bean', avatar: 'avatars/300-5.jpg', email: 'sean@dellito.com' }, + { value: 4, name: 'Brian Cox', avatar: 'avatars/300-25.jpg', email: 'brian@exchange.com' }, + { value: 5, name: 'Francis Mitcham', avatar: 'avatars/300-9.jpg', email: 'f.mitcham@kpmg.com.au' }, + { value: 6, name: 'Dan Wilson', avatar: 'avatars/300-23.jpg', email: 'dam@consilting.com' }, + { value: 7, name: 'Ana Crown', avatar: 'avatars/300-12.jpg', email: 'ana.cf@limtel.com' }, + { value: 8, name: 'John Miller', avatar: 'avatars/300-13.jpg', email: 'miller@mapple.com' } + ]; + + function tagTemplate(tagData) { + return ` + + +
+
+ +
+ ${tagData.name} +
+
+ ` + } + + function suggestionItemTemplate(tagData) { + return ` +
+ + ${tagData.avatar ? ` +
+ +
` : '' + } + +
+ ${tagData.name} + ${tagData.email} +
+
+ ` + } + + // initialize Tagify on the above input node reference + var tagify = new Tagify(inputElm, { + tagTextProp: 'name', // very important since a custom template is used with this property as text. allows typing a "value" or a "name" to match input with whitelist + enforceWhitelist: true, + skipInvalid: true, // do not remporarily add invalid tags + dropdown: { + closeOnSelect: false, + enabled: 0, + classname: 'users-list', + searchKeys: ['name', 'email'] // very important to set by which keys to search for suggesttions when typing + }, + templates: { + tag: tagTemplate, + dropdownItem: suggestionItemTemplate + }, + whitelist: usersList + }) + + tagify.on('dropdown:show dropdown:updated', onDropdownShow) + tagify.on('dropdown:select', onSelectSuggestion) + + var addAllSuggestionsElm; + + function onDropdownShow(e) { + var dropdownContentElm = e.detail.tagify.DOM.dropdown.content; + + if (tagify.suggestedListItems.length > 1) { + addAllSuggestionsElm = getAddAllSuggestionsElm(); + + // insert "addAllSuggestionsElm" as the first element in the suggestions list + dropdownContentElm.insertBefore(addAllSuggestionsElm, dropdownContentElm.firstChild) + } + } + + function onSelectSuggestion(e) { + if (e.detail.elm == addAllSuggestionsElm) + tagify.dropdown.selectAll.call(tagify); + } + + // create a "add all" custom suggestion element every time the dropdown changes + function getAddAllSuggestionsElm() { + // suggestions items should be based on "dropdownItem" template + return tagify.parseTemplate('dropdownItem', [{ + class: "addAll", + name: "Add all", + email: tagify.settings.whitelist.reduce(function (remainingSuggestions, item) { + return tagify.isTagDuplicate(item.value) ? remainingSuggestions : remainingSuggestions + 1 + }, 0) + " Members" + }] + ) + } + } + + // Init quill editor + const initQuill = (el) => { + var quill = new Quill('#kt_inbox_form_editor', { + modules: { + toolbar: [ + [{ + header: [1, 2, false] + }], + ['bold', 'italic', 'underline'], + ['image', 'code-block'] + ] + }, + placeholder: 'Type your text here...', + theme: 'snow' // or 'bubble' + }); + + // Customize editor + const toolbar = el.querySelector('.ql-toolbar'); + + if (toolbar) { + const classes = ['px-5', 'border-top-0', 'border-start-0', 'border-end-0']; + toolbar.classList.add(...classes); + } + } + + // Init dropzone + const initDropzone = (el) => { + // set the dropzone container id + const id = '[data-kt-inbox-form="dropzone"]'; + const dropzone = el.querySelector(id); + const uploadButton = el.querySelector('[data-kt-inbox-form="dropzone_upload"]'); + + // set the preview element template + var previewNode = dropzone.querySelector(".dropzone-item"); + previewNode.id = ""; + var previewTemplate = previewNode.parentNode.innerHTML; + previewNode.parentNode.removeChild(previewNode); + + var myDropzone = new Dropzone(id, { // Make the whole body a dropzone + url: "https://preview.keenthemes.com/api/dropzone/void.php", // Set the url for your upload script location + parallelUploads: 20, + maxFilesize: 1, // Max filesize in MB + previewTemplate: previewTemplate, + previewsContainer: id + " .dropzone-items", // Define the container to display the previews + clickable: uploadButton // Define the element that should be used as click trigger to select files. + }); + + + myDropzone.on("addedfile", function (file) { + // Hookup the start button + const dropzoneItems = dropzone.querySelectorAll('.dropzone-item'); + dropzoneItems.forEach(dropzoneItem => { + dropzoneItem.style.display = ''; + }); + }); + + // Update the total progress bar + myDropzone.on("totaluploadprogress", function (progress) { + const progressBars = dropzone.querySelectorAll('.progress-bar'); + progressBars.forEach(progressBar => { + progressBar.style.width = progress + "%"; + }); + }); + + myDropzone.on("sending", function (file) { + // Show the total progress bar when upload starts + const progressBars = dropzone.querySelectorAll('.progress-bar'); + progressBars.forEach(progressBar => { + progressBar.style.opacity = "1"; + }); + }); + + // Hide the total progress bar when nothing"s uploading anymore + myDropzone.on("complete", function (progress) { + const progressBars = dropzone.querySelectorAll('.dz-complete'); + + setTimeout(function () { + progressBars.forEach(progressBar => { + progressBar.querySelector('.progress-bar').style.opacity = "0"; + progressBar.querySelector('.progress').style.opacity = "0"; + }); + }, 300); + }); + } + + + // Public methods + return { + init: function () { + initForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppInboxCompose.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/inbox/listing.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/inbox/listing.js new file mode 100644 index 0000000..4a6412c --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/inbox/listing.js @@ -0,0 +1,58 @@ +"use strict"; + +// Class definition +var KTAppInboxListing = function () { + var table; + var datatable; + + // Private functions + var initDatatable = function () { + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + // 'paging': false, + // 'pageLength': false, + }); + + datatable.on('draw', function () { + handleDatatableFooter(); + }); + } + + // Handle datatable footer spacings + var handleDatatableFooter = () => { + const footerElement = document.querySelector('#kt_inbox_listing_wrapper > .row'); + const spacingClasses = ['px-9', 'pt-3', 'pb-5']; + footerElement.classList.add(...spacingClasses); + } + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearchDatatable = () => { + const filterSearch = document.querySelector('[data-kt-inbox-listing-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + + // Public methods + return { + init: function () { + table = document.querySelector('#kt_inbox_listing'); + + if (!table) { + return; + } + + initDatatable(); + handleSearchDatatable(); + handleDatatableFooter(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppInboxListing.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/inbox/reply.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/inbox/reply.js new file mode 100644 index 0000000..d5c7c2a --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/inbox/reply.js @@ -0,0 +1,323 @@ +"use strict"; + +// Class definition +var KTAppInboxReply = function () { + + // Private functions + const handlePreviewText = () => { + // Get all messages + const accordions = document.querySelectorAll('[data-kt-inbox-message="message_wrapper"]'); + accordions.forEach(accordion => { + // Set variables + const header = accordion.querySelector('[data-kt-inbox-message="header"]'); + const previewText = accordion.querySelector('[data-kt-inbox-message="preview"]'); + const details = accordion.querySelector('[data-kt-inbox-message="details"]'); + const message = accordion.querySelector('[data-kt-inbox-message="message"]'); + + // Init bootstrap collapse -- more info: https://getbootstrap.com/docs/5.1/components/collapse/#via-javascript + const collapse = new bootstrap.Collapse(message, { toggle: false }); + + // Handle header click action + header.addEventListener('click', e => { + // Return if KTMenu or buttons are clicked + if (e.target.closest('[data-kt-menu-trigger="click"]') || e.target.closest('.btn')) { + return; + } else { + previewText.classList.toggle('d-none'); + details.classList.toggle('d-none'); + collapse.toggle(); + } + }); + }); + } + + // Init reply form + const initForm = () => { + // Set variables + const form = document.querySelector('#kt_inbox_reply_form'); + const allTagify = form.querySelectorAll('[data-kt-inbox-form="tagify"]'); + + // Handle CC and BCC + handleCCandBCC(form); + + // Handle submit form + handleSubmit(form); + + // Init tagify + allTagify.forEach(tagify => { + initTagify(tagify); + }); + + // Init quill editor + initQuill(form); + + // Init dropzone + initDropzone(form); + } + + // Handle CC and BCC toggle + const handleCCandBCC = (el) => { + // Get elements + const ccElement = el.querySelector('[data-kt-inbox-form="cc"]'); + const ccButton = el.querySelector('[data-kt-inbox-form="cc_button"]'); + const ccClose = el.querySelector('[data-kt-inbox-form="cc_close"]'); + const bccElement = el.querySelector('[data-kt-inbox-form="bcc"]'); + const bccButton = el.querySelector('[data-kt-inbox-form="bcc_button"]'); + const bccClose = el.querySelector('[data-kt-inbox-form="bcc_close"]'); + + // Handle CC button click + ccButton.addEventListener('click', e => { + e.preventDefault(); + + ccElement.classList.remove('d-none'); + ccElement.classList.add('d-flex'); + }); + + // Handle CC close button click + ccClose.addEventListener('click', e => { + e.preventDefault(); + + ccElement.classList.add('d-none'); + ccElement.classList.remove('d-flex'); + }); + + // Handle BCC button click + bccButton.addEventListener('click', e => { + e.preventDefault(); + + bccElement.classList.remove('d-none'); + bccElement.classList.add('d-flex'); + }); + + // Handle CC close button click + bccClose.addEventListener('click', e => { + e.preventDefault(); + + bccElement.classList.add('d-none'); + bccElement.classList.remove('d-flex'); + }); + } + + // Handle submit form + const handleSubmit = (el) => { + const submitButton = el.querySelector('[data-kt-inbox-form="send"]'); + + // Handle button click event + submitButton.addEventListener("click", function () { + // Activate indicator + submitButton.setAttribute("data-kt-indicator", "on"); + + // Disable indicator after 3 seconds + setTimeout(function () { + submitButton.removeAttribute("data-kt-indicator"); + }, 3000); + }); + } + + // Init tagify + const initTagify = (el) => { + var inputElm = el; + + const usersList = [ + { value: 1, name: 'Emma Smith', avatar: 'avatars/300-6.jpg', email: 'e.smith@kpmg.com.au' }, + { value: 2, name: 'Max Smith', avatar: 'avatars/300-1.jpg', email: 'max@kt.com' }, + { value: 3, name: 'Sean Bean', avatar: 'avatars/300-5.jpg', email: 'sean@dellito.com' }, + { value: 4, name: 'Brian Cox', avatar: 'avatars/300-25.jpg', email: 'brian@exchange.com' }, + { value: 5, name: 'Francis Mitcham', avatar: 'avatars/300-9.jpg', email: 'f.mitcham@kpmg.com.au' }, + { value: 6, name: 'Dan Wilson', avatar: 'avatars/300-23.jpg', email: 'dam@consilting.com' }, + { value: 7, name: 'Ana Crown', avatar: 'avatars/300-12.jpg', email: 'ana.cf@limtel.com' }, + { value: 8, name: 'John Miller', avatar: 'avatars/300-13.jpg', email: 'miller@mapple.com' } + ]; + + function tagTemplate(tagData) { + return ` + + +
+
+ +
+ ${tagData.name} +
+
+ ` + } + + function suggestionItemTemplate(tagData) { + return ` +
+ + ${tagData.avatar ? ` +
+ +
` : '' + } + +
+ ${tagData.name} + ${tagData.email} +
+
+ ` + } + + // initialize Tagify on the above input node reference + var tagify = new Tagify(inputElm, { + tagTextProp: 'name', // very important since a custom template is used with this property as text. allows typing a "value" or a "name" to match input with whitelist + enforceWhitelist: true, + skipInvalid: true, // do not remporarily add invalid tags + dropdown: { + closeOnSelect: false, + enabled: 0, + classname: 'users-list', + searchKeys: ['name', 'email'] // very important to set by which keys to search for suggesttions when typing + }, + templates: { + tag: tagTemplate, + dropdownItem: suggestionItemTemplate + }, + whitelist: usersList + }) + + tagify.on('dropdown:show dropdown:updated', onDropdownShow) + tagify.on('dropdown:select', onSelectSuggestion) + + var addAllSuggestionsElm; + + function onDropdownShow(e) { + var dropdownContentElm = e.detail.tagify.DOM.dropdown.content; + + if (tagify.suggestedListItems.length > 1) { + addAllSuggestionsElm = getAddAllSuggestionsElm(); + + // insert "addAllSuggestionsElm" as the first element in the suggestions list + dropdownContentElm.insertBefore(addAllSuggestionsElm, dropdownContentElm.firstChild) + } + } + + function onSelectSuggestion(e) { + if (e.detail.elm == addAllSuggestionsElm) + tagify.dropdown.selectAll.call(tagify); + } + + // create a "add all" custom suggestion element every time the dropdown changes + function getAddAllSuggestionsElm() { + // suggestions items should be based on "dropdownItem" template + return tagify.parseTemplate('dropdownItem', [{ + class: "addAll", + name: "Add all", + email: tagify.settings.whitelist.reduce(function (remainingSuggestions, item) { + return tagify.isTagDuplicate(item.value) ? remainingSuggestions : remainingSuggestions + 1 + }, 0) + " Members" + }] + ) + } + } + + // Init quill editor + const initQuill = (el) => { + var quill = new Quill('#kt_inbox_form_editor', { + modules: { + toolbar: [ + [{ + header: [1, 2, false] + }], + ['bold', 'italic', 'underline'], + ['image', 'code-block'] + ] + }, + placeholder: 'Type your text here...', + theme: 'snow' // or 'bubble' + }); + + // Customize editor + const toolbar = el.querySelector('.ql-toolbar'); + + if (toolbar) { + const classes = ['px-5', 'border-top-0', 'border-start-0', 'border-end-0']; + toolbar.classList.add(...classes); + } + } + + // Init dropzone + const initDropzone = (el) => { + // set the dropzone container id + const id = '[data-kt-inbox-form="dropzone"]'; + const dropzone = el.querySelector(id); + const uploadButton = el.querySelector('[data-kt-inbox-form="dropzone_upload"]'); + + // set the preview element template + var previewNode = dropzone.querySelector(".dropzone-item"); + previewNode.id = ""; + var previewTemplate = previewNode.parentNode.innerHTML; + previewNode.parentNode.removeChild(previewNode); + + var myDropzone = new Dropzone(id, { // Make the whole body a dropzone + url: "https://preview.keenthemes.com/api/dropzone/void.php", // Set the url for your upload script location + parallelUploads: 20, + maxFilesize: 1, // Max filesize in MB + previewTemplate: previewTemplate, + previewsContainer: id + " .dropzone-items", // Define the container to display the previews + clickable: uploadButton // Define the element that should be used as click trigger to select files. + }); + + + myDropzone.on("addedfile", function (file) { + // Hookup the start button + const dropzoneItems = dropzone.querySelectorAll('.dropzone-item'); + dropzoneItems.forEach(dropzoneItem => { + dropzoneItem.style.display = ''; + }); + }); + + // Update the total progress bar + myDropzone.on("totaluploadprogress", function (progress) { + const progressBars = dropzone.querySelectorAll('.progress-bar'); + progressBars.forEach(progressBar => { + progressBar.style.width = progress + "%"; + }); + }); + + myDropzone.on("sending", function (file) { + // Show the total progress bar when upload starts + const progressBars = dropzone.querySelectorAll('.progress-bar'); + progressBars.forEach(progressBar => { + progressBar.style.opacity = "1"; + }); + }); + + // Hide the total progress bar when nothing"s uploading anymore + myDropzone.on("complete", function (progress) { + const progressBars = dropzone.querySelectorAll('.dz-complete'); + + setTimeout(function () { + progressBars.forEach(progressBar => { + progressBar.querySelector('.progress-bar').style.opacity = "0"; + progressBar.querySelector('.progress').style.opacity = "0"; + }); + }, 300); + }); + } + + + // Public methods + return { + init: function () { + handlePreviewText(); + initForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppInboxReply.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/invoices/create.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/invoices/create.js new file mode 100644 index 0000000..1c61b67 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/invoices/create.js @@ -0,0 +1,111 @@ +"use strict"; + +// Class definition +var KTAppInvoicesCreate = function () { + var form; + + // Private functions + var updateTotal = function() { + var items = [].slice.call(form.querySelectorAll('[data-kt-element="items"] [data-kt-element="item"]')); + var grandTotal = 0; + + var format = wNumb({ + //prefix: '$ ', + decimals: 2, + thousand: ',' + }); + + items.map(function (item) { + var quantity = item.querySelector('[data-kt-element="quantity"]'); + var price = item.querySelector('[data-kt-element="price"]'); + + var priceValue = format.from(price.value); + priceValue = (!priceValue || priceValue < 0) ? 0 : priceValue; + + var quantityValue = parseInt(quantity.value); + quantityValue = (!quantityValue || quantityValue < 0) ? 1 : quantityValue; + + price.value = format.to(priceValue); + quantity.value = quantityValue; + + item.querySelector('[data-kt-element="total"]').innerText = format.to(priceValue * quantityValue); + + grandTotal += priceValue * quantityValue; + }); + + form.querySelector('[data-kt-element="sub-total"]').innerText = format.to(grandTotal); + form.querySelector('[data-kt-element="grand-total"]').innerText = format.to(grandTotal); + } + + var handleEmptyState = function() { + if (form.querySelectorAll('[data-kt-element="items"] [data-kt-element="item"]').length === 0) { + var item = form.querySelector('[data-kt-element="empty-template"] tr').cloneNode(true); + form.querySelector('[data-kt-element="items"] tbody').appendChild(item); + } else { + KTUtil.remove(form.querySelector('[data-kt-element="items"] [data-kt-element="empty"]')); + } + } + + var handeForm = function (element) { + // Add item + form.querySelector('[data-kt-element="items"] [data-kt-element="add-item"]').addEventListener('click', function(e) { + e.preventDefault(); + + var item = form.querySelector('[data-kt-element="item-template"] tr').cloneNode(true); + + form.querySelector('[data-kt-element="items"] tbody').appendChild(item); + + handleEmptyState(); + updateTotal(); + }); + + // Remove item + KTUtil.on(form, '[data-kt-element="items"] [data-kt-element="remove-item"]', 'click', function(e) { + e.preventDefault(); + + KTUtil.remove(this.closest('[data-kt-element="item"]')); + + handleEmptyState(); + updateTotal(); + }); + + // Handle price and quantity changes + KTUtil.on(form, '[data-kt-element="items"] [data-kt-element="quantity"], [data-kt-element="items"] [data-kt-element="price"]', 'change', function(e) { + e.preventDefault(); + + updateTotal(); + }); + } + + var initForm = function(element) { + // Due date. For more info, please visit the official plugin site: https://flatpickr.js.org/ + var invoiceDate = $(form.querySelector('[name="invoice_date"]')); + invoiceDate.flatpickr({ + enableTime: false, + dateFormat: "d, M Y", + }); + + // Due date. For more info, please visit the official plugin site: https://flatpickr.js.org/ + var dueDate = $(form.querySelector('[name="invoice_due_date"]')); + dueDate.flatpickr({ + enableTime: false, + dateFormat: "d, M Y", + }); + } + + // Public methods + return { + init: function(element) { + form = document.querySelector('#kt_invoice_form'); + + handeForm(); + initForm(); + updateTotal(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppInvoicesCreate.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/projects/list/list.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/projects/list/list.js new file mode 100644 index 0000000..7610a76 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/projects/list/list.js @@ -0,0 +1,79 @@ +"use strict"; + +// Class definition +var KTProjectList = function () { + var initChart = function () { + // init chart + var element = document.getElementById("kt_project_list_chart"); + + if (!element) { + return; + } + + var config = { + type: 'doughnut', + data: { + datasets: [{ + data: [30, 45, 25], + backgroundColor: ['#00A3FF', '#50CD89', '#E4E6EF'] + }], + labels: ['Active', 'Completed', 'Yet to start'] + }, + options: { + chart: { + fontFamily: 'inherit' + }, + borderWidth: 0, + cutout: '75%', + cutoutPercentage: 65, + responsive: true, + maintainAspectRatio: false, + title: { + display: false + }, + animation: { + animateScale: true, + animateRotate: true + }, + stroke: { + width: 0 + }, + tooltips: { + enabled: true, + intersect: false, + mode: 'nearest', + bodySpacing: 5, + yPadding: 10, + xPadding: 10, + caretPadding: 0, + displayColors: false, + backgroundColor: '#20D489', + titleFontColor: '#ffffff', + cornerRadius: 4, + footerSpacing: 0, + titleSpacing: 0 + }, + plugins: { + legend: { + display: false + } + } + } + }; + + var ctx = element.getContext('2d'); + var myDoughnut = new Chart(ctx, config); + } + + // Public methods + return { + init: function () { + initChart(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTProjectList.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/projects/project/project.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/projects/project/project.js new file mode 100644 index 0000000..edd2ae6 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/projects/project/project.js @@ -0,0 +1,316 @@ +"use strict"; + +// Class definition +var KTProjectOverview = function () { + // Colors + var primary = KTUtil.getCssVariableValue('--bs-primary'); + var lightPrimary = KTUtil.getCssVariableValue('--bs-primary-light'); + var success = KTUtil.getCssVariableValue('--bs-success'); + var lightSuccess = KTUtil.getCssVariableValue('--bs-success-light'); + var gray200 = KTUtil.getCssVariableValue('--bs-gray-200'); + var gray500 = KTUtil.getCssVariableValue('--bs-gray-500'); + + // Private functions + var initChart = function () { + // init chart + var element = document.getElementById("project_overview_chart"); + + if (!element) { + return; + } + + var config = { + type: 'doughnut', + data: { + datasets: [{ + data: [30, 45, 25], + backgroundColor: ['#00A3FF', '#50CD89', '#E4E6EF'] + }], + labels: ['Active', 'Completed', 'Yet to start'] + }, + options: { + chart: { + fontFamily: 'inherit' + }, + cutoutPercentage: 75, + responsive: true, + maintainAspectRatio: false, + cutout: '75%', + title: { + display: false + }, + animation: { + animateScale: true, + animateRotate: true + }, + tooltips: { + enabled: true, + intersect: false, + mode: 'nearest', + bodySpacing: 5, + yPadding: 10, + xPadding: 10, + caretPadding: 0, + displayColors: false, + backgroundColor: '#20D489', + titleFontColor: '#ffffff', + cornerRadius: 4, + footerSpacing: 0, + titleSpacing: 0 + }, + plugins: { + legend: { + display: false + } + } + } + }; + + var ctx = element.getContext('2d'); + var myDoughnut = new Chart(ctx, config); + } + + var initGraph = function () { + var element = document.getElementById("kt_project_overview_graph"); + var height = parseInt(KTUtil.css(element, 'height')); + + if (!element) { + return; + } + + var options = { + series: [{ + name: 'Incomplete', + data: [70, 70, 80, 80, 75, 75, 75] + }, { + name: 'Complete', + data: [55, 55, 60, 60, 55, 55, 60] + }], + chart: { + type: 'area', + height: height, + toolbar: { + show: false + } + }, + plotOptions: { + + }, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + fill: { + type: 'solid', + opacity: 1 + }, + stroke: { + curve: 'smooth', + show: true, + width: 3, + colors: [primary, success] + }, + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + style: { + colors: gray500, + fontSize: '12px' + } + }, + crosshairs: { + position: 'front', + stroke: { + color: primary, + width: 1, + dashArray: 3 + } + }, + tooltip: { + enabled: true, + formatter: undefined, + offsetY: 0, + style: { + fontSize: '12px' + } + } + }, + yaxis: { + labels: { + style: { + colors: gray500, + fontSize: '12px', + } + } + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px', + }, + y: { + formatter: function (val) { + return val + " tasks" + } + } + }, + colors: [lightPrimary, lightSuccess], + grid: { + borderColor: gray200, + strokeDashArray: 4, + yaxis: { + lines: { + show: true + } + } + }, + markers: { + //size: 5, + colors: [lightPrimary, lightSuccess], + strokeColor: [primary, success], + strokeWidth: 3 + } + }; + + var chart = new ApexCharts(element, options); + chart.render(); + } + + var initTable = function () { + var table = document.querySelector('#kt_profile_overview_table'); + + if (!table) { + return; + } + + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[1].innerHTML, "MMM D, YYYY").format(); + dateRow[1].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + const datatable = $(table).DataTable({ + "info": false, + 'order': [] + }); + + // Filter dropdown elements + const filterOrders = document.getElementById('kt_filter_orders'); + const filterYear = document.getElementById('kt_filter_year'); + + // Filter by order status --- official docs reference: https://datatables.net/reference/api/search() + filterOrders.addEventListener('change', function (e) { + datatable.column(3).search(e.target.value).draw(); + }); + + // Filter by date --- official docs reference: https://momentjs.com/docs/ + var minDate; + var maxDate; + + filterYear.addEventListener('change', function (e) { + const value = e.target.value; + switch (value) { + case 'thisyear': { + minDate = moment().startOf('year').format(); + maxDate = moment().endOf('year').format(); + datatable.draw(); + break; + } + case 'thismonth': { + minDate = moment().startOf('month').format(); + maxDate = moment().endOf('month').format(); + datatable.draw(); + break; + } + case 'lastmonth': { + minDate = moment().subtract(1, 'months').startOf('month').format(); + maxDate = moment().subtract(1, 'months').endOf('month').format(); + datatable.draw(); + break; + } + case 'last90days': { + minDate = moment().subtract(30, 'days').format(); + maxDate = moment().format(); + datatable.draw(); + break; + } + default: { + minDate = moment().subtract(100, 'years').startOf('month').format(); + maxDate = moment().add(1, 'months').endOf('month').format(); + datatable.draw(); + break; + } + } + }); + + // Date range filter --- offical docs reference: https://datatables.net/examples/plug-ins/range_filtering.html + $.fn.dataTable.ext.search.push( + function (settings, data, dataIndex) { + var min = minDate; + var max = maxDate; + var date = parseFloat(moment(data[1]).format()) || 0; // use data for the age column + + if ((isNaN(min) && isNaN(max)) || + (isNaN(min) && date <= max) || + (min <= date && isNaN(max)) || + (min <= date && date <= max)) { + return true; + } + return false; + } + ); + + // Search --- official docs reference: https://datatables.net/reference/api/search() + var filterSearch = document.getElementById('kt_filter_search'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Public methods + return { + init: function () { + initChart(); + initGraph(); + initTable(); + } + } +}(); + + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTProjectOverview.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/projects/settings/settings.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/projects/settings/settings.js new file mode 100644 index 0000000..0d80990 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/projects/settings/settings.js @@ -0,0 +1,104 @@ +"use strict"; + +// Class definition +var KTProjectSettings = function () { + + // Private functions + var handleForm = function () { + // Init Datepicker --- For more info, please check Flatpickr's official documentation: https://flatpickr.js.org/ + $("#kt_datepicker_1").flatpickr(); + + // Form validation + var validation; + var _form = document.getElementById('kt_project_settings_form'); + var submitButton = _form.querySelector('#kt_project_settings_submit'); + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validation = FormValidation.formValidation( + _form, + { + fields: { + name: { + validators: { + notEmpty: { + message: 'Project name is required' + } + } + }, + type: { + validators: { + notEmpty: { + message: 'Project type is required' + } + } + }, + description: { + validators: { + notEmpty: { + message: 'Project Description is required' + } + } + }, + date: { + validators: { + notEmpty: { + message: 'Due Date is required' + } + } + }, + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + submitButton: new FormValidation.plugins.SubmitButton(), + //defaultSubmit: new FormValidation.plugins.DefaultSubmit(), // Uncomment this line to enable normal button submit after form validation + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row' + }) + } + } + ); + + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + validation.validate().then(function (status) { + if (status == 'Valid') { + + swal.fire({ + text: "Thank you! You've updated your project settings", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-light-primary" + } + }); + + } else { + swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-light-primary" + } + }); + } + }); + }); + } + + // Public methods + return { + init: function () { + handleForm(); + } + } +}(); + + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTProjectSettings.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/projects/targets/targets.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/projects/targets/targets.js new file mode 100644 index 0000000..d652274 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/projects/targets/targets.js @@ -0,0 +1,38 @@ +"use strict"; + +// Class definition +var KTProjectTargets = function () { + + var initDatatable = function () { + const table = document.getElementById('kt_profile_overview_table'); + + // set date data order + const tableRows = table.querySelectorAll('tbody tr'); + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[1].innerHTML, "MMM D, YYYY").format(); + dateRow[1].setAttribute('data-order', realDate); + }); + + // init datatable --- more info on datatables: https://datatables.net/manual/ + const datatable = $(table).DataTable({ + "info": false, + 'order': [], + "paging": false, + }); + + } + + // Public methods + return { + init: function () { + initDatatable(); + } + } +}(); + + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTProjectTargets.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/projects/users/users.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/projects/users/users.js new file mode 100644 index 0000000..c835907 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/projects/users/users.js @@ -0,0 +1,52 @@ +"use strict"; + +// Class definition +var KTProjectUsers = function () { + + var initTable = function () { + // Set date data order + const table = document.getElementById('kt_project_users_table'); + + if (!table) { + return; + } + + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[1].innerHTML, "MMM D, YYYY").format(); + dateRow[1].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + const datatable = $(table).DataTable({ + "info": false, + 'order': [], + "columnDefs": [{ + "targets": 4, + "orderable": false + }] + }); + + // Search --- official docs reference: https://datatables.net/reference/api/search() + var filterSearch = document.getElementById('kt_filter_search'); + if (filterSearch) { + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + } + + // Public methods + return { + init: function () { + initTable(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTProjectUsers.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/subscriptions/add/advanced.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/subscriptions/add/advanced.js new file mode 100644 index 0000000..bf2c886 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/subscriptions/add/advanced.js @@ -0,0 +1,126 @@ +"use strict"; + +var KTSubscriptionsAdvanced = function () { + // Shared variables + var table; + var datatable; + + var initCustomFieldsDatatable = function () { + // Define variables + const addButton = document.getElementById('kt_create_new_custom_fields_add'); + + // Duplicate input fields + const fieldName = table.querySelector('tbody tr td:first-child').innerHTML; + const fieldValue = table.querySelector('tbody tr td:nth-child(2)').innerHTML; + const deleteButton = table.querySelector('tbody tr td:last-child').innerHTML; + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + 'ordering': false, + 'paging': false, + "lengthChange": false + }); + + // Define datatable row node + var rowNode; + + // Handle add button + addButton.addEventListener('click', function (e) { + e.preventDefault(); + + rowNode = datatable.row.add([ + fieldName, + fieldValue, + deleteButton + ]).draw().node(); + + // Add custom class to last column -- more info: https://datatables.net/forums/discussion/22341/row-add-cell-class + $(rowNode).find('td').eq(2).addClass('text-end'); + + // Re-calculate index + initCustomFieldRowIndex(); + }); + } + + // Handle row index count + var initCustomFieldRowIndex = function() { + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach((tr, index) => { + // add index number to input names & id + const fieldNameInput = tr.querySelector('td:first-child input'); + const fieldValueInput = tr.querySelector('td:nth-child(2) input'); + const fieldNameLabel = fieldNameInput.getAttribute('id'); + const fieldValueLabel = fieldValueInput.getAttribute('id'); + + fieldNameInput.setAttribute('name', fieldNameLabel + '-' + index); + fieldValueInput.setAttribute('name', fieldValueLabel + '-' + index); + }); + } + + // Delete product + var deleteCustomField = function() { + KTUtil.on(table, '[data-kt-action="field_remove"]', 'click', function(e) { + e.preventDefault(); + + // Select parent row + const parent = e.target.closest('tr'); + + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete this field ?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted it!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove current row + datatable.row($(parent)).remove().draw(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "It was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }) + } + }); + }); + } + + return { + init: function () { + table = document.getElementById('kt_create_new_custom_fields'); + + initCustomFieldsDatatable(); + initCustomFieldRowIndex(); + deleteCustomField(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTSubscriptionsAdvanced.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/subscriptions/add/customer-select.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/subscriptions/add/customer-select.js new file mode 100644 index 0000000..3718907 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/subscriptions/add/customer-select.js @@ -0,0 +1,85 @@ +"use strict"; + +// Class definition +var KTModalCustomerSelect = function() { + // Private variables + var element; + var suggestionsElement; + var resultsElement; + var wrapperElement; + var emptyElement; + var searchObject; + + var modal; + + // Private functions + var processs = function(search) { + var timeout = setTimeout(function() { + var number = KTUtil.getRandomInt(1, 6); + + // Hide recently viewed + suggestionsElement.classList.add('d-none'); + + if (number === 3) { + // Hide results + resultsElement.classList.add('d-none'); + // Show empty message + emptyElement.classList.remove('d-none'); + } else { + // Show results + resultsElement.classList.remove('d-none'); + // Hide empty message + emptyElement.classList.add('d-none'); + } + + // Complete search + search.complete(); + }, 1500); + } + + var clear = function(search) { + // Show recently viewed + suggestionsElement.classList.remove('d-none'); + // Hide results + resultsElement.classList.add('d-none'); + // Hide empty message + emptyElement.classList.add('d-none'); + } + + // Public methods + return { + init: function() { + // Elements + element = document.querySelector('#kt_modal_customer_search_handler'); + modal = new bootstrap.Modal(document.querySelector('#kt_modal_customer_search')); + + if (!element) { + return; + } + + wrapperElement = element.querySelector('[data-kt-search-element="wrapper"]'); + suggestionsElement = element.querySelector('[data-kt-search-element="suggestions"]'); + resultsElement = element.querySelector('[data-kt-search-element="results"]'); + emptyElement = element.querySelector('[data-kt-search-element="empty"]'); + + // Initialize search handler + searchObject = new KTSearch(element); + + // Search handler + searchObject.on('kt.search.process', processs); + + // Clear handler + searchObject.on('kt.search.clear', clear); + + // Handle select + KTUtil.on(element, '[data-kt-search-element="customer"]', 'click', function() { + modal.hide(); + }); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalCustomerSelect.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/subscriptions/add/products.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/subscriptions/add/products.js new file mode 100644 index 0000000..2f33c38 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/subscriptions/add/products.js @@ -0,0 +1,157 @@ +"use strict"; + +var KTSubscriptionsProducts = function () { + // Shared variables + var table; + var datatable; + var modalEl; + var modal; + + var initDatatable = function() { + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + 'ordering': false, + 'paging': false, + "lengthChange": false + }); + } + + // Delete product + var deleteProduct = function() { + KTUtil.on(table, '[data-kt-action="product_remove"]', 'click', function(e) { + e.preventDefault(); + + // Select parent row + const parent = e.target.closest('tr'); + + // Get customer name + const productName = parent.querySelectorAll('td')[0].innerText; + + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete " + productName + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted " + productName + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove current row + datatable.row($(parent)).remove().draw(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: customerName + " was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }); + } + + // Modal handlers + var addProduct = function() { + // Select modal buttons + const closeButton = modalEl.querySelector('#kt_modal_add_product_close'); + const cancelButton = modalEl.querySelector('#kt_modal_add_product_cancel'); + const submitButton = modalEl.querySelector('#kt_modal_add_product_submit'); + + // Cancel button action + cancelButton.addEventListener('click', function(e){ + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Add customer button handler + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Check all radio buttons + var radio = modalEl.querySelector('input[type="radio"]:checked'); + + // Define datatable row node + var rowNode; + + if (radio && radio.checked === true) { + rowNode = datatable.row.add( [ + radio.getAttribute('data-kt-product-name'), + '1', + radio.getAttribute('data-kt-product-price') + ' / ' + radio.getAttribute('data-kt-product-frequency'), + table.querySelector('tbody tr td:last-child').innerHTML + ]).draw().node(); + + // Add custom class to last column -- more info: https://datatables.net/forums/discussion/22341/row-add-cell-class + $( rowNode ).find('td').eq(3).addClass('text-end'); + } + + modal.hide(); // Remove modal + }); + } + + return { + init: function () { + modalEl = document.getElementById('kt_modal_add_product'); + + // Select modal -- more info on Bootstrap modal: https://getbootstrap.com/docs/5.0/components/modal/ + modal = new bootstrap.Modal(modalEl); + + table = document.querySelector('#kt_subscription_products_table'); + + initDatatable(); + deleteProduct(); + addProduct(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTSubscriptionsProducts.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/subscriptions/list/export.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/subscriptions/list/export.js new file mode 100644 index 0000000..9f5949f --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/subscriptions/list/export.js @@ -0,0 +1,189 @@ +"use strict"; + +// Class definition +var KTSubscriptionsExport = function () { + var element; + var submitButton; + var cancelButton; + var closeButton; + var validator; + var form; + var modal; + + // Init form inputs + var handleForm = function () { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'date': { + validators: { + notEmpty: { + message: 'Date range is required' + } + } + }, + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Action buttons + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable submit button whilst loading + submitButton.disabled = true; + + setTimeout(function () { + submitButton.removeAttribute('data-kt-indicator'); + + Swal.fire({ + text: "Customer list has been successfully exported!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + + // Enable submit button after loading + submitButton.disabled = false; + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + closeButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + var initForm = function () { + const datepicker = form.querySelector("[name=date]"); + + // Handle datepicker range -- For more info on flatpickr plugin, please visit: https://flatpickr.js.org/ + $(datepicker).flatpickr({ + altInput: true, + altFormat: "F j, Y", + dateFormat: "Y-m-d", + mode: "range" + }); + } + + return { + // Public functions + init: function () { + // Elements + element = document.querySelector('#kt_subscriptions_export_modal'); + modal = new bootstrap.Modal(element); + + form = document.querySelector('#kt_subscriptions_export_form'); + submitButton = form.querySelector('#kt_subscriptions_export_submit'); + cancelButton = form.querySelector('#kt_subscriptions_export_cancel'); + closeButton = element.querySelector('#kt_subscriptions_export_close'); + + handleForm(); + initForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTSubscriptionsExport.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/subscriptions/list/list.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/subscriptions/list/list.js new file mode 100644 index 0000000..2dee53d --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/subscriptions/list/list.js @@ -0,0 +1,277 @@ +"use strict"; + +var KTSubscriptionsList = function () { + // Define shared variables + var table; + var datatable; + var toolbarBase; + var toolbarSelected; + var selectedCount; + + // Private functions + var initDatatable = function () { + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[5].innerHTML, "DD MMM YYYY, LT").format(); // select date from 4th column in table + dateRow[5].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + "pageLength": 10, + "lengthChange": false, + 'columnDefs': [ + { orderable: false, targets: 0 }, // Disable ordering on column 0 (checkbox) + { orderable: false, targets: 6 }, // Disable ordering on column 6 (actions) + ] + }); + + // Re-init functions on every table re-draw -- more info: https://datatables.net/reference/event/draw + datatable.on('draw', function () { + initToggleToolbar(); + handleRowDeletion(); + toggleToolbars(); + }); + } + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearch = function () { + const filterSearch = document.querySelector('[data-kt-subscription-table-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Filter Datatable + var handleFilter = function () { + // Select filter options + const filterForm = document.querySelector('[data-kt-subscription-table-filter="form"]'); + const filterButton = filterForm.querySelector('[data-kt-subscription-table-filter="filter"]'); + const resetButton = filterForm.querySelector('[data-kt-subscription-table-filter="reset"]'); + const selectOptions = filterForm.querySelectorAll('select'); + + // Filter datatable on submit + filterButton.addEventListener('click', function () { + var filterString = ''; + + // Get filter values + selectOptions.forEach((item, index) => { + if (item.value && item.value !== '') { + if (index !== 0) { + filterString += ' '; + } + + // Build filter value options + filterString += item.value; + } + }); + + // Filter datatable --- official docs reference: https://datatables.net/reference/api/search() + datatable.search(filterString).draw(); + }); + + // Reset datatable + resetButton.addEventListener('click', function () { + // Reset filter form + selectOptions.forEach((item, index) => { + // Reset Select2 dropdown --- official docs reference: https://select2.org/programmatic-control/add-select-clear-items + $(item).val(null).trigger('change'); + }); + + // Filter datatable --- official docs reference: https://datatables.net/reference/api/search() + datatable.search('').draw(); + }); + } + + // Delete subscirption + var handleRowDeletion = function () { + // Select all delete buttons + const deleteButtons = table.querySelectorAll('[data-kt-subscriptions-table-filter="delete_row"]'); + + deleteButtons.forEach(d => { + // Delete button on click + d.addEventListener('click', function (e) { + e.preventDefault(); + + // Select parent row + const parent = e.target.closest('tr'); + + // Get customer name + const customerName = parent.querySelectorAll('td')[1].innerText; + + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete " + customerName + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted " + customerName + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove current row + datatable.row($(parent)).remove().draw(); + }).then(function () { + // Detect checked checkboxes + toggleToolbars(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: customerName + " was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }) + }); + } + + // Init toggle toolbar + var initToggleToolbar = () => { + // Toggle selected action toolbar + // Select all checkboxes + const checkboxes = table.querySelectorAll('[type="checkbox"]'); + + // Select elements + toolbarBase = document.querySelector('[data-kt-subscription-table-toolbar="base"]'); + toolbarSelected = document.querySelector('[data-kt-subscription-table-toolbar="selected"]'); + selectedCount = document.querySelector('[data-kt-subscription-table-select="selected_count"]'); + const deleteSelected = document.querySelector('[data-kt-subscription-table-select="delete_selected"]'); + + // Toggle delete selected toolbar + checkboxes.forEach(c => { + // Checkbox on click event + c.addEventListener('click', function () { + setTimeout(function () { + toggleToolbars(); + }, 50); + }); + }); + + // Deleted selected rows + deleteSelected.addEventListener('click', function () { + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete selected customers?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted all selected customers!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove all selected customers + checkboxes.forEach(c => { + if (c.checked) { + datatable.row($(c.closest('tbody tr'))).remove().draw(); + } + }); + + // Remove header checked box + const headerCheckbox = table.querySelectorAll('[type="checkbox"]')[0]; + headerCheckbox.checked = false; + }).then(function () { + toggleToolbars(); // Detect checked checkboxes + initToggleToolbar(); // Re-init toolbar to recalculate checkboxes + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Selected customers was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }); + } + + // Toggle toolbars + const toggleToolbars = () => { + // Select refreshed checkbox DOM elements + const allCheckboxes = table.querySelectorAll('tbody [type="checkbox"]'); + + // Detect checkboxes state & count + let checkedState = false; + let count = 0; + + // Count checked boxes + allCheckboxes.forEach(c => { + if (c.checked) { + checkedState = true; + count++; + } + }); + + // Toggle toolbars + if (checkedState) { + selectedCount.innerHTML = count; + toolbarBase.classList.add('d-none'); + toolbarSelected.classList.remove('d-none'); + } else { + toolbarBase.classList.remove('d-none'); + toolbarSelected.classList.add('d-none'); + } + } + + return { + // Public functions + init: function () { + table = document.getElementById('kt_subscriptions_table'); + + if (!table) { + return; + } + + initDatatable(); + initToggleToolbar(); + handleSearch(); + handleRowDeletion(); + handleFilter(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTSubscriptionsList.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/support-center/general.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/support-center/general.js new file mode 100644 index 0000000..437d2ac --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/support-center/general.js @@ -0,0 +1,74 @@ +"use strict"; + +var KTSupportCenterGeneral = function() { + var menuWrapper; + + var initInstance = function(element) { + var elements = element; + + if ( typeof elements === 'undefined' ) { + elements = document.querySelectorAll('.highlight'); + } + + if ( elements && elements.length > 0 ) { + for ( var i = 0; i < elements.length; ++i ) { + var highlight = elements[i]; + var copy = highlight.querySelector('.highlight-copy'); + + if ( copy ) { + var clipboard = new ClipboardJS(copy, { + target: function(trigger) { + var highlight = trigger.closest('.highlight'); + var el = highlight.querySelector('.tab-pane.active'); + + if ( el == null ) { + el = highlight.querySelector('.highlight-code'); + } + + return el; + } + }); + + clipboard.on('success', function(e) { + var caption = e.trigger.innerHTML; + + e.trigger.innerHTML = 'copied'; + e.clearSelection(); + + setTimeout(function() { + e.trigger.innerHTML = caption; + }, 2000); + }); + } + } + } + } + + var handleMenuScroll = function() { + var menuActiveItem = menuWrapper.querySelector(".menu-link.active"); + + if ( !menuActiveItem ) { + return; + } + + if ( KTUtil.isVisibleInContainer(menuActiveItem, menuWrapper) === true) { + return; + } + + menuWrapper.scroll({ + top: KTUtil.getRelativeTopPosition(menuActiveItem, menuWrapper), + behavior: 'smooth' + }); + } + + return { + init: function() { + initInstance(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTSupportCenterGeneral.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/support-center/tickets/create.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/support-center/tickets/create.js new file mode 100644 index 0000000..a11a649 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/support-center/tickets/create.js @@ -0,0 +1,219 @@ +"use strict"; + +// Class definition +var KTModalNewTicket = function () { + var submitButton; + var cancelButton; + var validator; + var form; + var modal; + var modalEl; + + // Init form inputs + var initForm = function() { + // Ticket attachments + // For more info about Dropzone plugin visit: https://www.dropzonejs.com/#usage + var myDropzone = new Dropzone("#kt_modal_create_ticket_attachments", { + url: "https://keenthemes.com/scripts/void.php", // Set the url for your upload script location + paramName: "file", // The name that will be used to transfer the file + maxFiles: 10, + maxFilesize: 10, // MB + addRemoveLinks: true, + accept: function(file, done) { + if (file.name == "justinbieber.jpg") { + done("Naha, you don't."); + } else { + done(); + } + } + }); + + // Due date. For more info, please visit the official plugin site: https://flatpickr.js.org/ + var dueDate = $(form.querySelector('[name="due_date"]')); + dueDate.flatpickr({ + enableTime: true, + dateFormat: "d, M Y, H:i", + }); + + // Ticket user. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="user"]')).on('change', function() { + // Revalidate the field when an option is chosen + validator.revalidateField('user'); + }); + + // Ticket status. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="status"]')).on('change', function() { + // Revalidate the field when an option is chosen + validator.revalidateField('status'); + }); + } + + // Handle form validation and submittion + var handleForm = function() { + // Stepper custom navigation + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + subject: { + validators: { + notEmpty: { + message: 'Ticket subject is required' + } + } + }, + user: { + validators: { + notEmpty: { + message: 'Ticket user is required' + } + } + }, + due_date: { + validators: { + notEmpty: { + message: 'Ticket due date is required' + } + } + }, + description: { + validators: { + notEmpty: { + message: 'Target description is required' + } + } + }, + 'notifications[]': { + validators: { + notEmpty: { + message: 'Please select at least one notifications method' + } + } + }, + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Action buttons + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + setTimeout(function() { + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show success message. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show error message. + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + return { + // Public functions + init: function () { + // Elements + modalEl = document.querySelector('#kt_modal_new_ticket'); + + if (!modalEl) { + return; + } + + modal = new bootstrap.Modal(modalEl); + + form = document.querySelector('#kt_modal_new_ticket_form'); + submitButton = document.getElementById('kt_modal_new_ticket_submit'); + cancelButton = document.getElementById('kt_modal_new_ticket_cancel'); + + initForm(); + handleForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalNewTicket.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/permissions/add-permission.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/permissions/add-permission.js new file mode 100644 index 0000000..f9a1368 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/permissions/add-permission.js @@ -0,0 +1,166 @@ +"use strict"; + +// Class definition +var KTUsersAddPermission = function () { + // Shared variables + const element = document.getElementById('kt_modal_add_permission'); + const form = element.querySelector('#kt_modal_add_permission_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initAddPermission = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'permission_name': { + validators: { + notEmpty: { + message: 'Permission name is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-permissions-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to close?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, close it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + modal.hide(); // Hide modal + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-permissions-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-permissions-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + return { + // Public functions + init: function () { + initAddPermission(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersAddPermission.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/permissions/list.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/permissions/list.js new file mode 100644 index 0000000..02b3fef --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/permissions/list.js @@ -0,0 +1,117 @@ +"use strict"; + +// Class definition +var KTUsersPermissionsList = function () { + // Shared variables + var datatable; + var table; + + // Init add schedule modal + var initPermissionsList = () => { + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[2].innerHTML, "DD MMM YYYY, LT").format(); // select date from 2nd column in table + dateRow[2].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + 'columnDefs': [ + { orderable: false, targets: 1 }, // Disable ordering on column 1 (assigned) + { orderable: false, targets: 3 }, // Disable ordering on column 3 (actions) + ] + }); + } + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearchDatatable = () => { + const filterSearch = document.querySelector('[data-kt-permissions-table-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Delete user + var handleDeleteRows = () => { + // Select all delete buttons + const deleteButtons = table.querySelectorAll('[data-kt-permissions-table-filter="delete_row"]'); + + deleteButtons.forEach(d => { + // Delete button on click + d.addEventListener('click', function (e) { + e.preventDefault(); + + // Select parent row + const parent = e.target.closest('tr'); + + // Get permission name + const permissionName = parent.querySelectorAll('td')[0].innerText; + + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete " + permissionName + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted " + permissionName + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove current row + datatable.row($(parent)).remove().draw(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: customerName + " was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }) + }); + } + + + return { + // Public functions + init: function () { + table = document.querySelector('#kt_permissions_table'); + + if (!table) { + return; + } + + initPermissionsList(); + handleSearchDatatable(); + handleDeleteRows(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersPermissionsList.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/permissions/update-permission.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/permissions/update-permission.js new file mode 100644 index 0000000..c589428 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/permissions/update-permission.js @@ -0,0 +1,166 @@ +"use strict"; + +// Class definition +var KTUsersUpdatePermission = function () { + // Shared variables + const element = document.getElementById('kt_modal_update_permission'); + const form = element.querySelector('#kt_modal_update_permission_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initUpdatePermission = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'permission_name': { + validators: { + notEmpty: { + message: 'Permission name is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-permissions-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to close?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, close it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + modal.hide(); // Hide modal + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-permissions-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-permissions-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + return { + // Public functions + init: function () { + initUpdatePermission(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersUpdatePermission.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/roles/list/add.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/roles/list/add.js new file mode 100644 index 0000000..7b86b8f --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/roles/list/add.js @@ -0,0 +1,185 @@ +"use strict"; + +// Class definition +var KTUsersAddRole = function () { + // Shared variables + const element = document.getElementById('kt_modal_add_role'); + const form = element.querySelector('#kt_modal_add_role_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initAddRole = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'role_name': { + validators: { + notEmpty: { + message: 'Role name is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-roles-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to close?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, close it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + modal.hide(); // Hide modal + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-roles-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-roles-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + + } + + // Select all handler + const handleSelectAll = () =>{ + // Define variables + const selectAll = form.querySelector('#kt_roles_select_all'); + const allCheckboxes = form.querySelectorAll('[type="checkbox"]'); + + // Handle check state + selectAll.addEventListener('change', e => { + + // Apply check state to all checkboxes + allCheckboxes.forEach(c => { + c.checked = e.target.checked; + }); + }); + } + + return { + // Public functions + init: function () { + initAddRole(); + handleSelectAll(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersAddRole.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/roles/list/update-role.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/roles/list/update-role.js new file mode 100644 index 0000000..6b00118 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/roles/list/update-role.js @@ -0,0 +1,183 @@ +"use strict"; + +// Class definition +var KTUsersUpdatePermissions = function () { + // Shared variables + const element = document.getElementById('kt_modal_update_role'); + const form = element.querySelector('#kt_modal_update_role_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initUpdatePermissions = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'role_name': { + validators: { + notEmpty: { + message: 'Role name is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-roles-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to close?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, close it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + modal.hide(); // Hide modal + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-roles-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-roles-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + // Select all handler + const handleSelectAll = () => { + // Define variables + const selectAll = form.querySelector('#kt_roles_select_all'); + const allCheckboxes = form.querySelectorAll('[type="checkbox"]'); + + // Handle check state + selectAll.addEventListener('change', e => { + + // Apply check state to all checkboxes + allCheckboxes.forEach(c => { + c.checked = e.target.checked; + }); + }); + } + + return { + // Public functions + init: function () { + initUpdatePermissions(); + handleSelectAll(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersUpdatePermissions.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/roles/view/update-role.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/roles/view/update-role.js new file mode 100644 index 0000000..6b00118 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/roles/view/update-role.js @@ -0,0 +1,183 @@ +"use strict"; + +// Class definition +var KTUsersUpdatePermissions = function () { + // Shared variables + const element = document.getElementById('kt_modal_update_role'); + const form = element.querySelector('#kt_modal_update_role_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initUpdatePermissions = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'role_name': { + validators: { + notEmpty: { + message: 'Role name is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-roles-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to close?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, close it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + modal.hide(); // Hide modal + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-roles-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-roles-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + // Select all handler + const handleSelectAll = () => { + // Define variables + const selectAll = form.querySelector('#kt_roles_select_all'); + const allCheckboxes = form.querySelectorAll('[type="checkbox"]'); + + // Handle check state + selectAll.addEventListener('change', e => { + + // Apply check state to all checkboxes + allCheckboxes.forEach(c => { + c.checked = e.target.checked; + }); + }); + } + + return { + // Public functions + init: function () { + initUpdatePermissions(); + handleSelectAll(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersUpdatePermissions.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/roles/view/view.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/roles/view/view.js new file mode 100644 index 0000000..732b982 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/roles/view/view.js @@ -0,0 +1,225 @@ +"use strict"; + +// Class definition +var KTUsersViewRole = function () { + // Shared variables + var datatable; + var table; + + // Init add schedule modal + var initViewRole = () => { + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[3].innerHTML, "DD MMM YYYY, LT").format(); // select date from 5th column in table + dateRow[3].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + "pageLength": 5, + "lengthChange": false, + 'columnDefs': [ + { orderable: false, targets: 0 }, // Disable ordering on column 0 (checkbox) + { orderable: false, targets: 4 }, // Disable ordering on column 4 (actions) + ] + }); + } + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearchDatatable = () => { + const filterSearch = document.querySelector('[data-kt-roles-table-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Delete user + var handleDeleteRows = () => { + // Select all delete buttons + const deleteButtons = table.querySelectorAll('[data-kt-roles-table-filter="delete_row"]'); + + deleteButtons.forEach(d => { + // Delete button on click + d.addEventListener('click', function (e) { + e.preventDefault(); + + // Select parent row + const parent = e.target.closest('tr'); + + // Get customer name + const userName = parent.querySelectorAll('td')[1].innerText; + + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete " + userName + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted " + userName + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove current row + datatable.row($(parent)).remove().draw(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: customerName + " was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }) + }); + } + + // Init toggle toolbar + var initToggleToolbar = () => { + // Toggle selected action toolbar + // Select all checkboxes + const checkboxes = table.querySelectorAll('[type="checkbox"]'); + + // Select elements + const deleteSelected = document.querySelector('[data-kt-view-roles-table-select="delete_selected"]'); + + // Toggle delete selected toolbar + checkboxes.forEach(c => { + // Checkbox on click event + c.addEventListener('click', function () { + setTimeout(function () { + toggleToolbars(); + }, 50); + }); + }); + + // Deleted selected rows + deleteSelected.addEventListener('click', function () { + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete selected customers?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted all selected customers!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove all selected customers + checkboxes.forEach(c => { + if (c.checked) { + datatable.row($(c.closest('tbody tr'))).remove().draw(); + } + }); + + // Remove header checked box + const headerCheckbox = table.querySelectorAll('[type="checkbox"]')[0]; + headerCheckbox.checked = false; + }).then(function(){ + toggleToolbars(); // Detect checked checkboxes + initToggleToolbar(); // Re-init toolbar to recalculate checkboxes + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Selected customers was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }); + } + + // Toggle toolbars + const toggleToolbars = () => { + // Define variables + const toolbarBase = document.querySelector('[data-kt-view-roles-table-toolbar="base"]'); + const toolbarSelected = document.querySelector('[data-kt-view-roles-table-toolbar="selected"]'); + const selectedCount = document.querySelector('[data-kt-view-roles-table-select="selected_count"]'); + + // Select refreshed checkbox DOM elements + const allCheckboxes = table.querySelectorAll('tbody [type="checkbox"]'); + + // Detect checkboxes state & count + let checkedState = false; + let count = 0; + + // Count checked boxes + allCheckboxes.forEach(c => { + if (c.checked) { + checkedState = true; + count++; + } + }); + + // Toggle toolbars + if (checkedState) { + selectedCount.innerHTML = count; + toolbarBase.classList.add('d-none'); + toolbarSelected.classList.remove('d-none'); + } else { + toolbarBase.classList.remove('d-none'); + toolbarSelected.classList.add('d-none'); + } + } + + return { + // Public functions + init: function () { + table = document.querySelector('#kt_roles_view_table'); + + if (!table) { + return; + } + + initViewRole(); + handleSearchDatatable(); + handleDeleteRows(); + initToggleToolbar(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersViewRole.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/list/add.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/list/add.js new file mode 100644 index 0000000..1b75a8c --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/list/add.js @@ -0,0 +1,183 @@ +"use strict"; + +// Class definition +var KTUsersAddUser = function () { + // Shared variables + const element = document.getElementById('kt_modal_add_user'); + const form = element.querySelector('#kt_modal_add_user_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initAddUser = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'user_name': { + validators: { + notEmpty: { + message: 'Full name is required' + } + } + }, + 'user_email': { + validators: { + notEmpty: { + message: 'Valid email address is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', e => { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + return { + // Public functions + init: function () { + initAddUser(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersAddUser.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/list/export-users.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/list/export-users.js new file mode 100644 index 0000000..0de7636 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/list/export-users.js @@ -0,0 +1,170 @@ +"use strict"; + +// Class definition +var KTModalExportUsers = function () { + // Shared variables + const element = document.getElementById('kt_modal_export_users'); + const form = element.querySelector('#kt_modal_export_users_form'); + const modal = new bootstrap.Modal(element); + + // Init form inputs + var initForm = function () { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'format': { + validators: { + notEmpty: { + message: 'File format is required' + } + } + }, + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable submit button whilst loading + submitButton.disabled = true; + + setTimeout(function () { + submitButton.removeAttribute('data-kt-indicator'); + + Swal.fire({ + text: "User list has been successfully exported!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + + // Enable submit button after loading + submitButton.disabled = false; + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + return { + // Public functions + init: function () { + initForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalExportUsers.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/list/table.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/list/table.js new file mode 100644 index 0000000..87e9ce3 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/list/table.js @@ -0,0 +1,315 @@ +"use strict"; + +var KTUsersList = function () { + // Define shared variables + var table = document.getElementById('kt_table_users'); + var datatable; + var toolbarBase; + var toolbarSelected; + var selectedCount; + + // Private functions + var initUserTable = function () { + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const lastLogin = dateRow[3].innerText.toLowerCase(); // Get last login time + let timeCount = 0; + let timeFormat = 'minutes'; + + // Determine date & time format -- add more formats when necessary + if (lastLogin.includes('yesterday')) { + timeCount = 1; + timeFormat = 'days'; + } else if (lastLogin.includes('mins')) { + timeCount = parseInt(lastLogin.replace(/\D/g, '')); + timeFormat = 'minutes'; + } else if (lastLogin.includes('hours')) { + timeCount = parseInt(lastLogin.replace(/\D/g, '')); + timeFormat = 'hours'; + } else if (lastLogin.includes('days')) { + timeCount = parseInt(lastLogin.replace(/\D/g, '')); + timeFormat = 'days'; + } else if (lastLogin.includes('weeks')) { + timeCount = parseInt(lastLogin.replace(/\D/g, '')); + timeFormat = 'weeks'; + } + + // Subtract date/time from today -- more info on moment datetime subtraction: https://momentjs.com/docs/#/durations/subtract/ + const realDate = moment().subtract(timeCount, timeFormat).format(); + + // Insert real date to last login attribute + dateRow[3].setAttribute('data-order', realDate); + + // Set real date for joined column + const joinedDate = moment(dateRow[5].innerHTML, "DD MMM YYYY, LT").format(); // select date from 5th column in table + dateRow[5].setAttribute('data-order', joinedDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + "pageLength": 10, + "lengthChange": false, + 'columnDefs': [ + { orderable: false, targets: 0 }, // Disable ordering on column 0 (checkbox) + { orderable: false, targets: 6 }, // Disable ordering on column 6 (actions) + ] + }); + + // Re-init functions on every table re-draw -- more info: https://datatables.net/reference/event/draw + datatable.on('draw', function () { + initToggleToolbar(); + handleDeleteRows(); + toggleToolbars(); + }); + } + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearchDatatable = () => { + const filterSearch = document.querySelector('[data-kt-user-table-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Filter Datatable + var handleFilterDatatable = () => { + // Select filter options + const filterForm = document.querySelector('[data-kt-user-table-filter="form"]'); + const filterButton = filterForm.querySelector('[data-kt-user-table-filter="filter"]'); + const selectOptions = filterForm.querySelectorAll('select'); + + // Filter datatable on submit + filterButton.addEventListener('click', function () { + var filterString = ''; + + // Get filter values + selectOptions.forEach((item, index) => { + if (item.value && item.value !== '') { + if (index !== 0) { + filterString += ' '; + } + + // Build filter value options + filterString += item.value; + } + }); + + // Filter datatable --- official docs reference: https://datatables.net/reference/api/search() + datatable.search(filterString).draw(); + }); + } + + // Reset Filter + var handleResetForm = () => { + // Select reset button + const resetButton = document.querySelector('[data-kt-user-table-filter="reset"]'); + + // Reset datatable + resetButton.addEventListener('click', function () { + // Select filter options + const filterForm = document.querySelector('[data-kt-user-table-filter="form"]'); + const selectOptions = filterForm.querySelectorAll('select'); + + // Reset select2 values -- more info: https://select2.org/programmatic-control/add-select-clear-items + selectOptions.forEach(select => { + $(select).val('').trigger('change'); + }); + + // Reset datatable --- official docs reference: https://datatables.net/reference/api/search() + datatable.search('').draw(); + }); + } + + + // Delete subscirption + var handleDeleteRows = () => { + // Select all delete buttons + const deleteButtons = table.querySelectorAll('[data-kt-users-table-filter="delete_row"]'); + + deleteButtons.forEach(d => { + // Delete button on click + d.addEventListener('click', function (e) { + e.preventDefault(); + + // Select parent row + const parent = e.target.closest('tr'); + + // Get user name + const userName = parent.querySelectorAll('td')[1].querySelectorAll('a')[1].innerText; + + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete " + userName + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted " + userName + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove current row + datatable.row($(parent)).remove().draw(); + }).then(function () { + // Detect checked checkboxes + toggleToolbars(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: customerName + " was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }) + }); + } + + // Init toggle toolbar + var initToggleToolbar = () => { + // Toggle selected action toolbar + // Select all checkboxes + const checkboxes = table.querySelectorAll('[type="checkbox"]'); + + // Select elements + toolbarBase = document.querySelector('[data-kt-user-table-toolbar="base"]'); + toolbarSelected = document.querySelector('[data-kt-user-table-toolbar="selected"]'); + selectedCount = document.querySelector('[data-kt-user-table-select="selected_count"]'); + const deleteSelected = document.querySelector('[data-kt-user-table-select="delete_selected"]'); + + // Toggle delete selected toolbar + checkboxes.forEach(c => { + // Checkbox on click event + c.addEventListener('click', function () { + setTimeout(function () { + toggleToolbars(); + }, 50); + }); + }); + + // Deleted selected rows + deleteSelected.addEventListener('click', function () { + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete selected customers?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted all selected customers!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove all selected customers + checkboxes.forEach(c => { + if (c.checked) { + datatable.row($(c.closest('tbody tr'))).remove().draw(); + } + }); + + // Remove header checked box + const headerCheckbox = table.querySelectorAll('[type="checkbox"]')[0]; + headerCheckbox.checked = false; + }).then(function () { + toggleToolbars(); // Detect checked checkboxes + initToggleToolbar(); // Re-init toolbar to recalculate checkboxes + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Selected customers was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }); + } + + // Toggle toolbars + const toggleToolbars = () => { + // Select refreshed checkbox DOM elements + const allCheckboxes = table.querySelectorAll('tbody [type="checkbox"]'); + + // Detect checkboxes state & count + let checkedState = false; + let count = 0; + + // Count checked boxes + allCheckboxes.forEach(c => { + if (c.checked) { + checkedState = true; + count++; + } + }); + + // Toggle toolbars + if (checkedState) { + selectedCount.innerHTML = count; + toolbarBase.classList.add('d-none'); + toolbarSelected.classList.remove('d-none'); + } else { + toolbarBase.classList.remove('d-none'); + toolbarSelected.classList.add('d-none'); + } + } + + return { + // Public functions + init: function () { + if (!table) { + return; + } + + initUserTable(); + initToggleToolbar(); + handleSearchDatatable(); + handleResetForm(); + handleDeleteRows(); + handleFilterDatatable(); + + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersList.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/add-auth-app.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/add-auth-app.js new file mode 100644 index 0000000..ca71185 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/add-auth-app.js @@ -0,0 +1,81 @@ +"use strict"; + +// Class definition +var KTUsersAddAuthApp = function () { + // Shared variables + const element = document.getElementById('kt_modal_add_auth_app'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initAddAuthApp = () => { + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to close?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, close it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + modal.hide(); // Hide modal + } + }); + }); + + } + + // QR code to text code swapper + var initCodeSwap = () => { + const qrCode = element.querySelector('[ data-kt-add-auth-action="qr-code"]'); + const textCode = element.querySelector('[ data-kt-add-auth-action="text-code"]'); + const qrCodeButton = element.querySelector('[ data-kt-add-auth-action="qr-code-button"]'); + const textCodeButton = element.querySelector('[ data-kt-add-auth-action="text-code-button"]'); + const qrCodeLabel = element.querySelector('[ data-kt-add-auth-action="qr-code-label"]'); + const textCodeLabel = element.querySelector('[ data-kt-add-auth-action="text-code-label"]'); + + const toggleClass = () =>{ + qrCode.classList.toggle('d-none'); + qrCodeButton.classList.toggle('d-none'); + qrCodeLabel.classList.toggle('d-none'); + textCode.classList.toggle('d-none'); + textCodeButton.classList.toggle('d-none'); + textCodeLabel.classList.toggle('d-none'); + } + + // Swap to text code handler + textCodeButton.addEventListener('click', e =>{ + e.preventDefault(); + + toggleClass(); + }); + + qrCodeButton.addEventListener('click', e =>{ + e.preventDefault(); + + toggleClass(); + }); + } + + return { + // Public functions + init: function () { + initAddAuthApp(); + initCodeSwap(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersAddAuthApp.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/add-one-time-password.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/add-one-time-password.js new file mode 100644 index 0000000..af78deb --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/add-one-time-password.js @@ -0,0 +1,173 @@ +"use strict"; + +// Class definition +var KTUsersAddOneTimePassword = function () { + // Shared variables + const element = document.getElementById('kt_modal_add_one_time_password'); + const form = element.querySelector('#kt_modal_add_one_time_password_form'); + const modal = new bootstrap.Modal(element); + + // Init one time password modal + var initAddOneTimePassword = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'otp_mobile_number': { + validators: { + notEmpty: { + message: 'Valid mobile number is required' + } + } + }, + 'otp_confirm_password': { + validators: { + notEmpty: { + message: 'Password confirmation is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to close?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, close it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + modal.hide(); // Hide modal + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + return { + // Public functions + init: function () { + initAddOneTimePassword(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersAddOneTimePassword.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/add-schedule.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/add-schedule.js new file mode 100644 index 0000000..7e91b55 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/add-schedule.js @@ -0,0 +1,223 @@ +"use strict"; + +// Class definition +var KTUsersAddSchedule = function () { + // Shared variables + const element = document.getElementById('kt_modal_add_schedule'); + const form = element.querySelector('#kt_modal_add_schedule_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initAddSchedule = () => { + + // Init flatpickr -- for more info: https://flatpickr.js.org/ + $("#kt_modal_add_schedule_datepicker").flatpickr({ + enableTime: true, + dateFormat: "Y-m-d H:i", + }); + + // Init tagify -- for more info: https://yaireo.github.io/tagify/ + const tagifyInput = form.querySelector('#kt_modal_add_schedule_tagify'); + new Tagify(tagifyInput, { + whitelist: ["sean@dellito.com", "brian@exchange.com", "mikaela@pexcom.com", "f.mitcham@kpmg.com.au", "olivia@corpmail.com", "owen.neil@gmail.com", "dam@consilting.com", "emma@intenso.com", "ana.cf@limtel.com", "robert@benko.com", "lucy.m@fentech.com", "ethan@loop.com.au"], + maxTags: 10, + dropdown: { + maxItems: 20, // <- mixumum allowed rendered suggestions + classname: "tagify__inline__suggestions", // <- custom classname for this dropdown, so it could be targeted + enabled: 0, // <- show suggestions on focus + closeOnSelect: false // <- do not hide the suggestions dropdown once an item has been selected + } + }); + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'event_datetime': { + validators: { + notEmpty: { + message: 'Event date & time is required' + } + } + }, + 'event_name': { + validators: { + notEmpty: { + message: 'Event name is required' + } + } + }, + 'event_org': { + validators: { + notEmpty: { + message: 'Event organiser is required' + } + } + }, + 'event_invitees': { + validators: { + notEmpty: { + message: 'Event invitees is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Revalidate country field. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="event_invitees"]')).on('change', function () { + // Revalidate the field when an option is chosen + validator.revalidateField('event_invitees'); + }); + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function() { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + return { + // Public functions + init: function () { + initAddSchedule(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersAddSchedule.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/add-task.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/add-task.js new file mode 100644 index 0000000..2986672 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/add-task.js @@ -0,0 +1,324 @@ +"use strict"; + +// Class definition +var KTUsersAddTask = function () { + // Shared variables + const element = document.getElementById('kt_modal_add_task'); + const form = element.querySelector('#kt_modal_add_task_form'); + const modal = new bootstrap.Modal(element); + + // Init add task modal + var initAddTask = () => { + + // Init flatpickr -- for more info: https://flatpickr.js.org/ + $("#kt_modal_add_task_datepicker").flatpickr({ + dateFormat: "Y-m-d", + }); + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'task_duedate': { + validators: { + notEmpty: { + message: 'Task due date is required' + } + } + }, + 'task_name': { + validators: { + notEmpty: { + message: 'Task name is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + // Init update task status + var initUpdateTaskStatus = () => { + const allTaskMenus = document.querySelectorAll('[data-kt-menu-id="kt-users-tasks"]'); + + allTaskMenus.forEach(el => { + const resetButton = el.querySelector('[data-kt-users-update-task-status="reset"]'); + const submitButton = el.querySelector('[data-kt-users-update-task-status="submit"]'); + const taskForm = el.querySelector('[data-kt-menu-id="kt-users-tasks-form"]'); + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + taskForm, + { + fields: { + 'task_status': { + validators: { + notEmpty: { + message: 'Task due date is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Revalidate country field. For more info, plase visit the official plugin site: https://select2.org/ + $(taskForm.querySelector('[name="task_status"]')).on('change', function () { + // Revalidate the field when an option is chosen + validator.revalidateField('task_status'); + }); + + // Reset action handler + resetButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to reset?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, reset it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + taskForm.reset(); // Reset form + el.hide(); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form was not reset!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit action handler + submitButton.addEventListener('click', e => { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + el.hide(); + } + }); + + //taskForm.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function(){ + //el.show(); + }); + } + }); + } + }); + }); + } + + return { + // Public functions + init: function () { + initAddTask(); + initUpdateTaskStatus(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersAddTask.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/update-details.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/update-details.js new file mode 100644 index 0000000..17c2c66 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/update-details.js @@ -0,0 +1,132 @@ +"use strict"; + +// Class definition +var KTUsersUpdateDetails = function () { + // Shared variables + const element = document.getElementById('kt_modal_update_details'); + const form = element.querySelector('#kt_modal_update_user_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initUpdateDetails = () => { + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + }); + } + + return { + // Public functions + init: function () { + initUpdateDetails(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersUpdateDetails.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/update-email.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/update-email.js new file mode 100644 index 0000000..cd8773c --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/update-email.js @@ -0,0 +1,166 @@ +"use strict"; + +// Class definition +var KTUsersUpdateEmail = function () { + // Shared variables + const element = document.getElementById('kt_modal_update_email'); + const form = element.querySelector('#kt_modal_update_email_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initUpdateEmail = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'profile_email': { + validators: { + notEmpty: { + message: 'Email address is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } + }); + } + }); + } + + return { + // Public functions + init: function () { + initUpdateEmail(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersUpdateEmail.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/update-password.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/update-password.js new file mode 100644 index 0000000..9110a89 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/update-password.js @@ -0,0 +1,194 @@ +"use strict"; + +// Class definition +var KTUsersUpdatePassword = function () { + // Shared variables + const element = document.getElementById('kt_modal_update_password'); + const form = element.querySelector('#kt_modal_update_password_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initUpdatePassword = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'current_password': { + validators: { + notEmpty: { + message: 'Current password is required' + } + } + }, + 'new_password': { + validators: { + notEmpty: { + message: 'The password is required' + }, + callback: { + message: 'Please enter valid password', + callback: function (input) { + if (input.value.length > 0) { + return validatePassword(); + } + } + } + } + }, + 'confirm_password': { + validators: { + notEmpty: { + message: 'The password confirmation is required' + }, + identical: { + compare: function () { + return form.querySelector('[name="new_password"]').value; + }, + message: 'The password and its confirm are not the same' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } + }); + } + }); + } + + return { + // Public functions + init: function () { + initUpdatePassword(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersUpdatePassword.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/update-role.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/update-role.js new file mode 100644 index 0000000..a7e7589 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/update-role.js @@ -0,0 +1,132 @@ +"use strict"; + +// Class definition +var KTUsersUpdateRole = function () { + // Shared variables + const element = document.getElementById('kt_modal_update_role'); + const form = element.querySelector('#kt_modal_update_role_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initUpdateRole = () => { + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + }); + } + + return { + // Public functions + init: function () { + initUpdateRole(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersUpdateRole.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/view.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/view.js new file mode 100644 index 0000000..7a50ff2 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/apps/user-management/users/view/view.js @@ -0,0 +1,234 @@ +"use strict"; + +// Class definition +var KTUsersViewMain = function () { + + // Init login session button + var initLoginSession = () => { + const button = document.getElementById('kt_modal_sign_out_sesions'); + + button.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like sign out all sessions?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, sign out!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have signed out all sessions!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your sessions are still preserved!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + + // Init sign out single user + var initSignOutUser = () => { + const signOutButtons = document.querySelectorAll('[data-kt-users-sign-out="single_user"]'); + + signOutButtons.forEach(button => { + button.addEventListener('click', e => { + e.preventDefault(); + + const deviceName = button.closest('tr').querySelectorAll('td')[1].innerText; + + Swal.fire({ + text: "Are you sure you would like sign out " + deviceName + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, sign out!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have signed out " + deviceName + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }).then(function(){ + button.closest('tr').remove(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: deviceName + "'s session is still preserved!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + }); + + + } + + // Delete two step authentication handler + const initDeleteTwoStep = () => { + const deleteButton = document.getElementById('kt_users_delete_two_step'); + + deleteButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like remove this two-step authentication?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, remove it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have removed this two-step authentication!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your two-step authentication is still valid!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }) + } + + // Email preference form handler + const initEmailPreferenceForm = () => { + // Define variables + const form = document.getElementById('kt_users_email_notification_form'); + const submitButton = form.querySelector('#kt_users_email_notification_submit'); + const cancelButton = form.querySelector('#kt_users_email_notification_cancel'); + + // Submit action handler + submitButton.addEventListener('click', e => { + e.preventDefault(); + + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + + //form.submit(); // Submit form + }, 2000); + }); + + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + + return { + // Public functions + init: function () { + initLoginSession(); + initSignOutUser(); + initDeleteTwoStep(); + initEmailPreferenceForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersViewMain.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/reset-password/new-password.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/reset-password/new-password.js new file mode 100644 index 0000000..d68ab4d --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/reset-password/new-password.js @@ -0,0 +1,154 @@ +"use strict"; + +// Class Definition +var KTAuthNewPassword = function() { + // Elements + var form; + var submitButton; + var validator; + var passwordMeter; + + var handleForm = function(e) { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'password': { + validators: { + notEmpty: { + message: 'The password is required' + }, + callback: { + message: 'Please enter valid password', + callback: function(input) { + if (input.value.length > 0) { + return validatePassword(); + } + } + } + } + }, + 'confirm-password': { + validators: { + notEmpty: { + message: 'The password confirmation is required' + }, + identical: { + compare: function() { + return form.querySelector('[name="password"]').value; + }, + message: 'The password and its confirm are not the same' + } + } + }, + 'toc': { + validators: { + notEmpty: { + message: 'You must accept the terms and conditions' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger({ + event: { + password: false + } + }), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', // comment to enable invalid state icons + eleValidClass: '' // comment to enable valid state icons + }) + } + } + ); + + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + validator.revalidateField('password'); + + validator.validate().then(function(status) { + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate ajax request + setTimeout(function() { + // Hide loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show message popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "You have successfully reset your password!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + form.querySelector('[name="password"]').value= ""; + form.querySelector('[name="confirm-password"]').value= ""; + passwordMeter.reset(); // reset password meter + //form.submit(); + + var redirectUrl = form.getAttribute('data-kt-redirect-url'); + if (redirectUrl) { + location.href = redirectUrl; + } + } + }); + }, 1500); + } else { + // Show error popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + }); + + form.querySelector('input[name="password"]').addEventListener('input', function() { + if (this.value.length > 0) { + validator.updateFieldStatus('password', 'NotValidated'); + } + }); + } + + var validatePassword = function() { + return (passwordMeter.getScore() === 100); + } + + // Public Functions + return { + // public functions + init: function() { + form = document.querySelector('#kt_new_password_form'); + submitButton = document.querySelector('#kt_new_password_submit'); + passwordMeter = KTPasswordMeter.getInstance(form.querySelector('[data-kt-password-meter="true"]')); + + handleForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTAuthNewPassword.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/reset-password/reset-password.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/reset-password/reset-password.js new file mode 100644 index 0000000..017c704 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/reset-password/reset-password.js @@ -0,0 +1,111 @@ +"use strict"; + +// Class Definition +var KTAuthResetPassword = function() { + // Elements + var form; + var submitButton; + var validator; + + var handleForm = function(e) { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'email': { + validators: { + regexp: { + regexp: /^[^\s@]+@[^\s@]+\.[^\s@]+$/, + message: 'The value is not a valid email address', + }, + notEmpty: { + message: 'Email address is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', // comment to enable invalid state icons + eleValidClass: '' // comment to enable valid state icons + }) + } + } + ); + + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form + validator.validate().then(function (status) { + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate ajax request + setTimeout(function() { + // Hide loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show message popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "We have send a password reset link to your email.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + form.querySelector('[name="email"]').value= ""; + //form.submit(); + + var redirectUrl = form.getAttribute('data-kt-redirect-url'); + if (redirectUrl) { + location.href = redirectUrl; + } + } + }); + }, 1500); + } else { + // Show error popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + }); + } + + // Public Functions + return { + // public functions + init: function() { + form = document.querySelector('#kt_password_reset_form'); + submitButton = document.querySelector('#kt_password_reset_submit'); + + handleForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTAuthResetPassword.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/sign-in/general.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/sign-in/general.js new file mode 100644 index 0000000..2452da8 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/sign-in/general.js @@ -0,0 +1,195 @@ +"use strict"; + +// Class definition +var KTSigninGeneral = function() { + // Elements + var form; + var submitButton; + var validator; + + // Handle form + var handleValidation = function(e) { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'email': { + validators: { + regexp: { + regexp: /^[^\s@]+@[^\s@]+\.[^\s@]+$/, + message: 'The value is not a valid email address', + }, + notEmpty: { + message: 'Email address is required' + } + } + }, + 'password': { + validators: { + notEmpty: { + message: 'The password is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', // comment to enable invalid state icons + eleValidClass: '' // comment to enable valid state icons + }) + } + } + ); + } + + var handleSubmitDemo = function(e) { + // Handle form submit + submitButton.addEventListener('click', function (e) { + // Prevent button default action + e.preventDefault(); + + // Validate form + validator.validate().then(function (status) { + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + + // Simulate ajax request + setTimeout(function() { + // Hide loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show message popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "You have successfully logged in!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + form.querySelector('[name="email"]').value= ""; + form.querySelector('[name="password"]').value= ""; + + //form.submit(); // submit form + var redirectUrl = form.getAttribute('data-kt-redirect-url'); + if (redirectUrl) { + location.href = redirectUrl; + } + } + }); + }, 2000); + } else { + // Show error popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + }); + } + + var handleSubmitAjax = function(e) { + // Handle form submit + submitButton.addEventListener('click', function (e) { + // Prevent button default action + e.preventDefault(); + + // Validate form + validator.validate().then(function (status) { + if (status == 'Valid') { + // Hide loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Check axios library docs: https://axios-http.com/docs/intro + axios.post('/your/ajax/login/url', { + email: form.querySelector('[name="email"]').value, + password: form.querySelector('[name="password"]').value + }).then(function (response) { + if (response) { + form.querySelector('[name="email"]').value= ""; + form.querySelector('[name="password"]').value= ""; + + const redirectUrl = form.getAttribute('data-kt-redirect-url'); + + if (redirectUrl) { + location.href = redirectUrl; + } + } else { + // Show error popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, the email or password is incorrect, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }).catch(function (error) { + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + }); + } else { + // Show error popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + }); + } + + // Public functions + return { + // Initialization + init: function() { + form = document.querySelector('#kt_sign_in_form'); + submitButton = document.querySelector('#kt_sign_in_submit'); + + handleValidation(); + handleSubmitDemo(); // used for demo purposes only, if you use the below ajax version you can uncomment this one + //handleSubmitAjax(); // use for ajax submit + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTSigninGeneral.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/sign-in/i18n.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/sign-in/i18n.js new file mode 100644 index 0000000..82e9b7a --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/sign-in/i18n.js @@ -0,0 +1,433 @@ +"use strict"; + +// Class definition +var KTAuthI18nDemo = function() { + // Elements + var menu; + + var menuObj; + + var translationStrings = { + // General + "general-progress" : { + "English" : "Please wait...", + "Spanish" : "Iniciar Sesión", + "German" : "Registrarse", + "Japanese" : "ログイン", + "French" : "S'identifier", + }, + "general-desc" : { + "English" : "Get unlimited access & earn money", + "Spanish" : "Obtenga acceso ilimitado y gane dinero", + "German" : "Erhalten Sie unbegrenzten Zugriff und verdienen Sie Geld", + "Japanese" : "無制限のアクセスを取得してお金を稼ぐ", + "French" : "Obtenez un accès illimité et gagnez de l'argent", + }, + + "general-or" : { + "English" : "Or", + "Spanish" : "O", + "German" : "Oder", + "Japanese" : "または", + "French" : "Ou", + }, + + // Sign in + "sign-in-head-desc" : { + "English" : "Not a Member yet?", + "Spanish" : "¿No eres miembro todavía?", + "German" : "Noch kein Mitglied?", + "Japanese" : "まだメンバーではありませんか?", + "French" : "Pas encore membre?", + }, + + "sign-in-head-link" : { + "English" : "Sign Up", + "Spanish" : "Inscribirse", + "German" : "Anmeldung", + "Japanese" : "サインアップ", + "French" : "S'S'inscrire", + }, + + "sign-in-title" : { + "English" : "Sign In", + "Spanish" : "Iniciar Sesión", + "German" : "Registrarse", + "Japanese" : "ログイン", + "French" : "S'identifier", + }, + + "sign-in-input-email" : { + "English" : "Email", + "Spanish" : "Correo electrónico", + "German" : "Email", + "Japanese" : "Eメール", + "French" : "E-mail", + }, + + "sign-in-input-password" : { + "English" : "Password", + "Spanish" : "Clave", + "German" : "Passwort", + "Japanese" : "パスワード", + "French" : "Mot de passe", + }, + + "sign-in-forgot-password" : { + "English" : "Forgot Password ?", + "Spanish" : "Has olvidado tu contraseña ?", + "German" : "Passwort vergessen ?", + "Japanese" : "パスワードをお忘れですか ?", + "French" : "Mot de passe oublié ?", + }, + + "sign-in-submit" : { + "English" : "Sign In", + "Spanish" : "Iniciar Sesión", + "German" : "Registrarse", + "Japanese" : "ログイン", + "French" : "S'identifier", + }, + + // Sing up + "sign-up-head-desc" : { + "English" : "Already a member ?", + "Spanish" : "Ya eres usuario ?", + "German" : "Schon ein Mitglied ?", + "Japanese" : "すでにメンバーですか?", + "French" : "Déjà membre ?", + }, + + "sign-up-head-link" : { + "English" : "Sign In", + "Spanish" : "Iniciar Sesión", + "German" : "Registrarse", + "Japanese" : "ログイン", + "French" : "S'identifier", + }, + + "sign-up-title" : { + "English" : "Sign Up", + "Spanish" : "Inscribirse", + "German" : "Anmeldung", + "Japanese" : "サインアップ", + "French" : "S'S'inscrire", + }, + + "sign-up-input-first-name" : { + "English" : "First Name", + "Spanish" : "Primer nombre", + "German" : "Vorname", + "Japanese" : "ファーストネーム", + "French" : "Prénom", + }, + + "sign-up-input-last-name" : { + "English" : "Last Name", + "Spanish" : "Apellido", + "German" : "Nachname", + "Japanese" : "苗字", + "French" : "Nom de famille", + }, + + "sign-up-input-email" : { + "English" : "Email", + "Spanish" : "Correo electrónico", + "German" : "Email", + "Japanese" : "Eメール", + "French" : "E-mail", + }, + + "sign-up-input-password" : { + "English" : "Password", + "Spanish" : "Clave", + "German" : "Passwort", + "Japanese" : "パスワード", + "French" : "Mot de passe", + }, + + "sign-up-input-confirm-password" : { + "English" : "Password", + "Spanish" : "Clave", + "German" : "Passwort", + "Japanese" : "パスワード", + "French" : "Mot de passe", + }, + + "sign-up-submit" : { + "English" : "Submit", + "Spanish" : "Iniciar Sesión", + "German" : "Registrarse", + "Japanese" : "ログイン", + "French" : "S'identifier", + }, + + "sign-up-hint" : { + "English" : "Use 8 or more characters with a mix of letters, numbers & symbols.", + "Spanish" : "Utilice 8 o más caracteres con una combinación de letras, números y símbolos.", + "German" : "Verwenden Sie 8 oder mehr Zeichen mit einer Mischung aus Buchstaben, Zahlen und Symbolen.", + "Japanese" : "文字、数字、記号を組み合わせた8文字以上を使用してください。", + "French" : "Utilisez 8 caractères ou plus avec un mélange de lettres, de chiffres et de symboles.", + }, + + // New password + "new-password-head-desc" : { + "English" : "Already a member ?", + "Spanish" : "Ya eres usuario ?", + "German" : "Schon ein Mitglied ?", + "Japanese" : "すでにメンバーですか?", + "French" : "Déjà membre ?", + }, + + "new-password-head-link" : { + "English" : "Sign In", + "Spanish" : "Iniciar Sesión", + "German" : "Registrarse", + "Japanese" : "ログイン", + "French" : "S'identifier", + }, + + "new-password-title" : { + "English" : "Setup New Password", + "Spanish" : "Configurar nueva contraseña", + "German" : "Neues Passwort einrichten", + "Japanese" : "新しいパスワードを設定する", + "French" : "Configurer un nouveau mot de passe", + }, + + "new-password-desc" : { + "English" : "Have you already reset the password ?", + "Spanish" : "¿Ya has restablecido la contraseña?", + "German" : "Hast du das Passwort schon zurückgesetzt?", + "Japanese" : "すでにパスワードをリセットしましたか?", + "French" : "Avez-vous déjà réinitialisé le mot de passe ?", + }, + + "new-password-input-password" : { + "English" : "Password", + "Spanish" : "Clave", + "German" : "Passwort", + "Japanese" : "パスワード", + "French" : "Mot de passe", + }, + + "new-password-hint" : { + "English" : "Use 8 or more characters with a mix of letters, numbers & symbols.", + "Spanish" : "Utilice 8 o más caracteres con una combinación de letras, números y símbolos.", + "German" : "Verwenden Sie 8 oder mehr Zeichen mit einer Mischung aus Buchstaben, Zahlen und Symbolen.", + "Japanese" : "文字、数字、記号を組み合わせた8文字以上を使用してください。", + "French" : "Utilisez 8 caractères ou plus avec un mélange de lettres, de chiffres et de symboles.", + }, + + "new-password-confirm-password" : { + "English" : "Confirm Password", + "Spanish" : "Confirmar contraseña", + "German" : "Passwort bestätigen", + "Japanese" : "パスワードを認証する", + "French" : "Confirmez le mot de passe", + }, + + "new-password-submit" : { + "English" : "Submit", + "Spanish" : "Iniciar Sesión", + "German" : "Registrarse", + "Japanese" : "ログイン", + "French" : "S'identifier", + }, + + // Password reset + "password-reset-head-desc" : { + "English" : "Already a member ?", + "Spanish" : "Ya eres usuario ?", + "German" : "Schon ein Mitglied ?", + "Japanese" : "すでにメンバーですか?", + "French" : "Déjà membre ?", + }, + + "password-reset-head-link" : { + "English" : "Sign In", + "Spanish" : "Iniciar Sesión", + "German" : "Registrarse", + "Japanese" : "ログイン", + "French" : "S'identifier", + }, + + "password-reset-title" : { + "English" : "Forgot Password ?", + "Spanish" : "Has olvidado tu contraseña ?", + "German" : "Passwort vergessen ?", + "Japanese" : "パスワードをお忘れですか ?", + "French" : "Mot de passe oublié ?", + }, + + "password-reset-desc" : { + "English" : "Enter your email to reset your password.", + "Spanish" : "Ingrese su correo electrónico para restablecer su contraseña.", + "German" : "Geben Sie Ihre E-Mail-Adresse ein, um Ihr Passwort zurückzusetzen.", + "Japanese" : "メールアドレスを入力してパスワードをリセットしてください。", + "French" : "Entrez votre e-mail pour réinitialiser votre mot de passe.", + }, + + "password-reset-input-email" : { + "English" : "Email", + "Spanish" : "Correo electrónico", + "German" : "Email", + "Japanese" : "Eメール", + "French" : "E-mail", + }, + + "password-reset-submit" : { + "English" : "Submit", + "Spanish" : "Iniciar Sesión", + "German" : "Registrarse", + "Japanese" : "ログイン", + "French" : "S'identifier", + }, + + "password-reset-cancel" : { + "English" : "Cancel", + "Spanish" : "Cancelar", + "German" : "Absagen", + "Japanese" : "キャンセル", + "French" : "Annuler", + }, + + // Two steps + "two-step-head-desc" : { + "English" : "Didn’t get the code ?", + "Spanish" : "¿No recibiste el código?", + "German" : "Code nicht erhalten?", + "Japanese" : "コードを取得できませんでしたか?", + "French" : "Vous n'avez pas reçu le code ?", + }, + + "two-step-head-resend" : { + "English" : "Resend", + "Spanish" : "Reenviar", + "German" : "Erneut senden", + "Japanese" : "再送", + "French" : "Renvoyer", + }, + + "two-step-head-or" : { + "English" : "Or", + "Spanish" : "O", + "German" : "Oder", + "Japanese" : "または", + "French" : "Ou", + }, + + "two-step-head-call-us" : { + "English" : "Call Us", + "Spanish" : "Llámenos", + "German" : "Rufen Sie uns an", + "Japanese" : "お電話ください", + "French" : "Appelez-nous", + }, + + "two-step-submit" : { + "English" : "Submit", + "Spanish" : "Iniciar Sesión", + "German" : "Registrarse", + "Japanese" : "ログイン", + "French" : "S'identifier", + }, + + "two-step-title" : { + "English" : "Two Step Verification", + "Spanish" : "Verificación de dos pasos", + "German" : "Verifizierung in zwei Schritten", + "Japanese" : "2段階認証", + "French" : "Vérification en deux étapes", + }, + + "two-step-deck" : { + "English" : "Enter the verification code we sent to", + "Spanish" : "Ingresa el código de verificación que enviamos a", + "German" : "Geben Sie den von uns gesendeten Bestätigungscode ein", + "Japanese" : "送信した確認コードを入力してください", + "French" : "Entrez le code de vérification que nous avons envoyé à", + }, + + "two-step-label" : { + "English" : "Type your 6 digit security code", + "Spanish" : "Escriba su código de seguridad de 6 dígitos", + "German" : "Geben Sie Ihren 6-stelligen Sicherheitscode ein", + "Japanese" : "6桁のセキュリティコードを入力します", + "French" : "Tapez votre code de sécurité à 6 chiffres", + } + } + + // Handle form + var translate = function(lang) { + for (var label in translationStrings) { + if (translationStrings.hasOwnProperty(label)) { + if (translationStrings[label][lang]) { + let labelElement = document.querySelector('[data-kt-translate=' + label + ']'); + + if (labelElement !== null) { + if (labelElement.tagName === "INPUT") { + labelElement.setAttribute("placeholder", translationStrings[label][lang]); + } else { + labelElement.innerHTML = translationStrings[label][lang]; + } + } + } + } + } + } + + var setLanguage = function(lang) { + const selectedLang = menu.querySelector('[data-kt-lang="' + lang + '"]'); + + if (selectedLang !== null) { + const currentLangName = document.querySelector('[data-kt-element="current-lang-name"]'); + const currentLangFlag = document.querySelector('[data-kt-element="current-lang-flag"]'); + + const selectedLangName = selectedLang.querySelector('[data-kt-element="lang-name"]'); + const selectedLangFlag = selectedLang.querySelector('[data-kt-element="lang-flag"]'); + + currentLangName.innerText = selectedLangName.innerText; + currentLangFlag.setAttribute("src", selectedLangFlag.getAttribute("src")); + + localStorage.setItem("kt_auth_lang", lang); + } + } + + var init = function() { + if ( localStorage.getItem("kt_auth_lang") !== null ) { + let lang = localStorage.getItem("kt_auth_lang"); + + setLanguage(lang); + translate(lang); + } + + menuObj.on("kt.menu.link.click", function(element) { + let lang = element.getAttribute("data-kt-lang"); + + setLanguage(lang); + translate(lang); + }); + } + + // Public functions + return { + // Initialization + init: function() { + menu = document.querySelector('#kt_auth_lang_menu'); + + if (menu === null) { + return; + } + + menuObj = KTMenu.getInstance(menu); + + init(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTAuthI18nDemo.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/sign-in/two-steps.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/sign-in/two-steps.js new file mode 100644 index 0000000..f507bd5 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/sign-in/two-steps.js @@ -0,0 +1,140 @@ +"use strict"; + +// Class Definition +var KTSigninTwoSteps = function() { + // Elements + var form; + var submitButton; + + // Handle form + var handleForm = function(e) { + // Handle form submit + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + var validated = true; + + var inputs = [].slice.call(form.querySelectorAll('input[maxlength="1"]')); + inputs.map(function (input) { + if (input.value === '' || input.value.length === 0) { + validated = false; + } + }); + + if (validated === true) { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate ajax request + setTimeout(function() { + // Hide loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show message popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "You have been successfully verified!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + inputs.map(function (input) { + input.value = ''; + }); + + var redirectUrl = form.getAttribute('data-kt-redirect-url'); + if (redirectUrl) { + location.href = redirectUrl; + } + } + }); + }, 1000); + } else { + swal.fire({ + text: "Please enter valid securtiy code and try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-light-primary" + } + }).then(function() { + KTUtil.scrollTop(); + }); + } + }); + } + + var handleType = function() { + var input1 = form.querySelector("[name=code_1]"); + var input2 = form.querySelector("[name=code_2]"); + var input3 = form.querySelector("[name=code_3]"); + var input4 = form.querySelector("[name=code_4]"); + var input5 = form.querySelector("[name=code_5]"); + var input6 = form.querySelector("[name=code_6]"); + + input1.focus(); + + input1.addEventListener("keyup", function() { + if (this.value.length === 1) { + input2.focus(); + } + }); + + input2.addEventListener("keyup", function() { + if (this.value.length === 1) { + input3.focus(); + } + }); + + input3.addEventListener("keyup", function() { + if (this.value.length === 1) { + input4.focus(); + } + }); + + input4.addEventListener("keyup", function() { + if (this.value.length === 1) { + input5.focus(); + } + }); + + input5.addEventListener("keyup", function() { + if (this.value.length === 1) { + input6.focus(); + } + }); + + input6.addEventListener("keyup", function() { + if (this.value.length === 1) { + input6.blur(); + } + }); + } + + // Public functions + return { + // Initialization + init: function() { + form = document.querySelector('#kt_sing_in_two_steps_form'); + submitButton = document.querySelector('#kt_sing_in_two_steps_submit'); + + handleForm(); + handleType(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTSigninTwoSteps.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/sign-up/coming-soon.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/sign-up/coming-soon.js new file mode 100644 index 0000000..31be2fc --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/sign-up/coming-soon.js @@ -0,0 +1,164 @@ +"use strict"; + +// Class Definition +var KTSignupComingSoon = function() { + // Elements + var form; + var submitButton; + var validator; + + var counterDays; + var counterHours; + var counterMinutes; + var counterSeconds; + + var handleForm = function(e) { + var validation; + + if( !form ) { + return; + } + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'email': { + validators: { + regexp: { + regexp: /^[^\s@]+@[^\s@]+\.[^\s@]+$/, + message: 'The value is not a valid email address', + }, + notEmpty: { + message: 'Email address is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form + validator.validate().then(function (status) { + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate ajax request + setTimeout(function() { + // Hide loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show message popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "We have received your request. You will be notified once we go live.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + form.querySelector('[name="email"]').value= ""; + //form.submit(); + + //form.submit(); // submit form + var redirectUrl = form.getAttribute('data-kt-redirect-url'); + if (redirectUrl) { + location.href = redirectUrl; + } + } + }); + }, 2000); + } else { + // Show error popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + }); + } + + var initCounter = function() { + // Set the date we're counting down to + var currentTime = new Date(); + var countDownDate = new Date(currentTime.getTime() + 1000 * 60 * 60 * 24 * 15 + 1000 * 60 * 60 * 10 + 1000 * 60 * 15).getTime(); + + var count = function() { + // Get todays date and time + var now = new Date().getTime(); + + // Find the distance between now an the count down date + var distance = countDownDate - now; + + // Time calculations for days, hours, minutes and seconds + var days = Math.floor(distance / (1000 * 60 * 60 * 24)); + var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); + var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); + var seconds = Math.floor((distance % (1000 * 60)) / 1000); + + // Display the result + if(counterDays) counterDays.innerHTML = days; + if(counterHours) counterHours.innerHTML = hours; + if(counterMinutes) counterMinutes.innerHTML = minutes; + if(counterSeconds) counterSeconds.innerHTML = seconds; + }; + + // Update the count down every 1 second + var x = setInterval(count, 1000); + + // Initial count + count(); + } + + // Public Functions + return { + // public functions + init: function() { + form = document.querySelector('#kt_coming_soon_form'); + submitButton = document.querySelector('#kt_coming_soon_submit'); + + handleForm(); + + counterDays = document.querySelector('#kt_coming_soon_counter_days'); + if (counterDays) { + counterHours = document.querySelector('#kt_coming_soon_counter_hours'); + counterMinutes = document.querySelector('#kt_coming_soon_counter_minutes'); + counterSeconds = document.querySelector('#kt_coming_soon_counter_seconds'); + + initCounter(); + } + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTSignupComingSoon.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/sign-up/free-trial.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/sign-up/free-trial.js new file mode 100644 index 0000000..133485e --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/sign-up/free-trial.js @@ -0,0 +1,169 @@ +"use strict"; + +// Class Definition +var KTSignupFreeTrial = function() { + // Elements + var form; + var submitButton; + var validator; + var passwordMeter; + + // Handle form + var handleForm = function(e) { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'email': { + validators: { + regexp: { + regexp: /^[^\s@]+@[^\s@]+\.[^\s@]+$/, + message: 'The value is not a valid email address', + }, + notEmpty: { + message: 'Email address is required' + } + } + }, + 'password': { + validators: { + notEmpty: { + message: 'The password is required' + }, + callback: { + message: 'Please enter valid password', + callback: function(input) { + if (input.value.length > 0) { + return validatePassword(); + } + } + } + } + }, + 'confirm-password': { + validators: { + notEmpty: { + message: 'The password confirmation is required' + }, + identical: { + compare: function() { + return form.querySelector('[name="password"]').value; + }, + message: 'The password and its confirm are not the same' + } + } + }, + 'toc': { + validators: { + notEmpty: { + message: 'You must accept the terms and conditions' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger({ + event: { + password: false + } + }), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + validator.revalidateField('password'); + + validator.validate().then(function(status) { + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate ajax request + setTimeout(function() { + // Hide loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show message popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "You have successfully registered!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + form.reset(); // reset form + passwordMeter.reset(); // reset password meter + + //form.submit(); // submit form + var redirectUrl = form.getAttribute('data-kt-redirect-url'); + if (redirectUrl) { + location.href = redirectUrl; + } + } + }); + }, 1500); + } else { + // Show error popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + }); + + form.querySelector('input[name="password"]').addEventListener('input', function() { + if (this.value.length > 0) { + validator.updateFieldStatus('password', 'NotValidated'); + } + }); + } + + // Password input validation + var validatePassword = function() { + return (passwordMeter.getScore() === 100); + } + + // Public functions + return { + // Initialization + init: function() { + form = document.querySelector('#kt_free_trial_form'); + submitButton = document.querySelector('#kt_free_trial_submit'); + passwordMeter = KTPasswordMeter.getInstance(form.querySelector('[data-kt-password-meter="true"]')); + + handleForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTSignupFreeTrial.init(); +}); + + + \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/sign-up/general.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/sign-up/general.js new file mode 100644 index 0000000..e40e412 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/authentication/sign-up/general.js @@ -0,0 +1,184 @@ +"use strict"; + +// Class definition +var KTSignupGeneral = function() { + // Elements + var form; + var submitButton; + var validator; + var passwordMeter; + + // Handle form + var handleForm = function(e) { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'first-name': { + validators: { + notEmpty: { + message: 'First Name is required' + } + } + }, + 'last-name': { + validators: { + notEmpty: { + message: 'Last Name is required' + } + } + }, + 'email': { + validators: { + regexp: { + regexp: /^[^\s@]+@[^\s@]+\.[^\s@]+$/, + message: 'The value is not a valid email address', + }, + notEmpty: { + message: 'Email address is required' + } + } + }, + 'password': { + validators: { + notEmpty: { + message: 'The password is required' + }, + callback: { + message: 'Please enter valid password', + callback: function(input) { + if (input.value.length > 0) { + return validatePassword(); + } + } + } + } + }, + 'confirm-password': { + validators: { + notEmpty: { + message: 'The password confirmation is required' + }, + identical: { + compare: function() { + return form.querySelector('[name="password"]').value; + }, + message: 'The password and its confirm are not the same' + } + } + }, + 'toc': { + validators: { + notEmpty: { + message: 'You must accept the terms and conditions' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger({ + event: { + password: false + } + }), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', // comment to enable invalid state icons + eleValidClass: '' // comment to enable valid state icons + }) + } + } + ); + + // Handle form submit + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + validator.revalidateField('password'); + + validator.validate().then(function(status) { + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate ajax request + setTimeout(function() { + // Hide loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show message popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "You have successfully reset your password!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + form.reset(); // reset form + passwordMeter.reset(); // reset password meter + //form.submit(); + + //form.submit(); // submit form + var redirectUrl = form.getAttribute('data-kt-redirect-url'); + if (redirectUrl) { + location.href = redirectUrl; + } + } + }); + }, 1500); + } else { + // Show error popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + }); + + // Handle password input + form.querySelector('input[name="password"]').addEventListener('input', function() { + if (this.value.length > 0) { + validator.updateFieldStatus('password', 'NotValidated'); + } + }); + } + + // Password input validation + var validatePassword = function() { + return (passwordMeter.getScore() === 100); + } + + // Public functions + return { + // Initialization + init: function() { + // Elements + form = document.querySelector('#kt_sign_up_form'); + submitButton = document.querySelector('#kt_sign_up_submit'); + passwordMeter = KTPasswordMeter.getInstance(form.querySelector('[data-kt-password-meter="true"]')); + + handleForm (); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTSignupGeneral.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/landing.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/landing.js new file mode 100644 index 0000000..efd63bd --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/landing.js @@ -0,0 +1,29 @@ +"use strict"; + +// Class definition +var KTLandingPage = function () { + // Private methods + var initTyped = function() { + var typed = new Typed("#kt_landing_hero_text", { + strings: ["The Best Theme Ever", "The Most Trusted Theme", "#1 Selling Theme"], + typeSpeed: 50 + }); + } + + // Public methods + return { + init: function () { + //initTyped(); + } + } +}(); + +// Webpack support +if (typeof module !== 'undefined') { + module.exports = KTLandingPage; +} + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTLandingPage.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/pages/careers/apply.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/pages/careers/apply.js new file mode 100644 index 0000000..9210dcf --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/pages/careers/apply.js @@ -0,0 +1,179 @@ +"use strict"; + +// Class definition +var KTCareersApply = function () { + var submitButton; + var validator; + var form; + + // Init form inputs + var initForm = function() { + // Team assign. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="position"]')).on('change', function() { + // Revalidate the field when an option is chosen + validator.revalidateField('position'); + }); + + // Start date. For more info, please visit the official plugin site: https://flatpickr.js.org/ + var startDate = $(form.querySelector('[name="start_date"]')); + startDate.flatpickr({ + enableTime: false, + dateFormat: "d, M Y", + }); + } + + // Handle form validation and submittion + var handleForm = function() { + // Stepper custom navigation + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'first_name': { + validators: { + notEmpty: { + message: 'First name is required' + } + } + }, + 'last_name': { + validators: { + notEmpty: { + message: 'Last name is required' + } + } + }, + 'age': { + validators: { + notEmpty: { + message: 'Age is required' + } + } + }, + 'city': { + validators: { + notEmpty: { + message: 'City is required' + } + } + }, + 'email': { + validators: { + notEmpty: { + message: 'Email address is required' + }, + emailAddress: { + message: 'The value is not a valid email address' + } + } + }, + 'salary': { + validators: { + notEmpty: { + message: 'Expected salary is required' + } + } + }, + 'position': { + validators: { + notEmpty: { + message: 'Position is required' + } + } + }, + 'start_date': { + validators: { + notEmpty: { + message: 'Start date is required' + } + } + }, + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Action buttons + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + setTimeout(function() { + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + //form.submit(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Scroll top + + // Show error popuo. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + KTUtil.scrollTop(); + }); + } + }); + } + }); + } + + return { + // Public functions + init: function () { + // Elements + form = document.querySelector('#kt_careers_form'); + submitButton = document.getElementById('kt_careers_submit_button'); + + initForm(); + handleForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTCareersApply.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/pages/general/contact.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/pages/general/contact.js new file mode 100644 index 0000000..f236afc --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/pages/general/contact.js @@ -0,0 +1,206 @@ +"use strict"; + +// Class definition +var KTContactApply = function () { + var submitButton; + var validator; + var form; + var selectedlocation; + + // Private functions + var initMap = function(elementId) { + // Check if Leaflet is included + if (!L) { + return; + } + + // Define Map Location + var leaflet = L.map(elementId, { + center: [40.725, -73.985], + zoom: 30 + }); + + // Init Leaflet Map. For more info check the plugin's documentation: https://leafletjs.com/ + L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { + attribution: '© OpenStreetMap contributors' + }).addTo(leaflet); + + // Set Geocoding + var geocodeService; + if (typeof L.esri.Geocoding === 'undefined') { + geocodeService = L.esri.geocodeService(); + } else { + geocodeService = L.esri.Geocoding.geocodeService(); + } + + // Define Marker Layer + var markerLayer = L.layerGroup().addTo(leaflet); + + // Set Custom SVG icon marker + var leafletIcon = L.divIcon({ + html: ``, + bgPos: [10, 10], + iconAnchor: [20, 37], + popupAnchor: [0, -37], + className: 'leaflet-marker' + }); + + // Show current address + L.marker([40.724716, -73.984789], { icon: leafletIcon }).addTo(markerLayer).bindPopup('430 E 6th St, New York, 10009.', { closeButton: false }).openPopup(); + + // Map onClick Action + leaflet.on('click', function (e) { + geocodeService.reverse().latlng(e.latlng).run(function (error, result) { + if (error) { + return; + } + markerLayer.clearLayers(); + selectedlocation = result.address.Match_addr; + L.marker(result.latlng, { icon: leafletIcon }).addTo(markerLayer).bindPopup(result.address.Match_addr, { closeButton: false }).openPopup(); + + // Show popup confirmation. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + html: 'Your selected - "' + selectedlocation + ' - ' + result.latlng + '".', + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + // Confirmed + }); + }); + }); + } + + // Init form inputs + var initForm = function() { + // Team assign. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="position"]')).on('change', function() { + // Revalidate the field when an option is chosen + validator.revalidateField('position'); + }); + } + + // Handle form validation and submittion + var handleForm = function() { + // Stepper custom navigation + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'name': { + validators: { + notEmpty: { + message: 'Name is required' + } + } + }, + 'email': { + validators: { + notEmpty: { + message: 'Email address is required' + }, + emailAddress: { + message: 'The value is not a valid email address' + } + } + }, + 'message': { + validators: { + notEmpty: { + message: 'Message is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Action buttons + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + setTimeout(function() { + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + //form.submit(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Scroll top + + // Show error popuo. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + KTUtil.scrollTop(); + }); + } + }); + } + }); + } + + return { + // Public functions + init: function () { + // Elements + form = document.querySelector('#kt_contact_form'); + submitButton = document.getElementById('kt_contact_submit_button'); + + initForm(); + handleForm(); + initMap('kt_contact_map'); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTContactApply.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/pages/general/pos.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/pages/general/pos.js new file mode 100644 index 0000000..181b77a --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/pages/general/pos.js @@ -0,0 +1,66 @@ +"use strict"; + +// Class definition +var KTPosSystem = function () { + var form; + + var moneyFormat = wNumb({ + mark: '.', + thousand: ',', + decimals: 2, + prefix: '$', + }); + + var calculateTotals = function() { + var items = [].slice.call(form.querySelectorAll('[data-kt-pos-element="item-total"]')); + var total = 0; + var tax = 12; + var discount = 8; + var grantTotal = 0; + + items.map(function (item) { + total += moneyFormat.from(item.innerHTML); + }); + + grantTotal = total; + grantTotal -= discount; + grantTotal += tax * 8 / 100; + + form.querySelector('[data-kt-pos-element="total"]').innerHTML = moneyFormat.to(total); + form.querySelector('[data-kt-pos-element="grant-total"]').innerHTML = moneyFormat.to(grantTotal); + } + + var handleQuantity = function() { + var dialers = [].slice.call(form.querySelectorAll('[data-kt-pos-element="item"] [data-kt-dialer="true"]')); + + dialers.map(function (dialer) { + var dialerObject = KTDialer.getInstance(dialer); + + dialerObject.on('kt.dialer.changed', function(){ + var quantity = parseInt(dialerObject.getValue()); + var item = dialerObject.getElement().closest('[data-kt-pos-element="item"]'); + var value = parseInt(item.getAttribute("data-kt-pos-item-price")); + var total = quantity * value; + + item.querySelector('[data-kt-pos-element="item-total"]').innerHTML = moneyFormat.to(total); + + calculateTotals(); + }); + }); + } + + return { + // Public functions + init: function () { + // Elements + form = document.querySelector('#kt_pos_form'); + + handleQuantity(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTPosSystem.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/pages/pricing/general.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/pages/pricing/general.js new file mode 100644 index 0000000..0eb564c --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/pages/pricing/general.js @@ -0,0 +1,63 @@ +"use strict"; + +// Class definition +var KTPricingGeneral = function () { + // Private variables + var element; + var planPeriodMonthButton; + var planPeriodAnnualButton; + + var changePlanPrices = function(type) { + var items = [].slice.call(element.querySelectorAll('[data-kt-plan-price-month]')); + + items.map(function (item) { + var monthPrice = item.getAttribute('data-kt-plan-price-month'); + var annualPrice = item.getAttribute('data-kt-plan-price-annual'); + + if ( type === 'month' ) { + item.innerHTML = monthPrice; + } else if ( type === 'annual' ) { + item.innerHTML = annualPrice; + } + }); + } + + var handlePlanPeriodSelection = function(e) { + + // Handle period change + planPeriodMonthButton.addEventListener('click', function (e) { + e.preventDefault(); + + planPeriodMonthButton.classList.add('active'); + planPeriodAnnualButton.classList.remove('active'); + + changePlanPrices('month'); + }); + + planPeriodAnnualButton.addEventListener('click', function (e) { + e.preventDefault(); + + planPeriodMonthButton.classList.remove('active'); + planPeriodAnnualButton.classList.add('active'); + + changePlanPrices('annual'); + }); + } + + // Public methods + return { + init: function () { + element = document.querySelector('#kt_pricing'); + planPeriodMonthButton = element.querySelector('[data-kt-plan="month"]'); + planPeriodAnnualButton = element.querySelector('[data-kt-plan="annual"]'); + + // Handlers + handlePlanPeriodSelection(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTPricingGeneral.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/pages/social/feeds.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/pages/social/feeds.js new file mode 100644 index 0000000..9788415 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/pages/social/feeds.js @@ -0,0 +1,95 @@ +"use strict"; + +// Class definition +var KTSocialFeeds = function () { + // init variables + var morePostsBtn = document.getElementById('kt_social_feeds_more_posts_btn'); + var morePosts = document.getElementById('kt_social_feeds_more_posts'); + var posts = document.getElementById('kt_social_feeds_posts'); + + var postInput = document.getElementById('kt_social_feeds_post_input'); + var postBtn = document.getElementById('kt_social_feeds_post_btn'); + var newPost = document.getElementById('kt_social_feeds_new_post'); + + // Private functions + var handleMorePosts = function () { + // Show more click + morePostsBtn.addEventListener('click', function (e) { + // Cancel default behavior + e.preventDefault(); + + // Show indicator + morePostsBtn.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + morePostsBtn.disabled = true; + + // Simulate form submission process + setTimeout(function() { + // Hide loading indication + morePostsBtn.removeAttribute('data-kt-indicator'); + + // Enable button + morePostsBtn.disabled = false; + + // Hide button + morePostsBtn.classList.add('d-none'); + + // Show card + morePosts.classList.remove('d-none'); + + // Scroll to + KTUtil.scrollTo(morePosts, 200); + }, 1000); + }); + } + + // Private functions + var handleNewPost = function () { + // Show more click + postBtn.addEventListener('click', function (e) { + // Cancel default behavior + e.preventDefault(); + + // Show indicator + postBtn.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + postBtn.disabled = true; + + // Simulate form submission process + setTimeout(function() { + // Hide loading indication + postBtn.removeAttribute('data-kt-indicator'); + + // Enable button + postBtn.disabled = false; + + var message = postInput.value; + var post = newPost.querySelector('.card').cloneNode(true); + + posts.prepend(post); + + if (message.length > 0) { + post.querySelector('[data-kt-post-element="content"]').innerHTML = message; + } + + // Scroll to post + KTUtil.scrollTo(post, 200); + }, 1000); + }); + } + + // Public methods + return { + init: function () { + handleMorePosts(); + handleNewPost(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTSocialFeeds.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/pages/user-profile/general.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/pages/user-profile/general.js new file mode 100644 index 0000000..002d51f --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/pages/user-profile/general.js @@ -0,0 +1,153 @@ +"use strict"; + +// Class definition +var KTProfileGeneral = function () { + // init variables + var showMoreButton; + var showMoreCards; + var followBtn; + var profileNav; + var pageToolbar; + + // Private functions + var handleShowMore = function () { + if (!showMoreButton) { + return; + } + + // Show more click + showMoreButton.addEventListener('click', function (e) { + showMoreButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + showMoreButton.disabled = true; + + setTimeout(function() { + // Hide loading indication + showMoreButton.removeAttribute('data-kt-indicator'); + + // Enable button + showMoreButton.disabled = false; + + // Hide button + showMoreButton.classList.add('d-none'); + + // Show card + showMoreCards.classList.remove('d-none'); + + // Scroll to card + KTUtil.scrollTo(showMoreCards, 200); + }, 2000); + }); + } + + // Follow button + var handleUFollow = function() { + if (!followBtn) { + return; + } + + followBtn.addEventListener('click', function(e){ + // Prevent default action + e.preventDefault(); + + // Show indicator + followBtn.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + followBtn.disabled = true; + + // Check button state + if (followBtn.classList.contains("btn-success")) { + setTimeout(function() { + followBtn.removeAttribute('data-kt-indicator'); + followBtn.classList.remove("btn-success"); + followBtn.classList.add("btn-light"); + followBtn.querySelector(".svg-icon").classList.add("d-none"); + followBtn.querySelector(".indicator-label").innerHTML = 'Follow'; + followBtn.disabled = false; + }, 1500); + } else { + setTimeout(function() { + followBtn.removeAttribute('data-kt-indicator'); + followBtn.classList.add("btn-success"); + followBtn.classList.remove("btn-light"); + followBtn.querySelector(".svg-icon").classList.remove("d-none"); + followBtn.querySelector(".indicator-label").innerHTML = 'Following'; + followBtn.disabled = false; + }, 1000); + } + }); + } + + var handleFollowers = function() { + KTUtil.on(document.body, '[data-kt-follow-btn="true"]', 'click', function(e) { + e.preventDefault(); + + var el = this; + var label = el.querySelector(".indicator-label"); + var following = el.querySelector(".following"); + var follow = el.querySelector(".follow"); + + el.setAttribute('data-kt-indicator', 'on'); + el.disabled = true; + follow.classList.add("d-none"); + following.classList.add("d-none") + + setTimeout(function() { + el.removeAttribute('data-kt-indicator'); + el.disabled = false; + + if (el.classList.contains("btn-light-primary")) { // following + el.classList.remove("btn-light-primary"); + el.classList.add("btn-light"); + + follow.classList.remove("d-none"); + + label.innerHTML = "Follow"; + } else { // follow + el.classList.add("btn-light-primary"); + el.classList.remove("btn-light"); + + following.classList.remove("d-none"); + + label.innerHTML = "Following"; + } + }, 2000); + }); + } + + var handlePageScroll = function() { + if ( profileNav && profileNav.getAttribute("data-kt-sticky") && KTUtil.isBreakpointUp('lg')) { + + if ( localStorage.getItem('nav-initialized') === "1") { + window.scroll({ + top: parseInt(profileNav.getAttribute("data-kt-page-scroll-position")), + behavior: 'smooth' + }); + } + + localStorage.setItem('nav-initialized', "1"); + } + } + + // Public methods + return { + init: function () { + showMoreButton = document.querySelector('#kt_followers_show_more_button'); + showMoreCards = document.querySelector('#kt_followers_show_more_cards'); + followBtn = document.querySelector('#kt_user_follow_button'); + profileNav = document.querySelector('#kt_user_profile_nav'); + + handleShowMore(); + handleUFollow(); + handleFollowers(); + handlePageScroll(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTProfileGeneral.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/bidding.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/bidding.js new file mode 100644 index 0000000..25bf3ec --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/bidding.js @@ -0,0 +1,264 @@ +"use strict"; + +// Class definition +var KTModalBidding = function () { + // Shared variables + var element; + var form; + var modal; + + // Private functions + const initForm = () => { + // Dynamically create validation non-empty rule + const requiredFields = form.querySelectorAll('.required'); + var detectedField; + var validationFields = { + fields: {}, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + + // Detect required fields + requiredFields.forEach(el => { + const input = el.closest('.fv-row').querySelector('input'); + if (input) { + detectedField = input; + } + + const textarea = el.closest('.fv-row').querySelector('textarea'); + if (textarea) { + detectedField = textarea; + } + + const select = el.closest('.fv-row').querySelector('select'); + if (select) { + detectedField = select; + } + + // Add validation rule + const name = detectedField.getAttribute('name'); + validationFields.fields[name] = { + validators: { + notEmpty: { + message: el.innerText + ' is required' + } + } + } + }); + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + validationFields + ); + + // Submit button handler + const submitButton = form.querySelector('[data-kt-modal-action-type="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function () { + //form.submit(); // Submit form + form.reset(); + modal.hide(); + }); + }, 2000); + } else { + // Show popup error + Swal.fire({ + text: "Oops! There are some error(s) detected.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + // Init Select2 template options + const initSelect2Templates = () => { + const elements = form.querySelectorAll('[data-kt-modal-bidding-type] select'); + + if (!elements) { + return; + } + + // Format options + const format = (item) => { + if (!item.id) { + return item.text; + } + + var url = 'assets/media/' + item.element.getAttribute('data-kt-bidding-modal-option-icon'); + var img = $("", { + class: "rounded-circle me-2", + width: 26, + src: url + }); + var span = $("", { + text: " " + item.text + }); + span.prepend(img); + return span; + } + + elements.forEach(el => { + // Init Select2 --- more info: https://select2.org/ + $(el).select2({ + minimumResultsForSearch: Infinity, + templateResult: function (item) { + return format(item); + } + }); + }); + } + + // Handle bid options + const handleBidOptions = () => { + const options = form.querySelectorAll('[data-kt-modal-bidding="option"]'); + const inputEl = form.querySelector('[name="bid_amount"]'); + options.forEach(option => { + option.addEventListener('click', e => { + e.preventDefault(); + + inputEl.value = e.target.innerText; + }); + }); + } + + // Handle currency selector + const handleCurrencySelector = () => { + const element = form.querySelector('.form-select[name="currency_type"]'); + + // Select2 event listener + $(element).on('select2:select', function (e) { + const value = e.params.data; + swapCurrency(value); + }); + + const swapCurrency = (target) => { + console.log(target); + const currencies = form.querySelectorAll('[data-kt-modal-bidding-type]'); + currencies.forEach(currency => { + currency.classList.add('d-none'); + + if (currency.getAttribute('data-kt-modal-bidding-type') === target.id) { + currency.classList.remove('d-none'); + } + }); + } + } + + // Handle cancel modal + const handleCancelAction = () => { + const cancelButton = element.querySelector('[data-kt-modal-action-type="cancel"]'); + const closeButton = element.querySelector('[data-kt-modal-action-type="close"]'); + cancelButton.addEventListener('click', e => { + cancelAction(e); + }); + + closeButton.addEventListener('click', e => { + cancelAction(e); + }); + + const cancelAction = (e) => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + } + } + + + // Public methods + return { + init: function () { + // Elements + element = document.querySelector('#kt_modal_bidding'); + form = document.getElementById('kt_modal_bidding_form'); + modal = new bootstrap.Modal(element); + + if (!form) { + return; + } + + initForm(); + initSelect2Templates(); + handleBidOptions(); + handleCurrencySelector(); + handleCancelAction(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalBidding.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-account.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-account.js new file mode 100644 index 0000000..9f5059f --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-account.js @@ -0,0 +1,357 @@ +"use strict"; + +// Class definition +var KTCreateAccount = function () { + // Elements + var modal; + var modalEl; + + var stepper; + var form; + var formSubmitButton; + var formContinueButton; + + // Variables + var stepperObj; + var validations = []; + + // Private Functions + var initStepper = function () { + // Initialize Stepper + stepperObj = new KTStepper(stepper); + + // Stepper change event + stepperObj.on('kt.stepper.changed', function (stepper) { + if (stepperObj.getCurrentStepIndex() === 4) { + formSubmitButton.classList.remove('d-none'); + formSubmitButton.classList.add('d-inline-block'); + formContinueButton.classList.add('d-none'); + } else if (stepperObj.getCurrentStepIndex() === 5) { + formSubmitButton.classList.add('d-none'); + formContinueButton.classList.add('d-none'); + } else { + formSubmitButton.classList.remove('d-inline-block'); + formSubmitButton.classList.remove('d-none'); + formContinueButton.classList.remove('d-none'); + } + }); + + // Validation before going to next page + stepperObj.on('kt.stepper.next', function (stepper) { + console.log('stepper.next'); + + // Validate form before change stepper step + var validator = validations[stepper.getCurrentStepIndex() - 1]; // get validator for currnt step + + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + stepper.goNext(); + + KTUtil.scrollTop(); + } else { + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-light" + } + }).then(function () { + KTUtil.scrollTop(); + }); + } + }); + } else { + stepper.goNext(); + + KTUtil.scrollTop(); + } + }); + + // Prev event + stepperObj.on('kt.stepper.previous', function (stepper) { + console.log('stepper.previous'); + + stepper.goPrevious(); + KTUtil.scrollTop(); + }); + } + + var handleForm = function() { + formSubmitButton.addEventListener('click', function (e) { + // Validate form before change stepper step + var validator = validations[3]; // get validator for last form + + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Prevent default button action + e.preventDefault(); + + // Disable button to avoid multiple click + formSubmitButton.disabled = true; + + // Show loading indication + formSubmitButton.setAttribute('data-kt-indicator', 'on'); + + // Simulate form submission + setTimeout(function() { + // Hide loading indication + formSubmitButton.removeAttribute('data-kt-indicator'); + + // Enable button + formSubmitButton.disabled = false; + + stepperObj.goNext(); + }, 2000); + } else { + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-light" + } + }).then(function () { + KTUtil.scrollTop(); + }); + } + }); + }); + + // Expiry month. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="card_expiry_month"]')).on('change', function() { + // Revalidate the field when an option is chosen + validations[3].revalidateField('card_expiry_month'); + }); + + // Expiry year. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="card_expiry_year"]')).on('change', function() { + // Revalidate the field when an option is chosen + validations[3].revalidateField('card_expiry_year'); + }); + + // Expiry year. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="business_type"]')).on('change', function() { + // Revalidate the field when an option is chosen + validations[2].revalidateField('business_type'); + }); + } + + var initValidation = function () { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + // Step 1 + validations.push(FormValidation.formValidation( + form, + { + fields: { + account_type: { + validators: { + notEmpty: { + message: 'Account type is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + )); + + // Step 2 + validations.push(FormValidation.formValidation( + form, + { + fields: { + 'account_team_size': { + validators: { + notEmpty: { + message: 'Time size is required' + } + } + }, + 'account_name': { + validators: { + notEmpty: { + message: 'Account name is required' + } + } + }, + 'account_plan': { + validators: { + notEmpty: { + message: 'Account plan is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + // Bootstrap Framework Integration + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + )); + + // Step 3 + validations.push(FormValidation.formValidation( + form, + { + fields: { + 'business_name': { + validators: { + notEmpty: { + message: 'Busines name is required' + } + } + }, + 'business_descriptor': { + validators: { + notEmpty: { + message: 'Busines descriptor is required' + } + } + }, + 'business_type': { + validators: { + notEmpty: { + message: 'Busines type is required' + } + } + }, + 'business_email': { + validators: { + notEmpty: { + message: 'Busines email is required' + }, + emailAddress: { + message: 'The value is not a valid email address' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + // Bootstrap Framework Integration + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + )); + + // Step 4 + validations.push(FormValidation.formValidation( + form, + { + fields: { + 'card_name': { + validators: { + notEmpty: { + message: 'Name on card is required' + } + } + }, + 'card_number': { + validators: { + notEmpty: { + message: 'Card member is required' + }, + creditCard: { + message: 'Card number is not valid' + } + } + }, + 'card_expiry_month': { + validators: { + notEmpty: { + message: 'Month is required' + } + } + }, + 'card_expiry_year': { + validators: { + notEmpty: { + message: 'Year is required' + } + } + }, + 'card_cvv': { + validators: { + notEmpty: { + message: 'CVV is required' + }, + digits: { + message: 'CVV must contain only digits' + }, + stringLength: { + min: 3, + max: 4, + message: 'CVV must contain 3 to 4 digits only' + } + } + } + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + // Bootstrap Framework Integration + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + )); + } + + return { + // Public Functions + init: function () { + // Elements + modalEl = document.querySelector('#kt_modal_create_account'); + + if ( modalEl ) { + modal = new bootstrap.Modal(modalEl); + } + + stepper = document.querySelector('#kt_create_account_stepper'); + + if ( !stepper ) { + return; + } + + form = stepper.querySelector('#kt_create_account_form'); + formSubmitButton = stepper.querySelector('[data-kt-stepper-action="submit"]'); + formContinueButton = stepper.querySelector('[data-kt-stepper-action="next"]'); + + initStepper(); + initValidation(); + handleForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTCreateAccount.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-api-key.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-api-key.js new file mode 100644 index 0000000..0db049a --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-api-key.js @@ -0,0 +1,183 @@ +"use strict"; + +// Class definition +var KTModalCreateApiKey = function () { + var submitButton; + var cancelButton; + var validator; + var form; + var modal; + var modalEl; + + // Init form inputs + var initForm = function() { + // Team assign. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="category"]')).on('change', function() { + // Revalidate the field when an option is chosen + validator.revalidateField('category'); + }); + } + + // Handle form validation and submittion + var handleForm = function() { + // Stepper custom navigation + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'name': { + validators: { + notEmpty: { + message: 'API name is required' + } + } + }, + 'description': { + validators: { + notEmpty: { + message: 'Description is required' + } + } + }, + 'category': { + validators: { + notEmpty: { + message: 'Country is required' + } + } + }, + 'method': { + validators: { + notEmpty: { + message: 'API method is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Action buttons + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + setTimeout(function() { + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show error popuo. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Show confirmation popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + // Show success message. + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + return { + // Public functions + init: function () { + // Elements + modalEl = document.querySelector('#kt_modal_create_api_key'); + + if (!modalEl) { + return; + } + + modal = new bootstrap.Modal(modalEl); + + form = document.querySelector('#kt_modal_create_api_key_form'); + submitButton = document.getElementById('kt_modal_create_api_key_submit'); + cancelButton = document.getElementById('kt_modal_create_api_key_cancel'); + + initForm(); + handleForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalCreateApiKey.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-app.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-app.js new file mode 100644 index 0000000..b06976c --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-app.js @@ -0,0 +1,327 @@ +"use strict"; + +// Class definition +var KTCreateApp = function () { + // Elements + var modal; + var modalEl; + + var stepper; + var form; + var formSubmitButton; + var formContinueButton; + + // Variables + var stepperObj; + var validations = []; + + // Private Functions + var initStepper = function () { + // Initialize Stepper + stepperObj = new KTStepper(stepper); + + // Stepper change event(handle hiding submit button for the last step) + stepperObj.on('kt.stepper.changed', function (stepper) { + if (stepperObj.getCurrentStepIndex() === 4) { + formSubmitButton.classList.remove('d-none'); + formSubmitButton.classList.add('d-inline-block'); + formContinueButton.classList.add('d-none'); + } else if (stepperObj.getCurrentStepIndex() === 5) { + formSubmitButton.classList.add('d-none'); + formContinueButton.classList.add('d-none'); + } else { + formSubmitButton.classList.remove('d-inline-block'); + formSubmitButton.classList.remove('d-none'); + formContinueButton.classList.remove('d-none'); + } + }); + + // Validation before going to next page + stepperObj.on('kt.stepper.next', function (stepper) { + console.log('stepper.next'); + + // Validate form before change stepper step + var validator = validations[stepper.getCurrentStepIndex() - 1]; // get validator for currnt step + + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + stepper.goNext(); + + //KTUtil.scrollTop(); + } else { + // Show error message popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-light" + } + }).then(function () { + //KTUtil.scrollTop(); + }); + } + }); + } else { + stepper.goNext(); + + KTUtil.scrollTop(); + } + }); + + // Prev event + stepperObj.on('kt.stepper.previous', function (stepper) { + console.log('stepper.previous'); + + stepper.goPrevious(); + KTUtil.scrollTop(); + }); + + formSubmitButton.addEventListener('click', function (e) { + // Validate form before change stepper step + var validator = validations[3]; // get validator for last form + + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Prevent default button action + e.preventDefault(); + + // Disable button to avoid multiple click + formSubmitButton.disabled = true; + + // Show loading indication + formSubmitButton.setAttribute('data-kt-indicator', 'on'); + + // Simulate form submission + setTimeout(function() { + // Hide loading indication + formSubmitButton.removeAttribute('data-kt-indicator'); + + // Enable button + formSubmitButton.disabled = false; + + stepperObj.goNext(); + //KTUtil.scrollTop(); + }, 2000); + } else { + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-light" + } + }).then(function () { + KTUtil.scrollTop(); + }); + } + }); + }); + } + + // Init form inputs + var initForm = function() { + // Expiry month. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="card_expiry_month"]')).on('change', function() { + // Revalidate the field when an option is chosen + validations[3].revalidateField('card_expiry_month'); + }); + + // Expiry year. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="card_expiry_year"]')).on('change', function() { + // Revalidate the field when an option is chosen + validations[3].revalidateField('card_expiry_year'); + }); + } + + var initValidation = function () { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + // Step 1 + validations.push(FormValidation.formValidation( + form, + { + fields: { + name: { + validators: { + notEmpty: { + message: 'App name is required' + } + } + }, + category: { + validators: { + notEmpty: { + message: 'Category is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + )); + + // Step 2 + validations.push(FormValidation.formValidation( + form, + { + fields: { + framework: { + validators: { + notEmpty: { + message: 'Framework is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + // Bootstrap Framework Integration + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + )); + + // Step 3 + validations.push(FormValidation.formValidation( + form, + { + fields: { + dbname: { + validators: { + notEmpty: { + message: 'Database name is required' + } + } + }, + dbengine: { + validators: { + notEmpty: { + message: 'Database engine is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + // Bootstrap Framework Integration + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + )); + + // Step 4 + validations.push(FormValidation.formValidation( + form, + { + fields: { + 'card_name': { + validators: { + notEmpty: { + message: 'Name on card is required' + } + } + }, + 'card_number': { + validators: { + notEmpty: { + message: 'Card member is required' + }, + creditCard: { + message: 'Card number is not valid' + } + } + }, + 'card_expiry_month': { + validators: { + notEmpty: { + message: 'Month is required' + } + } + }, + 'card_expiry_year': { + validators: { + notEmpty: { + message: 'Year is required' + } + } + }, + 'card_cvv': { + validators: { + notEmpty: { + message: 'CVV is required' + }, + digits: { + message: 'CVV must contain only digits' + }, + stringLength: { + min: 3, + max: 4, + message: 'CVV must contain 3 to 4 digits only' + } + } + } + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + // Bootstrap Framework Integration + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + )); + } + + return { + // Public Functions + init: function () { + // Elements + modalEl = document.querySelector('#kt_modal_create_app'); + + if (!modalEl) { + return; + } + + modal = new bootstrap.Modal(modalEl); + + stepper = document.querySelector('#kt_modal_create_app_stepper'); + form = document.querySelector('#kt_modal_create_app_form'); + formSubmitButton = stepper.querySelector('[data-kt-stepper-action="submit"]'); + formContinueButton = stepper.querySelector('[data-kt-stepper-action="next"]'); + + initStepper(); + initForm(); + initValidation(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTCreateApp.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-campaign.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-campaign.js new file mode 100644 index 0000000..bc12792 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-campaign.js @@ -0,0 +1,352 @@ +"use strict"; + +// Class definition +var KTCreateCampaign = function () { + // Elements + var modal; + var modalEl; + + var stepper; + var form; + var formSubmitButton; + var formContinueButton; + + // Variables + var stepperObj; + var validations = []; + + // Private Functions + var initStepper = function () { + // Initialize Stepper + stepperObj = new KTStepper(stepper); + + // Stepper change event(handle hiding submit button for the last step) + stepperObj.on('kt.stepper.changed', function (stepper) { + if (stepperObj.getCurrentStepIndex() === 4) { + formSubmitButton.classList.remove('d-none'); + formSubmitButton.classList.add('d-inline-block'); + formContinueButton.classList.add('d-none'); + } else if (stepperObj.getCurrentStepIndex() === 5) { + formSubmitButton.classList.add('d-none'); + formContinueButton.classList.add('d-none'); + } else { + formSubmitButton.classList.remove('d-inline-block'); + formSubmitButton.classList.remove('d-none'); + formContinueButton.classList.remove('d-none'); + } + }); + + // Validation before going to next page + stepperObj.on('kt.stepper.next', function (stepper) { + console.log('stepper.next'); + + // Validate form before change stepper step + var validator = validations[stepper.getCurrentStepIndex() - 1]; // get validator for currnt step + + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + stepper.goNext(); + + //KTUtil.scrollTop(); + } else { + // Show error message popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-light" + } + }).then(function () { + //KTUtil.scrollTop(); + }); + } + }); + } else { + stepper.goNext(); + + KTUtil.scrollTop(); + } + }); + + // Prev event + stepperObj.on('kt.stepper.previous', function (stepper) { + console.log('stepper.previous'); + + stepper.goPrevious(); + KTUtil.scrollTop(); + }); + + formSubmitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Disable button to avoid multiple click + formSubmitButton.disabled = true; + + // Show loading indication + formSubmitButton.setAttribute('data-kt-indicator', 'on'); + + // Simulate form submission + setTimeout(function () { + // Hide loading indication + formSubmitButton.removeAttribute('data-kt-indicator'); + + // Enable button + formSubmitButton.disabled = false; + + stepperObj.goNext(); + //KTUtil.scrollTop(); + }, 2000); + }); + } + + // Init form inputs + var initForm = function () { + // Init age slider + var slider = document.querySelector("#kt_modal_create_campaign_age_slider"); + var valueMin = document.querySelector("#kt_modal_create_campaign_age_min"); + var valueMax = document.querySelector("#kt_modal_create_campaign_age_max"); + + noUiSlider.create(slider, { + start: [18, 40], + connect: true, + range: { + "min": 13, + "max": 80 + } + }); + + slider.noUiSlider.on("update", function (values, handle) { + if (handle) { + valueMax.innerHTML = Math.round(values[handle]); + } else { + valueMin.innerHTML = Math.round(values[handle]); + } + }); + + // Init tagify + var tagifyElement = document.querySelector('#kt_modal_create_campaign_location'); + var tagify = new Tagify(tagifyElement, { + delimiters: null, + templates: { + tag: function (tagData) { + const countryPath = tagifyElement.getAttribute("data-kt-flags-path") + tagData.value.toLowerCase().replace(/\s+/g, '-') + '.svg'; + try { + // _ESCAPE_START_ + return ` + +
+ ${tagData.code ? + `` : '' + } + ${tagData.value} +
+
` + // _ESCAPE_END_ + } + catch (err) { } + }, + + dropdownItem: function (tagData) { + const countryPath = tagifyElement.getAttribute("data-kt-flags-path") + tagData.value.toLowerCase().replace(/\s+/g, '-') + '.svg'; + try { + // _ESCAPE_START_ + return `
+ + ${tagData.value} +
` + // _ESCAPE_END_ + } + catch (err) { } + } + }, + enforceWhitelist: true, + whitelist: [ + { value: 'Argentina', code: 'AR' }, + { value: 'Australia', code: 'AU', searchBy: 'beach, sub-tropical' }, + { value: 'Austria', code: 'AT' }, + { value: 'Brazil', code: 'BR' }, + { value: 'China', code: 'CN' }, + { value: 'Egypt', code: 'EG' }, + { value: 'Finland', code: 'FI' }, + { value: 'France', code: 'FR' }, + { value: 'Germany', code: 'DE' }, + { value: 'Hong Kong', code: 'HK' }, + { value: 'Hungary', code: 'HU' }, + { value: 'Iceland', code: 'IS' }, + { value: 'India', code: 'IN' }, + { value: 'Indonesia', code: 'ID' }, + { value: 'Italy', code: 'IT' }, + { value: 'Jamaica', code: 'JM' }, + { value: 'Japan', code: 'JP' }, + { value: 'Jersey', code: 'JE' }, + { value: 'Luxembourg', code: 'LU' }, + { value: 'Mexico', code: 'MX' }, + { value: 'Netherlands', code: 'NL' }, + { value: 'New Zealand', code: 'NZ' }, + { value: 'Norway', code: 'NO' }, + { value: 'Philippines', code: 'PH' }, + { value: 'Singapore', code: 'SG' }, + { value: 'South Korea', code: 'KR' }, + { value: 'Sweden', code: 'SE' }, + { value: 'Switzerland', code: 'CH' }, + { value: 'Thailand', code: 'TH' }, + { value: 'Ukraine', code: 'UA' }, + { value: 'United Kingdom', code: 'GB' }, + { value: 'United States', code: 'US' }, + { value: 'Vietnam', code: 'VN' } + ], + dropdown: { + enabled: 1, // suggest tags after a single character input + classname: 'extra-properties' // custom class for the suggestions dropdown + } // map tags' values to this property name, so this property will be the actual value and not the printed value on the screen + }) + + // add the first 2 tags and makes them readonly + var tagsToAdd = tagify.settings.whitelist.slice(0, 2); + tagify.addTags(tagsToAdd); + + // Init flatpickr + $("#kt_modal_create_campaign_datepicker").flatpickr({ + altInput: true, + enableTime: true, + altFormat: "F j, Y H:i", + dateFormat: "Y-m-d H:i", + mode: "range" + }); + + // Init dropzone + var myDropzone = new Dropzone("#kt_modal_create_campaign_files_upload", { + url: "https://keenthemes.com/scripts/void.php", // Set the url for your upload script location + paramName: "file", // The name that will be used to transfer the file + maxFiles: 10, + maxFilesize: 10, // MB + addRemoveLinks: true, + accept: function(file, done) { + if (file.name == "wow.jpg") { + done("Naha, you don't."); + } else { + done(); + } + } + }); + + // Handle campaign duration options + const allDuration = document.querySelector('#kt_modal_create_campaign_duration_all'); + const fixedDuration = document.querySelector('#kt_modal_create_campaign_duration_fixed'); + const datepicker = document.querySelector('#kt_modal_create_campaign_datepicker'); + + [allDuration, fixedDuration].forEach(option => { + option.addEventListener('click', e => { + if (option.classList.contains('active')) { + return; + } + allDuration.classList.toggle('active'); + fixedDuration.classList.toggle('active'); + + if (fixedDuration.classList.contains('active')) { + datepicker.nextElementSibling.classList.remove('d-none'); + } else { + datepicker.nextElementSibling.classList.add('d-none'); + } + }); + }); + + // Init budget slider + var budgetSlider = document.querySelector("#kt_modal_create_campaign_budget_slider"); + var budgetValue = document.querySelector("#kt_modal_create_campaign_budget_label"); + + noUiSlider.create(budgetSlider, { + start: [5], + connect: true, + range: { + "min": 1, + "max": 500 + } + }); + + budgetSlider.noUiSlider.on("update", function (values, handle) { + budgetValue.innerHTML = Math.round(values[handle]); + if (handle) { + budgetValue.innerHTML = Math.round(values[handle]); + } + }); + + // Handle create new campaign button + const restartButton = document.querySelector('#kt_modal_create_campaign_create_new'); + restartButton.addEventListener('click', function () { + form.reset(); + stepperObj.goTo(1); + }); + } + + var initValidation = function () { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + // Step 1 + validations.push(FormValidation.formValidation( + form, + { + fields: { + campaign_name: { + validators: { + notEmpty: { + message: 'App name is required' + } + } + }, + avatar: { + validators: { + file: { + extension: 'png,jpg,jpeg', + type: 'image/jpeg,image/png', + message: 'Please choose a png, jpg or jpeg files only', + }, + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + )); + } + + return { + // Public Functions + init: function () { + // Elements + modalEl = document.querySelector('#kt_modal_create_campaign'); + + if (!modalEl) { + return; + } + + modal = new bootstrap.Modal(modalEl); + + stepper = document.querySelector('#kt_modal_create_campaign_stepper'); + form = document.querySelector('#kt_modal_create_campaign_stepper_form'); + formSubmitButton = stepper.querySelector('[data-kt-stepper-action="submit"]'); + formContinueButton = stepper.querySelector('[data-kt-stepper-action="next"]'); + + initStepper(); + initForm(); + initValidation(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTCreateCampaign.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/budget.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/budget.js new file mode 100644 index 0000000..f5b476e --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/budget.js @@ -0,0 +1,140 @@ +"use strict"; + +// Class definition +var KTModalCreateProjectBudget = function () { + // Variables + var nextButton; + var previousButton; + var validator; + var form; + var stepper; + + // Private functions + var initValidation = function() { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'budget_setup': { + validators: { + notEmpty: { + message: 'Budget amount is required' + }, + callback: { + message: 'The budget amount must be greater than $100', + callback: function(input) { + var currency = input.value; + currency = currency.replace(/[$,]+/g,""); + + if (parseFloat(currency) < 100) { + return false; + } + } + } + } + }, + 'budget_usage': { + validators: { + notEmpty: { + message: 'Budget usage type is required' + } + } + }, + 'budget_allow': { + validators: { + notEmpty: { + message: 'Allowing budget is required' + } + } + } + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Revalidate on change + KTDialer.getInstance(form.querySelector('#kt_modal_create_project_budget_setup')).on('kt.dialer.changed', function() { + // Revalidate the field when an option is chosen + validator.revalidateField('budget_setup'); + }); + } + + var handleForm = function() { + nextButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Disable button to avoid multiple click + nextButton.disabled = true; + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + nextButton.setAttribute('data-kt-indicator', 'on'); + + // Simulate form submission + setTimeout(function() { + // Simulate form submission + nextButton.removeAttribute('data-kt-indicator'); + + // Enable button + nextButton.disabled = false; + + // Go to next step + stepper.goNext(); + }, 1500); + } else { + // Enable button + nextButton.disabled = false; + + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + previousButton.addEventListener('click', function () { + stepper.goPrevious(); + }); + } + + return { + // Public functions + init: function () { + form = KTModalCreateProject.getForm(); + stepper = KTModalCreateProject.getStepperObj(); + nextButton = KTModalCreateProject.getStepper().querySelector('[data-kt-element="budget-next"]'); + previousButton = KTModalCreateProject.getStepper().querySelector('[data-kt-element="budget-previous"]'); + + initValidation(); + handleForm(); + } + }; +}(); + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + window.KTModalCreateProjectBudget = module.exports = KTModalCreateProjectBudget; +} diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/complete.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/complete.js new file mode 100644 index 0000000..b8c569f --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/complete.js @@ -0,0 +1,32 @@ +"use strict"; + +// Class definition +var KTModalCreateProjectComplete = function () { + // Variables + var startButton; + var form; + var stepper; + + // Private functions + var handleForm = function() { + startButton.addEventListener('click', function () { + stepper.goTo(1); + }); + } + + return { + // Public functions + init: function () { + form = KTModalCreateProject.getForm(); + stepper = KTModalCreateProject.getStepperObj(); + startButton = KTModalCreateProject.getStepper().querySelector('[data-kt-element="complete-start"]'); + + handleForm(); + } + }; +}(); + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + window.KTModalCreateProjectComplete = module.exports = KTModalCreateProjectComplete; +} diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/files.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/files.js new file mode 100644 index 0000000..027ec26 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/files.js @@ -0,0 +1,77 @@ +"use strict"; + +// Class definition +var KTModalCreateProjectFiles = function () { + // Variables + var nextButton; + var previousButton; + var form; + var stepper; + + // Private functions + var initForm = function() { + // Project logo + // For more info about Dropzone plugin visit: https://www.dropzonejs.com/#usage + var myDropzone = new Dropzone("#kt_modal_create_project_files_upload", { + url: "https://keenthemes.com/scripts/void.php", // Set the url for your upload script location + paramName: "file", // The name that will be used to transfer the file + maxFiles: 10, + maxFilesize: 10, // MB + addRemoveLinks: true, + accept: function(file, done) { + if (file.name == "justinbieber.jpg") { + done("Naha, you don't."); + } else { + done(); + } + } + }); + } + + var handleForm = function() { + nextButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Disable button to avoid multiple click + nextButton.disabled = true; + + // Show loading indication + nextButton.setAttribute('data-kt-indicator', 'on'); + + // Simulate form submission + setTimeout(function() { + // Hide loading indication + nextButton.removeAttribute('data-kt-indicator'); + + // Enable button + nextButton.disabled = false; + + // Go to next step + stepper.goNext(); + }, 1500); + }); + + previousButton.addEventListener('click', function () { + stepper.goPrevious(); + }); + } + + return { + // Public functions + init: function () { + form = KTModalCreateProject.getForm(); + stepper = KTModalCreateProject.getStepperObj(); + nextButton = KTModalCreateProject.getStepper().querySelector('[data-kt-element="files-next"]'); + previousButton = KTModalCreateProject.getStepper().querySelector('[data-kt-element="files-previous"]'); + + initForm(); + handleForm(); + } + }; +}(); + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + window.KTModalCreateProjectFiles = module.exports = KTModalCreateProjectFiles; +} diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/main.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/main.js new file mode 100644 index 0000000..4310265 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/main.js @@ -0,0 +1,58 @@ +"use strict"; + +// Class definition +var KTModalCreateProject = function () { + // Private variables + var stepper; + var stepperObj; + var form; + + // Private functions + var initStepper = function () { + // Initialize Stepper + stepperObj = new KTStepper(stepper); + } + + return { + // Public functions + init: function () { + stepper = document.querySelector('#kt_modal_create_project_stepper'); + form = document.querySelector('#kt_modal_create_project_form'); + + initStepper(); + }, + + getStepperObj: function () { + return stepperObj; + }, + + getStepper: function () { + return stepper; + }, + + getForm: function () { + return form; + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + if (!document.querySelector('#kt_modal_create_project')) { + return; + } + + KTModalCreateProject.init(); + KTModalCreateProjectType.init(); + KTModalCreateProjectBudget.init(); + KTModalCreateProjectSettings.init(); + KTModalCreateProjectTeam.init(); + KTModalCreateProjectTargets.init(); + KTModalCreateProjectFiles.init(); + KTModalCreateProjectComplete.init(); +}); + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + window.KTModalCreateProject = module.exports = KTModalCreateProject; +} diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/settings.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/settings.js new file mode 100644 index 0000000..e4ba4ab --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/settings.js @@ -0,0 +1,171 @@ +"use strict"; + +// Class definition +var KTModalCreateProjectSettings = function () { + // Variables + var nextButton; + var previousButton; + var validator; + var form; + var stepper; + + // Private functions + var initForm = function() { + // Project logo + // For more info about Dropzone plugin visit: https://www.dropzonejs.com/#usage + var myDropzone = new Dropzone("#kt_modal_create_project_settings_logo", { + url: "https://keenthemes.com/scripts/void.php", // Set the url for your upload script location + paramName: "file", // The name that will be used to transfer the file + maxFiles: 10, + maxFilesize: 10, // MB + addRemoveLinks: true, + accept: function(file, done) { + if (file.name == "justinbieber.jpg") { + done("Naha, you don't."); + } else { + done(); + } + } + }); + + // Due date. For more info, please visit the official plugin site: https://flatpickr.js.org/ + var releaseDate = $(form.querySelector('[name="settings_release_date"]')); + releaseDate.flatpickr({ + enableTime: true, + dateFormat: "d, M Y, H:i", + }); + + // Expiry year. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="settings_customer"]')).on('change', function() { + // Revalidate the field when an option is chosen + validator.revalidateField('settings_customer'); + }); + } + + var initValidation = function() { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'settings_name': { + validators: { + notEmpty: { + message: 'Project name is required' + } + } + }, + 'settings_customer': { + validators: { + notEmpty: { + message: 'Customer is required' + } + } + }, + 'settings_description': { + validators: { + notEmpty: { + message: 'Description is required' + } + } + }, + 'settings_release_date': { + validators: { + notEmpty: { + message: 'Release date is required' + } + } + }, + 'settings_notifications[]': { + validators: { + notEmpty: { + message: 'Notifications are required' + } + } + } + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + } + + var handleForm = function() { + nextButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Disable button to avoid multiple click + nextButton.disabled = true; + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + nextButton.setAttribute('data-kt-indicator', 'on'); + + // Simulate form submission + setTimeout(function() { + // Simulate form submission + nextButton.removeAttribute('data-kt-indicator'); + + // Enable button + nextButton.disabled = false; + + // Go to next step + stepper.goNext(); + }, 1500); + } else { + // Enable button + nextButton.disabled = false; + + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + previousButton.addEventListener('click', function () { + // Go to previous step + stepper.goPrevious(); + }); + } + + return { + // Public functions + init: function () { + form = KTModalCreateProject.getForm(); + stepper = KTModalCreateProject.getStepperObj(); + nextButton = KTModalCreateProject.getStepper().querySelector('[data-kt-element="settings-next"]'); + previousButton = KTModalCreateProject.getStepper().querySelector('[data-kt-element="settings-previous"]'); + + initForm(); + initValidation(); + handleForm(); + } + }; +}(); + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + window.KTModalCreateProjectSettings = module.exports = KTModalCreateProjectSettings; +} diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/targets.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/targets.js new file mode 100644 index 0000000..6e73651 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/targets.js @@ -0,0 +1,176 @@ +"use strict"; + +// Class definition +var KTModalCreateProjectTargets = function () { + // Variables + var nextButton; + var previousButton; + var validator; + var form; + var stepper; + + // Private functions + var initForm = function() { + // Tags. For more info, please visit the official plugin site: https://yaireo.github.io/tagify/ + var tags = new Tagify(form.querySelector('[name="target_tags"]'), { + whitelist: ["Important", "Urgent", "High", "Medium", "Low"], + maxTags: 5, + dropdown: { + maxItems: 10, // <- mixumum allowed rendered suggestions + enabled: 0, // <- show suggestions on focus + closeOnSelect: false // <- do not hide the suggestions dropdown once an item has been selected + } + }); + tags.on("change", function(){ + // Revalidate the field when an option is chosen + validator.revalidateField('tags'); + }); + + // Due date. For more info, please visit the official plugin site: https://flatpickr.js.org/ + var dueDate = $(form.querySelector('[name="target_due_date"]')); + dueDate.flatpickr({ + enableTime: true, + dateFormat: "d, M Y, H:i", + }); + + // Expiry year. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="target_assign"]')).on('change', function() { + // Revalidate the field when an option is chosen + validator.revalidateField('target_assign'); + }); + } + + var initValidation = function() { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'target_title': { + validators: { + notEmpty: { + message: 'Target title is required' + } + } + }, + 'target_assign': { + validators: { + notEmpty: { + message: 'Customer is required' + } + } + }, + 'target_due_date': { + validators: { + notEmpty: { + message: 'Due date is required' + } + } + }, + 'target_tags': { + validators: { + notEmpty: { + message: 'Target tags are required' + } + } + }, + 'target_allow': { + validators: { + notEmpty: { + message: 'Allowing target is required' + } + } + }, + 'target_notifications[]': { + validators: { + notEmpty: { + message: 'Notifications are required' + } + } + } + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + } + + var handleForm = function() { + nextButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Disable button to avoid multiple click + nextButton.disabled = true; + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + nextButton.setAttribute('data-kt-indicator', 'on'); + + // Simulate form submission + setTimeout(function() { + // Simulate form submission + nextButton.removeAttribute('data-kt-indicator'); + + // Enable button + nextButton.disabled = false; + + // Go to next step + stepper.goNext(); + }, 1500); + } else { + // Enable button + nextButton.disabled = false; + + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + previousButton.addEventListener('click', function () { + // Go to previous step + stepper.goPrevious(); + }); + } + + return { + // Public functions + init: function () { + form = KTModalCreateProject.getForm(); + stepper = KTModalCreateProject.getStepperObj(); + nextButton = KTModalCreateProject.getStepper().querySelector('[data-kt-element="targets-next"]'); + previousButton = KTModalCreateProject.getStepper().querySelector('[data-kt-element="targets-previous"]'); + + initForm(); + initValidation(); + handleForm(); + } + }; +}(); + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + window.KTModalCreateProjectTargets = module.exports = KTModalCreateProjectTargets; +} \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/team.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/team.js new file mode 100644 index 0000000..7b9ae0f --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/team.js @@ -0,0 +1,57 @@ +"use strict"; + +// Class definition +var KTModalCreateProjectTeam = function () { + // Variables + var nextButton; + var previousButton; + var form; + var stepper; + + // Private functions + var handleForm = function() { + nextButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Disable button to avoid multiple click + nextButton.disabled = true; + + // Show loading indication + nextButton.setAttribute('data-kt-indicator', 'on'); + + // Simulate form submission + setTimeout(function() { + // Enable button + nextButton.disabled = false; + + // Simulate form submission + nextButton.removeAttribute('data-kt-indicator'); + + // Go to next step + stepper.goNext(); + }, 1500); + }); + + previousButton.addEventListener('click', function () { + stepper.goPrevious(); + }); + } + + return { + // Public functions + init: function () { + form = KTModalCreateProject.getForm(); + stepper = KTModalCreateProject.getStepperObj(); + nextButton = KTModalCreateProject.getStepper().querySelector('[data-kt-element="team-next"]'); + previousButton = KTModalCreateProject.getStepper().querySelector('[data-kt-element="team-previous"]'); + + handleForm(); + } + }; +}(); + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + window.KTModalCreateProjectTeam = module.exports = KTModalCreateProjectTeam; +} \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/type.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/type.js new file mode 100644 index 0000000..06e38dd --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/create-project/type.js @@ -0,0 +1,104 @@ +"use strict"; + +// Class definition +var KTModalCreateProjectType = function () { + // Variables + var nextButton; + var validator; + var form; + var stepper; + + // Private functions + var initValidation = function() { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'project_type': { + validators: { + notEmpty: { + message: 'Project type is required' + } + } + } + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + } + + var handleForm = function() { + nextButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Disable button to avoid multiple click + nextButton.disabled = true; + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + e.preventDefault(); + + if (status == 'Valid') { + // Show loading indication + nextButton.setAttribute('data-kt-indicator', 'on'); + + // Simulate form submission + setTimeout(function() { + // Simulate form submission + nextButton.removeAttribute('data-kt-indicator'); + + // Enable button + nextButton.disabled = false; + + // Go to next step + stepper.goNext(); + }, 1000); + } else { + // Enable button + nextButton.disabled = false; + + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + return { + // Public functions + init: function () { + form = KTModalCreateProject.getForm(); + stepper = KTModalCreateProject.getStepperObj(); + nextButton = KTModalCreateProject.getStepper().querySelector('[data-kt-element="type-next"]'); + + initValidation(); + handleForm(); + } + }; +}(); + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + window.KTModalCreateProjectType = module.exports = KTModalCreateProjectType; +} diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/new-address.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/new-address.js new file mode 100644 index 0000000..4cce217 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/new-address.js @@ -0,0 +1,211 @@ +"use strict"; + +// Class definition +var KTModalNewAddress = function () { + var submitButton; + var cancelButton; + var validator; + var form; + var modal; + var modalEl; + + // Init form inputs + var initForm = function() { + // Team assign. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="country"]')).select2().on('change', function() { + // Revalidate the field when an option is chosen + validator.revalidateField('country'); + }); + } + + // Handle form validation and submittion + var handleForm = function() { + // Stepper custom navigation + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'first-name': { + validators: { + notEmpty: { + message: 'First name is required' + } + } + }, + 'last-name': { + validators: { + notEmpty: { + message: 'Last name is required' + } + } + }, + 'country': { + validators: { + notEmpty: { + message: 'Country is required' + } + } + }, + 'address1': { + validators: { + notEmpty: { + message: 'Address 1 is required' + } + } + }, + 'address2': { + validators: { + notEmpty: { + message: 'Address 2 is required' + } + } + }, + 'city': { + validators: { + notEmpty: { + message: 'City is required' + } + } + }, + 'state': { + validators: { + notEmpty: { + message: 'State is required' + } + } + }, + 'postcode': { + validators: { + notEmpty: { + message: 'Postcode is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Action buttons + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate ajax process + setTimeout(function() { + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show success message. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show error message. + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + return { + // Public functions + init: function () { + // Elements + modalEl = document.querySelector('#kt_modal_new_address'); + + if (!modalEl) { + return; + } + + modal = new bootstrap.Modal(modalEl); + + form = document.querySelector('#kt_modal_new_address_form'); + submitButton = document.getElementById('kt_modal_new_address_submit'); + cancelButton = document.getElementById('kt_modal_new_address_cancel'); + + initForm(); + handleForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalNewAddress.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/new-card.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/new-card.js new file mode 100644 index 0000000..f13a7bf --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/new-card.js @@ -0,0 +1,213 @@ +"use strict"; + +// Class definition +var KTModalNewCard = function () { + var submitButton; + var cancelButton; + var validator; + var form; + var modal; + var modalEl; + + // Init form inputs + var initForm = function() { + // Expiry month. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="card_expiry_month"]')).on('change', function() { + // Revalidate the field when an option is chosen + validator.revalidateField('card_expiry_month'); + }); + + // Expiry year. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="card_expiry_year"]')).on('change', function() { + // Revalidate the field when an option is chosen + validator.revalidateField('card_expiry_year'); + }); + } + + // Handle form validation and submittion + var handleForm = function() { + // Stepper custom navigation + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'card_name': { + validators: { + notEmpty: { + message: 'Name on card is required' + } + } + }, + 'card_number': { + validators: { + notEmpty: { + message: 'Card member is required' + }, + creditCard: { + message: 'Card number is not valid' + } + } + }, + 'card_expiry_month': { + validators: { + notEmpty: { + message: 'Month is required' + } + } + }, + 'card_expiry_year': { + validators: { + notEmpty: { + message: 'Year is required' + } + } + }, + 'card_cvv': { + validators: { + notEmpty: { + message: 'CVV is required' + }, + digits: { + message: 'CVV must contain only digits' + }, + stringLength: { + min: 3, + max: 4, + message: 'CVV must contain 3 to 4 digits only' + } + } + } + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Action buttons + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function() { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Show success message. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + // Show error message. + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + return { + // Public functions + init: function () { + // Elements + modalEl = document.querySelector('#kt_modal_new_card'); + + if (!modalEl) { + return; + } + + modal = new bootstrap.Modal(modalEl); + + form = document.querySelector('#kt_modal_new_card_form'); + submitButton = document.getElementById('kt_modal_new_card_submit'); + cancelButton = document.getElementById('kt_modal_new_card_cancel'); + + initForm(); + handleForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalNewCard.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/new-target.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/new-target.js new file mode 100644 index 0000000..da1bf6f --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/new-target.js @@ -0,0 +1,211 @@ +"use strict"; + +// Class definition +var KTModalNewTarget = function () { + var submitButton; + var cancelButton; + var validator; + var form; + var modal; + var modalEl; + + // Init form inputs + var initForm = function() { + // Tags. For more info, please visit the official plugin site: https://yaireo.github.io/tagify/ + var tags = new Tagify(form.querySelector('[name="tags"]'), { + whitelist: ["Important", "Urgent", "High", "Medium", "Low"], + maxTags: 5, + dropdown: { + maxItems: 10, // <- mixumum allowed rendered suggestions + enabled: 0, // <- show suggestions on focus + closeOnSelect: false // <- do not hide the suggestions dropdown once an item has been selected + } + }); + tags.on("change", function(){ + // Revalidate the field when an option is chosen + validator.revalidateField('tags'); + }); + + // Due date. For more info, please visit the official plugin site: https://flatpickr.js.org/ + var dueDate = $(form.querySelector('[name="due_date"]')); + dueDate.flatpickr({ + enableTime: true, + dateFormat: "d, M Y, H:i", + }); + + // Team assign. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="team_assign"]')).on('change', function() { + // Revalidate the field when an option is chosen + validator.revalidateField('team_assign'); + }); + } + + // Handle form validation and submittion + var handleForm = function() { + // Stepper custom navigation + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + target_title: { + validators: { + notEmpty: { + message: 'Target title is required' + } + } + }, + target_assign: { + validators: { + notEmpty: { + message: 'Target assign is required' + } + } + }, + target_due_date: { + validators: { + notEmpty: { + message: 'Target due date is required' + } + } + }, + target_tags: { + validators: { + notEmpty: { + message: 'Target tags are required' + } + } + }, + 'targets_notifications[]': { + validators: { + notEmpty: { + message: 'Please select at least one communication method' + } + } + }, + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Action buttons + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + setTimeout(function() { + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show success message. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show error message. + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + return { + // Public functions + init: function () { + // Elements + modalEl = document.querySelector('#kt_modal_new_target'); + + if (!modalEl) { + return; + } + + modal = new bootstrap.Modal(modalEl); + + form = document.querySelector('#kt_modal_new_target_form'); + submitButton = document.getElementById('kt_modal_new_target_submit'); + cancelButton = document.getElementById('kt_modal_new_target_cancel'); + + initForm(); + handleForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalNewTarget.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/offer-a-deal/complete.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/offer-a-deal/complete.js new file mode 100644 index 0000000..98b7229 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/offer-a-deal/complete.js @@ -0,0 +1,32 @@ +"use strict"; + +// Class definition +var KTModalOfferADealComplete = function () { + // Variables + var startButton; + var form; + var stepper; + + // Private functions + var handleForm = function() { + startButton.addEventListener('click', function () { + stepper.goTo(1); + }); + } + + return { + // Public functions + init: function () { + form = KTModalOfferADeal.getForm(); + stepper = KTModalOfferADeal.getStepperObj(); + startButton = KTModalOfferADeal.getStepper().querySelector('[data-kt-element="complete-start"]'); + + handleForm(); + } + }; +}(); + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + window.KTModalOfferADealComplete = module.exports = KTModalOfferADealComplete; +} \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/offer-a-deal/details.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/offer-a-deal/details.js new file mode 100644 index 0000000..49dd6d9 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/offer-a-deal/details.js @@ -0,0 +1,147 @@ +"use strict"; + +// Class definition +var KTModalOfferADealDetails = function () { + // Variables + var nextButton; + var previousButton; + var validator; + var form; + var stepper; + + // Private functions + var initForm = function() { + // Due date. For more info, please visit the official plugin site: https://flatpickr.js.org/ + var dueDate = $(form.querySelector('[name="details_activation_date"]')); + dueDate.flatpickr({ + enableTime: true, + dateFormat: "d, M Y, H:i", + }); + + // Expiry year. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="details_customer"]')).on('change', function() { + // Revalidate the field when an option is chosen + validator.revalidateField('details_customer'); + }); + } + + var initValidation = function() { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'details_customer': { + validators: { + notEmpty: { + message: 'Customer is required' + } + } + }, + 'details_title': { + validators: { + notEmpty: { + message: 'Deal title is required' + } + } + }, + 'details_activation_date': { + validators: { + notEmpty: { + message: 'Activation date is required' + } + } + }, + 'details_notifications[]': { + validators: { + notEmpty: { + message: 'Notifications are required' + } + } + } + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + } + + var handleForm = function() { + nextButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Disable button to avoid multiple click + nextButton.disabled = true; + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + nextButton.setAttribute('data-kt-indicator', 'on'); + + // Simulate form submission + setTimeout(function() { + // Simulate form submission + nextButton.removeAttribute('data-kt-indicator'); + + // Enable button + nextButton.disabled = false; + + // Go to next step + stepper.goNext(); + }, 1500); + } else { + // Enable button + nextButton.disabled = false; + + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + previousButton.addEventListener('click', function () { + // Go to previous step + stepper.goPrevious(); + }); + } + + return { + // Public functions + init: function () { + form = KTModalOfferADeal.getForm(); + stepper = KTModalOfferADeal.getStepperObj(); + nextButton = KTModalOfferADeal.getStepper().querySelector('[data-kt-element="details-next"]'); + previousButton = KTModalOfferADeal.getStepper().querySelector('[data-kt-element="details-previous"]'); + + initForm(); + initValidation(); + handleForm(); + } + }; +}(); + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + window.KTModalOfferADealDetails = module.exports = KTModalOfferADealDetails; +} \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/offer-a-deal/finance.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/offer-a-deal/finance.js new file mode 100644 index 0000000..fe0457b --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/offer-a-deal/finance.js @@ -0,0 +1,140 @@ +"use strict"; + +// Class definition +var KTModalOfferADealFinance = function () { + // Variables + var nextButton; + var previousButton; + var validator; + var form; + var stepper; + + // Private functions + var initValidation = function() { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'finance_setup': { + validators: { + notEmpty: { + message: 'Amount is required' + }, + callback: { + message: 'The amount must be greater than $100', + callback: function(input) { + var currency = input.value; + currency = currency.replace(/[$,]+/g,""); + + if (parseFloat(currency) < 100) { + return false; + } + } + } + } + }, + 'finance_usage': { + validators: { + notEmpty: { + message: 'Usage type is required' + } + } + }, + 'finance_allow': { + validators: { + notEmpty: { + message: 'Allowing budget is required' + } + } + } + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Revalidate on change + KTDialer.getInstance(form.querySelector('#kt_modal_finance_setup')).on('kt.dialer.changed', function() { + // Revalidate the field when an option is chosen + validator.revalidateField('finance_setup'); + }); + } + + var handleForm = function() { + nextButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Disable button to avoid multiple click + nextButton.disabled = true; + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + nextButton.setAttribute('data-kt-indicator', 'on'); + + // Simulate form submission + setTimeout(function() { + // Simulate form submission + nextButton.removeAttribute('data-kt-indicator'); + + // Enable button + nextButton.disabled = false; + + // Go to next step + stepper.goNext(); + }, 1500); + } else { + // Enable button + nextButton.disabled = false; + + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + previousButton.addEventListener('click', function () { + stepper.goPrevious(); + }); + } + + return { + // Public functions + init: function () { + form = KTModalOfferADeal.getForm(); + stepper = KTModalOfferADeal.getStepperObj(); + nextButton = KTModalOfferADeal.getStepper().querySelector('[data-kt-element="finance-next"]'); + previousButton = KTModalOfferADeal.getStepper().querySelector('[data-kt-element="finance-previous"]'); + + initValidation(); + handleForm(); + } + }; +}(); + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + window.KTModalOfferADealFinance = module.exports = KTModalOfferADealFinance; +} \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/offer-a-deal/main.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/offer-a-deal/main.js new file mode 100644 index 0000000..324a318 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/offer-a-deal/main.js @@ -0,0 +1,55 @@ +"use strict"; + +// Class definition +var KTModalOfferADeal = function () { + // Private variables + var stepper; + var stepperObj; + var form; + + // Private functions + var initStepper = function () { + // Initialize Stepper + stepperObj = new KTStepper(stepper); + } + + return { + // Public functions + init: function () { + stepper = document.querySelector('#kt_modal_offer_a_deal_stepper'); + form = document.querySelector('#kt_modal_offer_a_deal_form'); + + initStepper(); + }, + + getStepper: function () { + return stepper; + }, + + getStepperObj: function () { + return stepperObj; + }, + + getForm: function () { + return form; + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + if (!document.querySelector('#kt_modal_offer_a_deal')) { + return; + } + + KTModalOfferADeal.init(); + KTModalOfferADealType.init(); + KTModalOfferADealDetails.init(); + KTModalOfferADealFinance.init(); + KTModalOfferADealComplete.init(); +}); + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + window.KTModalOfferADeal = module.exports = KTModalOfferADeal; +} \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/offer-a-deal/type.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/offer-a-deal/type.js new file mode 100644 index 0000000..5f896d1 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/offer-a-deal/type.js @@ -0,0 +1,103 @@ +"use strict"; + +// Class definition +var KTModalOfferADealType = function () { + // Variables + var nextButton; + var validator; + var form; + var stepper; + + // Private functions + var initValidation = function() { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'offer_type': { + validators: { + notEmpty: { + message: 'Offer type is required' + } + } + } + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + } + + var handleForm = function() { + nextButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Disable button to avoid multiple click + nextButton.disabled = true; + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + nextButton.setAttribute('data-kt-indicator', 'on'); + + // Simulate form submission + setTimeout(function() { + // Simulate form submission + nextButton.removeAttribute('data-kt-indicator'); + + // Enable button + nextButton.disabled = false; + + // Go to next step + stepper.goNext(); + }, 1000); + } else { + // Enable button + nextButton.disabled = false; + + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + return { + // Public functions + init: function () { + form = KTModalOfferADeal.getForm(); + stepper = KTModalOfferADeal.getStepperObj(); + nextButton = KTModalOfferADeal.getStepper().querySelector('[data-kt-element="type-next"]'); + + initValidation(); + handleForm(); + } + }; +}(); + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + window.KTModalOfferADealType = module.exports = KTModalOfferADealType; +} \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/select-location.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/select-location.js new file mode 100644 index 0000000..f48f4be --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/select-location.js @@ -0,0 +1,117 @@ +"use strict"; + +// Class definition +var KTModalSelectLocation = function () { + // Private variables + var locationSelectTarget; + var locationSelectButton; + + var modal; + var selectedlocation = ''; + var mapInitialized = false; + + // Private functions + var initMap = function() { + // Check if Leaflet is included + if (!L) { + return; + } + + // Define Map Location + var leaflet = L.map('kt_modal_select_location_map', { + center: [40.725, -73.985], + zoom: 30 + }); + + // Init Leaflet Map. For more info check the plugin's documentation: https://leafletjs.com/ + L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { + attribution: '© OpenStreetMap contributors' + }).addTo(leaflet); + + // Set Geocoding + var geocodeService; + if (typeof L.esri.Geocoding === 'undefined') { + geocodeService = L.esri.geocodeService(); + } else { + geocodeService = L.esri.Geocoding.geocodeService(); + } + + // Define Marker Layer + var markerLayer = L.layerGroup().addTo(leaflet); + + // Set Custom SVG icon marker + var leafletIcon = L.divIcon({ + html: ``, + bgPos: [10, 10], + iconAnchor: [20, 37], + popupAnchor: [0, -37], + className: 'leaflet-marker' + }); + + // Map onClick Action + leaflet.on('click', function (e) { + geocodeService.reverse().latlng(e.latlng).run(function (error, result) { + if (error) { + return; + } + markerLayer.clearLayers(); + selectedlocation = result.address.Match_addr; + L.marker(result.latlng, { icon: leafletIcon }).addTo(markerLayer).bindPopup(result.address.Match_addr, { closeButton: false }).openPopup(); + + // Show popup confirmation. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + html: '
Your selected - "' + selectedlocation + '".
' + 'Click on the "Apply" button to select this location.', + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + // Confirmed + }); + }); + }); + } + + var handleSelection = function() { + locationSelectButton.addEventListener('click', function() { + if (locationSelectTarget) { + if (locationSelectTarget.value) { + locationSelectTarget.value = selectedlocation; + } else { + locationSelectTarget.innerHTML = selectedlocation; + } + } + }); + } + + // Public methods + return { + init: function () { + // Elements + modal = document.querySelector('#kt_modal_select_location'); + + if (!modal) { + return; + } + + locationSelectTarget = document.querySelector('#kt_modal_select_location_target'); + locationSelectButton = document.querySelector('#kt_modal_select_location_button'); + + handleSelection(); + + modal.addEventListener('shown.bs.modal', function () { + if (!mapInitialized) { + initMap(); + mapInitialized = true; + } + }); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTModalSelectLocation.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/share-earn.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/share-earn.js new file mode 100644 index 0000000..3d44992 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/share-earn.js @@ -0,0 +1,47 @@ +"use strict"; + +// Class definition +var KTModalShareEarn = function () { + // Private functions + var handleForm = function() { + var button = document.querySelector('#kt_share_earn_link_copy_button'); + var input = document.querySelector('#kt_share_earn_link_input'); + var clipboard = new ClipboardJS(button); + + if (!clipboard) { + return; + } + + // Copy text to clipboard. For more info check the plugin's documentation: https://clipboardjs.com/ + clipboard.on('success', function(e) { + var buttonCaption = button.innerHTML; + //Add bgcolor + input.classList.add('bg-success'); + input.classList.add('text-inverse-success'); + + button.innerHTML = 'Copied!'; + + setTimeout(function() { + button.innerHTML = buttonCaption; + + // Remove bgcolor + input.classList.remove('bg-success'); + input.classList.remove('text-inverse-success'); + }, 3000); // 3seconds + + e.clearSelection(); + }); + } + + // Public methods + return { + init: function () { + handleForm(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTModalShareEarn.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/top-up-wallet.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/top-up-wallet.js new file mode 100644 index 0000000..52362ce --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/top-up-wallet.js @@ -0,0 +1,280 @@ +"use strict"; + +// Class definition +var KTModalTopUpWallet = function () { + // Elements + var modal; + var modalEl; + + var stepper; + var form; + var formSubmitButton; + var formContinueButton; + + // Variables + var stepperObj; + var validations = []; + + // Private Functions + var initStepper = function () { + // Initialize Stepper + stepperObj = new KTStepper(stepper); + + // Stepper change event(handle hiding submit button for the last step) + stepperObj.on('kt.stepper.changed', function (stepper) { + if (stepperObj.getCurrentStepIndex() === 4) { + formSubmitButton.classList.remove('d-none'); + formSubmitButton.classList.add('d-inline-block'); + formContinueButton.classList.add('d-none'); + } else if (stepperObj.getCurrentStepIndex() === 5) { + formSubmitButton.classList.add('d-none'); + formContinueButton.classList.add('d-none'); + } else { + formSubmitButton.classList.remove('d-inline-block'); + formSubmitButton.classList.remove('d-none'); + formContinueButton.classList.remove('d-none'); + } + }); + + // Validation before going to next page + stepperObj.on('kt.stepper.next', function (stepper) { + console.log('stepper.next'); + + // Validate form before change stepper step + var validator = validations[stepper.getCurrentStepIndex() - 1]; // get validator for currnt step + + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + stepper.goNext(); + + //KTUtil.scrollTop(); + } else { + // Show error message popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-light" + } + }).then(function () { + //KTUtil.scrollTop(); + }); + } + }); + } else { + stepper.goNext(); + + KTUtil.scrollTop(); + } + }); + + // Prev event + stepperObj.on('kt.stepper.previous', function (stepper) { + console.log('stepper.previous'); + + stepper.goPrevious(); + KTUtil.scrollTop(); + }); + + formSubmitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Disable button to avoid multiple click + formSubmitButton.disabled = true; + + // Show loading indication + formSubmitButton.setAttribute('data-kt-indicator', 'on'); + + // Simulate form submission + setTimeout(function () { + // Hide loading indication + formSubmitButton.removeAttribute('data-kt-indicator'); + + // Enable button + formSubmitButton.disabled = false; + + stepperObj.goNext(); + //KTUtil.scrollTop(); + }, 2000); + }); + } + + // Init form inputs + var initForm = function () { + // Handle currency swap logic + const currencyTypes = form.querySelectorAll('[name="currency_type"]'); + const targets = form.querySelectorAll('[data-kt-modal-top-up-wallet-option]'); + let value = "dollar"; + currencyTypes.forEach(currency => { + currency.addEventListener('change', e => { + value = e.target.value; + + targets.forEach(target => { + target.classList.add('d-none'); + + if(target.getAttribute('data-kt-modal-top-up-wallet-option') === value){ + target.classList.remove('d-none'); + } + }); + }); + }); + + // Handle top up wallet button + const restartButton = document.querySelector('#kt_modal_top_up_wallet_create_new'); + restartButton.addEventListener('click', function () { + form.reset(); + stepperObj.goTo(1); + }); + } + + // Init validation + var initValidation = function () { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + // Step 1 + validations.push(FormValidation.formValidation( + form, + { + fields: { + top_up_amount: { + validators: { + notEmpty: { + message: 'Top up amount is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + )); + + // Step 2 + validations.push(FormValidation.formValidation( + form, + { + fields: { + payment_methods: { + validators: { + notEmpty: { + message: 'Payment method is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + )); + + // Step 3 + validations.push(FormValidation.formValidation( + form, + { + fields: { + top_up_password: { + validators: { + notEmpty: { + message: 'Password is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + )); + } + + // Handle cancel modal + const handleCancelAction = () => { + const closeButton = modalEl.querySelector('[data-kt-modal-action-type="close"]'); + closeButton.addEventListener('click', e => { + cancelAction(e); + }); + + const cancelAction = (e) => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + } + } + + return { + // Public Functions + init: function () { + // Elements + modalEl = document.querySelector('#kt_modal_top_up_wallet'); + + if (!modalEl) { + return; + } + + modal = new bootstrap.Modal(modalEl); + + stepper = document.querySelector('#kt_modal_top_up_wallet_stepper'); + form = document.querySelector('#kt_modal_top_up_wallet_stepper_form'); + formSubmitButton = stepper.querySelector('[data-kt-stepper-action="submit"]'); + formContinueButton = stepper.querySelector('[data-kt-stepper-action="next"]'); + + initStepper(); + initForm(); + initValidation(); + handleCancelAction(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalTopUpWallet.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/two-factor-authentication.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/two-factor-authentication.js new file mode 100644 index 0000000..29488f2 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/two-factor-authentication.js @@ -0,0 +1,266 @@ +"use strict"; + +// Class definition +var KTModalTwoFactorAuthentication = function () { + // Private variables + var modal; + var modalObject; + + var optionsWrapper; + var optionsSelectButton; + + var smsWrapper; + var smsForm; + var smsSubmitButton; + var smsCancelButton; + var smsValidator; + + var appsWrapper; + var appsForm; + var appsSubmitButton; + var appsCancelButton; + var appsValidator; + + // Private functions + var handleOptionsForm = function() { + // Handle options selection + optionsSelectButton.addEventListener('click', function (e) { + e.preventDefault(); + var option = optionsWrapper.querySelector('[name="auth_option"]:checked'); + + optionsWrapper.classList.add('d-none'); + + if (option.value == 'sms') { + smsWrapper.classList.remove('d-none'); + } else { + appsWrapper.classList.remove('d-none'); + } + }); + } + + var showOptionsForm = function() { + optionsWrapper.classList.remove('d-none'); + smsWrapper.classList.add('d-none'); + appsWrapper.classList.add('d-none'); + } + + var handleSMSForm = function() { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + smsValidator = FormValidation.formValidation( + smsForm, + { + fields: { + 'mobile': { + validators: { + notEmpty: { + message: 'Mobile no is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Handle apps submition + smsSubmitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (smsValidator) { + smsValidator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + smsSubmitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + smsSubmitButton.disabled = true; + + // Simulate ajax process + setTimeout(function() { + // Remove loading indication + smsSubmitButton.removeAttribute('data-kt-indicator'); + + // Enable button + smsSubmitButton.disabled = false; + + // Show success message. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Mobile number has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modalObject.hide(); + showOptionsForm(); + } + }); + + //smsForm.submit(); // Submit form + }, 2000); + } else { + // Show error message. + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + // Handle sms cancelation + smsCancelButton.addEventListener('click', function (e) { + e.preventDefault(); + var option = optionsWrapper.querySelector('[name="auth_option"]:checked'); + + optionsWrapper.classList.remove('d-none'); + smsWrapper.classList.add('d-none'); + }); + } + + var handleAppsForm = function() { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + appsValidator = FormValidation.formValidation( + appsForm, + { + fields: { + 'code': { + validators: { + notEmpty: { + message: 'Code is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Handle apps submition + appsSubmitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (appsValidator) { + appsValidator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + appsSubmitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + appsSubmitButton.disabled = true; + + setTimeout(function() { + appsSubmitButton.removeAttribute('data-kt-indicator'); + + // Enable button + appsSubmitButton.disabled = false; + + // Show success message. + Swal.fire({ + text: "Code has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modalObject.hide(); + showOptionsForm(); + } + }); + + //appsForm.submit(); // Submit form + }, 2000); + } else { + // Show error message. + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + // Handle apps cancelation + appsCancelButton.addEventListener('click', function (e) { + e.preventDefault(); + var option = optionsWrapper.querySelector('[name="auth_option"]:checked'); + + optionsWrapper.classList.remove('d-none'); + appsWrapper.classList.add('d-none'); + }); + } + + // Public methods + return { + init: function () { + // Elements + modal = document.querySelector('#kt_modal_two_factor_authentication'); + + if (!modal) { + return; + } + + modalObject = new bootstrap.Modal(modal); + + optionsWrapper = modal.querySelector('[data-kt-element="options"]'); + optionsSelectButton = modal.querySelector('[data-kt-element="options-select"]'); + + smsWrapper = modal.querySelector('[data-kt-element="sms"]'); + smsForm = modal.querySelector('[data-kt-element="sms-form"]'); + smsSubmitButton = modal.querySelector('[data-kt-element="sms-submit"]'); + smsCancelButton = modal.querySelector('[data-kt-element="sms-cancel"]'); + + appsWrapper = modal.querySelector('[data-kt-element="apps"]'); + appsForm = modal.querySelector('[data-kt-element="apps-form"]'); + appsSubmitButton = modal.querySelector('[data-kt-element="apps-submit"]'); + appsCancelButton = modal.querySelector('[data-kt-element="apps-cancel"]'); + + // Handle forms + handleOptionsForm(); + handleSMSForm(); + handleAppsForm(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTModalTwoFactorAuthentication.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/upgrade-plan.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/upgrade-plan.js new file mode 100644 index 0000000..47f69b0 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/upgrade-plan.js @@ -0,0 +1,118 @@ +"use strict"; + +// Class definition +var KTModalUpgradePlan = function () { + // Private variables + var modal; + var planPeriodMonthButton; + var planPeriodAnnualButton; + var planUpgradeButton; + + // Private functions + var changePlanPrices = function(type) { + var items = [].slice.call(modal.querySelectorAll('[data-kt-plan-price-month]')); + + items.map(function (item) { + var monthPrice = item.getAttribute('data-kt-plan-price-month'); + var annualPrice = item.getAttribute('data-kt-plan-price-annual'); + + if ( type === 'month' ) { + item.innerHTML = monthPrice; + } else if ( type === 'annual' ) { + item.innerHTML = annualPrice; + } + }); + } + + var handlePlanPeriodSelection = function() { + // Handle period change + planPeriodMonthButton.addEventListener('click', function (e) { + e.preventDefault(); + + planPeriodMonthButton.classList.add('active'); + planPeriodAnnualButton.classList.remove('active'); + + changePlanPrices('month'); + }); + + planPeriodAnnualButton.addEventListener('click', function (e) { + e.preventDefault(); + + planPeriodMonthButton.classList.remove('active'); + planPeriodAnnualButton.classList.add('active'); + + changePlanPrices('annual'); + }); + } + + var handlePlanUpgrade = function () { + if ( !planUpgradeButton ) { + return; + } + + planUpgradeButton.addEventListener('click', function (e) { + e.preventDefault(); + + var el = this; + + swal.fire({ + text: "Are you sure you would like to upgrade to selected plan ?", + icon: "warning", + buttonsStyling: false, + showDenyButton: true, + confirmButtonText: "Yes", + denyButtonText: 'No', + customClass: { + confirmButton: "btn btn-primary", + denyButton: "btn btn-light-danger" + } + }).then((result) => { + if (result.isConfirmed) { + el.setAttribute('data-kt-indicator', 'on'); + el.disabled = true; + + setTimeout(function() { + Swal.fire({ + text: 'Your subscription plan has been successfully upgraded', + icon: 'success', + confirmButtonText: "Ok", + buttonsStyling: false, + customClass: { + confirmButton: "btn btn-light-primary" + } + }).then((result) => { + bootstrap.Modal.getInstance(modal).hide(); + }) + + }, 2000); + } + }); + }); + } + + // Public methods + return { + init: function () { + // Elements + modal = document.querySelector('#kt_modal_upgrade_plan'); + + if (!modal) { + return; + } + + planPeriodMonthButton = modal.querySelector('[data-kt-plan="month"]'); + planPeriodAnnualButton = modal.querySelector('[data-kt-plan="annual"]'); + planUpgradeButton = document.querySelector('#kt_modal_upgrade_plan_btn'); + + // Handlers + handlePlanPeriodSelection(); + handlePlanUpgrade(); + changePlanPrices(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTModalUpgradePlan.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/users-search.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/users-search.js new file mode 100644 index 0000000..1ac2964 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/modals/users-search.js @@ -0,0 +1,77 @@ +"use strict"; + +// Class definition +var KTModalUserSearch = function () { + // Private variables + var element; + var suggestionsElement; + var resultsElement; + var wrapperElement; + var emptyElement; + var searchObject; + + // Private functions + var processs = function (search) { + var timeout = setTimeout(function () { + var number = KTUtil.getRandomInt(1, 3); + + // Hide recently viewed + suggestionsElement.classList.add('d-none'); + + if (number === 3) { + // Hide results + resultsElement.classList.add('d-none'); + // Show empty message + emptyElement.classList.remove('d-none'); + } else { + // Show results + resultsElement.classList.remove('d-none'); + // Hide empty message + emptyElement.classList.add('d-none'); + } + + // Complete search + search.complete(); + }, 1500); + } + + var clear = function (search) { + // Show recently viewed + suggestionsElement.classList.remove('d-none'); + // Hide results + resultsElement.classList.add('d-none'); + // Hide empty message + emptyElement.classList.add('d-none'); + } + + // Public methods + return { + init: function () { + // Elements + element = document.querySelector('#kt_modal_users_search_handler'); + + if (!element) { + return; + } + + wrapperElement = element.querySelector('[data-kt-search-element="wrapper"]'); + suggestionsElement = element.querySelector('[data-kt-search-element="suggestions"]'); + resultsElement = element.querySelector('[data-kt-search-element="results"]'); + emptyElement = element.querySelector('[data-kt-search-element="empty"]'); + + // Initialize search handler + searchObject = new KTSearch(element); + + // Search handler + searchObject.on('kt.search.process', processs); + + // Clear handler + searchObject.on('kt.search.clear', clear); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalUserSearch.init(); +}); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/search/horizontal.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/search/horizontal.js new file mode 100644 index 0000000..2ad9dd7 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/utilities/search/horizontal.js @@ -0,0 +1,40 @@ +"use strict"; + +// Class definition +var KTSearchHorizontal = function () { + // Private functions + var initAdvancedSearchForm = function () { + var form = document.querySelector('#kt_advanced_search_form'); + + // Init tags + var tags = form.querySelector('[name="tags"]'); + new Tagify(tags); + } + + var handleAdvancedSearchToggle = function () { + var link = document.querySelector('#kt_horizontal_search_advanced_link'); + + link.addEventListener('click', function (e) { + e.preventDefault(); + + if (link.innerHTML === "Advanced Search") { + link.innerHTML = "Hide Advanced Search"; + } else { + link.innerHTML = "Advanced Search"; + } + }) + } + + // Public methods + return { + init: function () { + initAdvancedSearchForm(); + handleAdvancedSearchToggle(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTSearchHorizontal.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/custom/widgets.js b/think-backend.greaterchiangmai.com/public/assets/js/custom/widgets.js new file mode 100644 index 0000000..1c40918 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/custom/widgets.js @@ -0,0 +1,3597 @@ +"use strict"; + +// Class definition +var KTWidgets = function () { + // Statistics widgets + var initStatisticsWidget3 = function() { + var charts = document.querySelectorAll('.statistics-widget-3-chart'); + + [].slice.call(charts).map(function(element) { + var height = parseInt(KTUtil.css(element, 'height')); + + if ( !element ) { + return; + } + + var color = element.getAttribute('data-kt-chart-color'); + + var labelColor = KTUtil.getCssVariableValue('--bs-' + 'gray-800'); + var baseColor = KTUtil.getCssVariableValue('--bs-' + color); + var lightColor = KTUtil.getCssVariableValue('--bs-' + color + '-light'); + + var options = { + series: [{ + name: 'Net Profit', + data: [30, 45, 32, 70, 40] + }], + chart: { + fontFamily: 'inherit', + type: 'area', + height: height, + toolbar: { + show: false + }, + zoom: { + enabled: false + }, + sparkline: { + enabled: true + } + }, + plotOptions: {}, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + fill: { + type: 'solid', + opacity: 0.3 + }, + stroke: { + curve: 'smooth', + show: true, + width: 3, + colors: [baseColor] + }, + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + }, + crosshairs: { + show: false, + position: 'front', + stroke: { + color: '#E4E6EF', + width: 1, + dashArray: 3 + } + }, + tooltip: { + enabled: true, + formatter: undefined, + offsetY: 0, + style: { + fontSize: '12px' + } + } + }, + yaxis: { + min: 0, + max: 80, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function(val) { + return "$" + val + " thousands" + } + } + }, + colors: [baseColor], + markers: { + colors: [baseColor], + strokeColor: [lightColor], + strokeWidth: 3 + } + }; + + var chart = new ApexCharts(element, options); + chart.render(); + }); + } + + var initStatisticsWidget4 = function() { + var charts = document.querySelectorAll('.statistics-widget-4-chart'); + + [].slice.call(charts).map(function(element) { + var height = parseInt(KTUtil.css(element, 'height')); + + if ( !element ) { + return; + } + + var color = element.getAttribute('data-kt-chart-color'); + + var labelColor = KTUtil.getCssVariableValue('--bs-' + 'gray-800'); + var baseColor = KTUtil.getCssVariableValue('--bs-' + color); + var lightColor = KTUtil.getCssVariableValue('--bs-' + color + '-light' ); + + var options = { + series: [{ + name: 'Net Profit', + data: [40, 40, 30, 30, 35, 35, 50] + }], + chart: { + fontFamily: 'inherit', + type: 'area', + height: height, + toolbar: { + show: false + }, + zoom: { + enabled: false + }, + sparkline: { + enabled: true + } + }, + plotOptions: {}, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + fill: { + type: 'solid', + opacity: 0.3 + }, + stroke: { + curve: 'smooth', + show: true, + width: 3, + colors: [baseColor] + }, + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + }, + crosshairs: { + show: false, + position: 'front', + stroke: { + color: '#E4E6EF', + width: 1, + dashArray: 3 + } + }, + tooltip: { + enabled: true, + formatter: undefined, + offsetY: 0, + style: { + fontSize: '12px' + } + } + }, + yaxis: { + min: 0, + max: 60, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function(val) { + return "$" + val + " thousands" + } + } + }, + colors: [baseColor], + markers: { + colors: [baseColor], + strokeColor: [lightColor], + strokeWidth: 3 + } + }; + + var chart = new ApexCharts(element, options); + chart.render(); + }); + } + + // Charts widgets + var initChartsWidget1 = function() { + var element = document.getElementById("kt_charts_widget_1_chart"); + + if ( !element ) { + return; + } + + var chart = { + self: null, + rendered: false + }; + + var initChart = function() { + var height = parseInt(KTUtil.css(element, 'height')); + var labelColor = KTUtil.getCssVariableValue('--bs-gray-500'); + var borderColor = KTUtil.getCssVariableValue('--bs-gray-200'); + var baseColor = KTUtil.getCssVariableValue('--bs-primary'); + var secondaryColor = KTUtil.getCssVariableValue('--bs-gray-300'); + + var options = { + series: [{ + name: 'Net Profit', + data: [44, 55, 57, 56, 61, 58] + }, { + name: 'Revenue', + data: [76, 85, 101, 98, 87, 105] + }], + chart: { + fontFamily: 'inherit', + type: 'bar', + height: height, + toolbar: { + show: false + } + }, + plotOptions: { + bar: { + horizontal: false, + columnWidth: ['30%'], + borderRadius: [6] + }, + }, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + stroke: { + show: true, + width: 2, + colors: ['transparent'] + }, + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + yaxis: { + labels: { + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + fill: { + opacity: 1 + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function (val) { + return "$" + val + " thousands" + } + } + }, + colors: [baseColor, secondaryColor], + grid: { + borderColor: borderColor, + strokeDashArray: 4, + yaxis: { + lines: { + show: true + } + } + } + }; + + chart.self = new ApexCharts(element, options); + chart.self.render(); + chart.rendered = true; + } + + // Init chart + initChart(); + + // Update chart on theme mode change + KTThemeMode.on("kt.thememode.change", function() { + if (chart.rendered) { + chart.self.destroy(); + } + + initChart(); + }); + } + + var initChartsWidget2 = function() { + var element = document.getElementById("kt_charts_widget_2_chart"); + + if ( !element ) { + return; + } + + var chart = { + self: null, + rendered: false + }; + + var initChart = function() { + var height = parseInt(KTUtil.css(element, 'height')); + var labelColor = KTUtil.getCssVariableValue('--bs-gray-500'); + var borderColor = KTUtil.getCssVariableValue('--bs-gray-200'); + var baseColor = KTUtil.getCssVariableValue('--bs-warning'); + var secondaryColor = KTUtil.getCssVariableValue('--bs-gray-300'); + + var options = { + series: [{ + name: 'Net Profit', + data: [44, 55, 57, 56, 61, 58] + }, { + name: 'Revenue', + data: [76, 85, 101, 98, 87, 105] + }], + chart: { + fontFamily: 'inherit', + type: 'bar', + height: height, + toolbar: { + show: false + } + }, + plotOptions: { + bar: { + horizontal: false, + columnWidth: ['30%'], + borderRadius: 4 + }, + }, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + stroke: { + show: true, + width: 2, + colors: ['transparent'] + }, + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + yaxis: { + labels: { + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + fill: { + opacity: 1 + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function (val) { + return "$" + val + " thousands" + } + } + }, + colors: [baseColor, secondaryColor], + grid: { + borderColor: borderColor, + strokeDashArray: 4, + yaxis: { + lines: { + show: true + } + } + } + }; + + chart.self = new ApexCharts(element, options); + chart.self.render(); + chart.rendered = true; + } + + // Init chart + initChart(); + + // Update chart on theme mode change + KTThemeMode.on("kt.thememode.change", function() { + if (chart.rendered) { + chart.self.destroy(); + } + + initChart(); + }); + } + + var initChartsWidget3 = function() { + var element = document.getElementById("kt_charts_widget_3_chart"); + + if ( !element ) { + return; + } + + var chart = { + self: null, + rendered: false + }; + + var initChart = function() { + var height = parseInt(KTUtil.css(element, 'height')); + var labelColor = KTUtil.getCssVariableValue('--bs-gray-500'); + var borderColor = KTUtil.getCssVariableValue('--bs-gray-200'); + var baseColor = KTUtil.getCssVariableValue('--bs-info'); + var lightColor = KTUtil.getCssVariableValue('--bs-info-light'); + + var options = { + series: [{ + name: 'Net Profit', + data: [30, 40, 40, 90, 90, 70, 70] + }], + chart: { + fontFamily: 'inherit', + type: 'area', + height: 350, + toolbar: { + show: false + } + }, + plotOptions: { + + }, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + fill: { + type: 'solid', + opacity: 1 + }, + stroke: { + curve: 'smooth', + show: true, + width: 3, + colors: [baseColor] + }, + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + style: { + colors: labelColor, + fontSize: '12px' + } + }, + crosshairs: { + position: 'front', + stroke: { + color: baseColor, + width: 1, + dashArray: 3 + } + }, + tooltip: { + enabled: true, + formatter: undefined, + offsetY: 0, + style: { + fontSize: '12px' + } + } + }, + yaxis: { + labels: { + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function (val) { + return "$" + val + " thousands" + } + } + }, + colors: [lightColor], + grid: { + borderColor: borderColor, + strokeDashArray: 4, + yaxis: { + lines: { + show: true + } + } + }, + markers: { + strokeColor: baseColor, + strokeWidth: 3 + } + }; + + chart.self = new ApexCharts(element, options); + chart.self.render(); + chart.rendered = true; + } + + // Init chart + initChart(); + + // Update chart on theme mode change + KTThemeMode.on("kt.thememode.change", function() { + if (chart.rendered) { + chart.self.destroy(); + } + + initChart(); + }); + } + + var initChartsWidget4 = function() { + var element = document.getElementById("kt_charts_widget_4_chart"); + + if ( !element ) { + return; + } + + var chart = { + self: null, + rendered: false + }; + + var initChart = function() { + var height = parseInt(KTUtil.css(element, 'height')); + var labelColor = KTUtil.getCssVariableValue('--bs-gray-500'); + var borderColor = KTUtil.getCssVariableValue('--bs-gray-200'); + + var baseColor = KTUtil.getCssVariableValue('--bs-success'); + var baseLightColor = KTUtil.getCssVariableValue('--bs-success-light'); + var secondaryColor = KTUtil.getCssVariableValue('--bs-warning'); + var secondaryLightColor = KTUtil.getCssVariableValue('--bs-warning-light'); + + var options = { + series: [{ + name: 'Net Profit', + data: [60, 50, 80, 40, 100, 60] + }, { + name: 'Revenue', + data: [70, 60, 110, 40, 50, 70] + }], + chart: { + fontFamily: 'inherit', + type: 'area', + height: 350, + toolbar: { + show: false + } + }, + plotOptions: {}, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + fill: { + type: 'solid', + opacity: 1 + }, + stroke: { + curve: 'smooth' + }, + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + style: { + colors: labelColor, + fontSize: '12px' + } + }, + crosshairs: { + position: 'front', + stroke: { + color: labelColor, + width: 1, + dashArray: 3 + } + }, + tooltip: { + enabled: true, + formatter: undefined, + offsetY: 0, + style: { + fontSize: '12px' + } + } + }, + yaxis: { + labels: { + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function (val) { + return "$" + val + " thousands" + } + } + }, + colors: [baseColor, secondaryColor], + grid: { + borderColor: borderColor, + strokeDashArray: 4, + yaxis: { + lines: { + show: true + } + } + }, + markers: { + colors: [baseLightColor, secondaryLightColor], + strokeColor: [baseLightColor, secondaryLightColor], + strokeWidth: 3 + } + }; + + chart.self = new ApexCharts(element, options); + chart.self.render(); + chart.rendered = true; + } + + // Init chart + initChart(); + + // Update chart on theme mode change + KTThemeMode.on("kt.thememode.change", function() { + if (chart.rendered) { + chart.self.destroy(); + } + + initChart(); + }); + } + + var initChartsWidget5 = function() { + var element = document.getElementById("kt_charts_widget_5_chart"); + + if ( !element ) { + return; + } + + var chart = { + self: null, + rendered: false + }; + + var initChart = function() { + var height = parseInt(KTUtil.css(element, 'height')); + var labelColor = KTUtil.getCssVariableValue('--bs-gray-500'); + var borderColor = KTUtil.getCssVariableValue('--bs-gray-200'); + + var baseColor = KTUtil.getCssVariableValue('--bs-primary'); + var secondaryColor = KTUtil.getCssVariableValue('--bs-info'); + + var options = { + series: [{ + name: 'Net Profit', + data: [40, 50, 65, 70, 50, 30] + }, { + name: 'Revenue', + data: [-30, -40, -55, -60, -40, -20] + }], + chart: { + fontFamily: 'inherit', + type: 'bar', + stacked: true, + height: 350, + toolbar: { + show: false + } + }, + plotOptions: { + bar: { + horizontal: false, + columnWidth: ['12%'], + borderRadius: [6, 6] + }, + }, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + stroke: { + show: true, + width: 2, + colors: ['transparent'] + }, + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + yaxis: { + min: -80, + max: 80, + labels: { + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + fill: { + opacity: 1 + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function (val) { + return "$" + val + " thousands" + } + } + }, + colors: [baseColor, secondaryColor], + grid: { + borderColor: borderColor, + strokeDashArray: 4, + yaxis: { + lines: { + show: true + } + } + } + }; + + chart.self = new ApexCharts(element, options); + chart.self.render(); + chart.rendered = true; + } + + // Init chart + initChart(); + + // Update chart on theme mode change + KTThemeMode.on("kt.thememode.change", function() { + if (chart.rendered) { + chart.self.destroy(); + } + + initChart(); + }); + } + + var initChartsWidget6 = function() { + var element = document.getElementById("kt_charts_widget_6_chart"); + + if ( !element ) { + return; + } + + var chart = { + self: null, + rendered: false + }; + + var initChart = function() { + var height = parseInt(KTUtil.css(element, 'height')); + var labelColor = KTUtil.getCssVariableValue('--bs-gray-500'); + var borderColor = KTUtil.getCssVariableValue('--bs-gray-200'); + + var baseColor = KTUtil.getCssVariableValue('--bs-primary'); + var baseLightColor = KTUtil.getCssVariableValue('--bs-primary-light'); + var secondaryColor = KTUtil.getCssVariableValue('--bs-info'); + + var options = { + series: [{ + name: 'Net Profit', + type: 'bar', + stacked: true, + data: [40, 50, 65, 70, 50, 30] + }, { + name: 'Revenue', + type: 'bar', + stacked: true, + data: [20, 20, 25, 30, 30, 20] + }, { + name: 'Expenses', + type: 'area', + data: [50, 80, 60, 90, 50, 70] + }], + chart: { + fontFamily: 'inherit', + stacked: true, + height: 350, + toolbar: { + show: false + } + }, + plotOptions: { + bar: { + stacked: true, + horizontal: false, + borderRadius: 4, + columnWidth: ['12%'] + }, + }, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + stroke: { + curve: 'smooth', + show: true, + width: 2, + colors: ['transparent'] + }, + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + yaxis: { + max: 120, + labels: { + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + fill: { + opacity: 1 + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function (val) { + return "$" + val + " thousands" + } + } + }, + colors: [baseColor, secondaryColor, baseLightColor], + grid: { + borderColor: borderColor, + strokeDashArray: 4, + yaxis: { + lines: { + show: true + } + }, + padding: { + top: 0, + right: 0, + bottom: 0, + left: 0 + } + } + }; + + chart.self = new ApexCharts(element, options); + chart.self.render(); + chart.rendered = true; + } + + // Init chart + initChart(); + + // Update chart on theme mode change + KTThemeMode.on("kt.thememode.change", function() { + if (chart.rendered) { + chart.self.destroy(); + } + + initChart(); + }); + } + + var initChartsWidget7 = function() { + var element = document.getElementById("kt_charts_widget_7_chart"); + + if ( !element ) { + return; + } + + var chart = { + self: null, + rendered: false + }; + + var initChart = function() { + + var height = parseInt(KTUtil.css(element, 'height')); + + var labelColor = KTUtil.getCssVariableValue('--bs-gray-500'); + var borderColor = KTUtil.getCssVariableValue('--bs-gray-200'); + var strokeColor = KTUtil.getCssVariableValue('--bs-gray-300'); + + var color1 = KTUtil.getCssVariableValue('--bs-warning'); + var color1Light = KTUtil.getCssVariableValue('--bs-warning-light'); + + var color2 = KTUtil.getCssVariableValue('--bs-success'); + var color2Light = KTUtil.getCssVariableValue('--bs-success-light'); + + var color3 = KTUtil.getCssVariableValue('--bs-primary'); + var color3Light = KTUtil.getCssVariableValue('--bs-primary-light'); + + var options = { + series: [{ + name: 'Net Profit', + data: [30, 30, 50, 50, 35, 35] + }, { + name: 'Revenue', + data: [55, 20, 20, 20, 70, 70] + }, { + name: 'Expenses', + data: [60, 60, 40, 40, 30, 30] + }], + chart: { + fontFamily: 'inherit', + type: 'area', + height: height, + toolbar: { + show: false + }, + zoom: { + enabled: false + }, + sparkline: { + enabled: true + } + }, + plotOptions: {}, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + fill: { + type: 'solid', + opacity: 1 + }, + stroke: { + curve: 'smooth', + show: true, + width: 2, + colors: [color1, 'transparent', 'transparent'] + }, + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + }, + crosshairs: { + show: false, + position: 'front', + stroke: { + color: strokeColor, + width: 1, + dashArray: 3 + } + }, + tooltip: { + enabled: true, + formatter: undefined, + offsetY: 0, + style: { + fontSize: '12px' + } + } + }, + yaxis: { + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function (val) { + return "$" + val + " thousands" + } + } + }, + colors: [color1, color2, color3], + grid: { + borderColor: borderColor, + strokeDashArray: 4, + yaxis: { + lines: { + show: true + } + } + }, + markers: { + colors: [color1Light, color2Light, color3Light], + strokeColor: [color1, color2, color3], + strokeWidth: 3 + } + }; + + chart.self = new ApexCharts(element, options); + chart.self.render(); + chart.rendered = true; + } + + // Init chart + initChart(); + + // Update chart on theme mode change + KTThemeMode.on("kt.thememode.change", function() { + if (chart.rendered) { + chart.self.destroy(); + } + + initChart(); + }); + } + + var initChartsWidget8 = function() { + var element = document.getElementById("kt_charts_widget_8_chart"); + + if ( !element ) { + return; + } + + var chart = { + self: null, + rendered: false + }; + + var initChart = function() { + var height = parseInt(KTUtil.css(element, 'height')); + + var labelColor = KTUtil.getCssVariableValue('--bs-gray-500'); + var borderColor = KTUtil.getCssVariableValue('--bs-gray-200'); + var strokeColor = KTUtil.getCssVariableValue('--bs-gray-300'); + + var color1 = KTUtil.getCssVariableValue('--bs-warning'); + var color1Light = KTUtil.getCssVariableValue('--bs-warning-light'); + + var color2 = KTUtil.getCssVariableValue('--bs-success'); + var color2Light = KTUtil.getCssVariableValue('--bs-success-light'); + + var color3 = KTUtil.getCssVariableValue('--bs-primary'); + var color3Light = KTUtil.getCssVariableValue('--bs-primary-light'); + + var options = { + series: [{ + name: 'Net Profit', + data: [30, 30, 50, 50, 35, 35] + }, { + name: 'Revenue', + data: [55, 20, 20, 20, 70, 70] + }, { + name: 'Expenses', + data: [60, 60, 40, 40, 30, 30] + },], + chart: { + fontFamily: 'inherit', + type: 'area', + height: height, + toolbar: { + show: false + }, + zoom: { + enabled: false + }, + sparkline: { + enabled: true + } + }, + plotOptions: {}, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + fill: { + type: 'solid', + opacity: 1 + }, + stroke: { + curve: 'smooth', + show: true, + width: 2, + colors: [color1, color2, color3] + }, + xaxis: { + x: 0, + offsetX: 0, + offsetY: 0, + padding: { + left: 0, + right: 0, + top: 0, + }, + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + }, + crosshairs: { + show: false, + position: 'front', + stroke: { + color: strokeColor, + width: 1, + dashArray: 3 + } + }, + tooltip: { + enabled: true, + formatter: undefined, + offsetY: 0, + style: { + fontSize: '12px' + } + } + }, + yaxis: { + y: 0, + offsetX: 0, + offsetY: 0, + padding: { + left: 0, + right: 0 + }, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function (val) { + return "$" + val + " thousands" + } + } + }, + colors: [color1Light, color2Light, color3Light], + grid: { + borderColor: borderColor, + strokeDashArray: 4, + padding: { + top: 0, + bottom: 0, + left: 0, + right: 0 + } + }, + markers: { + colors: [color1, color2, color3], + strokeColor: [color1, color2, color3], + strokeWidth: 3 + } + }; + + chart.self = new ApexCharts(element, options); + chart.self.render(); + chart.rendered = true; + } + + // Init chart + initChart(); + + // Update chart on theme mode change + KTThemeMode.on("kt.thememode.change", function() { + if (chart.rendered) { + chart.self.destroy(); + } + + initChart(); + }); + } + + // Mixed widgets + var initMixedWidget2 = function() { + var charts = document.querySelectorAll('.mixed-widget-2-chart'); + + var color; + var strokeColor; + var height; + var labelColor = KTUtil.getCssVariableValue('--bs-gray-500'); + var borderColor = KTUtil.getCssVariableValue('--bs-gray-200'); + var options; + var chart; + + [].slice.call(charts).map(function(element) { + height = parseInt(KTUtil.css(element, 'height')); + color = KTUtil.getCssVariableValue('--bs-' + element.getAttribute("data-kt-color")); + strokeColor = KTUtil.colorDarken(color, 15); + + options = { + series: [{ + name: 'Net Profit', + data: [30, 45, 32, 70, 40, 40, 40] + }], + chart: { + fontFamily: 'inherit', + type: 'area', + height: height, + toolbar: { + show: false + }, + zoom: { + enabled: false + }, + sparkline: { + enabled: true + }, + dropShadow: { + enabled: true, + enabledOnSeries: undefined, + top: 5, + left: 0, + blur: 3, + color: strokeColor, + opacity: 0.5 + } + }, + plotOptions: {}, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + fill: { + type: 'solid', + opacity: 0 + }, + stroke: { + curve: 'smooth', + show: true, + width: 3, + colors: [strokeColor] + }, + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + }, + crosshairs: { + show: false, + position: 'front', + stroke: { + color: borderColor, + width: 1, + dashArray: 3 + } + } + }, + yaxis: { + min: 0, + max: 80, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px', + }, + y: { + formatter: function (val) { + return "$" + val + " thousands" + } + }, + marker: { + show: false + } + }, + colors: ['transparent'], + markers: { + colors: [color], + strokeColor: [strokeColor], + strokeWidth: 3 + } + }; + + chart = new ApexCharts(element, options); + chart.render(); + }); + } + + var initMixedWidget3 = function() { + var charts = document.querySelectorAll('.mixed-widget-3-chart'); + + [].slice.call(charts).map(function(element) { + var height = parseInt(KTUtil.css(element, 'height')); + + if ( !element ) { + return; + } + + var color = element.getAttribute('data-kt-chart-color'); + + var labelColor = KTUtil.getCssVariableValue('--bs-' + 'gray-800'); + var strokeColor = KTUtil.getCssVariableValue('--bs-' + 'gray-300'); + var baseColor = KTUtil.getCssVariableValue('--bs-' + color); + var lightColor = KTUtil.getCssVariableValue('--bs-' + color + '-light' ); + + var options = { + series: [{ + name: 'Net Profit', + data: [30, 25, 45, 30, 55, 55] + }], + chart: { + fontFamily: 'inherit', + type: 'area', + height: height, + toolbar: { + show: false + }, + zoom: { + enabled: false + }, + sparkline: { + enabled: true + } + }, + plotOptions: {}, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + fill: { + type: 'solid', + opacity: 1 + }, + stroke: { + curve: 'smooth', + show: true, + width: 3, + colors: [baseColor] + }, + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + }, + crosshairs: { + show: false, + position: 'front', + stroke: { + color: strokeColor, + width: 1, + dashArray: 3 + } + }, + tooltip: { + enabled: true, + formatter: undefined, + offsetY: 0, + style: { + fontSize: '12px' + } + } + }, + yaxis: { + min: 0, + max: 60, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function (val) { + return "$" + val + " thousands" + } + } + }, + colors: [lightColor], + markers: { + colors: [lightColor], + strokeColor: [baseColor], + strokeWidth: 3 + } + }; + + var chart = new ApexCharts(element, options); + chart.render(); + }); + } + + var initMixedWidget4 = function() { + var charts = document.querySelectorAll('.mixed-widget-4-chart'); + + [].slice.call(charts).map(function(element) { + var height = parseInt(KTUtil.css(element, 'height')); + + if ( !element ) { + return; + } + + var color = element.getAttribute('data-kt-chart-color'); + + var baseColor = KTUtil.getCssVariableValue('--bs-' + color); + var lightColor = KTUtil.getCssVariableValue('--bs-' + color + '-light' ); + var labelColor = KTUtil.getCssVariableValue('--bs-' + 'gray-700'); + + var options = { + series: [74], + chart: { + fontFamily: 'inherit', + height: height, + type: 'radialBar', + }, + plotOptions: { + radialBar: { + hollow: { + margin: 0, + size: "65%" + }, + dataLabels: { + showOn: "always", + name: { + show: false, + fontWeight: '700' + }, + value: { + color: labelColor, + fontSize: "30px", + fontWeight: '700', + offsetY: 12, + show: true, + formatter: function (val) { + return val + '%'; + } + } + }, + track: { + background: lightColor, + strokeWidth: '100%' + } + } + }, + colors: [baseColor], + stroke: { + lineCap: "round", + }, + labels: ["Progress"] + }; + + var chart = new ApexCharts(element, options); + chart.render(); + }); + } + + var initMixedWidget5 = function() { + var charts = document.querySelectorAll('.mixed-widget-5-chart'); + + var initChart = function(element) { + var height = parseInt(KTUtil.css(element, 'height')); + + if ( !element ) { + return; + } + + var color = element.getAttribute('data-kt-chart-color'); + var labelColor = KTUtil.getCssVariableValue('--bs-' + 'gray-800'); + var strokeColor = KTUtil.getCssVariableValue('--bs-' + 'gray-300'); + var baseColor = KTUtil.getCssVariableValue('--bs-' + color); + var lightColor = KTUtil.getCssVariableValue('--bs-' + color + '-light' ); + + var options = { + series: [{ + name: 'Net Profit', + data: [30, 30, 60, 25, 25, 40] + }], + chart: { + fontFamily: 'inherit', + type: 'area', + height: height, + toolbar: { + show: false + }, + zoom: { + enabled: false + }, + sparkline: { + enabled: true + } + }, + plotOptions: {}, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + fill: { + type: 'solid', + opacity: 1 + }, + fill1: { + type: 'gradient', + opacity: 1, + gradient: { + type: "vertical", + shadeIntensity: 0.5, + gradientToColors: undefined, + inverseColors: true, + opacityFrom: 1, + opacityTo: 0.375, + stops: [25, 50, 100], + colorStops: [] + } + }, + stroke: { + curve: 'smooth', + show: true, + width: 3, + colors: [baseColor] + }, + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + }, + crosshairs: { + show: false, + position: 'front', + stroke: { + color: strokeColor, + width: 1, + dashArray: 3 + } + }, + tooltip: { + enabled: true, + formatter: undefined, + offsetY: 0, + style: { + fontSize: '12px' + } + } + }, + yaxis: { + min: 0, + max: 65, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function (val) { + return "$" + val + " thousands" + } + } + }, + colors: [lightColor], + markers: { + colors: [lightColor], + strokeColor: [baseColor], + strokeWidth: 3 + } + }; + + chart.self = new ApexCharts(element, options); + chart.self.render(); + chart.rendered = true; + }; + + [].slice.call(charts).map(function(element) { + var chart = { + self: null, + rendered: false + }; + + initChart(element); + + // Update chart on theme mode change + KTThemeMode.on("kt.thememode.change", function() { + if (chart.rendered) { + chart.self.destroy(); + } + + initChart(); + }); + }); + } + + var initMixedWidget6 = function() { + var charts = document.querySelectorAll('.mixed-widget-6-chart'); + + [].slice.call(charts).map(function(element) { + var height = parseInt(KTUtil.css(element, 'height')); + + if ( !element ) { + return; + } + + var color = element.getAttribute('data-kt-chart-color'); + + var labelColor = KTUtil.getCssVariableValue('--bs-' + 'gray-800'); + var strokeColor = KTUtil.getCssVariableValue('--bs-' + 'gray-300'); + var baseColor = KTUtil.getCssVariableValue('--bs-' + color); + var lightColor = KTUtil.getCssVariableValue('--bs-' + color + '-light' ); + + var options = { + series: [{ + name: 'Net Profit', + data: [30, 25, 45, 30, 55, 55] + }], + chart: { + fontFamily: 'inherit', + type: 'area', + height: height, + toolbar: { + show: false + }, + zoom: { + enabled: false + }, + sparkline: { + enabled: true + } + }, + plotOptions: {}, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + fill: { + type: 'solid', + opacity: 1 + }, + stroke: { + curve: 'smooth', + show: true, + width: 3, + colors: [baseColor] + }, + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + }, + crosshairs: { + show: false, + position: 'front', + stroke: { + color: strokeColor, + width: 1, + dashArray: 3 + } + }, + tooltip: { + enabled: true, + formatter: undefined, + offsetY: 0, + style: { + fontSize: '12px' + } + } + }, + yaxis: { + min: 0, + max: 60, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function (val) { + return "$" + val + " thousands" + } + } + }, + colors: [lightColor], + markers: { + colors: [lightColor], + strokeColor: [baseColor], + strokeWidth: 3 + } + }; + + var chart = new ApexCharts(element, options); + chart.render(); + }); + } + + var initMixedWidget7 = function() { + var charts = document.querySelectorAll('.mixed-widget-7-chart'); + + [].slice.call(charts).map(function(element) { + var height = parseInt(KTUtil.css(element, 'height')); + + if ( !element ) { + return; + } + + var color = element.getAttribute('data-kt-chart-color'); + + var labelColor = KTUtil.getCssVariableValue('--bs-' + 'gray-800'); + var strokeColor = KTUtil.getCssVariableValue('--bs-' + 'gray-300'); + var baseColor = KTUtil.getCssVariableValue('--bs-' + color); + var lightColor = KTUtil.getCssVariableValue('--bs-' + color + '-light'); + + var options = { + series: [{ + name: 'Net Profit', + data: [15, 25, 15, 40, 20, 50] + }], + chart: { + fontFamily: 'inherit', + type: 'area', + height: height, + toolbar: { + show: false + }, + zoom: { + enabled: false + }, + sparkline: { + enabled: true + } + }, + plotOptions: {}, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + fill: { + type: 'solid', + opacity: 1 + }, + stroke: { + curve: 'smooth', + show: true, + width: 3, + colors: [baseColor] + }, + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + }, + crosshairs: { + show: false, + position: 'front', + stroke: { + color: strokeColor, + width: 1, + dashArray: 3 + } + }, + tooltip: { + enabled: true, + formatter: undefined, + offsetY: 0, + style: { + fontSize: '12px' + } + } + }, + yaxis: { + min: 0, + max: 60, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function (val) { + return "$" + val + " thousands" + } + } + }, + colors: [lightColor], + markers: { + colors: [lightColor], + strokeColor: [baseColor], + strokeWidth: 3 + } + }; + + var chart = new ApexCharts(element, options); + chart.render(); + }); + } + + var initMixedWidget10 = function() { + var charts = document.querySelectorAll('.mixed-widget-10-chart'); + + var color; + var height; + var labelColor = KTUtil.getCssVariableValue('--bs-gray-500'); + var borderColor = KTUtil.getCssVariableValue('--bs-gray-200'); + var baseLightColor; + var secondaryColor = KTUtil.getCssVariableValue('--bs-gray-300'); + var baseColor; + var options; + var chart; + + [].slice.call(charts).map(function(element) { + color = element.getAttribute("data-kt-color"); + height = parseInt(KTUtil.css(element, 'height')); + baseColor = KTUtil.getCssVariableValue('--bs-' + color); + + options = { + series: [{ + name: 'Net Profit', + data: [50, 60, 70, 80, 60, 50, 70, 60] + }, { + name: 'Revenue', + data: [50, 60, 70, 80, 60, 50, 70, 60] + }], + chart: { + fontFamily: 'inherit', + type: 'bar', + height: height, + toolbar: { + show: false + } + }, + plotOptions: { + bar: { + horizontal: false, + columnWidth: ['50%'], + borderRadius: 4 + }, + }, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + stroke: { + show: true, + width: 2, + colors: ['transparent'] + }, + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + yaxis: { + y: 0, + offsetX: 0, + offsetY: 0, + labels: { + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + fill: { + type: 'solid' + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function (val) { + return "$" + val + " revenue" + } + } + }, + colors: [baseColor, secondaryColor], + grid: { + padding: { + top: 10 + }, + borderColor: borderColor, + strokeDashArray: 4, + yaxis: { + lines: { + show: true + } + } + } + }; + + chart = new ApexCharts(element, options); + chart.render(); + }); + } + + var initMixedWidget12 = function() { + var charts = document.querySelectorAll('.mixed-widget-12-chart'); + + var color; + var strokeColor; + var height; + var labelColor = KTUtil.getCssVariableValue('--bs-gray-500'); + var borderColor = KTUtil.getCssVariableValue('--bs-gray-200'); + var options; + var chart; + + [].slice.call(charts).map(function(element) { + height = parseInt(KTUtil.css(element, 'height')); + + var options = { + series: [{ + name: 'Net Profit', + data: [35, 65, 75, 55, 45, 60, 55] + }, { + name: 'Revenue', + data: [40, 70, 80, 60, 50, 65, 60] + }], + chart: { + fontFamily: 'inherit', + type: 'bar', + height: height, + toolbar: { + show: false + }, + sparkline: { + enabled: true + }, + }, + plotOptions: { + bar: { + horizontal: false, + columnWidth: ['30%'], + borderRadius: 2 + } + }, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + stroke: { + show: true, + width: 1, + colors: ['transparent'] + }, + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + yaxis: { + min: 0, + max: 100, + labels: { + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + fill: { + type: ['solid', 'solid'], + opacity: [0.25, 1] + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function (val) { + return "$" + val + " thousands" + } + }, + marker: { + show: false + } + }, + colors: ['#ffffff', '#ffffff'], + grid: { + borderColor: borderColor, + strokeDashArray: 4, + yaxis: { + lines: { + show: true + } + }, + padding: { + left: 20, + right: 20 + } + } + }; + + var chart = new ApexCharts(element, options); + chart.render() + }); + } + + var initMixedWidget13 = function() { + var height; + var charts = document.querySelectorAll('.mixed-widget-13-chart'); + + [].slice.call(charts).map(function(element) { + height = parseInt(KTUtil.css(element, 'height')); + + if ( !element ) { + return; + } + + var labelColor = KTUtil.getCssVariableValue('--bs-' + 'gray-800'); + var strokeColor = KTUtil.getCssVariableValue('--bs-' + 'gray-300'); + + var options = { + series: [{ + name: 'Net Profit', + data: [15, 25, 15, 40, 20, 50] + }], + grid: { + show: false, + padding: { + top: 0, + bottom: 0, + left: 0, + right: 0 + } + }, + chart: { + fontFamily: 'inherit', + type: 'area', + height: height, + toolbar: { + show: false + }, + zoom: { + enabled: false + }, + sparkline: { + enabled: true + } + }, + plotOptions: {}, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + fill: { + type: 'gradient', + gradient: { + opacityFrom: 0.4, + opacityTo: 0, + stops: [20, 120, 120, 120] + } + }, + stroke: { + curve: 'smooth', + show: true, + width: 3, + colors: ['#FFFFFF'] + }, + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + }, + crosshairs: { + show: false, + position: 'front', + stroke: { + color: strokeColor, + width: 1, + dashArray: 3 + } + }, + tooltip: { + enabled: true, + formatter: undefined, + offsetY: 0, + style: { + fontSize: '12px' + } + } + }, + yaxis: { + min: 0, + max: 60, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function (val) { + return "$" + val + " thousands" + } + } + }, + colors: ['#ffffff'], + markers: { + colors: [labelColor], + strokeColor: [strokeColor], + strokeWidth: 3 + } + }; + + var chart = new ApexCharts(element, options); + chart.render(); + }); + } + + var initMixedWidget14 = function() { + var charts = document.querySelectorAll('.mixed-widget-14-chart'); + var options; + var chart; + var height; + + [].slice.call(charts).map(function(element) { + height = parseInt(KTUtil.css(element, 'height')); + var labelColor = KTUtil.getCssVariableValue('--bs-gray-800'); + + options = { + series: [{ + name: 'Inflation', + data: [1, 2.1, 1, 2.1, 4.1, 6.1, 4.1, 4.1, 2.1, 4.1, 2.1, 3.1, 1, 1, 2.1] + }], + chart: { + fontFamily: 'inherit', + height: height, + type: 'bar', + toolbar: { + show: false + } + }, + grid: { + show: false, + padding: { + top: 0, + bottom: 0, + left: 0, + right: 0 + } + }, + colors: ['#ffffff'], + plotOptions: { + bar: { + borderRadius: 2.5, + dataLabels: { + position: 'top', // top, center, bottom + }, + columnWidth: '20%' + } + }, + dataLabels: { + enabled: false, + formatter: function(val) { + return val + "%"; + }, + offsetY: -20, + style: { + fontSize: '12px', + colors: ["#304758"] + } + }, + xaxis: { + labels: { + show: false, + }, + categories: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "Jan", "Feb", "Mar"], + position: 'top', + axisBorder: { + show: false + }, + axisTicks: { + show: false + }, + crosshairs: { + show: false + }, + tooltip: { + enabled: false + } + }, + yaxis: { + show: false, + axisBorder: { + show: false + }, + axisTicks: { + show: false, + background: labelColor + }, + labels: { + show: false, + formatter: function(val) { + return val + "%"; + } + } + } + }; + + chart = new ApexCharts(element, options); + chart.render(); + }); + } + + var initMixedWidget16 = function() { + var element = document.getElementById("kt_charts_mixed_widget_16_chart"); + var height = parseInt(KTUtil.css(element, 'height')); + + if (!element) { + return; + } + + var options = { + labels: ["Total Members"], + series: [74], + chart: { + fontFamily: 'inherit', + height: height, + type: 'radialBar', + offsetY: 0 + }, + plotOptions: { + radialBar: { + startAngle: -90, + endAngle: 90, + + hollow: { + margin: 0, + size: "70%" + }, + dataLabels: { + showOn: "always", + name: { + show: true, + fontSize: "13px", + fontWeight: "700", + offsetY: -5, + color: KTUtil.getCssVariableValue('--bs-gray-500') + }, + value: { + color: KTUtil.getCssVariableValue('--bs-gray-700'), + fontSize: "30px", + fontWeight: "700", + offsetY: -40, + show: true + } + }, + track: { + background: KTUtil.getCssVariableValue('--bs-primary-light'), + strokeWidth: '100%' + } + } + }, + colors: [KTUtil.getCssVariableValue('--bs-primary')], + stroke: { + lineCap: "round", + } + }; + + var chart = new ApexCharts(element, options); + chart.render(); + } + + var initMixedWidget17 = function() { + var charts = document.querySelectorAll('.mixed-widget-17-chart'); + + [].slice.call(charts).map(function(element) { + var height = parseInt(KTUtil.css(element, 'height')); + + if (!element) { + return; + } + + var color = element.getAttribute('data-kt-chart-color'); + + var options = { + labels: ["Total Orders"], + series: [75], + chart: { + fontFamily: 'inherit', + height: height, + type: 'radialBar', + offsetY: 0 + }, + plotOptions: { + radialBar: { + startAngle: -90, + endAngle: 90, + hollow: { + margin: 0, + size: "55%" + }, + dataLabels: { + showOn: "always", + name: { + show: true, + fontSize: "12px", + fontWeight: "700", + offsetY: -5, + color: KTUtil.getCssVariableValue('--bs-gray-500') + }, + value: { + color: KTUtil.getCssVariableValue('--bs-gray-900'), + fontSize: "24px", + fontWeight: "600", + offsetY: -40, + show: true, + formatter: function (value) { + return '8,346'; + } + } + }, + track: { + background: KTUtil.getCssVariableValue('--bs-gray-300'), + strokeWidth: '100%' + } + } + }, + colors: [KTUtil.getCssVariableValue('--bs-' + color)], + stroke: { + lineCap: "round", + } + }; + + var chart = new ApexCharts(element, options); + chart.render(); + }); + } + + var initMixedWidget18 = function() { + var element = document.getElementById("kt_charts_mixed_widget_18_chart"); + var height = parseInt(KTUtil.css(element, 'height')); + + if ( !element ) { + return; + } + + var labelColor = KTUtil.getCssVariableValue('--bs-' + 'gray-800'); + var strokeColor = KTUtil.getCssVariableValue('--bs-' + 'gray-800'); + var fillColor = KTThemeMode.getMode() === "dark" ? KTUtil.getCssVariableValue('--bs-gray-200') : '#D6D6E0'; + + var options = { + series: [{ + name: 'Net Profit', + data: [30, 25, 45, 30, 55, 55] + }], + chart: { + fontFamily: 'inherit', + type: 'area', + height: height, + toolbar: { + show: false + }, + zoom: { + enabled: false + }, + sparkline: { + enabled: true + } + }, + plotOptions: {}, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + fill: { + type: 'solid', + opacity: 1 + }, + stroke: { + curve: 'smooth', + show: true, + width: 3, + colors: [strokeColor] + }, + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + }, + crosshairs: { + show: false, + position: 'front', + stroke: { + color: strokeColor, + width: 1, + dashArray: 3 + } + }, + tooltip: { + enabled: true, + formatter: undefined, + offsetY: 0, + style: { + fontSize: '12px' + } + } + }, + yaxis: { + min: 0, + max: 60, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function (val) { + return "$" + val + " thousands" + } + } + }, + colors: [fillColor], + markers: { + colors: [fillColor], + strokeColor: [strokeColor], + strokeWidth: 3 + } + }; + + var chart = new ApexCharts(element, options); + chart.render(); + } + + var initMixedWidget19 = function() { + var chart = { + self: null, + rendered: false + }; + + function initChart() { + var element = document.getElementById("kt_charts_mixed_widget_19_chart"); + var height = parseInt(KTUtil.css(element, 'height')); + + if ( !element ) { + return; + } + + var labelColor = KTUtil.getCssVariableValue('--bs-' + 'gray-800'); + var strokeColor = KTUtil.getCssVariableValue('--bs-' + 'info'); + var fillColor = KTUtil.getCssVariableValue('--bs-info-light') + + var options = { + series: [{ + name: 'Net Profit', + data: [30, 25, 45, 30, 55, 55] + }], + chart: { + fontFamily: 'inherit', + type: 'area', + height: height, + toolbar: { + show: false + }, + zoom: { + enabled: false + }, + sparkline: { + enabled: true + } + }, + plotOptions: {}, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + fill: { + type: 'solid', + opacity: 1 + }, + stroke: { + curve: 'smooth', + show: true, + width: 3, + colors: [strokeColor] + }, + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + }, + crosshairs: { + show: false, + position: 'front', + stroke: { + color: strokeColor, + width: 1, + dashArray: 3 + } + }, + tooltip: { + enabled: true, + formatter: undefined, + offsetY: 0, + style: { + fontSize: '12px' + } + } + }, + yaxis: { + min: 0, + max: 60, + labels: { + show: false, + style: { + colors: labelColor, + fontSize: '12px' + } + } + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function (val) { + return "$" + val + " thousands" + } + } + }, + colors: [fillColor], + markers: { + colors: [fillColor], + strokeColor: [strokeColor], + strokeWidth: 3 + } + }; + + chart.self = new ApexCharts(element, options); + + // Set timeout to properly get the parent elements width + setTimeout(function() { + chart.self.render(); + chart.rendered = true; + }, 200); + } + + initChart(); + + // Update chart on theme mode change + KTThemeMode.on("kt.thememode.change", function() { + if (chart.rendered) { + chart.self.destroy(); + } + + initChart(); + }); + } + + // Feeds Widgets + var initFeedWidget1 = function() { + var formEl = document.querySelector("#kt_forms_widget_1_form"); + var editorId = 'kt_forms_widget_1_editor'; + + if ( !formEl ) { + return; + } + + // init editor + var options = { + modules: { + toolbar: { + container: "#kt_forms_widget_1_editor_toolbar" + } + }, + placeholder: 'What is on your mind ?', + theme: 'snow' + }; + + if (!formEl) { + return; + } + + // Init editor + var editorObj = new Quill('#' + editorId, options); + } + + var initFeedsWidget4 = function() { + var btn = document.querySelector('#kt_widget_5_load_more_btn'); + var widget5 = document.querySelector('#kt_widget_5'); + + if (btn) { + btn.addEventListener('click', function(e){ + e.preventDefault(); + btn.setAttribute('data-kt-indicator', 'on'); + + setTimeout(function() { + btn.removeAttribute('data-kt-indicator'); + widget5.classList.remove('d-none'); + btn.classList.add('d-none'); + + KTUtil.scrollTo(widget5, 200); + }, 2000); + }); + } + } + + // Calendar + var initCalendarWidget1 = function() { + if (typeof FullCalendar === 'undefined' || !document.querySelector('#kt_calendar_widget_1')) { + return; + } + + var todayDate = moment().startOf('day'); + var YM = todayDate.format('YYYY-MM'); + var YESTERDAY = todayDate.clone().subtract(1, 'day').format('YYYY-MM-DD'); + var TODAY = todayDate.format('YYYY-MM-DD'); + var TOMORROW = todayDate.clone().add(1, 'day').format('YYYY-MM-DD'); + + var calendarEl = document.getElementById('kt_calendar_widget_1'); + var calendar = new FullCalendar.Calendar(calendarEl, { + headerToolbar: { + left: 'prev,next today', + center: 'title', + right: 'dayGridMonth,timeGridWeek,timeGridDay,listMonth' + }, + + height: 800, + contentHeight: 780, + aspectRatio: 3, // see: https://fullcalendar.io/docs/aspectRatio + + nowIndicator: true, + now: TODAY + 'T09:25:00', // just for demo + + views: { + dayGridMonth: { buttonText: 'month' }, + timeGridWeek: { buttonText: 'week' }, + timeGridDay: { buttonText: 'day' } + }, + + initialView: 'dayGridMonth', + initialDate: TODAY, + + editable: true, + dayMaxEvents: true, // allow "more" link when too many events + navLinks: true, + events: [ + { + title: 'All Day Event', + start: YM + '-01', + description: 'Toto lorem ipsum dolor sit incid idunt ut', + className: "fc-event-danger fc-event-solid-warning" + }, + { + title: 'Reporting', + start: YM + '-14T13:30:00', + description: 'Lorem ipsum dolor incid idunt ut labore', + end: YM + '-14', + className: "fc-event-success" + }, + { + title: 'Company Trip', + start: YM + '-02', + description: 'Lorem ipsum dolor sit tempor incid', + end: YM + '-03', + className: "fc-event-primary" + }, + { + title: 'ICT Expo 2017 - Product Release', + start: YM + '-03', + description: 'Lorem ipsum dolor sit tempor inci', + end: YM + '-05', + className: "fc-event-light fc-event-solid-primary" + }, + { + title: 'Dinner', + start: YM + '-12', + description: 'Lorem ipsum dolor sit amet, conse ctetur', + end: YM + '-10' + }, + { + id: 999, + title: 'Repeating Event', + start: YM + '-09T16:00:00', + description: 'Lorem ipsum dolor sit ncididunt ut labore', + className: "fc-event-danger" + }, + { + id: 1000, + title: 'Repeating Event', + description: 'Lorem ipsum dolor sit amet, labore', + start: YM + '-16T16:00:00' + }, + { + title: 'Conference', + start: YESTERDAY, + end: TOMORROW, + description: 'Lorem ipsum dolor eius mod tempor labore', + className: "fc-event-primary" + }, + { + title: 'Meeting', + start: TODAY + 'T10:30:00', + end: TODAY + 'T12:30:00', + description: 'Lorem ipsum dolor eiu idunt ut labore' + }, + { + title: 'Lunch', + start: TODAY + 'T12:00:00', + className: "fc-event-info", + description: 'Lorem ipsum dolor sit amet, ut labore' + }, + { + title: 'Meeting', + start: TODAY + 'T14:30:00', + className: "fc-event-warning", + description: 'Lorem ipsum conse ctetur adipi scing' + }, + { + title: 'Happy Hour', + start: TODAY + 'T17:30:00', + className: "fc-event-info", + description: 'Lorem ipsum dolor sit amet, conse ctetur' + }, + { + title: 'Dinner', + start: TOMORROW + 'T05:00:00', + className: "fc-event-solid-danger fc-event-light", + description: 'Lorem ipsum dolor sit ctetur adipi scing' + }, + { + title: 'Birthday Party', + start: TOMORROW + 'T07:00:00', + className: "fc-event-primary", + description: 'Lorem ipsum dolor sit amet, scing' + }, + { + title: 'Click for Google', + url: 'http://google.com/', + start: YM + '-28', + className: "fc-event-solid-info fc-event-light", + description: 'Lorem ipsum dolor sit amet, labore' + } + ] + }); + + calendar.render(); + } + + // Daterangepicker + var initDaterangepicker = function () { + if (!document.querySelector('#kt_dashboard_daterangepicker')) { + return; + } + + var picker = $('#kt_dashboard_daterangepicker'); + var start = moment(); + var end = moment(); + + function cb(start, end, label) { + var title = ''; + var range = ''; + + if ((end - start) < 100 || label == 'Today') { + title = 'Today:'; + range = start.format('MMM D'); + } else if (label == 'Yesterday') { + title = 'Yesterday:'; + range = start.format('MMM D'); + } else { + range = start.format('MMM D') + ' - ' + end.format('MMM D'); + } + + $('#kt_dashboard_daterangepicker_date').html(range); + $('#kt_dashboard_daterangepicker_title').html(title); + } + + picker.daterangepicker({ + direction: KTUtil.isRTL(), + startDate: start, + endDate: end, + opens: 'left', + applyClass: 'btn-primary', + cancelClass: 'btn-light-primary', + ranges: { + 'Today': [moment(), moment()], + 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], + 'Last 7 Days': [moment().subtract(6, 'days'), moment()], + 'Last 30 Days': [moment().subtract(29, 'days'), moment()], + 'This Month': [moment().startOf('month'), moment().endOf('month')], + 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] + } + }, cb); + + cb(start, end, ''); + } + + // Dark mode toggler + var initDarkModeToggle = function() { + var toggle = document.querySelector('#kt_user_menu_dark_mode_toggle'); + + if (toggle) { + toggle.addEventListener('click', function() { + window.location.href = this.getAttribute('data-kt-url'); + }); + } + } + + // Public methods + return { + init: function () { + // Daterangepicker + initDaterangepicker(); + + // Dark Mode + initDarkModeToggle(); + + // Statistics widgets + initStatisticsWidget3(); + initStatisticsWidget4(); + + // Charts widgets + initChartsWidget1(); + initChartsWidget2(); + initChartsWidget3(); + initChartsWidget4(); + initChartsWidget5(); + initChartsWidget6(); + initChartsWidget7(); + initChartsWidget8(); + + // Mixed widgets + initMixedWidget2(); + initMixedWidget3(); + initMixedWidget4(); + initMixedWidget5(); + initMixedWidget6(); + initMixedWidget7(); + initMixedWidget10(); + initMixedWidget12(); + initMixedWidget13(); + initMixedWidget14(); + initMixedWidget16(); + initMixedWidget17(); + initMixedWidget18(); + initMixedWidget19(); + + // Feeds + initFeedWidget1(); + initFeedsWidget4(); + + // Calendar + initCalendarWidget1(); + } + } +}(); + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTWidgets; +} + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTWidgets.init(); +}); diff --git a/think-backend.greaterchiangmai.com/public/assets/js/scripts.bundle.js b/think-backend.greaterchiangmai.com/public/assets/js/scripts.bundle.js new file mode 100644 index 0000000..abd6ce4 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/js/scripts.bundle.js @@ -0,0 +1,8194 @@ +"use strict"; + +// Class definition +var KTApp = function () { + var initialized = false; + var select2FocusFixInitialized = false; + var countUpInitialized = false; + + var createBootstrapTooltip = function (el, options) { + if (el.getAttribute("data-kt-initialized") === "1") { + return; + } + + var delay = {}; + + // Handle delay options + if (el.hasAttribute('data-bs-delay-hide')) { + delay['hide'] = el.getAttribute('data-bs-delay-hide'); + } + + if (el.hasAttribute('data-bs-delay-show')) { + delay['show'] = el.getAttribute('data-bs-delay-show'); + } + + if (delay) { + options['delay'] = delay; + } + + // Check dismiss options + if (el.hasAttribute('data-bs-dismiss') && el.getAttribute('data-bs-dismiss') == 'click') { + options['dismiss'] = 'click'; + } + + // Initialize popover + var tp = new bootstrap.Tooltip(el, options); + + // Handle dismiss + if (options['dismiss'] && options['dismiss'] === 'click') { + // Hide popover on element click + el.addEventListener("click", function (e) { + tp.hide(); + }); + } + + el.setAttribute("data-kt-initialized", "1"); + + return tp; + } + + var createBootstrapTooltips = function () { + var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')); + + var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) { + createBootstrapTooltip(tooltipTriggerEl, {}); + }); + } + + var createBootstrapPopover = function (el, options) { + if (el.getAttribute("data-kt-initialized") === "1") { + return; + } + + var delay = {}; + + // Handle delay options + if (el.hasAttribute('data-bs-delay-hide')) { + delay['hide'] = el.getAttribute('data-bs-delay-hide'); + } + + if (el.hasAttribute('data-bs-delay-show')) { + delay['show'] = el.getAttribute('data-bs-delay-show'); + } + + if (delay) { + options['delay'] = delay; + } + + // Handle dismiss option + if (el.getAttribute('data-bs-dismiss') == 'true') { + options['dismiss'] = true; + } + + if (options['dismiss'] === true) { + options['template'] = '' + } + + // Initialize popover + var popover = new bootstrap.Popover(el, options); + + // Handle dismiss click + if (options['dismiss'] === true) { + var dismissHandler = function (e) { + popover.hide(); + } + + el.addEventListener('shown.bs.popover', function () { + var dismissEl = document.getElementById(el.getAttribute('aria-describedby')); + dismissEl.addEventListener('click', dismissHandler); + }); + + el.addEventListener('hide.bs.popover', function () { + var dismissEl = document.getElementById(el.getAttribute('aria-describedby')); + dismissEl.removeEventListener('click', dismissHandler); + }); + } + + el.setAttribute("data-kt-initialized", "1"); + + return popover; + } + + var createBootstrapPopovers = function () { + var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')); + + var popoverList = popoverTriggerList.map(function (popoverTriggerEl) { + createBootstrapPopover(popoverTriggerEl, {}); + }); + } + + var createBootstrapToasts = function () { + var toastElList = [].slice.call(document.querySelectorAll('.toast')); + var toastList = toastElList.map(function (toastEl) { + if (toastEl.getAttribute("data-kt-initialized") === "1") { + return; + } + + toastEl.setAttribute("data-kt-initialized", "1"); + + return new bootstrap.Toast(toastEl, {}) + }); + } + + var createButtons = function () { + var buttonsGroup = [].slice.call(document.querySelectorAll('[data-kt-buttons="true"]')); + + buttonsGroup.map(function (group) { + if (group.getAttribute("data-kt-initialized") === "1") { + return; + } + + var selector = group.hasAttribute('data-kt-buttons-target') ? group.getAttribute('data-kt-buttons-target') : '.btn'; + var activeButtons = [].slice.call(group.querySelectorAll(selector)); + + // Toggle Handler + KTUtil.on(group, selector, 'click', function (e) { + activeButtons.map(function (button) { + button.classList.remove('active'); + }); + + this.classList.add('active'); + }); + + group.setAttribute("data-kt-initialized", "1"); + }); + } + + var createDateRangePickers = function() { + // Check if jQuery included + if (typeof jQuery == 'undefined') { + return; + } + + // Check if daterangepicker included + if (typeof $.fn.daterangepicker === 'undefined') { + return; + } + + var elements = [].slice.call(document.querySelectorAll('[data-kt-daterangepicker="true"]')); + var start = moment().subtract(29, 'days'); + var end = moment(); + + elements.map(function (element) { + if (element.getAttribute("data-kt-initialized") === "1") { + return; + } + + var display = element.querySelector('div'); + var attrOpens = element.hasAttribute('data-kt-daterangepicker-opens') ? element.getAttribute('data-kt-daterangepicker-opens') : 'left'; + var range = element.getAttribute('data-kt-daterangepicker-range'); + + var cb = function(start, end) { + var current = moment(); + + if (display) { + if ( current.isSame(start, "day") && current.isSame(end, "day") ) { + display.innerHTML = start.format('D MMM YYYY'); + } else { + display.innerHTML = start.format('D MMM YYYY') + ' - ' + end.format('D MMM YYYY'); + } + } + } + + if ( range === "today" ) { + start = moment(); + end = moment(); + } + + $(element).daterangepicker({ + startDate: start, + endDate: end, + opens: attrOpens, + ranges: { + 'Today': [moment(), moment()], + 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], + 'Last 7 Days': [moment().subtract(6, 'days'), moment()], + 'Last 30 Days': [moment().subtract(29, 'days'), moment()], + 'This Month': [moment().startOf('month'), moment().endOf('month')], + 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] + } + }, cb); + + cb(start, end); + + element.setAttribute("data-kt-initialized", "1"); + }); + } + + var createSelect2 = function () { + // Check if jQuery included + if (typeof jQuery == 'undefined') { + return; + } + + // Check if select2 included + if (typeof $.fn.select2 === 'undefined') { + return; + } + + var elements = [].slice.call(document.querySelectorAll('[data-control="select2"], [data-kt-select2="true"]')); + + elements.map(function (element) { + if (element.getAttribute("data-kt-initialized") === "1") { + return; + } + + var options = { + dir: document.body.getAttribute('direction') + }; + + if (element.getAttribute('data-hide-search') == 'true') { + options.minimumResultsForSearch = Infinity; + } + + $(element).select2(options); + + element.setAttribute("data-kt-initialized", "1"); + }); + + /* + * Hacky fix for a bug in select2 with jQuery 3.6.0's new nested-focus "protection" + * see: https://github.com/select2/select2/issues/5993 + * see: https://github.com/jquery/jquery/issues/4382 + * + * TODO: Recheck with the select2 GH issue and remove once this is fixed on their side + */ + + if (select2FocusFixInitialized === false) { + select2FocusFixInitialized = true; + + $(document).on('select2:open', function(e) { + var elements = document.querySelectorAll('.select2-container--open .select2-search__field'); + if (elements.length > 0) { + elements[elements.length - 1].focus(); + } + }); + } + } + + var createAutosize = function () { + if (typeof autosize === 'undefined') { + return; + } + + var inputs = [].slice.call(document.querySelectorAll('[data-kt-autosize="true"]')); + + inputs.map(function (input) { + if (input.getAttribute("data-kt-initialized") === "1") { + return; + } + + autosize(input); + + input.setAttribute("data-kt-initialized", "1"); + }); + } + + var createCountUp = function () { + if (typeof countUp === 'undefined') { + return; + } + + var elements = [].slice.call(document.querySelectorAll('[data-kt-countup="true"]:not(.counted)')); + + elements.map(function (element) { + if (KTUtil.isInViewport(element) && KTUtil.visible(element)) { + if (element.getAttribute("data-kt-initialized") === "1") { + return; + } + + var options = {}; + + var value = element.getAttribute('data-kt-countup-value'); + value = parseFloat(value.replace(/,/g, "")); + + if (element.hasAttribute('data-kt-countup-start-val')) { + options.startVal = parseFloat(element.getAttribute('data-kt-countup-start-val')); + } + + if (element.hasAttribute('data-kt-countup-duration')) { + options.duration = parseInt(element.getAttribute('data-kt-countup-duration')); + } + + if (element.hasAttribute('data-kt-countup-decimal-places')) { + options.decimalPlaces = parseInt(element.getAttribute('data-kt-countup-decimal-places')); + } + + if (element.hasAttribute('data-kt-countup-prefix')) { + options.prefix = element.getAttribute('data-kt-countup-prefix'); + } + + if (element.hasAttribute('data-kt-countup-separator')) { + options.separator = element.getAttribute('data-kt-countup-separator'); + } + + if (element.hasAttribute('data-kt-countup-suffix')) { + options.suffix = element.getAttribute('data-kt-countup-suffix'); + } + + var count = new countUp.CountUp(element, value, options); + + count.start(); + + element.classList.add('counted'); + + element.setAttribute("data-kt-initialized", "1"); + } + }); + } + + var createCountUpTabs = function () { + if (typeof countUp === 'undefined') { + return; + } + + if (countUpInitialized === false) { + // Initial call + createCountUp(); + + // Window scroll event handler + window.addEventListener('scroll', createCountUp); + } + + // Tabs shown event handler + var tabs = [].slice.call(document.querySelectorAll('[data-kt-countup-tabs="true"][data-bs-toggle="tab"]')); + tabs.map(function (tab) { + if (tab.getAttribute("data-kt-initialized") === "1") { + return; + } + + tab.addEventListener('shown.bs.tab', createCountUp); + + tab.setAttribute("data-kt-initialized", "1"); + }); + + countUpInitialized = true; + } + + var createTinySliders = function () { + if (typeof tns === 'undefined') { + return; + } + + // Init Slider + var initSlider = function (el) { + if (!el) { + return; + } + + const tnsOptions = {}; + + // Convert string boolean + const checkBool = function (val) { + if (val === 'true') { + return true; + } + if (val === 'false') { + return false; + } + return val; + }; + + // get extra options via data attributes + el.getAttributeNames().forEach(function (attrName) { + // more options; https://github.com/ganlanyuan/tiny-slider#options + if ((/^data-tns-.*/g).test(attrName)) { + let optionName = attrName.replace('data-tns-', '').toLowerCase().replace(/(?:[\s-])\w/g, function (match) { + return match.replace('-', '').toUpperCase(); + }); + + if (attrName === 'data-tns-responsive') { + // fix string with a valid json + const jsonStr = el.getAttribute(attrName).replace(/(\w+:)|(\w+ :)/g, function (matched) { + return '"' + matched.substring(0, matched.length - 1) + '":'; + }); + try { + // convert json string to object + tnsOptions[optionName] = JSON.parse(jsonStr); + } + catch (e) { + } + } + else { + tnsOptions[optionName] = checkBool(el.getAttribute(attrName)); + } + } + }); + + const opt = Object.assign({}, { + container: el, + slideBy: 'page', + autoplay: true, + autoplayButtonOutput: false, + }, tnsOptions); + + if (el.closest('.tns')) { + KTUtil.addClass(el.closest('.tns'), 'tns-initiazlied'); + } + + return tns(opt); + } + + // Sliders + const elements = Array.prototype.slice.call(document.querySelectorAll('[data-tns="true"]'), 0); + + if (!elements && elements.length === 0) { + return; + } + + elements.forEach(function (el) { + if (el.getAttribute("data-kt-initialized") === "1") { + return; + } + + initSlider(el); + + el.setAttribute("data-kt-initialized", "1"); + }); + } + + var initSmoothScroll = function () { + if (initialized === true) { + return; + } + + if (typeof SmoothScroll === 'undefined') { + return; + } + + new SmoothScroll('a[data-kt-scroll-toggle][href*="#"]', { + speed: 1000, + speedAsDuration: true, + offset: function (anchor, toggle) { + // Integer or Function returning an integer. How far to offset the scrolling anchor location in pixels + // This example is a function, but you could do something as simple as `offset: 25` + + // An example returning different values based on whether the clicked link was in the header nav or not + if (anchor.hasAttribute('data-kt-scroll-offset')) { + var val = KTUtil.getResponsiveValue(anchor.getAttribute('data-kt-scroll-offset')); + + return val; + } else { + return 0; + } + } + }); + } + + var initCard = function() { + // Toggle Handler + KTUtil.on(document.body, '[data-kt-card-action="remove"]', 'click', function (e) { + e.preventDefault(); + + const card = this.closest('.card'); + + if (!card) { + return; + } + + const confirmMessage = this.getAttribute("data-kt-card-confirm-message"); + const confirm = this.getAttribute("data-kt-card-confirm") === "true"; + + if (confirm) { + // Show message popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: confirmMessage ? confirmMessage : "Are you sure to remove ?", + icon: "warning", + buttonsStyling: false, + confirmButtonText: "Confirm", + denyButtonText: "Cancel", + customClass: { + confirmButton: "btn btn-primary", + denyButton: "btn btn-danger" + } + }).then(function (result) { + if (result.isConfirmed) { + card.remove(); + } + }); + } else { + card.remove(); + } + }); + } + + var initModal = function() { + var elements = Array.prototype.slice.call(document.querySelectorAll("[data-bs-stacked-modal]")); + + if (elements && elements.length > 0) { + elements.forEach((element) => { + if (element.getAttribute("data-kt-initialized") === "1") { + return; + } + + element.setAttribute("data-kt-initialized", "1"); + + element.addEventListener("click", function(e) { + e.preventDefault(); + + const modalEl = document.querySelector(this.getAttribute("data-bs-stacked-modal")); + + if (modalEl) { + const modal = new bootstrap.Modal(modalEl); + modal.show(); + } + }); + }); + } + } + + var initCheck = function () { + if (initialized === true) { + return; + } + + // Toggle Handler + KTUtil.on(document.body, '[data-kt-check="true"]', 'change', function (e) { + var check = this; + var targets = document.querySelectorAll(check.getAttribute('data-kt-check-target')); + + KTUtil.each(targets, function (target) { + if (target.type == 'checkbox') { + target.checked = check.checked; + } else { + target.classList.toggle('active'); + } + }); + }); + } + + var initBootstrapCollapse = function() { + if (initialized === true) { + return; + } + + KTUtil.on(document.body, '.collapsible[data-bs-toggle="collapse"]', 'click', function(e) { + if (this.classList.contains('collapsed')) { + this.classList.remove('active'); + this.blur(); + } else { + this.classList.add('active'); + } + + if (this.hasAttribute('data-kt-toggle-text')) { + var text = this.getAttribute('data-kt-toggle-text'); + var target = this.querySelector('[data-kt-toggle-text-target="true"]'); + var target = target ? target : this; + + this.setAttribute('data-kt-toggle-text', target.innerText); + target.innerText = text; + } + }); + } + + var initBootstrapRotate = function() { + if (initialized === true) { + return; + } + + KTUtil.on(document.body, '[data-kt-rotate="true"]', 'click', function(e) { + if (this.classList.contains('active')) { + this.classList.remove('active'); + this.blur(); + } else { + this.classList.add('active'); + } + }); + } + + var initLozad = function() { + // Check if lozad included + if (typeof lozad === 'undefined') { + return; + } + + const observer = lozad(); // lazy loads elements with default selector as '.lozad' + observer.observe(); + } + + var showPageLoading = function() { + document.body.classList.add('page-loading'); + document.body.setAttribute('data-kt-app-page-loading', "on"); + } + + var hidePageLoading = function() { + // CSS3 Transitions only after page load(.page-loading or .app-page-loading class added to body tag and remove with JS on page load) + document.body.classList.remove('page-loading'); + document.body.removeAttribute('data-kt-app-page-loading'); + } + + return { + init: function () { + initLozad(); + + initSmoothScroll(); + + initCard(); + + initModal(); + + initCheck(); + + initBootstrapCollapse(); + + initBootstrapRotate(); + + createBootstrapTooltips(); + + createBootstrapPopovers(); + + createBootstrapToasts(); + + createDateRangePickers(); + + createButtons(); + + createSelect2(); + + createCountUp(); + + createCountUpTabs(); + + createAutosize(); + + createTinySliders(); + + initialized = true; + }, + + showPageLoading: function () { + showPageLoading(); + }, + + hidePageLoading: function () { + hidePageLoading(); + }, + + createBootstrapPopover: function(el, options) { + return createBootstrapPopover(el, options); + }, + + createBootstrapTooltip: function(el, options) { + return createBootstrapTooltip(el, options); + } + }; +}(); + +// Declare KTApp for Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTApp; +} +"use strict"; + +// Class definition +var KTBlockUI = function(element, options) { + ////////////////////////////// + // ** Private variables ** // + ////////////////////////////// + var the = this; + + if ( typeof element === "undefined" || element === null ) { + return; + } + + // Default options + var defaultOptions = { + zIndex: false, + overlayClass: '', + overflow: 'hidden', + message: '' + }; + + //////////////////////////// + // ** Private methods ** // + //////////////////////////// + + var _construct = function() { + if ( KTUtil.data(element).has('blockui') ) { + the = KTUtil.data(element).get('blockui'); + } else { + _init(); + } + } + + var _init = function() { + // Variables + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.element = element; + the.overlayElement = null; + the.blocked = false; + the.positionChanged = false; + the.overflowChanged = false; + + // Bind Instance + KTUtil.data(the.element).set('blockui', the); + } + + var _block = function() { + if ( KTEventHandler.trigger(the.element, 'kt.blockui.block', the) === false ) { + return; + } + + var isPage = (the.element.tagName === 'BODY'); + + var position = KTUtil.css(the.element, 'position'); + var overflow = KTUtil.css(the.element, 'overflow'); + var zIndex = isPage ? 10000 : 1; + + if (the.options.zIndex > 0) { + zIndex = the.options.zIndex; + } else { + if (KTUtil.css(the.element, 'z-index') != 'auto') { + zIndex = KTUtil.css(the.element, 'z-index'); + } + } + + the.element.classList.add('blockui'); + + if (position === "absolute" || position === "relative" || position === "fixed") { + KTUtil.css(the.element, 'position', 'relative'); + the.positionChanged = true; + } + + if (the.options.overflow === 'hidden' && overflow === 'visible') { + KTUtil.css(the.element, 'overflow', 'hidden'); + the.overflowChanged = true; + } + + the.overlayElement = document.createElement('DIV'); + the.overlayElement.setAttribute('class', 'blockui-overlay ' + the.options.overlayClass); + + the.overlayElement.innerHTML = the.options.message; + + KTUtil.css(the.overlayElement, 'z-index', zIndex); + + the.element.append(the.overlayElement); + the.blocked = true; + + KTEventHandler.trigger(the.element, 'kt.blockui.after.blocked', the) + } + + var _release = function() { + if ( KTEventHandler.trigger(the.element, 'kt.blockui.release', the) === false ) { + return; + } + + the.element.classList.add('blockui'); + + if (the.positionChanged) { + KTUtil.css(the.element, 'position', ''); + } + + if (the.overflowChanged) { + KTUtil.css(the.element, 'overflow', ''); + } + + if (the.overlayElement) { + KTUtil.remove(the.overlayElement); + } + + the.blocked = false; + + KTEventHandler.trigger(the.element, 'kt.blockui.released', the); + } + + var _isBlocked = function() { + return the.blocked; + } + + var _destroy = function() { + KTUtil.data(the.element).remove('blockui'); + } + + // Construct class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Plugin API + the.block = function() { + _block(); + } + + the.release = function() { + _release(); + } + + the.isBlocked = function() { + return _isBlocked(); + } + + the.destroy = function() { + return _destroy(); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name, handlerId) { + return KTEventHandler.off(the.element, name, handlerId); + } + + the.trigger = function(name, event) { + return KTEventHandler.trigger(the.element, name, event, the, event); + } +}; + +// Static methods +KTBlockUI.getInstance = function(element) { + if (element !== null && KTUtil.data(element).has('blockui')) { + return KTUtil.data(element).get('blockui'); + } else { + return null; + } +} + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTBlockUI; +} +"use strict"; +// DOCS: https://javascript.info/cookie + +// Class definition +var KTCookie = function() { + return { + // returns the cookie with the given name, + // or undefined if not found + get: function(name) { + var matches = document.cookie.match(new RegExp( + "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" + )); + + return matches ? decodeURIComponent(matches[1]) : null; + }, + + // Please note that a cookie value is encoded, + // so getCookie uses a built-in decodeURIComponent function to decode it. + set: function(name, value, options) { + if ( typeof options === "undefined" || options === null ) { + options = {}; + } + + options = Object.assign({}, { + path: '/' + }, options); + + if ( options.expires instanceof Date ) { + options.expires = options.expires.toUTCString(); + } + + var updatedCookie = encodeURIComponent(name) + "=" + encodeURIComponent(value); + + for ( var optionKey in options ) { + if ( options.hasOwnProperty(optionKey) === false ) { + continue; + } + + updatedCookie += "; " + optionKey; + var optionValue = options[optionKey]; + + if ( optionValue !== true ) { + updatedCookie += "=" + optionValue; + } + } + + document.cookie = updatedCookie; + }, + + // To remove a cookie, we can call it with a negative expiration date: + remove: function(name) { + this.set(name, "", { + 'max-age': -1 + }); + } + } +}(); + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTCookie; +} + +"use strict"; + +// Class definition +var KTDialer = function(element, options) { + //////////////////////////// + // ** Private variables ** // + //////////////////////////// + var the = this; + + if (!element) { + return; + } + + // Default options + var defaultOptions = { + min: null, + max: null, + step: 1, + decimals: 0, + prefix: "", + suffix: "" + }; + + //////////////////////////// + // ** Private methods ** // + //////////////////////////// + + // Constructor + var _construct = function() { + if ( KTUtil.data(element).has('dialer') === true ) { + the = KTUtil.data(element).get('dialer'); + } else { + _init(); + } + } + + // Initialize + var _init = function() { + // Variables + the.options = KTUtil.deepExtend({}, defaultOptions, options); + + // Elements + the.element = element; + the.incElement = the.element.querySelector('[data-kt-dialer-control="increase"]'); + the.decElement = the.element.querySelector('[data-kt-dialer-control="decrease"]'); + the.inputElement = the.element.querySelector('input[type]'); + + // Set Values + if (_getOption('decimals')) { + the.options.decimals = parseInt(_getOption('decimals')); + } + + if (_getOption('prefix')) { + the.options.prefix = _getOption('prefix'); + } + + if (_getOption('suffix')) { + the.options.suffix = _getOption('suffix'); + } + + if (_getOption('step')) { + the.options.step = parseFloat(_getOption('step')); + } + + if (_getOption('min')) { + the.options.min = parseFloat(_getOption('min')); + } + + if (_getOption('max')) { + the.options.max = parseFloat(_getOption('max')); + } + + the.value = parseFloat(the.inputElement.value.replace(/[^\d.]/g, '')); + + _setValue(); + + // Event Handlers + _handlers(); + + // Bind Instance + KTUtil.data(the.element).set('dialer', the); + } + + // Handlers + var _handlers = function() { + KTUtil.addEvent(the.incElement, 'click', function(e) { + e.preventDefault(); + + _increase(); + }); + + KTUtil.addEvent(the.decElement, 'click', function(e) { + e.preventDefault(); + + _decrease(); + }); + + KTUtil.addEvent(the.inputElement, 'input', function(e) { + e.preventDefault(); + + _setValue(); + }); + } + + // Event handlers + var _increase = function() { + // Trigger "after.dialer" event + KTEventHandler.trigger(the.element, 'kt.dialer.increase', the); + + the.inputElement.value = the.value + the.options.step; + _setValue(); + + // Trigger "before.dialer" event + KTEventHandler.trigger(the.element, 'kt.dialer.increased', the); + + return the; + } + + var _decrease = function() { + // Trigger "after.dialer" event + KTEventHandler.trigger(the.element, 'kt.dialer.decrease', the); + + the.inputElement.value = the.value - the.options.step; + + _setValue(); + + // Trigger "before.dialer" event + KTEventHandler.trigger(the.element, 'kt.dialer.decreased', the); + + return the; + } + + // Set Input Value + var _setValue = function(value) { + // Trigger "after.dialer" event + KTEventHandler.trigger(the.element, 'kt.dialer.change', the); + + if (value !== undefined) { + the.value = value; + } else { + the.value = _parse(the.inputElement.value); + } + + if (the.options.min !== null && the.value < the.options.min) { + the.value = the.options.min; + } + + if (the.options.max !== null && the.value > the.options.max) { + the.value = the.options.max; + } + + the.inputElement.value = _format(the.value); + + // Trigger input change event + the.inputElement.dispatchEvent(new Event('change')); + + // Trigger "after.dialer" event + KTEventHandler.trigger(the.element, 'kt.dialer.changed', the); + } + + var _parse = function(val) { + val = val + .replace(/[^0-9.-]/g, '') // remove chars except number, hyphen, point. + .replace(/(\..*)\./g, '$1') // remove multiple points. + .replace(/(?!^)-/g, '') // remove middle hyphen. + .replace(/^0+(\d)/gm, '$1'); // remove multiple leading zeros. <-- I added this. + + val = parseFloat(val); + + if (isNaN(val)) { + val = 0; + } + + return val; + } + + // Format + var _format = function(val){ + return the.options.prefix + parseFloat(val).toFixed(the.options.decimals) + the.options.suffix; + } + + // Get option + var _getOption = function(name) { + if ( the.element.hasAttribute('data-kt-dialer-' + name) === true ) { + var attr = the.element.getAttribute('data-kt-dialer-' + name); + var value = attr; + + return value; + } else { + return null; + } + } + + var _destroy = function() { + KTUtil.data(the.element).remove('dialer'); + } + + // Construct class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Plugin API + the.setMinValue = function(value) { + the.options.min = value; + } + + the.setMaxValue = function(value) { + the.options.max = value; + } + + the.setValue = function(value) { + _setValue(value); + } + + the.getValue = function() { + return the.inputElement.value; + } + + the.update = function() { + _setValue(); + } + + the.increase = function() { + return _increase(); + } + + the.decrease = function() { + return _decrease(); + } + + the.getElement = function() { + return the.element; + } + + the.destroy = function() { + return _destroy(); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name, handlerId) { + return KTEventHandler.off(the.element, name, handlerId); + } + + the.trigger = function(name, event) { + return KTEventHandler.trigger(the.element, name, event, the, event); + } +}; + +// Static methods +KTDialer.getInstance = function(element) { + if ( element !== null && KTUtil.data(element).has('dialer') ) { + return KTUtil.data(element).get('dialer'); + } else { + return null; + } +} + +// Create instances +KTDialer.createInstances = function(selector = '[data-kt-dialer="true"]') { + // Get instances + var elements = document.querySelectorAll(selector); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + new KTDialer(elements[i]); + } + } +} + +// Global initialization +KTDialer.init = function() { + KTDialer.createInstances(); +}; + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTDialer; +} +"use strict"; + +var KTDrawerHandlersInitialized = false; + +// Class definition +var KTDrawer = function(element, options) { + ////////////////////////////// + // ** Private variables ** // + ////////////////////////////// + var the = this; + + if ( typeof element === "undefined" || element === null ) { + return; + } + + // Default options + var defaultOptions = { + overlay: true, + direction: 'end', + baseClass: 'drawer', + overlayClass: 'drawer-overlay' + }; + + //////////////////////////// + // ** Private methods ** // + //////////////////////////// + + var _construct = function() { + if ( KTUtil.data(element).has('drawer') ) { + the = KTUtil.data(element).get('drawer'); + } else { + _init(); + } + } + + var _init = function() { + // Variables + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.uid = KTUtil.getUniqueId('drawer'); + the.element = element; + the.overlayElement = null; + the.name = the.element.getAttribute('data-kt-drawer-name'); + the.shown = false; + the.lastWidth; + the.toggleElement = null; + + // Set initialized + the.element.setAttribute('data-kt-drawer', 'true'); + + // Event Handlers + _handlers(); + + // Update Instance + _update(); + + // Bind Instance + KTUtil.data(the.element).set('drawer', the); + } + + var _handlers = function() { + var togglers = _getOption('toggle'); + var closers = _getOption('close'); + + if ( togglers !== null && togglers.length > 0 ) { + KTUtil.on(document.body, togglers, 'click', function(e) { + e.preventDefault(); + + the.toggleElement = this; + _toggle(); + }); + } + + if ( closers !== null && closers.length > 0 ) { + KTUtil.on(document.body, closers, 'click', function(e) { + e.preventDefault(); + + the.closeElement = this; + _hide(); + }); + } + } + + var _toggle = function() { + if ( KTEventHandler.trigger(the.element, 'kt.drawer.toggle', the) === false ) { + return; + } + + if ( the.shown === true ) { + _hide(); + } else { + _show(); + } + + KTEventHandler.trigger(the.element, 'kt.drawer.toggled', the); + } + + var _hide = function() { + if ( KTEventHandler.trigger(the.element, 'kt.drawer.hide', the) === false ) { + return; + } + + the.shown = false; + + _deleteOverlay(); + + document.body.removeAttribute('data-kt-drawer-' + the.name, 'on'); + document.body.removeAttribute('data-kt-drawer'); + + KTUtil.removeClass(the.element, the.options.baseClass + '-on'); + + if ( the.toggleElement !== null ) { + KTUtil.removeClass(the.toggleElement, 'active'); + } + + KTEventHandler.trigger(the.element, 'kt.drawer.after.hidden', the) === false + } + + var _show = function() { + if ( KTEventHandler.trigger(the.element, 'kt.drawer.show', the) === false ) { + return; + } + + the.shown = true; + + _createOverlay(); + document.body.setAttribute('data-kt-drawer-' + the.name, 'on'); + document.body.setAttribute('data-kt-drawer', 'on'); + + KTUtil.addClass(the.element, the.options.baseClass + '-on'); + + if ( the.toggleElement !== null ) { + KTUtil.addClass(the.toggleElement, 'active'); + } + + KTEventHandler.trigger(the.element, 'kt.drawer.shown', the); + } + + var _update = function() { + var width = _getWidth(); + var direction = _getOption('direction'); + + var top = _getOption('top'); + var bottom = _getOption('bottom'); + var start = _getOption('start'); + var end = _getOption('end'); + + // Reset state + if ( KTUtil.hasClass(the.element, the.options.baseClass + '-on') === true && String(document.body.getAttribute('data-kt-drawer-' + the.name + '-')) === 'on' ) { + the.shown = true; + } else { + the.shown = false; + } + + // Activate/deactivate + if ( _getOption('activate') === true ) { + KTUtil.addClass(the.element, the.options.baseClass); + KTUtil.addClass(the.element, the.options.baseClass + '-' + direction); + + KTUtil.css(the.element, 'width', width, true); + the.lastWidth = width; + + if (top) { + KTUtil.css(the.element, 'top', top); + } + + if (bottom) { + KTUtil.css(the.element, 'bottom', bottom); + } + + if (start) { + if (KTUtil.isRTL()) { + KTUtil.css(the.element, 'right', start); + } else { + KTUtil.css(the.element, 'left', start); + } + } + + if (end) { + if (KTUtil.isRTL()) { + KTUtil.css(the.element, 'left', end); + } else { + KTUtil.css(the.element, 'right', end); + } + } + } else { + KTUtil.removeClass(the.element, the.options.baseClass); + KTUtil.removeClass(the.element, the.options.baseClass + '-' + direction); + + KTUtil.css(the.element, 'width', ''); + + if (top) { + KTUtil.css(the.element, 'top', ''); + } + + if (bottom) { + KTUtil.css(the.element, 'bottom', ''); + } + + if (start) { + if (KTUtil.isRTL()) { + KTUtil.css(the.element, 'right', ''); + } else { + KTUtil.css(the.element, 'left', ''); + } + } + + if (end) { + if (KTUtil.isRTL()) { + KTUtil.css(the.element, 'left', ''); + } else { + KTUtil.css(the.element, 'right', ''); + } + } + + _hide(); + } + } + + var _createOverlay = function() { + if ( _getOption('overlay') === true ) { + the.overlayElement = document.createElement('DIV'); + + KTUtil.css(the.overlayElement, 'z-index', KTUtil.css(the.element, 'z-index') - 1); // update + + document.body.append(the.overlayElement); + + KTUtil.addClass(the.overlayElement, _getOption('overlay-class')); + + KTUtil.addEvent(the.overlayElement, 'click', function(e) { + e.preventDefault(); + + if ( _getOption('permanent') !== true ) { + _hide(); + } + }); + } + } + + var _deleteOverlay = function() { + if ( the.overlayElement !== null ) { + KTUtil.remove(the.overlayElement); + } + } + + var _getOption = function(name) { + if ( the.element.hasAttribute('data-kt-drawer-' + name) === true ) { + var attr = the.element.getAttribute('data-kt-drawer-' + name); + var value = KTUtil.getResponsiveValue(attr); + + if ( value !== null && String(value) === 'true' ) { + value = true; + } else if ( value !== null && String(value) === 'false' ) { + value = false; + } + + return value; + } else { + var optionName = KTUtil.snakeToCamel(name); + + if ( the.options[optionName] ) { + return KTUtil.getResponsiveValue(the.options[optionName]); + } else { + return null; + } + } + } + + var _getWidth = function() { + var width = _getOption('width'); + + if ( width === 'auto') { + width = KTUtil.css(the.element, 'width'); + } + + return width; + } + + var _destroy = function() { + KTUtil.data(the.element).remove('drawer'); + } + + // Construct class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Plugin API + the.toggle = function() { + return _toggle(); + } + + the.show = function() { + return _show(); + } + + the.hide = function() { + return _hide(); + } + + the.isShown = function() { + return the.shown; + } + + the.update = function() { + _update(); + } + + the.goElement = function() { + return the.element; + } + + the.destroy = function() { + return _destroy(); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name, handlerId) { + return KTEventHandler.off(the.element, name, handlerId); + } + + the.trigger = function(name, event) { + return KTEventHandler.trigger(the.element, name, event, the, event); + } +}; + +// Static methods +KTDrawer.getInstance = function(element) { + if (element !== null && KTUtil.data(element).has('drawer')) { + return KTUtil.data(element).get('drawer'); + } else { + return null; + } +} + +// Hide all drawers and skip one if provided +KTDrawer.hideAll = function(skip = null, selector = '[data-kt-drawer="true"]') { + var items = document.querySelectorAll(selector); + + if (items && items.length > 0) { + for (var i = 0, len = items.length; i < len; i++) { + var item = items[i]; + var drawer = KTDrawer.getInstance(item); + + if (!drawer) { + continue; + } + + if ( skip ) { + if ( item !== skip ) { + drawer.hide(); + } + } else { + drawer.hide(); + } + } + } +} + +// Update all drawers +KTDrawer.updateAll = function(selector = '[data-kt-drawer="true"]') { + var items = document.querySelectorAll(selector); + + if (items && items.length > 0) { + for (var i = 0, len = items.length; i < len; i++) { + var drawer = KTDrawer.getInstance(items[i]); + + if (drawer) { + drawer.update(); + } + } + } +} + +// Create instances +KTDrawer.createInstances = function(selector = '[data-kt-drawer="true"]') { + // Initialize Menus + var elements = document.querySelectorAll(selector); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + new KTDrawer(elements[i]); + } + } +} + +// Toggle instances +KTDrawer.handleShow = function() { + // External drawer toggle handler + KTUtil.on(document.body, '[data-kt-drawer-show="true"][data-kt-drawer-target]', 'click', function(e) { + e.preventDefault(); + + var element = document.querySelector(this.getAttribute('data-kt-drawer-target')); + + if (element) { + KTDrawer.getInstance(element).show(); + } + }); +} + +// Dismiss instances +KTDrawer.handleDismiss = function() { + // External drawer toggle handler + KTUtil.on(document.body, '[data-kt-drawer-dismiss="true"]', 'click', function(e) { + var element = this.closest('[data-kt-drawer="true"]'); + + if (element) { + var drawer = KTDrawer.getInstance(element); + if (drawer.isShown()) { + drawer.hide(); + } + } + }); +} + +// Handle resize +KTDrawer.handleResize = function() { + // Window resize Handling + window.addEventListener('resize', function() { + var timer; + + KTUtil.throttle(timer, function() { + // Locate and update drawer instances on window resize + var elements = document.querySelectorAll('[data-kt-drawer="true"]'); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + var drawer = KTDrawer.getInstance(elements[i]); + if (drawer) { + drawer.update(); + } + } + } + }, 200); + }); +} + +// Global initialization +KTDrawer.init = function() { + KTDrawer.createInstances(); + + if (KTDrawerHandlersInitialized === false) { + KTDrawer.handleResize(); + KTDrawer.handleShow(); + KTDrawer.handleDismiss(); + + KTDrawerHandlersInitialized = true; + } +}; + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTDrawer; +} +"use strict"; + +// Class definition +var KTEventHandler = function() { + //////////////////////////// + // ** Private Variables ** // + //////////////////////////// + var _handlers = {}; + + //////////////////////////// + // ** Private Methods ** // + //////////////////////////// + var _triggerEvent = function(element, name, target) { + var returnValue = true; + var eventValue; + + if ( KTUtil.data(element).has(name) === true ) { + var handlerIds = KTUtil.data(element).get(name); + var handlerId; + + for (var i = 0; i < handlerIds.length; i++) { + handlerId = handlerIds[i]; + + if ( _handlers[name] && _handlers[name][handlerId] ) { + var handler = _handlers[name][handlerId]; + var value; + + if ( handler.name === name ) { + if ( handler.one == true ) { + if ( handler.fired == false ) { + _handlers[name][handlerId].fired = true; + + eventValue = handler.callback.call(this, target); + } + } else { + eventValue = handler.callback.call(this, target); + } + + if ( eventValue === false ) { + returnValue = false; + } + } + } + } + } + + return returnValue; + } + + var _addEvent = function(element, name, callback, one) { + var handlerId = KTUtil.getUniqueId('event'); + var handlerIds = KTUtil.data(element).get(name); + + if ( !handlerIds ) { + handlerIds = []; + } + + handlerIds.push(handlerId); + + KTUtil.data(element).set(name, handlerIds); + + if ( !_handlers[name] ) { + _handlers[name] = {}; + } + + _handlers[name][handlerId] = { + name: name, + callback: callback, + one: one, + fired: false + }; + + return handlerId; + } + + var _removeEvent = function(element, name, handlerId) { + var handlerIds = KTUtil.data(element).get(name); + var index = handlerIds && handlerIds.indexOf(handlerId); + + if (index !== -1) { + handlerIds.splice(index, 1); + KTUtil.data(element).set(name, handlerIds); + } + + if (_handlers[name] && _handlers[name][handlerId]) { + delete _handlers[name][handlerId]; + } + } + + //////////////////////////// + // ** Public Methods ** // + //////////////////////////// + return { + trigger: function(element, name, target) { + return _triggerEvent(element, name, target); + }, + + on: function(element, name, handler) { + return _addEvent(element, name, handler); + }, + + one: function(element, name, handler) { + return _addEvent(element, name, handler, true); + }, + + off: function(element, name, handlerId) { + return _removeEvent(element, name, handlerId); + }, + + debug: function() { + for (var b in _handlers) { + if ( _handlers.hasOwnProperty(b) ) console.log(b); + } + } + } +}(); + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTEventHandler; +} + +"use strict"; + +// Class definition +var KTFeedback = function(options) { + //////////////////////////// + // ** Private Variables ** // + //////////////////////////// + var the = this; + + // Default options + var defaultOptions = { + 'width' : 100, + 'placement' : 'top-center', + 'content' : '', + 'type': 'popup' + }; + + //////////////////////////// + // ** Private methods ** // + //////////////////////////// + + var _construct = function() { + _init(); + } + + var _init = function() { + // Variables + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.uid = KTUtil.getUniqueId('feedback'); + the.element; + the.shown = false; + + // Event Handlers + _handlers(); + + // Bind Instance + KTUtil.data(the.element).set('feedback', the); + } + + var _handlers = function() { + KTUtil.addEvent(the.element, 'click', function(e) { + e.preventDefault(); + + _go(); + }); + } + + var _show = function() { + if ( KTEventHandler.trigger(the.element, 'kt.feedback.show', the) === false ) { + return; + } + + if ( the.options.type === 'popup') { + _showPopup(); + } + + KTEventHandler.trigger(the.element, 'kt.feedback.shown', the); + + return the; + } + + var _hide = function() { + if ( KTEventHandler.trigger(the.element, 'kt.feedback.hide', the) === false ) { + return; + } + + if ( the.options.type === 'popup') { + _hidePopup(); + } + + the.shown = false; + + KTEventHandler.trigger(the.element, 'kt.feedback.hidden', the); + + return the; + } + + var _showPopup = function() { + the.element = document.createElement("DIV"); + + KTUtil.addClass(the.element, 'feedback feedback-popup'); + KTUtil.setHTML(the.element, the.options.content); + + if (the.options.placement == 'top-center') { + _setPopupTopCenterPosition(); + } + + document.body.appendChild(the.element); + + KTUtil.addClass(the.element, 'feedback-shown'); + + the.shown = true; + } + + var _setPopupTopCenterPosition = function() { + var width = KTUtil.getResponsiveValue(the.options.width); + var height = KTUtil.css(the.element, 'height'); + + KTUtil.addClass(the.element, 'feedback-top-center'); + + KTUtil.css(the.element, 'width', width); + KTUtil.css(the.element, 'left', '50%'); + KTUtil.css(the.element, 'top', '-' + height); + } + + var _hidePopup = function() { + the.element.remove(); + } + + var _destroy = function() { + KTUtil.data(the.element).remove('feedback'); + } + + // Construct class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Plugin API + the.show = function() { + return _show(); + } + + the.hide = function() { + return _hide(); + } + + the.isShown = function() { + return the.shown; + } + + the.getElement = function() { + return the.element; + } + + the.destroy = function() { + return _destroy(); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name, handlerId) { + return KTEventHandler.off(the.element, name, handlerId); + } + + the.trigger = function(name, event) { + return KTEventHandler.trigger(the.element, name, event, the, event); + } +}; + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTFeedback; +} + +"use strict"; + +// Class definition +var KTImageInput = function(element, options) { + //////////////////////////// + // ** Private Variables ** // + //////////////////////////// + var the = this; + + if ( typeof element === "undefined" || element === null ) { + return; + } + + // Default Options + var defaultOptions = { + + }; + + //////////////////////////// + // ** Private Methods ** // + //////////////////////////// + + var _construct = function() { + if ( KTUtil.data(element).has('image-input') === true ) { + the = KTUtil.data(element).get('image-input'); + } else { + _init(); + } + } + + var _init = function() { + // Variables + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.uid = KTUtil.getUniqueId('image-input'); + + // Elements + the.element = element; + the.inputElement = KTUtil.find(element, 'input[type="file"]'); + the.wrapperElement = KTUtil.find(element, '.image-input-wrapper'); + the.cancelElement = KTUtil.find(element, '[data-kt-image-input-action="cancel"]'); + the.removeElement = KTUtil.find(element, '[data-kt-image-input-action="remove"]'); + the.hiddenElement = KTUtil.find(element, 'input[type="hidden"]'); + the.src = KTUtil.css(the.wrapperElement, 'backgroundImage'); + + // Set initialized + the.element.setAttribute('data-kt-image-input', 'true'); + + // Event Handlers + _handlers(); + + // Bind Instance + KTUtil.data(the.element).set('image-input', the); + } + + // Init Event Handlers + var _handlers = function() { + KTUtil.addEvent(the.inputElement, 'change', _change); + KTUtil.addEvent(the.cancelElement, 'click', _cancel); + KTUtil.addEvent(the.removeElement, 'click', _remove); + } + + // Event Handlers + var _change = function(e) { + e.preventDefault(); + + if ( the.inputElement !== null && the.inputElement.files && the.inputElement.files[0] ) { + // Fire change event + if ( KTEventHandler.trigger(the.element, 'kt.imageinput.change', the) === false ) { + return; + } + + var reader = new FileReader(); + + reader.onload = function(e) { + KTUtil.css(the.wrapperElement, 'background-image', 'url('+ e.target.result +')'); + } + + reader.readAsDataURL(the.inputElement.files[0]); + + the.element.classList.add('image-input-changed'); + the.element.classList.remove('image-input-empty'); + + // Fire removed event + KTEventHandler.trigger(the.element, 'kt.imageinput.changed', the); + } + } + + var _cancel = function(e) { + e.preventDefault(); + + // Fire cancel event + if ( KTEventHandler.trigger(the.element, 'kt.imageinput.cancel', the) === false ) { + return; + } + + the.element.classList.remove('image-input-changed'); + the.element.classList.remove('image-input-empty'); + + if (the.src === 'none') { + KTUtil.css(the.wrapperElement, 'background-image', ''); + the.element.classList.add('image-input-empty'); + } else { + KTUtil.css(the.wrapperElement, 'background-image', the.src); + } + + the.inputElement.value = ""; + + if ( the.hiddenElement !== null ) { + the.hiddenElement.value = "0"; + } + + // Fire canceled event + KTEventHandler.trigger(the.element, 'kt.imageinput.canceled', the); + } + + var _remove = function(e) { + e.preventDefault(); + + // Fire remove event + if ( KTEventHandler.trigger(the.element, 'kt.imageinput.remove', the) === false ) { + return; + } + + the.element.classList.remove('image-input-changed'); + the.element.classList.add('image-input-empty'); + + KTUtil.css(the.wrapperElement, 'background-image', "none"); + the.inputElement.value = ""; + + if ( the.hiddenElement !== null ) { + the.hiddenElement.value = "1"; + } + + // Fire removed event + KTEventHandler.trigger(the.element, 'kt.imageinput.removed', the); + } + + var _destroy = function() { + KTUtil.data(the.element).remove('image-input'); + } + + // Construct Class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Plugin API + the.getInputElement = function() { + return the.inputElement; + } + + the.getElement = function() { + return the.element; + } + + the.destroy = function() { + return _destroy(); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name, handlerId) { + return KTEventHandler.off(the.element, name, handlerId); + } + + the.trigger = function(name, event) { + return KTEventHandler.trigger(the.element, name, event, the, event); + } +}; + +// Static methods +KTImageInput.getInstance = function(element) { + if ( element !== null && KTUtil.data(element).has('image-input') ) { + return KTUtil.data(element).get('image-input'); + } else { + return null; + } +} + +// Create instances +KTImageInput.createInstances = function(selector = '[data-kt-image-input]') { + // Initialize Menus + var elements = document.querySelectorAll(selector); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + new KTImageInput(elements[i]); + } + } +} + +// Global initialization +KTImageInput.init = function() { + KTImageInput.createInstances(); +}; + +// Webpack Support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTImageInput; +} + +"use strict"; + +var KTMenuHandlersInitialized = false; + +// Class definition +var KTMenu = function(element, options) { + //////////////////////////// + // ** Private Variables ** // + //////////////////////////// + var the = this; + + if ( typeof element === "undefined" || element === null ) { + return; + } + + // Default Options + var defaultOptions = { + dropdown: { + hoverTimeout: 200, + zindex: 107 + }, + + accordion: { + slideSpeed: 250, + expand: false + } + }; + + //////////////////////////// + // ** Private Methods ** // + //////////////////////////// + + var _construct = function() { + if ( KTUtil.data(element).has('menu') === true ) { + the = KTUtil.data(element).get('menu'); + } else { + _init(); + } + } + + var _init = function() { + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.uid = KTUtil.getUniqueId('menu'); + the.element = element; + the.triggerElement; + the.disabled = false; + + // Set initialized + the.element.setAttribute('data-kt-menu', 'true'); + + _setTriggerElement(); + _update(); + + KTUtil.data(the.element).set('menu', the); + } + + var _destroy = function() { // todo + + } + + // Event Handlers + // Toggle handler + var _click = function(element, e) { + e.preventDefault(); + + if (the.disabled === true) { + return; + } + + var item = _getItemElement(element); + + if ( _getOptionFromElementAttribute(item, 'trigger') !== 'click' ) { + return; + } + + if ( _getOptionFromElementAttribute(item, 'toggle') === false ) { + _show(item); + } else { + _toggle(item); + } + } + + // Link handler + var _link = function(element, e) { + if (the.disabled === true) { + return; + } + + if ( KTEventHandler.trigger(the.element, 'kt.menu.link.click', element) === false ) { + return; + } + + // Dismiss all shown dropdowns + KTMenu.hideDropdowns(); + + KTEventHandler.trigger(the.element, 'kt.menu.link.clicked', element); + } + + // Dismiss handler + var _dismiss = function(element, e) { + var item = _getItemElement(element); + var items = _getItemChildElements(item); + + if ( item !== null && _getItemSubType(item) === 'dropdown') { + _hide(item); // hide items dropdown + // Hide all child elements as well + + if ( items.length > 0 ) { + for (var i = 0, len = items.length; i < len; i++) { + if ( items[i] !== null && _getItemSubType(items[i]) === 'dropdown') { + _hide(tems[i]); + } + } + } + } + } + + // Mouseover handle + var _mouseover = function(element, e) { + var item = _getItemElement(element); + + if (the.disabled === true) { + return; + } + + if ( item === null ) { + return; + } + + if ( _getOptionFromElementAttribute(item, 'trigger') !== 'hover' ) { + return; + } + + if ( KTUtil.data(item).get('hover') === '1' ) { + clearTimeout(KTUtil.data(item).get('timeout')); + KTUtil.data(item).remove('hover'); + KTUtil.data(item).remove('timeout'); + } + + _show(item); + } + + // Mouseout handle + var _mouseout = function(element, e) { + var item = _getItemElement(element); + + if (the.disabled === true) { + return; + } + + if ( item === null ) { + return; + } + + if ( _getOptionFromElementAttribute(item, 'trigger') !== 'hover' ) { + return; + } + + var timeout = setTimeout(function() { + if ( KTUtil.data(item).get('hover') === '1' ) { + _hide(item); + } + }, the.options.dropdown.hoverTimeout); + + KTUtil.data(item).set('hover', '1'); + KTUtil.data(item).set('timeout', timeout); + } + + // Toggle item sub + var _toggle = function(item) { + if ( !item ) { + item = the.triggerElement; + } + + if ( _isItemSubShown(item) === true ) { + _hide(item); + } else { + _show(item); + } + } + + // Show item sub + var _show = function(item) { + if ( !item ) { + item = the.triggerElement; + } + + if ( _isItemSubShown(item) === true ) { + return; + } + + if ( _getItemSubType(item) === 'dropdown' ) { + _showDropdown(item); // // show current dropdown + } else if ( _getItemSubType(item) === 'accordion' ) { + _showAccordion(item); + } + + // Remember last submenu type + KTUtil.data(item).set('type', _getItemSubType(item)); // updated + } + + // Hide item sub + var _hide = function(item) { + if ( !item ) { + item = the.triggerElement; + } + + if ( _isItemSubShown(item) === false ) { + return; + } + + if ( _getItemSubType(item) === 'dropdown' ) { + _hideDropdown(item); + } else if ( _getItemSubType(item) === 'accordion' ) { + _hideAccordion(item); + } + } + + // Reset item state classes if item sub type changed + var _reset = function(item) { + if ( _hasItemSub(item) === false ) { + return; + } + + var sub = _getItemSubElement(item); + + // Reset sub state if sub type is changed during the window resize + if ( KTUtil.data(item).has('type') && KTUtil.data(item).get('type') !== _getItemSubType(item) ) { // updated + KTUtil.removeClass(item, 'hover'); + KTUtil.removeClass(item, 'show'); + KTUtil.removeClass(sub, 'show'); + } // updated + } + + // Update all item state classes if item sub type changed + var _update = function() { + var items = the.element.querySelectorAll('.menu-item[data-kt-menu-trigger]'); + + if ( items && items.length > 0 ) { + for (var i = 0, len = items.length; i < len; i++) { + _reset(items[i]); + } + } + } + + // Set external trigger element + var _setTriggerElement = function() { + var target = document.querySelector('[data-kt-menu-target="# ' + the.element.getAttribute('id') + '"]'); + + if ( target !== null ) { + the.triggerElement = target; + } else if ( the.element.closest('[data-kt-menu-trigger]') ) { + the.triggerElement = the.element.closest('[data-kt-menu-trigger]'); + } else if ( the.element.parentNode && KTUtil.child(the.element.parentNode, '[data-kt-menu-trigger]')) { + the.triggerElement = KTUtil.child(the.element.parentNode, '[data-kt-menu-trigger]'); + } + + if ( the.triggerElement ) { + KTUtil.data(the.triggerElement).set('menu', the); + } + } + + // Test if menu has external trigger element + var _isTriggerElement = function(item) { + return ( the.triggerElement === item ) ? true : false; + } + + // Test if item's sub is shown + var _isItemSubShown = function(item) { + var sub = _getItemSubElement(item); + + if ( sub !== null ) { + if ( _getItemSubType(item) === 'dropdown' ) { + if ( KTUtil.hasClass(sub, 'show') === true && sub.hasAttribute('data-popper-placement') === true ) { + return true; + } else { + return false; + } + } else { + return KTUtil.hasClass(item, 'show'); + } + } else { + return false; + } + } + + // Test if item dropdown is permanent + var _isItemDropdownPermanent = function(item) { + return _getOptionFromElementAttribute(item, 'permanent') === true ? true : false; + } + + // Test if item's parent is shown + var _isItemParentShown = function(item) { + return KTUtil.parents(item, '.menu-item.show').length > 0; + } + + // Test of it is item sub element + var _isItemSubElement = function(item) { + return KTUtil.hasClass(item, 'menu-sub'); + } + + // Test if item has sub + var _hasItemSub = function(item) { + return (KTUtil.hasClass(item, 'menu-item') && item.hasAttribute('data-kt-menu-trigger')); + } + + // Get link element + var _getItemLinkElement = function(item) { + return KTUtil.child(item, '.menu-link'); + } + + // Get toggle element + var _getItemToggleElement = function(item) { + if ( the.triggerElement ) { + return the.triggerElement; + } else { + return _getItemLinkElement(item); + } + } + + // Get item sub element + var _getItemSubElement = function(item) { + if ( _isTriggerElement(item) === true ) { + return the.element; + } if ( item.classList.contains('menu-sub') === true ) { + return item; + } else if ( KTUtil.data(item).has('sub') ) { + return KTUtil.data(item).get('sub'); + } else { + return KTUtil.child(item, '.menu-sub'); + } + } + + // Get item sub type + var _getItemSubType = function(element) { + var sub = _getItemSubElement(element); + + if ( sub && parseInt(KTUtil.css(sub, 'z-index')) > 0 ) { + return "dropdown"; + } else { + return "accordion"; + } + } + + // Get item element + var _getItemElement = function(element) { + var item, sub; + + // Element is the external trigger element + if (_isTriggerElement(element) ) { + return element; + } + + // Element has item toggler attribute + if ( element.hasAttribute('data-kt-menu-trigger') ) { + return element; + } + + // Element has item DOM reference in it's data storage + if ( KTUtil.data(element).has('item') ) { + return KTUtil.data(element).get('item'); + } + + // Item is parent of element + if ( (item = element.closest('.menu-item[data-kt-menu-trigger]')) ) { + return item; + } + + // Element's parent has item DOM reference in it's data storage + if ( (sub = element.closest('.menu-sub')) ) { + if ( KTUtil.data(sub).has('item') === true ) { + return KTUtil.data(sub).get('item') + } + } + } + + // Get item parent element + var _getItemParentElement = function(item) { + var sub = item.closest('.menu-sub'); + var parentItem; + + if ( KTUtil.data(sub).has('item') ) { + return KTUtil.data(sub).get('item'); + } + + if ( sub && (parentItem = sub.closest('.menu-item[data-kt-menu-trigger]')) ) { + return parentItem; + } + + return null; + } + + // Get item parent elements + var _getItemParentElements = function(item) { + var parents = []; + var parent; + var i = 0; + + do { + parent = _getItemParentElement(item); + + if ( parent ) { + parents.push(parent); + item = parent; + } + + i++; + } while (parent !== null && i < 20); + + if ( the.triggerElement ) { + parents.unshift(the.triggerElement); + } + + return parents; + } + + // Get item child element + var _getItemChildElement = function(item) { + var selector = item; + var element; + + if ( KTUtil.data(item).get('sub') ) { + selector = KTUtil.data(item).get('sub'); + } + + if ( selector !== null ) { + //element = selector.querySelector('.show.menu-item[data-kt-menu-trigger]'); + element = selector.querySelector('.menu-item[data-kt-menu-trigger]'); + + if ( element ) { + return element; + } else { + return null; + } + } else { + return null; + } + } + + // Get item child elements + var _getItemChildElements = function(item) { + var children = []; + var child; + var i = 0; + + do { + child = _getItemChildElement(item); + + if ( child ) { + children.push(child); + item = child; + } + + i++; + } while (child !== null && i < 20); + + return children; + } + + // Show item dropdown + var _showDropdown = function(item) { + // Handle dropdown show event + if ( KTEventHandler.trigger(the.element, 'kt.menu.dropdown.show', item) === false ) { + return; + } + + // Hide all currently shown dropdowns except current one + KTMenu.hideDropdowns(item); + + var toggle = _isTriggerElement(item) ? item : _getItemLinkElement(item); + var sub = _getItemSubElement(item); + + var width = _getOptionFromElementAttribute(item, 'width'); + var height = _getOptionFromElementAttribute(item, 'height'); + + var zindex = the.options.dropdown.zindex; // update + var parentZindex = KTUtil.getHighestZindex(item); // update + + // Apply a new z-index if dropdown's toggle element or it's parent has greater z-index // update + if ( parentZindex !== null && parentZindex >= zindex ) { + zindex = parentZindex + 1; + } + + if ( zindex > 0 ) { + KTUtil.css(sub, 'z-index', zindex); + } + + if ( width !== null ) { + KTUtil.css(sub, 'width', width); + } + + if ( height !== null ) { + KTUtil.css(sub, 'height', height); + } + + KTUtil.css(sub, 'display', ''); + KTUtil.css(sub, 'overflow', ''); + + // Init popper(new) + _initDropdownPopper(item, sub); + + KTUtil.addClass(item, 'show'); + KTUtil.addClass(item, 'menu-dropdown'); + KTUtil.addClass(sub, 'show'); + + // Append the sub the the root of the menu + if ( _getOptionFromElementAttribute(item, 'overflow') === true ) { + document.body.appendChild(sub); + KTUtil.data(item).set('sub', sub); + KTUtil.data(sub).set('item', item); + KTUtil.data(sub).set('menu', the); + } else { + KTUtil.data(sub).set('item', item); + } + + // Handle dropdown shown event + KTEventHandler.trigger(the.element, 'kt.menu.dropdown.shown', item); + } + + // Hide item dropdown + var _hideDropdown = function(item) { + // Handle dropdown hide event + if ( KTEventHandler.trigger(the.element, 'kt.menu.dropdown.hide', item) === false ) { + return; + } + + var sub = _getItemSubElement(item); + + KTUtil.css(sub, 'z-index', ''); + KTUtil.css(sub, 'width', ''); + KTUtil.css(sub, 'height', ''); + + KTUtil.removeClass(item, 'show'); + KTUtil.removeClass(item, 'menu-dropdown'); + KTUtil.removeClass(sub, 'show'); + + // Append the sub back to it's parent + if ( _getOptionFromElementAttribute(item, 'overflow') === true ) { + if (item.classList.contains('menu-item')) { + item.appendChild(sub); + } else { + KTUtil.insertAfter(the.element, item); + } + + KTUtil.data(item).remove('sub'); + KTUtil.data(sub).remove('item'); + KTUtil.data(sub).remove('menu'); + } + + // Destroy popper(new) + _destroyDropdownPopper(item); + + // Handle dropdown hidden event + KTEventHandler.trigger(the.element, 'kt.menu.dropdown.hidden', item); + } + + // Init dropdown popper(new) + var _initDropdownPopper = function(item, sub) { + // Setup popper instance + var reference; + var attach = _getOptionFromElementAttribute(item, 'attach'); + + if ( attach ) { + if ( attach === 'parent') { + reference = item.parentNode; + } else { + reference = document.querySelector(attach); + } + } else { + reference = item; + } + + var popper = Popper.createPopper(reference, sub, _getDropdownPopperConfig(item)); + KTUtil.data(item).set('popper', popper); + } + + // Destroy dropdown popper(new) + var _destroyDropdownPopper = function(item) { + if ( KTUtil.data(item).has('popper') === true ) { + KTUtil.data(item).get('popper').destroy(); + KTUtil.data(item).remove('popper'); + } + } + + // Prepare popper config for dropdown(see: https://popper.js.org/docs/v2/) + var _getDropdownPopperConfig = function(item) { + // Placement + var placement = _getOptionFromElementAttribute(item, 'placement'); + if (!placement) { + placement = 'right'; + } + + // Offset + var offsetValue = _getOptionFromElementAttribute(item, 'offset'); + var offset = offsetValue ? offsetValue.split(",") : []; + + if (offset.length === 2) { + offset[0] = parseInt(offset[0]); + offset[1] = parseInt(offset[1]); + } + + // Strategy + var strategy = _getOptionFromElementAttribute(item, 'overflow') === true ? 'absolute' : 'fixed'; + + var altAxis = _getOptionFromElementAttribute(item, 'flip') !== false ? true : false; + + var popperConfig = { + placement: placement, + strategy: strategy, + modifiers: [{ + name: 'offset', + options: { + offset: offset + } + }, { + name: 'preventOverflow', + options: { + altAxis: altAxis + } + }, { + name: 'flip', + options: { + flipVariations: false + } + }] + }; + + return popperConfig; + } + + // Show item accordion + var _showAccordion = function(item) { + if ( KTEventHandler.trigger(the.element, 'kt.menu.accordion.show', item) === false ) { + return; + } + + var sub = _getItemSubElement(item); + var expand = the.options.accordion.expand; + + if (_getOptionFromElementAttribute(item, 'expand') === true) { + expand = true; + } else if (_getOptionFromElementAttribute(item, 'expand') === false) { + expand = false; + } else if (_getOptionFromElementAttribute(the.element, 'expand') === true) { + expand = true; + } + + if ( expand === false ) { + _hideAccordions(item); + } + + if ( KTUtil.data(item).has('popper') === true ) { + _hideDropdown(item); + } + + KTUtil.addClass(item, 'hover'); + + KTUtil.addClass(item, 'showing'); + + KTUtil.slideDown(sub, the.options.accordion.slideSpeed, function() { + KTUtil.removeClass(item, 'showing'); + KTUtil.addClass(item, 'show'); + KTUtil.addClass(sub, 'show'); + + KTEventHandler.trigger(the.element, 'kt.menu.accordion.shown', item); + }); + } + + // Hide item accordion + var _hideAccordion = function(item) { + if ( KTEventHandler.trigger(the.element, 'kt.menu.accordion.hide', item) === false ) { + return; + } + + var sub = _getItemSubElement(item); + + KTUtil.addClass(item, 'hiding'); + + KTUtil.slideUp(sub, the.options.accordion.slideSpeed, function() { + KTUtil.removeClass(item, 'hiding'); + KTUtil.removeClass(item, 'show'); + KTUtil.removeClass(sub, 'show'); + + KTUtil.removeClass(item, 'hover'); // update + + KTEventHandler.trigger(the.element, 'kt.menu.accordion.hidden', item); + }); + } + + var _setActiveLink = function(link) { + var item = _getItemElement(link); + var parentItems = _getItemParentElements(item); + var parentTabPane = link.closest('.tab-pane'); + + var activeLinks = [].slice.call(the.element.querySelectorAll('.menu-link.active')); + var activeParentItems = [].slice.call(the.element.querySelectorAll('.menu-item.here, .menu-item.show')); + + if (_getItemSubType(item) === "accordion") { + _showAccordion(item); + } else { + item.classList.add("here"); + } + + if ( parentItems && parentItems.length > 0 ) { + for (var i = 0, len = parentItems.length; i < len; i++) { + var parentItem = parentItems[i]; + + if (_getItemSubType(parentItem) === "accordion") { + _showAccordion(parentItem); + } else { + parentItem.classList.add("here"); + } + } + } + + activeLinks.map(function (activeLink) { + activeLink.classList.remove("active"); + }); + + activeParentItems.map(function (activeParentItem) { + if (activeParentItem.contains(item) === false) { + activeParentItem.classList.remove("here"); + activeParentItem.classList.remove("show"); + } + }); + + // Handle tab + if (parentTabPane && bootstrap.Tab) { + var tabEl = the.element.querySelector('[data-bs-target="#' + parentTabPane.getAttribute("id") + '"]'); + var tab = new bootstrap.Tab(tabEl); + + if (tab) { + tab.show(); + } + } + + link.classList.add("active"); + } + + var _getLinkByAttribute = function(value, name = "href") { + var link = the.element.querySelector('a[' + name + '="' + value + '"]'); + + if (link) { + return link; + } else { + null; + } + } + + // Hide all shown accordions of item + var _hideAccordions = function(item) { + var itemsToHide = KTUtil.findAll(the.element, '.show[data-kt-menu-trigger]'); + var itemToHide; + + if (itemsToHide && itemsToHide.length > 0) { + for (var i = 0, len = itemsToHide.length; i < len; i++) { + itemToHide = itemsToHide[i]; + + if ( _getItemSubType(itemToHide) === 'accordion' && itemToHide !== item && item.contains(itemToHide) === false && itemToHide.contains(item) === false ) { + _hideAccordion(itemToHide); + } + } + } + } + + // Get item option(through html attributes) + var _getOptionFromElementAttribute = function(item, name) { + var attr; + var value = null; + + if ( item && item.hasAttribute('data-kt-menu-' + name) ) { + attr = item.getAttribute('data-kt-menu-' + name); + value = KTUtil.getResponsiveValue(attr); + + if ( value !== null && String(value) === 'true' ) { + value = true; + } else if ( value !== null && String(value) === 'false' ) { + value = false; + } + } + + return value; + } + + var _destroy = function() { + KTUtil.data(the.element).remove('menu'); + } + + // Construct Class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Event Handlers + the.click = function(element, e) { + return _click(element, e); + } + + the.link = function(element, e) { + return _link(element, e); + } + + the.dismiss = function(element, e) { + return _dismiss(element, e); + } + + the.mouseover = function(element, e) { + return _mouseover(element, e); + } + + the.mouseout = function(element, e) { + return _mouseout(element, e); + } + + // General Methods + the.getItemTriggerType = function(item) { + return _getOptionFromElementAttribute(item, 'trigger'); + } + + the.getItemSubType = function(element) { + return _getItemSubType(element); + } + + the.show = function(item) { + return _show(item); + } + + the.hide = function(item) { + return _hide(item); + } + + the.toggle = function(item) { + return _toggle(item); + } + + the.reset = function(item) { + return _reset(item); + } + + the.update = function() { + return _update(); + } + + the.getElement = function() { + return the.element; + } + + the.setActiveLink = function(link) { + return _setActiveLink(link); + } + + the.getLinkByAttribute = function(value, name = "href") { + return _getLinkByAttribute(value, name); + } + + the.getItemLinkElement = function(item) { + return _getItemLinkElement(item); + } + + the.getItemToggleElement = function(item) { + return _getItemToggleElement(item); + } + + the.getItemSubElement = function(item) { + return _getItemSubElement(item); + } + + the.getItemParentElements = function(item) { + return _getItemParentElements(item); + } + + the.isItemSubShown = function(item) { + return _isItemSubShown(item); + } + + the.isItemParentShown = function(item) { + return _isItemParentShown(item); + } + + the.getTriggerElement = function() { + return the.triggerElement; + } + + the.isItemDropdownPermanent = function(item) { + return _isItemDropdownPermanent(item); + } + + the.destroy = function() { + return _destroy(); + } + + the.disable = function() { + the.disabled = true; + } + + the.enable = function() { + the.disabled = false; + } + + // Accordion Mode Methods + the.hideAccordions = function(item) { + return _hideAccordions(item); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name, handlerId) { + return KTEventHandler.off(the.element, name, handlerId); + } +}; + +// Get KTMenu instance by element +KTMenu.getInstance = function(element) { + var menu; + var item; + + if (!element) { + return null; + } + + // Element has menu DOM reference in it's DATA storage + if ( KTUtil.data(element).has('menu') ) { + return KTUtil.data(element).get('menu'); + } + + // Element has .menu parent + if ( menu = element.closest('.menu') ) { + if ( KTUtil.data(menu).has('menu') ) { + return KTUtil.data(menu).get('menu'); + } + } + + // Element has a parent with DOM reference to .menu in it's DATA storage + if ( KTUtil.hasClass(element, 'menu-link') ) { + var sub = element.closest('.menu-sub'); + + if ( KTUtil.data(sub).has('menu') ) { + return KTUtil.data(sub).get('menu'); + } + } + + return null; +} + +// Hide all dropdowns and skip one if provided +KTMenu.hideDropdowns = function(skip) { + var items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]'); + + if (items && items.length > 0) { + for (var i = 0, len = items.length; i < len; i++) { + var item = items[i]; + var menu = KTMenu.getInstance(item); + + if ( menu && menu.getItemSubType(item) === 'dropdown' ) { + if ( skip ) { + if ( menu.getItemSubElement(item).contains(skip) === false && item.contains(skip) === false && item !== skip ) { + menu.hide(item); + } + } else { + menu.hide(item); + } + } + } + } +} + +// Update all dropdowns popover instances +KTMenu.updateDropdowns = function() { + var items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]'); + + if (items && items.length > 0) { + for (var i = 0, len = items.length; i < len; i++) { + var item = items[i]; + + if ( KTUtil.data(item).has('popper') ) { + KTUtil.data(item).get('popper').forceUpdate(); + } + } + } +} + +// Global handlers +KTMenu.initHandlers = function() { + // Dropdown handler + document.addEventListener("click", function(e) { + var items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]:not([data-kt-menu-static="true"])'); + var menu; + var item; + var sub; + var menuObj; + + if ( items && items.length > 0 ) { + for ( var i = 0, len = items.length; i < len; i++ ) { + item = items[i]; + menuObj = KTMenu.getInstance(item); + + if (menuObj && menuObj.getItemSubType(item) === 'dropdown') { + menu = menuObj.getElement(); + sub = menuObj.getItemSubElement(item); + + if ( item === e.target || item.contains(e.target) ) { + continue; + } + + if ( sub === e.target || sub.contains(e.target) ) { + continue; + } + + menuObj.hide(item); + } + } + } + }); + + // Sub toggle handler(updated) + KTUtil.on(document.body, '.menu-item[data-kt-menu-trigger] > .menu-link, [data-kt-menu-trigger]:not(.menu-item):not([data-kt-menu-trigger="auto"])', 'click', function(e) { + var menu = KTMenu.getInstance(this); + + if ( menu !== null ) { + return menu.click(this, e); + } + }); + + // Link handler + KTUtil.on(document.body, '.menu-item:not([data-kt-menu-trigger]) > .menu-link', 'click', function(e) { + var menu = KTMenu.getInstance(this); + + if ( menu !== null ) { + return menu.link(this, e); + } + }); + + // Dismiss handler + KTUtil.on(document.body, '[data-kt-menu-dismiss="true"]', 'click', function(e) { + var menu = KTMenu.getInstance(this); + + if ( menu !== null ) { + return menu.dismiss(this, e); + } + }); + + // Mouseover handler + KTUtil.on(document.body, '[data-kt-menu-trigger], .menu-sub', 'mouseover', function(e) { + var menu = KTMenu.getInstance(this); + + if ( menu !== null && menu.getItemSubType(this) === 'dropdown' ) { + return menu.mouseover(this, e); + } + }); + + // Mouseout handler + KTUtil.on(document.body, '[data-kt-menu-trigger], .menu-sub', 'mouseout', function(e) { + var menu = KTMenu.getInstance(this); + + if ( menu !== null && menu.getItemSubType(this) === 'dropdown' ) { + return menu.mouseout(this, e); + } + }); + + // Resize handler + window.addEventListener('resize', function() { + var menu; + var timer; + + KTUtil.throttle(timer, function() { + // Locate and update Offcanvas instances on window resize + var elements = document.querySelectorAll('[data-kt-menu="true"]'); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + menu = KTMenu.getInstance(elements[i]); + if (menu) { + menu.update(); + } + } + } + }, 200); + }); +} + +// Render menus by url +KTMenu.updateByLinkAttribute = function(value, name = "href") { + // Locate and update Offcanvas instances on window resize + var elements = document.querySelectorAll('[data-kt-menu="true"]'); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + var menu = KTMenu.getInstance(elements[i]); + + if (menu) { + var link = menu.getLinkByAttribute(value, name); + if (link) { + menu.setActiveLink(link); + } + } + } + } +} + +// Global instances +KTMenu.createInstances = function(selector = '[data-kt-menu="true"]') { + // Initialize menus + var elements = document.querySelectorAll(selector); + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + new KTMenu(elements[i]); + } + } +} + +// Global initialization +KTMenu.init = function() { + KTMenu.createInstances(); + + if (KTMenuHandlersInitialized === false) { + KTMenu.initHandlers(); + + KTMenuHandlersInitialized = true; + } +}; + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTMenu; +} + +"use strict"; + +// Class definition +var KTPasswordMeter = function(element, options) { + //////////////////////////// + // ** Private variables ** // + //////////////////////////// + var the = this; + + if (!element) { + return; + } + + // Default Options + var defaultOptions = { + minLength: 8, + checkUppercase: true, + checkLowercase: true, + checkDigit: true, + checkChar: true, + scoreHighlightClass: 'active' + }; + + //////////////////////////// + // ** Private methods ** // + //////////////////////////// + + // Constructor + var _construct = function() { + if ( KTUtil.data(element).has('password-meter') === true ) { + the = KTUtil.data(element).get('password-meter'); + } else { + _init(); + } + } + + // Initialize + var _init = function() { + // Variables + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.score = 0; + the.checkSteps = 5; + + // Elements + the.element = element; + the.inputElement = the.element.querySelector('input[type]'); + the.visibilityElement = the.element.querySelector('[data-kt-password-meter-control="visibility"]'); + the.highlightElement = the.element.querySelector('[data-kt-password-meter-control="highlight"]'); + + // Set initialized + the.element.setAttribute('data-kt-password-meter', 'true'); + + // Event Handlers + _handlers(); + + // Bind Instance + KTUtil.data(the.element).set('password-meter', the); + } + + // Handlers + var _handlers = function() { + if (the.highlightElement) { + the.inputElement.addEventListener('input', function() { + _check(); + }); + } + + if (the.visibilityElement) { + the.visibilityElement.addEventListener('click', function() { + _visibility(); + }); + } + } + + // Event handlers + var _check = function() { + var score = 0; + var checkScore = _getCheckScore(); + + if (_checkLength() === true) { + score = score + checkScore; + } + + if (the.options.checkUppercase === true && _checkLowercase() === true) { + score = score + checkScore; + } + + if (the.options.checkLowercase === true && _checkUppercase() === true ) { + score = score + checkScore; + } + + if (the.options.checkDigit === true && _checkDigit() === true ) { + score = score + checkScore; + } + + if (the.options.checkChar === true && _checkChar() === true ) { + score = score + checkScore; + } + + the.score = score; + + _highlight(); + } + + var _checkLength = function() { + return the.inputElement.value.length >= the.options.minLength; // 20 score + } + + var _checkLowercase = function() { + return /[a-z]/.test(the.inputElement.value); // 20 score + } + + var _checkUppercase = function() { + return /[A-Z]/.test(the.inputElement.value); // 20 score + } + + var _checkDigit = function() { + return /[0-9]/.test(the.inputElement.value); // 20 score + } + + var _checkChar = function() { + return /[~`!#@$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g.test(the.inputElement.value); // 20 score + } + + var _getCheckScore = function() { + var count = 1; + + if (the.options.checkUppercase === true) { + count++; + } + + if (the.options.checkLowercase === true) { + count++; + } + + if (the.options.checkDigit === true) { + count++; + } + + if (the.options.checkChar === true) { + count++; + } + + the.checkSteps = count; + + return 100 / the.checkSteps; + } + + var _highlight = function() { + var items = [].slice.call(the.highlightElement.querySelectorAll('div')); + var total = items.length; + var index = 0; + var checkScore = _getCheckScore(); + var score = _getScore(); + + items.map(function (item) { + index++; + + if ( (checkScore * index * (the.checkSteps / total)) <= score ) { + item.classList.add('active'); + } else { + item.classList.remove('active'); + } + }); + } + + var _visibility = function() { + var visibleIcon = the.visibilityElement.querySelector('i:not(.d-none), .svg-icon:not(.d-none)'); + var hiddenIcon = the.visibilityElement.querySelector('i.d-none, .svg-icon.d-none'); + + if (the.inputElement.getAttribute('type').toLowerCase() === 'password' ) { + the.inputElement.setAttribute('type', 'text'); + } else { + the.inputElement.setAttribute('type', 'password'); + } + + visibleIcon.classList.add('d-none'); + hiddenIcon.classList.remove('d-none'); + + the.inputElement.focus(); + } + + var _reset = function() { + the.score = 0; + + _highlight(); + } + + // Gets current password score + var _getScore = function() { + return the.score; + } + + var _destroy = function() { + KTUtil.data(the.element).remove('password-meter'); + } + + // Construct class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Plugin API + the.check = function() { + return _check(); + } + + the.getScore = function() { + return _getScore(); + } + + the.reset = function() { + return _reset(); + } + + the.destroy = function() { + return _destroy(); + } +}; + +// Static methods +KTPasswordMeter.getInstance = function(element) { + if ( element !== null && KTUtil.data(element).has('password-meter') ) { + return KTUtil.data(element).get('password-meter'); + } else { + return null; + } +} + +// Create instances +KTPasswordMeter.createInstances = function(selector = '[data-kt-password-meter]') { + // Get instances + var elements = document.body.querySelectorAll(selector); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + // Initialize instances + new KTPasswordMeter(elements[i]); + } + } +} + +// Global initialization +KTPasswordMeter.init = function() { + KTPasswordMeter.createInstances(); +}; + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTPasswordMeter; +} +"use strict"; + +var KTScrollHandlersInitialized = false; + +// Class definition +var KTScroll = function(element, options) { + //////////////////////////// + // ** Private Variables ** // + //////////////////////////// + var the = this; + + if (!element) { + return; + } + + // Default options + var defaultOptions = { + saveState: true + }; + + //////////////////////////// + // ** Private Methods ** // + //////////////////////////// + + var _construct = function() { + if ( KTUtil.data(element).has('scroll') ) { + the = KTUtil.data(element).get('scroll'); + } else { + _init(); + } + } + + var _init = function() { + // Variables + the.options = KTUtil.deepExtend({}, defaultOptions, options); + + // Elements + the.element = element; + the.id = the.element.getAttribute('id'); + + // Set initialized + the.element.setAttribute('data-kt-scroll', 'true'); + + // Update + _update(); + + // Bind Instance + KTUtil.data(the.element).set('scroll', the); + } + + var _setupHeight = function() { + var heightType = _getHeightType(); + var height = _getHeight(); + + // Set height + if ( height !== null && height.length > 0 ) { + KTUtil.css(the.element, heightType, height); + } else { + KTUtil.css(the.element, heightType, ''); + } + } + + var _setupState = function () { + var namespace = _getStorageNamespace(); + + if ( _getOption('save-state') === true && the.id ) { + if ( localStorage.getItem(namespace + the.id + 'st') ) { + var pos = parseInt(localStorage.getItem(namespace + the.id + 'st')); + + if ( pos > 0 ) { + the.element.scroll({ + top: pos, + behavior: 'instant' + }); + } + } + } + } + + var _getStorageNamespace = function(postfix) { + return document.body.hasAttribute("data-kt-name") ? document.body.getAttribute("data-kt-name") + "_" : ""; + } + + var _setupScrollHandler = function() { + if ( _getOption('save-state') === true && the.id ) { + the.element.addEventListener('scroll', _scrollHandler); + } else { + the.element.removeEventListener('scroll', _scrollHandler); + } + } + + var _destroyScrollHandler = function() { + the.element.removeEventListener('scroll', _scrollHandler); + } + + var _resetHeight = function() { + KTUtil.css(the.element, _getHeightType(), ''); + } + + var _scrollHandler = function () { + var namespace = _getStorageNamespace(); + localStorage.setItem(namespace + the.id + 'st', the.element.scrollTop); + } + + var _update = function() { + // Activate/deactivate + if ( _getOption('activate') === true || the.element.hasAttribute('data-kt-scroll-activate') === false ) { + _setupHeight(); + _setupStretchHeight(); + _setupScrollHandler(); + _setupState(); + } else { + _resetHeight() + _destroyScrollHandler(); + } + } + + var _setupStretchHeight = function() { + var stretch = _getOption('stretch'); + + // Stretch + if ( stretch !== null ) { + var elements = document.querySelectorAll(stretch); + + if ( elements && elements.length == 2 ) { + var element1 = elements[0]; + var element2 = elements[1]; + var diff = _getElementHeight(element2) - _getElementHeight(element1); + + if (diff > 0) { + var height = parseInt(KTUtil.css(the.element, _getHeightType())) + diff; + + KTUtil.css(the.element, _getHeightType(), String(height) + 'px'); + } + } + } + } + + var _getHeight = function() { + var height = _getOption(_getHeightType()); + + if ( height instanceof Function ) { + return height.call(); + } else if ( height !== null && typeof height === 'string' && height.toLowerCase() === 'auto' ) { + return _getAutoHeight(); + } else { + return height; + } + } + + var _getAutoHeight = function() { + var height = KTUtil.getViewPort().height; + var dependencies = _getOption('dependencies'); + var wrappers = _getOption('wrappers'); + var offset = _getOption('offset'); + + // Spacings + height = height - _getElementSpacing(the.element); + + // Height dependencies + //console.log('Q:' + JSON.stringify(dependencies)); + + if ( dependencies !== null ) { + var elements = document.querySelectorAll(dependencies); + + if ( elements && elements.length > 0 ) { + for ( var i = 0, len = elements.length; i < len; i++ ) { + if ( KTUtil.visible(elements[i]) === false ) { + continue; + } + + height = height - _getElementHeight(elements[i]); + } + } + } + + // Wrappers + if ( wrappers !== null ) { + var elements = document.querySelectorAll(wrappers); + if ( elements && elements.length > 0 ) { + for ( var i = 0, len = elements.length; i < len; i++ ) { + if ( KTUtil.visible(elements[i]) === false ) { + continue; + } + + height = height - _getElementSpacing(elements[i]); + } + } + } + + // Custom offset + if ( offset !== null && typeof offset !== 'object') { + height = height - parseInt(offset); + } + + return String(height) + 'px'; + } + + var _getElementHeight = function(element) { + var height = 0; + + if (element !== null) { + height = height + parseInt(KTUtil.css(element, 'height')); + height = height + parseInt(KTUtil.css(element, 'margin-top')); + height = height + parseInt(KTUtil.css(element, 'margin-bottom')); + + if (KTUtil.css(element, 'border-top')) { + height = height + parseInt(KTUtil.css(element, 'border-top')); + } + + if (KTUtil.css(element, 'border-bottom')) { + height = height + parseInt(KTUtil.css(element, 'border-bottom')); + } + } + + return height; + } + + var _getElementSpacing = function(element) { + var spacing = 0; + + if (element !== null) { + spacing = spacing + parseInt(KTUtil.css(element, 'margin-top')); + spacing = spacing + parseInt(KTUtil.css(element, 'margin-bottom')); + spacing = spacing + parseInt(KTUtil.css(element, 'padding-top')); + spacing = spacing + parseInt(KTUtil.css(element, 'padding-bottom')); + + if (KTUtil.css(element, 'border-top')) { + spacing = spacing + parseInt(KTUtil.css(element, 'border-top')); + } + + if (KTUtil.css(element, 'border-bottom')) { + spacing = spacing + parseInt(KTUtil.css(element, 'border-bottom')); + } + } + + return spacing; + } + + var _getOption = function(name) { + if ( the.element.hasAttribute('data-kt-scroll-' + name) === true ) { + var attr = the.element.getAttribute('data-kt-scroll-' + name); + + var value = KTUtil.getResponsiveValue(attr); + + if ( value !== null && String(value) === 'true' ) { + value = true; + } else if ( value !== null && String(value) === 'false' ) { + value = false; + } + + return value; + } else { + var optionName = KTUtil.snakeToCamel(name); + + if ( the.options[optionName] ) { + return KTUtil.getResponsiveValue(the.options[optionName]); + } else { + return null; + } + } + } + + var _getHeightType = function() { + if (_getOption('height')) { + return 'height'; + } if (_getOption('min-height')) { + return 'min-height'; + } if (_getOption('max-height')) { + return 'max-height'; + } + } + + var _destroy = function() { + KTUtil.data(the.element).remove('scroll'); + } + + // Construct Class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + the.update = function() { + return _update(); + } + + the.getHeight = function() { + return _getHeight(); + } + + the.getElement = function() { + return the.element; + } + + the.destroy = function() { + return _destroy(); + } +}; + +// Static methods +KTScroll.getInstance = function(element) { + if ( element !== null && KTUtil.data(element).has('scroll') ) { + return KTUtil.data(element).get('scroll'); + } else { + return null; + } +} + +// Create instances +KTScroll.createInstances = function(selector = '[data-kt-scroll="true"]') { + // Initialize Menus + var elements = document.body.querySelectorAll(selector); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + new KTScroll(elements[i]); + } + } +} + +// Window resize handling +KTScroll.handleResize = function() { + window.addEventListener('resize', function() { + var timer; + + KTUtil.throttle(timer, function() { + // Locate and update Offcanvas instances on window resize + var elements = document.body.querySelectorAll('[data-kt-scroll="true"]'); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + var scroll = KTScroll.getInstance(elements[i]); + if (scroll) { + scroll.update(); + } + } + } + }, 200); + }); +} + +// Global initialization +KTScroll.init = function() { + KTScroll.createInstances(); + + if (KTScrollHandlersInitialized === false) { + KTScroll.handleResize(); + + KTScrollHandlersInitialized = true; + } +}; + +// Webpack Support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTScroll; +} + +"use strict"; + +// Class definition +var KTScrolltop = function(element, options) { + //////////////////////////// + // ** Private variables ** // + //////////////////////////// + var the = this; + + if ( typeof element === "undefined" || element === null ) { + return; + } + + // Default options + var defaultOptions = { + offset: 300, + speed: 600 + }; + + //////////////////////////// + // ** Private methods ** // + //////////////////////////// + + var _construct = function() { + if (KTUtil.data(element).has('scrolltop')) { + the = KTUtil.data(element).get('scrolltop'); + } else { + _init(); + } + } + + var _init = function() { + // Variables + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.uid = KTUtil.getUniqueId('scrolltop'); + the.element = element; + + // Set initialized + the.element.setAttribute('data-kt-scrolltop', 'true'); + + // Event Handlers + _handlers(); + + // Bind Instance + KTUtil.data(the.element).set('scrolltop', the); + } + + var _handlers = function() { + var timer; + + window.addEventListener('scroll', function() { + KTUtil.throttle(timer, function() { + _scroll(); + }, 200); + }); + + KTUtil.addEvent(the.element, 'click', function(e) { + e.preventDefault(); + + _go(); + }); + } + + var _scroll = function() { + var offset = parseInt(_getOption('offset')); + + var pos = KTUtil.getScrollTop(); // current vertical position + + if ( pos > offset ) { + if ( document.body.hasAttribute('data-kt-scrolltop') === false ) { + document.body.setAttribute('data-kt-scrolltop', 'on'); + } + } else { + if ( document.body.hasAttribute('data-kt-scrolltop') === true ) { + document.body.removeAttribute('data-kt-scrolltop'); + } + } + } + + var _go = function() { + var speed = parseInt(_getOption('speed')); + + window.scrollTo({top: 0, behavior: 'smooth'}); + //KTUtil.scrollTop(0, speed); + } + + var _getOption = function(name) { + if ( the.element.hasAttribute('data-kt-scrolltop-' + name) === true ) { + var attr = the.element.getAttribute('data-kt-scrolltop-' + name); + var value = KTUtil.getResponsiveValue(attr); + + if ( value !== null && String(value) === 'true' ) { + value = true; + } else if ( value !== null && String(value) === 'false' ) { + value = false; + } + + return value; + } else { + var optionName = KTUtil.snakeToCamel(name); + + if ( the.options[optionName] ) { + return KTUtil.getResponsiveValue(the.options[optionName]); + } else { + return null; + } + } + } + + var _destroy = function() { + KTUtil.data(the.element).remove('scrolltop'); + } + + // Construct class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Plugin API + the.go = function() { + return _go(); + } + + the.getElement = function() { + return the.element; + } + + the.destroy = function() { + return _destroy(); + } +}; + +// Static methods +KTScrolltop.getInstance = function(element) { + if (element && KTUtil.data(element).has('scrolltop')) { + return KTUtil.data(element).get('scrolltop'); + } else { + return null; + } +} + +// Create instances +KTScrolltop.createInstances = function(selector = '[data-kt-scrolltop="true"]') { + // Initialize Menus + var elements = document.body.querySelectorAll(selector); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + new KTScrolltop(elements[i]); + } + } +} + +// Global initialization +KTScrolltop.init = function() { + KTScrolltop.createInstances(); +}; + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTScrolltop; +} + +"use strict"; + +// Class definition +var KTSearch = function(element, options) { + //////////////////////////// + // ** Private variables ** // + //////////////////////////// + var the = this; + + if (!element) { + return; + } + + // Default Options + var defaultOptions = { + minLength: 2, // Miniam text lenght to query search + keypress: true, // Enable search on keypress + enter: true, // Enable search on enter key press + layout: 'menu', // Use 'menu' or 'inline' layout options to display search results + responsive: null, // Pass integer value or bootstrap compatible breakpoint key(sm,md,lg,xl,xxl) to enable reponsive form mode for device width below the breakpoint value + showOnFocus: true // Always show menu on input focus + }; + + //////////////////////////// + // ** Private methods ** // + //////////////////////////// + + // Construct + var _construct = function() { + if ( KTUtil.data(element).has('search') === true ) { + the = KTUtil.data(element).get('search'); + } else { + _init(); + } + } + + // Init + var _init = function() { + // Variables + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.processing = false; + + // Elements + the.element = element; + the.contentElement = _getElement('content'); + the.formElement = _getElement('form'); + the.inputElement = _getElement('input'); + the.spinnerElement = _getElement('spinner'); + the.clearElement = _getElement('clear'); + the.toggleElement = _getElement('toggle'); + the.submitElement = _getElement('submit'); + the.toolbarElement = _getElement('toolbar'); + + the.resultsElement = _getElement('results'); + the.suggestionElement = _getElement('suggestion'); + the.emptyElement = _getElement('empty'); + + // Set initialized + the.element.setAttribute('data-kt-search', 'true'); + + // Layout + the.layout = _getOption('layout'); + + // Menu + if ( the.layout === 'menu' ) { + the.menuObject = new KTMenu(the.contentElement); + } else { + the.menuObject = null; + } + + // Update + _update(); + + // Event Handlers + _handlers(); + + // Bind Instance + KTUtil.data(the.element).set('search', the); + } + + // Handlera + var _handlers = function() { + // Focus + the.inputElement.addEventListener('focus', _focus); + + // Blur + the.inputElement.addEventListener('blur', _blur); + + // Keypress + if ( _getOption('keypress') === true ) { + the.inputElement.addEventListener('input', _input); + } + + // Submit + if ( the.submitElement ) { + the.submitElement.addEventListener('click', _search); + } + + // Enter + if ( _getOption('enter') === true ) { + the.inputElement.addEventListener('keypress', _enter); + } + + // Clear + if ( the.clearElement ) { + the.clearElement.addEventListener('click', _clear); + } + + // Menu + if ( the.menuObject ) { + // Toggle menu + if ( the.toggleElement ) { + the.toggleElement.addEventListener('click', _show); + + the.menuObject.on('kt.menu.dropdown.show', function(item) { + if (KTUtil.visible(the.toggleElement)) { + the.toggleElement.classList.add('active'); + the.toggleElement.classList.add('show'); + } + }); + + the.menuObject.on('kt.menu.dropdown.hide', function(item) { + if (KTUtil.visible(the.toggleElement)) { + the.toggleElement.classList.remove('active'); + the.toggleElement.classList.remove('show'); + } + }); + } + + the.menuObject.on('kt.menu.dropdown.shown', function() { + the.inputElement.focus(); + }); + } + + // Window resize handling + window.addEventListener('resize', function() { + var timer; + + KTUtil.throttle(timer, function() { + _update(); + }, 200); + }); + } + + // Focus + var _focus = function() { + the.element.classList.add('focus'); + + if ( _getOption('show-on-focus') === true || the.inputElement.value.length >= minLength ) { + _show(); + } + } + + // Blur + var _blur = function() { + the.element.classList.remove('focus'); + } + + // Enter + var _enter = function(e) { + var key = e.charCode || e.keyCode || 0; + + if (key == 13) { + e.preventDefault(); + + _search(); + } + } + + // Input + var _input = function() { + if ( _getOption('min-length') ) { + var minLength = parseInt(_getOption('min-length')); + + if ( the.inputElement.value.length >= minLength ) { + _search(); + } else if ( the.inputElement.value.length === 0 ) { + _clear(); + } + } + } + + // Search + var _search = function() { + if (the.processing === false) { + // Show search spinner + if (the.spinnerElement) { + the.spinnerElement.classList.remove("d-none"); + } + + // Hide search clear button + if (the.clearElement) { + the.clearElement.classList.add("d-none"); + } + + // Hide search toolbar + if (the.toolbarElement && the.formElement.contains(the.toolbarElement)) { + the.toolbarElement.classList.add("d-none"); + } + + // Focus input + the.inputElement.focus(); + + the.processing = true; + KTEventHandler.trigger(the.element, 'kt.search.process', the); + } + } + + // Complete + var _complete = function() { + if (the.spinnerElement) { + the.spinnerElement.classList.add("d-none"); + } + + // Show search toolbar + if (the.clearElement) { + the.clearElement.classList.remove("d-none"); + } + + if ( the.inputElement.value.length === 0 ) { + _clear(); + } + + // Focus input + the.inputElement.focus(); + + _show(); + + the.processing = false; + } + + // Clear + var _clear = function() { + if ( KTEventHandler.trigger(the.element, 'kt.search.clear', the) === false ) { + return; + } + + // Clear and focus input + the.inputElement.value = ""; + the.inputElement.focus(); + + // Hide clear icon + if (the.clearElement) { + the.clearElement.classList.add("d-none"); + } + + // Show search toolbar + if (the.toolbarElement && the.formElement.contains(the.toolbarElement)) { + the.toolbarElement.classList.remove("d-none"); + } + + // Hide menu + if ( _getOption('show-on-focus') === false ) { + _hide(); + } + + KTEventHandler.trigger(the.element, 'kt.search.cleared', the); + } + + // Update + var _update = function() { + // Handle responsive form + if (the.layout === 'menu') { + var responsiveFormMode = _getResponsiveFormMode(); + + if ( responsiveFormMode === 'on' && the.contentElement.contains(the.formElement) === false ) { + the.contentElement.prepend(the.formElement); + the.formElement.classList.remove('d-none'); + } else if ( responsiveFormMode === 'off' && the.contentElement.contains(the.formElement) === true ) { + the.element.prepend(the.formElement); + the.formElement.classList.add('d-none'); + } + } + } + + // Show menu + var _show = function() { + if ( the.menuObject ) { + _update(); + + the.menuObject.show(the.element); + } + } + + // Hide menu + var _hide = function() { + if ( the.menuObject ) { + _update(); + + the.menuObject.hide(the.element); + } + } + + // Get option + var _getOption = function(name) { + if ( the.element.hasAttribute('data-kt-search-' + name) === true ) { + var attr = the.element.getAttribute('data-kt-search-' + name); + var value = KTUtil.getResponsiveValue(attr); + + if ( value !== null && String(value) === 'true' ) { + value = true; + } else if ( value !== null && String(value) === 'false' ) { + value = false; + } + + return value; + } else { + var optionName = KTUtil.snakeToCamel(name); + + if ( the.options[optionName] ) { + return KTUtil.getResponsiveValue(the.options[optionName]); + } else { + return null; + } + } + } + + // Get element + var _getElement = function(name) { + return the.element.querySelector('[data-kt-search-element="' + name + '"]'); + } + + // Check if responsive form mode is enabled + var _getResponsiveFormMode = function() { + var responsive = _getOption('responsive'); + var width = KTUtil.getViewPort().width; + + if (!responsive) { + return null; + } + + var breakpoint = KTUtil.getBreakpoint(responsive); + + if (!breakpoint ) { + breakpoint = parseInt(responsive); + } + + if (width < breakpoint) { + return "on"; + } else { + return "off"; + } + } + + var _destroy = function() { + KTUtil.data(the.element).remove('search'); + } + + // Construct class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Plugin API + the.show = function() { + return _show(); + } + + the.hide = function() { + return _hide(); + } + + the.update = function() { + return _update(); + } + + the.search = function() { + return _search(); + } + + the.complete = function() { + return _complete(); + } + + the.clear = function() { + return _clear(); + } + + the.isProcessing = function() { + return the.processing; + } + + the.getQuery = function() { + return the.inputElement.value; + } + + the.getMenu = function() { + return the.menuObject; + } + + the.getFormElement = function() { + return the.formElement; + } + + the.getInputElement = function() { + return the.inputElement; + } + + the.getContentElement = function() { + return the.contentElement; + } + + the.getElement = function() { + return the.element; + } + + the.destroy = function() { + return _destroy(); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name, handlerId) { + return KTEventHandler.off(the.element, name, handlerId); + } +}; + +// Static methods +KTSearch.getInstance = function(element) { + if ( element !== null && KTUtil.data(element).has('search') ) { + return KTUtil.data(element).get('search'); + } else { + return null; + } +} + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTSearch; +} + +"use strict"; + +// Class definition +var KTStepper = function(element, options) { + ////////////////////////////// + // ** Private variables ** // + ////////////////////////////// + var the = this; + + if ( typeof element === "undefined" || element === null ) { + return; + } + + // Default Options + var defaultOptions = { + startIndex: 1, + animation: false, + animationSpeed: '0.3s', + animationNextClass: 'animate__animated animate__slideInRight animate__fast', + animationPreviousClass: 'animate__animated animate__slideInLeft animate__fast' + }; + + //////////////////////////// + // ** Private methods ** // + //////////////////////////// + + var _construct = function() { + if ( KTUtil.data(element).has('stepper') === true ) { + the = KTUtil.data(element).get('stepper'); + } else { + _init(); + } + } + + var _init = function() { + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.uid = KTUtil.getUniqueId('stepper'); + + the.element = element; + + // Set initialized + the.element.setAttribute('data-kt-stepper', 'true'); + + // Elements + the.steps = KTUtil.findAll(the.element, '[data-kt-stepper-element="nav"]'); + the.btnNext = KTUtil.find(the.element, '[data-kt-stepper-action="next"]'); + the.btnPrevious = KTUtil.find(the.element, '[data-kt-stepper-action="previous"]'); + the.btnSubmit = KTUtil.find(the.element, '[data-kt-stepper-action="submit"]'); + + // Variables + the.totalStepsNumber = the.steps.length; + the.passedStepIndex = 0; + the.currentStepIndex = 1; + the.clickedStepIndex = 0; + + // Set Current Step + if ( the.options.startIndex > 1 ) { + _goTo(the.options.startIndex); + } + + // Event listeners + the.nextListener = function(e) { + e.preventDefault(); + + KTEventHandler.trigger(the.element, 'kt.stepper.next', the); + }; + + the.previousListener = function(e) { + e.preventDefault(); + + KTEventHandler.trigger(the.element, 'kt.stepper.previous', the); + }; + + the.stepListener = function(e) { + e.preventDefault(); + + if ( the.steps && the.steps.length > 0 ) { + for (var i = 0, len = the.steps.length; i < len; i++) { + if ( the.steps[i] === this ) { + the.clickedStepIndex = i + 1; + + KTEventHandler.trigger(the.element, 'kt.stepper.click', the); + + return; + } + } + } + }; + + // Event Handlers + KTUtil.addEvent(the.btnNext, 'click', the.nextListener); + + KTUtil.addEvent(the.btnPrevious, 'click', the.previousListener); + + the.stepListenerId = KTUtil.on(the.element, '[data-kt-stepper-action="step"]', 'click', the.stepListener); + + // Bind Instance + KTUtil.data(the.element).set('stepper', the); + } + + var _goTo = function(index) { + // Trigger "change" event + KTEventHandler.trigger(the.element, 'kt.stepper.change', the); + + // Skip if this step is already shown + if ( index === the.currentStepIndex || index > the.totalStepsNumber || index < 0 ) { + return; + } + + // Validate step number + index = parseInt(index); + + // Set current step + the.passedStepIndex = the.currentStepIndex; + the.currentStepIndex = index; + + // Refresh elements + _refreshUI(); + + // Trigger "changed" event + KTEventHandler.trigger(the.element, 'kt.stepper.changed', the); + + return the; + } + + var _goNext = function() { + return _goTo( _getNextStepIndex() ); + } + + var _goPrevious = function() { + return _goTo( _getPreviousStepIndex() ); + } + + var _goLast = function() { + return _goTo( _getLastStepIndex() ); + } + + var _goFirst = function() { + return _goTo( _getFirstStepIndex() ); + } + + var _refreshUI = function() { + var state = ''; + + if ( _isLastStep() ) { + state = 'last'; + } else if ( _isFirstStep() ) { + state = 'first'; + } else { + state = 'between'; + } + + // Set state class + KTUtil.removeClass(the.element, 'last'); + KTUtil.removeClass(the.element, 'first'); + KTUtil.removeClass(the.element, 'between'); + + KTUtil.addClass(the.element, state); + + // Step Items + var elements = KTUtil.findAll(the.element, '[data-kt-stepper-element="nav"], [data-kt-stepper-element="content"], [data-kt-stepper-element="info"]'); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + var element = elements[i]; + var index = KTUtil.index(element) + 1; + + KTUtil.removeClass(element, 'current'); + KTUtil.removeClass(element, 'completed'); + KTUtil.removeClass(element, 'pending'); + + if ( index == the.currentStepIndex ) { + KTUtil.addClass(element, 'current'); + + if ( the.options.animation !== false && element.getAttribute('data-kt-stepper-element') == 'content' ) { + KTUtil.css(element, 'animationDuration', the.options.animationSpeed); + + var animation = _getStepDirection(the.passedStepIndex) === 'previous' ? the.options.animationPreviousClass : the.options.animationNextClass; + KTUtil.animateClass(element, animation); + } + } else { + if ( index < the.currentStepIndex ) { + KTUtil.addClass(element, 'completed'); + } else { + KTUtil.addClass(element, 'pending'); + } + } + } + } + } + + var _isLastStep = function() { + return the.currentStepIndex === the.totalStepsNumber; + } + + var _isFirstStep = function() { + return the.currentStepIndex === 1; + } + + var _isBetweenStep = function() { + return _isLastStep() === false && _isFirstStep() === false; + } + + var _getNextStepIndex = function() { + if ( the.totalStepsNumber >= ( the.currentStepIndex + 1 ) ) { + return the.currentStepIndex + 1; + } else { + return the.totalStepsNumber; + } + } + + var _getPreviousStepIndex = function() { + if ( ( the.currentStepIndex - 1 ) > 1 ) { + return the.currentStepIndex - 1; + } else { + return 1; + } + } + + var _getFirstStepIndex = function(){ + return 1; + } + + var _getLastStepIndex = function() { + return the.totalStepsNumber; + } + + var _getTotalStepsNumber = function() { + return the.totalStepsNumber; + } + + var _getStepDirection = function(index) { + if ( index > the.currentStepIndex ) { + return 'next'; + } else { + return 'previous'; + } + } + + var _getStepContent = function(index) { + var content = KTUtil.findAll(the.element, '[data-kt-stepper-element="content"]'); + + if ( content[index-1] ) { + return content[index-1]; + } else { + return false; + } + } + + var _destroy = function() { + // Event Handlers + KTUtil.removeEvent(the.btnNext, 'click', the.nextListener); + + KTUtil.removeEvent(the.btnPrevious, 'click', the.previousListener); + + KTUtil.off(the.element, 'click', the.stepListenerId); + + KTUtil.data(the.element).remove('stepper'); + } + + // Construct Class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Plugin API + the.getElement = function(index) { + return the.element; + } + + the.goTo = function(index) { + return _goTo(index); + } + + the.goPrevious = function() { + return _goPrevious(); + } + + the.goNext = function() { + return _goNext(); + } + + the.goFirst = function() { + return _goFirst(); + } + + the.goLast = function() { + return _goLast(); + } + + the.getCurrentStepIndex = function() { + return the.currentStepIndex; + } + + the.getNextStepIndex = function() { + return _getNextStepIndex(); + } + + the.getPassedStepIndex = function() { + return the.passedStepIndex; + } + + the.getClickedStepIndex = function() { + return the.clickedStepIndex; + } + + the.getPreviousStepIndex = function() { + return _getPreviousStepIndex(); + } + + the.destroy = function() { + return _destroy(); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name, handlerId) { + return KTEventHandler.off(the.element, name, handlerId); + } + + the.trigger = function(name, event) { + return KTEventHandler.trigger(the.element, name, event, the, event); + } +}; + +// Static methods +KTStepper.getInstance = function(element) { + if ( element !== null && KTUtil.data(element).has('stepper') ) { + return KTUtil.data(element).get('stepper'); + } else { + return null; + } +} + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTStepper; +} + +"use strict"; + +var KTStickyHandlersInitialized = false; + +// Class definition +var KTSticky = function(element, options) { + //////////////////////////// + // ** Private Variables ** // + //////////////////////////// + var the = this; + + if ( typeof element === "undefined" || element === null ) { + return; + } + + // Default Options + var defaultOptions = { + offset: 200, + reverse: false, + release: null, + animation: true, + animationSpeed: '0.3s', + animationClass: 'animation-slide-in-down' + }; + //////////////////////////// + // ** Private Methods ** // + //////////////////////////// + + var _construct = function() { + if ( KTUtil.data(element).has('sticky') === true ) { + the = KTUtil.data(element).get('sticky'); + } else { + _init(); + } + } + + var _init = function() { + the.element = element; + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.uid = KTUtil.getUniqueId('sticky'); + the.name = the.element.getAttribute('data-kt-sticky-name'); + the.attributeName = 'data-kt-sticky-' + the.name; + the.attributeName2 = 'data-kt-' + the.name; + the.eventTriggerState = true; + the.lastScrollTop = 0; + the.scrollHandler; + + // Set initialized + the.element.setAttribute('data-kt-sticky', 'true'); + + // Event Handlers + window.addEventListener('scroll', _scroll); + + // Initial Launch + _scroll(); + + // Bind Instance + KTUtil.data(the.element).set('sticky', the); + } + + var _scroll = function(e) { + var offset = _getOption('offset'); + var release = _getOption('release'); + var reverse = _getOption('reverse'); + var st; + var attrName; + var diff; + + // Exit if false + if ( offset === false ) { + return; + } + + offset = parseInt(offset); + release = release ? document.querySelector(release) : null; + + st = KTUtil.getScrollTop(); + diff = document.documentElement.scrollHeight - window.innerHeight - KTUtil.getScrollTop(); + + var proceed = (!release || (release.offsetTop - release.clientHeight) > st); + + if ( reverse === true ) { // Release on reverse scroll mode + if ( st > offset && proceed ) { + if ( document.body.hasAttribute(the.attributeName) === false) { + + if (_enable() === false) { + return; + } + + document.body.setAttribute(the.attributeName, 'on'); + document.body.setAttribute(the.attributeName2, 'on'); + the.element.setAttribute("data-kt-sticky-enabled", "true"); + } + + if ( the.eventTriggerState === true ) { + KTEventHandler.trigger(the.element, 'kt.sticky.on', the); + KTEventHandler.trigger(the.element, 'kt.sticky.change', the); + + the.eventTriggerState = false; + } + } else { // Back scroll mode + if ( document.body.hasAttribute(the.attributeName) === true) { + _disable(); + document.body.removeAttribute(the.attributeName); + document.body.removeAttribute(the.attributeName2); + the.element.removeAttribute("data-kt-sticky-enabled"); + } + + if ( the.eventTriggerState === false ) { + KTEventHandler.trigger(the.element, 'kt.sticky.off', the); + KTEventHandler.trigger(the.element, 'kt.sticky.change', the); + the.eventTriggerState = true; + } + } + + the.lastScrollTop = st; + } else { // Classic scroll mode + if ( st > offset && proceed ) { + if ( document.body.hasAttribute(the.attributeName) === false) { + + if (_enable() === false) { + return; + } + + document.body.setAttribute(the.attributeName, 'on'); + document.body.setAttribute(the.attributeName2, 'on'); + the.element.setAttribute("data-kt-sticky-enabled", "true"); + } + + if ( the.eventTriggerState === true ) { + KTEventHandler.trigger(the.element, 'kt.sticky.on', the); + KTEventHandler.trigger(the.element, 'kt.sticky.change', the); + the.eventTriggerState = false; + } + } else { // back scroll mode + if ( document.body.hasAttribute(the.attributeName) === true ) { + _disable(); + document.body.removeAttribute(the.attributeName); + document.body.removeAttribute(the.attributeName2); + the.element.removeAttribute("data-kt-sticky-enabled"); + } + + if ( the.eventTriggerState === false ) { + KTEventHandler.trigger(the.element, 'kt.sticky.off', the); + KTEventHandler.trigger(the.element, 'kt.sticky.change', the); + the.eventTriggerState = true; + } + } + } + + if (release) { + if ( release.offsetTop - release.clientHeight > st ) { + the.element.setAttribute('data-kt-sticky-released', 'true'); + } else { + the.element.removeAttribute('data-kt-sticky-released'); + } + } + } + + var _enable = function(update) { + var top = _getOption('top'); + top = top ? parseInt(top) : 0; + + var left = _getOption('left'); + var right = _getOption('right'); + var width = _getOption('width'); + var zindex = _getOption('zindex'); + var dependencies = _getOption('dependencies'); + var classes = _getOption('class'); + + var height = _calculateHeight(); + var heightOffset = _getOption('height-offset'); + heightOffset = heightOffset ? parseInt(heightOffset) : 0; + + if (height + heightOffset + top > KTUtil.getViewPort().height) { + return false; + } + + if ( update !== true && _getOption('animation') === true ) { + KTUtil.css(the.element, 'animationDuration', _getOption('animationSpeed')); + KTUtil.animateClass(the.element, 'animation ' + _getOption('animationClass')); + } + + if ( classes !== null ) { + KTUtil.addClass(the.element, classes); + } + + if ( zindex !== null ) { + KTUtil.css(the.element, 'z-index', zindex); + KTUtil.css(the.element, 'position', 'fixed'); + } + + if ( top >= 0 ) { + KTUtil.css(the.element, 'top', String(top) + 'px'); + } + + if ( width !== null ) { + if (width['target']) { + var targetElement = document.querySelector(width['target']); + if (targetElement) { + width = KTUtil.css(targetElement, 'width'); + } + } + + KTUtil.css(the.element, 'width', width); + } + + if ( left !== null ) { + if ( String(left).toLowerCase() === 'auto' ) { + var offsetLeft = KTUtil.offset(the.element).left; + + if ( offsetLeft >= 0 ) { + KTUtil.css(the.element, 'left', String(offsetLeft) + 'px'); + } + } else { + KTUtil.css(the.element, 'left', left); + } + } + + if ( right !== null ) { + KTUtil.css(the.element, 'right', right); + } + + // Height dependencies + if ( dependencies !== null ) { + var dependencyElements = document.querySelectorAll(dependencies); + + if ( dependencyElements && dependencyElements.length > 0 ) { + for ( var i = 0, len = dependencyElements.length; i < len; i++ ) { + KTUtil.css(dependencyElements[i], 'padding-top', String(height) + 'px'); + } + } + } + } + + var _disable = function() { + KTUtil.css(the.element, 'top', ''); + KTUtil.css(the.element, 'width', ''); + KTUtil.css(the.element, 'left', ''); + KTUtil.css(the.element, 'right', ''); + KTUtil.css(the.element, 'z-index', ''); + KTUtil.css(the.element, 'position', ''); + + var dependencies = _getOption('dependencies'); + var classes = _getOption('class'); + + if ( classes !== null ) { + KTUtil.removeClass(the.element, classes); + } + + // Height dependencies + if ( dependencies !== null ) { + var dependencyElements = document.querySelectorAll(dependencies); + + if ( dependencyElements && dependencyElements.length > 0 ) { + for ( var i = 0, len = dependencyElements.length; i < len; i++ ) { + KTUtil.css(dependencyElements[i], 'padding-top', ''); + } + } + } + } + + var _check = function() { + + } + + var _calculateHeight = function() { + var height = parseFloat(KTUtil.css(the.element, 'height')); + + height = height + parseFloat(KTUtil.css(the.element, 'margin-top')); + height = height + parseFloat(KTUtil.css(the.element, 'margin-bottom')); + + if (KTUtil.css(element, 'border-top')) { + height = height + parseFloat(KTUtil.css(the.element, 'border-top')); + } + + if (KTUtil.css(element, 'border-bottom')) { + height = height + parseFloat(KTUtil.css(the.element, 'border-bottom')); + } + + return height; + } + + var _getOption = function(name) { + if ( the.element.hasAttribute('data-kt-sticky-' + name) === true ) { + var attr = the.element.getAttribute('data-kt-sticky-' + name); + var value = KTUtil.getResponsiveValue(attr); + + if ( value !== null && String(value) === 'true' ) { + value = true; + } else if ( value !== null && String(value) === 'false' ) { + value = false; + } + + return value; + } else { + var optionName = KTUtil.snakeToCamel(name); + + if ( the.options[optionName] ) { + return KTUtil.getResponsiveValue(the.options[optionName]); + } else { + return null; + } + } + } + + var _destroy = function() { + window.removeEventListener('scroll', _scroll); + KTUtil.data(the.element).remove('sticky'); + } + + // Construct Class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Methods + the.update = function() { + if ( document.body.hasAttribute(the.attributeName) === true ) { + _disable(); + document.body.removeAttribute(the.attributeName); + document.body.removeAttribute(the.attributeName2); + _enable(true); + document.body.setAttribute(the.attributeName, 'on'); + document.body.setAttribute(the.attributeName2, 'on'); + } + } + + the.destroy = function() { + return _destroy(); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name, handlerId) { + return KTEventHandler.off(the.element, name, handlerId); + } + + the.trigger = function(name, event) { + return KTEventHandler.trigger(the.element, name, event, the, event); + } +}; + +// Static methods +KTSticky.getInstance = function(element) { + if ( element !== null && KTUtil.data(element).has('sticky') ) { + return KTUtil.data(element).get('sticky'); + } else { + return null; + } +} + +// Create instances +KTSticky.createInstances = function(selector = '[data-kt-sticky="true"]') { + // Initialize Menus + var elements = document.body.querySelectorAll(selector); + var sticky; + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + sticky = new KTSticky(elements[i]); + } + } +} + +// Window resize handler +KTSticky.handleResize = function() { + window.addEventListener('resize', function() { + var timer; + + KTUtil.throttle(timer, function() { + // Locate and update Offcanvas instances on window resize + var elements = document.body.querySelectorAll('[data-kt-sticky="true"]'); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + var sticky = KTSticky.getInstance(elements[i]); + if (sticky) { + sticky.update(); + } + } + } + }, 200); + }); +} + +// Global initialization +KTSticky.init = function() { + KTSticky.createInstances(); + + if (KTStickyHandlersInitialized === false) { + KTSticky.handleResize(); + KTStickyHandlersInitialized = true; + } +}; + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTSticky; +} + +"use strict"; + +var KTSwapperHandlersInitialized = false; + +// Class definition +var KTSwapper = function(element, options) { + //////////////////////////// + // ** Private Variables ** // + //////////////////////////// + var the = this; + + if ( typeof element === "undefined" || element === null ) { + return; + } + + // Default Options + var defaultOptions = { + mode: 'append' + }; + + //////////////////////////// + // ** Private Methods ** // + //////////////////////////// + + var _construct = function() { + if ( KTUtil.data(element).has('swapper') === true ) { + the = KTUtil.data(element).get('swapper'); + } else { + _init(); + } + } + + var _init = function() { + the.element = element; + the.options = KTUtil.deepExtend({}, defaultOptions, options); + + // Set initialized + the.element.setAttribute('data-kt-swapper', 'true'); + + // Initial update + _update(); + + // Bind Instance + KTUtil.data(the.element).set('swapper', the); + } + + var _update = function(e) { + var parentSelector = _getOption('parent'); + + var mode = _getOption('mode'); + var parentElement = parentSelector ? document.querySelector(parentSelector) : null; + + + if (parentElement && element.parentNode !== parentElement) { + if (mode === 'prepend') { + parentElement.prepend(element); + } else if (mode === 'append') { + parentElement.append(element); + } + } + } + + var _getOption = function(name) { + if ( the.element.hasAttribute('data-kt-swapper-' + name) === true ) { + var attr = the.element.getAttribute('data-kt-swapper-' + name); + var value = KTUtil.getResponsiveValue(attr); + + if ( value !== null && String(value) === 'true' ) { + value = true; + } else if ( value !== null && String(value) === 'false' ) { + value = false; + } + + return value; + } else { + var optionName = KTUtil.snakeToCamel(name); + + if ( the.options[optionName] ) { + return KTUtil.getResponsiveValue(the.options[optionName]); + } else { + return null; + } + } + } + + var _destroy = function() { + KTUtil.data(the.element).remove('swapper'); + } + + // Construct Class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Methods + the.update = function() { + _update(); + } + + the.destroy = function() { + return _destroy(); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name, handlerId) { + return KTEventHandler.off(the.element, name, handlerId); + } + + the.trigger = function(name, event) { + return KTEventHandler.trigger(the.element, name, event, the, event); + } +}; + +// Static methods +KTSwapper.getInstance = function(element) { + if ( element !== null && KTUtil.data(element).has('swapper') ) { + return KTUtil.data(element).get('swapper'); + } else { + return null; + } +} + +// Create instances +KTSwapper.createInstances = function(selector = '[data-kt-swapper="true"]') { + // Initialize Menus + var elements = document.querySelectorAll(selector); + var swapper; + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + swapper = new KTSwapper(elements[i]); + } + } +} + +// Window resize handler +KTSwapper.handleResize = function() { + window.addEventListener('resize', function() { + var timer; + + KTUtil.throttle(timer, function() { + // Locate and update Offcanvas instances on window resize + var elements = document.querySelectorAll('[data-kt-swapper="true"]'); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + var swapper = KTSwapper.getInstance(elements[i]); + if (swapper) { + swapper.update(); + } + } + } + }, 200); + }); +}; + +// Global initialization +KTSwapper.init = function() { + KTSwapper.createInstances(); + + if (KTSwapperHandlersInitialized === false) { + KTSwapper.handleResize(); + KTSwapperHandlersInitialized = true; + } +}; + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTSwapper; +} + +"use strict"; + +// Class definition +var KTToggle = function(element, options) { + //////////////////////////// + // ** Private variables ** // + //////////////////////////// + var the = this; + + if (!element) { + return; + } + + // Default Options + var defaultOptions = { + saveState: true + }; + + //////////////////////////// + // ** Private methods ** // + //////////////////////////// + + var _construct = function() { + if ( KTUtil.data(element).has('toggle') === true ) { + the = KTUtil.data(element).get('toggle'); + } else { + _init(); + } + } + + var _init = function() { + // Variables + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.uid = KTUtil.getUniqueId('toggle'); + + // Elements + the.element = element; + + the.target = document.querySelector(the.element.getAttribute('data-kt-toggle-target')) ? document.querySelector(the.element.getAttribute('data-kt-toggle-target')) : the.element; + the.state = the.element.hasAttribute('data-kt-toggle-state') ? the.element.getAttribute('data-kt-toggle-state') : ''; + the.mode = the.element.hasAttribute('data-kt-toggle-mode') ? the.element.getAttribute('data-kt-toggle-mode') : ''; + the.attribute = 'data-kt-' + the.element.getAttribute('data-kt-toggle-name'); + + // Event Handlers + _handlers(); + + // Bind Instance + KTUtil.data(the.element).set('toggle', the); + } + + var _handlers = function() { + KTUtil.addEvent(the.element, 'click', function(e) { + e.preventDefault(); + + if ( the.mode !== '' ) { + if ( the.mode === 'off' && _isEnabled() === false ) { + _toggle(); + } else if ( the.mode === 'on' && _isEnabled() === true ) { + _toggle(); + } + } else { + _toggle(); + } + }); + } + + // Event handlers + var _toggle = function() { + // Trigger "after.toggle" event + KTEventHandler.trigger(the.element, 'kt.toggle.change', the); + + if ( _isEnabled() ) { + _disable(); + } else { + _enable(); + } + + // Trigger "before.toggle" event + KTEventHandler.trigger(the.element, 'kt.toggle.changed', the); + + return the; + } + + var _enable = function() { + if ( _isEnabled() === true ) { + return; + } + + KTEventHandler.trigger(the.element, 'kt.toggle.enable', the); + + the.target.setAttribute(the.attribute, 'on'); + + if (the.state.length > 0) { + the.element.classList.add(the.state); + } + + if ( typeof KTCookie !== 'undefined' && the.options.saveState === true ) { + KTCookie.set(the.attribute, 'on'); + } + + KTEventHandler.trigger(the.element, 'kt.toggle.enabled', the); + + return the; + } + + var _disable = function() { + if ( _isEnabled() === false ) { + return; + } + + KTEventHandler.trigger(the.element, 'kt.toggle.disable', the); + + the.target.removeAttribute(the.attribute); + + if (the.state.length > 0) { + the.element.classList.remove(the.state); + } + + if ( typeof KTCookie !== 'undefined' && the.options.saveState === true ) { + KTCookie.remove(the.attribute); + } + + KTEventHandler.trigger(the.element, 'kt.toggle.disabled', the); + + return the; + } + + var _isEnabled = function() { + return (String(the.target.getAttribute(the.attribute)).toLowerCase() === 'on'); + } + + var _destroy = function() { + KTUtil.data(the.element).remove('toggle'); + } + + // Construct class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Plugin API + the.toggle = function() { + return _toggle(); + } + + the.enable = function() { + return _enable(); + } + + the.disable = function() { + return _disable(); + } + + the.isEnabled = function() { + return _isEnabled(); + } + + the.goElement = function() { + return the.element; + } + + the.destroy = function() { + return _destroy(); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name, handlerId) { + return KTEventHandler.off(the.element, name, handlerId); + } + + the.trigger = function(name, event) { + return KTEventHandler.trigger(the.element, name, event, the, event); + } +}; + +// Static methods +KTToggle.getInstance = function(element) { + if ( element !== null && KTUtil.data(element).has('toggle') ) { + return KTUtil.data(element).get('toggle'); + } else { + return null; + } +} + +// Create instances +KTToggle.createInstances = function(selector = '[data-kt-toggle]') { + // Get instances + var elements = document.body.querySelectorAll(selector); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + // Initialize instances + new KTToggle(elements[i]); + } + } +} + +// Global initialization +KTToggle.init = function() { + KTToggle.createInstances(); +}; + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTToggle; +} +"use strict"; + +/** + * @class KTUtil base utilize class that privides helper functions + */ + +// Polyfills + +// Element.matches() polyfill +if (!Element.prototype.matches) { + Element.prototype.matches = function(s) { + var matches = (this.document || this.ownerDocument).querySelectorAll(s), + i = matches.length; + while (--i >= 0 && matches.item(i) !== this) {} + return i > -1; + }; +} + +/** + * Element.closest() polyfill + * https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill + */ +if (!Element.prototype.closest) { + Element.prototype.closest = function (s) { + var el = this; + var ancestor = this; + if (!document.documentElement.contains(el)) return null; + do { + if (ancestor.matches(s)) return ancestor; + ancestor = ancestor.parentElement; + } while (ancestor !== null); + return null; + }; +} + +/** + * ChildNode.remove() polyfill + * https://gomakethings.com/removing-an-element-from-the-dom-the-es6-way/ + * @author Chris Ferdinandi + * @license MIT + */ +(function (elem) { + for (var i = 0; i < elem.length; i++) { + if (!window[elem[i]] || 'remove' in window[elem[i]].prototype) continue; + window[elem[i]].prototype.remove = function () { + this.parentNode.removeChild(this); + }; + } +})(['Element', 'CharacterData', 'DocumentType']); + + +// +// requestAnimationFrame polyfill by Erik Möller. +// With fixes from Paul Irish and Tino Zijdel +// +// http://paulirish.com/2011/requestanimationframe-for-smart-animating/ +// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating +// +// MIT license +// +(function() { + var lastTime = 0; + var vendors = ['webkit', 'moz']; + for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { + window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']; + window.cancelAnimationFrame = + window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame']; + } + + if (!window.requestAnimationFrame) + window.requestAnimationFrame = function(callback) { + var currTime = new Date().getTime(); + var timeToCall = Math.max(0, 16 - (currTime - lastTime)); + var id = window.setTimeout(function() { + callback(currTime + timeToCall); + }, timeToCall); + lastTime = currTime + timeToCall; + return id; + }; + + if (!window.cancelAnimationFrame) + window.cancelAnimationFrame = function(id) { + clearTimeout(id); + }; +}()); + +// Source: https://github.com/jserz/js_piece/blob/master/DOM/ParentNode/prepend()/prepend().md +(function(arr) { + arr.forEach(function(item) { + if (item.hasOwnProperty('prepend')) { + return; + } + Object.defineProperty(item, 'prepend', { + configurable: true, + enumerable: true, + writable: true, + value: function prepend() { + var argArr = Array.prototype.slice.call(arguments), + docFrag = document.createDocumentFragment(); + + argArr.forEach(function(argItem) { + var isNode = argItem instanceof Node; + docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem))); + }); + + this.insertBefore(docFrag, this.firstChild); + } + }); + }); +})([Element.prototype, Document.prototype, DocumentFragment.prototype]); + +// getAttributeNames +if (Element.prototype.getAttributeNames == undefined) { + Element.prototype.getAttributeNames = function () { + var attributes = this.attributes; + var length = attributes.length; + var result = new Array(length); + for (var i = 0; i < length; i++) { + result[i] = attributes[i].name; + } + return result; + }; +} + +// Global variables +window.KTUtilElementDataStore = {}; +window.KTUtilElementDataStoreID = 0; +window.KTUtilDelegatedEventHandlers = {}; + +var KTUtil = function() { + var resizeHandlers = []; + + /** + * Handle window resize event with some + * delay to attach event handlers upon resize complete + */ + var _windowResizeHandler = function() { + var _runResizeHandlers = function() { + // reinitialize other subscribed elements + for (var i = 0; i < resizeHandlers.length; i++) { + var each = resizeHandlers[i]; + each.call(); + } + }; + + var timer; + + window.addEventListener('resize', function() { + KTUtil.throttle(timer, function() { + _runResizeHandlers(); + }, 200); + }); + }; + + return { + /** + * Class main initializer. + * @param {object} settings. + * @returns null + */ + //main function to initiate the theme + init: function(settings) { + _windowResizeHandler(); + }, + + /** + * Adds window resize event handler. + * @param {function} callback function. + */ + addResizeHandler: function(callback) { + resizeHandlers.push(callback); + }, + + /** + * Removes window resize event handler. + * @param {function} callback function. + */ + removeResizeHandler: function(callback) { + for (var i = 0; i < resizeHandlers.length; i++) { + if (callback === resizeHandlers[i]) { + delete resizeHandlers[i]; + } + } + }, + + /** + * Trigger window resize handlers. + */ + runResizeHandlers: function() { + _runResizeHandlers(); + }, + + resize: function() { + if (typeof(Event) === 'function') { + // modern browsers + window.dispatchEvent(new Event('resize')); + } else { + // for IE and other old browsers + // causes deprecation warning on modern browsers + var evt = window.document.createEvent('UIEvents'); + evt.initUIEvent('resize', true, false, window, 0); + window.dispatchEvent(evt); + } + }, + + /** + * Get GET parameter value from URL. + * @param {string} paramName Parameter name. + * @returns {string} + */ + getURLParam: function(paramName) { + var searchString = window.location.search.substring(1), + i, val, params = searchString.split("&"); + + for (i = 0; i < params.length; i++) { + val = params[i].split("="); + if (val[0] == paramName) { + return unescape(val[1]); + } + } + + return null; + }, + + /** + * Checks whether current device is mobile touch. + * @returns {boolean} + */ + isMobileDevice: function() { + var test = (this.getViewPort().width < this.getBreakpoint('lg') ? true : false); + + if (test === false) { + // For use within normal web clients + test = navigator.userAgent.match(/iPad/i) != null; + } + + return test; + }, + + /** + * Checks whether current device is desktop. + * @returns {boolean} + */ + isDesktopDevice: function() { + return KTUtil.isMobileDevice() ? false : true; + }, + + /** + * Gets browser window viewport size. Ref: + * http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/ + * @returns {object} + */ + getViewPort: function() { + var e = window, + a = 'inner'; + if (!('innerWidth' in window)) { + a = 'client'; + e = document.documentElement || document.body; + } + + return { + width: e[a + 'Width'], + height: e[a + 'Height'] + }; + }, + + /** + * Checks whether given device mode is currently activated. + * @param {string} mode Responsive mode name(e.g: desktop, + * desktop-and-tablet, tablet, tablet-and-mobile, mobile) + * @returns {boolean} + */ + isBreakpointUp: function(mode) { + var width = this.getViewPort().width; + var breakpoint = this.getBreakpoint(mode); + + return (width >= breakpoint); + }, + + isBreakpointDown: function(mode) { + var width = this.getViewPort().width; + var breakpoint = this.getBreakpoint(mode); + + return (width < breakpoint); + }, + + getViewportWidth: function() { + return this.getViewPort().width; + }, + + /** + * Generates unique ID for give prefix. + * @param {string} prefix Prefix for generated ID + * @returns {boolean} + */ + getUniqueId: function(prefix) { + return prefix + Math.floor(Math.random() * (new Date()).getTime()); + }, + + /** + * Gets window width for give breakpoint mode. + * @param {string} mode Responsive mode name(e.g: xl, lg, md, sm) + * @returns {number} + */ + getBreakpoint: function(breakpoint) { + var value = this.getCssVariableValue('--bs-' + breakpoint); + + if ( value ) { + value = parseInt(value.trim()); + } + + return value; + }, + + /** + * Checks whether object has property matchs given key path. + * @param {object} obj Object contains values paired with given key path + * @param {string} keys Keys path seperated with dots + * @returns {object} + */ + isset: function(obj, keys) { + var stone; + + keys = keys || ''; + + if (keys.indexOf('[') !== -1) { + throw new Error('Unsupported object path notation.'); + } + + keys = keys.split('.'); + + do { + if (obj === undefined) { + return false; + } + + stone = keys.shift(); + + if (!obj.hasOwnProperty(stone)) { + return false; + } + + obj = obj[stone]; + + } while (keys.length); + + return true; + }, + + /** + * Gets highest z-index of the given element parents + * @param {object} el jQuery element object + * @returns {number} + */ + getHighestZindex: function(el) { + var position, value; + + while (el && el !== document) { + // Ignore z-index if position is set to a value where z-index is ignored by the browser + // This makes behavior of this function consistent across browsers + // WebKit always returns auto if the element is positioned + position = KTUtil.css(el, 'position'); + + if (position === "absolute" || position === "relative" || position === "fixed") { + // IE returns 0 when zIndex is not specified + // other browsers return a string + // we ignore the case of nested elements with an explicit value of 0 + //
+ value = parseInt(KTUtil.css(el, 'z-index')); + + if (!isNaN(value) && value !== 0) { + return value; + } + } + + el = el.parentNode; + } + + return 1; + }, + + /** + * Checks whether the element has any parent with fixed positionfreg + * @param {object} el jQuery element object + * @returns {boolean} + */ + hasFixedPositionedParent: function(el) { + var position; + + while (el && el !== document) { + position = KTUtil.css(el, 'position'); + + if (position === "fixed") { + return true; + } + + el = el.parentNode; + } + + return false; + }, + + /** + * Simulates delay + */ + sleep: function(milliseconds) { + var start = new Date().getTime(); + for (var i = 0; i < 1e7; i++) { + if ((new Date().getTime() - start) > milliseconds) { + break; + } + } + }, + + /** + * Gets randomly generated integer value within given min and max range + * @param {number} min Range start value + * @param {number} max Range end value + * @returns {number} + */ + getRandomInt: function(min, max) { + return Math.floor(Math.random() * (max - min + 1)) + min; + }, + + /** + * Checks whether Angular library is included + * @returns {boolean} + */ + isAngularVersion: function() { + return window.Zone !== undefined ? true : false; + }, + + // Deep extend: $.extend(true, {}, objA, objB); + deepExtend: function(out) { + out = out || {}; + + for (var i = 1; i < arguments.length; i++) { + var obj = arguments[i]; + if (!obj) continue; + + for (var key in obj) { + if (!obj.hasOwnProperty(key)) { + continue; + } + + // based on https://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/ + if ( Object.prototype.toString.call(obj[key]) === '[object Object]' ) { + out[key] = KTUtil.deepExtend(out[key], obj[key]); + continue; + } + + out[key] = obj[key]; + } + } + + return out; + }, + + // extend: $.extend({}, objA, objB); + extend: function(out) { + out = out || {}; + + for (var i = 1; i < arguments.length; i++) { + if (!arguments[i]) + continue; + + for (var key in arguments[i]) { + if (arguments[i].hasOwnProperty(key)) + out[key] = arguments[i][key]; + } + } + + return out; + }, + + getBody: function() { + return document.getElementsByTagName('body')[0]; + }, + + /** + * Checks whether the element has given classes + * @param {object} el jQuery element object + * @param {string} Classes string + * @returns {boolean} + */ + hasClasses: function(el, classes) { + if (!el) { + return; + } + + var classesArr = classes.split(" "); + + for (var i = 0; i < classesArr.length; i++) { + if (KTUtil.hasClass(el, KTUtil.trim(classesArr[i])) == false) { + return false; + } + } + + return true; + }, + + hasClass: function(el, className) { + if (!el) { + return; + } + + return el.classList ? el.classList.contains(className) : new RegExp('\\b' + className + '\\b').test(el.className); + }, + + addClass: function(el, className) { + if (!el || typeof className === 'undefined') { + return; + } + + var classNames = className.split(' '); + + if (el.classList) { + for (var i = 0; i < classNames.length; i++) { + if (classNames[i] && classNames[i].length > 0) { + el.classList.add(KTUtil.trim(classNames[i])); + } + } + } else if (!KTUtil.hasClass(el, className)) { + for (var x = 0; x < classNames.length; x++) { + el.className += ' ' + KTUtil.trim(classNames[x]); + } + } + }, + + removeClass: function(el, className) { + if (!el || typeof className === 'undefined') { + return; + } + + var classNames = className.split(' '); + + if (el.classList) { + for (var i = 0; i < classNames.length; i++) { + el.classList.remove(KTUtil.trim(classNames[i])); + } + } else if (KTUtil.hasClass(el, className)) { + for (var x = 0; x < classNames.length; x++) { + el.className = el.className.replace(new RegExp('\\b' + KTUtil.trim(classNames[x]) + '\\b', 'g'), ''); + } + } + }, + + triggerCustomEvent: function(el, eventName, data) { + var event; + if (window.CustomEvent) { + event = new CustomEvent(eventName, { + detail: data + }); + } else { + event = document.createEvent('CustomEvent'); + event.initCustomEvent(eventName, true, true, data); + } + + el.dispatchEvent(event); + }, + + triggerEvent: function(node, eventName) { + // Make sure we use the ownerDocument from the provided node to avoid cross-window problems + var doc; + + if (node.ownerDocument) { + doc = node.ownerDocument; + } else if (node.nodeType == 9) { + // the node may be the document itself, nodeType 9 = DOCUMENT_NODE + doc = node; + } else { + throw new Error("Invalid node passed to fireEvent: " + node.id); + } + + if (node.dispatchEvent) { + // Gecko-style approach (now the standard) takes more work + var eventClass = ""; + + // Different events have different event classes. + // If this switch statement can't map an eventName to an eventClass, + // the event firing is going to fail. + switch (eventName) { + case "click": // Dispatching of 'click' appears to not work correctly in Safari. Use 'mousedown' or 'mouseup' instead. + case "mouseenter": + case "mouseleave": + case "mousedown": + case "mouseup": + eventClass = "MouseEvents"; + break; + + case "focus": + case "change": + case "blur": + case "select": + eventClass = "HTMLEvents"; + break; + + default: + throw "fireEvent: Couldn't find an event class for event '" + eventName + "'."; + break; + } + var event = doc.createEvent(eventClass); + + var bubbles = eventName == "change" ? false : true; + event.initEvent(eventName, bubbles, true); // All events created as bubbling and cancelable. + + event.synthetic = true; // allow detection of synthetic events + // The second parameter says go ahead with the default action + node.dispatchEvent(event, true); + } else if (node.fireEvent) { + // IE-old school style + var event = doc.createEventObject(); + event.synthetic = true; // allow detection of synthetic events + node.fireEvent("on" + eventName, event); + } + }, + + index: function( el ){ + var c = el.parentNode.children, i = 0; + for(; i < c.length; i++ ) + if( c[i] == el ) return i; + }, + + trim: function(string) { + return string.trim(); + }, + + eventTriggered: function(e) { + if (e.currentTarget.dataset.triggered) { + return true; + } else { + e.currentTarget.dataset.triggered = true; + + return false; + } + }, + + remove: function(el) { + if (el && el.parentNode) { + el.parentNode.removeChild(el); + } + }, + + find: function(parent, query) { + if ( parent !== null) { + return parent.querySelector(query); + } else { + return null; + } + }, + + findAll: function(parent, query) { + if ( parent !== null ) { + return parent.querySelectorAll(query); + } else { + return null; + } + }, + + insertAfter: function(el, referenceNode) { + return referenceNode.parentNode.insertBefore(el, referenceNode.nextSibling); + }, + + parents: function(elem, selector) { + // Set up a parent array + var parents = []; + + // Push each parent element to the array + for ( ; elem && elem !== document; elem = elem.parentNode ) { + if (selector) { + if (elem.matches(selector)) { + parents.push(elem); + } + continue; + } + parents.push(elem); + } + + // Return our parent array + return parents; + }, + + children: function(el, selector, log) { + if (!el || !el.childNodes) { + return null; + } + + var result = [], + i = 0, + l = el.childNodes.length; + + for (var i; i < l; ++i) { + if (el.childNodes[i].nodeType == 1 && KTUtil.matches(el.childNodes[i], selector, log)) { + result.push(el.childNodes[i]); + } + } + + return result; + }, + + child: function(el, selector, log) { + var children = KTUtil.children(el, selector, log); + + return children ? children[0] : null; + }, + + matches: function(el, selector, log) { + var p = Element.prototype; + var f = p.matches || p.webkitMatchesSelector || p.mozMatchesSelector || p.msMatchesSelector || function(s) { + return [].indexOf.call(document.querySelectorAll(s), this) !== -1; + }; + + if (el && el.tagName) { + return f.call(el, selector); + } else { + return false; + } + }, + + data: function(el) { + return { + set: function(name, data) { + if (!el) { + return; + } + + if (el.customDataTag === undefined) { + window.KTUtilElementDataStoreID++; + el.customDataTag = window.KTUtilElementDataStoreID; + } + + if (window.KTUtilElementDataStore[el.customDataTag] === undefined) { + window.KTUtilElementDataStore[el.customDataTag] = {}; + } + + window.KTUtilElementDataStore[el.customDataTag][name] = data; + }, + + get: function(name) { + if (!el) { + return; + } + + if (el.customDataTag === undefined) { + return null; + } + + return this.has(name) ? window.KTUtilElementDataStore[el.customDataTag][name] : null; + }, + + has: function(name) { + if (!el) { + return false; + } + + if (el.customDataTag === undefined) { + return false; + } + + return (window.KTUtilElementDataStore[el.customDataTag] && window.KTUtilElementDataStore[el.customDataTag][name]) ? true : false; + }, + + remove: function(name) { + if (el && this.has(name)) { + delete window.KTUtilElementDataStore[el.customDataTag][name]; + } + } + }; + }, + + outerWidth: function(el, margin) { + var width; + + if (margin === true) { + width = parseFloat(el.offsetWidth); + width += parseFloat(KTUtil.css(el, 'margin-left')) + parseFloat(KTUtil.css(el, 'margin-right')); + + return parseFloat(width); + } else { + width = parseFloat(el.offsetWidth); + + return width; + } + }, + + offset: function(el) { + var rect, win; + + if ( !el ) { + return; + } + + // Return zeros for disconnected and hidden (display: none) elements (gh-2310) + // Support: IE <=11 only + // Running getBoundingClientRect on a + // disconnected node in IE throws an error + + if ( !el.getClientRects().length ) { + return { top: 0, left: 0 }; + } + + // Get document-relative position by adding viewport scroll to viewport-relative gBCR + rect = el.getBoundingClientRect(); + win = el.ownerDocument.defaultView; + + return { + top: rect.top + win.pageYOffset, + left: rect.left + win.pageXOffset, + right: window.innerWidth - (el.offsetLeft + el.offsetWidth) + }; + }, + + height: function(el) { + return KTUtil.css(el, 'height'); + }, + + outerHeight: function(el, withMargin) { + var height = el.offsetHeight; + var style; + + if (typeof withMargin !== 'undefined' && withMargin === true) { + style = getComputedStyle(el); + height += parseInt(style.marginTop) + parseInt(style.marginBottom); + + return height; + } else { + return height; + } + }, + + visible: function(el) { + return !(el.offsetWidth === 0 && el.offsetHeight === 0); + }, + + isVisibleInContainer: function (el, container, offset = 0) { + const eleTop = el.offsetTop; + const eleBottom = eleTop + el.clientHeight + offset; + const containerTop = container.scrollTop; + const containerBottom = containerTop + container.clientHeight; + + // The element is fully visible in the container + return ( + (eleTop >= containerTop && eleBottom <= containerBottom) + ); + }, + + getRelativeTopPosition: function (el, container) { + return el.offsetTop - container.offsetTop; + }, + + attr: function(el, name, value) { + if (el == undefined) { + return; + } + + if (value !== undefined) { + el.setAttribute(name, value); + } else { + return el.getAttribute(name); + } + }, + + hasAttr: function(el, name) { + if (el == undefined) { + return; + } + + return el.getAttribute(name) ? true : false; + }, + + removeAttr: function(el, name) { + if (el == undefined) { + return; + } + + el.removeAttribute(name); + }, + + animate: function(from, to, duration, update, easing, done) { + /** + * TinyAnimate.easings + * Adapted from jQuery Easing + */ + var easings = {}; + var easing; + + easings.linear = function(t, b, c, d) { + return c * t / d + b; + }; + + easing = easings.linear; + + // Early bail out if called incorrectly + if (typeof from !== 'number' || + typeof to !== 'number' || + typeof duration !== 'number' || + typeof update !== 'function') { + return; + } + + // Create mock done() function if necessary + if (typeof done !== 'function') { + done = function() {}; + } + + // Pick implementation (requestAnimationFrame | setTimeout) + var rAF = window.requestAnimationFrame || function(callback) { + window.setTimeout(callback, 1000 / 50); + }; + + // Animation loop + var canceled = false; + var change = to - from; + + function loop(timestamp) { + var time = (timestamp || +new Date()) - start; + + if (time >= 0) { + update(easing(time, from, change, duration)); + } + if (time >= 0 && time >= duration) { + update(to); + done(); + } else { + rAF(loop); + } + } + + update(from); + + // Start animation loop + var start = window.performance && window.performance.now ? window.performance.now() : +new Date(); + + rAF(loop); + }, + + actualCss: function(el, prop, cache) { + var css = ''; + + if (el instanceof HTMLElement === false) { + return; + } + + if (!el.getAttribute('kt-hidden-' + prop) || cache === false) { + var value; + + // the element is hidden so: + // making the el block so we can meassure its height but still be hidden + css = el.style.cssText; + el.style.cssText = 'position: absolute; visibility: hidden; display: block;'; + + if (prop == 'width') { + value = el.offsetWidth; + } else if (prop == 'height') { + value = el.offsetHeight; + } + + el.style.cssText = css; + + // store it in cache + el.setAttribute('kt-hidden-' + prop, value); + + return parseFloat(value); + } else { + // store it in cache + return parseFloat(el.getAttribute('kt-hidden-' + prop)); + } + }, + + actualHeight: function(el, cache) { + return KTUtil.actualCss(el, 'height', cache); + }, + + actualWidth: function(el, cache) { + return KTUtil.actualCss(el, 'width', cache); + }, + + getScroll: function(element, method) { + // The passed in `method` value should be 'Top' or 'Left' + method = 'scroll' + method; + return (element == window || element == document) ? ( + self[(method == 'scrollTop') ? 'pageYOffset' : 'pageXOffset'] || + (browserSupportsBoxModel && document.documentElement[method]) || + document.body[method] + ) : element[method]; + }, + + css: function(el, styleProp, value, important) { + if (!el) { + return; + } + + if (value !== undefined) { + if ( important === true ) { + el.style.setProperty(styleProp, value, 'important'); + } else { + el.style[styleProp] = value; + } + } else { + var defaultView = (el.ownerDocument || document).defaultView; + + // W3C standard way: + if (defaultView && defaultView.getComputedStyle) { + // sanitize property name to css notation + // (hyphen separated words eg. font-Size) + styleProp = styleProp.replace(/([A-Z])/g, "-$1").toLowerCase(); + + return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp); + } else if (el.currentStyle) { // IE + // sanitize property name to camelCase + styleProp = styleProp.replace(/\-(\w)/g, function(str, letter) { + return letter.toUpperCase(); + }); + + value = el.currentStyle[styleProp]; + + // convert other units to pixels on IE + if (/^\d+(em|pt|%|ex)?$/i.test(value)) { + return (function(value) { + var oldLeft = el.style.left, oldRsLeft = el.runtimeStyle.left; + + el.runtimeStyle.left = el.currentStyle.left; + el.style.left = value || 0; + value = el.style.pixelLeft + "px"; + el.style.left = oldLeft; + el.runtimeStyle.left = oldRsLeft; + + return value; + })(value); + } + + return value; + } + } + }, + + slide: function(el, dir, speed, callback, recalcMaxHeight) { + if (!el || (dir == 'up' && KTUtil.visible(el) === false) || (dir == 'down' && KTUtil.visible(el) === true)) { + return; + } + + speed = (speed ? speed : 600); + var calcHeight = KTUtil.actualHeight(el); + var calcPaddingTop = false; + var calcPaddingBottom = false; + + if (KTUtil.css(el, 'padding-top') && KTUtil.data(el).has('slide-padding-top') !== true) { + KTUtil.data(el).set('slide-padding-top', KTUtil.css(el, 'padding-top')); + } + + if (KTUtil.css(el, 'padding-bottom') && KTUtil.data(el).has('slide-padding-bottom') !== true) { + KTUtil.data(el).set('slide-padding-bottom', KTUtil.css(el, 'padding-bottom')); + } + + if (KTUtil.data(el).has('slide-padding-top')) { + calcPaddingTop = parseInt(KTUtil.data(el).get('slide-padding-top')); + } + + if (KTUtil.data(el).has('slide-padding-bottom')) { + calcPaddingBottom = parseInt(KTUtil.data(el).get('slide-padding-bottom')); + } + + if (dir == 'up') { // up + el.style.cssText = 'display: block; overflow: hidden;'; + + if (calcPaddingTop) { + KTUtil.animate(0, calcPaddingTop, speed, function(value) { + el.style.paddingTop = (calcPaddingTop - value) + 'px'; + }, 'linear'); + } + + if (calcPaddingBottom) { + KTUtil.animate(0, calcPaddingBottom, speed, function(value) { + el.style.paddingBottom = (calcPaddingBottom - value) + 'px'; + }, 'linear'); + } + + KTUtil.animate(0, calcHeight, speed, function(value) { + el.style.height = (calcHeight - value) + 'px'; + }, 'linear', function() { + el.style.height = ''; + el.style.display = 'none'; + + if (typeof callback === 'function') { + callback(); + } + }); + + + } else if (dir == 'down') { // down + el.style.cssText = 'display: block; overflow: hidden;'; + + if (calcPaddingTop) { + KTUtil.animate(0, calcPaddingTop, speed, function(value) {// + el.style.paddingTop = value + 'px'; + }, 'linear', function() { + el.style.paddingTop = ''; + }); + } + + if (calcPaddingBottom) { + KTUtil.animate(0, calcPaddingBottom, speed, function(value) { + el.style.paddingBottom = value + 'px'; + }, 'linear', function() { + el.style.paddingBottom = ''; + }); + } + + KTUtil.animate(0, calcHeight, speed, function(value) { + el.style.height = value + 'px'; + }, 'linear', function() { + el.style.height = ''; + el.style.display = ''; + el.style.overflow = ''; + + if (typeof callback === 'function') { + callback(); + } + }); + } + }, + + slideUp: function(el, speed, callback) { + KTUtil.slide(el, 'up', speed, callback); + }, + + slideDown: function(el, speed, callback) { + KTUtil.slide(el, 'down', speed, callback); + }, + + show: function(el, display) { + if (typeof el !== 'undefined') { + el.style.display = (display ? display : 'block'); + } + }, + + hide: function(el) { + if (typeof el !== 'undefined') { + el.style.display = 'none'; + } + }, + + addEvent: function(el, type, handler, one) { + if (typeof el !== 'undefined' && el !== null) { + el.addEventListener(type, handler); + } + }, + + removeEvent: function(el, type, handler) { + if (el !== null) { + el.removeEventListener(type, handler); + } + }, + + on: function(element, selector, event, handler) { + if ( element === null ) { + return; + } + + var eventId = KTUtil.getUniqueId('event'); + + window.KTUtilDelegatedEventHandlers[eventId] = function(e) { + var targets = element.querySelectorAll(selector); + var target = e.target; + + while ( target && target !== element ) { + for ( var i = 0, j = targets.length; i < j; i++ ) { + if ( target === targets[i] ) { + handler.call(target, e); + } + } + + target = target.parentNode; + } + } + + KTUtil.addEvent(element, event, window.KTUtilDelegatedEventHandlers[eventId]); + + return eventId; + }, + + off: function(element, event, eventId) { + if (!element || !window.KTUtilDelegatedEventHandlers[eventId]) { + return; + } + + KTUtil.removeEvent(element, event, window.KTUtilDelegatedEventHandlers[eventId]); + + delete window.KTUtilDelegatedEventHandlers[eventId]; + }, + + one: function onetime(el, type, callback) { + el.addEventListener(type, function callee(e) { + // remove event + if (e.target && e.target.removeEventListener) { + e.target.removeEventListener(e.type, callee); + } + + // need to verify from https://themeforest.net/author_dashboard#comment_23615588 + if (el && el.removeEventListener) { + e.currentTarget.removeEventListener(e.type, callee); + } + + // call handler + return callback(e); + }); + }, + + hash: function(str) { + var hash = 0, + i, chr; + + if (str.length === 0) return hash; + for (i = 0; i < str.length; i++) { + chr = str.charCodeAt(i); + hash = ((hash << 5) - hash) + chr; + hash |= 0; // Convert to 32bit integer + } + + return hash; + }, + + animateClass: function(el, animationName, callback) { + var animation; + var animations = { + animation: 'animationend', + OAnimation: 'oAnimationEnd', + MozAnimation: 'mozAnimationEnd', + WebkitAnimation: 'webkitAnimationEnd', + msAnimation: 'msAnimationEnd', + }; + + for (var t in animations) { + if (el.style[t] !== undefined) { + animation = animations[t]; + } + } + + KTUtil.addClass(el, animationName); + + KTUtil.one(el, animation, function() { + KTUtil.removeClass(el, animationName); + }); + + if (callback) { + KTUtil.one(el, animation, callback); + } + }, + + transitionEnd: function(el, callback) { + var transition; + var transitions = { + transition: 'transitionend', + OTransition: 'oTransitionEnd', + MozTransition: 'mozTransitionEnd', + WebkitTransition: 'webkitTransitionEnd', + msTransition: 'msTransitionEnd' + }; + + for (var t in transitions) { + if (el.style[t] !== undefined) { + transition = transitions[t]; + } + } + + KTUtil.one(el, transition, callback); + }, + + animationEnd: function(el, callback) { + var animation; + var animations = { + animation: 'animationend', + OAnimation: 'oAnimationEnd', + MozAnimation: 'mozAnimationEnd', + WebkitAnimation: 'webkitAnimationEnd', + msAnimation: 'msAnimationEnd' + }; + + for (var t in animations) { + if (el.style[t] !== undefined) { + animation = animations[t]; + } + } + + KTUtil.one(el, animation, callback); + }, + + animateDelay: function(el, value) { + var vendors = ['webkit-', 'moz-', 'ms-', 'o-', '']; + for (var i = 0; i < vendors.length; i++) { + KTUtil.css(el, vendors[i] + 'animation-delay', value); + } + }, + + animateDuration: function(el, value) { + var vendors = ['webkit-', 'moz-', 'ms-', 'o-', '']; + for (var i = 0; i < vendors.length; i++) { + KTUtil.css(el, vendors[i] + 'animation-duration', value); + } + }, + + scrollTo: function(target, offset, duration) { + var duration = duration ? duration : 500; + var targetPos = target ? KTUtil.offset(target).top : 0; + var scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; + var from, to; + + if (offset) { + targetPos = targetPos - offset; + } + + from = scrollPos; + to = targetPos; + + KTUtil.animate(from, to, duration, function(value) { + document.documentElement.scrollTop = value; + document.body.parentNode.scrollTop = value; + document.body.scrollTop = value; + }); //, easing, done + }, + + scrollTop: function(offset, duration) { + KTUtil.scrollTo(null, offset, duration); + }, + + isArray: function(obj) { + return obj && Array.isArray(obj); + }, + + isEmpty: function(obj) { + for (var prop in obj) { + if (obj.hasOwnProperty(prop)) { + return false; + } + } + + return true; + }, + + numberString: function(nStr) { + nStr += ''; + var x = nStr.split('.'); + var x1 = x[0]; + var x2 = x.length > 1 ? '.' + x[1] : ''; + var rgx = /(\d+)(\d{3})/; + while (rgx.test(x1)) { + x1 = x1.replace(rgx, '$1' + ',' + '$2'); + } + return x1 + x2; + }, + + isRTL: function() { + return (document.querySelector('html').getAttribute("direction") === 'rtl'); + }, + + snakeToCamel: function(s){ + return s.replace(/(\-\w)/g, function(m){return m[1].toUpperCase();}); + }, + + filterBoolean: function(val) { + // Convert string boolean + if (val === true || val === 'true') { + return true; + } + + if (val === false || val === 'false') { + return false; + } + + return val; + }, + + setHTML: function(el, html) { + el.innerHTML = html; + }, + + getHTML: function(el) { + if (el) { + return el.innerHTML; + } + }, + + getDocumentHeight: function() { + var body = document.body; + var html = document.documentElement; + + return Math.max( body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight ); + }, + + getScrollTop: function() { + return (document.scrollingElement || document.documentElement).scrollTop; + }, + + colorLighten: function(color, amount) { + const addLight = function(color, amount){ + let cc = parseInt(color,16) + amount; + let c = (cc > 255) ? 255 : (cc); + c = (c.toString(16).length > 1 ) ? c.toString(16) : `0${c.toString(16)}`; + return c; + } + + color = (color.indexOf("#")>=0) ? color.substring(1,color.length) : color; + amount = parseInt((255*amount)/100); + + return color = `#${addLight(color.substring(0,2), amount)}${addLight(color.substring(2,4), amount)}${addLight(color.substring(4,6), amount)}`; + }, + + colorDarken: function(color, amount) { + const subtractLight = function(color, amount){ + let cc = parseInt(color,16) - amount; + let c = (cc < 0) ? 0 : (cc); + c = (c.toString(16).length > 1 ) ? c.toString(16) : `0${c.toString(16)}`; + + return c; + } + + color = (color.indexOf("#")>=0) ? color.substring(1,color.length) : color; + amount = parseInt((255*amount)/100); + + return color = `#${subtractLight(color.substring(0,2), amount)}${subtractLight(color.substring(2,4), amount)}${subtractLight(color.substring(4,6), amount)}`; + }, + + // Throttle function: Input as function which needs to be throttled and delay is the time interval in milliseconds + throttle: function (timer, func, delay) { + // If setTimeout is already scheduled, no need to do anything + if (timer) { + return; + } + + // Schedule a setTimeout after delay seconds + timer = setTimeout(function () { + func(); + + // Once setTimeout function execution is finished, timerId = undefined so that in
+ // the next scroll event function execution can be scheduled by the setTimeout + timer = undefined; + }, delay); + }, + + // Debounce function: Input as function which needs to be debounced and delay is the debounced time in milliseconds + debounce: function (timer, func, delay) { + // Cancels the setTimeout method execution + clearTimeout(timer) + + // Executes the func after delay time. + timer = setTimeout(func, delay); + }, + + parseJson: function(value) { + if (typeof value === 'string') { + value = value.replace(/'/g, "\""); + + var jsonStr = value.replace(/(\w+:)|(\w+ :)/g, function(matched) { + return '"' + matched.substring(0, matched.length - 1) + '":'; + }); + + try { + value = JSON.parse(jsonStr); + } catch(e) { } + } + + return value; + }, + + getResponsiveValue: function(value, defaultValue) { + var width = this.getViewPort().width; + var result = null; + + value = KTUtil.parseJson(value); + + if (typeof value === 'object') { + var resultKey; + var resultBreakpoint = -1; + var breakpoint; + + for (var key in value) { + if (key === 'default') { + breakpoint = 0; + } else { + breakpoint = this.getBreakpoint(key) ? this.getBreakpoint(key) : parseInt(key); + } + + if (breakpoint <= width && breakpoint > resultBreakpoint) { + resultKey = key; + resultBreakpoint = breakpoint; + } + } + + if (resultKey) { + result = value[resultKey]; + } else { + result = value; + } + } else { + result = value; + } + + return result; + }, + + each: function(array, callback) { + return [].slice.call(array).map(callback); + }, + + getSelectorMatchValue: function(value) { + var result = null; + value = KTUtil.parseJson(value); + + if ( typeof value === 'object' ) { + // Match condition + if ( value['match'] !== undefined ) { + var selector = Object.keys(value['match'])[0]; + value = Object.values(value['match'])[0]; + + if ( document.querySelector(selector) !== null ) { + result = value; + } + } + } else { + result = value; + } + + return result; + }, + + getConditionalValue: function(value) { + var value = KTUtil.parseJson(value); + var result = KTUtil.getResponsiveValue(value); + + if ( result !== null && result['match'] !== undefined ) { + result = KTUtil.getSelectorMatchValue(result); + } + + if ( result === null && value !== null && value['default'] !== undefined ) { + result = value['default']; + } + + return result; + }, + + getCssVariableValue: function(variableName) { + var hex = getComputedStyle(document.documentElement).getPropertyValue(variableName); + if ( hex && hex.length > 0 ) { + hex = hex.trim(); + } + + return hex; + }, + + isInViewport: function(element) { + var rect = element.getBoundingClientRect(); + + return ( + rect.top >= 0 && + rect.left >= 0 && + rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && + rect.right <= (window.innerWidth || document.documentElement.clientWidth) + ); + }, + + isPartiallyInViewport: function(element) { + let x = element.getBoundingClientRect().left; + let y = element.getBoundingClientRect().top; + let ww = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); + let hw = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); + let w = element.clientWidth; + let h = element.clientHeight; + + return ( + (y < hw && + y + h > 0) && + (x < ww && + x + w > 0) + ); + }, + + onDOMContentLoaded: function(callback) { + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', callback); + } else { + callback(); + } + }, + + inIframe: function() { + try { + return window.self !== window.top; + } catch (e) { + return true; + } + }, + + isHexColor(code) { + return /^#[0-9A-F]{6}$/i.test(code); + } + } +}(); + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTUtil; +} +// +// Global init of core components +// + +// Init components +var KTComponents = function () { + // Public methods + return { + init: function () { + KTApp.init(); + KTDrawer.init(); + KTMenu.init(); + KTScroll.init(); + KTSticky.init(); + KTSwapper.init(); + KTToggle.init(); + KTScrolltop.init(); + KTDialer.init(); + KTImageInput.init(); + KTPasswordMeter.init(); + } + } +}(); + +// On document ready +if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", function() { + KTComponents.init(); + }); + } else { + KTComponents.init(); + } + + // Init page loader +window.addEventListener("load", function() { + KTApp.hidePageLoading(); +}); + +// Declare KTApp for Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + window.KTComponents = module.exports = KTComponents; +} +"use strict"; + +// Class definition +var KTAppLayoutBuilder = function() { + var form; + var actionInput; + var url; + var previewButton; + var exportButton; + var resetButton; + + var engage; + var engageToggleOff; + var engageToggleOn; + var engagePrebuiltsModal; + + var handleEngagePrebuilts = function() { + if (engagePrebuiltsModal === null) { + return; + } + + if ( KTCookie.get("app_engage_prebuilts_modal_displayed") !== "1" ) { + setTimeout(function() { + const modal = new bootstrap.Modal(engagePrebuiltsModal); + modal.show(); + + const date = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000); // 30 days from now + KTCookie.set("app_engage_prebuilts_modal_displayed", "1", {expires: date}); + }, 3000); + } + } + + var handleEngagePrebuiltsViewMenu = function() { + const selected = engagePrebuiltsModal.querySelector('[data-kt-element="selected"]'); + const selectedTitle = engagePrebuiltsModal.querySelector('[data-kt-element="title"]'); + const menu = engagePrebuiltsModal.querySelector('[data-kt-menu="true"]'); + + // Toggle Handler + KTUtil.on(engagePrebuiltsModal, '[data-kt-mode]', 'click', function (e) { + const title = this.innerText; + const mode = this.getAttribute("data-kt-mode"); + const selectedLink = menu.querySelector('.menu-link.active'); + const viewImage = document.querySelector('#kt_app_engage_prebuilts_view_image'); + const viewText = document.querySelector('#kt_app_engage_prebuilts_view_text'); + selectedTitle.innerText = title; + + if (selectedLink) { + selectedLink.classList.remove('active'); + } + + this.classList.add('active'); + + if (mode === "image") { + viewImage.classList.remove("d-none"); + viewImage.classList.add("d-block"); + viewText.classList.remove("d-block"); + viewText.classList.add("d-none"); + } else { + viewText.classList.remove("d-none"); + viewText.classList.add("d-block"); + viewImage.classList.remove("d-block"); + viewImage.classList.add("d-none"); + } + }); + } + + var handleEngageToggle = function() { + engageToggleOff.addEventListener("click", function (e) { + e.preventDefault(); + + const date = new Date(Date.now() + 1 * 24 * 60 * 60 * 1000); // 1 days from now + KTCookie.set("app_engage_hide", "1", {expires: date}); + engage.classList.add('app-engage-hide'); + }); + + engageToggleOn.addEventListener("click", function (e) { + e.preventDefault(); + + KTCookie.remove("app_engage_hide"); + engage.classList.remove('app-engage-hide'); + }); + } + + var handlePreview = function() { + previewButton.addEventListener("click", function(e) { + e.preventDefault(); + + // Set form action value + actionInput.value = "preview"; + + // Show progress + previewButton.setAttribute("data-kt-indicator", "on"); + + // Prepare form data + var data = $(form).serialize(); + + // Submit + $.ajax({ + type: "POST", + dataType: "html", + url: url, + data: data, + success: function(response, status, xhr) { + if (history.scrollRestoration) { + history.scrollRestoration = 'manual'; + } + location.reload(); + return; + + toastr.success( + "Preview has been updated with current configured layout.", + "Preview updated!", + {timeOut: 0, extendedTimeOut: 0, closeButton: true, closeDuration: 0} + ); + + setTimeout(function() { + location.reload(); // reload page + }, 1500); + }, + error: function(response) { + toastr.error( + "Please try it again later.", + "Something went wrong!", + {timeOut: 0, extendedTimeOut: 0, closeButton: true, closeDuration: 0} + ); + }, + complete: function() { + previewButton.removeAttribute("data-kt-indicator"); + } + }); + }); + }; + + var handleExport = function() { + exportButton.addEventListener("click", function(e) { + e.preventDefault(); + + toastr.success( + "Process has been started and it may take a while.", + "Generating HTML!", + {timeOut: 0, extendedTimeOut: 0, closeButton: true, closeDuration: 0} + ); + + // Show progress + exportButton.setAttribute("data-kt-indicator", "on"); + + // Set form action value + actionInput.value = "export"; + + // Prepare form data + var data = $(form).serialize(); + + $.ajax({ + type: "POST", + dataType: "html", + url: url, + data: data, + success: function(response, status, xhr) { + var timer = setInterval(function() { + $("`},{name:"spotify",url:[/^open\.spotify\.com\/(artist\/\w+)/,/^open\.spotify\.com\/(album\/\w+)/,/^open\.spotify\.com\/(track\/\w+)/],html:t=>`
`},{name:"youtube",url:[/^(?:m\.)?youtube\.com\/watch\?v=([\w-]+)(?:&t=(\d+))?/,/^(?:m\.)?youtube\.com\/v\/([\w-]+)(?:\?t=(\d+))?/,/^youtube\.com\/embed\/([\w-]+)(?:\?start=(\d+))?/,/^youtu\.be\/([\w-]+)(?:\?t=(\d+))?/],html:t=>{const e=t[1],n=t[2];return`
`}},{name:"vimeo",url:[/^vimeo\.com\/(\d+)/,/^vimeo\.com\/[^/]+\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/album\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/channels\/[^/]+\/(\d+)/,/^vimeo\.com\/groups\/[^/]+\/videos\/(\d+)/,/^vimeo\.com\/ondemand\/[^/]+\/(\d+)/,/^player\.vimeo\.com\/video\/(\d+)/],html:t=>`
`},{name:"instagram",url:/^instagram\.com\/p\/(\w+)/},{name:"twitter",url:/^twitter\.com/},{name:"googleMaps",url:[/^google\.com\/maps/,/^goo\.gl\/maps/,/^maps\.google\.com/,/^maps\.app\.goo\.gl/]},{name:"flickr",url:/^flickr\.com/},{name:"facebook",url:/^facebook\.com/}]}),this.registry=new Yw(t.locale,t.config.get("mediaEmbed"))}init(){const t=this.editor,e=t.model.schema,n=t.t,o=t.conversion,i=t.config.get("mediaEmbed.previewsInData"),r=t.config.get("mediaEmbed.elementName"),s=this.registry;t.commands.add("mediaEmbed",new qw(t)),e.register("media",{inheritAllFrom:"$blockObject",allowAttributes:["url"]}),o.for("dataDowncast").elementToStructure({model:"media",view:(t,{writer:e})=>{const n=t.getAttribute("url");return Hw(e,s,n,{elementName:r,renderMediaPreview:n&&i})}}),o.for("dataDowncast").add(Uw(s,{elementName:r,renderMediaPreview:i})),o.for("editingDowncast").elementToStructure({model:"media",view:(t,{writer:e})=>{const o=t.getAttribute("url");return function(t,e,n){return e.setCustomProperty("media",!0,t),cm(t,e,{label:n})}(Hw(e,s,o,{elementName:r,renderForEditingView:!0}),e,n("media widget"))}}),o.for("editingDowncast").add(Uw(s,{elementName:r,renderForEditingView:!0})),o.for("upcast").elementToElement({view:t=>["oembed",r].includes(t.name)&&t.getAttribute("url")?{name:!0}:null,model:(t,{writer:e})=>{const n=t.getAttribute("url");if(s.hasMedia(n))return e.createElement("media",{url:n})}}).elementToElement({view:{name:"div",attributes:{"data-oembed-url":!0}},model:(t,{writer:e})=>{const n=t.getAttribute("data-oembed-url");if(s.hasMedia(n))return e.createElement("media",{url:n})}}).add((t=>{t.on("element:figure",(function(t,e,n){if(!n.consumable.consume(e.viewItem,{name:!0,classes:"media"}))return;const{modelRange:o,modelCursor:i}=n.convertChildren(e.viewItem,e.modelCursor);e.modelRange=o,e.modelCursor=i;Ca(o.getItems())||n.consumable.revert(e.viewItem,{name:!0,classes:"media"})}))}))}}const Jw=/^(?:http(s)?:\/\/)?[\w-]+\.[\w-.~:/?#[\]@!$&'()*+,;=%]+$/;class Xw extends F{static get requires(){return[Vm,tm,Np]}static get pluginName(){return"AutoMediaEmbed"}constructor(t){super(t),this._timeoutId=null,this._positionToInsert=null}init(){const t=this.editor,e=t.model.document;this.listenTo(t.plugins.get("ClipboardPipeline"),"inputTransformation",(()=>{const t=e.selection.getFirstRange(),n=pd.fromPosition(t.start);n.stickiness="toPrevious";const o=pd.fromPosition(t.end);o.stickiness="toNext",e.once("change:data",(()=>{this._embedMediaBetweenPositions(n,o),n.detach(),o.detach()}),{priority:"high"})})),t.commands.get("undo").on("execute",(()=>{this._timeoutId&&(Ao.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)}),{priority:"high"})}_embedMediaBetweenPositions(t,e){const n=this.editor,o=n.plugins.get(Zw).registry,i=new fc(t,e),r=i.getWalker({ignoreElementEnd:!0});let s="";for(const t of r)t.item.is("$textProxy")&&(s+=t.item.data);if(s=s.trim(),!s.match(Jw))return void i.detach();if(!o.hasMedia(s))return void i.detach();n.commands.get("mediaEmbed").isEnabled?(this._positionToInsert=pd.fromPosition(t),this._timeoutId=Ao.window.setTimeout((()=>{n.model.change((t=>{let e;this._timeoutId=null,t.remove(i),i.detach(),"$graveyard"!==this._positionToInsert.root.rootName&&(e=this._positionToInsert),Gw(n.model,s,e,!1),this._positionToInsert.detach(),this._positionToInsert=null})),n.plugins.get("Delete").requestUndoOnBackspace()}),100)):i.detach()}}var tA=n(9292),eA={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(tA.Z,eA);tA.Z.locals;class nA extends Th{constructor(t,e){super(e);const n=e.t;this.focusTracker=new va,this.keystrokes=new ya,this.set("mediaURLInputValue",""),this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(n("Save"),Xh.check,"ck-button-save"),this.saveButtonView.type="submit",this.saveButtonView.bind("isEnabled").to(this,"mediaURLInputValue",(t=>!!t)),this.cancelButtonView=this._createButton(n("Cancel"),Xh.cancel,"ck-button-cancel","cancel"),this._focusables=new rh,this._focusCycler=new yu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this._validators=t,this.setTemplate({tag:"form",attributes:{class:["ck","ck-media-form","ck-responsive-form"],tabindex:"-1"},children:[this.urlInputView,this.saveButtonView,this.cancelButtonView]}),eu(this)}render(){super.render(),nu({view:this});[this.urlInputView,this.saveButtonView,this.cancelButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)})),this.keystrokes.listenTo(this.element);const t=t=>t.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t),this.listenTo(this.urlInputView.element,"selectstart",((t,e)=>{e.stopPropagation()}),{priority:"high"})}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}get url(){return this.urlInputView.fieldView.element.value.trim()}set url(t){this.urlInputView.fieldView.element.value=t.trim()}isValid(){this.resetFormStatus();for(const t of this._validators){const e=t(this);if(e)return this.urlInputView.errorText=e,!1}return!0}resetFormStatus(){this.urlInputView.errorText=null,this.urlInputView.infoText=this._urlInputViewInfoDefault}_createUrlInput(){const t=this.locale.t,e=new ug(this.locale,gg),n=e.fieldView;return this._urlInputViewInfoDefault=t("Paste the media URL in the input."),this._urlInputViewInfoTip=t("Tip: Paste the URL into the content to embed faster."),e.label=t("Media URL"),e.infoText=this._urlInputViewInfoDefault,n.on("input",(()=>{e.infoText=n.element.value?this._urlInputViewInfoTip:this._urlInputViewInfoDefault,this.mediaURLInputValue=n.element.value.trim()})),e}_createButton(t,e,n,o){const i=new lu(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),o&&i.delegate("execute").to(this,o),i}}class oA extends F{static get requires(){return[Zw]}static get pluginName(){return"MediaEmbedUI"}init(){const t=this.editor,e=t.commands.get("mediaEmbed"),n=t.plugins.get(Zw).registry;t.ui.componentFactory.add("mediaEmbed",(o=>{const i=qu(o),r=new nA(function(t,e){return[e=>{if(!e.url.length)return t("The URL must not be empty.")},n=>{if(!e.hasMedia(n.url))return t("This media URL is not supported.")}]}(t.t,n),t.locale);return this._setUpDropdown(i,r,e,t),this._setUpForm(i,r,e),i}))}_setUpDropdown(t,e,n){const o=this.editor,i=o.t,r=t.buttonView;t.bind("isEnabled").to(n),t.panelView.children.add(e),r.set({label:i("Insert media"),icon:'',tooltip:!0}),r.on("open",(()=>{e.disableCssTransitions(),e.url=n.value||"",e.urlInputView.fieldView.select(),e.enableCssTransitions()}),{priority:"low"}),t.on("submit",(()=>{e.isValid()&&(o.execute("mediaEmbed",e.url),o.editing.view.focus())})),t.on("change:isOpen",(()=>e.resetFormStatus())),t.on("cancel",(()=>{o.editing.view.focus()}))}_setUpForm(t,e,n){e.delegate("submit","cancel").to(t),e.urlInputView.bind("value").to(n,"value"),e.urlInputView.bind("isReadOnly").to(n,"isEnabled",(t=>!t))}}var iA=n(4652),rA={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(iA.Z,rA);iA.Z.locals;function sA(t,e,n,{blockElements:o,inlineObjectElements:i}){let r=n.createPositionAt(t,"forward"==e?"after":"before");return r=r.getLastMatchingPosition((({item:t})=>t.is("element")&&!o.includes(t.name)&&!i.includes(t.name)),{direction:e}),"forward"==e?r.nodeAfter:r.nodeBefore}function aA(t,e){return!!t&&t.is("element")&&e.includes(t.name)}function cA(t,e){if(!t.childCount)return;const n=new qd(t.document),o=function(t,e){const n=e.createRangeIn(t),o=new Po({name:/^p|h\d+$/,styles:{"mso-list":/.*/}}),i=[];for(const t of n)if("elementStart"===t.type&&o.match(t.item)){const e=hA(t.item);i.push({element:t.item,id:e.id,order:e.order,indent:e.indent})}return i}(t,n);if(!o.length)return;let i=null,r=1;o.forEach(((t,s)=>{const a=function(t,e){if(!t)return!0;if(t.id!==e.id)return e.indent-t.indent!=1;const n=e.element.previousSibling;if(!n)return!0;return o=n,!(o.is("element","ol")||o.is("element","ul"));var o}(o[s-1],t),c=a?null:o[s-1],l=(h=t,(d=c)?h.indent-d.indent:h.indent-1);var d,h;if(a&&(i=null,r=1),!i||0!==l){const o=function(t,e){const n=new RegExp(`@list l${t.id}:level${t.indent}\\s*({[^}]*)`,"gi"),o=/mso-level-number-format:([^;]{0,100});/gi,i=/mso-level-start-at:\s{0,100}([0-9]{0,10})\s{0,100};/gi,r=n.exec(e);let s="decimal",a="ol",c=null;if(r&&r[1]){const e=o.exec(r[1]);if(e&&e[1]&&(s=e[1].trim(),a="bullet"!==s&&"image"!==s?"ol":"ul"),"bullet"===s){const e=function(t){const e=function(t){if(t.getChild(0).is("$text"))return null;for(const e of t.getChildren()){if(!e.is("element","span"))continue;const t=e.getChild(0);return t.is("$text")?t:t.getChild(0)}}(t);if(!e)return null;const n=e._data;if("o"===n)return"circle";if("·"===n)return"disc";if("§"===n)return"square";return null}(t.element);e&&(s=e)}else{const t=i.exec(r[1]);t&&t[1]&&(c=parseInt(t[1]))}}return{type:a,startIndex:c,style:lA(s)}}(t,e);if(i){if(t.indent>r){const t=i.getChild(i.childCount-1),e=t.getChild(t.childCount-1);i=dA(o,e,n),r+=1}else if(t.indent1&&n.setAttribute("start",t.startIndex,i),i}function hA(t){const e={},n=t.getStyle("mso-list");if(n){const t=n.match(/(^|\s{1,100})l(\d+)/i),o=n.match(/\s{0,100}lfo(\d+)/i),i=n.match(/\s{0,100}level(\d+)/i);t&&o&&i&&(e.id=t[2],e.order=o[1],e.indent=i[1])}return e}const uA=/id=("|')docs-internal-guid-[-0-9a-f]+("|')/i;class gA{constructor(t){this.document=t}isActive(t){return uA.test(t)}execute(t){const e=new qd(this.document),{body:n}=t._parsedData;!function(t,e){for(const n of t.getChildren())if(n.is("element","b")&&"normal"===n.getStyle("font-weight")){const o=t.getChildIndex(n);e.remove(n),e.insertChild(o,n.getChildren(),t)}}(n,e),function(t,e){for(const n of e.createRangeIn(t)){const t=n.item;if(t.is("element","li")){const n=t.getChild(0);n&&n.is("element","p")&&e.unwrapElement(n)}}}(n,e),function(t,e){const n=new tr(e.document.stylesProcessor),o=new ps(n,{renderingMode:"data"}),i=o.blockElements,r=o.inlineObjectElements,s=[];for(const n of e.createRangeIn(t)){const t=n.item;if(t.is("element","br")){const n=sA(t,"forward",e,{blockElements:i,inlineObjectElements:r}),o=sA(t,"backward",e,{blockElements:i,inlineObjectElements:r}),a=aA(n,i);(aA(o,i)||a)&&s.push(t)}}for(const t of s)t.hasClass("Apple-interchange-newline")?e.remove(t):e.replace(t,e.createElement("p"))}(n,e),t.content=n}}function mA(t,e){if(!t.childCount)return;const n=new qd,o=function(t,e){const n=e.createRangeIn(t),o=new Po({name:/v:(.+)/}),i=[];for(const t of n){if("elementStart"!=t.type)continue;const e=t.item,n=e.previousSibling&&e.previousSibling.name||null;o.match(e)&&e.getAttribute("o:gfxdata")&&"v:shapetype"!==n&&i.push(t.item.getAttribute("id"))}return i}(t,n);!function(t,e,n){const o=n.createRangeIn(e),i=new Po({name:"img"}),r=[];for(const e of o)if(i.match(e.item)){const n=e.item,o=n.getAttribute("v:shapes")?n.getAttribute("v:shapes").split(" "):[];o.length&&o.every((e=>t.indexOf(e)>-1))?r.push(n):n.getAttribute("src")||r.push(n)}for(const t of r)n.remove(t)}(o,t,n),function(t,e){const n=e.createRangeIn(t),o=new Po({name:/v:(.+)/}),i=[];for(const t of n)"elementStart"==t.type&&o.match(t.item)&&i.push(t.item);for(const t of i)e.remove(t)}(t,n);const i=function(t,e){const n=e.createRangeIn(t),o=new Po({name:"img"}),i=[];for(const t of n)o.match(t.item)&&t.item.getAttribute("src").startsWith("file://")&&i.push(t.item);return i}(t,n);i.length&&function(t,e,n){if(t.length===e.length)for(let o=0;oString.fromCharCode(parseInt(t,16)))).join(""))}const fA=//i,kA=/xmlns:o="urn:schemas-microsoft-com/i;class bA{constructor(t){this.document=t}isActive(t){return fA.test(t)||kA.test(t)}execute(t){const{body:e,stylesString:n}=t._parsedData;cA(e,n),mA(e,t.dataTransfer.getData("text/rtf")),t.content=e}}function wA(t){return t.replace(/(\s+)<\/span>/g,((t,e)=>1===e.length?" ":Array(e.length+1).join("  ").substr(0,e.length)))}function AA(t,e){const n=new DOMParser,o=function(t){return wA(wA(t)).replace(/([^\S\r\n]*?)[\r\n]+([^\S\r\n]*<\/span>)/g,"$1$2").replace(/<\/span>/g,"").replace(/ <\//g," <\/o:p>/g," ").replace(/( |\u00A0)<\/o:p>/g,"").replace(/>([^\S\r\n]*[\r\n]\s*)<")}(function(t){const e="",n="",o=t.indexOf(e);if(o<0)return t;const i=t.indexOf(n,o+e.length);return t.substring(0,o+e.length)+(i>=0?t.substring(i):"")}(t=t.replace(//g,"")}(i.getData("text/html")):i.getData("text/plain")&&(((s=(s=i.getData("text/plain")).replace(//g,">").replace(/\r?\n\r?\n/g,"

").replace(/\r?\n/g,"
").replace(/^\s/," ").replace(/\s$/," ").replace(/\s\s/g,"  ")).includes("

")||s.includes("
"))&&(s=`

${s}

`),t=s),r=this.editor.data.htmlProcessor.toView(t)}var s;const a=new e(this,"inputTransformation");this.fire(a,{content:r,dataTransfer:i,targetRanges:n.targetRanges,method:n.method}),a.stop.called&&t.stop(),o.scrollToTheSelection()}),{priority:"low"}),this.listenTo(this,"inputTransformation",((t,e)=>{if(e.content.isEmpty)return;const o=this.editor.data.toModel(e.content,"$clipboardHolder");0!=o.childCount&&(t.stop(),n.change((()=>{this.fire("contentInsertion",{content:o,method:e.method,dataTransfer:e.dataTransfer,targetRanges:e.targetRanges})})))}),{priority:"low"}),this.listenTo(this,"contentInsertion",((t,e)=>{e.resultRange=n.insertContent(e.content)}),{priority:"low"})}_setupCopyCut(){const t=this.editor,e=t.model.document,n=t.editing.view.document,o=(o,i)=>{const r=i.dataTransfer;i.preventDefault();const s=t.data.toView(t.model.getSelectedContent(e.selection));n.fire("clipboardOutput",{dataTransfer:r,content:s,method:o.name})};this.listenTo(n,"copy",o,{priority:"low"}),this.listenTo(n,"cut",((e,n)=>{t.isReadOnly?n.preventDefault():o(e,n)}),{priority:"low"}),this.listenTo(n,"clipboardOutput",((n,o)=>{o.content.isEmpty||(o.dataTransfer.setData("text/html",this.editor.data.htmlProcessor.toData(o.content)),o.dataTransfer.setData("text/plain",Pg(o.content))),"cut"==o.method&&t.model.deleteContent(e.selection)}),{priority:"low"})}}function*Lg(t,e){for(const n of e)n&&t.getAttributeProperties(n[0]).copyOnEnter&&(yield n)}class Og extends U{execute(){const t=this.editor.model,e=t.document;t.change((n=>{!function(t,e,n,o){const i=n.isCollapsed,r=n.getFirstRange(),s=r.start.parent,a=r.end.parent;if(o.isLimit(s)||o.isLimit(a))return void(i||s!=a||t.deleteContent(n));if(i){const t=Lg(e.model.schema,n.getAttributes());Rg(e,r.start),e.setSelectionAttribute(t)}else{const o=!(r.start.isAtStart&&r.end.isAtEnd),i=s==a;t.deleteContent(n,{leaveUnmerged:o}),o&&(i?Rg(e,n.focus):e.setSelection(a,0))}}(this.editor.model,n,e.selection,t.schema),this.fire("afterExecute",{writer:n})}))}}function Rg(t,e){t.split(e),t.setSelection(e.parent.nextSibling,0)}const jg={insertParagraph:{isSoft:!1},insertLineBreak:{isSoft:!0}};class Fg extends ys{constructor(t){super(t);const e=this.document;e.on("beforeinput",((n,o)=>{if(!this.isEnabled)return;const i=o.domEvent,r=jg[o.inputType];if(!r)return;const s=new Yi(e,"enter",o.targetRanges[0]);e.fire(s,new Es(t,i,{isSoft:r.isSoft})),s.stop.called&&n.stop()}))}observe(){}}class Vg extends F{static get pluginName(){return"Enter"}init(){const t=this.editor,e=t.editing.view,n=e.document;e.addObserver(Fg),t.commands.add("enter",new Og(t)),this.listenTo(n,"enter",((o,i)=>{n.isComposing||i.preventDefault(),i.isSoft||(t.execute("enter"),e.scrollToTheSelection())}),{priority:"low"})}}class Ug{constructor(t,e=20){this._batch=null,this.model=t,this._size=0,this.limit=e,this._isLocked=!1,this._changeCallback=(t,e)=>{e.isLocal&&e.isUndoable&&e!==this._batch&&this._reset(!0)},this._selectionChangeCallback=()=>{this._reset()},this.model.document.on("change",this._changeCallback),this.model.document.selection.on("change:range",this._selectionChangeCallback),this.model.document.selection.on("change:attribute",this._selectionChangeCallback)}get batch(){return this._batch||(this._batch=this.model.createBatch({isTyping:!0})),this._batch}get size(){return this._size}input(t){this._size+=t,this._size>=this.limit&&this._reset(!0)}get isLocked(){return this._isLocked}lock(){this._isLocked=!0}unlock(){this._isLocked=!1}destroy(){this.model.document.off("change",this._changeCallback),this.model.document.selection.off("change:range",this._selectionChangeCallback),this.model.document.selection.off("change:attribute",this._selectionChangeCallback)}_reset(t=!1){this.isLocked&&!t||(this._batch=null,this._size=0)}}class Hg extends U{constructor(t,e){super(t),this.direction=e,this._buffer=new Ug(t.model,t.config.get("typing.undoStep"))}get buffer(){return this._buffer}execute(t={}){const e=this.editor.model,n=e.document;e.enqueueChange(this._buffer.batch,(o=>{this._buffer.lock();const i=o.createSelection(t.selection||n.selection),r=t.sequence||1,s=i.isCollapsed;if(i.isCollapsed&&e.modifySelection(i,{direction:this.direction,unit:t.unit,treatEmojiAsSingleUnit:!0}),this._shouldEntireContentBeReplacedWithParagraph(r))return void this._replaceEntireContentWithParagraph(o);if(this._shouldReplaceFirstBlockWithParagraph(i,r))return void this.editor.execute("paragraph",{selection:i});if(i.isCollapsed)return;let a=0;i.getFirstRange().getMinimalFlatRanges().forEach((t=>{a+=qi(t.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))})),e.deleteContent(i,{doNotResetEntireContent:s,direction:this.direction}),this._buffer.input(a),o.setSelection(i),this._buffer.unlock()}))}_shouldEntireContentBeReplacedWithParagraph(t){if(t>1)return!1;const e=this.editor.model,n=e.document.selection,o=e.schema.getLimitElement(n);if(!(n.isCollapsed&&n.containsEntireContent(o)))return!1;if(!e.schema.checkChild(o,"paragraph"))return!1;const i=o.getChild(0);return!i||!i.is("element","paragraph")}_replaceEntireContentWithParagraph(t){const e=this.editor.model,n=e.document.selection,o=e.schema.getLimitElement(n),i=t.createElement("paragraph");t.remove(t.createRangeIn(o)),t.insert(i,o),t.setSelection(i,0)}_shouldReplaceFirstBlockWithParagraph(t,e){const n=this.editor.model;if(e>1||"backward"!=this.direction)return!1;if(!t.isCollapsed)return!1;const o=t.getFirstPosition(),i=n.schema.getLimitElement(o),r=i.getChild(0);return o.parent==r&&(!!t.containsEntireContent(r)&&(!!n.schema.checkChild(i,"paragraph")&&"paragraph"!=r.name))}}const qg="word",Gg="selection",Wg="backward",Yg="forward",$g={deleteContent:{unit:Gg,direction:Wg},deleteContentBackward:{unit:"codePoint",direction:Wg},deleteWordBackward:{unit:qg,direction:Wg},deleteHardLineBackward:{unit:Gg,direction:Wg},deleteSoftLineBackward:{unit:Gg,direction:Wg},deleteContentForward:{unit:"character",direction:Yg},deleteWordForward:{unit:qg,direction:Yg},deleteHardLineForward:{unit:Gg,direction:Yg},deleteSoftLineForward:{unit:Gg,direction:Yg}};class Kg extends ys{constructor(t){super(t);const e=t.document;let n=0;e.on("keydown",(()=>{n++})),e.on("keyup",(()=>{n=0})),e.on("beforeinput",((o,i)=>{if(!this.isEnabled)return;const{targetRanges:r,domEvent:s,inputType:a}=i,c=$g[a];if(!c)return;const l={direction:c.direction,unit:c.unit,sequence:n};l.unit==Gg&&(l.selectionToRemove=t.createSelection(r[0])),cr.isAndroid&&"deleteContentBackward"===a&&(l.sequence=1,1!=r.length||r[0].start.parent==r[0].end.parent&&r[0].start.offset+1==r[0].end.offset||(l.unit=Gg,l.selectionToRemove=t.createSelection(r)));const d=new Yi(e,"delete",r[0]);e.fire(d,new Es(t,s,l)),d.stop.called&&o.stop()})),cr.isBlink&&function(t){const e=t.view,n=e.document;let o=null,i=!1;function r(t){return t==ur.backspace||t==ur.delete}function s(t){return t==ur.backspace?Wg:Yg}n.on("keydown",((t,{keyCode:e})=>{o=e,i=!1})),n.on("keyup",((a,{keyCode:c,domEvent:l})=>{const d=n.selection,h=t.isEnabled&&c==o&&r(c)&&!d.isCollapsed&&!i;if(o=null,h){const t=d.getFirstRange(),o=new Yi(n,"delete",t),i={unit:Gg,direction:s(c),selectionToRemove:d};n.fire(o,new Es(e,l,i))}})),n.on("beforeinput",((t,{inputType:e})=>{const n=$g[e];r(o)&&n&&n.direction==s(o)&&(i=!0)})),n.on("beforeinput",((t,{inputType:e,data:n})=>{o==ur.delete&&"insertText"==e&&""==n&&t.stop()}),{priority:"high"})}(this)}observe(){}}class Qg extends F{static get pluginName(){return"Delete"}init(){const t=this.editor,e=t.editing.view,n=e.document,o=t.model.document;e.addObserver(Kg),this._undoOnBackspace=!1;const i=new Hg(t,"forward");t.commands.add("deleteForward",i),t.commands.add("forwardDelete",i),t.commands.add("delete",new Hg(t,"backward")),this.listenTo(n,"delete",((o,i)=>{n.isComposing||i.preventDefault();const{direction:r,sequence:s,selectionToRemove:a,unit:c}=i,l="forward"===r?"deleteForward":"delete",d={sequence:s};if("selection"==c){const e=Array.from(a.getRanges()).map((e=>t.editing.mapper.toModelRange(e)));d.selection=t.model.createSelection(e)}else d.unit=c;t.execute(l,d),e.scrollToTheSelection()}),{priority:"low"}),this.editor.plugins.has("UndoEditing")&&(this.listenTo(n,"delete",((e,n)=>{this._undoOnBackspace&&"backward"==n.direction&&1==n.sequence&&"codePoint"==n.unit&&(this._undoOnBackspace=!1,t.execute("undo"),n.preventDefault(),e.stop())}),{context:"$capture"}),this.listenTo(o,"change",(()=>{this._undoOnBackspace=!1})))}requestUndoOnBackspace(){this.editor.plugins.has("UndoEditing")&&(this._undoOnBackspace=!0)}}class Zg extends w{constructor(){super(),this._stack=[]}add(t,e){const n=this._stack,o=n[0];this._insertDescriptor(t);const i=n[0];o===i||Jg(o,i)||this.fire("change:top",{oldDescriptor:o,newDescriptor:i,writer:e})}remove(t,e){const n=this._stack,o=n[0];this._removeDescriptor(t);const i=n[0];o===i||Jg(o,i)||this.fire("change:top",{oldDescriptor:o,newDescriptor:i,writer:e})}_insertDescriptor(t){const e=this._stack,n=e.findIndex((e=>e.id===t.id));if(Jg(t,e[n]))return;n>-1&&e.splice(n,1);let o=0;for(;e[o]&&Xg(e[o],t);)o++;e.splice(o,0,t)}_removeDescriptor(t){const e=this._stack,n=e.findIndex((e=>e.id===t));n>-1&&e.splice(n,1)}}function Jg(t,e){return t&&e&&t.priority==e.priority&&tm(t.classes)==tm(e.classes)}function Xg(t,e){return t.priority>e.priority||!(t.prioritytm(e.classes)}function tm(t){return Array.isArray(t)?t.sort().join(","):t}const em='',nm="ck-widget_selected";function om(t){return!!t.is("element")&&!!t.getCustomProperty("widget")}function im(t,e,n={}){if(!t.is("containerElement"))throw new c("widget-to-widget-wrong-element-type",null,{element:t});return e.setAttribute("contenteditable","false",t),e.addClass("ck-widget",t),e.setCustomProperty("widget",!0,t),t.getFillerOffset=hm,n.label&&function(t,e,n){n.setCustomProperty("widgetLabel",e,t)}(t,n.label,e),n.hasSelectionHandle&&function(t,e){const n=e.createUIElement("div",{class:"ck ck-widget__selection-handle"},(function(t){const e=this.toDomElement(t),n=new ru;return n.set("content",em),n.render(),e.appendChild(n.element),e}));e.insert(e.createPositionAt(t,0),n),e.addClass(["ck-widget_with-selection-handle"],t)}(t,e),am(t,e),t}function rm(t,e,n){if(e.classes&&n.addClass(bo(e.classes),t),e.attributes)for(const o in e.attributes)n.setAttribute(o,e.attributes[o],t)}function sm(t,e,n){if(e.classes&&n.removeClass(bo(e.classes),t),e.attributes)for(const o in e.attributes)n.removeAttribute(o,t)}function am(t,e,n=rm,o=sm){const i=new Zg;i.on("change:top",((e,i)=>{i.oldDescriptor&&o(t,i.oldDescriptor,i.writer),i.newDescriptor&&n(t,i.newDescriptor,i.writer)}));e.setCustomProperty("addHighlight",((t,e,n)=>i.add(e,n)),t),e.setCustomProperty("removeHighlight",((t,e,n)=>i.remove(e,n)),t)}function cm(t){const e=t.getCustomProperty("widgetLabel");return e?"function"==typeof e?e():e:""}function lm(t,e,n={}){return e.addClass(["ck-editor__editable","ck-editor__nested-editable"],t),e.setAttribute("role","textbox",t),n.label&&e.setAttribute("aria-label",n.label,t),e.setAttribute("contenteditable",t.isReadOnly?"false":"true",t),t.on("change:isReadOnly",((n,o,i)=>{e.setAttribute("contenteditable",i?"false":"true",t)})),t.on("change:isFocused",((n,o,i)=>{i?e.addClass("ck-editor__nested-editable_focused",t):e.removeClass("ck-editor__nested-editable_focused",t)})),am(t,e),t}function dm(t,e){const n=t.getSelectedElement();if(n){const o=mm(t);if(o)return e.createRange(e.createPositionAt(n,o))}return $d(t,e)}function hm(){return null}const um="widget-type-around";function gm(t,e,n){return!!t&&om(t)&&!n.isInline(e)}function mm(t){return t.getAttribute(um)}var pm=n(4921),fm={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(pm.Z,fm);pm.Z.locals;const km=["before","after"],bm=(new DOMParser).parseFromString('',"image/svg+xml").firstChild,wm="ck-widget__type-around_disabled";class Am extends F{constructor(t){super(t),this._currentFakeCaretModelElement=null}static get pluginName(){return"WidgetTypeAround"}static get requires(){return[Vg,Qg]}init(){const t=this.editor,e=t.editing.view;this.on("change:isEnabled",((n,o,i)=>{e.change((t=>{for(const n of e.document.roots)i?t.removeClass(wm,n):t.addClass(wm,n)})),i||t.model.change((t=>{t.removeSelectionAttribute(um)}))})),this._enableTypeAroundUIInjection(),this._enableInsertingParagraphsOnButtonClick(),this._enableInsertingParagraphsOnEnterKeypress(),this._enableInsertingParagraphsOnTypingKeystroke(),this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(),this._enableDeleteIntegration(),this._enableInsertContentIntegration(),this._enableInsertObjectIntegration(),this._enableDeleteContentIntegration()}destroy(){super.destroy(),this._currentFakeCaretModelElement=null}_insertParagraph(t,e){const n=this.editor,o=n.editing.view,i=n.model.schema.getAttributesWithProperty(t,"copyOnReplace",!0);n.execute("insertParagraph",{position:n.model.createPositionAt(t,e),attributes:i}),o.focus(),o.scrollToTheSelection()}_listenToIfEnabled(t,e,n,o){this.listenTo(t,e,((...t)=>{this.isEnabled&&n(...t)}),o)}_insertParagraphAccordingToFakeCaretPosition(){const t=this.editor.model.document.selection,e=mm(t);if(!e)return!1;const n=t.getSelectedElement();return this._insertParagraph(n,e),!0}_enableTypeAroundUIInjection(){const t=this.editor,e=t.model.schema,n=t.locale.t,o={before:n("Insert paragraph before block"),after:n("Insert paragraph after block")};t.editing.downcastDispatcher.on("insert",((t,n,i)=>{const r=i.mapper.toViewElement(n.item);gm(r,n.item,e)&&function(t,e,n){const o=t.createUIElement("div",{class:"ck ck-reset_all ck-widget__type-around"},(function(t){const n=this.toDomElement(t);return function(t,e){for(const n of km){const o=new sh({tag:"div",attributes:{class:["ck","ck-widget__type-around__button",`ck-widget__type-around__button_${n}`],title:e[n]},children:[t.ownerDocument.importNode(bm,!0)]});t.appendChild(o.render())}}(n,e),function(t){const e=new sh({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});t.appendChild(e.render())}(n),n}));t.insert(t.createPositionAt(n,"end"),o)}(i.writer,o,r)}),{priority:"low"})}_enableTypeAroundFakeCaretActivationUsingKeyboardArrows(){const t=this.editor,e=t.model,n=e.document.selection,o=e.schema,i=t.editing.view;function r(t){return`ck-widget_type-around_show-fake-caret_${t}`}this._listenToIfEnabled(i.document,"arrowKey",((t,e)=>{this._handleArrowKeyPress(t,e)}),{context:[om,"$text"],priority:"high"}),this._listenToIfEnabled(n,"change:range",((e,n)=>{n.directChange&&t.model.change((t=>{t.removeSelectionAttribute(um)}))})),this._listenToIfEnabled(e.document,"change:data",(()=>{const e=n.getSelectedElement();if(e){if(gm(t.editing.mapper.toViewElement(e),e,o))return}t.model.change((t=>{t.removeSelectionAttribute(um)}))})),this._listenToIfEnabled(t.editing.downcastDispatcher,"selection",((t,e,n)=>{const i=n.writer;if(this._currentFakeCaretModelElement){const t=n.mapper.toViewElement(this._currentFakeCaretModelElement);t&&(i.removeClass(km.map(r),t),this._currentFakeCaretModelElement=null)}const s=e.selection.getSelectedElement();if(!s)return;const a=n.mapper.toViewElement(s);if(!gm(a,s,o))return;const c=mm(e.selection);c&&(i.addClass(r(c),a),this._currentFakeCaretModelElement=s)})),this._listenToIfEnabled(t.ui.focusTracker,"change:isFocused",((e,n,o)=>{o||t.model.change((t=>{t.removeSelectionAttribute(um)}))}))}_handleArrowKeyPress(t,e){const n=this.editor,o=n.model,i=o.document.selection,r=o.schema,s=n.editing.view,a=function(t,e){const n=kr(t,e);return"down"===n||"right"===n}(e.keyCode,n.locale.contentLanguageDirection),c=s.document.selection.getSelectedElement();let l;gm(c,n.editing.mapper.toModelElement(c),r)?l=this._handleArrowKeyPressOnSelectedWidget(a):i.isCollapsed?l=this._handleArrowKeyPressWhenSelectionNextToAWidget(a):e.shiftKey||(l=this._handleArrowKeyPressWhenNonCollapsedSelection(a)),l&&(e.preventDefault(),t.stop())}_handleArrowKeyPressOnSelectedWidget(t){const e=this.editor.model,n=mm(e.document.selection);return e.change((e=>{if(!n)return e.setSelectionAttribute(um,t?"after":"before"),!0;if(!(n===(t?"after":"before")))return e.removeSelectionAttribute(um),!0;return!1}))}_handleArrowKeyPressWhenSelectionNextToAWidget(t){const e=this.editor,n=e.model,o=n.schema,i=e.plugins.get("Widget"),r=i._getObjectElementNextToSelection(t);return!!gm(e.editing.mapper.toViewElement(r),r,o)&&(n.change((e=>{i._setSelectionOverElement(r),e.setSelectionAttribute(um,t?"before":"after")})),!0)}_handleArrowKeyPressWhenNonCollapsedSelection(t){const e=this.editor,n=e.model,o=n.schema,i=e.editing.mapper,r=n.document.selection,s=t?r.getLastPosition().nodeBefore:r.getFirstPosition().nodeAfter;return!!gm(i.toViewElement(s),s,o)&&(n.change((e=>{e.setSelection(s,"on"),e.setSelectionAttribute(um,t?"after":"before")})),!0)}_enableInsertingParagraphsOnButtonClick(){const t=this.editor,e=t.editing.view;this._listenToIfEnabled(e.document,"mousedown",((n,o)=>{const i=o.domTarget.closest(".ck-widget__type-around__button");if(!i)return;const r=function(t){return t.classList.contains("ck-widget__type-around__button_before")?"before":"after"}(i),s=function(t,e){const n=t.closest(".ck-widget");return e.mapDomToView(n)}(i,e.domConverter),a=t.editing.mapper.toModelElement(s);this._insertParagraph(a,r),o.preventDefault(),n.stop()}))}_enableInsertingParagraphsOnEnterKeypress(){const t=this.editor,e=t.model.document.selection,n=t.editing.view;this._listenToIfEnabled(n.document,"enter",((n,o)=>{if("atTarget"!=n.eventPhase)return;const i=e.getSelectedElement(),r=t.editing.mapper.toViewElement(i),s=t.model.schema;let a;this._insertParagraphAccordingToFakeCaretPosition()?a=!0:gm(r,i,s)&&(this._insertParagraph(i,o.isSoft?"before":"after"),a=!0),a&&(o.preventDefault(),n.stop())}),{context:om})}_enableInsertingParagraphsOnTypingKeystroke(){const t=this.editor.editing.view.document;this._listenToIfEnabled(t,"insertText",((e,n)=>{this._insertParagraphAccordingToFakeCaretPosition()&&(n.selection=t.selection)}),{priority:"high"}),cr.isAndroid?this._listenToIfEnabled(t,"keydown",((t,e)=>{229==e.keyCode&&this._insertParagraphAccordingToFakeCaretPosition()})):this._listenToIfEnabled(t,"compositionstart",(()=>{this._insertParagraphAccordingToFakeCaretPosition()}),{priority:"high"})}_enableDeleteIntegration(){const t=this.editor,e=t.editing.view,n=t.model,o=n.schema;this._listenToIfEnabled(e.document,"delete",((e,i)=>{if("atTarget"!=e.eventPhase)return;const r=mm(n.document.selection);if(!r)return;const s=i.direction,a=n.document.selection.getSelectedElement(),c="forward"==s;if("before"===r===c)t.execute("delete",{selection:n.createSelection(a,"on")});else{const e=o.getNearestSelectionRange(n.createPositionAt(a,r),s);if(e)if(e.isCollapsed){const i=n.createSelection(e.start);if(n.modifySelection(i,{direction:s}),i.focus.isEqual(e.start)){const t=function(t,e){let n=e;for(const o of e.getAncestors({parentFirst:!0})){if(o.childCount>1||t.isLimit(o))break;n=o}return n}(o,e.start.parent);n.deleteContent(n.createSelection(t,"on"),{doNotAutoparagraph:!0})}else n.change((n=>{n.setSelection(e),t.execute(c?"deleteForward":"delete")}))}else n.change((n=>{n.setSelection(e),t.execute(c?"deleteForward":"delete")}))}i.preventDefault(),e.stop()}),{context:om})}_enableInsertContentIntegration(){const t=this.editor,e=this.editor.model,n=e.document.selection;this._listenToIfEnabled(t.model,"insertContent",((t,[o,i])=>{if(i&&!i.is("documentSelection"))return;const r=mm(n);return r?(t.stop(),e.change((t=>{const i=n.getSelectedElement(),s=e.createPositionAt(i,r),a=t.createSelection(s),c=e.insertContent(o,a);return t.setSelection(a),c}))):void 0}),{priority:"high"})}_enableInsertObjectIntegration(){const t=this.editor,e=this.editor.model.document.selection;this._listenToIfEnabled(t.model,"insertObject",((t,n)=>{const[,o,,i={}]=n;if(o&&!o.is("documentSelection"))return;const r=mm(e);r&&(i.findOptimalPosition=r,n[3]=i)}),{priority:"high"})}_enableDeleteContentIntegration(){const t=this.editor,e=this.editor.model.document.selection;this._listenToIfEnabled(t.model,"deleteContent",((t,[n])=>{if(n&&!n.is("documentSelection"))return;mm(e)&&t.stop()}),{priority:"high"})}}function _m(t){const e=t.model;return(n,o)=>{const i=o.keyCode==ur.arrowup,r=o.keyCode==ur.arrowdown,s=o.shiftKey,a=e.document.selection;if(!i&&!r)return;const c=r;if(s&&function(t,e){return!t.isCollapsed&&t.isBackward==e}(a,c))return;const l=function(t,e,n){const o=t.model;if(n){const t=e.isCollapsed?e.focus:e.getLastPosition(),n=Cm(o,t,"forward");if(!n)return null;const i=o.createRange(t,n),r=vm(o.schema,i,"backward");return r?o.createRange(t,r):null}{const t=e.isCollapsed?e.focus:e.getFirstPosition(),n=Cm(o,t,"backward");if(!n)return null;const i=o.createRange(n,t),r=vm(o.schema,i,"forward");return r?o.createRange(r,t):null}}(t,a,c);if(l){if(l.isCollapsed){if(a.isCollapsed)return;if(s)return}(l.isCollapsed||function(t,e,n){const o=t.model,i=t.view.domConverter;if(n){const t=o.createSelection(e.start);o.modifySelection(t),t.focus.isAtEnd||e.start.isEqual(t.focus)||(e=o.createRange(t.focus,e.end))}const r=t.mapper.toViewRange(e),s=i.viewRangeToDom(r),a=Ta.getDomRangeRects(s);let c;for(const t of a)if(void 0!==c){if(Math.round(t.top)>=c)return!1;c=Math.max(c,Math.round(t.bottom))}else c=Math.round(t.bottom);return!0}(t,l,c))&&(e.change((t=>{const n=c?l.end:l.start;if(s){const o=e.createSelection(a.anchor);o.setFocus(n),t.setSelection(o)}else t.setSelection(n)})),n.stop(),o.preventDefault(),o.stopPropagation())}}}function Cm(t,e,n){const o=t.schema,i=t.createRangeIn(e.root),r="forward"==n?"elementStart":"elementEnd";for(const{previousPosition:t,item:s,type:a}of i.getWalker({startPosition:e,direction:n})){if(o.isLimit(s)&&!o.isInline(s))return t;if(a==r&&o.isBlock(s))return null}return null}function vm(t,e,n){const o="backward"==n?e.end:e.start;if(t.checkChild(o,"$text"))return o;for(const{nextPosition:o}of e.getWalker({direction:n}))if(t.checkChild(o,"$text"))return o;return null}var ym=n(3488),xm={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(ym.Z,xm);ym.Z.locals;class Em extends F{static get pluginName(){return"Widget"}static get requires(){return[Am,Qg]}init(){const t=this.editor,e=t.editing.view,n=e.document;this._previouslySelected=new Set,this.editor.editing.downcastDispatcher.on("selection",((e,n,o)=>{const i=o.writer,r=n.selection;if(r.isCollapsed)return;const s=r.getSelectedElement();if(!s)return;const a=t.editing.mapper.toViewElement(s);om(a)&&o.consumable.consume(r,"selection")&&i.setSelection(i.createRangeOn(a),{fake:!0,label:cm(a)})})),this.editor.editing.downcastDispatcher.on("selection",((t,e,n)=>{this._clearPreviouslySelectedWidgets(n.writer);const o=n.writer,i=o.document.selection;let r=null;for(const t of i.getRanges())for(const e of t){const t=e.item;om(t)&&!Dm(t,r)&&(o.addClass(nm,t),this._previouslySelected.add(t),r=t)}}),{priority:"low"}),e.addObserver(Gd),this.listenTo(n,"mousedown",((...t)=>this._onMousedown(...t))),this.listenTo(n,"arrowKey",((...t)=>{this._handleSelectionChangeOnArrowKeyPress(...t)}),{context:[om,"$text"]}),this.listenTo(n,"arrowKey",((...t)=>{this._preventDefaultOnArrowKeyPress(...t)}),{context:"$root"}),this.listenTo(n,"arrowKey",_m(this.editor.editing),{context:"$text"}),this.listenTo(n,"delete",((t,e)=>{this._handleDelete("forward"==e.direction)&&(e.preventDefault(),t.stop())}),{context:"$root"})}_onMousedown(t,e){const n=this.editor,o=n.editing.view,i=o.document;let r=e.target;if(function(t){let e=t;for(;e;){if(e.is("editableElement")&&!e.is("rootElement"))return!0;if(om(e))return!1;e=e.parent}return!1}(r)){if((cr.isSafari||cr.isGecko)&&e.domEvent.detail>=3){const t=n.editing.mapper,o=r.is("attributeElement")?r.findAncestor((t=>!t.is("attributeElement"))):r,i=t.toModelElement(o);e.preventDefault(),this.editor.model.change((t=>{t.setSelection(i,"in")}))}return}if(!om(r)&&(r=r.findAncestor(om),!r))return;cr.isAndroid&&e.preventDefault(),i.isFocused||o.focus();const s=n.editing.mapper.toModelElement(r);this._setSelectionOverElement(s)}_handleSelectionChangeOnArrowKeyPress(t,e){const n=e.keyCode,o=this.editor.model,i=o.schema,r=o.document.selection,s=r.getSelectedElement(),a=kr(n,this.editor.locale.contentLanguageDirection),c="down"==a||"right"==a,l="up"==a||"down"==a;if(s&&i.isObject(s)){const n=c?r.getLastPosition():r.getFirstPosition(),s=i.getNearestSelectionRange(n,c?"forward":"backward");return void(s&&(o.change((t=>{t.setSelection(s)})),e.preventDefault(),t.stop()))}if(!r.isCollapsed&&!e.shiftKey){const n=r.getFirstPosition(),s=r.getLastPosition(),a=n.nodeAfter,l=s.nodeBefore;return void((a&&i.isObject(a)||l&&i.isObject(l))&&(o.change((t=>{t.setSelection(c?s:n)})),e.preventDefault(),t.stop()))}if(!r.isCollapsed)return;const d=this._getObjectElementNextToSelection(c);if(d&&i.isObject(d)){if(i.isInline(d)&&l)return;this._setSelectionOverElement(d),e.preventDefault(),t.stop()}}_preventDefaultOnArrowKeyPress(t,e){const n=this.editor.model,o=n.schema,i=n.document.selection.getSelectedElement();i&&o.isObject(i)&&(e.preventDefault(),t.stop())}_handleDelete(t){if(this.editor.isReadOnly)return;const e=this.editor.model.document.selection;if(!e.isCollapsed)return;const n=this._getObjectElementNextToSelection(t);return n?(this.editor.model.change((t=>{let o=e.anchor.parent;for(;o.isEmpty;){const e=o;o=e.parent,t.remove(e)}this._setSelectionOverElement(n)})),!0):void 0}_setSelectionOverElement(t){this.editor.model.change((e=>{e.setSelection(e.createRangeOn(t))}))}_getObjectElementNextToSelection(t){const e=this.editor.model,n=e.schema,o=e.document.selection,i=e.createSelection(o);if(e.modifySelection(i,{direction:t?"forward":"backward"}),i.isEqual(o))return null;const r=t?i.focus.nodeBefore:i.focus.nodeAfter;return r&&n.isObject(r)?r:null}_clearPreviouslySelectedWidgets(t){for(const e of this._previouslySelected)t.removeClass(nm,e);this._previouslySelected.clear()}}function Dm(t,e){return!!e&&Array.from(t.getAncestors()).includes(e)}const Im=function(t,e,n){var o=!0,i=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return D(n)&&(o="leading"in n?!!n.leading:o,i="trailing"in n?!!n.trailing:i),Vs(t,e,{leading:o,maxWait:e,trailing:i})};var Mm=n(903),Tm={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Mm.Z,Tm);Mm.Z.locals;class Sm extends F{static get pluginName(){return"DragDrop"}static get requires(){return[zg,Em]}init(){const t=this.editor,e=t.editing.view;this._draggedRange=null,this._draggingUid="",this._draggableElement=null,this._updateDropMarkerThrottled=Im((t=>this._updateDropMarker(t)),40),this._removeDropMarkerDelayed=Pm((()=>this._removeDropMarker()),40),this._clearDraggableAttributesDelayed=Pm((()=>this._clearDraggableAttributes()),40),e.addObserver(Ng),e.addObserver(Gd),this._setupDragging(),this._setupContentInsertionIntegration(),this._setupClipboardInputIntegration(),this._setupDropMarker(),this._setupDraggableAttributeHandling(),this.listenTo(t,"change:isReadOnly",((t,e,n)=>{n?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")})),this.on("change:isEnabled",((t,e,n)=>{n||this._finalizeDragging(!1)})),cr.isAndroid&&this.forceDisabled("noAndroidSupport")}destroy(){return this._draggedRange&&(this._draggedRange.detach(),this._draggedRange=null),this._updateDropMarkerThrottled.cancel(),this._removeDropMarkerDelayed.cancel(),this._clearDraggableAttributesDelayed.cancel(),super.destroy()}_setupDragging(){const t=this.editor,e=t.model,n=e.document,o=t.editing.view,i=o.document;this.listenTo(i,"dragstart",((o,s)=>{const a=n.selection;if(s.target&&s.target.is("editableElement"))return void s.preventDefault();const c=s.target?zm(s.target):null;if(c){const n=t.editing.mapper.toModelElement(c);this._draggedRange=fc.fromRange(e.createRangeOn(n)),t.plugins.has("WidgetToolbarRepository")&&t.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop")}else if(!i.selection.isCollapsed){const t=i.selection.getSelectedElement();t&&om(t)||(this._draggedRange=fc.fromRange(a.getFirstRange()))}if(!this._draggedRange)return void s.preventDefault();this._draggingUid=r(),s.dataTransfer.effectAllowed=this.isEnabled?"copyMove":"copy",s.dataTransfer.setData("application/ckeditor5-dragging-uid",this._draggingUid);const l=e.createSelection(this._draggedRange.toRange()),d=t.data.toView(e.getSelectedContent(l));i.fire("clipboardOutput",{dataTransfer:s.dataTransfer,content:d,method:"dragstart"}),this.isEnabled||(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="")}),{priority:"low"}),this.listenTo(i,"dragend",((t,e)=>{this._finalizeDragging(!e.dataTransfer.isCanceled&&"move"==e.dataTransfer.dropEffect)}),{priority:"low"}),this.listenTo(i,"dragenter",(()=>{this.isEnabled&&o.focus()})),this.listenTo(i,"dragleave",(()=>{this._removeDropMarkerDelayed()})),this.listenTo(i,"dragging",((e,n)=>{if(!this.isEnabled)return void(n.dataTransfer.dropEffect="none");this._removeDropMarkerDelayed.cancel();const o=Nm(t,n.targetRanges,n.target);this._draggedRange||(n.dataTransfer.dropEffect="copy"),cr.isGecko||("copy"==n.dataTransfer.effectAllowed?n.dataTransfer.dropEffect="copy":["all","copyMove"].includes(n.dataTransfer.effectAllowed)&&(n.dataTransfer.dropEffect="move")),o&&this._updateDropMarkerThrottled(o)}),{priority:"low"})}_setupClipboardInputIntegration(){const t=this.editor,e=t.editing.view.document;this.listenTo(e,"clipboardInput",((e,n)=>{if("drop"!=n.method)return;const o=Nm(t,n.targetRanges,n.target);if(this._removeDropMarker(),!o)return this._finalizeDragging(!1),void e.stop();this._draggedRange&&this._draggingUid!=n.dataTransfer.getData("application/ckeditor5-dragging-uid")&&(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="");if("move"==Bm(n.dataTransfer)&&this._draggedRange&&this._draggedRange.containsRange(o,!0))return this._finalizeDragging(!1),void e.stop();n.targetRanges=[t.editing.mapper.toViewRange(o)]}),{priority:"high"})}_setupContentInsertionIntegration(){const t=this.editor.plugins.get(zg);t.on("contentInsertion",((t,e)=>{if(!this.isEnabled||"drop"!==e.method)return;const n=e.targetRanges.map((t=>this.editor.editing.mapper.toModelRange(t)));this.editor.model.change((t=>t.setSelection(n)))}),{priority:"high"}),t.on("contentInsertion",((t,e)=>{if(!this.isEnabled||"drop"!==e.method)return;const n="move"==Bm(e.dataTransfer),o=!e.resultRange||!e.resultRange.isCollapsed;this._finalizeDragging(o&&n)}),{priority:"lowest"})}_setupDraggableAttributeHandling(){const t=this.editor,e=t.editing.view,n=e.document;this.listenTo(n,"mousedown",((o,i)=>{if(cr.isAndroid||!i)return;this._clearDraggableAttributesDelayed.cancel();let r=zm(i.target);if(cr.isBlink&&!t.isReadOnly&&!r&&!n.selection.isCollapsed){const t=n.selection.getSelectedElement();t&&om(t)||(r=n.selection.editableElement)}r&&(e.change((t=>{t.setAttribute("draggable","true",r)})),this._draggableElement=t.editing.mapper.toModelElement(r))})),this.listenTo(n,"mouseup",(()=>{cr.isAndroid||this._clearDraggableAttributesDelayed()}))}_clearDraggableAttributes(){const t=this.editor.editing;t.view.change((e=>{this._draggableElement&&"$graveyard"!=this._draggableElement.root.rootName&&e.removeAttribute("draggable",t.mapper.toViewElement(this._draggableElement)),this._draggableElement=null}))}_setupDropMarker(){const t=this.editor;t.conversion.for("editingDowncast").markerToHighlight({model:"drop-target",view:{classes:["ck-clipboard-drop-target-range"]}}),t.conversion.for("editingDowncast").markerToElement({model:"drop-target",view:(e,{writer:n})=>{if(t.model.schema.checkChild(e.markerRange.start,"$text"))return n.createUIElement("span",{class:"ck ck-clipboard-drop-target-position"},(function(t){const e=this.toDomElement(t);return e.append("⁠",t.createElement("span"),"⁠"),e}))}})}_updateDropMarker(t){const e=this.editor,n=e.model.markers;e.model.change((e=>{n.has("drop-target")?n.get("drop-target").getRange().isEqual(t)||e.updateMarker("drop-target",{range:t}):e.addMarker("drop-target",{range:t,usingOperation:!1,affectsData:!1})}))}_removeDropMarker(){const t=this.editor.model;this._removeDropMarkerDelayed.cancel(),this._updateDropMarkerThrottled.cancel(),t.markers.has("drop-target")&&t.change((t=>{t.removeMarker("drop-target")}))}_finalizeDragging(t){const e=this.editor,n=e.model;this._removeDropMarker(),this._clearDraggableAttributes(),e.plugins.has("WidgetToolbarRepository")&&e.plugins.get("WidgetToolbarRepository").clearForceDisabled("dragDrop"),this._draggingUid="",this._draggedRange&&(t&&this.isEnabled&&n.deleteContent(n.createSelection(this._draggedRange),{doNotAutoparagraph:!0}),this._draggedRange.detach(),this._draggedRange=null)}}function Nm(t,e,n){const o=t.model,i=t.editing.mapper;let r=null;const s=e?e[0].start:null;if(n.is("uiElement")&&(n=n.parent),r=function(t,e){const n=t.model,o=t.editing.mapper;if(om(e))return n.createRangeOn(o.toModelElement(e));if(!e.is("editableElement")){const t=e.findAncestor((t=>om(t)||t.is("editableElement")));if(om(t))return n.createRangeOn(o.toModelElement(t))}return null}(t,n),r)return r;const a=function(t,e){const n=t.editing.mapper,o=t.editing.view,i=n.toModelElement(e);if(i)return i;const r=o.createPositionBefore(e),s=n.findMappedViewAncestor(r);return n.toModelElement(s)}(t,n),c=s?i.toModelPosition(s):null;return c?(r=function(t,e,n){const o=t.model;if(!o.schema.checkChild(n,"$block"))return null;const i=o.createPositionAt(n,0),r=e.path.slice(0,i.path.length),s=o.createPositionFromPath(e.root,r).nodeAfter;if(s&&o.schema.isObject(s))return o.createRangeOn(s);return null}(t,c,a),r||(r=o.schema.getNearestSelectionRange(c,cr.isGecko?"forward":"backward"),r||function(t,e){const n=t.model;let o=e;for(;o;){if(n.schema.isObject(o))return n.createRangeOn(o);o=o.parent}return null}(t,c.parent))):function(t,e){const n=t.model,o=n.schema,i=n.createPositionAt(e,0);return o.getNearestSelectionRange(i,"forward")}(t,a)}function Bm(t){return cr.isGecko?t.dropEffect:["all","copyMove"].includes(t.effectAllowed)?"move":"copy"}function Pm(t,e){let n;function o(...i){o.cancel(),n=setTimeout((()=>t(...i)),e)}return o.cancel=()=>{clearTimeout(n)},o}function zm(t){if(t.is("editableElement"))return null;if(t.hasClass("ck-widget__selection-handle"))return t.findAncestor(om);if(om(t))return t;const e=t.findAncestor((t=>om(t)||t.is("editableElement")));return om(e)?e:null}class Lm extends F{static get pluginName(){return"PastePlainText"}static get requires(){return[zg]}init(){const t=this.editor,e=t.model,n=t.editing.view,o=n.document,i=e.document.selection;let r=!1;n.addObserver(Ng),this.listenTo(o,"keydown",((t,e)=>{r=e.shiftKey})),t.plugins.get(zg).on("contentInsertion",((t,n)=>{(r||function(t,e){if(t.childCount>1)return!1;const n=t.getChild(0);if(e.isObject(n))return!1;return 0==Array.from(n.getAttributeKeys()).length}(n.content,e.schema))&&e.change((t=>{const o=Array.from(i.getAttributes()).filter((([t])=>e.schema.getAttributeProperties(t).isFormatting));i.isCollapsed||e.deleteContent(i,{doNotAutoparagraph:!0}),o.push(...i.getAttributes());const r=t.createRangeIn(n.content);for(const e of r.getItems())e.is("$textProxy")&&t.setAttributes(o,e)}))}))}}class Om extends F{static get pluginName(){return"Clipboard"}static get requires(){return[zg,Sm,Lm]}}class Rm extends U{execute(){const t=this.editor.model,e=t.document;t.change((n=>{!function(t,e,n){const o=n.isCollapsed,i=n.getFirstRange(),r=i.start.parent,s=i.end.parent,a=r==s;if(o){const o=Lg(t.schema,n.getAttributes());jm(t,e,i.end),e.removeSelectionAttribute(n.getAttributeKeys()),e.setSelectionAttribute(o)}else{const o=!(i.start.isAtStart&&i.end.isAtEnd);t.deleteContent(n,{leaveUnmerged:o}),a?jm(t,e,n.focus):o&&e.setSelection(s,0)}}(t,n,e.selection),this.fire("afterExecute",{writer:n})}))}refresh(){const t=this.editor.model,e=t.document;this.isEnabled=function(t,e){if(e.rangeCount>1)return!1;const n=e.anchor;if(!n||!t.checkChild(n,"softBreak"))return!1;const o=e.getFirstRange(),i=o.start.parent,r=o.end.parent;if((Fm(i,t)||Fm(r,t))&&i!==r)return!1;return!0}(t.schema,e.selection)}}function jm(t,e,n){const o=e.createElement("softBreak");t.insertContent(o,n),e.setSelection(o,"after")}function Fm(t,e){return!t.is("rootElement")&&(e.isLimit(t)||Fm(t.parent,e))}class Vm extends F{static get pluginName(){return"ShiftEnter"}init(){const t=this.editor,e=t.model.schema,n=t.conversion,o=t.editing.view,i=o.document;e.register("softBreak",{allowWhere:"$text",isInline:!0}),n.for("upcast").elementToElement({model:"softBreak",view:"br"}),n.for("downcast").elementToElement({model:"softBreak",view:(t,{writer:e})=>e.createEmptyElement("br")}),o.addObserver(Fg),t.commands.add("shiftEnter",new Rm(t)),this.listenTo(i,"enter",((e,n)=>{i.isComposing||n.preventDefault(),n.isSoft&&(t.execute("shiftEnter"),o.scrollToTheSelection())}),{priority:"low"})}}class Um extends U{constructor(t){super(t),this.affectsData=!1}execute(){const t=this.editor.model,e=t.document.selection;let n=t.schema.getLimitElement(e);if(e.containsEntireContent(n)||!Hm(t.schema,n))do{if(n=n.parent,!n)return}while(!Hm(t.schema,n));t.change((t=>{t.setSelection(n,"in")}))}}function Hm(t,e){return t.isLimit(e)&&(t.checkChild(e,"$text")||t.checkChild(e,"paragraph"))}const qm=pr("Ctrl+A");class Gm extends F{static get pluginName(){return"SelectAllEditing"}init(){const t=this.editor,e=t.editing.view.document;t.commands.add("selectAll",new Um(t)),this.listenTo(e,"keydown",((e,n)=>{mr(n)===qm&&(t.execute("selectAll"),n.preventDefault())}))}}class Wm extends F{static get pluginName(){return"SelectAllUI"}init(){const t=this.editor;t.ui.componentFactory.add("selectAll",(e=>{const n=t.commands.get("selectAll"),o=new cu(e),i=e.t;return o.set({label:i("Select all"),icon:'',keystroke:"Ctrl+A",tooltip:!0}),o.bind("isEnabled").to(n,"isEnabled"),this.listenTo(o,"execute",(()=>{t.execute("selectAll"),t.editing.view.focus()})),o}))}}class Ym extends F{static get requires(){return[Gm,Wm]}static get pluginName(){return"SelectAll"}}class $m extends U{constructor(t,e){super(t),this._buffer=new Ug(t.model,e)}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(t={}){const e=this.editor.model,n=e.document,o=t.text||"",i=o.length;let r=n.selection;t.selection?r=t.selection:t.range&&(r=e.createSelection(t.range));const s=t.resultRange;e.enqueueChange(this._buffer.batch,(t=>{this._buffer.lock(),e.deleteContent(r),o&&e.insertContent(t.createText(o,n.selection.getAttributes()),r),s?t.setSelection(s):r.is("documentSelection")||t.setSelection(r),this._buffer.unlock(),this._buffer.input(i)}))}}const Km=["insertText","insertReplacementText"];class Qm extends ys{constructor(t){super(t),cr.isAndroid&&Km.push("insertCompositionText");const n=t.document;n.on("beforeinput",((o,i)=>{if(!this.isEnabled)return;const{data:r,targetRanges:s,inputType:a,domEvent:c}=i;if(!Km.includes(a))return;const l=new e(n,"insertText");n.fire(l,new Es(t,c,{text:r,selection:t.createSelection(s)})),l.stop.called&&o.stop()})),n.on("compositionend",((e,{data:o,domEvent:i})=>{this.isEnabled&&!cr.isAndroid&&o&&n.fire("insertText",new Es(t,i,{text:o,selection:n.selection}))}),{priority:"lowest"})}observe(){}}class Zm extends F{static get pluginName(){return"Input"}init(){const t=this.editor,e=t.model,n=t.editing.view,o=e.document.selection;n.addObserver(Qm);const i=new $m(t,t.config.get("typing.undoStep")||20);t.commands.add("insertText",i),t.commands.add("input",i),this.listenTo(n.document,"insertText",((o,i)=>{n.document.isComposing||i.preventDefault();const{text:r,selection:s,resultRange:a}=i,c=Array.from(s.getRanges()).map((e=>t.editing.mapper.toModelRange(e)));let l=r;if(cr.isAndroid){const t=Array.from(c[0].getItems()).reduce(((t,e)=>t+(e.is("$textProxy")?e.data:"")),"");t&&(t.length<=l.length?l.startsWith(t)&&(l=l.substring(t.length),c[0].start=c[0].start.getShiftedBy(t.length)):t.startsWith(l)&&(c[0].start=c[0].start.getShiftedBy(l.length),l=""))}const d={text:l,selection:e.createSelection(c)};a&&(d.resultRange=t.editing.mapper.toModelRange(a)),t.execute("insertText",d)})),cr.isAndroid?this.listenTo(n.document,"keydown",((t,r)=>{!o.isCollapsed&&229==r.keyCode&&n.document.isComposing&&Jm(e,i)})):this.listenTo(n.document,"compositionstart",(()=>{o.isCollapsed||Jm(e,i)}))}}function Jm(t,e){if(!e.isEnabled)return;const n=e.buffer;n.lock(),t.enqueueChange(n.batch,(()=>{t.deleteContent(t.document.selection)})),n.unlock()}class Xm extends F{static get requires(){return[Zm,Qg]}static get pluginName(){return"Typing"}}function tp(t,e){let n=t.start;return{text:Array.from(t.getItems()).reduce(((t,o)=>o.is("$text")||o.is("$textProxy")?t+o.data:(n=e.createPositionAfter(o),"")),""),range:e.createRange(n,t.end)}}class ep extends P{constructor(t,e){super(),this.model=t,this.testCallback=e,this._hasMatch=!1,this.set("isEnabled",!0),this.on("change:isEnabled",(()=>{this.isEnabled?this._startListening():(this.stopListening(t.document.selection),this.stopListening(t.document))})),this._startListening()}get hasMatch(){return this._hasMatch}_startListening(){const t=this.model.document;this.listenTo(t.selection,"change:range",((e,{directChange:n})=>{n&&(t.selection.isCollapsed?this._evaluateTextBeforeSelection("selection"):this.hasMatch&&(this.fire("unmatched"),this._hasMatch=!1))})),this.listenTo(t,"change:data",((t,e)=>{!e.isUndo&&e.isLocal&&this._evaluateTextBeforeSelection("data",{batch:e})}))}_evaluateTextBeforeSelection(t,e={}){const n=this.model,o=n.document.selection,i=n.createRange(n.createPositionAt(o.focus.parent,0),o.focus),{text:r,range:s}=tp(i,n),a=this.testCallback(r);if(!a&&this.hasMatch&&this.fire("unmatched"),this._hasMatch=!!a,a){const n=Object.assign(e,{text:r,range:s});"object"==typeof a&&Object.assign(n,a),this.fire(`matched:${t}`,n)}}}class np extends F{constructor(t){super(t),this.attributes=new Set,this._overrideUid=null}static get pluginName(){return"TwoStepCaretMovement"}init(){const t=this.editor,e=t.model,n=t.editing.view,o=t.locale,i=e.document.selection;this.listenTo(n.document,"arrowKey",((t,e)=>{if(!i.isCollapsed)return;if(e.shiftKey||e.altKey||e.ctrlKey)return;const n=e.keyCode==ur.arrowright,r=e.keyCode==ur.arrowleft;if(!n&&!r)return;const s=o.contentLanguageDirection;let a=!1;a="ltr"===s&&n||"rtl"===s&&r?this._handleForwardMovement(e):this._handleBackwardMovement(e),!0===a&&t.stop()}),{context:"$text",priority:"highest"}),this._isNextGravityRestorationSkipped=!1,this.listenTo(i,"change:range",((t,e)=>{this._isNextGravityRestorationSkipped?this._isNextGravityRestorationSkipped=!1:this._isGravityOverridden&&(!e.directChange&&sp(i.getFirstPosition(),this.attributes)||this._restoreGravity())}))}registerAttribute(t){this.attributes.add(t)}_handleForwardMovement(t){const e=this.attributes,n=this.editor.model.document.selection,o=n.getFirstPosition();return!this._isGravityOverridden&&((!o.isAtStart||!op(n,e))&&(!!sp(o,e)&&(rp(t),this._overrideGravity(),!0)))}_handleBackwardMovement(t){const e=this.attributes,n=this.editor.model,o=n.document.selection,i=o.getFirstPosition();return this._isGravityOverridden?(rp(t),this._restoreGravity(),ip(n,e,i),!0):i.isAtStart?!!op(o,e)&&(rp(t),ip(n,e,i),!0):!!function(t,e){return sp(t.getShiftedBy(-1),e)}(i,e)&&(i.isAtEnd&&!op(o,e)&&sp(i,e)?(rp(t),ip(n,e,i),!0):(this._isNextGravityRestorationSkipped=!0,this._overrideGravity(),!1))}get _isGravityOverridden(){return!!this._overrideUid}_overrideGravity(){this._overrideUid=this.editor.model.change((t=>t.overrideSelectionGravity()))}_restoreGravity(){this.editor.model.change((t=>{t.restoreSelectionGravity(this._overrideUid),this._overrideUid=null}))}}function op(t,e){for(const n of e)if(t.hasAttribute(n))return!0;return!1}function ip(t,e,n){const o=n.nodeBefore;t.change((t=>{o?t.setSelectionAttribute(o.getAttributes()):t.removeSelectionAttribute(e)}))}function rp(t){t.preventDefault()}function sp(t,e){const{nodeBefore:n,nodeAfter:o}=t;for(const t of e){const e=n?n.getAttribute(t):void 0;if((o?o.getAttribute(t):void 0)!==e)return!0}return!1}var ap=/[\\^$.*+?()[\]{}|]/g,cp=RegExp(ap.source);const lp=function(t){return(t=Zo(t))&&cp.test(t)?t.replace(ap,"\\$&"):t},dp={copyright:{from:"(c)",to:"©"},registeredTrademark:{from:"(r)",to:"®"},trademark:{from:"(tm)",to:"™"},oneHalf:{from:/(^|[^/a-z0-9])(1\/2)([^/a-z0-9])$/i,to:[null,"½",null]},oneThird:{from:/(^|[^/a-z0-9])(1\/3)([^/a-z0-9])$/i,to:[null,"⅓",null]},twoThirds:{from:/(^|[^/a-z0-9])(2\/3)([^/a-z0-9])$/i,to:[null,"⅔",null]},oneForth:{from:/(^|[^/a-z0-9])(1\/4)([^/a-z0-9])$/i,to:[null,"¼",null]},threeQuarters:{from:/(^|[^/a-z0-9])(3\/4)([^/a-z0-9])$/i,to:[null,"¾",null]},lessThanOrEqual:{from:"<=",to:"≤"},greaterThanOrEqual:{from:">=",to:"≥"},notEqual:{from:"!=",to:"≠"},arrowLeft:{from:"<-",to:"←"},arrowRight:{from:"->",to:"→"},horizontalEllipsis:{from:"...",to:"…"},enDash:{from:/(^| )(--)( )$/,to:[null,"–",null]},emDash:{from:/(^| )(---)( )$/,to:[null,"—",null]},quotesPrimary:{from:fp('"'),to:[null,"“",null,"”"]},quotesSecondary:{from:fp("'"),to:[null,"‘",null,"’"]},quotesPrimaryEnGb:{from:fp("'"),to:[null,"‘",null,"’"]},quotesSecondaryEnGb:{from:fp('"'),to:[null,"“",null,"”"]},quotesPrimaryPl:{from:fp('"'),to:[null,"„",null,"”"]},quotesSecondaryPl:{from:fp("'"),to:[null,"‚",null,"’"]}},hp={symbols:["copyright","registeredTrademark","trademark"],mathematical:["oneHalf","oneThird","twoThirds","oneForth","threeQuarters","lessThanOrEqual","greaterThanOrEqual","notEqual","arrowLeft","arrowRight"],typography:["horizontalEllipsis","enDash","emDash"],quotes:["quotesPrimary","quotesSecondary"]},up=["symbols","mathematical","typography","quotes"];function gp(t){return"string"==typeof t?new RegExp(`(${lp(t)})$`):t}function mp(t){return"string"==typeof t?()=>[t]:t instanceof Array?()=>t:t}function pp(t){return(t.textNode?t.textNode:t.nodeAfter).getAttributes()}function fp(t){return new RegExp(`(^|\\s)(${t})([^${t}]*)(${t})$`)}function kp(t,e,n,o){return o.createRange(bp(t,e,n,!0,o),bp(t,e,n,!1,o))}function bp(t,e,n,o,i){let r=t.textNode||(o?t.nodeBefore:t.nodeAfter),s=null;for(;r&&r.getAttribute(e)==n;)s=r,r=o?r.previousSibling:r.nextSibling;return s?i.createPositionAt(s,o?"before":"after"):t}class wp extends U{constructor(t){super(t),this._stack=[],this._createdBatches=new WeakSet,this.refresh(),this.listenTo(t.data,"set",((t,e)=>{e[1]={...e[1]};const n=e[1];n.batchType||(n.batchType={isUndoable:!1})}),{priority:"high"}),this.listenTo(t.data,"set",((t,e)=>{e[1].batchType.isUndoable||this.clearStack()}))}refresh(){this.isEnabled=this._stack.length>0}addBatch(t){const e=this.editor.model.document.selection,n={ranges:e.hasOwnRange?Array.from(e.getRanges()):[],isBackward:e.isBackward};this._stack.push({batch:t,selection:n}),this.refresh()}clearStack(){this._stack=[],this.refresh()}_restoreSelection(t,e,n){const o=this.editor.model,i=o.document,r=[],s=t.map((t=>t.getTransformedByOperations(n))),a=s.flat();for(const t of s){const e=t.filter((t=>t.root!=i.graveyard)).filter((t=>!_p(t,a)));e.length&&(Ap(e),r.push(e[0]))}r.length&&o.change((t=>{t.setSelection(r,{backward:e})}))}_undo(t,e){const n=this.editor.model,o=n.document;this._createdBatches.add(e);const i=t.operations.slice().filter((t=>t.isDocumentOperation));i.reverse();for(const t of i){const i=t.baseVersion+1,r=Array.from(o.history.getOperations(i)),s=Od([t.getReversed()],r,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA;for(const i of s)e.addOperation(i),n.applyOperation(i),o.history.setOperationAsUndone(t,i)}}}function Ap(t){t.sort(((t,e)=>t.start.isBefore(e.start)?-1:1));for(let e=1;ee!==t&&e.containsRange(t,!0)))}class Cp extends wp{execute(t=null){const e=t?this._stack.findIndex((e=>e.batch==t)):this._stack.length-1,n=this._stack.splice(e,1)[0],o=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(o,(()=>{this._undo(n.batch,o);const t=this.editor.model.document.history.getOperations(n.batch.baseVersion);this._restoreSelection(n.selection.ranges,n.selection.isBackward,t),this.fire("revert",n.batch,o)})),this.refresh()}}class vp extends wp{execute(){const t=this._stack.pop(),e=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(e,(()=>{const n=t.batch.operations[t.batch.operations.length-1].baseVersion+1,o=this.editor.model.document.history.getOperations(n);this._restoreSelection(t.selection.ranges,t.selection.isBackward,o),this._undo(t.batch,e)})),this.refresh()}}class yp extends F{constructor(t){super(t),this._batchRegistry=new WeakSet}static get pluginName(){return"UndoEditing"}init(){const t=this.editor;this._undoCommand=new Cp(t),this._redoCommand=new vp(t),t.commands.add("undo",this._undoCommand),t.commands.add("redo",this._redoCommand),this.listenTo(t.model,"applyOperation",((t,e)=>{const n=e[0];if(!n.isDocumentOperation)return;const o=n.batch,i=this._redoCommand._createdBatches.has(o),r=this._undoCommand._createdBatches.has(o);this._batchRegistry.has(o)||(this._batchRegistry.add(o),o.isUndoable&&(i?this._undoCommand.addBatch(o):r||(this._undoCommand.addBatch(o),this._redoCommand.clearStack())))}),{priority:"highest"}),this.listenTo(this._undoCommand,"revert",((t,e,n)=>{this._redoCommand.addBatch(n)})),t.keystrokes.set("CTRL+Z","undo"),t.keystrokes.set("CTRL+Y","redo"),t.keystrokes.set("CTRL+SHIFT+Z","redo")}}const xp='',Ep='';class Dp extends F{static get pluginName(){return"UndoUI"}init(){const t=this.editor,e=t.locale,n=t.t,o="ltr"==e.uiLanguageDirection?xp:Ep,i="ltr"==e.uiLanguageDirection?Ep:xp;this._addButton("undo",n("Undo"),"CTRL+Z",o),this._addButton("redo",n("Redo"),"CTRL+Y",i)}_addButton(t,e,n,o){const i=this.editor;i.ui.componentFactory.add(t,(r=>{const s=i.commands.get(t),a=new cu(r);return a.set({label:e,icon:o,keystroke:n,tooltip:!0}),a.bind("isEnabled").to(s,"isEnabled"),this.listenTo(a,"execute",(()=>{i.execute(t),i.editing.view.focus()})),a}))}}class Ip extends F{static get requires(){return[yp,Dp]}static get pluginName(){return"Undo"}}class Mp extends P{constructor(){super();const t=new window.FileReader;this._reader=t,this._data=void 0,this.set("loaded",0),t.onprogress=t=>{this.loaded=t.loaded}}get error(){return this._reader.error}get data(){return this._data}read(t){const e=this._reader;return this.total=t.size,new Promise(((n,o)=>{e.onload=()=>{const t=e.result;this._data=t,n(t)},e.onerror=()=>{o("error")},e.onabort=()=>{o("aborted")},this._reader.readAsDataURL(t)}))}abort(){this._reader.abort()}}class Tp extends F{static get pluginName(){return"FileRepository"}static get requires(){return[Zh]}init(){this.loaders=new fo,this.loaders.on("change",(()=>this._updatePendingAction())),this._loadersMap=new Map,this._pendingAction=null,this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",((t,e)=>e?t/e*100:0))}getLoader(t){return this._loadersMap.get(t)||null}createLoader(t){if(!this.createUploadAdapter)return l("filerepository-no-upload-adapter"),null;const e=new Sp(Promise.resolve(t),this.createUploadAdapter);return this.loaders.add(e),this._loadersMap.set(t,e),t instanceof Promise&&e.file.then((t=>{this._loadersMap.set(t,e)})).catch((()=>{})),e.on("change:uploaded",(()=>{let t=0;for(const e of this.loaders)t+=e.uploaded;this.uploaded=t})),e.on("change:uploadTotal",(()=>{let t=0;for(const e of this.loaders)e.uploadTotal&&(t+=e.uploadTotal);this.uploadTotal=t})),e}destroyLoader(t){const e=t instanceof Sp?t:this.getLoader(t);e._destroy(),this.loaders.remove(e),this._loadersMap.forEach(((t,n)=>{t===e&&this._loadersMap.delete(n)}))}_updatePendingAction(){const t=this.editor.plugins.get(Zh);if(this.loaders.length){if(!this._pendingAction){const e=this.editor.t,n=t=>`${e("Upload in progress")} ${parseInt(t)}%.`;this._pendingAction=t.add(n(this.uploadedPercent)),this._pendingAction.bind("message").to(this,"uploadedPercent",n)}}else t.remove(this._pendingAction),this._pendingAction=null}}class Sp extends P{constructor(t,e){super(),this.id=r(),this._filePromiseWrapper=this._createFilePromiseWrapper(t),this._adapter=e(this),this._reader=new Mp,this.set("status","idle"),this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",((t,e)=>e?t/e*100:0)),this.set("uploadResponse",null)}get file(){return this._filePromiseWrapper?this._filePromiseWrapper.promise.then((t=>this._filePromiseWrapper?t:null)):Promise.resolve(null)}get data(){return this._reader.data}read(){if("idle"!=this.status)throw new c("filerepository-read-wrong-status",this);return this.status="reading",this.file.then((t=>this._reader.read(t))).then((t=>{if("reading"!==this.status)throw this.status;return this.status="idle",t})).catch((t=>{if("aborted"===t)throw this.status="aborted","aborted";throw this.status="error",this._reader.error?this._reader.error:t}))}upload(){if("idle"!=this.status)throw new c("filerepository-upload-wrong-status",this);return this.status="uploading",this.file.then((()=>this._adapter.upload())).then((t=>(this.uploadResponse=t,this.status="idle",t))).catch((t=>{if("aborted"===this.status)throw"aborted";throw this.status="error",t}))}abort(){const t=this.status;this.status="aborted",this._filePromiseWrapper.isFulfilled?"reading"==t?this._reader.abort():"uploading"==t&&this._adapter.abort&&this._adapter.abort():(this._filePromiseWrapper.promise.catch((()=>{})),this._filePromiseWrapper.rejecter("aborted")),this._destroy()}_destroy(){this._filePromiseWrapper=void 0,this._reader=void 0,this._adapter=void 0,this.uploadResponse=void 0}_createFilePromiseWrapper(t){const e={};return e.promise=new Promise(((n,o)=>{e.rejecter=o,e.isFulfilled=!1,t.then((t=>{e.isFulfilled=!0,n(t)})).catch((t=>{e.isFulfilled=!0,o(t)}))})),e}}class Np extends Mh{constructor(t){super(t),this.buttonView=new cu(t),this._fileInputView=new Bp(t),this._fileInputView.bind("acceptedType").to(this),this._fileInputView.bind("allowMultipleFiles").to(this),this._fileInputView.delegate("done").to(this),this.setTemplate({tag:"span",attributes:{class:"ck-file-dialog-button"},children:[this.buttonView,this._fileInputView]}),this.buttonView.on("execute",(()=>{this._fileInputView.open()}))}focus(){this.buttonView.focus()}}class Bp extends Mh{constructor(t){super(t),this.set("acceptedType",void 0),this.set("allowMultipleFiles",!1);const e=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck-hidden"],type:"file",tabindex:"-1",accept:e.to("acceptedType"),multiple:e.to("allowMultipleFiles")},on:{change:e.to((()=>{this.element&&this.element.files&&this.element.files.length&&this.fire("done",this.element.files),this.element.value=""}))}})}open(){this.element.click()}}const Pp="ckCsrfToken",zp="abcdefghijklmnopqrstuvwxyz0123456789";function Lp(){let t=function(t){t=t.toLowerCase();const e=document.cookie.split(";");for(const n of e){const e=n.split("=");if(decodeURIComponent(e[0].trim().toLowerCase())===t)return decodeURIComponent(e[1])}return null}(Pp);var e,n;return t&&40==t.length||(t=function(t){let e="";const n=new Uint8Array(t);window.crypto.getRandomValues(n);for(let t=0;t.5?o.toUpperCase():o}return e}(40),e=Pp,n=t,document.cookie=encodeURIComponent(e)+"="+encodeURIComponent(n)+";path=/"),t}class Op{constructor(t,e,n){this.loader=t,this.url=e,this.t=n}upload(){return this.loader.file.then((t=>new Promise(((e,n)=>{this._initRequest(),this._initListeners(e,n,t),this._sendRequest(t)}))))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){const t=this.xhr=new XMLHttpRequest;t.open("POST",this.url,!0),t.responseType="json"}_initListeners(t,e,n){const o=this.xhr,i=this.loader,r=(0,this.t)("Cannot upload file:")+` ${n.name}.`;o.addEventListener("error",(()=>e(r))),o.addEventListener("abort",(()=>e())),o.addEventListener("load",(()=>{const n=o.response;if(!n||!n.uploaded)return e(n&&n.error&&n.error.message?n.error.message:r);t({default:n.url})})),o.upload&&o.upload.addEventListener("progress",(t=>{t.lengthComputable&&(i.uploadTotal=t.total,i.uploaded=t.loaded)}))}_sendRequest(t){const e=new FormData;e.append("upload",t),e.append("ckCsrfToken",Lp()),this.xhr.send(e)}}function Rp(t,e,n,o){let i,r=null;"function"==typeof o?i=o:(r=t.commands.get(o),i=()=>{t.execute(o)}),t.model.document.on("change:data",((s,a)=>{if(r&&!r.isEnabled||!e.isEnabled)return;const c=Ca(t.model.document.selection.getRanges());if(!c.isCollapsed)return;if(a.isUndo||!a.isLocal)return;const l=Array.from(t.model.document.differ.getChanges()),d=l[0];if(1!=l.length||"insert"!==d.type||"$text"!=d.name||1!=d.length)return;const h=d.position.parent;if(h.is("element","codeBlock"))return;if(h.is("element","listItem")&&"function"!=typeof o&&!["numberedList","bulletedList","todoList"].includes(o))return;if(r&&!0===r.value)return;const u=h.getChild(0),g=t.model.createRangeOn(u);if(!g.containsRange(c)&&!c.end.isEqual(g.end))return;const m=n.exec(u.data.substr(0,c.end.offset));m&&t.model.enqueueChange((e=>{const n=e.createPositionAt(h,0),o=e.createPositionAt(h,m[0].length),r=new fc(n,o);if(!1!==i({match:m})){e.remove(r);const n=t.model.document.selection.getFirstRange(),o=e.createRangeIn(h);!h.isEmpty||o.isEqual(n)||o.containsRange(n,!0)||e.remove(h)}r.detach(),t.model.enqueueChange((()=>{t.plugins.get("Delete").requestUndoOnBackspace()}))}))}))}function jp(t,e,n,o){let i,r;n instanceof RegExp?i=n:r=n,r=r||(t=>{let e;const n=[],o=[];for(;null!==(e=i.exec(t))&&!(e&&e.length<4);){let{index:t,1:i,2:r,3:s}=e;const a=i+r+s;t+=e[0].length-a.length;const c=[t,t+i.length],l=[t+i.length+r.length,t+i.length+r.length+s.length];n.push(c),n.push(l),o.push([t+i.length,t+i.length+r.length])}return{remove:n,format:o}}),t.model.document.on("change:data",((n,i)=>{if(i.isUndo||!i.isLocal||!e.isEnabled)return;const s=t.model,a=s.document.selection;if(!a.isCollapsed)return;const c=Array.from(s.document.differ.getChanges()),l=c[0];if(1!=c.length||"insert"!==l.type||"$text"!=l.name||1!=l.length)return;const d=a.focus,h=d.parent,{text:u,range:g}=function(t,e){let n=t.start;return{text:Array.from(t.getItems()).reduce(((t,o)=>!o.is("$text")&&!o.is("$textProxy")||o.getAttribute("code")?(n=e.createPositionAfter(o),""):t+o.data),""),range:e.createRange(n,t.end)}}(s.createRange(s.createPositionAt(h,0),d),s),m=r(u),p=Fp(g.start,m.format,s),f=Fp(g.start,m.remove,s);p.length&&f.length&&s.enqueueChange((e=>{if(!1!==o(e,p)){for(const t of f.reverse())e.remove(t);s.enqueueChange((()=>{t.plugins.get("Delete").requestUndoOnBackspace()}))}}))}))}function Fp(t,e,n){return e.filter((t=>void 0!==t[0]&&void 0!==t[1])).map((e=>n.createRange(t.getShiftedBy(e[0]),t.getShiftedBy(e[1]))))}function Vp(t,e){return(n,o)=>{if(!t.commands.get(e).isEnabled)return!1;const i=t.model.schema.getValidRanges(o,e);for(const t of i)n.setAttribute(e,!0,t);n.removeSelectionAttribute(e)}}class Up extends U{constructor(t,e){super(t),this.attributeKey=e}refresh(){const t=this.editor.model,e=t.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=t.schema.checkAttributeInSelection(e.selection,this.attributeKey)}execute(t={}){const e=this.editor.model,n=e.document.selection,o=void 0===t.forceValue?!this.value:t.forceValue;e.change((t=>{if(n.isCollapsed)o?t.setSelectionAttribute(this.attributeKey,!0):t.removeSelectionAttribute(this.attributeKey);else{const i=e.schema.getValidRanges(n.getRanges(),this.attributeKey);for(const e of i)o?t.setAttribute(this.attributeKey,o,e):t.removeAttribute(this.attributeKey,e)}}))}_getValueFromFirstAllowedNode(){const t=this.editor.model,e=t.schema,n=t.document.selection;if(n.isCollapsed)return n.hasAttribute(this.attributeKey);for(const t of n.getRanges())for(const n of t.getItems())if(e.checkAttribute(n,this.attributeKey))return n.hasAttribute(this.attributeKey);return!1}}const Hp="bold";class qp extends F{static get pluginName(){return"BoldEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:Hp}),t.model.schema.setAttributeProperties(Hp,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:Hp,view:"strong",upcastAlso:["b",t=>{const e=t.getStyle("font-weight");return e?"bold"==e||Number(e)>=600?{name:!0,styles:["font-weight"]}:void 0:null}]}),t.commands.add(Hp,new Up(t,Hp)),t.keystrokes.set("CTRL+B",Hp)}}const Gp="bold";class Wp extends F{static get pluginName(){return"BoldUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(Gp,(n=>{const o=t.commands.get(Gp),i=new cu(n);return i.set({label:e("Bold"),icon:Jh.bold,keystroke:"CTRL+B",tooltip:!0,isToggleable:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(i,"execute",(()=>{t.execute(Gp),t.editing.view.focus()})),i}))}}const Yp="italic";class $p extends F{static get pluginName(){return"ItalicEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:Yp}),t.model.schema.setAttributeProperties(Yp,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:Yp,view:"i",upcastAlso:["em",{styles:{"font-style":"italic"}}]}),t.commands.add(Yp,new Up(t,Yp)),t.keystrokes.set("CTRL+I",Yp)}}const Kp="italic";class Qp extends F{static get pluginName(){return"ItalicUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(Kp,(n=>{const o=t.commands.get(Kp),i=new cu(n);return i.set({label:e("Italic"),icon:'',keystroke:"CTRL+I",tooltip:!0,isToggleable:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(i,"execute",(()=>{t.execute(Kp),t.editing.view.focus()})),i}))}}class Zp extends U{refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,n=e.schema,o=e.document.selection,i=Array.from(o.getSelectedBlocks()),r=void 0===t.forceValue?!this.value:t.forceValue;e.change((t=>{if(r){const e=i.filter((t=>Jp(t)||tf(n,t)));this._applyQuote(t,e)}else this._removeQuote(t,i.filter(Jp))}))}_getValue(){const t=Ca(this.editor.model.document.selection.getSelectedBlocks());return!(!t||!Jp(t))}_checkEnabled(){if(this.value)return!0;const t=this.editor.model.document.selection,e=this.editor.model.schema,n=Ca(t.getSelectedBlocks());return!!n&&tf(e,n)}_removeQuote(t,e){Xp(t,e).reverse().forEach((e=>{if(e.start.isAtStart&&e.end.isAtEnd)return void t.unwrap(e.start.parent);if(e.start.isAtStart){const n=t.createPositionBefore(e.start.parent);return void t.move(e,n)}e.end.isAtEnd||t.split(e.end);const n=t.createPositionAfter(e.end.parent);t.move(e,n)}))}_applyQuote(t,e){const n=[];Xp(t,e).reverse().forEach((e=>{let o=Jp(e.start);o||(o=t.createElement("blockQuote"),t.wrap(e,o)),n.push(o)})),n.reverse().reduce(((e,n)=>e.nextSibling==n?(t.merge(t.createPositionAfter(e)),e):n))}}function Jp(t){return"blockQuote"==t.parent.name?t.parent:null}function Xp(t,e){let n,o=0;const i=[];for(;o{const o=t.model.document.differ.getChanges();for(const t of o)if("insert"==t.type){const o=t.position.nodeAfter;if(!o)continue;if(o.is("element","blockQuote")&&o.isEmpty)return n.remove(o),!0;if(o.is("element","blockQuote")&&!e.checkChild(t.position,o))return n.unwrap(o),!0;if(o.is("element")){const t=n.createRangeIn(o);for(const o of t.getItems())if(o.is("element","blockQuote")&&!e.checkChild(n.createPositionBefore(o),o))return n.unwrap(o),!0}}else if("remove"==t.type){const e=t.position.parent;if(e.is("element","blockQuote")&&e.isEmpty)return n.remove(e),!0}return!1}));const n=this.editor.editing.view.document,o=t.model.document.selection,i=t.commands.get("blockQuote");this.listenTo(n,"enter",((e,n)=>{if(!o.isCollapsed||!i.value)return;o.getLastPosition().parent.isEmpty&&(t.execute("blockQuote"),t.editing.view.scrollToTheSelection(),n.preventDefault(),e.stop())}),{context:"blockquote"}),this.listenTo(n,"delete",((e,n)=>{if("backward"!=n.direction||!o.isCollapsed||!i.value)return;const r=o.getLastPosition().parent;r.isEmpty&&!r.previousSibling&&(t.execute("blockQuote"),t.editing.view.scrollToTheSelection(),n.preventDefault(),e.stop())}),{context:"blockquote"})}}var nf=n(3062),of={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(nf.Z,of);nf.Z.locals;class rf extends F{static get pluginName(){return"BlockQuoteUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add("blockQuote",(n=>{const o=t.commands.get("blockQuote"),i=new cu(n);return i.set({label:e("Block quote"),icon:Jh.quote,tooltip:!0,isToggleable:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(i,"execute",(()=>{t.execute("blockQuote"),t.editing.view.focus()})),i}))}}class sf extends F{static get pluginName(){return"CKBoxUI"}afterInit(){const t=this.editor;if(!t.commands.get("ckbox"))return;const e=t.t;t.ui.componentFactory.add("ckbox",(n=>{const o=t.commands.get("ckbox"),i=new cu(n);return i.set({label:e("Open file manager"),icon:'',tooltip:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),i.on("execute",(()=>{t.execute("ckbox")})),i}))}}function af({token:t,id:e,origin:n,width:o,extension:i}){const r=cf(t),s=function(t){const e=[10*t/100,80],n=Math.floor(Math.max(...e)),o=[Math.min(t,4e3)];let i=o[0];for(;i-n>=n;)i-=n,o.unshift(i);return o}(o),a=function(t){if("bmp"===t||"tiff"===t||"jpg"===t)return"jpeg";return t}(i);return{imageFallbackUrl:lf({environmentId:r,id:e,origin:n,width:o,extension:a}),imageSources:[{srcset:s.map((t=>`${lf({environmentId:r,id:e,origin:n,width:t,extension:"webp"})} ${t}w`)).join(","),sizes:`(max-width: ${o}px) 100vw, ${o}px`,type:"image/webp"}]}}function cf(t){const[,e]=t.value.split(".");return JSON.parse(atob(e)).aud}function lf({environmentId:t,id:e,origin:n,width:o,extension:i}){return new URL(`${t}/assets/${e}/images/${o}.${i}`,n).toString()}class df extends U{constructor(t){super(t),this._chosenAssets=new Set,this._wrapper=null,this._initListeners()}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(){this.fire("ckbox:open")}_getValue(){return null!==this._wrapper}_checkEnabled(){const t=this.editor.commands.get("insertImage"),e=this.editor.commands.get("link");return!(!t.isEnabled&&!e.isEnabled)}_prepareOptions(){const t=this.editor.config.get("ckbox");return{theme:t.theme,language:t.language,tokenUrl:t.tokenUrl,serviceOrigin:t.serviceOrigin,assetsOrigin:t.assetsOrigin,dialog:{onClose:()=>this.fire("ckbox:close")},assets:{onChoose:t=>this.fire("ckbox:choose",t)}}}_initListeners(){const t=this.editor,e=t.model,n=!t.config.get("ckbox.ignoreDataId");this.on("ckbox",(()=>{this.refresh()}),{priority:"low"}),this.on("ckbox:open",(()=>{this.isEnabled&&!this.value&&(this._wrapper=wa(document,"div",{class:"ck ckbox-wrapper"}),document.body.appendChild(this._wrapper),window.CKBox.mount(this._wrapper,this._prepareOptions()))})),this.on("ckbox:close",(()=>{this.value&&(this._wrapper.remove(),this._wrapper=null)})),this.on("ckbox:choose",((o,i)=>{if(!this.isEnabled)return;const r=t.commands.get("insertImage"),s=t.commands.get("link"),a=t.plugins.get("CKBoxEditing"),c=function({assets:t,origin:e,token:n,isImageAllowed:o,isLinkAllowed:i}){return t.map((t=>({id:t.data.id,type:uf(t)?"image":"link",attributes:hf(t,n,e)}))).filter((t=>"image"===t.type?o:i))}({assets:i,origin:t.config.get("ckbox.assetsOrigin"),token:a.getToken(),isImageAllowed:r.isEnabled,isLinkAllowed:s.isEnabled});0!==c.length&&e.change((t=>{for(const e of c){const o=e===c[c.length-1];this._insertAsset(e,o,t),n&&(setTimeout((()=>this._chosenAssets.delete(e)),1e3),this._chosenAssets.add(e))}}))})),this.listenTo(t,"destroy",(()=>{this.fire("ckbox:close"),this._chosenAssets.clear()}))}_insertAsset(t,e,n){const o=this.editor.model.document.selection;n.removeSelectionAttribute("linkHref"),"image"===t.type?this._insertImage(t):this._insertLink(t,n),e||n.setSelection(o.getLastPosition())}_insertImage(t){const e=this.editor,{imageFallbackUrl:n,imageSources:o,imageTextAlternative:i}=t.attributes;e.execute("insertImage",{source:{src:n,sources:o,alt:i}})}_insertLink(t,e){const n=this.editor,o=n.model,i=o.document.selection,{linkName:r,linkHref:s}=t.attributes;if(i.isCollapsed){const t=Bo(i.getAttributes()),n=e.createText(r,t),s=o.insertContent(n);e.setSelection(s)}n.execute("link",s)}}function hf(t,e,n){if(uf(t)){const{imageFallbackUrl:o,imageSources:i}=af({token:e,origin:n,id:t.data.id,width:t.data.metadata.width,extension:t.data.extension});return{imageFallbackUrl:o,imageSources:i,imageTextAlternative:t.data.metadata.description||""}}return{linkName:t.data.name,linkHref:gf(t,e,n)}}function uf(t){const e=t.data.metadata;return!!e&&(e.width&&e.height)}function gf(t,e,n){const o=cf(e),i=new URL(`${o}/assets/${t.data.id}/file`,n);return i.searchParams.set("download","true"),i.toString()}class mf extends F{static get requires(){return["ImageUploadEditing","ImageUploadProgress",Tp,kf]}static get pluginName(){return"CKBoxUploadAdapter"}async afterInit(){const t=this.editor,e=!!t.config.get("ckbox"),n=!!window.CKBox;if(!e&&!n)return;const o=t.plugins.get(Tp),i=t.plugins.get(kf);o.createUploadAdapter=e=>new pf(e,i.getToken(),t);const r=!t.config.get("ckbox.ignoreDataId"),s=t.plugins.get("ImageUploadEditing");r&&s.on("uploadComplete",((e,{imageElement:n,data:o})=>{t.model.change((t=>{t.setAttribute("ckboxImageId",o.ckboxImageId,n)}))}))}}class pf{constructor(t,e,n){this.loader=t,this.token=e,this.editor=n,this.controller=new AbortController,this.serviceOrigin=n.config.get("ckbox.serviceOrigin"),this.assetsOrigin=n.config.get("ckbox.assetsOrigin")}async getAvailableCategories(t=0){const e=new URL("categories",this.serviceOrigin);return e.searchParams.set("limit",50..toString()),e.searchParams.set("offset",t.toString()),this._sendHttpRequest({url:e}).then((async e=>{if(e.totalCount-(t+50)>0){const n=await this.getAvailableCategories(t+50);return[...e.items,...n]}return e.items})).catch((()=>{this.controller.signal.throwIfAborted(),d("ckbox-fetch-category-http-error")}))}async getCategoryIdForFile(t){const e=ff(t.name),n=await this.getAvailableCategories();if(!n)return null;const o=this.editor.config.get("ckbox.defaultUploadCategories");if(o){const t=Object.keys(o).find((t=>o[t].includes(e)));if(t){const e=n.find((e=>e.id===t||e.name===t));return e?e.id:null}}const i=n.find((t=>t.extensions.includes(e)));return i?i.id:null}async upload(){const t=this.editor.t,e=t("Cannot determine a category for the uploaded file."),n=await this.loader.file,o=await this.getCategoryIdForFile(n);if(!o)return Promise.reject(e);const i=new URL("assets",this.serviceOrigin),r=new FormData;r.append("categoryId",o),r.append("file",n);const s={method:"POST",url:i,data:r,onUploadProgress:t=>{t.lengthComputable&&(this.loader.uploadTotal=t.total,this.loader.uploaded=t.loaded)}};return this._sendHttpRequest(s).then((async t=>{const e=await this._getImageWidth(),o=ff(n.name),i=af({token:this.token,id:t.id,origin:this.assetsOrigin,width:e,extension:o});return{ckboxImageId:t.id,default:i.imageFallbackUrl,sources:i.imageSources}})).catch((()=>{const e=t("Cannot upload file:")+` ${n.name}.`;return Promise.reject(e)}))}abort(){this.controller.abort()}_sendHttpRequest(t){const{url:e,data:n,onUploadProgress:o}=t,i=t.method||"GET",r=this.controller.signal,s=new XMLHttpRequest;s.open(i,e.toString(),!0),s.setRequestHeader("Authorization",this.token.value),s.setRequestHeader("CKBox-Version","CKEditor 5"),s.responseType="json";const a=()=>{s.abort()};return new Promise(((t,e)=>{r.addEventListener("abort",a),s.addEventListener("loadstart",(()=>{r.addEventListener("abort",a)})),s.addEventListener("loadend",(()=>{r.removeEventListener("abort",a)})),s.addEventListener("error",(()=>{e()})),s.addEventListener("abort",(()=>{e()})),s.addEventListener("load",(async()=>{const n=s.response;return!n||n.statusCode>=400?e(n&&n.message):t(n)})),o&&s.upload.addEventListener("progress",(t=>{o(t)})),s.send(n)}))}_getImageWidth(){return new Promise((t=>{const e=new Image;e.onload=()=>{URL.revokeObjectURL(e.src),t(e.width)},e.src=this.loader.data}))}}function ff(t){return t.match(/\.(?[^.]+)$/).groups.ext}class kf extends F{static get pluginName(){return"CKBoxEditing"}static get requires(){return["CloudServices","LinkEditing","PictureEditing",mf]}async init(){const t=this.editor,e=!!t.config.get("ckbox"),n=!!window.CKBox;if(!e&&!n)return;this._initConfig();const o=t.plugins.get("CloudServicesCore"),i=t.config.get("ckbox.tokenUrl"),r=t.config.get("cloudServices.tokenUrl");this._token=i===r?t.plugins.get("CloudServices").token:await o.createToken(i).init(),t.config.get("ckbox.ignoreDataId")||(this._initSchema(),this._initConversion(),this._initFixers()),n&&t.commands.add("ckbox",new df(t))}getToken(){return this._token}_initConfig(){const t=this.editor;t.config.define("ckbox",{serviceOrigin:"https://api.ckbox.io",assetsOrigin:"https://ckbox.cloud",defaultUploadCategories:null,ignoreDataId:!1,language:t.locale.uiLanguage,theme:"default",tokenUrl:t.config.get("cloudServices.tokenUrl")});if(!t.config.get("ckbox.tokenUrl"))throw new c("ckbox-plugin-missing-token-url",this);t.plugins.has("ImageBlockEditing")||t.plugins.has("ImageInlineEditing")||d("ckbox-plugin-image-feature-missing",t)}_initSchema(){const t=this.editor.model.schema;t.extend("$text",{allowAttributes:"ckboxLinkId"}),t.isRegistered("imageBlock")&&t.extend("imageBlock",{allowAttributes:["ckboxImageId","ckboxLinkId"]}),t.isRegistered("imageInline")&&t.extend("imageInline",{allowAttributes:["ckboxImageId","ckboxLinkId"]}),t.addAttributeCheck(((t,e)=>{if(!!!t.last.getAttribute("linkHref")&&"ckboxLinkId"===e)return!1}))}_initConversion(){const t=this.editor;t.conversion.for("downcast").add((t=>{t.on("attribute:ckboxLinkId:imageBlock",((t,e,n)=>{const{writer:o,mapper:i,consumable:r}=n;if(!r.consume(e.item,t.name))return;const s=[...i.toViewElement(e.item).getChildren()].find((t=>"a"===t.name));s&&(e.item.hasAttribute("ckboxLinkId")?o.setAttribute("data-ckbox-resource-id",e.item.getAttribute("ckboxLinkId"),s):o.removeAttribute("data-ckbox-resource-id",s))}),{priority:"low"}),t.on("attribute:ckboxLinkId",((t,e,n)=>{const{writer:o,mapper:i,consumable:r}=n;if(r.consume(e.item,t.name)){if(e.attributeOldValue){const t=wf(o,e.attributeOldValue);o.unwrap(i.toViewRange(e.range),t)}if(e.attributeNewValue){const t=wf(o,e.attributeNewValue);if(e.item.is("selection")){const e=o.document.selection;o.wrap(e.getFirstRange(),t)}else o.wrap(i.toViewRange(e.range),t)}}}),{priority:"low"})})),t.conversion.for("upcast").add((t=>{t.on("element:a",((t,e,n)=>{const{writer:o,consumable:i}=n;if(!e.viewItem.getAttribute("href"))return;if(!i.consume(e.viewItem,{attributes:["data-ckbox-resource-id"]}))return;const r=e.viewItem.getAttribute("data-ckbox-resource-id");if(r)if(e.modelRange)for(let t of e.modelRange.getItems())t.is("$textProxy")&&(t=t.textNode),Af(t)&&o.setAttribute("ckboxLinkId",r,t);else{const t=e.modelCursor.nodeBefore||e.modelCursor.parent;o.setAttribute("ckboxLinkId",r,t)}}),{priority:"low"})})),t.conversion.for("downcast").attributeToAttribute({model:"ckboxImageId",view:"data-ckbox-resource-id"}),t.conversion.for("upcast").elementToAttribute({model:{key:"ckboxImageId",value:t=>t.getAttribute("data-ckbox-resource-id")},view:{attributes:{"data-ckbox-resource-id":/[\s\S]+/}}})}_initFixers(){const t=this.editor,e=t.model,n=e.document.selection;e.document.registerPostFixer(function(t){return e=>{let n=!1;const o=t.model,i=t.commands.get("ckbox");if(!i)return n;for(const t of o.document.differ.getChanges()){if("insert"!==t.type&&"attribute"!==t.type)continue;const o="insert"===t.type?new ic(t.position,t.position.getShiftedBy(t.length)):t.range,r="attribute"===t.type&&"linkHref"===t.attributeKey&&null===t.attributeNewValue;for(const t of o.getItems()){if(r&&t.hasAttribute("ckboxLinkId")){e.removeAttribute("ckboxLinkId",t),n=!0;continue}const o=bf(t,i._chosenAssets);for(const i of o){const o="image"===i.type?"ckboxImageId":"ckboxLinkId";i.id!==t.getAttribute(o)&&(e.setAttribute(o,i.id,t),n=!0)}}}return n}}(t)),e.document.registerPostFixer(function(t){return e=>{!t.hasAttribute("linkHref")&&t.hasAttribute("ckboxLinkId")&&e.removeSelectionAttribute("ckboxLinkId")}}(n))}}function bf(t,e){const n=t.is("element","imageInline")||t.is("element","imageBlock"),o=t.hasAttribute("linkHref");return[...e].filter((e=>"image"===e.type&&n?e.attributes.imageFallbackUrl===t.getAttribute("src"):"link"===e.type&&o?e.attributes.linkHref===t.getAttribute("linkHref"):void 0))}function wf(t,e){const n=t.createAttributeElement("a",{"data-ckbox-resource-id":e},{priority:5});return t.setCustomProperty("link",!0,n),n}function Af(t){return!!t.is("$text")||!(!t.is("element","imageInline")&&!t.is("element","imageBlock"))}class _f extends F{static get pluginName(){return"CKFinderUI"}init(){const t=this.editor,e=t.ui.componentFactory,n=t.t;e.add("ckfinder",(e=>{const o=t.commands.get("ckfinder"),i=new cu(e);return i.set({label:n("Insert image or file"),icon:'',tooltip:!0}),i.bind("isEnabled").to(o),i.on("execute",(()=>{t.execute("ckfinder"),t.editing.view.focus()})),i}))}}class Cf extends U{constructor(t){super(t),this.stopListening(this.editor.model.document,"change"),this.listenTo(this.editor.model.document,"change",(()=>this.refresh()),{priority:"low"})}refresh(){const t=this.editor.commands.get("insertImage"),e=this.editor.commands.get("link");this.isEnabled=t.isEnabled||e.isEnabled}execute(){const t=this.editor,e=this.editor.config.get("ckfinder.openerMethod")||"modal";if("popup"!=e&&"modal"!=e)throw new c("ckfinder-unknown-openermethod",t);const n=this.editor.config.get("ckfinder.options")||{};n.chooseFiles=!0;const o=n.onInit;n.language||(n.language=t.locale.uiLanguage),n.onInit=e=>{o&&o(e),e.on("files:choose",(n=>{const o=n.data.files.toArray(),i=o.filter((t=>!t.isImage())),r=o.filter((t=>t.isImage()));for(const e of i)t.execute("link",e.getUrl());const s=[];for(const t of r){const n=t.getUrl();s.push(n||e.request("file:getProxyUrl",{file:t}))}s.length&&vf(t,s)})),e.on("file:choose:resizedImage",(e=>{const n=e.data.resizedUrl;if(n)vf(t,[n]);else{const e=t.plugins.get("Notification"),n=t.locale.t;e.showWarning(n("Could not obtain resized image URL."),{title:n("Selecting resized image failed"),namespace:"ckfinder"})}}))},window.CKFinder[e](n)}}function vf(t,e){if(t.commands.get("insertImage").isEnabled)t.execute("insertImage",{source:e});else{const e=t.plugins.get("Notification"),n=t.locale.t;e.showWarning(n("Could not insert image at the current position."),{title:n("Inserting image failed"),namespace:"ckfinder"})}}class yf extends F{static get pluginName(){return"CKFinderEditing"}static get requires(){return[gg,"LinkEditing"]}init(){const t=this.editor;if(!t.plugins.has("ImageBlockEditing")&&!t.plugins.has("ImageInlineEditing"))throw new c("ckfinder-missing-image-plugin",t);t.commands.add("ckfinder",new Cf(t))}}class xf extends F{static get pluginName(){return"CloudServicesUploadAdapter"}static get requires(){return["CloudServices",Tp]}init(){const t=this.editor,e=t.plugins.get("CloudServices"),n=e.token,o=e.uploadUrl;n&&(this._uploadGateway=t.plugins.get("CloudServicesCore").createUploadGateway(n,o),t.plugins.get(Tp).createUploadAdapter=t=>new Ef(this._uploadGateway,t))}}class Ef{constructor(t,e){this.uploadGateway=t,this.loader=e}upload(){return this.loader.file.then((t=>(this.fileUploader=this.uploadGateway.upload(t),this.fileUploader.on("progress",((t,e)=>{this.loader.uploadTotal=e.total,this.loader.uploaded=e.uploaded})),this.fileUploader.send())))}abort(){this.fileUploader.abort()}}class Df extends U{refresh(){const t=this.editor.model,e=Ca(t.document.selection.getSelectedBlocks());this.value=!!e&&e.is("element","paragraph"),this.isEnabled=!!e&&If(e,t.schema)}execute(t={}){const e=this.editor.model,n=e.document;e.change((o=>{const i=(t.selection||n.selection).getSelectedBlocks();for(const t of i)!t.is("element","paragraph")&&If(t,e.schema)&&o.rename(t,"paragraph")}))}}function If(t,e){return e.checkChild(t.parent,"paragraph")&&!e.isObject(t)}class Mf extends U{execute(t){const e=this.editor.model,n=t.attributes;let o=t.position;e.change((t=>{const i=t.createElement("paragraph");if(n&&e.schema.setAllowedAttributes(i,n,t),!e.schema.checkChild(o.parent,i)){const n=e.schema.findAllowedParent(o,i);if(!n)return;o=t.split(o,n).position}e.insertContent(i,o),t.setSelection(i,"in")}))}}class Tf extends F{static get pluginName(){return"Paragraph"}init(){const t=this.editor,e=t.model;t.commands.add("paragraph",new Df(t)),t.commands.add("insertParagraph",new Mf(t)),e.schema.register("paragraph",{inheritAllFrom:"$block"}),t.conversion.elementToElement({model:"paragraph",view:"p"}),t.conversion.for("upcast").elementToElement({model:(t,{writer:e})=>Tf.paragraphLikeElements.has(t.name)?t.isEmpty?null:e.createElement("paragraph"):null,view:/.+/,converterPriority:"low"})}}Tf.paragraphLikeElements=new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td","th"]);class Sf extends U{constructor(t,e){super(t),this.modelElements=e}refresh(){const t=Ca(this.editor.model.document.selection.getSelectedBlocks());this.value=!!t&&this.modelElements.includes(t.name)&&t.name,this.isEnabled=!!t&&this.modelElements.some((e=>Nf(t,e,this.editor.model.schema)))}execute(t){const e=this.editor.model,n=e.document,o=t.value;e.change((t=>{const i=Array.from(n.selection.getSelectedBlocks()).filter((t=>Nf(t,o,e.schema)));for(const e of i)e.is("element",o)||t.rename(e,o)}))}}function Nf(t,e,n){return n.checkChild(t.parent,e)&&!n.isObject(t)}const Bf="paragraph";class Pf extends F{static get pluginName(){return"HeadingEditing"}constructor(t){super(t),t.config.define("heading",{options:[{model:"paragraph",title:"Paragraph",class:"ck-heading_paragraph"},{model:"heading1",view:"h2",title:"Heading 1",class:"ck-heading_heading1"},{model:"heading2",view:"h3",title:"Heading 2",class:"ck-heading_heading2"},{model:"heading3",view:"h4",title:"Heading 3",class:"ck-heading_heading3"}]})}static get requires(){return[Tf]}init(){const t=this.editor,e=t.config.get("heading.options"),n=[];for(const o of e)o.model!==Bf&&(t.model.schema.register(o.model,{inheritAllFrom:"$block"}),t.conversion.elementToElement(o),n.push(o.model));this._addDefaultH1Conversion(t),t.commands.add("heading",new Sf(t,n))}afterInit(){const t=this.editor,e=t.commands.get("enter"),n=t.config.get("heading.options");e&&this.listenTo(e,"afterExecute",((e,o)=>{const i=t.model.document.selection.getFirstPosition().parent;n.some((t=>i.is("element",t.model)))&&!i.is("element",Bf)&&0===i.childCount&&o.writer.rename(i,Bf)}))}_addDefaultH1Conversion(t){t.conversion.for("upcast").elementToElement({model:"heading1",view:"h1",converterPriority:s.get("low")+1})}}var zf=n(8733),Lf={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(zf.Z,Lf);zf.Z.locals;class Of extends F{static get pluginName(){return"HeadingUI"}init(){const t=this.editor,e=t.t,n=function(t){const e=t.t,n={Paragraph:e("Paragraph"),"Heading 1":e("Heading 1"),"Heading 2":e("Heading 2"),"Heading 3":e("Heading 3"),"Heading 4":e("Heading 4"),"Heading 5":e("Heading 5"),"Heading 6":e("Heading 6")};return t.config.get("heading.options").map((t=>{const e=n[t.title];return e&&e!=t.title&&(t.title=e),t}))}(t),o=e("Choose heading"),i=e("Heading");t.ui.componentFactory.add("heading",(e=>{const r={},s=new fo,a=t.commands.get("heading"),c=t.commands.get("paragraph"),l=[a];for(const t of n){const e={type:"button",model:new mg({label:t.title,class:t.class,withText:!0})};"paragraph"===t.model?(e.model.bind("isOn").to(c,"value"),e.model.set("commandName","paragraph"),l.push(c)):(e.model.bind("isOn").to(a,"value",(e=>e===t.model)),e.model.set({commandName:"heading",commandValue:t.model})),s.add(e),r[t.model]=t.title}const d=Gu(e);return Yu(d,s),d.buttonView.set({isOn:!1,withText:!0,tooltip:i}),d.extendTemplate({attributes:{class:["ck-heading-dropdown"]}}),d.bind("isEnabled").toMany(l,"isEnabled",((...t)=>t.some((t=>t)))),d.buttonView.bind("label").to(a,"value",c,"value",((t,e)=>{const n=t||e&&"paragraph";return r[n]?r[n]:o})),this.listenTo(d,"execute",(e=>{t.execute(e.source.commandName,e.source.commandValue?{value:e.source.commandValue}:void 0),t.editing.view.focus()})),d}))}}class Rf extends F{static get requires(){return[Ag]}static get pluginName(){return"WidgetToolbarRepository"}init(){const t=this.editor;if(t.plugins.has("BalloonToolbar")){const e=t.plugins.get("BalloonToolbar");this.listenTo(e,"show",(e=>{(function(t){const e=t.getSelectedElement();return!(!e||!om(e))})(t.editing.view.document.selection)&&e.stop()}),{priority:"high"})}this._toolbarDefinitions=new Map,this._balloon=this.editor.plugins.get("ContextualBalloon"),this.on("change:isEnabled",(()=>{this._updateToolbarsVisibility()})),this.listenTo(t.ui,"update",(()=>{this._updateToolbarsVisibility()})),this.listenTo(t.ui.focusTracker,"change:isFocused",(()=>{this._updateToolbarsVisibility()}),{priority:"low"})}destroy(){super.destroy();for(const t of this._toolbarDefinitions.values())t.view.destroy()}register(t,{ariaLabel:e,items:n,getRelatedElement:o,balloonClassName:i="ck-toolbar-container"}){if(!n.length)return void l("widget-toolbar-no-items",{toolbarId:t});const r=this.editor,s=r.t,a=new Nu(r.locale);if(a.ariaLabel=e||s("Widget toolbar"),this._toolbarDefinitions.has(t))throw new c("widget-toolbar-duplicated",this,{toolbarId:t});a.fillFromConfig(n,r.ui.componentFactory);const d={view:a,getRelatedElement:o,balloonClassName:i};r.ui.addToolbar(a,{isContextual:!0,beforeFocus:()=>{const t=o(r.editing.view.document.selection);t&&this._showToolbar(d,t)},afterBlur:()=>{this._hideToolbar(d)}}),this._toolbarDefinitions.set(t,d)}_updateToolbarsVisibility(){let t=0,e=null,n=null;for(const o of this._toolbarDefinitions.values()){const i=o.getRelatedElement(this.editor.editing.view.document.selection);if(this.isEnabled&&i)if(this.editor.ui.focusTracker.isFocused){const r=i.getAncestors().length;r>t&&(t=r,e=i,n=o)}else this._isToolbarVisible(o)&&this._hideToolbar(o);else this._isToolbarInBalloon(o)&&this._hideToolbar(o)}n&&this._showToolbar(n,e)}_hideToolbar(t){this._balloon.remove(t.view),this.stopListening(this._balloon,"change:visibleView")}_showToolbar(t,e){this._isToolbarVisible(t)?jf(this.editor,e):this._isToolbarInBalloon(t)||(this._balloon.add({view:t.view,position:Ff(this.editor,e),balloonClassName:t.balloonClassName}),this.listenTo(this._balloon,"change:visibleView",(()=>{for(const t of this._toolbarDefinitions.values())if(this._isToolbarVisible(t)){const e=t.getRelatedElement(this.editor.editing.view.document.selection);jf(this.editor,e)}})))}_isToolbarVisible(t){return this._balloon.visibleView===t.view}_isToolbarInBalloon(t){return this._balloon.hasView(t.view)}}function jf(t,e){const n=t.plugins.get("ContextualBalloon"),o=Ff(t,e);n.updatePosition(o)}function Ff(t,e){const n=t.editing.view,o=Rh.defaultPositions;return{target:n.domConverter.mapViewToDom(e),positions:[o.northArrowSouth,o.northArrowSouthWest,o.northArrowSouthEast,o.southArrowNorth,o.southArrowNorthWest,o.southArrowNorthEast,o.viewportStickyNorth]}}var Vf=n(8506),Uf={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Vf.Z,Uf);Vf.Z.locals;class Hf extends U{refresh(){const t=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!t,this.isEnabled&&t.hasAttribute("alt")?this.value=t.getAttribute("alt"):this.value=!1}execute(t){const e=this.editor,n=e.plugins.get("ImageUtils"),o=e.model,i=n.getClosestSelectedImageElement(o.document.selection);o.change((e=>{e.setAttribute("alt",t.newValue,i)}))}}function qf(t){return t.createContainerElement("figure",{class:"image"},[t.createEmptyElement("img"),t.createSlot()])}function Gf(t,e){const n=t.plugins.get("ImageUtils"),o=t.plugins.has("ImageInlineEditing")&&t.plugins.has("ImageBlockEditing");return t=>{if(!n.isInlineImageView(t))return null;if(!o)return i(t);return(t.findAncestor(n.isBlockImageView)?"imageBlock":"imageInline")!==e?null:i(t)};function i(t){const e={name:!0};return t.hasAttribute("src")&&(e.attributes=["src"]),e}}function Wf(t,e){const n=Ca(e.getSelectedBlocks());return!n||t.isObject(n)||n.isEmpty&&"listItem"!=n.name?"imageBlock":"imageInline"}class Yf extends F{static get pluginName(){return"ImageUtils"}isImage(t){return this.isInlineImage(t)||this.isBlockImage(t)}isInlineImageView(t){return!!t&&t.is("element","img")}isBlockImageView(t){return!!t&&t.is("element","figure")&&t.hasClass("image")}insertImage(t={},e=null,n=null){const o=this.editor,i=o.model,r=i.document.selection;n=$f(o,e||r,n),t={...Object.fromEntries(r.getAttributes()),...t};for(const e in t)i.schema.checkAttribute(n,e)||delete t[e];return i.change((o=>{const r=o.createElement(n,t);return i.insertObject(r,e,null,{setSelection:"on",findOptimalPosition:!e&&"imageInline"!=n}),r.parent?r:null}))}getClosestSelectedImageWidget(t){const e=t.getFirstPosition();if(!e)return null;const n=t.getSelectedElement();if(n&&this.isImageWidget(n))return n;let o=e.parent;for(;o;){if(o.is("element")&&this.isImageWidget(o))return o;o=o.parent}return null}getClosestSelectedImageElement(t){const e=t.getSelectedElement();return this.isImage(e)?e:t.getFirstPosition().findAncestor("imageBlock")}isImageAllowed(){const t=this.editor.model.document.selection;return function(t,e){if("imageBlock"==$f(t,e)){const n=function(t,e){const n=dm(t,e).start.parent;if(n.isEmpty&&!n.is("element","$root"))return n.parent;return n}(e,t.model);if(t.model.schema.checkChild(n,"imageBlock"))return!0}else if(t.model.schema.checkChild(e.focus,"imageInline"))return!0;return!1}(this.editor,t)&&function(t){return[...t.focus.getAncestors()].every((t=>!t.is("element","imageBlock")))}(t)}toImageWidget(t,e,n){e.setCustomProperty("image",!0,t);return im(t,e,{label:()=>{const e=this.findViewImgElement(t).getAttribute("alt");return e?`${e} ${n}`:n}})}isImageWidget(t){return!!t.getCustomProperty("image")&&om(t)}isBlockImage(t){return!!t&&t.is("element","imageBlock")}isInlineImage(t){return!!t&&t.is("element","imageInline")}findViewImgElement(t){if(this.isInlineImageView(t))return t;const e=this.editor.editing.view;for(const{item:n}of e.createRangeIn(t))if(this.isInlineImageView(n))return n}}function $f(t,e,n){const o=t.model.schema,i=t.config.get("image.insert.type");return t.plugins.has("ImageBlockEditing")?t.plugins.has("ImageInlineEditing")?n||("inline"===i?"imageInline":"block"===i?"imageBlock":e.is("selection")?Wf(o,e):o.checkChild(e,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}class Kf extends F{static get requires(){return[Yf]}static get pluginName(){return"ImageTextAlternativeEditing"}init(){this.editor.commands.add("imageTextAlternative",new Hf(this.editor))}}var Qf=n(1905),Zf={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Qf.Z,Zf);Qf.Z.locals;var Jf=n(6764),Xf={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Jf.Z,Xf);Jf.Z.locals;class tk extends Mh{constructor(t){super(t);const e=this.locale.t;this.focusTracker=new va,this.keystrokes=new ya,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(e("Save"),Jh.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(e("Cancel"),Jh.cancel,"ck-button-cancel","cancel"),this._focusables=new rh,this._focusCycler=new vu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:[this.labeledInput,this.saveButtonView,this.cancelButtonView]}),tu(this)}render(){super.render(),this.keystrokes.listenTo(this.element),eu({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createButton(t,e,n,o){const i=new cu(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),o&&i.delegate("execute").to(this,o),i}_createLabeledInputView(){const t=this.locale.t,e=new hg(this.locale,ug);return e.label=t("Text alternative"),e}}function ek(t){const e=t.editing.view,n=Rh.defaultPositions,o=t.plugins.get("ImageUtils");return{target:e.domConverter.mapViewToDom(o.getClosestSelectedImageWidget(e.document.selection)),positions:[n.northArrowSouth,n.northArrowSouthWest,n.northArrowSouthEast,n.southArrowNorth,n.southArrowNorthWest,n.southArrowNorthEast,n.viewportStickyNorth]}}class nk extends F{static get requires(){return[Ag]}static get pluginName(){return"ImageTextAlternativeUI"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const t=this.editor,e=t.t;t.ui.componentFactory.add("imageTextAlternative",(n=>{const o=t.commands.get("imageTextAlternative"),i=new cu(n);return i.set({label:e("Change image text alternative"),icon:Jh.lowVision,tooltip:!0}),i.bind("isEnabled").to(o,"isEnabled"),i.bind("isOn").to(o,"value",(t=>!!t)),this.listenTo(i,"execute",(()=>{this._showForm()})),i}))}_createForm(){const t=this.editor,e=t.editing.view.document,n=t.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new tk(t.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{t.execute("imageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this._form.keystrokes.set("Esc",((t,e)=>{this._hideForm(!0),e()})),this.listenTo(t.ui,"update",(()=>{n.getClosestSelectedImageWidget(e.selection)?this._isVisible&&function(t){const e=t.plugins.get("ContextualBalloon");if(t.plugins.get("ImageUtils").getClosestSelectedImageWidget(t.editing.view.document.selection)){const n=ek(t);e.updatePosition(n)}}(t):this._hideForm(!0)})),Xh({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const t=this.editor,e=t.commands.get("imageTextAlternative"),n=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:ek(t)}),n.fieldView.value=n.fieldView.element.value=e.value||"",this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(t){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),t&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class ok extends F{static get requires(){return[Kf,nk]}static get pluginName(){return"ImageTextAlternative"}}function ik(t,e){return t=>{t.on(`attribute:srcset:${e}`,n)};function n(e,n,o){if(!o.consumable.consume(n.item,e.name))return;const i=o.writer,r=o.mapper.toViewElement(n.item),s=t.findViewImgElement(r);if(null===n.attributeNewValue){const t=n.attributeOldValue;t.data&&(i.removeAttribute("srcset",s),i.removeAttribute("sizes",s),t.width&&i.removeAttribute("width",s))}else{const t=n.attributeNewValue;t.data&&(i.setAttribute("srcset",t.data,s),i.setAttribute("sizes","100vw",s),t.width&&i.setAttribute("width",t.width,s))}}}function rk(t,e,n){return t=>{t.on(`attribute:${n}:${e}`,o)};function o(e,n,o){if(!o.consumable.consume(n.item,e.name))return;const i=o.writer,r=o.mapper.toViewElement(n.item),s=t.findViewImgElement(r);i.setAttribute(n.attributeKey,n.attributeNewValue||"",s)}}class sk extends ys{observe(t){this.listenTo(t,"load",((t,e)=>{const n=e.target;this.checkShouldIgnoreEventFromTarget(n)||"IMG"==n.tagName&&this._fireEvents(e)}),{useCapture:!0})}_fireEvents(t){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",t))}}class ak extends U{constructor(t){super(t);const e=t.config.get("image.insert.type");t.plugins.has("ImageBlockEditing")||"block"===e&&l("image-block-plugin-required"),t.plugins.has("ImageInlineEditing")||"inline"===e&&l("image-inline-plugin-required")}refresh(){this.isEnabled=this.editor.plugins.get("ImageUtils").isImageAllowed()}execute(t){const e=bo(t.source),n=this.editor.model.document.selection,o=this.editor.plugins.get("ImageUtils"),i=Object.fromEntries(n.getAttributes());e.forEach(((t,e)=>{const r=n.getSelectedElement();if("string"==typeof t&&(t={src:t}),e&&r&&o.isImage(r)){const e=this.editor.model.createPositionAfter(r);o.insertImage({...t,...i},e)}else o.insertImage({...t,...i})}))}}class ck extends F{static get requires(){return[Yf]}static get pluginName(){return"ImageEditing"}init(){const t=this.editor,e=t.conversion;t.editing.view.addObserver(sk),e.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:{key:"srcset",value:t=>{const e={data:t.getAttribute("srcset")};return t.hasAttribute("width")&&(e.width=t.getAttribute("width")),e}}});const n=new ak(t);t.commands.add("insertImage",n),t.commands.add("imageInsert",n)}}class lk extends U{constructor(t,e){super(t),this._modelElementName=e}refresh(){const t=this.editor.plugins.get("ImageUtils"),e=t.getClosestSelectedImageElement(this.editor.model.document.selection);"imageBlock"===this._modelElementName?this.isEnabled=t.isInlineImage(e):this.isEnabled=t.isBlockImage(e)}execute(){const t=this.editor,e=this.editor.model,n=t.plugins.get("ImageUtils"),o=n.getClosestSelectedImageElement(e.document.selection),i=Object.fromEntries(o.getAttributes());return i.src||i.uploadId?e.change((t=>{const r=Array.from(e.markers).filter((t=>t.getRange().containsItem(o))),s=n.insertImage(i,e.createSelection(o,"on"),this._modelElementName);if(!s)return null;const a=t.createRangeOn(s);for(const e of r){const n=e.getRange(),o="$graveyard"!=n.root.rootName?n.getJoined(a,!0):a;t.updateMarker(e,{range:o})}return{oldElement:o,newElement:s}})):null}}class dk extends F{static get requires(){return[ck,Yf,zg]}static get pluginName(){return"ImageBlockEditing"}init(){const t=this.editor;t.model.schema.register("imageBlock",{inheritAllFrom:"$blockObject",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),t.plugins.has("ImageInlineEditing")&&(t.commands.add("imageTypeBlock",new lk(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const t=this.editor,e=t.t,n=t.conversion,o=t.plugins.get("ImageUtils");n.for("dataDowncast").elementToStructure({model:"imageBlock",view:(t,{writer:e})=>qf(e)}),n.for("editingDowncast").elementToStructure({model:"imageBlock",view:(t,{writer:n})=>o.toImageWidget(qf(n),n,e("image widget"))}),n.for("downcast").add(rk(o,"imageBlock","src")).add(rk(o,"imageBlock","alt")).add(ik(o,"imageBlock")),n.for("upcast").elementToElement({view:Gf(t,"imageBlock"),model:(t,{writer:e})=>e.createElement("imageBlock",t.hasAttribute("src")?{src:t.getAttribute("src")}:null)}).add(function(t){return t=>{t.on("element:figure",e)};function e(e,n,o){if(!o.consumable.test(n.viewItem,{name:!0,classes:"image"}))return;const i=t.findViewImgElement(n.viewItem);if(!i||!o.consumable.test(i,{name:!0}))return;o.consumable.consume(n.viewItem,{name:!0,classes:"image"});const r=Ca(o.convertItem(i,n.modelCursor).modelRange.getItems());r?(o.convertChildren(n.viewItem,r),o.updateConversionResult(r,n)):o.consumable.revert(n.viewItem,{name:!0,classes:"image"})}}(o))}_setupClipboardIntegration(){const t=this.editor,e=t.model,n=t.editing.view,o=t.plugins.get("ImageUtils");this.listenTo(t.plugins.get("ClipboardPipeline"),"inputTransformation",((i,r)=>{const s=Array.from(r.content.getChildren());let a;if(!s.every(o.isInlineImageView))return;a=r.targetRanges?t.editing.mapper.toModelRange(r.targetRanges[0]):e.document.selection.getFirstRange();const c=e.createSelection(a);if("imageBlock"===Wf(e.schema,c)){const t=new Wd(n.document),e=s.map((e=>t.createElement("figure",{class:"image"},e)));r.content=t.createDocumentFragment(e)}}))}}var hk=n(3508),uk={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(hk.Z,uk);hk.Z.locals;class gk extends F{static get requires(){return[dk,Em,ok]}static get pluginName(){return"ImageBlock"}}class mk extends F{static get requires(){return[ck,Yf,zg]}static get pluginName(){return"ImageInlineEditing"}init(){const t=this.editor,e=t.model.schema;e.register("imageInline",{inheritAllFrom:"$inlineObject",allowAttributes:["alt","src","srcset"]}),e.addChildCheck(((t,e)=>{if(t.endsWith("caption")&&"imageInline"===e.name)return!1})),this._setupConversion(),t.plugins.has("ImageBlockEditing")&&(t.commands.add("imageTypeInline",new lk(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const t=this.editor,e=t.t,n=t.conversion,o=t.plugins.get("ImageUtils");n.for("dataDowncast").elementToElement({model:"imageInline",view:(t,{writer:e})=>e.createEmptyElement("img")}),n.for("editingDowncast").elementToStructure({model:"imageInline",view:(t,{writer:n})=>o.toImageWidget(function(t){return t.createContainerElement("span",{class:"image-inline"},t.createEmptyElement("img"))}(n),n,e("image widget"))}),n.for("downcast").add(rk(o,"imageInline","src")).add(rk(o,"imageInline","alt")).add(ik(o,"imageInline")),n.for("upcast").elementToElement({view:Gf(t,"imageInline"),model:(t,{writer:e})=>e.createElement("imageInline",t.hasAttribute("src")?{src:t.getAttribute("src")}:null)})}_setupClipboardIntegration(){const t=this.editor,e=t.model,n=t.editing.view,o=t.plugins.get("ImageUtils");this.listenTo(t.plugins.get("ClipboardPipeline"),"inputTransformation",((i,r)=>{const s=Array.from(r.content.getChildren());let a;if(!s.every(o.isBlockImageView))return;a=r.targetRanges?t.editing.mapper.toModelRange(r.targetRanges[0]):e.document.selection.getFirstRange();const c=e.createSelection(a);if("imageInline"===Wf(e.schema,c)){const t=new Wd(n.document),e=s.map((e=>1===e.childCount?(Array.from(e.getAttributes()).forEach((n=>t.setAttribute(...n,o.findViewImgElement(e)))),e.getChild(0)):e));r.content=t.createDocumentFragment(e)}}))}}class pk extends F{static get requires(){return[mk,Em,ok]}static get pluginName(){return"ImageInline"}}class fk extends U{refresh(){const t=this.editor,e=t.plugins.get("ImageCaptionUtils");if(!t.plugins.has(dk))return this.isEnabled=!1,void(this.value=!1);const n=t.model.document.selection,o=n.getSelectedElement();if(!o){const t=e.getCaptionFromModelSelection(n);return this.isEnabled=!!t,void(this.value=!!t)}this.isEnabled=this.editor.plugins.get("ImageUtils").isImage(o),this.isEnabled?this.value=!!e.getCaptionFromImageModelElement(o):this.value=!1}execute(t={}){const{focusCaptionOnShow:e}=t;this.editor.model.change((t=>{this.value?this._hideImageCaption(t):this._showImageCaption(t,e)}))}_showImageCaption(t,e){const n=this.editor.model.document.selection,o=this.editor.plugins.get("ImageCaptionEditing");let i=n.getSelectedElement();const r=o._getSavedCaption(i);this.editor.plugins.get("ImageUtils").isInlineImage(i)&&(this.editor.execute("imageTypeBlock"),i=n.getSelectedElement());const s=r||t.createElement("caption");t.append(s,i),e&&t.setSelection(s,"in")}_hideImageCaption(t){const e=this.editor,n=e.model.document.selection,o=e.plugins.get("ImageCaptionEditing"),i=e.plugins.get("ImageCaptionUtils");let r,s=n.getSelectedElement();s?r=i.getCaptionFromImageModelElement(s):(r=i.getCaptionFromModelSelection(n),s=r.parent),o._saveCaption(s,r),t.setSelection(s,"on"),t.remove(r)}}class kk extends F{static get pluginName(){return"ImageCaptionUtils"}static get requires(){return[Yf]}getCaptionFromImageModelElement(t){for(const e of t.getChildren())if(e&&e.is("element","caption"))return e;return null}getCaptionFromModelSelection(t){const e=this.editor.plugins.get("ImageUtils"),n=t.getFirstPosition().findAncestor("caption");return n&&e.isBlockImage(n.parent)?n:null}matchImageCaptionViewElement(t){const e=this.editor.plugins.get("ImageUtils");return"figcaption"==t.name&&e.isBlockImageView(t.parent)?{name:!0}:null}}class bk extends F{static get requires(){return[Yf,kk]}static get pluginName(){return"ImageCaptionEditing"}constructor(t){super(t),this._savedCaptionsMap=new WeakMap}init(){const t=this.editor,e=t.model.schema;e.isRegistered("caption")?e.extend("caption",{allowIn:"imageBlock"}):e.register("caption",{allowIn:"imageBlock",allowContentOf:"$block",isLimit:!0}),t.commands.add("toggleImageCaption",new fk(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration(),this._registerCaptionReconversion()}_setupConversion(){const t=this.editor,e=t.editing.view,n=t.plugins.get("ImageUtils"),o=t.plugins.get("ImageCaptionUtils"),i=t.t;t.conversion.for("upcast").elementToElement({view:t=>o.matchImageCaptionViewElement(t),model:"caption"}),t.conversion.for("dataDowncast").elementToElement({model:"caption",view:(t,{writer:e})=>n.isBlockImage(t.parent)?e.createContainerElement("figcaption"):null}),t.conversion.for("editingDowncast").elementToElement({model:"caption",view:(t,{writer:o})=>{if(!n.isBlockImage(t.parent))return null;const r=o.createEditableElement("figcaption");o.setCustomProperty("imageCaption",!0,r),Id({view:e,element:r,text:i("Enter image caption"),keepOnFocus:!0});const s=t.parent.getAttribute("alt");return lm(r,o,{label:s?i("Caption for image: %0",[s]):i("Caption for the image")})}})}_setupImageTypeCommandsIntegration(){const t=this.editor,e=t.plugins.get("ImageUtils"),n=t.plugins.get("ImageCaptionUtils"),o=t.commands.get("imageTypeInline"),i=t.commands.get("imageTypeBlock"),r=t=>{if(!t.return)return;const{oldElement:o,newElement:i}=t.return;if(!o)return;if(e.isBlockImage(o)){const t=n.getCaptionFromImageModelElement(o);if(t)return void this._saveCaption(i,t)}const r=this._getSavedCaption(o);r&&this._saveCaption(i,r)};o&&this.listenTo(o,"execute",r,{priority:"low"}),i&&this.listenTo(i,"execute",r,{priority:"low"})}_getSavedCaption(t){const e=this._savedCaptionsMap.get(t);return e?Ka.fromJSON(e):null}_saveCaption(t,e){this._savedCaptionsMap.set(t,e.toJSON())}_registerCaptionReconversion(){const t=this.editor,e=t.model,n=t.plugins.get("ImageUtils"),o=t.plugins.get("ImageCaptionUtils");e.document.on("change:data",(()=>{const i=e.document.differ.getChanges();for(const e of i){if("alt"!==e.attributeKey)continue;const i=e.range.start.nodeAfter;if(n.isBlockImage(i)){const e=o.getCaptionFromImageModelElement(i);if(!e)return;t.editing.reconvertItem(e)}}}))}}class wk extends F{static get requires(){return[kk]}static get pluginName(){return"ImageCaptionUI"}init(){const t=this.editor,e=t.editing.view,n=t.plugins.get("ImageCaptionUtils"),o=t.t;t.ui.componentFactory.add("toggleImageCaption",(i=>{const r=t.commands.get("toggleImageCaption"),s=new cu(i);return s.set({icon:Jh.caption,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.bind("label").to(r,"value",(t=>o(t?"Toggle caption off":"Toggle caption on"))),this.listenTo(s,"execute",(()=>{t.execute("toggleImageCaption",{focusCaptionOnShow:!0});const o=n.getCaptionFromModelSelection(t.model.document.selection);if(o){const n=t.editing.mapper.toViewElement(o);e.scrollToTheSelection(),e.change((t=>{t.addClass("image__caption_highlighted",n)}))}t.editing.view.focus()})),s}))}}var Ak=n(2640),_k={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Ak.Z,_k);Ak.Z.locals;class Ck extends U{constructor(t,e){super(t),this._defaultStyles={imageBlock:!1,imageInline:!1},this._styles=new Map(e.map((t=>{if(t.isDefault)for(const e of t.modelElements)this._defaultStyles[e]=t.name;return[t.name,t]})))}refresh(){const t=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!t,this.isEnabled?t.hasAttribute("imageStyle")?this.value=t.getAttribute("imageStyle"):this.value=this._defaultStyles[t.name]:this.value=!1}execute(t={}){const e=this.editor,n=e.model,o=e.plugins.get("ImageUtils");n.change((e=>{const i=t.value;let r=o.getClosestSelectedImageElement(n.document.selection);i&&this.shouldConvertImageType(i,r)&&(this.editor.execute(o.isBlockImage(r)?"imageTypeInline":"imageTypeBlock"),r=o.getClosestSelectedImageElement(n.document.selection)),!i||this._styles.get(i).isDefault?e.removeAttribute("imageStyle",r):e.setAttribute("imageStyle",i,r)}))}shouldConvertImageType(t,e){return!this._styles.get(t).modelElements.includes(e.name)}}const{objectFullWidth:vk,objectInline:yk,objectLeft:xk,objectRight:Ek,objectCenter:Dk,objectBlockLeft:Ik,objectBlockRight:Mk}=Jh,Tk={get inline(){return{name:"inline",title:"In line",icon:yk,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:xk,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:Ik,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:Dk,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:Ek,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:Mk,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:Dk,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:Ek,modelElements:["imageBlock"],className:"image-style-side"}}},Sk={full:vk,left:Ik,right:Mk,center:Dk,inlineLeft:xk,inlineRight:Ek,inline:yk},Nk=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function Bk(t){l("image-style-configuration-definition-invalid",t)}const Pk={normalizeStyles:function(t){return(t.configuredStyles.options||[]).map((t=>function(t){t="string"==typeof t?Tk[t]?{...Tk[t]}:{name:t}:function(t,e){const n={...e};for(const o in t)Object.prototype.hasOwnProperty.call(e,o)||(n[o]=t[o]);return n}(Tk[t.name],t);"string"==typeof t.icon&&(t.icon=Sk[t.icon]||t.icon);return t}(t))).filter((e=>function(t,{isBlockPluginLoaded:e,isInlinePluginLoaded:n}){const{modelElements:o,name:i}=t;if(!(o&&o.length&&i))return Bk({style:t}),!1;{const i=[e?"imageBlock":null,n?"imageInline":null];if(!o.some((t=>i.includes(t))))return l("image-style-missing-dependency",{style:t,missingPlugins:o.map((t=>"imageBlock"===t?"ImageBlockEditing":"ImageInlineEditing"))}),!1}return!0}(e,t)))},getDefaultStylesConfiguration:function(t,e){return t&&e?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:t?{options:["block","side"]}:e?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(t){return t.has("ImageBlockEditing")&&t.has("ImageInlineEditing")?[...Nk]:[]},warnInvalidStyle:Bk,DEFAULT_OPTIONS:Tk,DEFAULT_ICONS:Sk,DEFAULT_DROPDOWN_DEFINITIONS:Nk};function zk(t,e){for(const n of e)if(n.name===t)return n}class Lk extends F{static get pluginName(){return"ImageStyleEditing"}static get requires(){return[Yf]}init(){const{normalizeStyles:t,getDefaultStylesConfiguration:e}=Pk,n=this.editor,o=n.plugins.has("ImageBlockEditing"),i=n.plugins.has("ImageInlineEditing");n.config.define("image.styles",e(o,i)),this.normalizedStyles=t({configuredStyles:n.config.get("image.styles"),isBlockPluginLoaded:o,isInlinePluginLoaded:i}),this._setupConversion(o,i),this._setupPostFixer(),n.commands.add("imageStyle",new Ck(n,this.normalizedStyles))}_setupConversion(t,e){const n=this.editor,o=n.model.schema,i=(r=this.normalizedStyles,(t,e,n)=>{if(!n.consumable.consume(e.item,t.name))return;const o=zk(e.attributeNewValue,r),i=zk(e.attributeOldValue,r),s=n.mapper.toViewElement(e.item),a=n.writer;i&&a.removeClass(i.className,s),o&&a.addClass(o.className,s)});var r;const s=function(t){const e={imageInline:t.filter((t=>!t.isDefault&&t.modelElements.includes("imageInline"))),imageBlock:t.filter((t=>!t.isDefault&&t.modelElements.includes("imageBlock")))};return(t,n,o)=>{if(!n.modelRange)return;const i=n.viewItem,r=Ca(n.modelRange.getItems());if(r&&o.schema.checkAttribute(r,"imageStyle"))for(const t of e[r.name])o.consumable.consume(i,{classes:t.className})&&o.writer.setAttribute("imageStyle",t.name,r)}}(this.normalizedStyles);n.editing.downcastDispatcher.on("attribute:imageStyle",i),n.data.downcastDispatcher.on("attribute:imageStyle",i),t&&(o.extend("imageBlock",{allowAttributes:"imageStyle"}),n.data.upcastDispatcher.on("element:figure",s,{priority:"low"})),e&&(o.extend("imageInline",{allowAttributes:"imageStyle"}),n.data.upcastDispatcher.on("element:img",s,{priority:"low"}))}_setupPostFixer(){const t=this.editor,e=t.model.document,n=t.plugins.get(Yf),o=new Map(this.normalizedStyles.map((t=>[t.name,t])));e.registerPostFixer((t=>{let i=!1;for(const r of e.differ.getChanges())if("insert"==r.type||"attribute"==r.type&&"imageStyle"==r.attributeKey){let e="insert"==r.type?r.position.nodeAfter:r.range.start.nodeAfter;if(e&&e.is("element","paragraph")&&e.childCount>0&&(e=e.getChild(0)),!n.isImage(e))continue;const s=e.getAttribute("imageStyle");if(!s)continue;const a=o.get(s);a&&a.modelElements.includes(e.name)||(t.removeAttribute("imageStyle",e),i=!0)}return i}))}}var Ok=n(5083),Rk={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Ok.Z,Rk);Ok.Z.locals;class jk extends F{static get requires(){return[Lk]}static get pluginName(){return"ImageStyleUI"}get localizedDefaultStylesTitles(){const t=this.editor.t;return{"Wrap text":t("Wrap text"),"Break text":t("Break text"),"In line":t("In line"),"Full size image":t("Full size image"),"Side image":t("Side image"),"Left aligned image":t("Left aligned image"),"Centered image":t("Centered image"),"Right aligned image":t("Right aligned image")}}init(){const t=this.editor.plugins,e=this.editor.config.get("image.toolbar")||[],n=Fk(t.get("ImageStyleEditing").normalizedStyles,this.localizedDefaultStylesTitles);for(const t of n)this._createButton(t);const o=Fk([...e.filter(D),...Pk.getDefaultDropdownDefinitions(t)],this.localizedDefaultStylesTitles);for(const t of o)this._createDropdown(t,n)}_createDropdown(t,e){const n=this.editor.ui.componentFactory;n.add(t.name,(o=>{let i;const{defaultItem:r,items:s,title:a}=t,c=s.filter((t=>e.find((({name:e})=>Vk(e)===t)))).map((t=>{const e=n.create(t);return t===r&&(i=e),e}));s.length!==c.length&&Pk.warnInvalidStyle({dropdown:t});const l=Gu(o,bu),d=l.buttonView,h=d.arrowView;return Wu(l,c,{enableActiveItemFocusOnDropdownOpen:!0}),d.set({label:Uk(a,i.label),class:null,tooltip:!0}),h.unbind("label"),h.set({label:a}),d.bind("icon").toMany(c,"isOn",((...t)=>{const e=t.findIndex(mi);return e<0?i.icon:c[e].icon})),d.bind("label").toMany(c,"isOn",((...t)=>{const e=t.findIndex(mi);return Uk(a,e<0?i.label:c[e].label)})),d.bind("isOn").toMany(c,"isOn",((...t)=>t.some(mi))),d.bind("class").toMany(c,"isOn",((...t)=>t.some(mi)?"ck-splitbutton_flatten":null)),d.on("execute",(()=>{c.some((({isOn:t})=>t))?l.isOpen=!l.isOpen:i.fire("execute")})),l.bind("isEnabled").toMany(c,"isEnabled",((...t)=>t.some(mi))),this.listenTo(l,"execute",(()=>{this.editor.editing.view.focus()})),l}))}_createButton(t){const e=t.name;this.editor.ui.componentFactory.add(Vk(e),(n=>{const o=this.editor.commands.get("imageStyle"),i=new cu(n);return i.set({label:t.title,icon:t.icon,tooltip:!0,isToggleable:!0}),i.bind("isEnabled").to(o,"isEnabled"),i.bind("isOn").to(o,"value",(t=>t===e)),i.on("execute",this._executeCommand.bind(this,e)),i}))}_executeCommand(t){this.editor.execute("imageStyle",{value:t}),this.editor.editing.view.focus()}}function Fk(t,e){for(const n of t)e[n.title]&&(n.title=e[n.title]);return t}function Vk(t){return`imageStyle:${t}`}function Uk(t,e){return(t?t+": ":"")+e}function Hk(t){const e=t.map((t=>t.replace("+","\\+")));return new RegExp(`^image\\/(${e.join("|")})$`)}function qk(t){return new Promise(((e,n)=>{const o=t.getAttribute("src");fetch(o).then((t=>t.blob())).then((t=>{const n=Gk(t,o),i=n.replace("image/",""),r=new File([t],`image.${i}`,{type:n});e(r)})).catch((t=>t&&"TypeError"===t.name?function(t){return function(t){return new Promise(((e,n)=>{const o=Ao.document.createElement("img");o.addEventListener("load",(()=>{const t=Ao.document.createElement("canvas");t.width=o.width,t.height=o.height;t.getContext("2d").drawImage(o,0,0),t.toBlob((t=>t?e(t):n()))})),o.addEventListener("error",(()=>n())),o.src=t}))}(t).then((e=>{const n=Gk(e,t),o=n.replace("image/","");return new File([e],`image.${o}`,{type:n})}))}(o).then(e).catch(n):n(t)))}))}function Gk(t,e){return t.type?t.type:e.match(/data:(image\/\w+);base64/)?e.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}class Wk extends F{static get pluginName(){return"ImageUploadUI"}init(){const t=this.editor,e=t.t,n=n=>{const o=new Np(n),i=t.commands.get("uploadImage"),r=t.config.get("image.upload.types"),s=Hk(r);return o.set({acceptedType:r.map((t=>`image/${t}`)).join(","),allowMultipleFiles:!0}),o.buttonView.set({label:e("Insert image"),icon:Jh.image,tooltip:!0}),o.buttonView.bind("isEnabled").to(i),o.on("done",((e,n)=>{const o=Array.from(n).filter((t=>s.test(t.type)));o.length&&(t.execute("uploadImage",{file:o}),t.editing.view.focus())})),o};t.ui.componentFactory.add("uploadImage",n),t.ui.componentFactory.add("imageUpload",n)}}var Yk=n(3689),$k={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Yk.Z,$k);Yk.Z.locals;var Kk=n(4036),Qk={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Kk.Z,Qk);Kk.Z.locals;var Zk=n(3773),Jk={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Zk.Z,Jk);Zk.Z.locals;class Xk extends F{static get pluginName(){return"ImageUploadProgress"}constructor(t){super(t),this.placeholder="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}init(){const t=this.editor;t.plugins.has("ImageBlockEditing")&&t.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",((...t)=>this.uploadStatusChange(...t))),t.plugins.has("ImageInlineEditing")&&t.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",((...t)=>this.uploadStatusChange(...t)))}uploadStatusChange(t,e,n){const o=this.editor,i=e.item,r=i.getAttribute("uploadId");if(!n.consumable.consume(e.item,t.name))return;const s=o.plugins.get("ImageUtils"),a=o.plugins.get(Tp),c=r?e.attributeNewValue:null,l=this.placeholder,d=o.editing.mapper.toViewElement(i),h=n.writer;if("reading"==c)return tb(d,h),void eb(s,l,d,h);if("uploading"==c){const t=a.loaders.get(r);return tb(d,h),void(t?(nb(d,h),function(t,e,n,o){const i=function(t){const e=t.createUIElement("div",{class:"ck-progress-bar"});return t.setCustomProperty("progressBar",!0,e),e}(e);e.insert(e.createPositionAt(t,"end"),i),n.on("change:uploadedPercent",((t,e,n)=>{o.change((t=>{t.setStyle("width",n+"%",i)}))}))}(d,h,t,o.editing.view),function(t,e,n,o){if(o.data){const i=t.findViewImgElement(e);n.setAttribute("src",o.data,i)}}(s,d,h,t)):eb(s,l,d,h))}"complete"==c&&a.loaders.get(r)&&function(t,e,n){const o=e.createUIElement("div",{class:"ck-image-upload-complete-icon"});e.insert(e.createPositionAt(t,"end"),o),setTimeout((()=>{n.change((t=>t.remove(t.createRangeOn(o))))}),3e3)}(d,h,o.editing.view),function(t,e){ib(t,e,"progressBar")}(d,h),nb(d,h),function(t,e){e.removeClass("ck-appear",t)}(d,h)}}function tb(t,e){t.hasClass("ck-appear")||e.addClass("ck-appear",t)}function eb(t,e,n,o){n.hasClass("ck-image-upload-placeholder")||o.addClass("ck-image-upload-placeholder",n);const i=t.findViewImgElement(n);i.getAttribute("src")!==e&&o.setAttribute("src",e,i),ob(n,"placeholder")||o.insert(o.createPositionAfter(i),function(t){const e=t.createUIElement("div",{class:"ck-upload-placeholder-loader"});return t.setCustomProperty("placeholder",!0,e),e}(o))}function nb(t,e){t.hasClass("ck-image-upload-placeholder")&&e.removeClass("ck-image-upload-placeholder",t),ib(t,e,"placeholder")}function ob(t,e){for(const n of t.getChildren())if(n.getCustomProperty(e))return n}function ib(t,e,n){const o=ob(t,n);o&&e.remove(e.createRangeOn(o))}class rb extends U{refresh(){const t=this.editor,e=t.plugins.get("ImageUtils"),n=t.model.document.selection.getSelectedElement();this.isEnabled=e.isImageAllowed()||e.isImage(n)}execute(t){const e=bo(t.file),n=this.editor.model.document.selection,o=this.editor.plugins.get("ImageUtils"),i=Object.fromEntries(n.getAttributes());e.forEach(((t,e)=>{const r=n.getSelectedElement();if(e&&r&&o.isImage(r)){const e=this.editor.model.createPositionAfter(r);this._uploadImage(t,i,e)}else this._uploadImage(t,i)}))}_uploadImage(t,e,n){const o=this.editor,i=o.plugins.get(Tp).createLoader(t),r=o.plugins.get("ImageUtils");i&&r.insertImage({...e,uploadId:i.id},n)}}class sb extends F{static get requires(){return[Tp,gg,zg,Yf]}static get pluginName(){return"ImageUploadEditing"}constructor(t){super(t),t.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),this._uploadImageElements=new Map}init(){const t=this.editor,e=t.model.document,n=t.conversion,o=t.plugins.get(Tp),i=t.plugins.get("ImageUtils"),r=Hk(t.config.get("image.upload.types")),s=new rb(t);t.commands.add("uploadImage",s),t.commands.add("imageUpload",s),n.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}),this.listenTo(t.editing.view.document,"clipboardInput",((e,n)=>{if(o=n.dataTransfer,Array.from(o.types).includes("text/html")&&""!==o.getData("text/html"))return;var o;const i=Array.from(n.dataTransfer.files).filter((t=>!!t&&r.test(t.type)));i.length&&(e.stop(),t.model.change((e=>{n.targetRanges&&e.setSelection(n.targetRanges.map((e=>t.editing.mapper.toModelRange(e)))),t.model.enqueueChange((()=>{t.execute("uploadImage",{file:i})}))})))})),this.listenTo(t.plugins.get("ClipboardPipeline"),"inputTransformation",((e,n)=>{const r=Array.from(t.editing.view.createRangeIn(n.content)).filter((t=>function(t,e){return!(!t.isInlineImageView(e)||!e.getAttribute("src"))&&(e.getAttribute("src").match(/^data:image\/\w+;base64,/g)||e.getAttribute("src").match(/^blob:/g))}(i,t.item)&&!t.item.getAttribute("uploadProcessed"))).map((t=>({promise:qk(t.item),imageElement:t.item})));if(!r.length)return;const s=new Wd(t.editing.view.document);for(const t of r){s.setAttribute("uploadProcessed",!0,t.imageElement);const e=o.createLoader(t.promise);e&&(s.setAttribute("src","",t.imageElement),s.setAttribute("uploadId",e.id,t.imageElement))}})),t.editing.view.document.on("dragover",((t,e)=>{e.preventDefault()})),e.on("change",(()=>{const n=e.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),i=new Set;for(const e of n)if("insert"==e.type&&"$text"!=e.name){const n=e.position.nodeAfter,r="$graveyard"==e.position.root.rootName;for(const e of ab(t,n)){const t=e.getAttribute("uploadId");if(!t)continue;const n=o.loaders.get(t);n&&(r?i.has(t)||n.abort():(i.add(t),this._uploadImageElements.set(t,e),"idle"==n.status&&this._readAndUpload(n)))}}})),this.on("uploadComplete",((t,{imageElement:e,data:n})=>{const o=n.urls?n.urls:n;this.editor.model.change((t=>{t.setAttribute("src",o.default,e),this._parseAndSetSrcsetAttributeOnImage(o,e,t)}))}),{priority:"low"})}afterInit(){const t=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&t.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this.editor.plugins.has("ImageInlineEditing")&&t.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]})}_readAndUpload(t){const e=this.editor,n=e.model,o=e.locale.t,i=e.plugins.get(Tp),r=e.plugins.get(gg),s=e.plugins.get("ImageUtils"),a=this._uploadImageElements;return n.enqueueChange({isUndoable:!1},(e=>{e.setAttribute("uploadStatus","reading",a.get(t.id))})),t.read().then((()=>{const o=t.upload(),i=a.get(t.id);if(cr.isSafari){const t=e.editing.mapper.toViewElement(i),n=s.findViewImgElement(t);e.editing.view.once("render",(()=>{if(!n.parent)return;const t=e.editing.view.domConverter.mapViewToDom(n.parent);if(!t)return;const o=t.style.display;t.style.display="none",t._ckHack=t.offsetHeight,t.style.display=o}))}return n.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("uploadStatus","uploading",i)})),o})).then((e=>{n.enqueueChange({isUndoable:!1},(n=>{const o=a.get(t.id);n.setAttribute("uploadStatus","complete",o),this.fire("uploadComplete",{data:e,imageElement:o})})),c()})).catch((e=>{if("error"!==t.status&&"aborted"!==t.status)throw e;"error"==t.status&&e&&r.showWarning(e,{title:o("Upload failed"),namespace:"upload"}),n.enqueueChange({isUndoable:!1},(e=>{e.remove(a.get(t.id))})),c()}));function c(){n.enqueueChange({isUndoable:!1},(e=>{const n=a.get(t.id);e.removeAttribute("uploadId",n),e.removeAttribute("uploadStatus",n),a.delete(t.id)})),i.destroyLoader(t)}}_parseAndSetSrcsetAttributeOnImage(t,e,n){let o=0;const i=Object.keys(t).filter((t=>{const e=parseInt(t,10);if(!isNaN(e))return o=Math.max(o,e),!0})).map((e=>`${t[e]} ${e}w`)).join(", ");""!=i&&n.setAttribute("srcset",{data:i,width:o},e)}}function ab(t,e){const n=t.plugins.get("ImageUtils");return Array.from(t.model.createRangeOn(e)).filter((t=>n.isImage(t.item))).map((t=>t.item))}class cb extends F{static get pluginName(){return"IndentEditing"}init(){const t=this.editor;t.commands.add("indent",new q(t)),t.commands.add("outdent",new q(t))}}const lb='',db='';class hb extends F{static get pluginName(){return"IndentUI"}init(){const t=this.editor,e=t.locale,n=t.t,o="ltr"==e.uiLanguageDirection?lb:db,i="ltr"==e.uiLanguageDirection?db:lb;this._defineButton("indent",n("Increase indent"),o),this._defineButton("outdent",n("Decrease indent"),i)}_defineButton(t,e,n){const o=this.editor;o.ui.componentFactory.add(t,(i=>{const r=o.commands.get(t),s=new cu(i);return s.set({label:e,icon:n,tooltip:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),this.listenTo(s,"execute",(()=>{o.execute(t),o.editing.view.focus()})),s}))}}class ub{constructor(){this._definitions=new Set}get length(){return this._definitions.size}add(t){Array.isArray(t)?t.forEach((t=>this._definitions.add(t))):this._definitions.add(t)}getDispatcher(){return t=>{t.on("attribute:linkHref",((t,e,n)=>{if(!n.consumable.test(e.item,"attribute:linkHref"))return;if(!e.item.is("selection")&&!n.schema.isInline(e.item))return;const o=n.writer,i=o.document.selection;for(const t of this._definitions){const r=o.createAttributeElement("a",t.attributes,{priority:5});t.classes&&o.addClass(t.classes,r);for(const e in t.styles)o.setStyle(e,t.styles[e],r);o.setCustomProperty("link",!0,r),t.callback(e.attributeNewValue)?e.item.is("selection")?o.wrap(i.getFirstRange(),r):o.wrap(n.mapper.toViewRange(e.range),r):o.unwrap(n.mapper.toViewRange(e.range),r)}}),{priority:"high"})}}getDispatcherForLinkedImage(){return t=>{t.on("attribute:linkHref:imageBlock",((t,e,{writer:n,mapper:o})=>{const i=o.toViewElement(e.item),r=Array.from(i.getChildren()).find((t=>"a"===t.name));for(const t of this._definitions){const o=Bo(t.attributes);if(t.callback(e.attributeNewValue)){for(const[t,e]of o)"class"===t?n.addClass(e,r):n.setAttribute(t,e,r);t.classes&&n.addClass(t.classes,r);for(const e in t.styles)n.setStyle(e,t.styles[e],r)}else{for(const[t,e]of o)"class"===t?n.removeClass(e,r):n.removeAttribute(t,r);t.classes&&n.removeClass(t.classes,r);for(const e in t.styles)n.removeStyle(e,r)}}}))}}}const gb=function(t,e,n){var o=t.length;return n=void 0===n?o:n,!e&&n>=o?t:ni(t,e,n)};var mb=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");const pb=function(t){return mb.test(t)};const fb=function(t){return t.split("")};var kb="[\\ud800-\\udfff]",bb="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",wb="\\ud83c[\\udffb-\\udfff]",Ab="[^\\ud800-\\udfff]",_b="(?:\\ud83c[\\udde6-\\uddff]){2}",Cb="[\\ud800-\\udbff][\\udc00-\\udfff]",vb="(?:"+bb+"|"+wb+")"+"?",yb="[\\ufe0e\\ufe0f]?",xb=yb+vb+("(?:\\u200d(?:"+[Ab,_b,Cb].join("|")+")"+yb+vb+")*"),Eb="(?:"+[Ab+bb+"?",bb,_b,Cb,kb].join("|")+")",Db=RegExp(wb+"(?="+wb+")|"+Eb+xb,"g");const Ib=function(t){return t.match(Db)||[]};const Mb=function(t){return pb(t)?Ib(t):fb(t)};const Tb=function(t){return function(e){e=Zo(e);var n=pb(e)?Mb(e):void 0,o=n?n[0]:e.charAt(0),i=n?gb(n,1).join(""):e.slice(1);return o[t]()+i}}("toUpperCase"),Sb=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Nb=/^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i,Bb=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,Pb=/^((\w+:(\/{2,})?)|(\W))/i,zb="Ctrl+K";function Lb(t,{writer:e}){const n=e.createAttributeElement("a",{href:t},{priority:5});return e.setCustomProperty("link",!0,n),n}function Ob(t){return function(t){return t.replace(Sb,"").match(Nb)}(t=String(t))?t:"#"}function Rb(t,e){return!!t&&e.checkAttribute(t.name,"linkHref")}function jb(t,e){const n=(o=t,Bb.test(o)?"mailto:":e);var o;const i=!!n&&!Fb(t);return t&&i?n+t:t}function Fb(t){return Pb.test(t)}function Vb(t){window.open(t,"_blank","noopener")}class Ub extends U{constructor(t){super(t),this.manualDecorators=new fo,this.automaticDecorators=new ub}restoreManualDecoratorStates(){for(const t of this.manualDecorators)t.value=this._getDecoratorStateFromModel(t.id)}refresh(){const t=this.editor.model,e=t.document.selection,n=e.getSelectedElement()||Ca(e.getSelectedBlocks());Rb(n,t.schema)?(this.value=n.getAttribute("linkHref"),this.isEnabled=t.schema.checkAttribute(n,"linkHref")):(this.value=e.getAttribute("linkHref"),this.isEnabled=t.schema.checkAttributeInSelection(e,"linkHref"));for(const t of this.manualDecorators)t.value=this._getDecoratorStateFromModel(t.id)}execute(t,e={}){const n=this.editor.model,o=n.document.selection,i=[],r=[];for(const t in e)e[t]?i.push(t):r.push(t);n.change((e=>{if(o.isCollapsed){const s=o.getFirstPosition();if(o.hasAttribute("linkHref")){const a=kp(s,"linkHref",o.getAttribute("linkHref"),n);e.setAttribute("linkHref",t,a),i.forEach((t=>{e.setAttribute(t,!0,a)})),r.forEach((t=>{e.removeAttribute(t,a)})),e.setSelection(e.createPositionAfter(a.end.nodeBefore))}else if(""!==t){const r=Bo(o.getAttributes());r.set("linkHref",t),i.forEach((t=>{r.set(t,!0)}));const{end:a}=n.insertContent(e.createText(t,r),s);e.setSelection(a)}["linkHref",...i,...r].forEach((t=>{e.removeSelectionAttribute(t)}))}else{const s=n.schema.getValidRanges(o.getRanges(),"linkHref"),a=[];for(const t of o.getSelectedBlocks())n.schema.checkAttribute(t,"linkHref")&&a.push(e.createRangeOn(t));const c=a.slice();for(const t of s)this._isRangeToUpdate(t,a)&&c.push(t);for(const n of c)e.setAttribute("linkHref",t,n),i.forEach((t=>{e.setAttribute(t,!0,n)})),r.forEach((t=>{e.removeAttribute(t,n)}))}}))}_getDecoratorStateFromModel(t){const e=this.editor.model,n=e.document.selection,o=n.getSelectedElement();return Rb(o,e.schema)?o.getAttribute(t):n.getAttribute(t)}_isRangeToUpdate(t,e){for(const n of e)if(n.containsRange(t))return!1;return!0}}class Hb extends U{refresh(){const t=this.editor.model,e=t.document.selection,n=e.getSelectedElement();Rb(n,t.schema)?this.isEnabled=t.schema.checkAttribute(n,"linkHref"):this.isEnabled=t.schema.checkAttributeInSelection(e,"linkHref")}execute(){const t=this.editor,e=this.editor.model,n=e.document.selection,o=t.commands.get("link");e.change((t=>{const i=n.isCollapsed?[kp(n.getFirstPosition(),"linkHref",n.getAttribute("linkHref"),e)]:e.schema.getValidRanges(n.getRanges(),"linkHref");for(const e of i)if(t.removeAttribute("linkHref",e),o)for(const n of o.manualDecorators)t.removeAttribute(n.id,e)}))}}class qb{constructor({id:t,label:e,attributes:n,classes:o,styles:i,defaultValue:r}){this.id=t,this.set("value"),this.defaultValue=r,this.label=e,this.attributes=n,this.classes=o,this.styles=i}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}ka(qb,B);var Gb=n(9773),Wb={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Gb.Z,Wb);Gb.Z.locals;const Yb="automatic",$b=/^(https?:)?\/\//;class Kb extends F{static get pluginName(){return"LinkEditing"}static get requires(){return[np,Zm,zg]}constructor(t){super(t),t.config.define("link",{addTargetToExternalLinks:!1})}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:"linkHref"}),t.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:Lb}),t.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(t,e)=>Lb(Ob(t),e)}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:t=>t.getAttribute("href")}}),t.commands.add("link",new Ub(t)),t.commands.add("unlink",new Hb(t));const e=function(t,e){const n={"Open in a new tab":t("Open in a new tab"),Downloadable:t("Downloadable")};return e.forEach((t=>(t.label&&n[t.label]&&(t.label=n[t.label]),t))),e}(t.t,function(t){const e=[];if(t)for(const[n,o]of Object.entries(t)){const t=Object.assign({},o,{id:`link${Tb(n)}`});e.push(t)}return e}(t.config.get("link.decorators")));this._enableAutomaticDecorators(e.filter((t=>t.mode===Yb))),this._enableManualDecorators(e.filter((t=>"manual"===t.mode)));t.plugins.get(np).registerAttribute("linkHref"),function(t,e,n,o){const i=t.editing.view,r=new Set;i.document.registerPostFixer((i=>{const s=t.model.document.selection;let a=!1;if(s.hasAttribute(e)){const c=kp(s.getFirstPosition(),e,s.getAttribute(e),t.model),l=t.editing.mapper.toViewRange(c);for(const t of l.getItems())t.is("element",n)&&!t.hasClass(o)&&(i.addClass(o,t),r.add(t),a=!0)}return a})),t.conversion.for("editingDowncast").add((t=>{function e(){i.change((t=>{for(const e of r.values())t.removeClass(o,e),r.delete(e)}))}t.on("insert",e,{priority:"highest"}),t.on("remove",e,{priority:"highest"}),t.on("attribute",e,{priority:"highest"}),t.on("selection",e,{priority:"highest"})}))}(t,"linkHref","a","ck-link_selected"),this._enableLinkOpen(),this._enableInsertContentSelectionAttributesFixer(),this._enableClickingAfterLink(),this._enableTypingOverLink(),this._handleDeleteContentAfterLink()}_enableAutomaticDecorators(t){const e=this.editor,n=e.commands.get("link").automaticDecorators;e.config.get("link.addTargetToExternalLinks")&&n.add({id:"linkIsExternal",mode:Yb,callback:t=>$b.test(t),attributes:{target:"_blank",rel:"noopener noreferrer"}}),n.add(t),n.length&&e.conversion.for("downcast").add(n.getDispatcher())}_enableManualDecorators(t){if(!t.length)return;const e=this.editor,n=e.commands.get("link").manualDecorators;t.forEach((t=>{e.model.schema.extend("$text",{allowAttributes:t.id}),t=new qb(t),n.add(t),e.conversion.for("downcast").attributeToElement({model:t.id,view:(e,{writer:n,schema:o},{item:i})=>{if((i.is("selection")||o.isInline(i))&&e){const e=n.createAttributeElement("a",t.attributes,{priority:5});t.classes&&n.addClass(t.classes,e);for(const o in t.styles)n.setStyle(o,t.styles[o],e);return n.setCustomProperty("link",!0,e),e}}}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",...t._createPattern()},model:{key:t.id}})}))}_enableLinkOpen(){const t=this.editor,e=t.editing.view.document;this.listenTo(e,"click",((t,e)=>{if(!(cr.isMac?e.domEvent.metaKey:e.domEvent.ctrlKey))return;let n=e.domTarget;if("a"!=n.tagName.toLowerCase()&&(n=n.closest("a")),!n)return;const o=n.getAttribute("href");o&&(t.stop(),e.preventDefault(),Vb(o))}),{context:"$capture"}),this.listenTo(e,"keydown",((e,n)=>{const o=t.commands.get("link").value;o&&n.keyCode===ur.enter&&n.altKey&&(e.stop(),Vb(o))}))}_enableInsertContentSelectionAttributesFixer(){const t=this.editor.model,e=t.document.selection;this.listenTo(t,"insertContent",(()=>{const n=e.anchor.nodeBefore,o=e.anchor.nodeAfter;e.hasAttribute("linkHref")&&n&&n.hasAttribute("linkHref")&&(o&&o.hasAttribute("linkHref")||t.change((e=>{Qb(e,Jb(t.schema))})))}),{priority:"low"})}_enableClickingAfterLink(){const t=this.editor,e=t.model;t.editing.view.addObserver(Gd);let n=!1;this.listenTo(t.editing.view.document,"mousedown",(()=>{n=!0})),this.listenTo(t.editing.view.document,"selectionChange",(()=>{if(!n)return;n=!1;const t=e.document.selection;if(!t.isCollapsed)return;if(!t.hasAttribute("linkHref"))return;const o=t.getFirstPosition(),i=kp(o,"linkHref",t.getAttribute("linkHref"),e);(o.isTouching(i.start)||o.isTouching(i.end))&&e.change((t=>{Qb(t,Jb(e.schema))}))}))}_enableTypingOverLink(){const t=this.editor,e=t.editing.view;let n,o;this.listenTo(e.document,"delete",(()=>{o=!0}),{priority:"high"}),this.listenTo(t.model,"deleteContent",(()=>{const e=t.model.document.selection;e.isCollapsed||(o?o=!1:Zb(t)&&function(t){const e=t.document.selection,n=e.getFirstPosition(),o=e.getLastPosition(),i=n.nodeAfter;if(!i)return!1;if(!i.is("$text"))return!1;if(!i.hasAttribute("linkHref"))return!1;const r=o.textNode||o.nodeBefore;if(i===r)return!0;return kp(n,"linkHref",i.getAttribute("linkHref"),t).containsRange(t.createRange(n,o),!0)}(t.model)&&(n=e.getAttributes()))}),{priority:"high"}),this.listenTo(t.model,"insertContent",((e,[i])=>{o=!1,Zb(t)&&n&&(t.model.change((t=>{for(const[e,o]of n)t.setAttribute(e,o,i)})),n=null)}),{priority:"high"})}_handleDeleteContentAfterLink(){const t=this.editor,e=t.model,n=e.document.selection,o=t.editing.view;let i=!1,r=!1;this.listenTo(o.document,"delete",((t,e)=>{r="backward"===e.direction}),{priority:"high"}),this.listenTo(e,"deleteContent",(()=>{i=!1;const t=n.getFirstPosition(),o=n.getAttribute("linkHref");if(!o)return;const r=kp(t,"linkHref",o,e);i=r.containsPosition(t)||r.end.isEqual(t)}),{priority:"high"}),this.listenTo(e,"deleteContent",(()=>{r&&(r=!1,i||t.model.enqueueChange((t=>{Qb(t,Jb(e.schema))})))}),{priority:"low"})}}function Qb(t,e){t.removeSelectionAttribute("linkHref");for(const n of e)t.removeSelectionAttribute(n)}function Zb(t){return t.model.change((t=>t.batch)).isTyping}function Jb(t){return t.getDefinition("$text").allowAttributes.filter((t=>t.startsWith("link")))}var Xb=n(7754),tw={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Xb.Z,tw);Xb.Z.locals;class ew extends Mh{constructor(t,e){super(t);const n=t.t;this.focusTracker=new va,this.keystrokes=new ya,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(n("Save"),Jh.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(n("Cancel"),Jh.cancel,"ck-button-cancel","cancel"),this._manualDecoratorSwitches=this._createManualDecoratorSwitches(e),this.children=this._createFormChildren(e.manualDecorators),this._focusables=new rh,this._focusCycler=new vu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});const o=["ck","ck-link-form","ck-responsive-form"];e.manualDecorators.length&&o.push("ck-link-form_layout-vertical","ck-vertical-form"),this.setTemplate({tag:"form",attributes:{class:o,tabindex:"-1"},children:this.children}),tu(this)}getDecoratorSwitchesState(){return Array.from(this._manualDecoratorSwitches).reduce(((t,e)=>(t[e.name]=e.isOn,t)),{})}render(){super.render(),eu({view:this});[this.urlInputView,...this._manualDecoratorSwitches,this.saveButtonView,this.cancelButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createUrlInput(){const t=this.locale.t,e=new hg(this.locale,ug);return e.label=t("Link URL"),e}_createButton(t,e,n,o){const i=new cu(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),o&&i.delegate("execute").to(this,o),i}_createManualDecoratorSwitches(t){const e=this.createCollection();for(const n of t.manualDecorators){const o=new hu(this.locale);o.set({name:n.id,label:n.label,withText:!0}),o.bind("isOn").toMany([n,t],"value",((t,e)=>void 0===e&&void 0===t?n.defaultValue:t)),o.on("execute",(()=>{n.set("value",!o.isOn)})),e.add(o)}return e}_createFormChildren(t){const e=this.createCollection();if(e.add(this.urlInputView),t.length){const t=new Mh;t.setTemplate({tag:"ul",children:this._manualDecoratorSwitches.map((t=>({tag:"li",children:[t],attributes:{class:["ck","ck-list__item"]}}))),attributes:{class:["ck","ck-reset","ck-list"]}}),e.add(t)}return e.add(this.saveButtonView),e.add(this.cancelButtonView),e}}var nw=n(2347),ow={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(nw.Z,ow);nw.Z.locals;class iw extends Mh{constructor(t){super(t);const e=t.t;this.focusTracker=new va,this.keystrokes=new ya,this.previewButtonView=this._createPreviewButton(),this.unlinkButtonView=this._createButton(e("Unlink"),'',"unlink"),this.editButtonView=this._createButton(e("Edit link"),Jh.pencil,"edit"),this.set("href"),this._focusables=new rh,this._focusCycler=new vu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-actions","ck-responsive-form"],tabindex:"-1"},children:[this.previewButtonView,this.editButtonView,this.unlinkButtonView]})}render(){super.render();[this.previewButtonView,this.editButtonView,this.unlinkButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createButton(t,e,n){const o=new cu(this.locale);return o.set({label:t,icon:e,tooltip:!0}),o.delegate("execute").to(this,n),o}_createPreviewButton(){const t=new cu(this.locale),e=this.bindTemplate,n=this.t;return t.set({withText:!0,tooltip:n("Open link in new tab")}),t.extendTemplate({attributes:{class:["ck","ck-link-actions__preview"],href:e.to("href",(t=>t&&Ob(t))),target:"_blank",rel:"noopener noreferrer"}}),t.bind("label").to(this,"href",(t=>t||n("This link has no URL"))),t.bind("isEnabled").to(this,"href",(t=>!!t)),t.template.tag="a",t.template.eventListeners={},t}}const rw="link-ui";class sw extends F{static get requires(){return[Ag]}static get pluginName(){return"LinkUI"}init(){const t=this.editor;t.editing.view.addObserver(qd),this.actionsView=this._createActionsView(),this.formView=this._createFormView(),this._balloon=t.plugins.get(Ag),this._createToolbarLinkButton(),this._enableUserBalloonInteractions(),t.conversion.for("editingDowncast").markerToHighlight({model:rw,view:{classes:["ck-fake-link-selection"]}}),t.conversion.for("editingDowncast").markerToElement({model:rw,view:{name:"span",classes:["ck-fake-link-selection","ck-fake-link-selection_collapsed"]}})}destroy(){super.destroy(),this.formView.destroy()}_createActionsView(){const t=this.editor,e=new iw(t.locale),n=t.commands.get("link"),o=t.commands.get("unlink");return e.bind("href").to(n,"value"),e.editButtonView.bind("isEnabled").to(n),e.unlinkButtonView.bind("isEnabled").to(o),this.listenTo(e,"edit",(()=>{this._addFormView()})),this.listenTo(e,"unlink",(()=>{t.execute("unlink"),this._hideUI()})),e.keystrokes.set("Esc",((t,e)=>{this._hideUI(),e()})),e.keystrokes.set(zb,((t,e)=>{this._addFormView(),e()})),e}_createFormView(){const t=this.editor,e=t.commands.get("link"),n=t.config.get("link.defaultProtocol"),o=new ew(t.locale,e);return o.urlInputView.fieldView.bind("value").to(e,"value"),o.urlInputView.bind("isReadOnly").to(e,"isEnabled",(t=>!t)),o.saveButtonView.bind("isEnabled").to(e),this.listenTo(o,"submit",(()=>{const{value:e}=o.urlInputView.fieldView.element,i=jb(e,n);t.execute("link",i,o.getDecoratorSwitchesState()),this._closeFormView()})),this.listenTo(o,"cancel",(()=>{this._closeFormView()})),o.keystrokes.set("Esc",((t,e)=>{this._closeFormView(),e()})),o}_createToolbarLinkButton(){const t=this.editor,e=t.commands.get("link"),n=t.t;t.keystrokes.set(zb,((t,n)=>{n(),e.isEnabled&&this._showUI(!0)})),t.ui.componentFactory.add("link",(t=>{const o=new cu(t);return o.isEnabled=!0,o.label=n("Link"),o.icon='',o.keystroke=zb,o.tooltip=!0,o.isToggleable=!0,o.bind("isEnabled").to(e,"isEnabled"),o.bind("isOn").to(e,"value",(t=>!!t)),this.listenTo(o,"execute",(()=>this._showUI(!0))),o}))}_enableUserBalloonInteractions(){const t=this.editor.editing.view.document;this.listenTo(t,"click",(()=>{this._getSelectedLinkElement()&&this._showUI()})),this.editor.keystrokes.set("Tab",((t,e)=>{this._areActionsVisible&&!this.actionsView.focusTracker.isFocused&&(this.actionsView.focus(),e())}),{priority:"high"}),this.editor.keystrokes.set("Esc",((t,e)=>{this._isUIVisible&&(this._hideUI(),e())})),Xh({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:[this._balloon.view.element],callback:()=>this._hideUI()})}_addActionsView(){this._areActionsInPanel||this._balloon.add({view:this.actionsView,position:this._getBalloonPositionData()})}_addFormView(){if(this._isFormInPanel)return;const t=this.editor.commands.get("link");this.formView.disableCssTransitions(),this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions(),this.formView.urlInputView.fieldView.element.value=t.value||""}_closeFormView(){const t=this.editor.commands.get("link");t.restoreManualDecoratorStates(),void 0!==t.value?this._removeFormView():this._hideUI()}_removeFormView(){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this._balloon.remove(this.formView),this.editor.editing.view.focus(),this._hideFakeVisualSelection())}_showUI(t=!1){this._getSelectedLinkElement()?(this._areActionsVisible?this._addFormView():this._addActionsView(),t&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addActionsView(),t&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}_hideUI(){if(!this._isUIInPanel)return;const t=this.editor;this.stopListening(t.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),t.editing.view.focus(),this._removeFormView(),this._balloon.remove(this.actionsView),this._hideFakeVisualSelection()}_startUpdatingUI(){const t=this.editor,e=t.editing.view.document;let n=this._getSelectedLinkElement(),o=r();const i=()=>{const t=this._getSelectedLinkElement(),e=r();n&&!t||!n&&e!==o?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),n=t,o=e};function r(){return e.selection.focus.getAncestors().reverse().find((t=>t.is("element")))}this.listenTo(t.ui,"update",i),this.listenTo(this._balloon,"change:visibleView",i)}get _isFormInPanel(){return this._balloon.hasView(this.formView)}get _areActionsInPanel(){return this._balloon.hasView(this.actionsView)}get _areActionsVisible(){return this._balloon.visibleView===this.actionsView}get _isUIInPanel(){return this._isFormInPanel||this._areActionsInPanel}get _isUIVisible(){return this._balloon.visibleView==this.formView||this._areActionsVisible}_getBalloonPositionData(){const t=this.editor.editing.view,e=this.editor.model,n=t.document;let o=null;if(e.markers.has(rw)){const e=Array.from(this.editor.editing.mapper.markerNameToElements(rw)),n=t.createRange(t.createPositionBefore(e[0]),t.createPositionAfter(e[e.length-1]));o=t.domConverter.viewRangeToDom(n)}else o=()=>{const e=this._getSelectedLinkElement();return e?t.domConverter.mapViewToDom(e):t.domConverter.viewRangeToDom(n.selection.getFirstRange())};return{target:o}}_getSelectedLinkElement(){const t=this.editor.editing.view,e=t.document.selection,n=e.getSelectedElement();if(e.isCollapsed||n&&om(n))return aw(e.getFirstPosition());{const n=e.getFirstRange().getTrimmed(),o=aw(n.start),i=aw(n.end);return o&&o==i&&t.createRangeIn(o).getTrimmed().isEqual(n)?o:null}}_showFakeVisualSelection(){const t=this.editor.model;t.change((e=>{const n=t.document.selection.getFirstRange();if(t.markers.has(rw))e.updateMarker(rw,{range:n});else if(n.start.isAtEnd){const o=n.start.getLastMatchingPosition((({item:e})=>!t.schema.isContent(e)),{boundaries:n});e.addMarker(rw,{usingOperation:!1,affectsData:!1,range:e.createRange(o,n.end)})}else e.addMarker(rw,{usingOperation:!1,affectsData:!1,range:n})}))}_hideFakeVisualSelection(){const t=this.editor.model;t.markers.has(rw)&&t.change((t=>{t.removeMarker(rw)}))}}function aw(t){return t.getAncestors().find((t=>{return(e=t).is("attributeElement")&&!!e.getCustomProperty("link");var e}))}const cw=new RegExp("(^|\\s)(((?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(((?!www\\.)|(www\\.))(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63})))(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+(?:[a-z\\u00a1-\\uffff]{2,63})))$","i");class lw extends F{static get requires(){return[Qg]}static get pluginName(){return"AutoLink"}init(){const t=this.editor.model.document.selection;t.on("change:range",(()=>{this.isEnabled=!t.anchor.parent.is("element","codeBlock")})),this._enableTypingHandling()}afterInit(){this._enableEnterHandling(),this._enableShiftEnterHandling()}_enableTypingHandling(){const t=this.editor,e=new ep(t.model,(t=>{if(!function(t){return t.length>4&&" "===t[t.length-1]&&" "!==t[t.length-2]}(t))return;const e=dw(t.substr(0,t.length-1));return e?{url:e}:void 0}));e.on("matched:data",((e,n)=>{const{batch:o,range:i,url:r}=n;if(!o.isTyping)return;const s=i.end.getShiftedBy(-1),a=s.getShiftedBy(-r.length),c=t.model.createRange(a,s);this._applyAutoLink(r,c)})),e.bind("isEnabled").to(this)}_enableEnterHandling(){const t=this.editor,e=t.model,n=t.commands.get("enter");n&&n.on("execute",(()=>{const t=e.document.selection.getFirstPosition();if(!t.parent.previousSibling)return;const n=e.createRangeIn(t.parent.previousSibling);this._checkAndApplyAutoLinkOnRange(n)}))}_enableShiftEnterHandling(){const t=this.editor,e=t.model,n=t.commands.get("shiftEnter");n&&n.on("execute",(()=>{const t=e.document.selection.getFirstPosition(),n=e.createRange(e.createPositionAt(t.parent,0),t.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(n)}))}_checkAndApplyAutoLinkOnRange(t){const e=this.editor.model,{text:n,range:o}=tp(t,e),i=dw(n);if(i){const t=e.createRange(o.end.getShiftedBy(-i.length),o.end);this._applyAutoLink(i,t)}}_applyAutoLink(t,e){const n=this.editor.model,o=jb(t,this.editor.config.get("link.defaultProtocol"));this.isEnabled&&function(t,e){return e.schema.checkAttributeInSelection(e.createSelection(t),"linkHref")}(e,n)&&Fb(o)&&!function(t){const e=t.start.nodeAfter;return e&&e.hasAttribute("linkHref")}(e)&&this._persistAutoLink(o,e)}_persistAutoLink(t,e){const n=this.editor.model,o=this.editor.plugins.get("Delete");n.enqueueChange((i=>{i.setAttribute("linkHref",t,e),n.enqueueChange((()=>{o.requestUndoOnBackspace()}))}))}}function dw(t){const e=cw.exec(t);return e?e[2]:null}class hw extends U{constructor(t,e){super(t),this.type=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,n=e.document,o=Array.from(n.selection.getSelectedBlocks()).filter((t=>gw(t,e.schema))),i=void 0!==t.forceValue?!t.forceValue:this.value;e.change((t=>{if(i){let e=o[o.length-1].nextSibling,n=Number.POSITIVE_INFINITY,i=[];for(;e&&"listItem"==e.name&&0!==e.getAttribute("listIndent");){const t=e.getAttribute("listIndent");t=n;)r>i.getAttribute("listIndent")&&(r=i.getAttribute("listIndent")),i.getAttribute("listIndent")==r&&t[e?"unshift":"push"](i),i=i[e?"previousSibling":"nextSibling"]}}function gw(t,e){return e.checkChild(t.parent,"listItem")&&!e.isObject(t)}class mw extends U{constructor(t,e){super(t),this._indentBy="forward"==e?1:-1}refresh(){this.isEnabled=this._checkEnabled()}execute(){const t=this.editor.model,e=t.document;let n=Array.from(e.selection.getSelectedBlocks());t.change((t=>{const e=n[n.length-1];let o=e.nextSibling;for(;o&&"listItem"==o.name&&o.getAttribute("listIndent")>e.getAttribute("listIndent");)n.push(o),o=o.nextSibling;this._indentBy<0&&(n=n.reverse());for(const e of n){const n=e.getAttribute("listIndent")+this._indentBy;n<0?t.rename(e,"paragraph"):t.setAttribute("listIndent",n,e)}this.fire("_executeCleanup",n)}))}_checkEnabled(){const t=Ca(this.editor.model.document.selection.getSelectedBlocks());if(!t||!t.is("element","listItem"))return!1;if(this._indentBy>0){const e=t.getAttribute("listIndent"),n=t.getAttribute("listType");let o=t.previousSibling;for(;o&&o.is("element","listItem")&&o.getAttribute("listIndent")>=e;){if(o.getAttribute("listIndent")==e)return o.getAttribute("listType")==n;o=o.previousSibling}return!1}return!0}}function pw(t,e){const n=e.mapper,o=e.writer,i="numbered"==t.getAttribute("listType")?"ol":"ul",r=function(t){const e=t.createContainerElement("li");return e.getFillerOffset=_w,e}(o),s=o.createContainerElement(i,null);return o.insert(o.createPositionAt(s,0),r),n.bindElements(t,r),r}function fw(t,e,n,o){const i=e.parent,r=n.mapper,s=n.writer;let a=r.toViewPosition(o.createPositionBefore(t));const c=ww(t.previousSibling,{sameIndent:!0,smallerIndent:!0,listIndent:t.getAttribute("listIndent")}),l=t.previousSibling;if(c&&c.getAttribute("listIndent")==t.getAttribute("listIndent")){const t=r.toViewElement(c);a=s.breakContainer(s.createPositionAfter(t))}else if(l&&"listItem"==l.name){a=r.toViewPosition(o.createPositionAt(l,"end"));const t=r.findMappedViewAncestor(a),e=function(t){for(const e of t.getChildren())if("ul"==e.name||"ol"==e.name)return e;return null}(t);a=e?s.createPositionBefore(e):s.createPositionAt(t,"end")}else a=r.toViewPosition(o.createPositionBefore(t));if(a=bw(a),s.insert(a,i),l&&"listItem"==l.name){const t=r.toViewElement(l),n=s.createRange(s.createPositionAt(t,0),a).getWalker({ignoreElementEnd:!0});for(const t of n)if(t.item.is("element","li")){const o=s.breakContainer(s.createPositionBefore(t.item)),i=t.item.parent,r=s.createPositionAt(e,"end");kw(s,r.nodeBefore,r.nodeAfter),s.move(s.createRangeOn(i),r),n.position=o}}else{const n=i.nextSibling;if(n&&(n.is("element","ul")||n.is("element","ol"))){let o=null;for(const e of n.getChildren()){const n=r.toModelElement(e);if(!(n&&n.getAttribute("listIndent")>t.getAttribute("listIndent")))break;o=e}o&&(s.breakContainer(s.createPositionAfter(o)),s.move(s.createRangeOn(o.parent),s.createPositionAt(e,"end")))}}kw(s,i,i.nextSibling),kw(s,i.previousSibling,i)}function kw(t,e,n){return!e||!n||"ul"!=e.name&&"ol"!=e.name||e.name!=n.name||e.getAttribute("class")!==n.getAttribute("class")?null:t.mergeContainers(t.createPositionAfter(e))}function bw(t){return t.getLastMatchingPosition((t=>t.item.is("uiElement")))}function ww(t,e){const n=!!e.sameIndent,o=!!e.smallerIndent,i=e.listIndent;let r=t;for(;r&&"listItem"==r.name;){const t=r.getAttribute("listIndent");if(n&&i==t||o&&i>t)return r;r="forward"===e.direction?r.nextSibling:r.previousSibling}return null}function Aw(t,e,n,o){t.ui.componentFactory.add(e,(i=>{const r=t.commands.get(e),s=new cu(i);return s.set({label:n,icon:o,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.on("execute",(()=>{t.execute(e),t.editing.view.focus()})),s}))}function _w(){const t=!this.isEmpty&&("ul"==this.getChild(0).name||"ol"==this.getChild(0).name);return this.isEmpty||t?0:Li.call(this)}function Cw(t){return(e,n,o)=>{const i=o.consumable;if(!i.test(n.item,"insert")||!i.test(n.item,"attribute:listType")||!i.test(n.item,"attribute:listIndent"))return;i.consume(n.item,"insert"),i.consume(n.item,"attribute:listType"),i.consume(n.item,"attribute:listIndent");const r=n.item;fw(r,pw(r,o),o,t)}}function vw(t,e,n){if(!n.consumable.test(e.item,t.name))return;const o=n.mapper.toViewElement(e.item),i=n.writer;i.breakContainer(i.createPositionBefore(o)),i.breakContainer(i.createPositionAfter(o));const r=o.parent,s="numbered"==e.attributeNewValue?"ol":"ul";i.rename(s,r)}function yw(t,e,n){n.consumable.consume(e.item,t.name);const o=n.mapper.toViewElement(e.item).parent,i=n.writer;kw(i,o,o.nextSibling),kw(i,o.previousSibling,o)}function xw(t,e,n){if(n.consumable.test(e.item,t.name)&&"listItem"!=e.item.name){let t=n.mapper.toViewPosition(e.range.start);const o=n.writer,i=[];for(;("ul"==t.parent.name||"ol"==t.parent.name)&&(t=o.breakContainer(t),"li"==t.parent.name);){const e=t,n=o.createPositionAt(t.parent,"end");if(!e.isEqual(n)){const t=o.remove(o.createRange(e,n));i.push(t)}t=o.createPositionAfter(t.parent)}if(i.length>0){for(let e=0;e0){const e=kw(o,n,n.nextSibling);e&&e.parent==n&&t.offset--}}kw(o,t.nodeBefore,t.nodeAfter)}}}function Ew(t,e,n){const o=n.mapper.toViewPosition(e.position),i=o.nodeBefore,r=o.nodeAfter;kw(n.writer,i,r)}function Dw(t,e,n){if(n.consumable.consume(e.viewItem,{name:!0})){const t=n.writer,o=t.createElement("listItem"),i=function(t){let e=0,n=t.parent;for(;n;){if(n.is("element","li"))e++;else{const t=n.previousSibling;t&&t.is("element","li")&&e++}n=n.parent}return e}(e.viewItem);t.setAttribute("listIndent",i,o);const r=e.viewItem.parent&&"ol"==e.viewItem.parent.name?"numbered":"bulleted";if(t.setAttribute("listType",r,o),!n.safeInsert(o,e.modelCursor))return;const s=function(t,e,n){const{writer:o,schema:i}=n;let r=o.createPositionAfter(t);for(const s of e)if("ul"==s.name||"ol"==s.name)r=n.convertItem(s,r).modelCursor;else{const e=n.convertItem(s,o.createPositionAt(t,"end")),a=e.modelRange.start.nodeAfter;a&&a.is("element")&&!i.checkChild(t,a.name)&&(t=e.modelCursor.parent.is("element","listItem")?e.modelCursor.parent:Nw(e.modelCursor),r=o.createPositionAfter(t))}return r}(o,e.viewItem.getChildren(),n);e.modelRange=t.createRange(e.modelCursor,s),n.updateConversionResult(o,e)}}function Iw(t,e,n){if(n.consumable.test(e.viewItem,{name:!0})){const t=Array.from(e.viewItem.getChildren());for(const e of t){!(e.is("element","li")||Pw(e))&&e._remove()}}}function Mw(t,e,n){if(n.consumable.test(e.viewItem,{name:!0})){if(0===e.viewItem.childCount)return;const t=[...e.viewItem.getChildren()];let n=!1;for(const e of t)n&&!Pw(e)&&e._remove(),Pw(e)&&(n=!0)}}function Tw(t){return(e,n)=>{if(n.isPhantom)return;const o=n.modelPosition.nodeBefore;if(o&&o.is("element","listItem")){const e=n.mapper.toViewElement(o),i=e.getAncestors().find(Pw),r=t.createPositionAt(e,0).getWalker();for(const t of r){if("elementStart"==t.type&&t.item.is("element","li")){n.viewPosition=t.previousPosition;break}if("elementEnd"==t.type&&t.item==i){n.viewPosition=t.nextPosition;break}}}}}function Sw(t,[e,n,o]){let i,r=e.is("documentFragment")?e.getChild(0):e;if(i=n?this.createSelection(n,o):this.document.selection,r&&r.is("element","listItem")){const t=i.getFirstPosition();let e=null;if(t.parent.is("element","listItem")?e=t.parent:t.nodeBefore&&t.nodeBefore.is("element","listItem")&&(e=t.nodeBefore),e){const t=e.getAttribute("listIndent");if(t>0)for(;r&&r.is("element","listItem");)r._setAttribute("listIndent",r.getAttribute("listIndent")+t),r=r.nextSibling}}}function Nw(t){const e=new Qa({startPosition:t});let n;do{n=e.next()}while(!n.value.item.is("element","listItem"));return n.value.item}function Bw(t,e,n,o,i,r){const s=ww(e.nodeBefore,{sameIndent:!0,smallerIndent:!0,listIndent:t,foo:"b"}),a=i.mapper,c=i.writer,l=s?s.getAttribute("listIndent"):null;let d;if(s)if(l==t){const t=a.toViewElement(s).parent;d=c.createPositionAfter(t)}else{const t=r.createPositionAt(s,"end");d=a.toViewPosition(t)}else d=n;d=bw(d);for(const t of[...o.getChildren()])Pw(t)&&(d=c.move(c.createRangeOn(t),d).end,kw(c,t,t.nextSibling),kw(c,t.previousSibling,t))}function Pw(t){return t.is("element","ol")||t.is("element","ul")}class zw extends F{static get pluginName(){return"ListEditing"}static get requires(){return[Vg,Qg]}init(){const t=this.editor;t.model.schema.register("listItem",{inheritAllFrom:"$block",allowAttributes:["listType","listIndent"]});const e=t.data,n=t.editing;var o;t.model.document.registerPostFixer((e=>function(t,e){const n=t.document.differ.getChanges(),o=new Map;let i=!1;for(const o of n)if("insert"==o.type&&"listItem"==o.name)r(o.position);else if("insert"==o.type&&"listItem"!=o.name){if("$text"!=o.name){const n=o.position.nodeAfter;n.hasAttribute("listIndent")&&(e.removeAttribute("listIndent",n),i=!0),n.hasAttribute("listType")&&(e.removeAttribute("listType",n),i=!0),n.hasAttribute("listStyle")&&(e.removeAttribute("listStyle",n),i=!0),n.hasAttribute("listReversed")&&(e.removeAttribute("listReversed",n),i=!0),n.hasAttribute("listStart")&&(e.removeAttribute("listStart",n),i=!0);for(const e of Array.from(t.createRangeIn(n)).filter((t=>t.item.is("element","listItem"))))r(e.previousPosition)}r(o.position.getShiftedBy(o.length))}else"remove"==o.type&&"listItem"==o.name?r(o.position):("attribute"==o.type&&"listIndent"==o.attributeKey||"attribute"==o.type&&"listType"==o.attributeKey)&&r(o.range.start);for(const t of o.values())s(t),a(t);return i;function r(t){const e=t.nodeBefore;if(e&&e.is("element","listItem")){let t=e;if(o.has(t))return;for(let e=t.previousSibling;e&&e.is("element","listItem");e=t.previousSibling)if(t=e,o.has(t))return;o.set(e,t)}else{const e=t.nodeAfter;e&&e.is("element","listItem")&&o.set(e,e)}}function s(t){let n=0,o=null;for(;t&&t.is("element","listItem");){const r=t.getAttribute("listIndent");if(r>n){let s;null===o?(o=r-n,s=n):(o>r&&(o=r),s=r-o),e.setAttribute("listIndent",s,t),i=!0}else o=null,n=t.getAttribute("listIndent")+1;t=t.nextSibling}}function a(t){let n=[],o=null;for(;t&&t.is("element","listItem");){const r=t.getAttribute("listIndent");if(o&&o.getAttribute("listIndent")>r&&(n=n.slice(0,r+1)),0!=r)if(n[r]){const o=n[r];t.getAttribute("listType")!=o&&(e.setAttribute("listType",o,t),i=!0)}else n[r]=t.getAttribute("listType");o=t,t=t.nextSibling}}}(t.model,e))),n.mapper.registerViewToModelLength("li",Lw),e.mapper.registerViewToModelLength("li",Lw),n.mapper.on("modelToViewPosition",Tw(n.view)),n.mapper.on("viewToModelPosition",(o=t.model,(t,e)=>{const n=e.viewPosition,i=n.parent,r=e.mapper;if("ul"==i.name||"ol"==i.name){if(n.isAtEnd){const t=r.toModelElement(n.nodeBefore),i=r.getModelLength(n.nodeBefore);e.modelPosition=o.createPositionBefore(t).getShiftedBy(i)}else{const t=r.toModelElement(n.nodeAfter);e.modelPosition=o.createPositionBefore(t)}t.stop()}else if("li"==i.name&&n.nodeBefore&&("ul"==n.nodeBefore.name||"ol"==n.nodeBefore.name)){const s=r.toModelElement(i);let a=1,c=n.nodeBefore;for(;c&&Pw(c);)a+=r.getModelLength(c),c=c.previousSibling;e.modelPosition=o.createPositionBefore(s).getShiftedBy(a),t.stop()}})),e.mapper.on("modelToViewPosition",Tw(n.view)),t.conversion.for("editingDowncast").add((e=>{e.on("insert",xw,{priority:"high"}),e.on("insert:listItem",Cw(t.model)),e.on("attribute:listType:listItem",vw,{priority:"high"}),e.on("attribute:listType:listItem",yw,{priority:"low"}),e.on("attribute:listIndent:listItem",function(t){return(e,n,o)=>{if(!o.consumable.consume(n.item,"attribute:listIndent"))return;const i=o.mapper.toViewElement(n.item),r=o.writer;r.breakContainer(r.createPositionBefore(i)),r.breakContainer(r.createPositionAfter(i));const s=i.parent,a=s.previousSibling,c=r.createRangeOn(s);r.remove(c),a&&a.nextSibling&&kw(r,a,a.nextSibling),Bw(n.attributeOldValue+1,n.range.start,c.start,i,o,t),fw(n.item,i,o,t);for(const t of n.item.getChildren())o.consumable.consume(t,"insert")}}(t.model)),e.on("remove:listItem",function(t){return(e,n,o)=>{const i=o.mapper.toViewPosition(n.position).getLastMatchingPosition((t=>!t.item.is("element","li"))).nodeAfter,r=o.writer;r.breakContainer(r.createPositionBefore(i)),r.breakContainer(r.createPositionAfter(i));const s=i.parent,a=s.previousSibling,c=r.createRangeOn(s),l=r.remove(c);a&&a.nextSibling&&kw(r,a,a.nextSibling),Bw(o.mapper.toModelElement(i).getAttribute("listIndent")+1,n.position,c.start,i,o,t);for(const t of r.createRangeIn(l).getItems())o.mapper.unbindViewElement(t);e.stop()}}(t.model)),e.on("remove",Ew,{priority:"low"})})),t.conversion.for("dataDowncast").add((e=>{e.on("insert",xw,{priority:"high"}),e.on("insert:listItem",Cw(t.model))})),t.conversion.for("upcast").add((t=>{t.on("element:ul",Iw,{priority:"high"}),t.on("element:ol",Iw,{priority:"high"}),t.on("element:li",Mw,{priority:"high"}),t.on("element:li",Dw)})),t.model.on("insertContent",Sw,{priority:"high"}),t.commands.add("numberedList",new hw(t,"numbered")),t.commands.add("bulletedList",new hw(t,"bulleted")),t.commands.add("indentList",new mw(t,"forward")),t.commands.add("outdentList",new mw(t,"backward"));const i=n.view.document;this.listenTo(i,"enter",((t,e)=>{const n=this.editor.model.document,o=n.selection.getLastPosition().parent;n.selection.isCollapsed&&"listItem"==o.name&&o.isEmpty&&(this.editor.execute("outdentList"),e.preventDefault(),t.stop())}),{context:"li"}),this.listenTo(i,"delete",((t,e)=>{if("backward"!==e.direction)return;const n=this.editor.model.document.selection;if(!n.isCollapsed)return;const o=n.getFirstPosition();if(!o.isAtStart)return;const i=o.parent;if("listItem"!==i.name)return;i.previousSibling&&"listItem"===i.previousSibling.name||(this.editor.execute("outdentList"),e.preventDefault(),t.stop())}),{context:"li"}),this.listenTo(t.editing.view.document,"tab",((e,n)=>{const o=n.shiftKey?"outdentList":"indentList";this.editor.commands.get(o).isEnabled&&(t.execute(o),n.stopPropagation(),n.preventDefault(),e.stop())}),{context:"li"})}afterInit(){const t=this.editor.commands,e=t.get("indent"),n=t.get("outdent");e&&e.registerChildCommand(t.get("indentList")),n&&n.registerChildCommand(t.get("outdentList"))}}function Lw(t){let e=1;for(const n of t.getChildren())if("ul"==n.name||"ol"==n.name)for(const t of n.getChildren())e+=Lw(t);return e}class Ow extends F{static get pluginName(){return"ListUI"}init(){const t=this.editor.t;Aw(this.editor,"numberedList",t("Numbered List"),''),Aw(this.editor,"bulletedList",t("Bulleted List"),'')}}function Rw(t,e){return t=>{t.on("attribute:url:media",n)};function n(n,o,i){if(!i.consumable.consume(o.item,n.name))return;const r=o.attributeNewValue,s=i.writer,a=i.mapper.toViewElement(o.item),c=[...a.getChildren()].find((t=>t.getCustomProperty("media-content")));s.remove(c);const l=t.getMediaViewElement(s,r,e);s.insert(s.createPositionAt(a,0),l)}}function jw(t,e,n,o){return t.createContainerElement("figure",{class:"media"},[e.getMediaViewElement(t,n,o),t.createSlot()])}function Fw(t){const e=t.getSelectedElement();return e&&e.is("element","media")?e:null}function Vw(t,e,n,o){t.change((i=>{const r=i.createElement("media",{url:e});t.insertObject(r,n,null,{setSelection:"on",findOptimalPosition:o})}))}class Uw extends U{refresh(){const t=this.editor.model,e=t.document.selection,n=Fw(e);this.value=n?n.getAttribute("url"):null,this.isEnabled=function(t){const e=t.getSelectedElement();return!!e&&"media"===e.name}(e)||function(t,e){let n=dm(t,e).start.parent;n.isEmpty&&!e.schema.isLimit(n)&&(n=n.parent);return e.schema.checkChild(n,"media")}(e,t)}execute(t){const e=this.editor.model,n=e.document.selection,o=Fw(n);o?e.change((e=>{e.setAttribute("url",t,o)})):Vw(e,t,n,!0)}}class Hw{constructor(t,e){const n=e.providers,o=e.extraProviders||[],i=new Set(e.removeProviders),r=n.concat(o).filter((t=>{const e=t.name;return e?!i.has(e):(l("media-embed-no-provider-name",{provider:t}),!1)}));this.locale=t,this.providerDefinitions=r}hasMedia(t){return!!this._getMedia(t)}getMediaViewElement(t,e,n){return this._getMedia(e).getViewElement(t,n)}_getMedia(t){if(!t)return new qw(this.locale);t=t.trim();for(const e of this.providerDefinitions){const n=e.html,o=bo(e.url);for(const e of o){const o=this._getUrlMatches(t,e);if(o)return new qw(this.locale,t,o,n)}}return null}_getUrlMatches(t,e){let n=t.match(e);if(n)return n;let o=t.replace(/^https?:\/\//,"");return n=o.match(e),n||(o=o.replace(/^www\./,""),n=o.match(e),n||null)}}class qw{constructor(t,e,n,o){this.url=this._getValidUrl(e),this._locale=t,this._match=n,this._previewRenderer=o}getViewElement(t,e){const n={};let o;if(e.renderForEditingView||e.renderMediaPreview&&this.url&&this._previewRenderer){this.url&&(n["data-oembed-url"]=this.url),e.renderForEditingView&&(n.class="ck-media__wrapper");const i=this._getPreviewHtml(e);o=t.createRawElement("div",n,((t,e)=>{e.setContentOf(t,i)}))}else this.url&&(n.url=this.url),o=t.createEmptyElement(e.elementName,n);return t.setCustomProperty("media-content",!0,o),o}_getPreviewHtml(t){return this._previewRenderer?this._previewRenderer(this._match):this.url&&t.renderForEditingView?this._getPlaceholderHtml():""}_getPlaceholderHtml(){const t=new ru,e=this._locale.t;t.content='',t.viewBox="0 0 64 42";return new sh({tag:"div",attributes:{class:"ck ck-reset_all ck-media__placeholder"},children:[{tag:"div",attributes:{class:"ck-media__placeholder__icon"},children:[t]},{tag:"a",attributes:{class:"ck-media__placeholder__url",target:"_blank",rel:"noopener noreferrer",href:this.url,"data-cke-tooltip-text":e("Open media in new tab")},children:[{tag:"span",attributes:{class:"ck-media__placeholder__url__text"},children:[this.url]}]}]}).render().outerHTML}_getValidUrl(t){return t?t.match(/^https?/)?t:"https://"+t:null}}var Gw=n(7442),Ww={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Gw.Z,Ww);Gw.Z.locals;class Yw extends F{static get pluginName(){return"MediaEmbedEditing"}constructor(t){super(t),t.config.define("mediaEmbed",{elementName:"oembed",providers:[{name:"dailymotion",url:/^dailymotion\.com\/video\/(\w+)/,html:t=>`
`},{name:"spotify",url:[/^open\.spotify\.com\/(artist\/\w+)/,/^open\.spotify\.com\/(album\/\w+)/,/^open\.spotify\.com\/(track\/\w+)/],html:t=>`
`},{name:"youtube",url:[/^(?:m\.)?youtube\.com\/watch\?v=([\w-]+)(?:&t=(\d+))?/,/^(?:m\.)?youtube\.com\/v\/([\w-]+)(?:\?t=(\d+))?/,/^youtube\.com\/embed\/([\w-]+)(?:\?start=(\d+))?/,/^youtu\.be\/([\w-]+)(?:\?t=(\d+))?/],html:t=>{const e=t[1],n=t[2];return`
`}},{name:"vimeo",url:[/^vimeo\.com\/(\d+)/,/^vimeo\.com\/[^/]+\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/album\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/channels\/[^/]+\/(\d+)/,/^vimeo\.com\/groups\/[^/]+\/videos\/(\d+)/,/^vimeo\.com\/ondemand\/[^/]+\/(\d+)/,/^player\.vimeo\.com\/video\/(\d+)/],html:t=>`
`},{name:"instagram",url:/^instagram\.com\/p\/(\w+)/},{name:"twitter",url:/^twitter\.com/},{name:"googleMaps",url:[/^google\.com\/maps/,/^goo\.gl\/maps/,/^maps\.google\.com/,/^maps\.app\.goo\.gl/]},{name:"flickr",url:/^flickr\.com/},{name:"facebook",url:/^facebook\.com/}]}),this.registry=new Hw(t.locale,t.config.get("mediaEmbed"))}init(){const t=this.editor,e=t.model.schema,n=t.t,o=t.conversion,i=t.config.get("mediaEmbed.previewsInData"),r=t.config.get("mediaEmbed.elementName"),s=this.registry;t.commands.add("mediaEmbed",new Uw(t)),e.register("media",{inheritAllFrom:"$blockObject",allowAttributes:["url"]}),o.for("dataDowncast").elementToStructure({model:"media",view:(t,{writer:e})=>{const n=t.getAttribute("url");return jw(e,s,n,{elementName:r,renderMediaPreview:n&&i})}}),o.for("dataDowncast").add(Rw(s,{elementName:r,renderMediaPreview:i})),o.for("editingDowncast").elementToStructure({model:"media",view:(t,{writer:e})=>{const o=t.getAttribute("url");return function(t,e,n){return e.setCustomProperty("media",!0,t),im(t,e,{label:n})}(jw(e,s,o,{elementName:r,renderForEditingView:!0}),e,n("media widget"))}}),o.for("editingDowncast").add(Rw(s,{elementName:r,renderForEditingView:!0})),o.for("upcast").elementToElement({view:t=>["oembed",r].includes(t.name)&&t.getAttribute("url")?{name:!0}:null,model:(t,{writer:e})=>{const n=t.getAttribute("url");if(s.hasMedia(n))return e.createElement("media",{url:n})}}).elementToElement({view:{name:"div",attributes:{"data-oembed-url":!0}},model:(t,{writer:e})=>{const n=t.getAttribute("data-oembed-url");if(s.hasMedia(n))return e.createElement("media",{url:n})}}).add((t=>{t.on("element:figure",(function(t,e,n){if(!n.consumable.consume(e.viewItem,{name:!0,classes:"media"}))return;const{modelRange:o,modelCursor:i}=n.convertChildren(e.viewItem,e.modelCursor);e.modelRange=o,e.modelCursor=i;Ca(o.getItems())||n.consumable.revert(e.viewItem,{name:!0,classes:"media"})}))}))}}const $w=/^(?:http(s)?:\/\/)?[\w-]+\.[\w-.~:/?#[\]@!$&'()*+,;=%]+$/;class Kw extends F{static get requires(){return[Om,Qg,Ip]}static get pluginName(){return"AutoMediaEmbed"}constructor(t){super(t),this._timeoutId=null,this._positionToInsert=null}init(){const t=this.editor,e=t.model.document;this.listenTo(t.plugins.get("ClipboardPipeline"),"inputTransformation",(()=>{const t=e.selection.getFirstRange(),n=pd.fromPosition(t.start);n.stickiness="toPrevious";const o=pd.fromPosition(t.end);o.stickiness="toNext",e.once("change:data",(()=>{this._embedMediaBetweenPositions(n,o),n.detach(),o.detach()}),{priority:"high"})})),t.commands.get("undo").on("execute",(()=>{this._timeoutId&&(Ao.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)}),{priority:"high"})}_embedMediaBetweenPositions(t,e){const n=this.editor,o=n.plugins.get(Yw).registry,i=new fc(t,e),r=i.getWalker({ignoreElementEnd:!0});let s="";for(const t of r)t.item.is("$textProxy")&&(s+=t.item.data);if(s=s.trim(),!s.match($w))return void i.detach();if(!o.hasMedia(s))return void i.detach();n.commands.get("mediaEmbed").isEnabled?(this._positionToInsert=pd.fromPosition(t),this._timeoutId=Ao.window.setTimeout((()=>{n.model.change((t=>{let e;this._timeoutId=null,t.remove(i),i.detach(),"$graveyard"!==this._positionToInsert.root.rootName&&(e=this._positionToInsert),Vw(n.model,s,e,!1),this._positionToInsert.detach(),this._positionToInsert=null})),n.plugins.get("Delete").requestUndoOnBackspace()}),100)):i.detach()}}var Qw=n(9292),Zw={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Qw.Z,Zw);Qw.Z.locals;class Jw extends Mh{constructor(t,e){super(e);const n=e.t;this.focusTracker=new va,this.keystrokes=new ya,this.set("mediaURLInputValue",""),this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(n("Save"),Jh.check,"ck-button-save"),this.saveButtonView.type="submit",this.saveButtonView.bind("isEnabled").to(this,"mediaURLInputValue",(t=>!!t)),this.cancelButtonView=this._createButton(n("Cancel"),Jh.cancel,"ck-button-cancel","cancel"),this._focusables=new rh,this._focusCycler=new vu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this._validators=t,this.setTemplate({tag:"form",attributes:{class:["ck","ck-media-form","ck-responsive-form"],tabindex:"-1"},children:[this.urlInputView,this.saveButtonView,this.cancelButtonView]}),tu(this)}render(){super.render(),eu({view:this});[this.urlInputView,this.saveButtonView,this.cancelButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)})),this.keystrokes.listenTo(this.element);const t=t=>t.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t),this.listenTo(this.urlInputView.element,"selectstart",((t,e)=>{e.stopPropagation()}),{priority:"high"})}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}get url(){return this.urlInputView.fieldView.element.value.trim()}set url(t){this.urlInputView.fieldView.element.value=t.trim()}isValid(){this.resetFormStatus();for(const t of this._validators){const e=t(this);if(e)return this.urlInputView.errorText=e,!1}return!0}resetFormStatus(){this.urlInputView.errorText=null,this.urlInputView.infoText=this._urlInputViewInfoDefault}_createUrlInput(){const t=this.locale.t,e=new hg(this.locale,ug),n=e.fieldView;return this._urlInputViewInfoDefault=t("Paste the media URL in the input."),this._urlInputViewInfoTip=t("Tip: Paste the URL into the content to embed faster."),e.label=t("Media URL"),e.infoText=this._urlInputViewInfoDefault,n.on("input",(()=>{e.infoText=n.element.value?this._urlInputViewInfoTip:this._urlInputViewInfoDefault,this.mediaURLInputValue=n.element.value.trim()})),e}_createButton(t,e,n,o){const i=new cu(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),o&&i.delegate("execute").to(this,o),i}}class Xw extends F{static get requires(){return[Yw]}static get pluginName(){return"MediaEmbedUI"}init(){const t=this.editor,e=t.commands.get("mediaEmbed"),n=t.plugins.get(Yw).registry;t.ui.componentFactory.add("mediaEmbed",(o=>{const i=Gu(o),r=new Jw(function(t,e){return[e=>{if(!e.url.length)return t("The URL must not be empty.")},n=>{if(!e.hasMedia(n.url))return t("This media URL is not supported.")}]}(t.t,n),t.locale);return this._setUpDropdown(i,r,e,t),this._setUpForm(i,r,e),i}))}_setUpDropdown(t,e,n){const o=this.editor,i=o.t,r=t.buttonView;t.bind("isEnabled").to(n),t.panelView.children.add(e),r.set({label:i("Insert media"),icon:'',tooltip:!0}),r.on("open",(()=>{e.disableCssTransitions(),e.url=n.value||"",e.urlInputView.fieldView.select(),e.enableCssTransitions()}),{priority:"low"}),t.on("submit",(()=>{e.isValid()&&(o.execute("mediaEmbed",e.url),o.editing.view.focus())})),t.on("change:isOpen",(()=>e.resetFormStatus())),t.on("cancel",(()=>{o.editing.view.focus()}))}_setUpForm(t,e,n){e.delegate("submit","cancel").to(t),e.urlInputView.bind("value").to(n,"value"),e.urlInputView.bind("isReadOnly").to(n,"isEnabled",(t=>!t))}}var tA=n(4652),eA={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(tA.Z,eA);tA.Z.locals;function nA(t,e,n,{blockElements:o,inlineObjectElements:i}){let r=n.createPositionAt(t,"forward"==e?"after":"before");return r=r.getLastMatchingPosition((({item:t})=>t.is("element")&&!o.includes(t.name)&&!i.includes(t.name)),{direction:e}),"forward"==e?r.nodeAfter:r.nodeBefore}function oA(t,e){return!!t&&t.is("element")&&e.includes(t.name)}function iA(t,e){if(!t.childCount)return;const n=new Wd(t.document),o=function(t,e){const n=e.createRangeIn(t),o=new Po({name:/^p|h\d+$/,styles:{"mso-list":/.*/}}),i=[];for(const t of n)if("elementStart"===t.type&&o.match(t.item)){const e=aA(t.item);i.push({element:t.item,id:e.id,order:e.order,indent:e.indent})}return i}(t,n);if(!o.length)return;let i=null,r=1;o.forEach(((t,s)=>{const a=function(t,e){if(!t)return!0;if(t.id!==e.id)return e.indent-t.indent!=1;const n=e.element.previousSibling;if(!n)return!0;return o=n,!(o.is("element","ol")||o.is("element","ul"));var o}(o[s-1],t),c=a?null:o[s-1],l=(h=t,(d=c)?h.indent-d.indent:h.indent-1);var d,h;if(a&&(i=null,r=1),!i||0!==l){const o=function(t,e){const n=new RegExp(`@list l${t.id}:level${t.indent}\\s*({[^}]*)`,"gi"),o=/mso-level-number-format:([^;]{0,100});/gi,i=/mso-level-start-at:\s{0,100}([0-9]{0,10})\s{0,100};/gi,r=n.exec(e);let s="decimal",a="ol",c=null;if(r&&r[1]){const e=o.exec(r[1]);if(e&&e[1]&&(s=e[1].trim(),a="bullet"!==s&&"image"!==s?"ol":"ul"),"bullet"===s){const e=function(t){const e=function(t){if(t.getChild(0).is("$text"))return null;for(const e of t.getChildren()){if(!e.is("element","span"))continue;const t=e.getChild(0);return t.is("$text")?t:t.getChild(0)}}(t);if(!e)return null;const n=e._data;if("o"===n)return"circle";if("·"===n)return"disc";if("§"===n)return"square";return null}(t.element);e&&(s=e)}else{const t=i.exec(r[1]);t&&t[1]&&(c=parseInt(t[1]))}}return{type:a,startIndex:c,style:rA(s)}}(t,e);if(i){if(t.indent>r){const t=i.getChild(i.childCount-1),e=t.getChild(t.childCount-1);i=sA(o,e,n),r+=1}else if(t.indent1&&n.setAttribute("start",t.startIndex,i),i}function aA(t){const e={},n=t.getStyle("mso-list");if(n){const t=n.match(/(^|\s{1,100})l(\d+)/i),o=n.match(/\s{0,100}lfo(\d+)/i),i=n.match(/\s{0,100}level(\d+)/i);t&&o&&i&&(e.id=t[2],e.order=o[1],e.indent=i[1])}return e}const cA=/id=("|')docs-internal-guid-[-0-9a-f]+("|')/i;class lA{constructor(t){this.document=t}isActive(t){return cA.test(t)}execute(t){const e=new Wd(this.document),{body:n}=t._parsedData;!function(t,e){for(const n of t.getChildren())if(n.is("element","b")&&"normal"===n.getStyle("font-weight")){const o=t.getChildIndex(n);e.remove(n),e.insertChild(o,n.getChildren(),t)}}(n,e),function(t,e){for(const n of e.createRangeIn(t)){const t=n.item;if(t.is("element","li")){const n=t.getChild(0);n&&n.is("element","p")&&e.unwrapElement(n)}}}(n,e),function(t,e){const n=new tr(e.document.stylesProcessor),o=new ps(n,{renderingMode:"data"}),i=o.blockElements,r=o.inlineObjectElements,s=[];for(const n of e.createRangeIn(t)){const t=n.item;if(t.is("element","br")){const n=nA(t,"forward",e,{blockElements:i,inlineObjectElements:r}),o=nA(t,"backward",e,{blockElements:i,inlineObjectElements:r}),a=oA(n,i);(oA(o,i)||a)&&s.push(t)}}for(const t of s)t.hasClass("Apple-interchange-newline")?e.remove(t):e.replace(t,e.createElement("p"))}(n,e),t.content=n}}function dA(t,e){if(!t.childCount)return;const n=new Wd,o=function(t,e){const n=e.createRangeIn(t),o=new Po({name:/v:(.+)/}),i=[];for(const t of n){if("elementStart"!=t.type)continue;const e=t.item,n=e.previousSibling&&e.previousSibling.name||null;o.match(e)&&e.getAttribute("o:gfxdata")&&"v:shapetype"!==n&&i.push(t.item.getAttribute("id"))}return i}(t,n);!function(t,e,n){const o=n.createRangeIn(e),i=new Po({name:"img"}),r=[];for(const e of o)if(i.match(e.item)){const n=e.item,o=n.getAttribute("v:shapes")?n.getAttribute("v:shapes").split(" "):[];o.length&&o.every((e=>t.indexOf(e)>-1))?r.push(n):n.getAttribute("src")||r.push(n)}for(const t of r)n.remove(t)}(o,t,n),function(t,e){const n=e.createRangeIn(t),o=new Po({name:/v:(.+)/}),i=[];for(const t of n)"elementStart"==t.type&&o.match(t.item)&&i.push(t.item);for(const t of i)e.remove(t)}(t,n);const i=function(t,e){const n=e.createRangeIn(t),o=new Po({name:"img"}),i=[];for(const t of n)o.match(t.item)&&t.item.getAttribute("src").startsWith("file://")&&i.push(t.item);return i}(t,n);i.length&&function(t,e,n){if(t.length===e.length)for(let o=0;oString.fromCharCode(parseInt(t,16)))).join(""))}const uA=//i,gA=/xmlns:o="urn:schemas-microsoft-com/i;class mA{constructor(t){this.document=t}isActive(t){return uA.test(t)||gA.test(t)}execute(t){const{body:e,stylesString:n}=t._parsedData;iA(e,n),dA(e,t.dataTransfer.getData("text/rtf")),t.content=e}}function pA(t){return t.replace(/(\s+)<\/span>/g,((t,e)=>1===e.length?" ":Array(e.length+1).join("  ").substr(0,e.length)))}function fA(t,e){const n=new DOMParser,o=function(t){return pA(pA(t)).replace(/([^\S\r\n]*?)[\r\n]+([^\S\r\n]*<\/span>)/g,"$1$2").replace(/<\/span>/g,"").replace(/ <\//g," <\/o:p>/g," ").replace(/( |\u00A0)<\/o:p>/g,"").replace(/>([^\S\r\n]*[\r\n]\s*)<")}(function(t){const e="",n="",o=t.indexOf(e);if(o<0)return t;const i=t.indexOf(n,o+e.length);return t.substring(0,o+e.length)+(i>=0?t.substring(i):"")}(t=t.replace(//g,"")}(i.getData("text/html")):i.getData("text/plain")&&(((s=(s=i.getData("text/plain")).replace(//g,">").replace(/\r?\n\r?\n/g,"

").replace(/\r?\n/g,"
").replace(/^\s/," ").replace(/\s$/," ").replace(/\s\s/g,"  ")).includes("

")||s.includes("
"))&&(s=`

${s}

`),t=s),r=this.editor.data.htmlProcessor.toView(t)}var s;const a=new e(this,"inputTransformation");this.fire(a,{content:r,dataTransfer:i,targetRanges:n.targetRanges,method:n.method}),a.stop.called&&t.stop(),o.scrollToTheSelection()}),{priority:"low"}),this.listenTo(this,"inputTransformation",((t,e)=>{if(e.content.isEmpty)return;const o=this.editor.data.toModel(e.content,"$clipboardHolder");0!=o.childCount&&(t.stop(),n.change((()=>{this.fire("contentInsertion",{content:o,method:e.method,dataTransfer:e.dataTransfer,targetRanges:e.targetRanges})})))}),{priority:"low"}),this.listenTo(this,"contentInsertion",((t,e)=>{e.resultRange=n.insertContent(e.content)}),{priority:"low"})}_setupCopyCut(){const t=this.editor,e=t.model.document,n=t.editing.view.document,o=(o,i)=>{const r=i.dataTransfer;i.preventDefault();const s=t.data.toView(t.model.getSelectedContent(e.selection));n.fire("clipboardOutput",{dataTransfer:r,content:s,method:o.name})};this.listenTo(n,"copy",o,{priority:"low"}),this.listenTo(n,"cut",((e,n)=>{t.isReadOnly?n.preventDefault():o(e,n)}),{priority:"low"}),this.listenTo(n,"clipboardOutput",((n,o)=>{o.content.isEmpty||(o.dataTransfer.setData("text/html",this.editor.data.htmlProcessor.toData(o.content)),o.dataTransfer.setData("text/plain",Rg(o.content))),"cut"==o.method&&t.model.deleteContent(e.selection)}),{priority:"low"})}}function*Fg(t,e){for(const n of e)n&&t.getAttributeProperties(n[0]).copyOnEnter&&(yield n)}class Vg extends U{execute(){const t=this.editor.model,e=t.document;t.change((n=>{!function(t,e,n,o){const i=n.isCollapsed,r=n.getFirstRange(),s=r.start.parent,a=r.end.parent;if(o.isLimit(s)||o.isLimit(a))return void(i||s!=a||t.deleteContent(n));if(i){const t=Fg(e.model.schema,n.getAttributes());Ug(e,r.start),e.setSelectionAttribute(t)}else{const o=!(r.start.isAtStart&&r.end.isAtEnd),i=s==a;t.deleteContent(n,{leaveUnmerged:o}),o&&(i?Ug(e,n.focus):e.setSelection(a,0))}}(this.editor.model,n,e.selection,t.schema),this.fire("afterExecute",{writer:n})}))}}function Ug(t,e){t.split(e),t.setSelection(e.parent.nextSibling,0)}const Hg={insertParagraph:{isSoft:!1},insertLineBreak:{isSoft:!0}};class qg extends ys{constructor(t){super(t);const e=this.document;e.on("beforeinput",((n,o)=>{if(!this.isEnabled)return;const i=o.domEvent,r=Hg[o.inputType];if(!r)return;const s=new Yi(e,"enter",o.targetRanges[0]);e.fire(s,new Es(t,i,{isSoft:r.isSoft})),s.stop.called&&n.stop()}))}observe(){}}class Gg extends F{static get pluginName(){return"Enter"}init(){const t=this.editor,e=t.editing.view,n=e.document;e.addObserver(qg),t.commands.add("enter",new Vg(t)),this.listenTo(n,"enter",((o,i)=>{n.isComposing||i.preventDefault(),i.isSoft||(t.execute("enter"),e.scrollToTheSelection())}),{priority:"low"})}}class Wg{constructor(t,e=20){this._batch=null,this.model=t,this._size=0,this.limit=e,this._isLocked=!1,this._changeCallback=(t,e)=>{e.isLocal&&e.isUndoable&&e!==this._batch&&this._reset(!0)},this._selectionChangeCallback=()=>{this._reset()},this.model.document.on("change",this._changeCallback),this.model.document.selection.on("change:range",this._selectionChangeCallback),this.model.document.selection.on("change:attribute",this._selectionChangeCallback)}get batch(){return this._batch||(this._batch=this.model.createBatch({isTyping:!0})),this._batch}get size(){return this._size}input(t){this._size+=t,this._size>=this.limit&&this._reset(!0)}get isLocked(){return this._isLocked}lock(){this._isLocked=!0}unlock(){this._isLocked=!1}destroy(){this.model.document.off("change",this._changeCallback),this.model.document.selection.off("change:range",this._selectionChangeCallback),this.model.document.selection.off("change:attribute",this._selectionChangeCallback)}_reset(t=!1){this.isLocked&&!t||(this._batch=null,this._size=0)}}class Yg extends U{constructor(t,e){super(t),this.direction=e,this._buffer=new Wg(t.model,t.config.get("typing.undoStep"))}get buffer(){return this._buffer}execute(t={}){const e=this.editor.model,n=e.document;e.enqueueChange(this._buffer.batch,(o=>{this._buffer.lock();const i=o.createSelection(t.selection||n.selection),r=t.sequence||1,s=i.isCollapsed;if(i.isCollapsed&&e.modifySelection(i,{direction:this.direction,unit:t.unit,treatEmojiAsSingleUnit:!0}),this._shouldEntireContentBeReplacedWithParagraph(r))return void this._replaceEntireContentWithParagraph(o);if(this._shouldReplaceFirstBlockWithParagraph(i,r))return void this.editor.execute("paragraph",{selection:i});if(i.isCollapsed)return;let a=0;i.getFirstRange().getMinimalFlatRanges().forEach((t=>{a+=qi(t.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))})),e.deleteContent(i,{doNotResetEntireContent:s,direction:this.direction}),this._buffer.input(a),o.setSelection(i),this._buffer.unlock()}))}_shouldEntireContentBeReplacedWithParagraph(t){if(t>1)return!1;const e=this.editor.model,n=e.document.selection,o=e.schema.getLimitElement(n);if(!(n.isCollapsed&&n.containsEntireContent(o)))return!1;if(!e.schema.checkChild(o,"paragraph"))return!1;const i=o.getChild(0);return!i||!i.is("element","paragraph")}_replaceEntireContentWithParagraph(t){const e=this.editor.model,n=e.document.selection,o=e.schema.getLimitElement(n),i=t.createElement("paragraph");t.remove(t.createRangeIn(o)),t.insert(i,o),t.setSelection(i,0)}_shouldReplaceFirstBlockWithParagraph(t,e){const n=this.editor.model;if(e>1||"backward"!=this.direction)return!1;if(!t.isCollapsed)return!1;const o=t.getFirstPosition(),i=n.schema.getLimitElement(o),r=i.getChild(0);return o.parent==r&&(!!t.containsEntireContent(r)&&(!!n.schema.checkChild(i,"paragraph")&&"paragraph"!=r.name))}}const $g="word",Kg="selection",Qg="backward",Zg="forward",Jg={deleteContent:{unit:Kg,direction:Qg},deleteContentBackward:{unit:"codePoint",direction:Qg},deleteWordBackward:{unit:$g,direction:Qg},deleteHardLineBackward:{unit:Kg,direction:Qg},deleteSoftLineBackward:{unit:Kg,direction:Qg},deleteContentForward:{unit:"character",direction:Zg},deleteWordForward:{unit:$g,direction:Zg},deleteHardLineForward:{unit:Kg,direction:Zg},deleteSoftLineForward:{unit:Kg,direction:Zg}};class Xg extends ys{constructor(t){super(t);const e=t.document;let n=0;e.on("keydown",(()=>{n++})),e.on("keyup",(()=>{n=0})),e.on("beforeinput",((o,i)=>{if(!this.isEnabled)return;const{targetRanges:r,domEvent:s,inputType:a}=i,c=Jg[a];if(!c)return;const l={direction:c.direction,unit:c.unit,sequence:n};l.unit==Kg&&(l.selectionToRemove=t.createSelection(r[0])),cr.isAndroid&&"deleteContentBackward"===a&&(l.sequence=1,1!=r.length||r[0].start.parent==r[0].end.parent&&r[0].start.offset+1==r[0].end.offset||(l.unit=Kg,l.selectionToRemove=t.createSelection(r)));const d=new Yi(e,"delete",r[0]);e.fire(d,new Es(t,s,l)),d.stop.called&&o.stop()})),cr.isBlink&&function(t){const e=t.view,n=e.document;let o=null,i=!1;function r(t){return t==ur.backspace||t==ur.delete}function s(t){return t==ur.backspace?Qg:Zg}n.on("keydown",((t,{keyCode:e})=>{o=e,i=!1})),n.on("keyup",((a,{keyCode:c,domEvent:l})=>{const d=n.selection,h=t.isEnabled&&c==o&&r(c)&&!d.isCollapsed&&!i;if(o=null,h){const t=d.getFirstRange(),o=new Yi(n,"delete",t),i={unit:Kg,direction:s(c),selectionToRemove:d};n.fire(o,new Es(e,l,i))}})),n.on("beforeinput",((t,{inputType:e})=>{const n=Jg[e];r(o)&&n&&n.direction==s(o)&&(i=!0)})),n.on("beforeinput",((t,{inputType:e,data:n})=>{o==ur.delete&&"insertText"==e&&""==n&&t.stop()}),{priority:"high"})}(this)}observe(){}}class tm extends F{static get pluginName(){return"Delete"}init(){const t=this.editor,e=t.editing.view,n=e.document,o=t.model.document;e.addObserver(Xg),this._undoOnBackspace=!1;const i=new Yg(t,"forward");t.commands.add("deleteForward",i),t.commands.add("forwardDelete",i),t.commands.add("delete",new Yg(t,"backward")),this.listenTo(n,"delete",((o,i)=>{n.isComposing||i.preventDefault();const{direction:r,sequence:s,selectionToRemove:a,unit:c}=i,l="forward"===r?"deleteForward":"delete",d={sequence:s};if("selection"==c){const e=Array.from(a.getRanges()).map((e=>t.editing.mapper.toModelRange(e)));d.selection=t.model.createSelection(e)}else d.unit=c;t.execute(l,d),e.scrollToTheSelection()}),{priority:"low"}),this.editor.plugins.has("UndoEditing")&&(this.listenTo(n,"delete",((e,n)=>{this._undoOnBackspace&&"backward"==n.direction&&1==n.sequence&&"codePoint"==n.unit&&(this._undoOnBackspace=!1,t.execute("undo"),n.preventDefault(),e.stop())}),{context:"$capture"}),this.listenTo(o,"change",(()=>{this._undoOnBackspace=!1})))}requestUndoOnBackspace(){this.editor.plugins.has("UndoEditing")&&(this._undoOnBackspace=!0)}}class em extends w{constructor(){super(),this._stack=[]}add(t,e){const n=this._stack,o=n[0];this._insertDescriptor(t);const i=n[0];o===i||nm(o,i)||this.fire("change:top",{oldDescriptor:o,newDescriptor:i,writer:e})}remove(t,e){const n=this._stack,o=n[0];this._removeDescriptor(t);const i=n[0];o===i||nm(o,i)||this.fire("change:top",{oldDescriptor:o,newDescriptor:i,writer:e})}_insertDescriptor(t){const e=this._stack,n=e.findIndex((e=>e.id===t.id));if(nm(t,e[n]))return;n>-1&&e.splice(n,1);let o=0;for(;e[o]&&om(e[o],t);)o++;e.splice(o,0,t)}_removeDescriptor(t){const e=this._stack,n=e.findIndex((e=>e.id===t));n>-1&&e.splice(n,1)}}function nm(t,e){return t&&e&&t.priority==e.priority&&im(t.classes)==im(e.classes)}function om(t,e){return t.priority>e.priority||!(t.priorityim(e.classes)}function im(t){return Array.isArray(t)?t.sort().join(","):t}const rm='',sm="ck-widget_selected";function am(t){return!!t.is("element")&&!!t.getCustomProperty("widget")}function cm(t,e,n={}){if(!t.is("containerElement"))throw new c("widget-to-widget-wrong-element-type",null,{element:t});return e.setAttribute("contenteditable","false",t),e.addClass("ck-widget",t),e.setCustomProperty("widget",!0,t),t.getFillerOffset=pm,n.label&&function(t,e,n){n.setCustomProperty("widgetLabel",e,t)}(t,n.label,e),n.hasSelectionHandle&&function(t,e){const n=e.createUIElement("div",{class:"ck ck-widget__selection-handle"},(function(t){const e=this.toDomElement(t),n=new su;return n.set("content",rm),n.render(),e.appendChild(n.element),e}));e.insert(e.createPositionAt(t,0),n),e.addClass(["ck-widget_with-selection-handle"],t)}(t,e),hm(t,e),t}function lm(t,e,n){if(e.classes&&n.addClass(bo(e.classes),t),e.attributes)for(const o in e.attributes)n.setAttribute(o,e.attributes[o],t)}function dm(t,e,n){if(e.classes&&n.removeClass(bo(e.classes),t),e.attributes)for(const o in e.attributes)n.removeAttribute(o,t)}function hm(t,e,n=lm,o=dm){const i=new em;i.on("change:top",((e,i)=>{i.oldDescriptor&&o(t,i.oldDescriptor,i.writer),i.newDescriptor&&n(t,i.newDescriptor,i.writer)}));e.setCustomProperty("addHighlight",((t,e,n)=>i.add(e,n)),t),e.setCustomProperty("removeHighlight",((t,e,n)=>i.remove(e,n)),t)}function um(t){const e=t.getCustomProperty("widgetLabel");return e?"function"==typeof e?e():e:""}function gm(t,e,n={}){return e.addClass(["ck-editor__editable","ck-editor__nested-editable"],t),e.setAttribute("role","textbox",t),n.label&&e.setAttribute("aria-label",n.label,t),e.setAttribute("contenteditable",t.isReadOnly?"false":"true",t),t.on("change:isReadOnly",((n,o,i)=>{e.setAttribute("contenteditable",i?"false":"true",t)})),t.on("change:isFocused",((n,o,i)=>{i?e.addClass("ck-editor__nested-editable_focused",t):e.removeClass("ck-editor__nested-editable_focused",t)})),hm(t,e),t}function mm(t,e){const n=t.getSelectedElement();if(n){const o=bm(t);if(o)return e.createRange(e.createPositionAt(n,o))}return Kd(t,e)}function pm(){return null}const fm="widget-type-around";function km(t,e,n){return!!t&&am(t)&&!n.isInline(e)}function bm(t){return t.getAttribute(fm)}var wm=n(4921),_m={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(wm.Z,_m);wm.Z.locals;const Am=["before","after"],Cm=(new DOMParser).parseFromString('',"image/svg+xml").firstChild,vm="ck-widget__type-around_disabled";class ym extends F{constructor(t){super(t),this._currentFakeCaretModelElement=null}static get pluginName(){return"WidgetTypeAround"}static get requires(){return[Gg,tm]}init(){const t=this.editor,e=t.editing.view;this.on("change:isEnabled",((n,o,i)=>{e.change((t=>{for(const n of e.document.roots)i?t.removeClass(vm,n):t.addClass(vm,n)})),i||t.model.change((t=>{t.removeSelectionAttribute(fm)}))})),this._enableTypeAroundUIInjection(),this._enableInsertingParagraphsOnButtonClick(),this._enableInsertingParagraphsOnEnterKeypress(),this._enableInsertingParagraphsOnTypingKeystroke(),this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(),this._enableDeleteIntegration(),this._enableInsertContentIntegration(),this._enableInsertObjectIntegration(),this._enableDeleteContentIntegration()}destroy(){super.destroy(),this._currentFakeCaretModelElement=null}_insertParagraph(t,e){const n=this.editor,o=n.editing.view,i=n.model.schema.getAttributesWithProperty(t,"copyOnReplace",!0);n.execute("insertParagraph",{position:n.model.createPositionAt(t,e),attributes:i}),o.focus(),o.scrollToTheSelection()}_listenToIfEnabled(t,e,n,o){this.listenTo(t,e,((...t)=>{this.isEnabled&&n(...t)}),o)}_insertParagraphAccordingToFakeCaretPosition(){const t=this.editor.model.document.selection,e=bm(t);if(!e)return!1;const n=t.getSelectedElement();return this._insertParagraph(n,e),!0}_enableTypeAroundUIInjection(){const t=this.editor,e=t.model.schema,n=t.locale.t,o={before:n("Insert paragraph before block"),after:n("Insert paragraph after block")};t.editing.downcastDispatcher.on("insert",((t,n,i)=>{const r=i.mapper.toViewElement(n.item);km(r,n.item,e)&&function(t,e,n){const o=t.createUIElement("div",{class:"ck ck-reset_all ck-widget__type-around"},(function(t){const n=this.toDomElement(t);return function(t,e){for(const n of Am){const o=new ah({tag:"div",attributes:{class:["ck","ck-widget__type-around__button",`ck-widget__type-around__button_${n}`],title:e[n]},children:[t.ownerDocument.importNode(Cm,!0)]});t.appendChild(o.render())}}(n,e),function(t){const e=new ah({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});t.appendChild(e.render())}(n),n}));t.insert(t.createPositionAt(n,"end"),o)}(i.writer,o,r)}),{priority:"low"})}_enableTypeAroundFakeCaretActivationUsingKeyboardArrows(){const t=this.editor,e=t.model,n=e.document.selection,o=e.schema,i=t.editing.view;function r(t){return`ck-widget_type-around_show-fake-caret_${t}`}this._listenToIfEnabled(i.document,"arrowKey",((t,e)=>{this._handleArrowKeyPress(t,e)}),{context:[am,"$text"],priority:"high"}),this._listenToIfEnabled(n,"change:range",((e,n)=>{n.directChange&&t.model.change((t=>{t.removeSelectionAttribute(fm)}))})),this._listenToIfEnabled(e.document,"change:data",(()=>{const e=n.getSelectedElement();if(e){if(km(t.editing.mapper.toViewElement(e),e,o))return}t.model.change((t=>{t.removeSelectionAttribute(fm)}))})),this._listenToIfEnabled(t.editing.downcastDispatcher,"selection",((t,e,n)=>{const i=n.writer;if(this._currentFakeCaretModelElement){const t=n.mapper.toViewElement(this._currentFakeCaretModelElement);t&&(i.removeClass(Am.map(r),t),this._currentFakeCaretModelElement=null)}const s=e.selection.getSelectedElement();if(!s)return;const a=n.mapper.toViewElement(s);if(!km(a,s,o))return;const c=bm(e.selection);c&&(i.addClass(r(c),a),this._currentFakeCaretModelElement=s)})),this._listenToIfEnabled(t.ui.focusTracker,"change:isFocused",((e,n,o)=>{o||t.model.change((t=>{t.removeSelectionAttribute(fm)}))}))}_handleArrowKeyPress(t,e){const n=this.editor,o=n.model,i=o.document.selection,r=o.schema,s=n.editing.view,a=function(t,e){const n=kr(t,e);return"down"===n||"right"===n}(e.keyCode,n.locale.contentLanguageDirection),c=s.document.selection.getSelectedElement();let l;km(c,n.editing.mapper.toModelElement(c),r)?l=this._handleArrowKeyPressOnSelectedWidget(a):i.isCollapsed?l=this._handleArrowKeyPressWhenSelectionNextToAWidget(a):e.shiftKey||(l=this._handleArrowKeyPressWhenNonCollapsedSelection(a)),l&&(e.preventDefault(),t.stop())}_handleArrowKeyPressOnSelectedWidget(t){const e=this.editor.model,n=bm(e.document.selection);return e.change((e=>{if(!n)return e.setSelectionAttribute(fm,t?"after":"before"),!0;if(!(n===(t?"after":"before")))return e.removeSelectionAttribute(fm),!0;return!1}))}_handleArrowKeyPressWhenSelectionNextToAWidget(t){const e=this.editor,n=e.model,o=n.schema,i=e.plugins.get("Widget"),r=i._getObjectElementNextToSelection(t);return!!km(e.editing.mapper.toViewElement(r),r,o)&&(n.change((e=>{i._setSelectionOverElement(r),e.setSelectionAttribute(fm,t?"before":"after")})),!0)}_handleArrowKeyPressWhenNonCollapsedSelection(t){const e=this.editor,n=e.model,o=n.schema,i=e.editing.mapper,r=n.document.selection,s=t?r.getLastPosition().nodeBefore:r.getFirstPosition().nodeAfter;return!!km(i.toViewElement(s),s,o)&&(n.change((e=>{e.setSelection(s,"on"),e.setSelectionAttribute(fm,t?"after":"before")})),!0)}_enableInsertingParagraphsOnButtonClick(){const t=this.editor,e=t.editing.view;this._listenToIfEnabled(e.document,"mousedown",((n,o)=>{const i=o.domTarget.closest(".ck-widget__type-around__button");if(!i)return;const r=function(t){return t.classList.contains("ck-widget__type-around__button_before")?"before":"after"}(i),s=function(t,e){const n=t.closest(".ck-widget");return e.mapDomToView(n)}(i,e.domConverter),a=t.editing.mapper.toModelElement(s);this._insertParagraph(a,r),o.preventDefault(),n.stop()}))}_enableInsertingParagraphsOnEnterKeypress(){const t=this.editor,e=t.model.document.selection,n=t.editing.view;this._listenToIfEnabled(n.document,"enter",((n,o)=>{if("atTarget"!=n.eventPhase)return;const i=e.getSelectedElement(),r=t.editing.mapper.toViewElement(i),s=t.model.schema;let a;this._insertParagraphAccordingToFakeCaretPosition()?a=!0:km(r,i,s)&&(this._insertParagraph(i,o.isSoft?"before":"after"),a=!0),a&&(o.preventDefault(),n.stop())}),{context:am})}_enableInsertingParagraphsOnTypingKeystroke(){const t=this.editor.editing.view.document;this._listenToIfEnabled(t,"insertText",((e,n)=>{this._insertParagraphAccordingToFakeCaretPosition()&&(n.selection=t.selection)}),{priority:"high"}),cr.isAndroid?this._listenToIfEnabled(t,"keydown",((t,e)=>{229==e.keyCode&&this._insertParagraphAccordingToFakeCaretPosition()})):this._listenToIfEnabled(t,"compositionstart",(()=>{this._insertParagraphAccordingToFakeCaretPosition()}),{priority:"high"})}_enableDeleteIntegration(){const t=this.editor,e=t.editing.view,n=t.model,o=n.schema;this._listenToIfEnabled(e.document,"delete",((e,i)=>{if("atTarget"!=e.eventPhase)return;const r=bm(n.document.selection);if(!r)return;const s=i.direction,a=n.document.selection.getSelectedElement(),c="forward"==s;if("before"===r===c)t.execute("delete",{selection:n.createSelection(a,"on")});else{const e=o.getNearestSelectionRange(n.createPositionAt(a,r),s);if(e)if(e.isCollapsed){const i=n.createSelection(e.start);if(n.modifySelection(i,{direction:s}),i.focus.isEqual(e.start)){const t=function(t,e){let n=e;for(const o of e.getAncestors({parentFirst:!0})){if(o.childCount>1||t.isLimit(o))break;n=o}return n}(o,e.start.parent);n.deleteContent(n.createSelection(t,"on"),{doNotAutoparagraph:!0})}else n.change((n=>{n.setSelection(e),t.execute(c?"deleteForward":"delete")}))}else n.change((n=>{n.setSelection(e),t.execute(c?"deleteForward":"delete")}))}i.preventDefault(),e.stop()}),{context:am})}_enableInsertContentIntegration(){const t=this.editor,e=this.editor.model,n=e.document.selection;this._listenToIfEnabled(t.model,"insertContent",((t,[o,i])=>{if(i&&!i.is("documentSelection"))return;const r=bm(n);return r?(t.stop(),e.change((t=>{const i=n.getSelectedElement(),s=e.createPositionAt(i,r),a=t.createSelection(s),c=e.insertContent(o,a);return t.setSelection(a),c}))):void 0}),{priority:"high"})}_enableInsertObjectIntegration(){const t=this.editor,e=this.editor.model.document.selection;this._listenToIfEnabled(t.model,"insertObject",((t,n)=>{const[,o,,i={}]=n;if(o&&!o.is("documentSelection"))return;const r=bm(e);r&&(i.findOptimalPosition=r,n[3]=i)}),{priority:"high"})}_enableDeleteContentIntegration(){const t=this.editor,e=this.editor.model.document.selection;this._listenToIfEnabled(t.model,"deleteContent",((t,[n])=>{if(n&&!n.is("documentSelection"))return;bm(e)&&t.stop()}),{priority:"high"})}}function xm(t){const e=t.model;return(n,o)=>{const i=o.keyCode==ur.arrowup,r=o.keyCode==ur.arrowdown,s=o.shiftKey,a=e.document.selection;if(!i&&!r)return;const c=r;if(s&&function(t,e){return!t.isCollapsed&&t.isBackward==e}(a,c))return;const l=function(t,e,n){const o=t.model;if(n){const t=e.isCollapsed?e.focus:e.getLastPosition(),n=Em(o,t,"forward");if(!n)return null;const i=o.createRange(t,n),r=Dm(o.schema,i,"backward");return r?o.createRange(t,r):null}{const t=e.isCollapsed?e.focus:e.getFirstPosition(),n=Em(o,t,"backward");if(!n)return null;const i=o.createRange(n,t),r=Dm(o.schema,i,"forward");return r?o.createRange(r,t):null}}(t,a,c);if(l){if(l.isCollapsed){if(a.isCollapsed)return;if(s)return}(l.isCollapsed||function(t,e,n){const o=t.model,i=t.view.domConverter;if(n){const t=o.createSelection(e.start);o.modifySelection(t),t.focus.isAtEnd||e.start.isEqual(t.focus)||(e=o.createRange(t.focus,e.end))}const r=t.mapper.toViewRange(e),s=i.viewRangeToDom(r),a=Sa.getDomRangeRects(s);let c;for(const t of a)if(void 0!==c){if(Math.round(t.top)>=c)return!1;c=Math.max(c,Math.round(t.bottom))}else c=Math.round(t.bottom);return!0}(t,l,c))&&(e.change((t=>{const n=c?l.end:l.start;if(s){const o=e.createSelection(a.anchor);o.setFocus(n),t.setSelection(o)}else t.setSelection(n)})),n.stop(),o.preventDefault(),o.stopPropagation())}}}function Em(t,e,n){const o=t.schema,i=t.createRangeIn(e.root),r="forward"==n?"elementStart":"elementEnd";for(const{previousPosition:t,item:s,type:a}of i.getWalker({startPosition:e,direction:n})){if(o.isLimit(s)&&!o.isInline(s))return t;if(a==r&&o.isBlock(s))return null}return null}function Dm(t,e,n){const o="backward"==n?e.end:e.start;if(t.checkChild(o,"$text"))return o;for(const{nextPosition:o}of e.getWalker({direction:n}))if(t.checkChild(o,"$text"))return o;return null}var Im=n(3488),Tm={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Im.Z,Tm);Im.Z.locals;class Mm extends F{static get pluginName(){return"Widget"}static get requires(){return[ym,tm]}init(){const t=this.editor,e=t.editing.view,n=e.document;this._previouslySelected=new Set,this.editor.editing.downcastDispatcher.on("selection",((e,n,o)=>{const i=o.writer,r=n.selection;if(r.isCollapsed)return;const s=r.getSelectedElement();if(!s)return;const a=t.editing.mapper.toViewElement(s);am(a)&&o.consumable.consume(r,"selection")&&i.setSelection(i.createRangeOn(a),{fake:!0,label:um(a)})})),this.editor.editing.downcastDispatcher.on("selection",((t,e,n)=>{this._clearPreviouslySelectedWidgets(n.writer);const o=n.writer,i=o.document.selection;let r=null;for(const t of i.getRanges())for(const e of t){const t=e.item;am(t)&&!Sm(t,r)&&(o.addClass(sm,t),this._previouslySelected.add(t),r=t)}}),{priority:"low"}),e.addObserver(Wd),this.listenTo(n,"mousedown",((...t)=>this._onMousedown(...t))),this.listenTo(n,"arrowKey",((...t)=>{this._handleSelectionChangeOnArrowKeyPress(...t)}),{context:[am,"$text"]}),this.listenTo(n,"arrowKey",((...t)=>{this._preventDefaultOnArrowKeyPress(...t)}),{context:"$root"}),this.listenTo(n,"arrowKey",xm(this.editor.editing),{context:"$text"}),this.listenTo(n,"delete",((t,e)=>{this._handleDelete("forward"==e.direction)&&(e.preventDefault(),t.stop())}),{context:"$root"})}_onMousedown(t,e){const n=this.editor,o=n.editing.view,i=o.document;let r=e.target;if(function(t){let e=t;for(;e;){if(e.is("editableElement")&&!e.is("rootElement"))return!0;if(am(e))return!1;e=e.parent}return!1}(r)){if((cr.isSafari||cr.isGecko)&&e.domEvent.detail>=3){const t=n.editing.mapper,o=r.is("attributeElement")?r.findAncestor((t=>!t.is("attributeElement"))):r,i=t.toModelElement(o);e.preventDefault(),this.editor.model.change((t=>{t.setSelection(i,"in")}))}return}if(!am(r)&&(r=r.findAncestor(am),!r))return;cr.isAndroid&&e.preventDefault(),i.isFocused||o.focus();const s=n.editing.mapper.toModelElement(r);this._setSelectionOverElement(s)}_handleSelectionChangeOnArrowKeyPress(t,e){const n=e.keyCode,o=this.editor.model,i=o.schema,r=o.document.selection,s=r.getSelectedElement(),a=kr(n,this.editor.locale.contentLanguageDirection),c="down"==a||"right"==a,l="up"==a||"down"==a;if(s&&i.isObject(s)){const n=c?r.getLastPosition():r.getFirstPosition(),s=i.getNearestSelectionRange(n,c?"forward":"backward");return void(s&&(o.change((t=>{t.setSelection(s)})),e.preventDefault(),t.stop()))}if(!r.isCollapsed&&!e.shiftKey){const n=r.getFirstPosition(),s=r.getLastPosition(),a=n.nodeAfter,l=s.nodeBefore;return void((a&&i.isObject(a)||l&&i.isObject(l))&&(o.change((t=>{t.setSelection(c?s:n)})),e.preventDefault(),t.stop()))}if(!r.isCollapsed)return;const d=this._getObjectElementNextToSelection(c);if(d&&i.isObject(d)){if(i.isInline(d)&&l)return;this._setSelectionOverElement(d),e.preventDefault(),t.stop()}}_preventDefaultOnArrowKeyPress(t,e){const n=this.editor.model,o=n.schema,i=n.document.selection.getSelectedElement();i&&o.isObject(i)&&(e.preventDefault(),t.stop())}_handleDelete(t){if(this.editor.isReadOnly)return;const e=this.editor.model.document.selection;if(!e.isCollapsed)return;const n=this._getObjectElementNextToSelection(t);return n?(this.editor.model.change((t=>{let o=e.anchor.parent;for(;o.isEmpty;){const e=o;o=e.parent,t.remove(e)}this._setSelectionOverElement(n)})),!0):void 0}_setSelectionOverElement(t){this.editor.model.change((e=>{e.setSelection(e.createRangeOn(t))}))}_getObjectElementNextToSelection(t){const e=this.editor.model,n=e.schema,o=e.document.selection,i=e.createSelection(o);if(e.modifySelection(i,{direction:t?"forward":"backward"}),i.isEqual(o))return null;const r=t?i.focus.nodeBefore:i.focus.nodeAfter;return r&&n.isObject(r)?r:null}_clearPreviouslySelectedWidgets(t){for(const e of this._previouslySelected)t.removeClass(sm,e);this._previouslySelected.clear()}}function Sm(t,e){return!!e&&Array.from(t.getAncestors()).includes(e)}const Nm=function(t,e,n){var o=!0,i=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return D(n)&&(o="leading"in n?!!n.leading:o,i="trailing"in n?!!n.trailing:i),Vs(t,e,{leading:o,maxWait:e,trailing:i})};var Bm=n(903),Pm={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Bm.Z,Pm);Bm.Z.locals;class zm extends F{static get pluginName(){return"DragDrop"}static get requires(){return[jg,Mm]}init(){const t=this.editor,e=t.editing.view;this._draggedRange=null,this._draggingUid="",this._draggableElement=null,this._updateDropMarkerThrottled=Nm((t=>this._updateDropMarker(t)),40),this._removeDropMarkerDelayed=Rm((()=>this._removeDropMarker()),40),this._clearDraggableAttributesDelayed=Rm((()=>this._clearDraggableAttributes()),40),e.addObserver(Lg),e.addObserver(Wd),this._setupDragging(),this._setupContentInsertionIntegration(),this._setupClipboardInputIntegration(),this._setupDropMarker(),this._setupDraggableAttributeHandling(),this.listenTo(t,"change:isReadOnly",((t,e,n)=>{n?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")})),this.on("change:isEnabled",((t,e,n)=>{n||this._finalizeDragging(!1)})),cr.isAndroid&&this.forceDisabled("noAndroidSupport")}destroy(){return this._draggedRange&&(this._draggedRange.detach(),this._draggedRange=null),this._updateDropMarkerThrottled.cancel(),this._removeDropMarkerDelayed.cancel(),this._clearDraggableAttributesDelayed.cancel(),super.destroy()}_setupDragging(){const t=this.editor,e=t.model,n=e.document,o=t.editing.view,i=o.document;this.listenTo(i,"dragstart",((o,s)=>{const a=n.selection;if(s.target&&s.target.is("editableElement"))return void s.preventDefault();const c=s.target?jm(s.target):null;if(c){const n=t.editing.mapper.toModelElement(c);this._draggedRange=kc.fromRange(e.createRangeOn(n)),t.plugins.has("WidgetToolbarRepository")&&t.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop")}else if(!i.selection.isCollapsed){const t=i.selection.getSelectedElement();t&&am(t)||(this._draggedRange=kc.fromRange(a.getFirstRange()))}if(!this._draggedRange)return void s.preventDefault();this._draggingUid=r(),s.dataTransfer.effectAllowed=this.isEnabled?"copyMove":"copy",s.dataTransfer.setData("application/ckeditor5-dragging-uid",this._draggingUid);const l=e.createSelection(this._draggedRange.toRange()),d=t.data.toView(e.getSelectedContent(l));i.fire("clipboardOutput",{dataTransfer:s.dataTransfer,content:d,method:"dragstart"}),this.isEnabled||(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="")}),{priority:"low"}),this.listenTo(i,"dragend",((t,e)=>{this._finalizeDragging(!e.dataTransfer.isCanceled&&"move"==e.dataTransfer.dropEffect)}),{priority:"low"}),this.listenTo(i,"dragenter",(()=>{this.isEnabled&&o.focus()})),this.listenTo(i,"dragleave",(()=>{this._removeDropMarkerDelayed()})),this.listenTo(i,"dragging",((e,n)=>{if(!this.isEnabled)return void(n.dataTransfer.dropEffect="none");this._removeDropMarkerDelayed.cancel();const o=Lm(t,n.targetRanges,n.target);this._draggedRange||(n.dataTransfer.dropEffect="copy"),cr.isGecko||("copy"==n.dataTransfer.effectAllowed?n.dataTransfer.dropEffect="copy":["all","copyMove"].includes(n.dataTransfer.effectAllowed)&&(n.dataTransfer.dropEffect="move")),o&&this._updateDropMarkerThrottled(o)}),{priority:"low"})}_setupClipboardInputIntegration(){const t=this.editor,e=t.editing.view.document;this.listenTo(e,"clipboardInput",((e,n)=>{if("drop"!=n.method)return;const o=Lm(t,n.targetRanges,n.target);if(this._removeDropMarker(),!o)return this._finalizeDragging(!1),void e.stop();this._draggedRange&&this._draggingUid!=n.dataTransfer.getData("application/ckeditor5-dragging-uid")&&(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="");if("move"==Om(n.dataTransfer)&&this._draggedRange&&this._draggedRange.containsRange(o,!0))return this._finalizeDragging(!1),void e.stop();n.targetRanges=[t.editing.mapper.toViewRange(o)]}),{priority:"high"})}_setupContentInsertionIntegration(){const t=this.editor.plugins.get(jg);t.on("contentInsertion",((t,e)=>{if(!this.isEnabled||"drop"!==e.method)return;const n=e.targetRanges.map((t=>this.editor.editing.mapper.toModelRange(t)));this.editor.model.change((t=>t.setSelection(n)))}),{priority:"high"}),t.on("contentInsertion",((t,e)=>{if(!this.isEnabled||"drop"!==e.method)return;const n="move"==Om(e.dataTransfer),o=!e.resultRange||!e.resultRange.isCollapsed;this._finalizeDragging(o&&n)}),{priority:"lowest"})}_setupDraggableAttributeHandling(){const t=this.editor,e=t.editing.view,n=e.document;this.listenTo(n,"mousedown",((o,i)=>{if(cr.isAndroid||!i)return;this._clearDraggableAttributesDelayed.cancel();let r=jm(i.target);if(cr.isBlink&&!t.isReadOnly&&!r&&!n.selection.isCollapsed){const t=n.selection.getSelectedElement();t&&am(t)||(r=n.selection.editableElement)}r&&(e.change((t=>{t.setAttribute("draggable","true",r)})),this._draggableElement=t.editing.mapper.toModelElement(r))})),this.listenTo(n,"mouseup",(()=>{cr.isAndroid||this._clearDraggableAttributesDelayed()}))}_clearDraggableAttributes(){const t=this.editor.editing;t.view.change((e=>{this._draggableElement&&"$graveyard"!=this._draggableElement.root.rootName&&e.removeAttribute("draggable",t.mapper.toViewElement(this._draggableElement)),this._draggableElement=null}))}_setupDropMarker(){const t=this.editor;t.conversion.for("editingDowncast").markerToHighlight({model:"drop-target",view:{classes:["ck-clipboard-drop-target-range"]}}),t.conversion.for("editingDowncast").markerToElement({model:"drop-target",view:(e,{writer:n})=>{if(t.model.schema.checkChild(e.markerRange.start,"$text"))return n.createUIElement("span",{class:"ck ck-clipboard-drop-target-position"},(function(t){const e=this.toDomElement(t);return e.append("⁠",t.createElement("span"),"⁠"),e}))}})}_updateDropMarker(t){const e=this.editor,n=e.model.markers;e.model.change((e=>{n.has("drop-target")?n.get("drop-target").getRange().isEqual(t)||e.updateMarker("drop-target",{range:t}):e.addMarker("drop-target",{range:t,usingOperation:!1,affectsData:!1})}))}_removeDropMarker(){const t=this.editor.model;this._removeDropMarkerDelayed.cancel(),this._updateDropMarkerThrottled.cancel(),t.markers.has("drop-target")&&t.change((t=>{t.removeMarker("drop-target")}))}_finalizeDragging(t){const e=this.editor,n=e.model;this._removeDropMarker(),this._clearDraggableAttributes(),e.plugins.has("WidgetToolbarRepository")&&e.plugins.get("WidgetToolbarRepository").clearForceDisabled("dragDrop"),this._draggingUid="",this._draggedRange&&(t&&this.isEnabled&&n.deleteContent(n.createSelection(this._draggedRange),{doNotAutoparagraph:!0}),this._draggedRange.detach(),this._draggedRange=null)}}function Lm(t,e,n){const o=t.model,i=t.editing.mapper;let r=null;const s=e?e[0].start:null;if(n.is("uiElement")&&(n=n.parent),r=function(t,e){const n=t.model,o=t.editing.mapper;if(am(e))return n.createRangeOn(o.toModelElement(e));if(!e.is("editableElement")){const t=e.findAncestor((t=>am(t)||t.is("editableElement")));if(am(t))return n.createRangeOn(o.toModelElement(t))}return null}(t,n),r)return r;const a=function(t,e){const n=t.editing.mapper,o=t.editing.view,i=n.toModelElement(e);if(i)return i;const r=o.createPositionBefore(e),s=n.findMappedViewAncestor(r);return n.toModelElement(s)}(t,n),c=s?i.toModelPosition(s):null;return c?(r=function(t,e,n){const o=t.model;if(!o.schema.checkChild(n,"$block"))return null;const i=o.createPositionAt(n,0),r=e.path.slice(0,i.path.length),s=o.createPositionFromPath(e.root,r).nodeAfter;if(s&&o.schema.isObject(s))return o.createRangeOn(s);return null}(t,c,a),r||(r=o.schema.getNearestSelectionRange(c,cr.isGecko?"forward":"backward"),r||function(t,e){const n=t.model;let o=e;for(;o;){if(n.schema.isObject(o))return n.createRangeOn(o);o=o.parent}return null}(t,c.parent))):function(t,e){const n=t.model,o=n.schema,i=n.createPositionAt(e,0);return o.getNearestSelectionRange(i,"forward")}(t,a)}function Om(t){return cr.isGecko?t.dropEffect:["all","copyMove"].includes(t.effectAllowed)?"move":"copy"}function Rm(t,e){let n;function o(...i){o.cancel(),n=setTimeout((()=>t(...i)),e)}return o.cancel=()=>{clearTimeout(n)},o}function jm(t){if(t.is("editableElement"))return null;if(t.hasClass("ck-widget__selection-handle"))return t.findAncestor(am);if(am(t))return t;const e=t.findAncestor((t=>am(t)||t.is("editableElement")));return am(e)?e:null}class Fm extends F{static get pluginName(){return"PastePlainText"}static get requires(){return[jg]}init(){const t=this.editor,e=t.model,n=t.editing.view,o=n.document,i=e.document.selection;let r=!1;n.addObserver(Lg),this.listenTo(o,"keydown",((t,e)=>{r=e.shiftKey})),t.plugins.get(jg).on("contentInsertion",((t,n)=>{(r||function(t,e){if(t.childCount>1)return!1;const n=t.getChild(0);if(e.isObject(n))return!1;return 0==Array.from(n.getAttributeKeys()).length}(n.content,e.schema))&&e.change((t=>{const o=Array.from(i.getAttributes()).filter((([t])=>e.schema.getAttributeProperties(t).isFormatting));i.isCollapsed||e.deleteContent(i,{doNotAutoparagraph:!0}),o.push(...i.getAttributes());const r=t.createRangeIn(n.content);for(const e of r.getItems())e.is("$textProxy")&&t.setAttributes(o,e)}))}))}}class Vm extends F{static get pluginName(){return"Clipboard"}static get requires(){return[jg,zm,Fm]}}class Um extends U{execute(){const t=this.editor.model,e=t.document;t.change((n=>{!function(t,e,n){const o=n.isCollapsed,i=n.getFirstRange(),r=i.start.parent,s=i.end.parent,a=r==s;if(o){const o=Fg(t.schema,n.getAttributes());Hm(t,e,i.end),e.removeSelectionAttribute(n.getAttributeKeys()),e.setSelectionAttribute(o)}else{const o=!(i.start.isAtStart&&i.end.isAtEnd);t.deleteContent(n,{leaveUnmerged:o}),a?Hm(t,e,n.focus):o&&e.setSelection(s,0)}}(t,n,e.selection),this.fire("afterExecute",{writer:n})}))}refresh(){const t=this.editor.model,e=t.document;this.isEnabled=function(t,e){if(e.rangeCount>1)return!1;const n=e.anchor;if(!n||!t.checkChild(n,"softBreak"))return!1;const o=e.getFirstRange(),i=o.start.parent,r=o.end.parent;if((qm(i,t)||qm(r,t))&&i!==r)return!1;return!0}(t.schema,e.selection)}}function Hm(t,e,n){const o=e.createElement("softBreak");t.insertContent(o,n),e.setSelection(o,"after")}function qm(t,e){return!t.is("rootElement")&&(e.isLimit(t)||qm(t.parent,e))}class Gm extends F{static get pluginName(){return"ShiftEnter"}init(){const t=this.editor,e=t.model.schema,n=t.conversion,o=t.editing.view,i=o.document;e.register("softBreak",{allowWhere:"$text",isInline:!0}),n.for("upcast").elementToElement({model:"softBreak",view:"br"}),n.for("downcast").elementToElement({model:"softBreak",view:(t,{writer:e})=>e.createEmptyElement("br")}),o.addObserver(qg),t.commands.add("shiftEnter",new Um(t)),this.listenTo(i,"enter",((e,n)=>{i.isComposing||n.preventDefault(),n.isSoft&&(t.execute("shiftEnter"),o.scrollToTheSelection())}),{priority:"low"})}}class Wm extends U{constructor(t){super(t),this.affectsData=!1}execute(){const t=this.editor.model,e=t.document.selection;let n=t.schema.getLimitElement(e);if(e.containsEntireContent(n)||!Ym(t.schema,n))do{if(n=n.parent,!n)return}while(!Ym(t.schema,n));t.change((t=>{t.setSelection(n,"in")}))}}function Ym(t,e){return t.isLimit(e)&&(t.checkChild(e,"$text")||t.checkChild(e,"paragraph"))}const $m=pr("Ctrl+A");class Km extends F{static get pluginName(){return"SelectAllEditing"}init(){const t=this.editor,e=t.editing.view.document;t.commands.add("selectAll",new Wm(t)),this.listenTo(e,"keydown",((e,n)=>{mr(n)===$m&&(t.execute("selectAll"),n.preventDefault())}))}}class Qm extends F{static get pluginName(){return"SelectAllUI"}init(){const t=this.editor;t.ui.componentFactory.add("selectAll",(e=>{const n=t.commands.get("selectAll"),o=new lu(e),i=e.t;return o.set({label:i("Select all"),icon:'',keystroke:"Ctrl+A",tooltip:!0}),o.bind("isEnabled").to(n,"isEnabled"),this.listenTo(o,"execute",(()=>{t.execute("selectAll"),t.editing.view.focus()})),o}))}}class Zm extends F{static get requires(){return[Km,Qm]}static get pluginName(){return"SelectAll"}}class Jm extends U{constructor(t,e){super(t),this._buffer=new Wg(t.model,e)}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(t={}){const e=this.editor.model,n=e.document,o=t.text||"",i=o.length;let r=n.selection;t.selection?r=t.selection:t.range&&(r=e.createSelection(t.range));const s=t.resultRange;e.enqueueChange(this._buffer.batch,(t=>{this._buffer.lock(),e.deleteContent(r),o&&e.insertContent(t.createText(o,n.selection.getAttributes()),r),s?t.setSelection(s):r.is("documentSelection")||t.setSelection(r),this._buffer.unlock(),this._buffer.input(i)}))}}const Xm=["insertText","insertReplacementText"];class tp extends ys{constructor(t){super(t),cr.isAndroid&&Xm.push("insertCompositionText");const n=t.document;n.on("beforeinput",((o,i)=>{if(!this.isEnabled)return;const{data:r,targetRanges:s,inputType:a,domEvent:c}=i;if(!Xm.includes(a))return;const l=new e(n,"insertText");n.fire(l,new Es(t,c,{text:r,selection:t.createSelection(s)})),l.stop.called&&o.stop()})),n.on("compositionend",((e,{data:o,domEvent:i})=>{this.isEnabled&&!cr.isAndroid&&o&&n.fire("insertText",new Es(t,i,{text:o,selection:n.selection}))}),{priority:"lowest"})}observe(){}}class ep extends F{static get pluginName(){return"Input"}init(){const t=this.editor,e=t.model,n=t.editing.view,o=e.document.selection;n.addObserver(tp);const i=new Jm(t,t.config.get("typing.undoStep")||20);t.commands.add("insertText",i),t.commands.add("input",i),this.listenTo(n.document,"insertText",((o,i)=>{n.document.isComposing||i.preventDefault();const{text:r,selection:s,resultRange:a}=i,c=Array.from(s.getRanges()).map((e=>t.editing.mapper.toModelRange(e)));let l=r;if(cr.isAndroid){const t=Array.from(c[0].getItems()).reduce(((t,e)=>t+(e.is("$textProxy")?e.data:"")),"");t&&(t.length<=l.length?l.startsWith(t)&&(l=l.substring(t.length),c[0].start=c[0].start.getShiftedBy(t.length)):t.startsWith(l)&&(c[0].start=c[0].start.getShiftedBy(l.length),l=""))}const d={text:l,selection:e.createSelection(c)};a&&(d.resultRange=t.editing.mapper.toModelRange(a)),t.execute("insertText",d)})),cr.isAndroid?this.listenTo(n.document,"keydown",((t,r)=>{!o.isCollapsed&&229==r.keyCode&&n.document.isComposing&&np(e,i)})):this.listenTo(n.document,"compositionstart",(()=>{o.isCollapsed||np(e,i)}))}}function np(t,e){if(!e.isEnabled)return;const n=e.buffer;n.lock(),t.enqueueChange(n.batch,(()=>{t.deleteContent(t.document.selection)})),n.unlock()}class op extends F{static get requires(){return[ep,tm]}static get pluginName(){return"Typing"}}function ip(t,e){let n=t.start;return{text:Array.from(t.getItems()).reduce(((t,o)=>o.is("$text")||o.is("$textProxy")?t+o.data:(n=e.createPositionAfter(o),"")),""),range:e.createRange(n,t.end)}}class rp extends P{constructor(t,e){super(),this.model=t,this.testCallback=e,this._hasMatch=!1,this.set("isEnabled",!0),this.on("change:isEnabled",(()=>{this.isEnabled?this._startListening():(this.stopListening(t.document.selection),this.stopListening(t.document))})),this._startListening()}get hasMatch(){return this._hasMatch}_startListening(){const t=this.model.document;this.listenTo(t.selection,"change:range",((e,{directChange:n})=>{n&&(t.selection.isCollapsed?this._evaluateTextBeforeSelection("selection"):this.hasMatch&&(this.fire("unmatched"),this._hasMatch=!1))})),this.listenTo(t,"change:data",((t,e)=>{!e.isUndo&&e.isLocal&&this._evaluateTextBeforeSelection("data",{batch:e})}))}_evaluateTextBeforeSelection(t,e={}){const n=this.model,o=n.document.selection,i=n.createRange(n.createPositionAt(o.focus.parent,0),o.focus),{text:r,range:s}=ip(i,n),a=this.testCallback(r);if(!a&&this.hasMatch&&this.fire("unmatched"),this._hasMatch=!!a,a){const n=Object.assign(e,{text:r,range:s});"object"==typeof a&&Object.assign(n,a),this.fire(`matched:${t}`,n)}}}class sp extends F{constructor(t){super(t),this.attributes=new Set,this._overrideUid=null}static get pluginName(){return"TwoStepCaretMovement"}init(){const t=this.editor,e=t.model,n=t.editing.view,o=t.locale,i=e.document.selection;this.listenTo(n.document,"arrowKey",((t,e)=>{if(!i.isCollapsed)return;if(e.shiftKey||e.altKey||e.ctrlKey)return;const n=e.keyCode==ur.arrowright,r=e.keyCode==ur.arrowleft;if(!n&&!r)return;const s=o.contentLanguageDirection;let a=!1;a="ltr"===s&&n||"rtl"===s&&r?this._handleForwardMovement(e):this._handleBackwardMovement(e),!0===a&&t.stop()}),{context:"$text",priority:"highest"}),this._isNextGravityRestorationSkipped=!1,this.listenTo(i,"change:range",((t,e)=>{this._isNextGravityRestorationSkipped?this._isNextGravityRestorationSkipped=!1:this._isGravityOverridden&&(!e.directChange&&dp(i.getFirstPosition(),this.attributes)||this._restoreGravity())}))}registerAttribute(t){this.attributes.add(t)}_handleForwardMovement(t){const e=this.attributes,n=this.editor.model.document.selection,o=n.getFirstPosition();return!this._isGravityOverridden&&((!o.isAtStart||!ap(n,e))&&(!!dp(o,e)&&(lp(t),this._overrideGravity(),!0)))}_handleBackwardMovement(t){const e=this.attributes,n=this.editor.model,o=n.document.selection,i=o.getFirstPosition();return this._isGravityOverridden?(lp(t),this._restoreGravity(),cp(n,e,i),!0):i.isAtStart?!!ap(o,e)&&(lp(t),cp(n,e,i),!0):!!function(t,e){return dp(t.getShiftedBy(-1),e)}(i,e)&&(i.isAtEnd&&!ap(o,e)&&dp(i,e)?(lp(t),cp(n,e,i),!0):(this._isNextGravityRestorationSkipped=!0,this._overrideGravity(),!1))}get _isGravityOverridden(){return!!this._overrideUid}_overrideGravity(){this._overrideUid=this.editor.model.change((t=>t.overrideSelectionGravity()))}_restoreGravity(){this.editor.model.change((t=>{t.restoreSelectionGravity(this._overrideUid),this._overrideUid=null}))}}function ap(t,e){for(const n of e)if(t.hasAttribute(n))return!0;return!1}function cp(t,e,n){const o=n.nodeBefore;t.change((t=>{o?t.setSelectionAttribute(o.getAttributes()):t.removeSelectionAttribute(e)}))}function lp(t){t.preventDefault()}function dp(t,e){const{nodeBefore:n,nodeAfter:o}=t;for(const t of e){const e=n?n.getAttribute(t):void 0;if((o?o.getAttribute(t):void 0)!==e)return!0}return!1}var hp=/[\\^$.*+?()[\]{}|]/g,up=RegExp(hp.source);const gp=function(t){return(t=Zo(t))&&up.test(t)?t.replace(hp,"\\$&"):t},mp={copyright:{from:"(c)",to:"©"},registeredTrademark:{from:"(r)",to:"®"},trademark:{from:"(tm)",to:"™"},oneHalf:{from:/(^|[^/a-z0-9])(1\/2)([^/a-z0-9])$/i,to:[null,"½",null]},oneThird:{from:/(^|[^/a-z0-9])(1\/3)([^/a-z0-9])$/i,to:[null,"⅓",null]},twoThirds:{from:/(^|[^/a-z0-9])(2\/3)([^/a-z0-9])$/i,to:[null,"⅔",null]},oneForth:{from:/(^|[^/a-z0-9])(1\/4)([^/a-z0-9])$/i,to:[null,"¼",null]},threeQuarters:{from:/(^|[^/a-z0-9])(3\/4)([^/a-z0-9])$/i,to:[null,"¾",null]},lessThanOrEqual:{from:"<=",to:"≤"},greaterThanOrEqual:{from:">=",to:"≥"},notEqual:{from:"!=",to:"≠"},arrowLeft:{from:"<-",to:"←"},arrowRight:{from:"->",to:"→"},horizontalEllipsis:{from:"...",to:"…"},enDash:{from:/(^| )(--)( )$/,to:[null,"–",null]},emDash:{from:/(^| )(---)( )$/,to:[null,"—",null]},quotesPrimary:{from:_p('"'),to:[null,"“",null,"”"]},quotesSecondary:{from:_p("'"),to:[null,"‘",null,"’"]},quotesPrimaryEnGb:{from:_p("'"),to:[null,"‘",null,"’"]},quotesSecondaryEnGb:{from:_p('"'),to:[null,"“",null,"”"]},quotesPrimaryPl:{from:_p('"'),to:[null,"„",null,"”"]},quotesSecondaryPl:{from:_p("'"),to:[null,"‚",null,"’"]}},pp={symbols:["copyright","registeredTrademark","trademark"],mathematical:["oneHalf","oneThird","twoThirds","oneForth","threeQuarters","lessThanOrEqual","greaterThanOrEqual","notEqual","arrowLeft","arrowRight"],typography:["horizontalEllipsis","enDash","emDash"],quotes:["quotesPrimary","quotesSecondary"]},fp=["symbols","mathematical","typography","quotes"];function kp(t){return"string"==typeof t?new RegExp(`(${gp(t)})$`):t}function bp(t){return"string"==typeof t?()=>[t]:t instanceof Array?()=>t:t}function wp(t){return(t.textNode?t.textNode:t.nodeAfter).getAttributes()}function _p(t){return new RegExp(`(^|\\s)(${t})([^${t}]*)(${t})$`)}function Ap(t,e,n,o){return o.createRange(Cp(t,e,n,!0,o),Cp(t,e,n,!1,o))}function Cp(t,e,n,o,i){let r=t.textNode||(o?t.nodeBefore:t.nodeAfter),s=null;for(;r&&r.getAttribute(e)==n;)s=r,r=o?r.previousSibling:r.nextSibling;return s?i.createPositionAt(s,o?"before":"after"):t}class vp extends U{constructor(t){super(t),this._stack=[],this._createdBatches=new WeakSet,this.refresh(),this.listenTo(t.data,"set",((t,e)=>{e[1]={...e[1]};const n=e[1];n.batchType||(n.batchType={isUndoable:!1})}),{priority:"high"}),this.listenTo(t.data,"set",((t,e)=>{e[1].batchType.isUndoable||this.clearStack()}))}refresh(){this.isEnabled=this._stack.length>0}addBatch(t){const e=this.editor.model.document.selection,n={ranges:e.hasOwnRange?Array.from(e.getRanges()):[],isBackward:e.isBackward};this._stack.push({batch:t,selection:n}),this.refresh()}clearStack(){this._stack=[],this.refresh()}_restoreSelection(t,e,n){const o=this.editor.model,i=o.document,r=[],s=t.map((t=>t.getTransformedByOperations(n))),a=s.flat();for(const t of s){const e=t.filter((t=>t.root!=i.graveyard)).filter((t=>!xp(t,a)));e.length&&(yp(e),r.push(e[0]))}r.length&&o.change((t=>{t.setSelection(r,{backward:e})}))}_undo(t,e){const n=this.editor.model,o=n.document;this._createdBatches.add(e);const i=t.operations.slice().filter((t=>t.isDocumentOperation));i.reverse();for(const t of i){const i=t.baseVersion+1,r=Array.from(o.history.getOperations(i)),s=Rd([t.getReversed()],r,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA;for(const i of s)e.addOperation(i),n.applyOperation(i),o.history.setOperationAsUndone(t,i)}}}function yp(t){t.sort(((t,e)=>t.start.isBefore(e.start)?-1:1));for(let e=1;ee!==t&&e.containsRange(t,!0)))}class Ep extends vp{execute(t=null){const e=t?this._stack.findIndex((e=>e.batch==t)):this._stack.length-1,n=this._stack.splice(e,1)[0],o=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(o,(()=>{this._undo(n.batch,o);const t=this.editor.model.document.history.getOperations(n.batch.baseVersion);this._restoreSelection(n.selection.ranges,n.selection.isBackward,t),this.fire("revert",n.batch,o)})),this.refresh()}}class Dp extends vp{execute(){const t=this._stack.pop(),e=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(e,(()=>{const n=t.batch.operations[t.batch.operations.length-1].baseVersion+1,o=this.editor.model.document.history.getOperations(n);this._restoreSelection(t.selection.ranges,t.selection.isBackward,o),this._undo(t.batch,e)})),this.refresh()}}class Ip extends F{constructor(t){super(t),this._batchRegistry=new WeakSet}static get pluginName(){return"UndoEditing"}init(){const t=this.editor;this._undoCommand=new Ep(t),this._redoCommand=new Dp(t),t.commands.add("undo",this._undoCommand),t.commands.add("redo",this._redoCommand),this.listenTo(t.model,"applyOperation",((t,e)=>{const n=e[0];if(!n.isDocumentOperation)return;const o=n.batch,i=this._redoCommand._createdBatches.has(o),r=this._undoCommand._createdBatches.has(o);this._batchRegistry.has(o)||(this._batchRegistry.add(o),o.isUndoable&&(i?this._undoCommand.addBatch(o):r||(this._undoCommand.addBatch(o),this._redoCommand.clearStack())))}),{priority:"highest"}),this.listenTo(this._undoCommand,"revert",((t,e,n)=>{this._redoCommand.addBatch(n)})),t.keystrokes.set("CTRL+Z","undo"),t.keystrokes.set("CTRL+Y","redo"),t.keystrokes.set("CTRL+SHIFT+Z","redo")}}const Tp='',Mp='';class Sp extends F{static get pluginName(){return"UndoUI"}init(){const t=this.editor,e=t.locale,n=t.t,o="ltr"==e.uiLanguageDirection?Tp:Mp,i="ltr"==e.uiLanguageDirection?Mp:Tp;this._addButton("undo",n("Undo"),"CTRL+Z",o),this._addButton("redo",n("Redo"),"CTRL+Y",i)}_addButton(t,e,n,o){const i=this.editor;i.ui.componentFactory.add(t,(r=>{const s=i.commands.get(t),a=new lu(r);return a.set({label:e,icon:o,keystroke:n,tooltip:!0}),a.bind("isEnabled").to(s,"isEnabled"),this.listenTo(a,"execute",(()=>{i.execute(t),i.editing.view.focus()})),a}))}}class Np extends F{static get requires(){return[Ip,Sp]}static get pluginName(){return"Undo"}}class Bp extends P{constructor(){super();const t=new window.FileReader;this._reader=t,this._data=void 0,this.set("loaded",0),t.onprogress=t=>{this.loaded=t.loaded}}get error(){return this._reader.error}get data(){return this._data}read(t){const e=this._reader;return this.total=t.size,new Promise(((n,o)=>{e.onload=()=>{const t=e.result;this._data=t,n(t)},e.onerror=()=>{o("error")},e.onabort=()=>{o("aborted")},this._reader.readAsDataURL(t)}))}abort(){this._reader.abort()}}class Pp extends F{static get pluginName(){return"FileRepository"}static get requires(){return[Jh]}init(){this.loaders=new fo,this.loaders.on("change",(()=>this._updatePendingAction())),this._loadersMap=new Map,this._pendingAction=null,this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",((t,e)=>e?t/e*100:0))}getLoader(t){return this._loadersMap.get(t)||null}createLoader(t){if(!this.createUploadAdapter)return l("filerepository-no-upload-adapter"),null;const e=new zp(Promise.resolve(t),this.createUploadAdapter);return this.loaders.add(e),this._loadersMap.set(t,e),t instanceof Promise&&e.file.then((t=>{this._loadersMap.set(t,e)})).catch((()=>{})),e.on("change:uploaded",(()=>{let t=0;for(const e of this.loaders)t+=e.uploaded;this.uploaded=t})),e.on("change:uploadTotal",(()=>{let t=0;for(const e of this.loaders)e.uploadTotal&&(t+=e.uploadTotal);this.uploadTotal=t})),e}destroyLoader(t){const e=t instanceof zp?t:this.getLoader(t);e._destroy(),this.loaders.remove(e),this._loadersMap.forEach(((t,n)=>{t===e&&this._loadersMap.delete(n)}))}_updatePendingAction(){const t=this.editor.plugins.get(Jh);if(this.loaders.length){if(!this._pendingAction){const e=this.editor.t,n=t=>`${e("Upload in progress")} ${parseInt(t)}%.`;this._pendingAction=t.add(n(this.uploadedPercent)),this._pendingAction.bind("message").to(this,"uploadedPercent",n)}}else t.remove(this._pendingAction),this._pendingAction=null}}class zp extends P{constructor(t,e){super(),this.id=r(),this._filePromiseWrapper=this._createFilePromiseWrapper(t),this._adapter=e(this),this._reader=new Bp,this.set("status","idle"),this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",((t,e)=>e?t/e*100:0)),this.set("uploadResponse",null)}get file(){return this._filePromiseWrapper?this._filePromiseWrapper.promise.then((t=>this._filePromiseWrapper?t:null)):Promise.resolve(null)}get data(){return this._reader.data}read(){if("idle"!=this.status)throw new c("filerepository-read-wrong-status",this);return this.status="reading",this.file.then((t=>this._reader.read(t))).then((t=>{if("reading"!==this.status)throw this.status;return this.status="idle",t})).catch((t=>{if("aborted"===t)throw this.status="aborted","aborted";throw this.status="error",this._reader.error?this._reader.error:t}))}upload(){if("idle"!=this.status)throw new c("filerepository-upload-wrong-status",this);return this.status="uploading",this.file.then((()=>this._adapter.upload())).then((t=>(this.uploadResponse=t,this.status="idle",t))).catch((t=>{if("aborted"===this.status)throw"aborted";throw this.status="error",t}))}abort(){const t=this.status;this.status="aborted",this._filePromiseWrapper.isFulfilled?"reading"==t?this._reader.abort():"uploading"==t&&this._adapter.abort&&this._adapter.abort():(this._filePromiseWrapper.promise.catch((()=>{})),this._filePromiseWrapper.rejecter("aborted")),this._destroy()}_destroy(){this._filePromiseWrapper=void 0,this._reader=void 0,this._adapter=void 0,this.uploadResponse=void 0}_createFilePromiseWrapper(t){const e={};return e.promise=new Promise(((n,o)=>{e.rejecter=o,e.isFulfilled=!1,t.then((t=>{e.isFulfilled=!0,n(t)})).catch((t=>{e.isFulfilled=!0,o(t)}))})),e}}class Lp extends Mh{constructor(t){super(t),this.buttonView=new lu(t),this._fileInputView=new Op(t),this._fileInputView.bind("acceptedType").to(this),this._fileInputView.bind("allowMultipleFiles").to(this),this._fileInputView.delegate("done").to(this),this.setTemplate({tag:"span",attributes:{class:"ck-file-dialog-button"},children:[this.buttonView,this._fileInputView]}),this.buttonView.on("execute",(()=>{this._fileInputView.open()}))}focus(){this.buttonView.focus()}}class Op extends Mh{constructor(t){super(t),this.set("acceptedType",void 0),this.set("allowMultipleFiles",!1);const e=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck-hidden"],type:"file",tabindex:"-1",accept:e.to("acceptedType"),multiple:e.to("allowMultipleFiles")},on:{change:e.to((()=>{this.element&&this.element.files&&this.element.files.length&&this.fire("done",this.element.files),this.element.value=""}))}})}open(){this.element.click()}}const Rp="ckCsrfToken",jp="abcdefghijklmnopqrstuvwxyz0123456789";function Fp(){let t=function(t){t=t.toLowerCase();const e=document.cookie.split(";");for(const n of e){const e=n.split("=");if(decodeURIComponent(e[0].trim().toLowerCase())===t)return decodeURIComponent(e[1])}return null}(Rp);var e,n;return t&&40==t.length||(t=function(t){let e="";const n=new Uint8Array(t);window.crypto.getRandomValues(n);for(let t=0;t.5?o.toUpperCase():o}return e}(40),e=Rp,n=t,document.cookie=encodeURIComponent(e)+"="+encodeURIComponent(n)+";path=/"),t}class Vp{constructor(t,e,n){this.loader=t,this.url=e,this.t=n}upload(){return this.loader.file.then((t=>new Promise(((e,n)=>{this._initRequest(),this._initListeners(e,n,t),this._sendRequest(t)}))))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){const t=this.xhr=new XMLHttpRequest;t.open("POST",this.url,!0),t.responseType="json"}_initListeners(t,e,n){const o=this.xhr,i=this.loader,r=(0,this.t)("Cannot upload file:")+` ${n.name}.`;o.addEventListener("error",(()=>e(r))),o.addEventListener("abort",(()=>e())),o.addEventListener("load",(()=>{const n=o.response;if(!n||!n.uploaded)return e(n&&n.error&&n.error.message?n.error.message:r);t({default:n.url})})),o.upload&&o.upload.addEventListener("progress",(t=>{t.lengthComputable&&(i.uploadTotal=t.total,i.uploaded=t.loaded)}))}_sendRequest(t){const e=new FormData;e.append("upload",t),e.append("ckCsrfToken",Fp()),this.xhr.send(e)}}function Up(t,e,n,o){let i,r=null;"function"==typeof o?i=o:(r=t.commands.get(o),i=()=>{t.execute(o)}),t.model.document.on("change:data",((s,a)=>{if(r&&!r.isEnabled||!e.isEnabled)return;const c=va(t.model.document.selection.getRanges());if(!c.isCollapsed)return;if(a.isUndo||!a.isLocal)return;const l=Array.from(t.model.document.differ.getChanges()),d=l[0];if(1!=l.length||"insert"!==d.type||"$text"!=d.name||1!=d.length)return;const h=d.position.parent;if(h.is("element","codeBlock"))return;if(h.is("element","listItem")&&"function"!=typeof o&&!["numberedList","bulletedList","todoList"].includes(o))return;if(r&&!0===r.value)return;const u=h.getChild(0),g=t.model.createRangeOn(u);if(!g.containsRange(c)&&!c.end.isEqual(g.end))return;const m=n.exec(u.data.substr(0,c.end.offset));m&&t.model.enqueueChange((e=>{const n=e.createPositionAt(h,0),o=e.createPositionAt(h,m[0].length),r=new kc(n,o);if(!1!==i({match:m})){e.remove(r);const n=t.model.document.selection.getFirstRange(),o=e.createRangeIn(h);!h.isEmpty||o.isEqual(n)||o.containsRange(n,!0)||e.remove(h)}r.detach(),t.model.enqueueChange((()=>{t.plugins.get("Delete").requestUndoOnBackspace()}))}))}))}function Hp(t,e,n,o){let i,r;n instanceof RegExp?i=n:r=n,r=r||(t=>{let e;const n=[],o=[];for(;null!==(e=i.exec(t))&&!(e&&e.length<4);){let{index:t,1:i,2:r,3:s}=e;const a=i+r+s;t+=e[0].length-a.length;const c=[t,t+i.length],l=[t+i.length+r.length,t+i.length+r.length+s.length];n.push(c),n.push(l),o.push([t+i.length,t+i.length+r.length])}return{remove:n,format:o}}),t.model.document.on("change:data",((n,i)=>{if(i.isUndo||!i.isLocal||!e.isEnabled)return;const s=t.model,a=s.document.selection;if(!a.isCollapsed)return;const c=Array.from(s.document.differ.getChanges()),l=c[0];if(1!=c.length||"insert"!==l.type||"$text"!=l.name||1!=l.length)return;const d=a.focus,h=d.parent,{text:u,range:g}=function(t,e){let n=t.start;return{text:Array.from(t.getItems()).reduce(((t,o)=>!o.is("$text")&&!o.is("$textProxy")||o.getAttribute("code")?(n=e.createPositionAfter(o),""):t+o.data),""),range:e.createRange(n,t.end)}}(s.createRange(s.createPositionAt(h,0),d),s),m=r(u),p=qp(g.start,m.format,s),f=qp(g.start,m.remove,s);p.length&&f.length&&s.enqueueChange((e=>{if(!1!==o(e,p)){for(const t of f.reverse())e.remove(t);s.enqueueChange((()=>{t.plugins.get("Delete").requestUndoOnBackspace()}))}}))}))}function qp(t,e,n){return e.filter((t=>void 0!==t[0]&&void 0!==t[1])).map((e=>n.createRange(t.getShiftedBy(e[0]),t.getShiftedBy(e[1]))))}function Gp(t,e){return(n,o)=>{if(!t.commands.get(e).isEnabled)return!1;const i=t.model.schema.getValidRanges(o,e);for(const t of i)n.setAttribute(e,!0,t);n.removeSelectionAttribute(e)}}class Wp extends U{constructor(t,e){super(t),this.attributeKey=e}refresh(){const t=this.editor.model,e=t.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=t.schema.checkAttributeInSelection(e.selection,this.attributeKey)}execute(t={}){const e=this.editor.model,n=e.document.selection,o=void 0===t.forceValue?!this.value:t.forceValue;e.change((t=>{if(n.isCollapsed)o?t.setSelectionAttribute(this.attributeKey,!0):t.removeSelectionAttribute(this.attributeKey);else{const i=e.schema.getValidRanges(n.getRanges(),this.attributeKey);for(const e of i)o?t.setAttribute(this.attributeKey,o,e):t.removeAttribute(this.attributeKey,e)}}))}_getValueFromFirstAllowedNode(){const t=this.editor.model,e=t.schema,n=t.document.selection;if(n.isCollapsed)return n.hasAttribute(this.attributeKey);for(const t of n.getRanges())for(const n of t.getItems())if(e.checkAttribute(n,this.attributeKey))return n.hasAttribute(this.attributeKey);return!1}}const Yp="bold";class $p extends F{static get pluginName(){return"BoldEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:Yp}),t.model.schema.setAttributeProperties(Yp,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:Yp,view:"strong",upcastAlso:["b",t=>{const e=t.getStyle("font-weight");return e?"bold"==e||Number(e)>=600?{name:!0,styles:["font-weight"]}:void 0:null}]}),t.commands.add(Yp,new Wp(t,Yp)),t.keystrokes.set("CTRL+B",Yp)}}const Kp="bold";class Qp extends F{static get pluginName(){return"BoldUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(Kp,(n=>{const o=t.commands.get(Kp),i=new lu(n);return i.set({label:e("Bold"),icon:Xh.bold,keystroke:"CTRL+B",tooltip:!0,isToggleable:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(i,"execute",(()=>{t.execute(Kp),t.editing.view.focus()})),i}))}}const Zp="italic";class Jp extends F{static get pluginName(){return"ItalicEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:Zp}),t.model.schema.setAttributeProperties(Zp,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:Zp,view:"i",upcastAlso:["em",{styles:{"font-style":"italic"}}]}),t.commands.add(Zp,new Wp(t,Zp)),t.keystrokes.set("CTRL+I",Zp)}}const Xp="italic";class tf extends F{static get pluginName(){return"ItalicUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(Xp,(n=>{const o=t.commands.get(Xp),i=new lu(n);return i.set({label:e("Italic"),icon:'',keystroke:"CTRL+I",tooltip:!0,isToggleable:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(i,"execute",(()=>{t.execute(Xp),t.editing.view.focus()})),i}))}}class ef extends U{refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,n=e.schema,o=e.document.selection,i=Array.from(o.getSelectedBlocks()),r=void 0===t.forceValue?!this.value:t.forceValue;e.change((t=>{if(r){const e=i.filter((t=>nf(t)||rf(n,t)));this._applyQuote(t,e)}else this._removeQuote(t,i.filter(nf))}))}_getValue(){const t=va(this.editor.model.document.selection.getSelectedBlocks());return!(!t||!nf(t))}_checkEnabled(){if(this.value)return!0;const t=this.editor.model.document.selection,e=this.editor.model.schema,n=va(t.getSelectedBlocks());return!!n&&rf(e,n)}_removeQuote(t,e){of(t,e).reverse().forEach((e=>{if(e.start.isAtStart&&e.end.isAtEnd)return void t.unwrap(e.start.parent);if(e.start.isAtStart){const n=t.createPositionBefore(e.start.parent);return void t.move(e,n)}e.end.isAtEnd||t.split(e.end);const n=t.createPositionAfter(e.end.parent);t.move(e,n)}))}_applyQuote(t,e){const n=[];of(t,e).reverse().forEach((e=>{let o=nf(e.start);o||(o=t.createElement("blockQuote"),t.wrap(e,o)),n.push(o)})),n.reverse().reduce(((e,n)=>e.nextSibling==n?(t.merge(t.createPositionAfter(e)),e):n))}}function nf(t){return"blockQuote"==t.parent.name?t.parent:null}function of(t,e){let n,o=0;const i=[];for(;o{const o=t.model.document.differ.getChanges();for(const t of o)if("insert"==t.type){const o=t.position.nodeAfter;if(!o)continue;if(o.is("element","blockQuote")&&o.isEmpty)return n.remove(o),!0;if(o.is("element","blockQuote")&&!e.checkChild(t.position,o))return n.unwrap(o),!0;if(o.is("element")){const t=n.createRangeIn(o);for(const o of t.getItems())if(o.is("element","blockQuote")&&!e.checkChild(n.createPositionBefore(o),o))return n.unwrap(o),!0}}else if("remove"==t.type){const e=t.position.parent;if(e.is("element","blockQuote")&&e.isEmpty)return n.remove(e),!0}return!1}));const n=this.editor.editing.view.document,o=t.model.document.selection,i=t.commands.get("blockQuote");this.listenTo(n,"enter",((e,n)=>{if(!o.isCollapsed||!i.value)return;o.getLastPosition().parent.isEmpty&&(t.execute("blockQuote"),t.editing.view.scrollToTheSelection(),n.preventDefault(),e.stop())}),{context:"blockquote"}),this.listenTo(n,"delete",((e,n)=>{if("backward"!=n.direction||!o.isCollapsed||!i.value)return;const r=o.getLastPosition().parent;r.isEmpty&&!r.previousSibling&&(t.execute("blockQuote"),t.editing.view.scrollToTheSelection(),n.preventDefault(),e.stop())}),{context:"blockquote"})}}var af=n(3062),cf={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(af.Z,cf);af.Z.locals;class lf extends F{static get pluginName(){return"BlockQuoteUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add("blockQuote",(n=>{const o=t.commands.get("blockQuote"),i=new lu(n);return i.set({label:e("Block quote"),icon:Xh.quote,tooltip:!0,isToggleable:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(i,"execute",(()=>{t.execute("blockQuote"),t.editing.view.focus()})),i}))}}class df extends F{static get pluginName(){return"CKBoxUI"}afterInit(){const t=this.editor;if(!t.commands.get("ckbox"))return;const e=t.t;t.ui.componentFactory.add("ckbox",(n=>{const o=t.commands.get("ckbox"),i=new lu(n);return i.set({label:e("Open file manager"),icon:'',tooltip:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),i.on("execute",(()=>{t.execute("ckbox")})),i}))}}function hf({token:t,id:e,origin:n,width:o,extension:i}){const r=uf(t),s=function(t){const e=[10*t/100,80],n=Math.floor(Math.max(...e)),o=[Math.min(t,4e3)];let i=o[0];for(;i-n>=n;)i-=n,o.unshift(i);return o}(o),a=function(t){if("bmp"===t||"tiff"===t||"jpg"===t)return"jpeg";return t}(i);return{imageFallbackUrl:gf({environmentId:r,id:e,origin:n,width:o,extension:a}),imageSources:[{srcset:s.map((t=>`${gf({environmentId:r,id:e,origin:n,width:t,extension:"webp"})} ${t}w`)).join(","),sizes:`(max-width: ${o}px) 100vw, ${o}px`,type:"image/webp"}]}}function uf(t){const[,e]=t.value.split(".");return JSON.parse(atob(e)).aud}function gf({environmentId:t,id:e,origin:n,width:o,extension:i}){return new URL(`${t}/assets/${e}/images/${o}.${i}`,n).toString()}class mf extends U{constructor(t){super(t),this._chosenAssets=new Set,this._wrapper=null,this._initListeners()}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(){this.fire("ckbox:open")}_getValue(){return null!==this._wrapper}_checkEnabled(){const t=this.editor.commands.get("insertImage"),e=this.editor.commands.get("link");return!(!t.isEnabled&&!e.isEnabled)}_prepareOptions(){const t=this.editor.config.get("ckbox");return{theme:t.theme,language:t.language,tokenUrl:t.tokenUrl,serviceOrigin:t.serviceOrigin,assetsOrigin:t.assetsOrigin,dialog:{onClose:()=>this.fire("ckbox:close")},assets:{onChoose:t=>this.fire("ckbox:choose",t)}}}_initListeners(){const t=this.editor,e=t.model,n=!t.config.get("ckbox.ignoreDataId");this.on("ckbox",(()=>{this.refresh()}),{priority:"low"}),this.on("ckbox:open",(()=>{this.isEnabled&&!this.value&&(this._wrapper=_a(document,"div",{class:"ck ckbox-wrapper"}),document.body.appendChild(this._wrapper),window.CKBox.mount(this._wrapper,this._prepareOptions()))})),this.on("ckbox:close",(()=>{this.value&&(this._wrapper.remove(),this._wrapper=null)})),this.on("ckbox:choose",((o,i)=>{if(!this.isEnabled)return;const r=t.commands.get("insertImage"),s=t.commands.get("link"),a=t.plugins.get("CKBoxEditing"),c=function({assets:t,origin:e,token:n,isImageAllowed:o,isLinkAllowed:i}){return t.map((t=>({id:t.data.id,type:ff(t)?"image":"link",attributes:pf(t,n,e)}))).filter((t=>"image"===t.type?o:i))}({assets:i,origin:t.config.get("ckbox.assetsOrigin"),token:a.getToken(),isImageAllowed:r.isEnabled,isLinkAllowed:s.isEnabled});0!==c.length&&e.change((t=>{for(const e of c){const o=e===c[c.length-1];this._insertAsset(e,o,t),n&&(setTimeout((()=>this._chosenAssets.delete(e)),1e3),this._chosenAssets.add(e))}}))})),this.listenTo(t,"destroy",(()=>{this.fire("ckbox:close"),this._chosenAssets.clear()}))}_insertAsset(t,e,n){const o=this.editor.model.document.selection;n.removeSelectionAttribute("linkHref"),"image"===t.type?this._insertImage(t):this._insertLink(t,n),e||n.setSelection(o.getLastPosition())}_insertImage(t){const e=this.editor,{imageFallbackUrl:n,imageSources:o,imageTextAlternative:i}=t.attributes;e.execute("insertImage",{source:{src:n,sources:o,alt:i}})}_insertLink(t,e){const n=this.editor,o=n.model,i=o.document.selection,{linkName:r,linkHref:s}=t.attributes;if(i.isCollapsed){const t=Bo(i.getAttributes()),n=e.createText(r,t),s=o.insertContent(n);e.setSelection(s)}n.execute("link",s)}}function pf(t,e,n){if(ff(t)){const{imageFallbackUrl:o,imageSources:i}=hf({token:e,origin:n,id:t.data.id,width:t.data.metadata.width,extension:t.data.extension});return{imageFallbackUrl:o,imageSources:i,imageTextAlternative:t.data.metadata.description||""}}return{linkName:t.data.name,linkHref:kf(t,e,n)}}function ff(t){const e=t.data.metadata;return!!e&&(e.width&&e.height)}function kf(t,e,n){const o=uf(e),i=new URL(`${o}/assets/${t.data.id}/file`,n);return i.searchParams.set("download","true"),i.toString()}class bf extends F{static get requires(){return["ImageUploadEditing","ImageUploadProgress",Pp,Af]}static get pluginName(){return"CKBoxUploadAdapter"}async afterInit(){const t=this.editor,e=!!t.config.get("ckbox"),n=!!window.CKBox;if(!e&&!n)return;const o=t.plugins.get(Pp),i=t.plugins.get(Af);o.createUploadAdapter=e=>new wf(e,i.getToken(),t);const r=!t.config.get("ckbox.ignoreDataId"),s=t.plugins.get("ImageUploadEditing");r&&s.on("uploadComplete",((e,{imageElement:n,data:o})=>{t.model.change((t=>{t.setAttribute("ckboxImageId",o.ckboxImageId,n)}))}))}}class wf{constructor(t,e,n){this.loader=t,this.token=e,this.editor=n,this.controller=new AbortController,this.serviceOrigin=n.config.get("ckbox.serviceOrigin"),this.assetsOrigin=n.config.get("ckbox.assetsOrigin")}async getAvailableCategories(t=0){const e=new URL("categories",this.serviceOrigin);return e.searchParams.set("limit",50..toString()),e.searchParams.set("offset",t.toString()),this._sendHttpRequest({url:e}).then((async e=>{if(e.totalCount-(t+50)>0){const n=await this.getAvailableCategories(t+50);return[...e.items,...n]}return e.items})).catch((()=>{this.controller.signal.throwIfAborted(),d("ckbox-fetch-category-http-error")}))}async getCategoryIdForFile(t){const e=_f(t.name),n=await this.getAvailableCategories();if(!n)return null;const o=this.editor.config.get("ckbox.defaultUploadCategories");if(o){const t=Object.keys(o).find((t=>o[t].includes(e)));if(t){const e=n.find((e=>e.id===t||e.name===t));return e?e.id:null}}const i=n.find((t=>t.extensions.includes(e)));return i?i.id:null}async upload(){const t=this.editor.t,e=t("Cannot determine a category for the uploaded file."),n=await this.loader.file,o=await this.getCategoryIdForFile(n);if(!o)return Promise.reject(e);const i=new URL("assets",this.serviceOrigin),r=new FormData;r.append("categoryId",o),r.append("file",n);const s={method:"POST",url:i,data:r,onUploadProgress:t=>{t.lengthComputable&&(this.loader.uploadTotal=t.total,this.loader.uploaded=t.loaded)}};return this._sendHttpRequest(s).then((async t=>{const e=await this._getImageWidth(),o=_f(n.name),i=hf({token:this.token,id:t.id,origin:this.assetsOrigin,width:e,extension:o});return{ckboxImageId:t.id,default:i.imageFallbackUrl,sources:i.imageSources}})).catch((()=>{const e=t("Cannot upload file:")+` ${n.name}.`;return Promise.reject(e)}))}abort(){this.controller.abort()}_sendHttpRequest(t){const{url:e,data:n,onUploadProgress:o}=t,i=t.method||"GET",r=this.controller.signal,s=new XMLHttpRequest;s.open(i,e.toString(),!0),s.setRequestHeader("Authorization",this.token.value),s.setRequestHeader("CKBox-Version","CKEditor 5"),s.responseType="json";const a=()=>{s.abort()};return new Promise(((t,e)=>{r.addEventListener("abort",a),s.addEventListener("loadstart",(()=>{r.addEventListener("abort",a)})),s.addEventListener("loadend",(()=>{r.removeEventListener("abort",a)})),s.addEventListener("error",(()=>{e()})),s.addEventListener("abort",(()=>{e()})),s.addEventListener("load",(async()=>{const n=s.response;return!n||n.statusCode>=400?e(n&&n.message):t(n)})),o&&s.upload.addEventListener("progress",(t=>{o(t)})),s.send(n)}))}_getImageWidth(){return new Promise((t=>{const e=new Image;e.onload=()=>{URL.revokeObjectURL(e.src),t(e.width)},e.src=this.loader.data}))}}function _f(t){return t.match(/\.(?[^.]+)$/).groups.ext}class Af extends F{static get pluginName(){return"CKBoxEditing"}static get requires(){return["CloudServices","LinkEditing","PictureEditing",bf]}async init(){const t=this.editor,e=!!t.config.get("ckbox"),n=!!window.CKBox;if(!e&&!n)return;this._initConfig();const o=t.plugins.get("CloudServicesCore"),i=t.config.get("ckbox.tokenUrl"),r=t.config.get("cloudServices.tokenUrl");this._token=i===r?t.plugins.get("CloudServices").token:await o.createToken(i).init(),t.config.get("ckbox.ignoreDataId")||(this._initSchema(),this._initConversion(),this._initFixers()),n&&t.commands.add("ckbox",new mf(t))}getToken(){return this._token}_initConfig(){const t=this.editor;t.config.define("ckbox",{serviceOrigin:"https://api.ckbox.io",assetsOrigin:"https://ckbox.cloud",defaultUploadCategories:null,ignoreDataId:!1,language:t.locale.uiLanguage,theme:"default",tokenUrl:t.config.get("cloudServices.tokenUrl")});if(!t.config.get("ckbox.tokenUrl"))throw new c("ckbox-plugin-missing-token-url",this);t.plugins.has("ImageBlockEditing")||t.plugins.has("ImageInlineEditing")||d("ckbox-plugin-image-feature-missing",t)}_initSchema(){const t=this.editor.model.schema;t.extend("$text",{allowAttributes:"ckboxLinkId"}),t.isRegistered("imageBlock")&&t.extend("imageBlock",{allowAttributes:["ckboxImageId","ckboxLinkId"]}),t.isRegistered("imageInline")&&t.extend("imageInline",{allowAttributes:["ckboxImageId","ckboxLinkId"]}),t.addAttributeCheck(((t,e)=>{if(!!!t.last.getAttribute("linkHref")&&"ckboxLinkId"===e)return!1}))}_initConversion(){const t=this.editor;t.conversion.for("downcast").add((t=>{t.on("attribute:ckboxLinkId:imageBlock",((t,e,n)=>{const{writer:o,mapper:i,consumable:r}=n;if(!r.consume(e.item,t.name))return;const s=[...i.toViewElement(e.item).getChildren()].find((t=>"a"===t.name));s&&(e.item.hasAttribute("ckboxLinkId")?o.setAttribute("data-ckbox-resource-id",e.item.getAttribute("ckboxLinkId"),s):o.removeAttribute("data-ckbox-resource-id",s))}),{priority:"low"}),t.on("attribute:ckboxLinkId",((t,e,n)=>{const{writer:o,mapper:i,consumable:r}=n;if(r.consume(e.item,t.name)){if(e.attributeOldValue){const t=vf(o,e.attributeOldValue);o.unwrap(i.toViewRange(e.range),t)}if(e.attributeNewValue){const t=vf(o,e.attributeNewValue);if(e.item.is("selection")){const e=o.document.selection;o.wrap(e.getFirstRange(),t)}else o.wrap(i.toViewRange(e.range),t)}}}),{priority:"low"})})),t.conversion.for("upcast").add((t=>{t.on("element:a",((t,e,n)=>{const{writer:o,consumable:i}=n;if(!e.viewItem.getAttribute("href"))return;if(!i.consume(e.viewItem,{attributes:["data-ckbox-resource-id"]}))return;const r=e.viewItem.getAttribute("data-ckbox-resource-id");if(r)if(e.modelRange)for(let t of e.modelRange.getItems())t.is("$textProxy")&&(t=t.textNode),yf(t)&&o.setAttribute("ckboxLinkId",r,t);else{const t=e.modelCursor.nodeBefore||e.modelCursor.parent;o.setAttribute("ckboxLinkId",r,t)}}),{priority:"low"})})),t.conversion.for("downcast").attributeToAttribute({model:"ckboxImageId",view:"data-ckbox-resource-id"}),t.conversion.for("upcast").elementToAttribute({model:{key:"ckboxImageId",value:t=>t.getAttribute("data-ckbox-resource-id")},view:{attributes:{"data-ckbox-resource-id":/[\s\S]+/}}})}_initFixers(){const t=this.editor,e=t.model,n=e.document.selection;e.document.registerPostFixer(function(t){return e=>{let n=!1;const o=t.model,i=t.commands.get("ckbox");if(!i)return n;for(const t of o.document.differ.getChanges()){if("insert"!==t.type&&"attribute"!==t.type)continue;const o="insert"===t.type?new rc(t.position,t.position.getShiftedBy(t.length)):t.range,r="attribute"===t.type&&"linkHref"===t.attributeKey&&null===t.attributeNewValue;for(const t of o.getItems()){if(r&&t.hasAttribute("ckboxLinkId")){e.removeAttribute("ckboxLinkId",t),n=!0;continue}const o=Cf(t,i._chosenAssets);for(const i of o){const o="image"===i.type?"ckboxImageId":"ckboxLinkId";i.id!==t.getAttribute(o)&&(e.setAttribute(o,i.id,t),n=!0)}}}return n}}(t)),e.document.registerPostFixer(function(t){return e=>{!t.hasAttribute("linkHref")&&t.hasAttribute("ckboxLinkId")&&e.removeSelectionAttribute("ckboxLinkId")}}(n))}}function Cf(t,e){const n=t.is("element","imageInline")||t.is("element","imageBlock"),o=t.hasAttribute("linkHref");return[...e].filter((e=>"image"===e.type&&n?e.attributes.imageFallbackUrl===t.getAttribute("src"):"link"===e.type&&o?e.attributes.linkHref===t.getAttribute("linkHref"):void 0))}function vf(t,e){const n=t.createAttributeElement("a",{"data-ckbox-resource-id":e},{priority:5});return t.setCustomProperty("link",!0,n),n}function yf(t){return!!t.is("$text")||!(!t.is("element","imageInline")&&!t.is("element","imageBlock"))}class xf extends F{static get pluginName(){return"CKFinderUI"}init(){const t=this.editor,e=t.ui.componentFactory,n=t.t;e.add("ckfinder",(e=>{const o=t.commands.get("ckfinder"),i=new lu(e);return i.set({label:n("Insert image or file"),icon:'',tooltip:!0}),i.bind("isEnabled").to(o),i.on("execute",(()=>{t.execute("ckfinder"),t.editing.view.focus()})),i}))}}class Ef extends U{constructor(t){super(t),this.stopListening(this.editor.model.document,"change"),this.listenTo(this.editor.model.document,"change",(()=>this.refresh()),{priority:"low"})}refresh(){const t=this.editor.commands.get("insertImage"),e=this.editor.commands.get("link");this.isEnabled=t.isEnabled||e.isEnabled}execute(){const t=this.editor,e=this.editor.config.get("ckfinder.openerMethod")||"modal";if("popup"!=e&&"modal"!=e)throw new c("ckfinder-unknown-openermethod",t);const n=this.editor.config.get("ckfinder.options")||{};n.chooseFiles=!0;const o=n.onInit;n.language||(n.language=t.locale.uiLanguage),n.onInit=e=>{o&&o(e),e.on("files:choose",(n=>{const o=n.data.files.toArray(),i=o.filter((t=>!t.isImage())),r=o.filter((t=>t.isImage()));for(const e of i)t.execute("link",e.getUrl());const s=[];for(const t of r){const n=t.getUrl();s.push(n||e.request("file:getProxyUrl",{file:t}))}s.length&&Df(t,s)})),e.on("file:choose:resizedImage",(e=>{const n=e.data.resizedUrl;if(n)Df(t,[n]);else{const e=t.plugins.get("Notification"),n=t.locale.t;e.showWarning(n("Could not obtain resized image URL."),{title:n("Selecting resized image failed"),namespace:"ckfinder"})}}))},window.CKFinder[e](n)}}function Df(t,e){if(t.commands.get("insertImage").isEnabled)t.execute("insertImage",{source:e});else{const e=t.plugins.get("Notification"),n=t.locale.t;e.showWarning(n("Could not insert image at the current position."),{title:n("Inserting image failed"),namespace:"ckfinder"})}}class If extends F{static get pluginName(){return"CKFinderEditing"}static get requires(){return[pg,"LinkEditing"]}init(){const t=this.editor;if(!t.plugins.has("ImageBlockEditing")&&!t.plugins.has("ImageInlineEditing"))throw new c("ckfinder-missing-image-plugin",t);t.commands.add("ckfinder",new Ef(t))}}class Tf extends F{static get pluginName(){return"CloudServicesUploadAdapter"}static get requires(){return["CloudServices",Pp]}init(){const t=this.editor,e=t.plugins.get("CloudServices"),n=e.token,o=e.uploadUrl;n&&(this._uploadGateway=t.plugins.get("CloudServicesCore").createUploadGateway(n,o),t.plugins.get(Pp).createUploadAdapter=t=>new Mf(this._uploadGateway,t))}}class Mf{constructor(t,e){this.uploadGateway=t,this.loader=e}upload(){return this.loader.file.then((t=>(this.fileUploader=this.uploadGateway.upload(t),this.fileUploader.on("progress",((t,e)=>{this.loader.uploadTotal=e.total,this.loader.uploaded=e.uploaded})),this.fileUploader.send())))}abort(){this.fileUploader.abort()}}class Sf extends U{refresh(){const t=this.editor.model,e=va(t.document.selection.getSelectedBlocks());this.value=!!e&&e.is("element","paragraph"),this.isEnabled=!!e&&Nf(e,t.schema)}execute(t={}){const e=this.editor.model,n=e.document;e.change((o=>{const i=(t.selection||n.selection).getSelectedBlocks();for(const t of i)!t.is("element","paragraph")&&Nf(t,e.schema)&&o.rename(t,"paragraph")}))}}function Nf(t,e){return e.checkChild(t.parent,"paragraph")&&!e.isObject(t)}class Bf extends U{execute(t){const e=this.editor.model,n=t.attributes;let o=t.position;e.change((t=>{const i=t.createElement("paragraph");if(n&&e.schema.setAllowedAttributes(i,n,t),!e.schema.checkChild(o.parent,i)){const n=e.schema.findAllowedParent(o,i);if(!n)return;o=t.split(o,n).position}e.insertContent(i,o),t.setSelection(i,"in")}))}}class Pf extends F{static get pluginName(){return"Paragraph"}init(){const t=this.editor,e=t.model;t.commands.add("paragraph",new Sf(t)),t.commands.add("insertParagraph",new Bf(t)),e.schema.register("paragraph",{inheritAllFrom:"$block"}),t.conversion.elementToElement({model:"paragraph",view:"p"}),t.conversion.for("upcast").elementToElement({model:(t,{writer:e})=>Pf.paragraphLikeElements.has(t.name)?t.isEmpty?null:e.createElement("paragraph"):null,view:/.+/,converterPriority:"low"})}}Pf.paragraphLikeElements=new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td","th"]);class zf extends U{constructor(t,e){super(t),this.modelElements=e}refresh(){const t=va(this.editor.model.document.selection.getSelectedBlocks());this.value=!!t&&this.modelElements.includes(t.name)&&t.name,this.isEnabled=!!t&&this.modelElements.some((e=>Lf(t,e,this.editor.model.schema)))}execute(t){const e=this.editor.model,n=e.document,o=t.value;e.change((t=>{const i=Array.from(n.selection.getSelectedBlocks()).filter((t=>Lf(t,o,e.schema)));for(const e of i)e.is("element",o)||t.rename(e,o)}))}}function Lf(t,e,n){return n.checkChild(t.parent,e)&&!n.isObject(t)}const Of="paragraph";class Rf extends F{static get pluginName(){return"HeadingEditing"}constructor(t){super(t),t.config.define("heading",{options:[{model:"paragraph",title:"Paragraph",class:"ck-heading_paragraph"},{model:"heading1",view:"h2",title:"Heading 1",class:"ck-heading_heading1"},{model:"heading2",view:"h3",title:"Heading 2",class:"ck-heading_heading2"},{model:"heading3",view:"h4",title:"Heading 3",class:"ck-heading_heading3"}]})}static get requires(){return[Pf]}init(){const t=this.editor,e=t.config.get("heading.options"),n=[];for(const o of e)o.model!==Of&&(t.model.schema.register(o.model,{inheritAllFrom:"$block"}),t.conversion.elementToElement(o),n.push(o.model));this._addDefaultH1Conversion(t),t.commands.add("heading",new zf(t,n))}afterInit(){const t=this.editor,e=t.commands.get("enter"),n=t.config.get("heading.options");e&&this.listenTo(e,"afterExecute",((e,o)=>{const i=t.model.document.selection.getFirstPosition().parent;n.some((t=>i.is("element",t.model)))&&!i.is("element",Of)&&0===i.childCount&&o.writer.rename(i,Of)}))}_addDefaultH1Conversion(t){t.conversion.for("upcast").elementToElement({model:"heading1",view:"h1",converterPriority:s.get("low")+1})}}var jf=n(8733),Ff={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(jf.Z,Ff);jf.Z.locals;class Vf extends F{static get pluginName(){return"HeadingUI"}init(){const t=this.editor,e=t.t,n=function(t){const e=t.t,n={Paragraph:e("Paragraph"),"Heading 1":e("Heading 1"),"Heading 2":e("Heading 2"),"Heading 3":e("Heading 3"),"Heading 4":e("Heading 4"),"Heading 5":e("Heading 5"),"Heading 6":e("Heading 6")};return t.config.get("heading.options").map((t=>{const e=n[t.title];return e&&e!=t.title&&(t.title=e),t}))}(t),o=e("Choose heading"),i=e("Heading");t.ui.componentFactory.add("heading",(e=>{const r={},s=new fo,a=t.commands.get("heading"),c=t.commands.get("paragraph"),l=[a];for(const t of n){const e={type:"button",model:new fg({label:t.title,class:t.class,withText:!0})};"paragraph"===t.model?(e.model.bind("isOn").to(c,"value"),e.model.set("commandName","paragraph"),l.push(c)):(e.model.bind("isOn").to(a,"value",(e=>e===t.model)),e.model.set({commandName:"heading",commandValue:t.model})),s.add(e),r[t.model]=t.title}const d=Wu(e);return $u(d,s),d.buttonView.set({isOn:!1,withText:!0,tooltip:i}),d.extendTemplate({attributes:{class:["ck-heading-dropdown"]}}),d.bind("isEnabled").toMany(l,"isEnabled",((...t)=>t.some((t=>t)))),d.buttonView.bind("label").to(a,"value",c,"value",((t,e)=>{const n=t||e&&"paragraph";return r[n]?r[n]:o})),this.listenTo(d,"execute",(e=>{t.execute(e.source.commandName,e.source.commandValue?{value:e.source.commandValue}:void 0),t.editing.view.focus()})),d}))}}class Uf extends F{static get requires(){return[Cg]}static get pluginName(){return"WidgetToolbarRepository"}init(){const t=this.editor;if(t.plugins.has("BalloonToolbar")){const e=t.plugins.get("BalloonToolbar");this.listenTo(e,"show",(e=>{(function(t){const e=t.getSelectedElement();return!(!e||!am(e))})(t.editing.view.document.selection)&&e.stop()}),{priority:"high"})}this._toolbarDefinitions=new Map,this._balloon=this.editor.plugins.get("ContextualBalloon"),this.on("change:isEnabled",(()=>{this._updateToolbarsVisibility()})),this.listenTo(t.ui,"update",(()=>{this._updateToolbarsVisibility()})),this.listenTo(t.ui.focusTracker,"change:isFocused",(()=>{this._updateToolbarsVisibility()}),{priority:"low"})}destroy(){super.destroy();for(const t of this._toolbarDefinitions.values())t.view.destroy()}register(t,{ariaLabel:e,items:n,getRelatedElement:o,balloonClassName:i="ck-toolbar-container"}){if(!n.length)return void l("widget-toolbar-no-items",{toolbarId:t});const r=this.editor,s=r.t,a=new Bu(r.locale);if(a.ariaLabel=e||s("Widget toolbar"),this._toolbarDefinitions.has(t))throw new c("widget-toolbar-duplicated",this,{toolbarId:t});a.fillFromConfig(n,r.ui.componentFactory);const d={view:a,getRelatedElement:o,balloonClassName:i};r.ui.addToolbar(a,{isContextual:!0,beforeFocus:()=>{const t=o(r.editing.view.document.selection);t&&this._showToolbar(d,t)},afterBlur:()=>{this._hideToolbar(d)}}),this._toolbarDefinitions.set(t,d)}_updateToolbarsVisibility(){let t=0,e=null,n=null;for(const o of this._toolbarDefinitions.values()){const i=o.getRelatedElement(this.editor.editing.view.document.selection);if(this.isEnabled&&i)if(this.editor.ui.focusTracker.isFocused){const r=i.getAncestors().length;r>t&&(t=r,e=i,n=o)}else this._isToolbarVisible(o)&&this._hideToolbar(o);else this._isToolbarInBalloon(o)&&this._hideToolbar(o)}n&&this._showToolbar(n,e)}_hideToolbar(t){this._balloon.remove(t.view),this.stopListening(this._balloon,"change:visibleView")}_showToolbar(t,e){this._isToolbarVisible(t)?Hf(this.editor,e):this._isToolbarInBalloon(t)||(this._balloon.add({view:t.view,position:qf(this.editor,e),balloonClassName:t.balloonClassName}),this.listenTo(this._balloon,"change:visibleView",(()=>{for(const t of this._toolbarDefinitions.values())if(this._isToolbarVisible(t)){const e=t.getRelatedElement(this.editor.editing.view.document.selection);Hf(this.editor,e)}})))}_isToolbarVisible(t){return this._balloon.visibleView===t.view}_isToolbarInBalloon(t){return this._balloon.hasView(t.view)}}function Hf(t,e){const n=t.plugins.get("ContextualBalloon"),o=qf(t,e);n.updatePosition(o)}function qf(t,e){const n=t.editing.view,o=jh.defaultPositions;return{target:n.domConverter.mapViewToDom(e),positions:[o.northArrowSouth,o.northArrowSouthWest,o.northArrowSouthEast,o.southArrowNorth,o.southArrowNorthWest,o.southArrowNorthEast,o.viewportStickyNorth]}}var Gf=n(8506),Wf={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Gf.Z,Wf);Gf.Z.locals;class Yf extends U{refresh(){const t=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!t,this.isEnabled&&t.hasAttribute("alt")?this.value=t.getAttribute("alt"):this.value=!1}execute(t){const e=this.editor,n=e.plugins.get("ImageUtils"),o=e.model,i=n.getClosestSelectedImageElement(o.document.selection);o.change((e=>{e.setAttribute("alt",t.newValue,i)}))}}function $f(t){return t.createContainerElement("figure",{class:"image"},[t.createEmptyElement("img"),t.createSlot()])}function Kf(t,e){const n=t.plugins.get("ImageUtils"),o=t.plugins.has("ImageInlineEditing")&&t.plugins.has("ImageBlockEditing");return t=>{if(!n.isInlineImageView(t))return null;if(!o)return i(t);return(t.findAncestor(n.isBlockImageView)?"imageBlock":"imageInline")!==e?null:i(t)};function i(t){const e={name:!0};return t.hasAttribute("src")&&(e.attributes=["src"]),e}}function Qf(t,e){const n=va(e.getSelectedBlocks());return!n||t.isObject(n)||n.isEmpty&&"listItem"!=n.name?"imageBlock":"imageInline"}class Zf extends F{static get pluginName(){return"ImageUtils"}isImage(t){return this.isInlineImage(t)||this.isBlockImage(t)}isInlineImageView(t){return!!t&&t.is("element","img")}isBlockImageView(t){return!!t&&t.is("element","figure")&&t.hasClass("image")}insertImage(t={},e=null,n=null){const o=this.editor,i=o.model,r=i.document.selection;n=Jf(o,e||r,n),t={...Object.fromEntries(r.getAttributes()),...t};for(const e in t)i.schema.checkAttribute(n,e)||delete t[e];return i.change((o=>{const r=o.createElement(n,t);return i.insertObject(r,e,null,{setSelection:"on",findOptimalPosition:!e&&"imageInline"!=n}),r.parent?r:null}))}getClosestSelectedImageWidget(t){const e=t.getFirstPosition();if(!e)return null;const n=t.getSelectedElement();if(n&&this.isImageWidget(n))return n;let o=e.parent;for(;o;){if(o.is("element")&&this.isImageWidget(o))return o;o=o.parent}return null}getClosestSelectedImageElement(t){const e=t.getSelectedElement();return this.isImage(e)?e:t.getFirstPosition().findAncestor("imageBlock")}isImageAllowed(){const t=this.editor.model.document.selection;return function(t,e){if("imageBlock"==Jf(t,e)){const n=function(t,e){const n=mm(t,e).start.parent;if(n.isEmpty&&!n.is("element","$root"))return n.parent;return n}(e,t.model);if(t.model.schema.checkChild(n,"imageBlock"))return!0}else if(t.model.schema.checkChild(e.focus,"imageInline"))return!0;return!1}(this.editor,t)&&function(t){return[...t.focus.getAncestors()].every((t=>!t.is("element","imageBlock")))}(t)}toImageWidget(t,e,n){e.setCustomProperty("image",!0,t);return cm(t,e,{label:()=>{const e=this.findViewImgElement(t).getAttribute("alt");return e?`${e} ${n}`:n}})}isImageWidget(t){return!!t.getCustomProperty("image")&&am(t)}isBlockImage(t){return!!t&&t.is("element","imageBlock")}isInlineImage(t){return!!t&&t.is("element","imageInline")}findViewImgElement(t){if(this.isInlineImageView(t))return t;const e=this.editor.editing.view;for(const{item:n}of e.createRangeIn(t))if(this.isInlineImageView(n))return n}}function Jf(t,e,n){const o=t.model.schema,i=t.config.get("image.insert.type");return t.plugins.has("ImageBlockEditing")?t.plugins.has("ImageInlineEditing")?n||("inline"===i?"imageInline":"block"===i?"imageBlock":e.is("selection")?Qf(o,e):o.checkChild(e,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}class Xf extends F{static get requires(){return[Zf]}static get pluginName(){return"ImageTextAlternativeEditing"}init(){this.editor.commands.add("imageTextAlternative",new Yf(this.editor))}}var tk=n(1905),ek={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(tk.Z,ek);tk.Z.locals;var nk=n(6764),ok={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(nk.Z,ok);nk.Z.locals;class ik extends Mh{constructor(t){super(t);const e=this.locale.t;this.focusTracker=new ya,this.keystrokes=new xa,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(e("Save"),Xh.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(e("Cancel"),Xh.cancel,"ck-button-cancel","cancel"),this._focusables=new sh,this._focusCycler=new yu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:[this.labeledInput,this.saveButtonView,this.cancelButtonView]}),eu(this)}render(){super.render(),this.keystrokes.listenTo(this.element),nu({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createButton(t,e,n,o){const i=new lu(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),o&&i.delegate("execute").to(this,o),i}_createLabeledInputView(){const t=this.locale.t,e=new gg(this.locale,mg);return e.label=t("Text alternative"),e}}function rk(t){const e=t.editing.view,n=jh.defaultPositions,o=t.plugins.get("ImageUtils");return{target:e.domConverter.mapViewToDom(o.getClosestSelectedImageWidget(e.document.selection)),positions:[n.northArrowSouth,n.northArrowSouthWest,n.northArrowSouthEast,n.southArrowNorth,n.southArrowNorthWest,n.southArrowNorthEast,n.viewportStickyNorth]}}class sk extends F{static get requires(){return[Cg]}static get pluginName(){return"ImageTextAlternativeUI"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const t=this.editor,e=t.t;t.ui.componentFactory.add("imageTextAlternative",(n=>{const o=t.commands.get("imageTextAlternative"),i=new lu(n);return i.set({label:e("Change image text alternative"),icon:Xh.lowVision,tooltip:!0}),i.bind("isEnabled").to(o,"isEnabled"),i.bind("isOn").to(o,"value",(t=>!!t)),this.listenTo(i,"execute",(()=>{this._showForm()})),i}))}_createForm(){const t=this.editor,e=t.editing.view.document,n=t.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new ik(t.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{t.execute("imageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this._form.keystrokes.set("Esc",((t,e)=>{this._hideForm(!0),e()})),this.listenTo(t.ui,"update",(()=>{n.getClosestSelectedImageWidget(e.selection)?this._isVisible&&function(t){const e=t.plugins.get("ContextualBalloon");if(t.plugins.get("ImageUtils").getClosestSelectedImageWidget(t.editing.view.document.selection)){const n=rk(t);e.updatePosition(n)}}(t):this._hideForm(!0)})),tu({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const t=this.editor,e=t.commands.get("imageTextAlternative"),n=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:rk(t)}),n.fieldView.value=n.fieldView.element.value=e.value||"",this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(t){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),t&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class ak extends F{static get requires(){return[Xf,sk]}static get pluginName(){return"ImageTextAlternative"}}function ck(t,e){return t=>{t.on(`attribute:srcset:${e}`,n)};function n(e,n,o){if(!o.consumable.consume(n.item,e.name))return;const i=o.writer,r=o.mapper.toViewElement(n.item),s=t.findViewImgElement(r);if(null===n.attributeNewValue){const t=n.attributeOldValue;t.data&&(i.removeAttribute("srcset",s),i.removeAttribute("sizes",s),t.width&&i.removeAttribute("width",s))}else{const t=n.attributeNewValue;t.data&&(i.setAttribute("srcset",t.data,s),i.setAttribute("sizes","100vw",s),t.width&&i.setAttribute("width",t.width,s))}}}function lk(t,e,n){return t=>{t.on(`attribute:${n}:${e}`,o)};function o(e,n,o){if(!o.consumable.consume(n.item,e.name))return;const i=o.writer,r=o.mapper.toViewElement(n.item),s=t.findViewImgElement(r);i.setAttribute(n.attributeKey,n.attributeNewValue||"",s)}}class dk extends ys{observe(t){this.listenTo(t,"load",((t,e)=>{const n=e.target;this.checkShouldIgnoreEventFromTarget(n)||"IMG"==n.tagName&&this._fireEvents(e)}),{useCapture:!0})}_fireEvents(t){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",t))}}class hk extends U{constructor(t){super(t);const e=t.config.get("image.insert.type");t.plugins.has("ImageBlockEditing")||"block"===e&&l("image-block-plugin-required"),t.plugins.has("ImageInlineEditing")||"inline"===e&&l("image-inline-plugin-required")}refresh(){this.isEnabled=this.editor.plugins.get("ImageUtils").isImageAllowed()}execute(t){const e=bo(t.source),n=this.editor.model.document.selection,o=this.editor.plugins.get("ImageUtils"),i=Object.fromEntries(n.getAttributes());e.forEach(((t,e)=>{const r=n.getSelectedElement();if("string"==typeof t&&(t={src:t}),e&&r&&o.isImage(r)){const e=this.editor.model.createPositionAfter(r);o.insertImage({...t,...i},e)}else o.insertImage({...t,...i})}))}}class uk extends F{static get requires(){return[Zf]}static get pluginName(){return"ImageEditing"}init(){const t=this.editor,e=t.conversion;t.editing.view.addObserver(dk),e.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:{key:"srcset",value:t=>{const e={data:t.getAttribute("srcset")};return t.hasAttribute("width")&&(e.width=t.getAttribute("width")),e}}});const n=new hk(t);t.commands.add("insertImage",n),t.commands.add("imageInsert",n)}}class gk extends U{constructor(t,e){super(t),this._modelElementName=e}refresh(){const t=this.editor.plugins.get("ImageUtils"),e=t.getClosestSelectedImageElement(this.editor.model.document.selection);"imageBlock"===this._modelElementName?this.isEnabled=t.isInlineImage(e):this.isEnabled=t.isBlockImage(e)}execute(){const t=this.editor,e=this.editor.model,n=t.plugins.get("ImageUtils"),o=n.getClosestSelectedImageElement(e.document.selection),i=Object.fromEntries(o.getAttributes());return i.src||i.uploadId?e.change((t=>{const r=Array.from(e.markers).filter((t=>t.getRange().containsItem(o))),s=n.insertImage(i,e.createSelection(o,"on"),this._modelElementName);if(!s)return null;const a=t.createRangeOn(s);for(const e of r){const n=e.getRange(),o="$graveyard"!=n.root.rootName?n.getJoined(a,!0):a;t.updateMarker(e,{range:o})}return{oldElement:o,newElement:s}})):null}}class mk extends F{static get requires(){return[uk,Zf,jg]}static get pluginName(){return"ImageBlockEditing"}init(){const t=this.editor;t.model.schema.register("imageBlock",{inheritAllFrom:"$blockObject",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),t.plugins.has("ImageInlineEditing")&&(t.commands.add("imageTypeBlock",new gk(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const t=this.editor,e=t.t,n=t.conversion,o=t.plugins.get("ImageUtils");n.for("dataDowncast").elementToStructure({model:"imageBlock",view:(t,{writer:e})=>$f(e)}),n.for("editingDowncast").elementToStructure({model:"imageBlock",view:(t,{writer:n})=>o.toImageWidget($f(n),n,e("image widget"))}),n.for("downcast").add(lk(o,"imageBlock","src")).add(lk(o,"imageBlock","alt")).add(ck(o,"imageBlock")),n.for("upcast").elementToElement({view:Kf(t,"imageBlock"),model:(t,{writer:e})=>e.createElement("imageBlock",t.hasAttribute("src")?{src:t.getAttribute("src")}:null)}).add(function(t){return t=>{t.on("element:figure",e)};function e(e,n,o){if(!o.consumable.test(n.viewItem,{name:!0,classes:"image"}))return;const i=t.findViewImgElement(n.viewItem);if(!i||!o.consumable.test(i,{name:!0}))return;o.consumable.consume(n.viewItem,{name:!0,classes:"image"});const r=va(o.convertItem(i,n.modelCursor).modelRange.getItems());r?(o.convertChildren(n.viewItem,r),o.updateConversionResult(r,n)):o.consumable.revert(n.viewItem,{name:!0,classes:"image"})}}(o))}_setupClipboardIntegration(){const t=this.editor,e=t.model,n=t.editing.view,o=t.plugins.get("ImageUtils");this.listenTo(t.plugins.get("ClipboardPipeline"),"inputTransformation",((i,r)=>{const s=Array.from(r.content.getChildren());let a;if(!s.every(o.isInlineImageView))return;a=r.targetRanges?t.editing.mapper.toModelRange(r.targetRanges[0]):e.document.selection.getFirstRange();const c=e.createSelection(a);if("imageBlock"===Qf(e.schema,c)){const t=new Yd(n.document),e=s.map((e=>t.createElement("figure",{class:"image"},e)));r.content=t.createDocumentFragment(e)}}))}}var pk=n(3508),fk={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(pk.Z,fk);pk.Z.locals;class kk extends F{static get requires(){return[mk,Mm,ak]}static get pluginName(){return"ImageBlock"}}class bk extends F{static get requires(){return[uk,Zf,jg]}static get pluginName(){return"ImageInlineEditing"}init(){const t=this.editor,e=t.model.schema;e.register("imageInline",{inheritAllFrom:"$inlineObject",allowAttributes:["alt","src","srcset"]}),e.addChildCheck(((t,e)=>{if(t.endsWith("caption")&&"imageInline"===e.name)return!1})),this._setupConversion(),t.plugins.has("ImageBlockEditing")&&(t.commands.add("imageTypeInline",new gk(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const t=this.editor,e=t.t,n=t.conversion,o=t.plugins.get("ImageUtils");n.for("dataDowncast").elementToElement({model:"imageInline",view:(t,{writer:e})=>e.createEmptyElement("img")}),n.for("editingDowncast").elementToStructure({model:"imageInline",view:(t,{writer:n})=>o.toImageWidget(function(t){return t.createContainerElement("span",{class:"image-inline"},t.createEmptyElement("img"))}(n),n,e("image widget"))}),n.for("downcast").add(lk(o,"imageInline","src")).add(lk(o,"imageInline","alt")).add(ck(o,"imageInline")),n.for("upcast").elementToElement({view:Kf(t,"imageInline"),model:(t,{writer:e})=>e.createElement("imageInline",t.hasAttribute("src")?{src:t.getAttribute("src")}:null)})}_setupClipboardIntegration(){const t=this.editor,e=t.model,n=t.editing.view,o=t.plugins.get("ImageUtils");this.listenTo(t.plugins.get("ClipboardPipeline"),"inputTransformation",((i,r)=>{const s=Array.from(r.content.getChildren());let a;if(!s.every(o.isBlockImageView))return;a=r.targetRanges?t.editing.mapper.toModelRange(r.targetRanges[0]):e.document.selection.getFirstRange();const c=e.createSelection(a);if("imageInline"===Qf(e.schema,c)){const t=new Yd(n.document),e=s.map((e=>1===e.childCount?(Array.from(e.getAttributes()).forEach((n=>t.setAttribute(...n,o.findViewImgElement(e)))),e.getChild(0)):e));r.content=t.createDocumentFragment(e)}}))}}class wk extends F{static get requires(){return[bk,Mm,ak]}static get pluginName(){return"ImageInline"}}class _k extends U{refresh(){const t=this.editor,e=t.plugins.get("ImageCaptionUtils");if(!t.plugins.has(mk))return this.isEnabled=!1,void(this.value=!1);const n=t.model.document.selection,o=n.getSelectedElement();if(!o){const t=e.getCaptionFromModelSelection(n);return this.isEnabled=!!t,void(this.value=!!t)}this.isEnabled=this.editor.plugins.get("ImageUtils").isImage(o),this.isEnabled?this.value=!!e.getCaptionFromImageModelElement(o):this.value=!1}execute(t={}){const{focusCaptionOnShow:e}=t;this.editor.model.change((t=>{this.value?this._hideImageCaption(t):this._showImageCaption(t,e)}))}_showImageCaption(t,e){const n=this.editor.model.document.selection,o=this.editor.plugins.get("ImageCaptionEditing");let i=n.getSelectedElement();const r=o._getSavedCaption(i);this.editor.plugins.get("ImageUtils").isInlineImage(i)&&(this.editor.execute("imageTypeBlock"),i=n.getSelectedElement());const s=r||t.createElement("caption");t.append(s,i),e&&t.setSelection(s,"in")}_hideImageCaption(t){const e=this.editor,n=e.model.document.selection,o=e.plugins.get("ImageCaptionEditing"),i=e.plugins.get("ImageCaptionUtils");let r,s=n.getSelectedElement();s?r=i.getCaptionFromImageModelElement(s):(r=i.getCaptionFromModelSelection(n),s=r.parent),o._saveCaption(s,r),t.setSelection(s,"on"),t.remove(r)}}class Ak extends F{static get pluginName(){return"ImageCaptionUtils"}static get requires(){return[Zf]}getCaptionFromImageModelElement(t){for(const e of t.getChildren())if(e&&e.is("element","caption"))return e;return null}getCaptionFromModelSelection(t){const e=this.editor.plugins.get("ImageUtils"),n=t.getFirstPosition().findAncestor("caption");return n&&e.isBlockImage(n.parent)?n:null}matchImageCaptionViewElement(t){const e=this.editor.plugins.get("ImageUtils");return"figcaption"==t.name&&e.isBlockImageView(t.parent)?{name:!0}:null}}class Ck extends F{static get requires(){return[Zf,Ak]}static get pluginName(){return"ImageCaptionEditing"}constructor(t){super(t),this._savedCaptionsMap=new WeakMap}init(){const t=this.editor,e=t.model.schema;e.isRegistered("caption")?e.extend("caption",{allowIn:"imageBlock"}):e.register("caption",{allowIn:"imageBlock",allowContentOf:"$block",isLimit:!0}),t.commands.add("toggleImageCaption",new _k(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration(),this._registerCaptionReconversion()}_setupConversion(){const t=this.editor,e=t.editing.view,n=t.plugins.get("ImageUtils"),o=t.plugins.get("ImageCaptionUtils"),i=t.t;t.conversion.for("upcast").elementToElement({view:t=>o.matchImageCaptionViewElement(t),model:"caption"}),t.conversion.for("dataDowncast").elementToElement({model:"caption",view:(t,{writer:e})=>n.isBlockImage(t.parent)?e.createContainerElement("figcaption"):null}),t.conversion.for("editingDowncast").elementToElement({model:"caption",view:(t,{writer:o})=>{if(!n.isBlockImage(t.parent))return null;const r=o.createEditableElement("figcaption");o.setCustomProperty("imageCaption",!0,r),Td({view:e,element:r,text:i("Enter image caption"),keepOnFocus:!0});const s=t.parent.getAttribute("alt");return gm(r,o,{label:s?i("Caption for image: %0",[s]):i("Caption for the image")})}})}_setupImageTypeCommandsIntegration(){const t=this.editor,e=t.plugins.get("ImageUtils"),n=t.plugins.get("ImageCaptionUtils"),o=t.commands.get("imageTypeInline"),i=t.commands.get("imageTypeBlock"),r=t=>{if(!t.return)return;const{oldElement:o,newElement:i}=t.return;if(!o)return;if(e.isBlockImage(o)){const t=n.getCaptionFromImageModelElement(o);if(t)return void this._saveCaption(i,t)}const r=this._getSavedCaption(o);r&&this._saveCaption(i,r)};o&&this.listenTo(o,"execute",r,{priority:"low"}),i&&this.listenTo(i,"execute",r,{priority:"low"})}_getSavedCaption(t){const e=this._savedCaptionsMap.get(t);return e?Qa.fromJSON(e):null}_saveCaption(t,e){this._savedCaptionsMap.set(t,e.toJSON())}_registerCaptionReconversion(){const t=this.editor,e=t.model,n=t.plugins.get("ImageUtils"),o=t.plugins.get("ImageCaptionUtils");e.document.on("change:data",(()=>{const i=e.document.differ.getChanges();for(const e of i){if("alt"!==e.attributeKey)continue;const i=e.range.start.nodeAfter;if(n.isBlockImage(i)){const e=o.getCaptionFromImageModelElement(i);if(!e)return;t.editing.reconvertItem(e)}}}))}}class vk extends F{static get requires(){return[Ak]}static get pluginName(){return"ImageCaptionUI"}init(){const t=this.editor,e=t.editing.view,n=t.plugins.get("ImageCaptionUtils"),o=t.t;t.ui.componentFactory.add("toggleImageCaption",(i=>{const r=t.commands.get("toggleImageCaption"),s=new lu(i);return s.set({icon:Xh.caption,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.bind("label").to(r,"value",(t=>o(t?"Toggle caption off":"Toggle caption on"))),this.listenTo(s,"execute",(()=>{t.execute("toggleImageCaption",{focusCaptionOnShow:!0});const o=n.getCaptionFromModelSelection(t.model.document.selection);if(o){const n=t.editing.mapper.toViewElement(o);e.scrollToTheSelection(),e.change((t=>{t.addClass("image__caption_highlighted",n)}))}t.editing.view.focus()})),s}))}}var yk=n(2640),xk={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(yk.Z,xk);yk.Z.locals;class Ek extends U{constructor(t,e){super(t),this._defaultStyles={imageBlock:!1,imageInline:!1},this._styles=new Map(e.map((t=>{if(t.isDefault)for(const e of t.modelElements)this._defaultStyles[e]=t.name;return[t.name,t]})))}refresh(){const t=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!t,this.isEnabled?t.hasAttribute("imageStyle")?this.value=t.getAttribute("imageStyle"):this.value=this._defaultStyles[t.name]:this.value=!1}execute(t={}){const e=this.editor,n=e.model,o=e.plugins.get("ImageUtils");n.change((e=>{const i=t.value;let r=o.getClosestSelectedImageElement(n.document.selection);i&&this.shouldConvertImageType(i,r)&&(this.editor.execute(o.isBlockImage(r)?"imageTypeInline":"imageTypeBlock"),r=o.getClosestSelectedImageElement(n.document.selection)),!i||this._styles.get(i).isDefault?e.removeAttribute("imageStyle",r):e.setAttribute("imageStyle",i,r)}))}shouldConvertImageType(t,e){return!this._styles.get(t).modelElements.includes(e.name)}}const{objectFullWidth:Dk,objectInline:Ik,objectLeft:Tk,objectRight:Mk,objectCenter:Sk,objectBlockLeft:Nk,objectBlockRight:Bk}=Xh,Pk={get inline(){return{name:"inline",title:"In line",icon:Ik,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:Tk,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:Nk,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:Sk,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:Mk,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:Bk,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:Sk,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:Mk,modelElements:["imageBlock"],className:"image-style-side"}}},zk={full:Dk,left:Nk,right:Bk,center:Sk,inlineLeft:Tk,inlineRight:Mk,inline:Ik},Lk=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function Ok(t){l("image-style-configuration-definition-invalid",t)}const Rk={normalizeStyles:function(t){return(t.configuredStyles.options||[]).map((t=>function(t){t="string"==typeof t?Pk[t]?{...Pk[t]}:{name:t}:function(t,e){const n={...e};for(const o in t)Object.prototype.hasOwnProperty.call(e,o)||(n[o]=t[o]);return n}(Pk[t.name],t);"string"==typeof t.icon&&(t.icon=zk[t.icon]||t.icon);return t}(t))).filter((e=>function(t,{isBlockPluginLoaded:e,isInlinePluginLoaded:n}){const{modelElements:o,name:i}=t;if(!(o&&o.length&&i))return Ok({style:t}),!1;{const i=[e?"imageBlock":null,n?"imageInline":null];if(!o.some((t=>i.includes(t))))return l("image-style-missing-dependency",{style:t,missingPlugins:o.map((t=>"imageBlock"===t?"ImageBlockEditing":"ImageInlineEditing"))}),!1}return!0}(e,t)))},getDefaultStylesConfiguration:function(t,e){return t&&e?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:t?{options:["block","side"]}:e?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(t){return t.has("ImageBlockEditing")&&t.has("ImageInlineEditing")?[...Lk]:[]},warnInvalidStyle:Ok,DEFAULT_OPTIONS:Pk,DEFAULT_ICONS:zk,DEFAULT_DROPDOWN_DEFINITIONS:Lk};function jk(t,e){for(const n of e)if(n.name===t)return n}class Fk extends F{static get pluginName(){return"ImageStyleEditing"}static get requires(){return[Zf]}init(){const{normalizeStyles:t,getDefaultStylesConfiguration:e}=Rk,n=this.editor,o=n.plugins.has("ImageBlockEditing"),i=n.plugins.has("ImageInlineEditing");n.config.define("image.styles",e(o,i)),this.normalizedStyles=t({configuredStyles:n.config.get("image.styles"),isBlockPluginLoaded:o,isInlinePluginLoaded:i}),this._setupConversion(o,i),this._setupPostFixer(),n.commands.add("imageStyle",new Ek(n,this.normalizedStyles))}_setupConversion(t,e){const n=this.editor,o=n.model.schema,i=(r=this.normalizedStyles,(t,e,n)=>{if(!n.consumable.consume(e.item,t.name))return;const o=jk(e.attributeNewValue,r),i=jk(e.attributeOldValue,r),s=n.mapper.toViewElement(e.item),a=n.writer;i&&a.removeClass(i.className,s),o&&a.addClass(o.className,s)});var r;const s=function(t){const e={imageInline:t.filter((t=>!t.isDefault&&t.modelElements.includes("imageInline"))),imageBlock:t.filter((t=>!t.isDefault&&t.modelElements.includes("imageBlock")))};return(t,n,o)=>{if(!n.modelRange)return;const i=n.viewItem,r=va(n.modelRange.getItems());if(r&&o.schema.checkAttribute(r,"imageStyle"))for(const t of e[r.name])o.consumable.consume(i,{classes:t.className})&&o.writer.setAttribute("imageStyle",t.name,r)}}(this.normalizedStyles);n.editing.downcastDispatcher.on("attribute:imageStyle",i),n.data.downcastDispatcher.on("attribute:imageStyle",i),t&&(o.extend("imageBlock",{allowAttributes:"imageStyle"}),n.data.upcastDispatcher.on("element:figure",s,{priority:"low"})),e&&(o.extend("imageInline",{allowAttributes:"imageStyle"}),n.data.upcastDispatcher.on("element:img",s,{priority:"low"}))}_setupPostFixer(){const t=this.editor,e=t.model.document,n=t.plugins.get(Zf),o=new Map(this.normalizedStyles.map((t=>[t.name,t])));e.registerPostFixer((t=>{let i=!1;for(const r of e.differ.getChanges())if("insert"==r.type||"attribute"==r.type&&"imageStyle"==r.attributeKey){let e="insert"==r.type?r.position.nodeAfter:r.range.start.nodeAfter;if(e&&e.is("element","paragraph")&&e.childCount>0&&(e=e.getChild(0)),!n.isImage(e))continue;const s=e.getAttribute("imageStyle");if(!s)continue;const a=o.get(s);a&&a.modelElements.includes(e.name)||(t.removeAttribute("imageStyle",e),i=!0)}return i}))}}var Vk=n(5083),Uk={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Vk.Z,Uk);Vk.Z.locals;class Hk extends F{static get requires(){return[Fk]}static get pluginName(){return"ImageStyleUI"}get localizedDefaultStylesTitles(){const t=this.editor.t;return{"Wrap text":t("Wrap text"),"Break text":t("Break text"),"In line":t("In line"),"Full size image":t("Full size image"),"Side image":t("Side image"),"Left aligned image":t("Left aligned image"),"Centered image":t("Centered image"),"Right aligned image":t("Right aligned image")}}init(){const t=this.editor.plugins,e=this.editor.config.get("image.toolbar")||[],n=qk(t.get("ImageStyleEditing").normalizedStyles,this.localizedDefaultStylesTitles);for(const t of n)this._createButton(t);const o=qk([...e.filter(D),...Rk.getDefaultDropdownDefinitions(t)],this.localizedDefaultStylesTitles);for(const t of o)this._createDropdown(t,n)}_createDropdown(t,e){const n=this.editor.ui.componentFactory;n.add(t.name,(o=>{let i;const{defaultItem:r,items:s,title:a}=t,c=s.filter((t=>e.find((({name:e})=>Gk(e)===t)))).map((t=>{const e=n.create(t);return t===r&&(i=e),e}));s.length!==c.length&&Rk.warnInvalidStyle({dropdown:t});const l=Wu(o,wu),d=l.buttonView,h=d.arrowView;return Yu(l,c,{enableActiveItemFocusOnDropdownOpen:!0}),d.set({label:Wk(a,i.label),class:null,tooltip:!0}),h.unbind("label"),h.set({label:a}),d.bind("icon").toMany(c,"isOn",((...t)=>{const e=t.findIndex(mi);return e<0?i.icon:c[e].icon})),d.bind("label").toMany(c,"isOn",((...t)=>{const e=t.findIndex(mi);return Wk(a,e<0?i.label:c[e].label)})),d.bind("isOn").toMany(c,"isOn",((...t)=>t.some(mi))),d.bind("class").toMany(c,"isOn",((...t)=>t.some(mi)?"ck-splitbutton_flatten":null)),d.on("execute",(()=>{c.some((({isOn:t})=>t))?l.isOpen=!l.isOpen:i.fire("execute")})),l.bind("isEnabled").toMany(c,"isEnabled",((...t)=>t.some(mi))),this.listenTo(l,"execute",(()=>{this.editor.editing.view.focus()})),l}))}_createButton(t){const e=t.name;this.editor.ui.componentFactory.add(Gk(e),(n=>{const o=this.editor.commands.get("imageStyle"),i=new lu(n);return i.set({label:t.title,icon:t.icon,tooltip:!0,isToggleable:!0}),i.bind("isEnabled").to(o,"isEnabled"),i.bind("isOn").to(o,"value",(t=>t===e)),i.on("execute",this._executeCommand.bind(this,e)),i}))}_executeCommand(t){this.editor.execute("imageStyle",{value:t}),this.editor.editing.view.focus()}}function qk(t,e){for(const n of t)e[n.title]&&(n.title=e[n.title]);return t}function Gk(t){return`imageStyle:${t}`}function Wk(t,e){return(t?t+": ":"")+e}function Yk(t){const e=t.map((t=>t.replace("+","\\+")));return new RegExp(`^image\\/(${e.join("|")})$`)}function $k(t){return new Promise(((e,n)=>{const o=t.getAttribute("src");fetch(o).then((t=>t.blob())).then((t=>{const n=Kk(t,o),i=n.replace("image/",""),r=new File([t],`image.${i}`,{type:n});e(r)})).catch((t=>t&&"TypeError"===t.name?function(t){return function(t){return new Promise(((e,n)=>{const o=_o.document.createElement("img");o.addEventListener("load",(()=>{const t=_o.document.createElement("canvas");t.width=o.width,t.height=o.height;t.getContext("2d").drawImage(o,0,0),t.toBlob((t=>t?e(t):n()))})),o.addEventListener("error",(()=>n())),o.src=t}))}(t).then((e=>{const n=Kk(e,t),o=n.replace("image/","");return new File([e],`image.${o}`,{type:n})}))}(o).then(e).catch(n):n(t)))}))}function Kk(t,e){return t.type?t.type:e.match(/data:(image\/\w+);base64/)?e.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}class Qk extends F{static get pluginName(){return"ImageUploadUI"}init(){const t=this.editor,e=t.t,n=n=>{const o=new Lp(n),i=t.commands.get("uploadImage"),r=t.config.get("image.upload.types"),s=Yk(r);return o.set({acceptedType:r.map((t=>`image/${t}`)).join(","),allowMultipleFiles:!0}),o.buttonView.set({label:e("Insert image"),icon:Xh.image,tooltip:!0}),o.buttonView.bind("isEnabled").to(i),o.on("done",((e,n)=>{const o=Array.from(n).filter((t=>s.test(t.type)));o.length&&(t.execute("uploadImage",{file:o}),t.editing.view.focus())})),o};t.ui.componentFactory.add("uploadImage",n),t.ui.componentFactory.add("imageUpload",n)}}var Zk=n(3689),Jk={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Zk.Z,Jk);Zk.Z.locals;var Xk=n(4036),tb={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Xk.Z,tb);Xk.Z.locals;var eb=n(3773),nb={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(eb.Z,nb);eb.Z.locals;class ob extends F{static get pluginName(){return"ImageUploadProgress"}constructor(t){super(t),this.placeholder="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}init(){const t=this.editor;t.plugins.has("ImageBlockEditing")&&t.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",((...t)=>this.uploadStatusChange(...t))),t.plugins.has("ImageInlineEditing")&&t.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",((...t)=>this.uploadStatusChange(...t)))}uploadStatusChange(t,e,n){const o=this.editor,i=e.item,r=i.getAttribute("uploadId");if(!n.consumable.consume(e.item,t.name))return;const s=o.plugins.get("ImageUtils"),a=o.plugins.get(Pp),c=r?e.attributeNewValue:null,l=this.placeholder,d=o.editing.mapper.toViewElement(i),h=n.writer;if("reading"==c)return ib(d,h),void rb(s,l,d,h);if("uploading"==c){const t=a.loaders.get(r);return ib(d,h),void(t?(sb(d,h),function(t,e,n,o){const i=function(t){const e=t.createUIElement("div",{class:"ck-progress-bar"});return t.setCustomProperty("progressBar",!0,e),e}(e);e.insert(e.createPositionAt(t,"end"),i),n.on("change:uploadedPercent",((t,e,n)=>{o.change((t=>{t.setStyle("width",n+"%",i)}))}))}(d,h,t,o.editing.view),function(t,e,n,o){if(o.data){const i=t.findViewImgElement(e);n.setAttribute("src",o.data,i)}}(s,d,h,t)):rb(s,l,d,h))}"complete"==c&&a.loaders.get(r)&&function(t,e,n){const o=e.createUIElement("div",{class:"ck-image-upload-complete-icon"});e.insert(e.createPositionAt(t,"end"),o),setTimeout((()=>{n.change((t=>t.remove(t.createRangeOn(o))))}),3e3)}(d,h,o.editing.view),function(t,e){cb(t,e,"progressBar")}(d,h),sb(d,h),function(t,e){e.removeClass("ck-appear",t)}(d,h)}}function ib(t,e){t.hasClass("ck-appear")||e.addClass("ck-appear",t)}function rb(t,e,n,o){n.hasClass("ck-image-upload-placeholder")||o.addClass("ck-image-upload-placeholder",n);const i=t.findViewImgElement(n);i.getAttribute("src")!==e&&o.setAttribute("src",e,i),ab(n,"placeholder")||o.insert(o.createPositionAfter(i),function(t){const e=t.createUIElement("div",{class:"ck-upload-placeholder-loader"});return t.setCustomProperty("placeholder",!0,e),e}(o))}function sb(t,e){t.hasClass("ck-image-upload-placeholder")&&e.removeClass("ck-image-upload-placeholder",t),cb(t,e,"placeholder")}function ab(t,e){for(const n of t.getChildren())if(n.getCustomProperty(e))return n}function cb(t,e,n){const o=ab(t,n);o&&e.remove(e.createRangeOn(o))}class lb extends U{refresh(){const t=this.editor,e=t.plugins.get("ImageUtils"),n=t.model.document.selection.getSelectedElement();this.isEnabled=e.isImageAllowed()||e.isImage(n)}execute(t){const e=bo(t.file),n=this.editor.model.document.selection,o=this.editor.plugins.get("ImageUtils"),i=Object.fromEntries(n.getAttributes());e.forEach(((t,e)=>{const r=n.getSelectedElement();if(e&&r&&o.isImage(r)){const e=this.editor.model.createPositionAfter(r);this._uploadImage(t,i,e)}else this._uploadImage(t,i)}))}_uploadImage(t,e,n){const o=this.editor,i=o.plugins.get(Pp).createLoader(t),r=o.plugins.get("ImageUtils");i&&r.insertImage({...e,uploadId:i.id},n)}}class db extends F{static get requires(){return[Pp,pg,jg,Zf]}static get pluginName(){return"ImageUploadEditing"}constructor(t){super(t),t.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),this._uploadImageElements=new Map}init(){const t=this.editor,e=t.model.document,n=t.conversion,o=t.plugins.get(Pp),i=t.plugins.get("ImageUtils"),r=Yk(t.config.get("image.upload.types")),s=new lb(t);t.commands.add("uploadImage",s),t.commands.add("imageUpload",s),n.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}),this.listenTo(t.editing.view.document,"clipboardInput",((e,n)=>{if(o=n.dataTransfer,Array.from(o.types).includes("text/html")&&""!==o.getData("text/html"))return;var o;const i=Array.from(n.dataTransfer.files).filter((t=>!!t&&r.test(t.type)));i.length&&(e.stop(),t.model.change((e=>{n.targetRanges&&e.setSelection(n.targetRanges.map((e=>t.editing.mapper.toModelRange(e)))),t.model.enqueueChange((()=>{t.execute("uploadImage",{file:i})}))})))})),this.listenTo(t.plugins.get("ClipboardPipeline"),"inputTransformation",((e,n)=>{const r=Array.from(t.editing.view.createRangeIn(n.content)).filter((t=>function(t,e){return!(!t.isInlineImageView(e)||!e.getAttribute("src"))&&(e.getAttribute("src").match(/^data:image\/\w+;base64,/g)||e.getAttribute("src").match(/^blob:/g))}(i,t.item)&&!t.item.getAttribute("uploadProcessed"))).map((t=>({promise:$k(t.item),imageElement:t.item})));if(!r.length)return;const s=new Yd(t.editing.view.document);for(const t of r){s.setAttribute("uploadProcessed",!0,t.imageElement);const e=o.createLoader(t.promise);e&&(s.setAttribute("src","",t.imageElement),s.setAttribute("uploadId",e.id,t.imageElement))}})),t.editing.view.document.on("dragover",((t,e)=>{e.preventDefault()})),e.on("change",(()=>{const n=e.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),i=new Set;for(const e of n)if("insert"==e.type&&"$text"!=e.name){const n=e.position.nodeAfter,r="$graveyard"==e.position.root.rootName;for(const e of hb(t,n)){const t=e.getAttribute("uploadId");if(!t)continue;const n=o.loaders.get(t);n&&(r?i.has(t)||n.abort():(i.add(t),this._uploadImageElements.set(t,e),"idle"==n.status&&this._readAndUpload(n)))}}})),this.on("uploadComplete",((t,{imageElement:e,data:n})=>{const o=n.urls?n.urls:n;this.editor.model.change((t=>{t.setAttribute("src",o.default,e),this._parseAndSetSrcsetAttributeOnImage(o,e,t)}))}),{priority:"low"})}afterInit(){const t=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&t.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this.editor.plugins.has("ImageInlineEditing")&&t.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]})}_readAndUpload(t){const e=this.editor,n=e.model,o=e.locale.t,i=e.plugins.get(Pp),r=e.plugins.get(pg),s=e.plugins.get("ImageUtils"),a=this._uploadImageElements;return n.enqueueChange({isUndoable:!1},(e=>{e.setAttribute("uploadStatus","reading",a.get(t.id))})),t.read().then((()=>{const o=t.upload(),i=a.get(t.id);if(cr.isSafari){const t=e.editing.mapper.toViewElement(i),n=s.findViewImgElement(t);e.editing.view.once("render",(()=>{if(!n.parent)return;const t=e.editing.view.domConverter.mapViewToDom(n.parent);if(!t)return;const o=t.style.display;t.style.display="none",t._ckHack=t.offsetHeight,t.style.display=o}))}return n.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("uploadStatus","uploading",i)})),o})).then((e=>{n.enqueueChange({isUndoable:!1},(n=>{const o=a.get(t.id);n.setAttribute("uploadStatus","complete",o),this.fire("uploadComplete",{data:e,imageElement:o})})),c()})).catch((e=>{if("error"!==t.status&&"aborted"!==t.status)throw e;"error"==t.status&&e&&r.showWarning(e,{title:o("Upload failed"),namespace:"upload"}),n.enqueueChange({isUndoable:!1},(e=>{e.remove(a.get(t.id))})),c()}));function c(){n.enqueueChange({isUndoable:!1},(e=>{const n=a.get(t.id);e.removeAttribute("uploadId",n),e.removeAttribute("uploadStatus",n),a.delete(t.id)})),i.destroyLoader(t)}}_parseAndSetSrcsetAttributeOnImage(t,e,n){let o=0;const i=Object.keys(t).filter((t=>{const e=parseInt(t,10);if(!isNaN(e))return o=Math.max(o,e),!0})).map((e=>`${t[e]} ${e}w`)).join(", ");""!=i&&n.setAttribute("srcset",{data:i,width:o},e)}}function hb(t,e){const n=t.plugins.get("ImageUtils");return Array.from(t.model.createRangeOn(e)).filter((t=>n.isImage(t.item))).map((t=>t.item))}class ub extends F{static get pluginName(){return"IndentEditing"}init(){const t=this.editor;t.commands.add("indent",new q(t)),t.commands.add("outdent",new q(t))}}const gb='',mb='';class pb extends F{static get pluginName(){return"IndentUI"}init(){const t=this.editor,e=t.locale,n=t.t,o="ltr"==e.uiLanguageDirection?gb:mb,i="ltr"==e.uiLanguageDirection?mb:gb;this._defineButton("indent",n("Increase indent"),o),this._defineButton("outdent",n("Decrease indent"),i)}_defineButton(t,e,n){const o=this.editor;o.ui.componentFactory.add(t,(i=>{const r=o.commands.get(t),s=new lu(i);return s.set({label:e,icon:n,tooltip:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),this.listenTo(s,"execute",(()=>{o.execute(t),o.editing.view.focus()})),s}))}}class fb{constructor(){this._definitions=new Set}get length(){return this._definitions.size}add(t){Array.isArray(t)?t.forEach((t=>this._definitions.add(t))):this._definitions.add(t)}getDispatcher(){return t=>{t.on("attribute:linkHref",((t,e,n)=>{if(!n.consumable.test(e.item,"attribute:linkHref"))return;if(!e.item.is("selection")&&!n.schema.isInline(e.item))return;const o=n.writer,i=o.document.selection;for(const t of this._definitions){const r=o.createAttributeElement("a",t.attributes,{priority:5});t.classes&&o.addClass(t.classes,r);for(const e in t.styles)o.setStyle(e,t.styles[e],r);o.setCustomProperty("link",!0,r),t.callback(e.attributeNewValue)?e.item.is("selection")?o.wrap(i.getFirstRange(),r):o.wrap(n.mapper.toViewRange(e.range),r):o.unwrap(n.mapper.toViewRange(e.range),r)}}),{priority:"high"})}}getDispatcherForLinkedImage(){return t=>{t.on("attribute:linkHref:imageBlock",((t,e,{writer:n,mapper:o})=>{const i=o.toViewElement(e.item),r=Array.from(i.getChildren()).find((t=>"a"===t.name));for(const t of this._definitions){const o=Bo(t.attributes);if(t.callback(e.attributeNewValue)){for(const[t,e]of o)"class"===t?n.addClass(e,r):n.setAttribute(t,e,r);t.classes&&n.addClass(t.classes,r);for(const e in t.styles)n.setStyle(e,t.styles[e],r)}else{for(const[t,e]of o)"class"===t?n.removeClass(e,r):n.removeAttribute(t,r);t.classes&&n.removeClass(t.classes,r);for(const e in t.styles)n.removeStyle(e,r)}}}))}}}const kb=function(t,e,n){var o=t.length;return n=void 0===n?o:n,!e&&n>=o?t:ni(t,e,n)};var bb=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");const wb=function(t){return bb.test(t)};const _b=function(t){return t.split("")};var Ab="[\\ud800-\\udfff]",Cb="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",vb="\\ud83c[\\udffb-\\udfff]",yb="[^\\ud800-\\udfff]",xb="(?:\\ud83c[\\udde6-\\uddff]){2}",Eb="[\\ud800-\\udbff][\\udc00-\\udfff]",Db="(?:"+Cb+"|"+vb+")"+"?",Ib="[\\ufe0e\\ufe0f]?",Tb=Ib+Db+("(?:\\u200d(?:"+[yb,xb,Eb].join("|")+")"+Ib+Db+")*"),Mb="(?:"+[yb+Cb+"?",Cb,xb,Eb,Ab].join("|")+")",Sb=RegExp(vb+"(?="+vb+")|"+Mb+Tb,"g");const Nb=function(t){return t.match(Sb)||[]};const Bb=function(t){return wb(t)?Nb(t):_b(t)};const Pb=function(t){return function(e){e=Zo(e);var n=wb(e)?Bb(e):void 0,o=n?n[0]:e.charAt(0),i=n?kb(n,1).join(""):e.slice(1);return o[t]()+i}}("toUpperCase"),zb=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Lb=/^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i,Ob=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,Rb=/^((\w+:(\/{2,})?)|(\W))/i,jb="Ctrl+K";function Fb(t,{writer:e}){const n=e.createAttributeElement("a",{href:t},{priority:5});return e.setCustomProperty("link",!0,n),n}function Vb(t){return function(t){return t.replace(zb,"").match(Lb)}(t=String(t))?t:"#"}function Ub(t,e){return!!t&&e.checkAttribute(t.name,"linkHref")}function Hb(t,e){const n=(o=t,Ob.test(o)?"mailto:":e);var o;const i=!!n&&!qb(t);return t&&i?n+t:t}function qb(t){return Rb.test(t)}function Gb(t){window.open(t,"_blank","noopener")}class Wb extends U{constructor(t){super(t),this.manualDecorators=new fo,this.automaticDecorators=new fb}restoreManualDecoratorStates(){for(const t of this.manualDecorators)t.value=this._getDecoratorStateFromModel(t.id)}refresh(){const t=this.editor.model,e=t.document.selection,n=e.getSelectedElement()||va(e.getSelectedBlocks());Ub(n,t.schema)?(this.value=n.getAttribute("linkHref"),this.isEnabled=t.schema.checkAttribute(n,"linkHref")):(this.value=e.getAttribute("linkHref"),this.isEnabled=t.schema.checkAttributeInSelection(e,"linkHref"));for(const t of this.manualDecorators)t.value=this._getDecoratorStateFromModel(t.id)}execute(t,e={}){const n=this.editor.model,o=n.document.selection,i=[],r=[];for(const t in e)e[t]?i.push(t):r.push(t);n.change((e=>{if(o.isCollapsed){const s=o.getFirstPosition();if(o.hasAttribute("linkHref")){const a=Ap(s,"linkHref",o.getAttribute("linkHref"),n);e.setAttribute("linkHref",t,a),i.forEach((t=>{e.setAttribute(t,!0,a)})),r.forEach((t=>{e.removeAttribute(t,a)})),e.setSelection(e.createPositionAfter(a.end.nodeBefore))}else if(""!==t){const r=Bo(o.getAttributes());r.set("linkHref",t),i.forEach((t=>{r.set(t,!0)}));const{end:a}=n.insertContent(e.createText(t,r),s);e.setSelection(a)}["linkHref",...i,...r].forEach((t=>{e.removeSelectionAttribute(t)}))}else{const s=n.schema.getValidRanges(o.getRanges(),"linkHref"),a=[];for(const t of o.getSelectedBlocks())n.schema.checkAttribute(t,"linkHref")&&a.push(e.createRangeOn(t));const c=a.slice();for(const t of s)this._isRangeToUpdate(t,a)&&c.push(t);for(const n of c)e.setAttribute("linkHref",t,n),i.forEach((t=>{e.setAttribute(t,!0,n)})),r.forEach((t=>{e.removeAttribute(t,n)}))}}))}_getDecoratorStateFromModel(t){const e=this.editor.model,n=e.document.selection,o=n.getSelectedElement();return Ub(o,e.schema)?o.getAttribute(t):n.getAttribute(t)}_isRangeToUpdate(t,e){for(const n of e)if(n.containsRange(t))return!1;return!0}}class Yb extends U{refresh(){const t=this.editor.model,e=t.document.selection,n=e.getSelectedElement();Ub(n,t.schema)?this.isEnabled=t.schema.checkAttribute(n,"linkHref"):this.isEnabled=t.schema.checkAttributeInSelection(e,"linkHref")}execute(){const t=this.editor,e=this.editor.model,n=e.document.selection,o=t.commands.get("link");e.change((t=>{const i=n.isCollapsed?[Ap(n.getFirstPosition(),"linkHref",n.getAttribute("linkHref"),e)]:e.schema.getValidRanges(n.getRanges(),"linkHref");for(const e of i)if(t.removeAttribute("linkHref",e),o)for(const n of o.manualDecorators)t.removeAttribute(n.id,e)}))}}class $b{constructor({id:t,label:e,attributes:n,classes:o,styles:i,defaultValue:r}){this.id=t,this.set("value"),this.defaultValue=r,this.label=e,this.attributes=n,this.classes=o,this.styles=i}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}ka($b,B);var Kb=n(9773),Qb={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Kb.Z,Qb);Kb.Z.locals;const Zb="automatic",Jb=/^(https?:)?\/\//;class Xb extends F{static get pluginName(){return"LinkEditing"}static get requires(){return[sp,ep,jg]}constructor(t){super(t),t.config.define("link",{addTargetToExternalLinks:!1})}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:"linkHref"}),t.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:Fb}),t.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(t,e)=>Fb(Vb(t),e)}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:t=>t.getAttribute("href")}}),t.commands.add("link",new Wb(t)),t.commands.add("unlink",new Yb(t));const e=function(t,e){const n={"Open in a new tab":t("Open in a new tab"),Downloadable:t("Downloadable")};return e.forEach((t=>(t.label&&n[t.label]&&(t.label=n[t.label]),t))),e}(t.t,function(t){const e=[];if(t)for(const[n,o]of Object.entries(t)){const t=Object.assign({},o,{id:`link${Pb(n)}`});e.push(t)}return e}(t.config.get("link.decorators")));this._enableAutomaticDecorators(e.filter((t=>t.mode===Zb))),this._enableManualDecorators(e.filter((t=>"manual"===t.mode)));t.plugins.get(sp).registerAttribute("linkHref"),function(t,e,n,o){const i=t.editing.view,r=new Set;i.document.registerPostFixer((i=>{const s=t.model.document.selection;let a=!1;if(s.hasAttribute(e)){const c=Ap(s.getFirstPosition(),e,s.getAttribute(e),t.model),l=t.editing.mapper.toViewRange(c);for(const t of l.getItems())t.is("element",n)&&!t.hasClass(o)&&(i.addClass(o,t),r.add(t),a=!0)}return a})),t.conversion.for("editingDowncast").add((t=>{function e(){i.change((t=>{for(const e of r.values())t.removeClass(o,e),r.delete(e)}))}t.on("insert",e,{priority:"highest"}),t.on("remove",e,{priority:"highest"}),t.on("attribute",e,{priority:"highest"}),t.on("selection",e,{priority:"highest"})}))}(t,"linkHref","a","ck-link_selected"),this._enableLinkOpen(),this._enableInsertContentSelectionAttributesFixer(),this._enableClickingAfterLink(),this._enableTypingOverLink(),this._handleDeleteContentAfterLink()}_enableAutomaticDecorators(t){const e=this.editor,n=e.commands.get("link").automaticDecorators;e.config.get("link.addTargetToExternalLinks")&&n.add({id:"linkIsExternal",mode:Zb,callback:t=>Jb.test(t),attributes:{target:"_blank",rel:"noopener noreferrer"}}),n.add(t),n.length&&e.conversion.for("downcast").add(n.getDispatcher())}_enableManualDecorators(t){if(!t.length)return;const e=this.editor,n=e.commands.get("link").manualDecorators;t.forEach((t=>{e.model.schema.extend("$text",{allowAttributes:t.id}),t=new $b(t),n.add(t),e.conversion.for("downcast").attributeToElement({model:t.id,view:(e,{writer:n,schema:o},{item:i})=>{if((i.is("selection")||o.isInline(i))&&e){const e=n.createAttributeElement("a",t.attributes,{priority:5});t.classes&&n.addClass(t.classes,e);for(const o in t.styles)n.setStyle(o,t.styles[o],e);return n.setCustomProperty("link",!0,e),e}}}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",...t._createPattern()},model:{key:t.id}})}))}_enableLinkOpen(){const t=this.editor,e=t.editing.view.document;this.listenTo(e,"click",((t,e)=>{if(!(cr.isMac?e.domEvent.metaKey:e.domEvent.ctrlKey))return;let n=e.domTarget;if("a"!=n.tagName.toLowerCase()&&(n=n.closest("a")),!n)return;const o=n.getAttribute("href");o&&(t.stop(),e.preventDefault(),Gb(o))}),{context:"$capture"}),this.listenTo(e,"keydown",((e,n)=>{const o=t.commands.get("link").value;o&&n.keyCode===ur.enter&&n.altKey&&(e.stop(),Gb(o))}))}_enableInsertContentSelectionAttributesFixer(){const t=this.editor.model,e=t.document.selection;this.listenTo(t,"insertContent",(()=>{const n=e.anchor.nodeBefore,o=e.anchor.nodeAfter;e.hasAttribute("linkHref")&&n&&n.hasAttribute("linkHref")&&(o&&o.hasAttribute("linkHref")||t.change((e=>{tw(e,nw(t.schema))})))}),{priority:"low"})}_enableClickingAfterLink(){const t=this.editor,e=t.model;t.editing.view.addObserver(Wd);let n=!1;this.listenTo(t.editing.view.document,"mousedown",(()=>{n=!0})),this.listenTo(t.editing.view.document,"selectionChange",(()=>{if(!n)return;n=!1;const t=e.document.selection;if(!t.isCollapsed)return;if(!t.hasAttribute("linkHref"))return;const o=t.getFirstPosition(),i=Ap(o,"linkHref",t.getAttribute("linkHref"),e);(o.isTouching(i.start)||o.isTouching(i.end))&&e.change((t=>{tw(t,nw(e.schema))}))}))}_enableTypingOverLink(){const t=this.editor,e=t.editing.view;let n,o;this.listenTo(e.document,"delete",(()=>{o=!0}),{priority:"high"}),this.listenTo(t.model,"deleteContent",(()=>{const e=t.model.document.selection;e.isCollapsed||(o?o=!1:ew(t)&&function(t){const e=t.document.selection,n=e.getFirstPosition(),o=e.getLastPosition(),i=n.nodeAfter;if(!i)return!1;if(!i.is("$text"))return!1;if(!i.hasAttribute("linkHref"))return!1;const r=o.textNode||o.nodeBefore;if(i===r)return!0;return Ap(n,"linkHref",i.getAttribute("linkHref"),t).containsRange(t.createRange(n,o),!0)}(t.model)&&(n=e.getAttributes()))}),{priority:"high"}),this.listenTo(t.model,"insertContent",((e,[i])=>{o=!1,ew(t)&&n&&(t.model.change((t=>{for(const[e,o]of n)t.setAttribute(e,o,i)})),n=null)}),{priority:"high"})}_handleDeleteContentAfterLink(){const t=this.editor,e=t.model,n=e.document.selection,o=t.editing.view;let i=!1,r=!1;this.listenTo(o.document,"delete",((t,e)=>{r="backward"===e.direction}),{priority:"high"}),this.listenTo(e,"deleteContent",(()=>{i=!1;const t=n.getFirstPosition(),o=n.getAttribute("linkHref");if(!o)return;const r=Ap(t,"linkHref",o,e);i=r.containsPosition(t)||r.end.isEqual(t)}),{priority:"high"}),this.listenTo(e,"deleteContent",(()=>{r&&(r=!1,i||t.model.enqueueChange((t=>{tw(t,nw(e.schema))})))}),{priority:"low"})}}function tw(t,e){t.removeSelectionAttribute("linkHref");for(const n of e)t.removeSelectionAttribute(n)}function ew(t){return t.model.change((t=>t.batch)).isTyping}function nw(t){return t.getDefinition("$text").allowAttributes.filter((t=>t.startsWith("link")))}var ow=n(7754),iw={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(ow.Z,iw);ow.Z.locals;class rw extends Mh{constructor(t,e){super(t);const n=t.t;this.focusTracker=new ya,this.keystrokes=new xa,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(n("Save"),Xh.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(n("Cancel"),Xh.cancel,"ck-button-cancel","cancel"),this._manualDecoratorSwitches=this._createManualDecoratorSwitches(e),this.children=this._createFormChildren(e.manualDecorators),this._focusables=new sh,this._focusCycler=new yu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});const o=["ck","ck-link-form","ck-responsive-form"];e.manualDecorators.length&&o.push("ck-link-form_layout-vertical","ck-vertical-form"),this.setTemplate({tag:"form",attributes:{class:o,tabindex:"-1"},children:this.children}),eu(this)}getDecoratorSwitchesState(){return Array.from(this._manualDecoratorSwitches).reduce(((t,e)=>(t[e.name]=e.isOn,t)),{})}render(){super.render(),nu({view:this});[this.urlInputView,...this._manualDecoratorSwitches,this.saveButtonView,this.cancelButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createUrlInput(){const t=this.locale.t,e=new gg(this.locale,mg);return e.label=t("Link URL"),e}_createButton(t,e,n,o){const i=new lu(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),o&&i.delegate("execute").to(this,o),i}_createManualDecoratorSwitches(t){const e=this.createCollection();for(const n of t.manualDecorators){const o=new uu(this.locale);o.set({name:n.id,label:n.label,withText:!0}),o.bind("isOn").toMany([n,t],"value",((t,e)=>void 0===e&&void 0===t?n.defaultValue:t)),o.on("execute",(()=>{n.set("value",!o.isOn)})),e.add(o)}return e}_createFormChildren(t){const e=this.createCollection();if(e.add(this.urlInputView),t.length){const t=new Mh;t.setTemplate({tag:"ul",children:this._manualDecoratorSwitches.map((t=>({tag:"li",children:[t],attributes:{class:["ck","ck-list__item"]}}))),attributes:{class:["ck","ck-reset","ck-list"]}}),e.add(t)}return e.add(this.saveButtonView),e.add(this.cancelButtonView),e}}var sw=n(2347),aw={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(sw.Z,aw);sw.Z.locals;class cw extends Mh{constructor(t){super(t);const e=t.t;this.focusTracker=new ya,this.keystrokes=new xa,this.previewButtonView=this._createPreviewButton(),this.unlinkButtonView=this._createButton(e("Unlink"),'',"unlink"),this.editButtonView=this._createButton(e("Edit link"),Xh.pencil,"edit"),this.set("href"),this._focusables=new sh,this._focusCycler=new yu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-actions","ck-responsive-form"],tabindex:"-1"},children:[this.previewButtonView,this.editButtonView,this.unlinkButtonView]})}render(){super.render();[this.previewButtonView,this.editButtonView,this.unlinkButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createButton(t,e,n){const o=new lu(this.locale);return o.set({label:t,icon:e,tooltip:!0}),o.delegate("execute").to(this,n),o}_createPreviewButton(){const t=new lu(this.locale),e=this.bindTemplate,n=this.t;return t.set({withText:!0,tooltip:n("Open link in new tab")}),t.extendTemplate({attributes:{class:["ck","ck-link-actions__preview"],href:e.to("href",(t=>t&&Vb(t))),target:"_blank",rel:"noopener noreferrer"}}),t.bind("label").to(this,"href",(t=>t||n("This link has no URL"))),t.bind("isEnabled").to(this,"href",(t=>!!t)),t.template.tag="a",t.template.eventListeners={},t}}const lw="link-ui";class dw extends F{static get requires(){return[Cg]}static get pluginName(){return"LinkUI"}init(){const t=this.editor;t.editing.view.addObserver(Gd),this.actionsView=this._createActionsView(),this.formView=this._createFormView(),this._balloon=t.plugins.get(Cg),this._createToolbarLinkButton(),this._enableUserBalloonInteractions(),t.conversion.for("editingDowncast").markerToHighlight({model:lw,view:{classes:["ck-fake-link-selection"]}}),t.conversion.for("editingDowncast").markerToElement({model:lw,view:{name:"span",classes:["ck-fake-link-selection","ck-fake-link-selection_collapsed"]}})}destroy(){super.destroy(),this.formView.destroy()}_createActionsView(){const t=this.editor,e=new cw(t.locale),n=t.commands.get("link"),o=t.commands.get("unlink");return e.bind("href").to(n,"value"),e.editButtonView.bind("isEnabled").to(n),e.unlinkButtonView.bind("isEnabled").to(o),this.listenTo(e,"edit",(()=>{this._addFormView()})),this.listenTo(e,"unlink",(()=>{t.execute("unlink"),this._hideUI()})),e.keystrokes.set("Esc",((t,e)=>{this._hideUI(),e()})),e.keystrokes.set(jb,((t,e)=>{this._addFormView(),e()})),e}_createFormView(){const t=this.editor,e=t.commands.get("link"),n=t.config.get("link.defaultProtocol"),o=new rw(t.locale,e);return o.urlInputView.fieldView.bind("value").to(e,"value"),o.urlInputView.bind("isReadOnly").to(e,"isEnabled",(t=>!t)),o.saveButtonView.bind("isEnabled").to(e),this.listenTo(o,"submit",(()=>{const{value:e}=o.urlInputView.fieldView.element,i=Hb(e,n);t.execute("link",i,o.getDecoratorSwitchesState()),this._closeFormView()})),this.listenTo(o,"cancel",(()=>{this._closeFormView()})),o.keystrokes.set("Esc",((t,e)=>{this._closeFormView(),e()})),o}_createToolbarLinkButton(){const t=this.editor,e=t.commands.get("link"),n=t.t;t.keystrokes.set(jb,((t,n)=>{n(),e.isEnabled&&this._showUI(!0)})),t.ui.componentFactory.add("link",(t=>{const o=new lu(t);return o.isEnabled=!0,o.label=n("Link"),o.icon='',o.keystroke=jb,o.tooltip=!0,o.isToggleable=!0,o.bind("isEnabled").to(e,"isEnabled"),o.bind("isOn").to(e,"value",(t=>!!t)),this.listenTo(o,"execute",(()=>this._showUI(!0))),o}))}_enableUserBalloonInteractions(){const t=this.editor.editing.view.document;this.listenTo(t,"click",(()=>{this._getSelectedLinkElement()&&this._showUI()})),this.editor.keystrokes.set("Tab",((t,e)=>{this._areActionsVisible&&!this.actionsView.focusTracker.isFocused&&(this.actionsView.focus(),e())}),{priority:"high"}),this.editor.keystrokes.set("Esc",((t,e)=>{this._isUIVisible&&(this._hideUI(),e())})),tu({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:[this._balloon.view.element],callback:()=>this._hideUI()})}_addActionsView(){this._areActionsInPanel||this._balloon.add({view:this.actionsView,position:this._getBalloonPositionData()})}_addFormView(){if(this._isFormInPanel)return;const t=this.editor.commands.get("link");this.formView.disableCssTransitions(),this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions(),this.formView.urlInputView.fieldView.element.value=t.value||""}_closeFormView(){const t=this.editor.commands.get("link");t.restoreManualDecoratorStates(),void 0!==t.value?this._removeFormView():this._hideUI()}_removeFormView(){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this._balloon.remove(this.formView),this.editor.editing.view.focus(),this._hideFakeVisualSelection())}_showUI(t=!1){this._getSelectedLinkElement()?(this._areActionsVisible?this._addFormView():this._addActionsView(),t&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addActionsView(),t&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}_hideUI(){if(!this._isUIInPanel)return;const t=this.editor;this.stopListening(t.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),t.editing.view.focus(),this._removeFormView(),this._balloon.remove(this.actionsView),this._hideFakeVisualSelection()}_startUpdatingUI(){const t=this.editor,e=t.editing.view.document;let n=this._getSelectedLinkElement(),o=r();const i=()=>{const t=this._getSelectedLinkElement(),e=r();n&&!t||!n&&e!==o?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),n=t,o=e};function r(){return e.selection.focus.getAncestors().reverse().find((t=>t.is("element")))}this.listenTo(t.ui,"update",i),this.listenTo(this._balloon,"change:visibleView",i)}get _isFormInPanel(){return this._balloon.hasView(this.formView)}get _areActionsInPanel(){return this._balloon.hasView(this.actionsView)}get _areActionsVisible(){return this._balloon.visibleView===this.actionsView}get _isUIInPanel(){return this._isFormInPanel||this._areActionsInPanel}get _isUIVisible(){return this._balloon.visibleView==this.formView||this._areActionsVisible}_getBalloonPositionData(){const t=this.editor.editing.view,e=this.editor.model,n=t.document;let o=null;if(e.markers.has(lw)){const e=Array.from(this.editor.editing.mapper.markerNameToElements(lw)),n=t.createRange(t.createPositionBefore(e[0]),t.createPositionAfter(e[e.length-1]));o=t.domConverter.viewRangeToDom(n)}else o=()=>{const e=this._getSelectedLinkElement();return e?t.domConverter.mapViewToDom(e):t.domConverter.viewRangeToDom(n.selection.getFirstRange())};return{target:o}}_getSelectedLinkElement(){const t=this.editor.editing.view,e=t.document.selection,n=e.getSelectedElement();if(e.isCollapsed||n&&am(n))return hw(e.getFirstPosition());{const n=e.getFirstRange().getTrimmed(),o=hw(n.start),i=hw(n.end);return o&&o==i&&t.createRangeIn(o).getTrimmed().isEqual(n)?o:null}}_showFakeVisualSelection(){const t=this.editor.model;t.change((e=>{const n=t.document.selection.getFirstRange();if(t.markers.has(lw))e.updateMarker(lw,{range:n});else if(n.start.isAtEnd){const o=n.start.getLastMatchingPosition((({item:e})=>!t.schema.isContent(e)),{boundaries:n});e.addMarker(lw,{usingOperation:!1,affectsData:!1,range:e.createRange(o,n.end)})}else e.addMarker(lw,{usingOperation:!1,affectsData:!1,range:n})}))}_hideFakeVisualSelection(){const t=this.editor.model;t.markers.has(lw)&&t.change((t=>{t.removeMarker(lw)}))}}function hw(t){return t.getAncestors().find((t=>{return(e=t).is("attributeElement")&&!!e.getCustomProperty("link");var e}))}const uw=new RegExp("(^|\\s)(((?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(((?!www\\.)|(www\\.))(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63})))(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+(?:[a-z\\u00a1-\\uffff]{2,63})))$","i");class gw extends F{static get requires(){return[tm]}static get pluginName(){return"AutoLink"}init(){const t=this.editor.model.document.selection;t.on("change:range",(()=>{this.isEnabled=!t.anchor.parent.is("element","codeBlock")})),this._enableTypingHandling()}afterInit(){this._enableEnterHandling(),this._enableShiftEnterHandling()}_enableTypingHandling(){const t=this.editor,e=new rp(t.model,(t=>{if(!function(t){return t.length>4&&" "===t[t.length-1]&&" "!==t[t.length-2]}(t))return;const e=mw(t.substr(0,t.length-1));return e?{url:e}:void 0}));e.on("matched:data",((e,n)=>{const{batch:o,range:i,url:r}=n;if(!o.isTyping)return;const s=i.end.getShiftedBy(-1),a=s.getShiftedBy(-r.length),c=t.model.createRange(a,s);this._applyAutoLink(r,c)})),e.bind("isEnabled").to(this)}_enableEnterHandling(){const t=this.editor,e=t.model,n=t.commands.get("enter");n&&n.on("execute",(()=>{const t=e.document.selection.getFirstPosition();if(!t.parent.previousSibling)return;const n=e.createRangeIn(t.parent.previousSibling);this._checkAndApplyAutoLinkOnRange(n)}))}_enableShiftEnterHandling(){const t=this.editor,e=t.model,n=t.commands.get("shiftEnter");n&&n.on("execute",(()=>{const t=e.document.selection.getFirstPosition(),n=e.createRange(e.createPositionAt(t.parent,0),t.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(n)}))}_checkAndApplyAutoLinkOnRange(t){const e=this.editor.model,{text:n,range:o}=ip(t,e),i=mw(n);if(i){const t=e.createRange(o.end.getShiftedBy(-i.length),o.end);this._applyAutoLink(i,t)}}_applyAutoLink(t,e){const n=this.editor.model,o=Hb(t,this.editor.config.get("link.defaultProtocol"));this.isEnabled&&function(t,e){return e.schema.checkAttributeInSelection(e.createSelection(t),"linkHref")}(e,n)&&qb(o)&&!function(t){const e=t.start.nodeAfter;return e&&e.hasAttribute("linkHref")}(e)&&this._persistAutoLink(o,e)}_persistAutoLink(t,e){const n=this.editor.model,o=this.editor.plugins.get("Delete");n.enqueueChange((i=>{i.setAttribute("linkHref",t,e),n.enqueueChange((()=>{o.requestUndoOnBackspace()}))}))}}function mw(t){const e=uw.exec(t);return e?e[2]:null}class pw extends U{constructor(t,e){super(t),this.type=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,n=e.document,o=Array.from(n.selection.getSelectedBlocks()).filter((t=>kw(t,e.schema))),i=void 0!==t.forceValue?!t.forceValue:this.value;e.change((t=>{if(i){let e=o[o.length-1].nextSibling,n=Number.POSITIVE_INFINITY,i=[];for(;e&&"listItem"==e.name&&0!==e.getAttribute("listIndent");){const t=e.getAttribute("listIndent");t=n;)r>i.getAttribute("listIndent")&&(r=i.getAttribute("listIndent")),i.getAttribute("listIndent")==r&&t[e?"unshift":"push"](i),i=i[e?"previousSibling":"nextSibling"]}}function kw(t,e){return e.checkChild(t.parent,"listItem")&&!e.isObject(t)}class bw extends U{constructor(t,e){super(t),this._indentBy="forward"==e?1:-1}refresh(){this.isEnabled=this._checkEnabled()}execute(){const t=this.editor.model,e=t.document;let n=Array.from(e.selection.getSelectedBlocks());t.change((t=>{const e=n[n.length-1];let o=e.nextSibling;for(;o&&"listItem"==o.name&&o.getAttribute("listIndent")>e.getAttribute("listIndent");)n.push(o),o=o.nextSibling;this._indentBy<0&&(n=n.reverse());for(const e of n){const n=e.getAttribute("listIndent")+this._indentBy;n<0?t.rename(e,"paragraph"):t.setAttribute("listIndent",n,e)}this.fire("_executeCleanup",n)}))}_checkEnabled(){const t=va(this.editor.model.document.selection.getSelectedBlocks());if(!t||!t.is("element","listItem"))return!1;if(this._indentBy>0){const e=t.getAttribute("listIndent"),n=t.getAttribute("listType");let o=t.previousSibling;for(;o&&o.is("element","listItem")&&o.getAttribute("listIndent")>=e;){if(o.getAttribute("listIndent")==e)return o.getAttribute("listType")==n;o=o.previousSibling}return!1}return!0}}function ww(t,e){const n=e.mapper,o=e.writer,i="numbered"==t.getAttribute("listType")?"ol":"ul",r=function(t){const e=t.createContainerElement("li");return e.getFillerOffset=xw,e}(o),s=o.createContainerElement(i,null);return o.insert(o.createPositionAt(s,0),r),n.bindElements(t,r),r}function _w(t,e,n,o){const i=e.parent,r=n.mapper,s=n.writer;let a=r.toViewPosition(o.createPositionBefore(t));const c=vw(t.previousSibling,{sameIndent:!0,smallerIndent:!0,listIndent:t.getAttribute("listIndent")}),l=t.previousSibling;if(c&&c.getAttribute("listIndent")==t.getAttribute("listIndent")){const t=r.toViewElement(c);a=s.breakContainer(s.createPositionAfter(t))}else if(l&&"listItem"==l.name){a=r.toViewPosition(o.createPositionAt(l,"end"));const t=r.findMappedViewAncestor(a),e=function(t){for(const e of t.getChildren())if("ul"==e.name||"ol"==e.name)return e;return null}(t);a=e?s.createPositionBefore(e):s.createPositionAt(t,"end")}else a=r.toViewPosition(o.createPositionBefore(t));if(a=Cw(a),s.insert(a,i),l&&"listItem"==l.name){const t=r.toViewElement(l),n=s.createRange(s.createPositionAt(t,0),a).getWalker({ignoreElementEnd:!0});for(const t of n)if(t.item.is("element","li")){const o=s.breakContainer(s.createPositionBefore(t.item)),i=t.item.parent,r=s.createPositionAt(e,"end");Aw(s,r.nodeBefore,r.nodeAfter),s.move(s.createRangeOn(i),r),n.position=o}}else{const n=i.nextSibling;if(n&&(n.is("element","ul")||n.is("element","ol"))){let o=null;for(const e of n.getChildren()){const n=r.toModelElement(e);if(!(n&&n.getAttribute("listIndent")>t.getAttribute("listIndent")))break;o=e}o&&(s.breakContainer(s.createPositionAfter(o)),s.move(s.createRangeOn(o.parent),s.createPositionAt(e,"end")))}}Aw(s,i,i.nextSibling),Aw(s,i.previousSibling,i)}function Aw(t,e,n){return!e||!n||"ul"!=e.name&&"ol"!=e.name||e.name!=n.name||e.getAttribute("class")!==n.getAttribute("class")?null:t.mergeContainers(t.createPositionAfter(e))}function Cw(t){return t.getLastMatchingPosition((t=>t.item.is("uiElement")))}function vw(t,e){const n=!!e.sameIndent,o=!!e.smallerIndent,i=e.listIndent;let r=t;for(;r&&"listItem"==r.name;){const t=r.getAttribute("listIndent");if(n&&i==t||o&&i>t)return r;r="forward"===e.direction?r.nextSibling:r.previousSibling}return null}function yw(t,e,n,o){t.ui.componentFactory.add(e,(i=>{const r=t.commands.get(e),s=new lu(i);return s.set({label:n,icon:o,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.on("execute",(()=>{t.execute(e),t.editing.view.focus()})),s}))}function xw(){const t=!this.isEmpty&&("ul"==this.getChild(0).name||"ol"==this.getChild(0).name);return this.isEmpty||t?0:Li.call(this)}function Ew(t){return(e,n,o)=>{const i=o.consumable;if(!i.test(n.item,"insert")||!i.test(n.item,"attribute:listType")||!i.test(n.item,"attribute:listIndent"))return;i.consume(n.item,"insert"),i.consume(n.item,"attribute:listType"),i.consume(n.item,"attribute:listIndent");const r=n.item;_w(r,ww(r,o),o,t)}}function Dw(t,e,n){if(!n.consumable.test(e.item,t.name))return;const o=n.mapper.toViewElement(e.item),i=n.writer;i.breakContainer(i.createPositionBefore(o)),i.breakContainer(i.createPositionAfter(o));const r=o.parent,s="numbered"==e.attributeNewValue?"ol":"ul";i.rename(s,r)}function Iw(t,e,n){n.consumable.consume(e.item,t.name);const o=n.mapper.toViewElement(e.item).parent,i=n.writer;Aw(i,o,o.nextSibling),Aw(i,o.previousSibling,o)}function Tw(t,e,n){if(n.consumable.test(e.item,t.name)&&"listItem"!=e.item.name){let t=n.mapper.toViewPosition(e.range.start);const o=n.writer,i=[];for(;("ul"==t.parent.name||"ol"==t.parent.name)&&(t=o.breakContainer(t),"li"==t.parent.name);){const e=t,n=o.createPositionAt(t.parent,"end");if(!e.isEqual(n)){const t=o.remove(o.createRange(e,n));i.push(t)}t=o.createPositionAfter(t.parent)}if(i.length>0){for(let e=0;e0){const e=Aw(o,n,n.nextSibling);e&&e.parent==n&&t.offset--}}Aw(o,t.nodeBefore,t.nodeAfter)}}}function Mw(t,e,n){const o=n.mapper.toViewPosition(e.position),i=o.nodeBefore,r=o.nodeAfter;Aw(n.writer,i,r)}function Sw(t,e,n){if(n.consumable.consume(e.viewItem,{name:!0})){const t=n.writer,o=t.createElement("listItem"),i=function(t){let e=0,n=t.parent;for(;n;){if(n.is("element","li"))e++;else{const t=n.previousSibling;t&&t.is("element","li")&&e++}n=n.parent}return e}(e.viewItem);t.setAttribute("listIndent",i,o);const r=e.viewItem.parent&&"ol"==e.viewItem.parent.name?"numbered":"bulleted";if(t.setAttribute("listType",r,o),!n.safeInsert(o,e.modelCursor))return;const s=function(t,e,n){const{writer:o,schema:i}=n;let r=o.createPositionAfter(t);for(const s of e)if("ul"==s.name||"ol"==s.name)r=n.convertItem(s,r).modelCursor;else{const e=n.convertItem(s,o.createPositionAt(t,"end")),a=e.modelRange.start.nodeAfter;a&&a.is("element")&&!i.checkChild(t,a.name)&&(t=e.modelCursor.parent.is("element","listItem")?e.modelCursor.parent:Lw(e.modelCursor),r=o.createPositionAfter(t))}return r}(o,e.viewItem.getChildren(),n);e.modelRange=t.createRange(e.modelCursor,s),n.updateConversionResult(o,e)}}function Nw(t,e,n){if(n.consumable.test(e.viewItem,{name:!0})){const t=Array.from(e.viewItem.getChildren());for(const e of t){!(e.is("element","li")||Rw(e))&&e._remove()}}}function Bw(t,e,n){if(n.consumable.test(e.viewItem,{name:!0})){if(0===e.viewItem.childCount)return;const t=[...e.viewItem.getChildren()];let n=!1;for(const e of t)n&&!Rw(e)&&e._remove(),Rw(e)&&(n=!0)}}function Pw(t){return(e,n)=>{if(n.isPhantom)return;const o=n.modelPosition.nodeBefore;if(o&&o.is("element","listItem")){const e=n.mapper.toViewElement(o),i=e.getAncestors().find(Rw),r=t.createPositionAt(e,0).getWalker();for(const t of r){if("elementStart"==t.type&&t.item.is("element","li")){n.viewPosition=t.previousPosition;break}if("elementEnd"==t.type&&t.item==i){n.viewPosition=t.nextPosition;break}}}}}function zw(t,[e,n,o]){let i,r=e.is("documentFragment")?e.getChild(0):e;if(i=n?this.createSelection(n,o):this.document.selection,r&&r.is("element","listItem")){const t=i.getFirstPosition();let e=null;if(t.parent.is("element","listItem")?e=t.parent:t.nodeBefore&&t.nodeBefore.is("element","listItem")&&(e=t.nodeBefore),e){const t=e.getAttribute("listIndent");if(t>0)for(;r&&r.is("element","listItem");)r._setAttribute("listIndent",r.getAttribute("listIndent")+t),r=r.nextSibling}}}function Lw(t){const e=new Za({startPosition:t});let n;do{n=e.next()}while(!n.value.item.is("element","listItem"));return n.value.item}function Ow(t,e,n,o,i,r){const s=vw(e.nodeBefore,{sameIndent:!0,smallerIndent:!0,listIndent:t,foo:"b"}),a=i.mapper,c=i.writer,l=s?s.getAttribute("listIndent"):null;let d;if(s)if(l==t){const t=a.toViewElement(s).parent;d=c.createPositionAfter(t)}else{const t=r.createPositionAt(s,"end");d=a.toViewPosition(t)}else d=n;d=Cw(d);for(const t of[...o.getChildren()])Rw(t)&&(d=c.move(c.createRangeOn(t),d).end,Aw(c,t,t.nextSibling),Aw(c,t.previousSibling,t))}function Rw(t){return t.is("element","ol")||t.is("element","ul")}class jw extends F{static get pluginName(){return"ListEditing"}static get requires(){return[Gg,tm]}init(){const t=this.editor;t.model.schema.register("listItem",{inheritAllFrom:"$block",allowAttributes:["listType","listIndent"]});const e=t.data,n=t.editing;var o;t.model.document.registerPostFixer((e=>function(t,e){const n=t.document.differ.getChanges(),o=new Map;let i=!1;for(const o of n)if("insert"==o.type&&"listItem"==o.name)r(o.position);else if("insert"==o.type&&"listItem"!=o.name){if("$text"!=o.name){const n=o.position.nodeAfter;n.hasAttribute("listIndent")&&(e.removeAttribute("listIndent",n),i=!0),n.hasAttribute("listType")&&(e.removeAttribute("listType",n),i=!0),n.hasAttribute("listStyle")&&(e.removeAttribute("listStyle",n),i=!0),n.hasAttribute("listReversed")&&(e.removeAttribute("listReversed",n),i=!0),n.hasAttribute("listStart")&&(e.removeAttribute("listStart",n),i=!0);for(const e of Array.from(t.createRangeIn(n)).filter((t=>t.item.is("element","listItem"))))r(e.previousPosition)}r(o.position.getShiftedBy(o.length))}else"remove"==o.type&&"listItem"==o.name?r(o.position):("attribute"==o.type&&"listIndent"==o.attributeKey||"attribute"==o.type&&"listType"==o.attributeKey)&&r(o.range.start);for(const t of o.values())s(t),a(t);return i;function r(t){const e=t.nodeBefore;if(e&&e.is("element","listItem")){let t=e;if(o.has(t))return;for(let e=t.previousSibling;e&&e.is("element","listItem");e=t.previousSibling)if(t=e,o.has(t))return;o.set(e,t)}else{const e=t.nodeAfter;e&&e.is("element","listItem")&&o.set(e,e)}}function s(t){let n=0,o=null;for(;t&&t.is("element","listItem");){const r=t.getAttribute("listIndent");if(r>n){let s;null===o?(o=r-n,s=n):(o>r&&(o=r),s=r-o),e.setAttribute("listIndent",s,t),i=!0}else o=null,n=t.getAttribute("listIndent")+1;t=t.nextSibling}}function a(t){let n=[],o=null;for(;t&&t.is("element","listItem");){const r=t.getAttribute("listIndent");if(o&&o.getAttribute("listIndent")>r&&(n=n.slice(0,r+1)),0!=r)if(n[r]){const o=n[r];t.getAttribute("listType")!=o&&(e.setAttribute("listType",o,t),i=!0)}else n[r]=t.getAttribute("listType");o=t,t=t.nextSibling}}}(t.model,e))),n.mapper.registerViewToModelLength("li",Fw),e.mapper.registerViewToModelLength("li",Fw),n.mapper.on("modelToViewPosition",Pw(n.view)),n.mapper.on("viewToModelPosition",(o=t.model,(t,e)=>{const n=e.viewPosition,i=n.parent,r=e.mapper;if("ul"==i.name||"ol"==i.name){if(n.isAtEnd){const t=r.toModelElement(n.nodeBefore),i=r.getModelLength(n.nodeBefore);e.modelPosition=o.createPositionBefore(t).getShiftedBy(i)}else{const t=r.toModelElement(n.nodeAfter);e.modelPosition=o.createPositionBefore(t)}t.stop()}else if("li"==i.name&&n.nodeBefore&&("ul"==n.nodeBefore.name||"ol"==n.nodeBefore.name)){const s=r.toModelElement(i);let a=1,c=n.nodeBefore;for(;c&&Rw(c);)a+=r.getModelLength(c),c=c.previousSibling;e.modelPosition=o.createPositionBefore(s).getShiftedBy(a),t.stop()}})),e.mapper.on("modelToViewPosition",Pw(n.view)),t.conversion.for("editingDowncast").add((e=>{e.on("insert",Tw,{priority:"high"}),e.on("insert:listItem",Ew(t.model)),e.on("attribute:listType:listItem",Dw,{priority:"high"}),e.on("attribute:listType:listItem",Iw,{priority:"low"}),e.on("attribute:listIndent:listItem",function(t){return(e,n,o)=>{if(!o.consumable.consume(n.item,"attribute:listIndent"))return;const i=o.mapper.toViewElement(n.item),r=o.writer;r.breakContainer(r.createPositionBefore(i)),r.breakContainer(r.createPositionAfter(i));const s=i.parent,a=s.previousSibling,c=r.createRangeOn(s);r.remove(c),a&&a.nextSibling&&Aw(r,a,a.nextSibling),Ow(n.attributeOldValue+1,n.range.start,c.start,i,o,t),_w(n.item,i,o,t);for(const t of n.item.getChildren())o.consumable.consume(t,"insert")}}(t.model)),e.on("remove:listItem",function(t){return(e,n,o)=>{const i=o.mapper.toViewPosition(n.position).getLastMatchingPosition((t=>!t.item.is("element","li"))).nodeAfter,r=o.writer;r.breakContainer(r.createPositionBefore(i)),r.breakContainer(r.createPositionAfter(i));const s=i.parent,a=s.previousSibling,c=r.createRangeOn(s),l=r.remove(c);a&&a.nextSibling&&Aw(r,a,a.nextSibling),Ow(o.mapper.toModelElement(i).getAttribute("listIndent")+1,n.position,c.start,i,o,t);for(const t of r.createRangeIn(l).getItems())o.mapper.unbindViewElement(t);e.stop()}}(t.model)),e.on("remove",Mw,{priority:"low"})})),t.conversion.for("dataDowncast").add((e=>{e.on("insert",Tw,{priority:"high"}),e.on("insert:listItem",Ew(t.model))})),t.conversion.for("upcast").add((t=>{t.on("element:ul",Nw,{priority:"high"}),t.on("element:ol",Nw,{priority:"high"}),t.on("element:li",Bw,{priority:"high"}),t.on("element:li",Sw)})),t.model.on("insertContent",zw,{priority:"high"}),t.commands.add("numberedList",new pw(t,"numbered")),t.commands.add("bulletedList",new pw(t,"bulleted")),t.commands.add("indentList",new bw(t,"forward")),t.commands.add("outdentList",new bw(t,"backward"));const i=n.view.document;this.listenTo(i,"enter",((t,e)=>{const n=this.editor.model.document,o=n.selection.getLastPosition().parent;n.selection.isCollapsed&&"listItem"==o.name&&o.isEmpty&&(this.editor.execute("outdentList"),e.preventDefault(),t.stop())}),{context:"li"}),this.listenTo(i,"delete",((t,e)=>{if("backward"!==e.direction)return;const n=this.editor.model.document.selection;if(!n.isCollapsed)return;const o=n.getFirstPosition();if(!o.isAtStart)return;const i=o.parent;if("listItem"!==i.name)return;i.previousSibling&&"listItem"===i.previousSibling.name||(this.editor.execute("outdentList"),e.preventDefault(),t.stop())}),{context:"li"}),this.listenTo(t.editing.view.document,"tab",((e,n)=>{const o=n.shiftKey?"outdentList":"indentList";this.editor.commands.get(o).isEnabled&&(t.execute(o),n.stopPropagation(),n.preventDefault(),e.stop())}),{context:"li"})}afterInit(){const t=this.editor.commands,e=t.get("indent"),n=t.get("outdent");e&&e.registerChildCommand(t.get("indentList")),n&&n.registerChildCommand(t.get("outdentList"))}}function Fw(t){let e=1;for(const n of t.getChildren())if("ul"==n.name||"ol"==n.name)for(const t of n.getChildren())e+=Fw(t);return e}class Vw extends F{static get pluginName(){return"ListUI"}init(){const t=this.editor.t;yw(this.editor,"numberedList",t("Numbered List"),''),yw(this.editor,"bulletedList",t("Bulleted List"),'')}}function Uw(t,e){return t=>{t.on("attribute:url:media",n)};function n(n,o,i){if(!i.consumable.consume(o.item,n.name))return;const r=o.attributeNewValue,s=i.writer,a=i.mapper.toViewElement(o.item),c=[...a.getChildren()].find((t=>t.getCustomProperty("media-content")));s.remove(c);const l=t.getMediaViewElement(s,r,e);s.insert(s.createPositionAt(a,0),l)}}function Hw(t,e,n,o){return t.createContainerElement("figure",{class:"media"},[e.getMediaViewElement(t,n,o),t.createSlot()])}function qw(t){const e=t.getSelectedElement();return e&&e.is("element","media")?e:null}function Gw(t,e,n,o){t.change((i=>{const r=i.createElement("media",{url:e});t.insertObject(r,n,null,{setSelection:"on",findOptimalPosition:o})}))}class Ww extends U{refresh(){const t=this.editor.model,e=t.document.selection,n=qw(e);this.value=n?n.getAttribute("url"):null,this.isEnabled=function(t){const e=t.getSelectedElement();return!!e&&"media"===e.name}(e)||function(t,e){let n=mm(t,e).start.parent;n.isEmpty&&!e.schema.isLimit(n)&&(n=n.parent);return e.schema.checkChild(n,"media")}(e,t)}execute(t){const e=this.editor.model,n=e.document.selection,o=qw(n);o?e.change((e=>{e.setAttribute("url",t,o)})):Gw(e,t,n,!0)}}class Yw{constructor(t,e){const n=e.providers,o=e.extraProviders||[],i=new Set(e.removeProviders),r=n.concat(o).filter((t=>{const e=t.name;return e?!i.has(e):(l("media-embed-no-provider-name",{provider:t}),!1)}));this.locale=t,this.providerDefinitions=r}hasMedia(t){return!!this._getMedia(t)}getMediaViewElement(t,e,n){return this._getMedia(e).getViewElement(t,n)}_getMedia(t){if(!t)return new $w(this.locale);t=t.trim();for(const e of this.providerDefinitions){const n=e.html,o=bo(e.url);for(const e of o){const o=this._getUrlMatches(t,e);if(o)return new $w(this.locale,t,o,n)}}return null}_getUrlMatches(t,e){let n=t.match(e);if(n)return n;let o=t.replace(/^https?:\/\//,"");return n=o.match(e),n||(o=o.replace(/^www\./,""),n=o.match(e),n||null)}}class $w{constructor(t,e,n,o){this.url=this._getValidUrl(e),this._locale=t,this._match=n,this._previewRenderer=o}getViewElement(t,e){const n={};let o;if(e.renderForEditingView||e.renderMediaPreview&&this.url&&this._previewRenderer){this.url&&(n["data-oembed-url"]=this.url),e.renderForEditingView&&(n.class="ck-media__wrapper");const i=this._getPreviewHtml(e);o=t.createRawElement("div",n,((t,e)=>{e.setContentOf(t,i)}))}else this.url&&(n.url=this.url),o=t.createEmptyElement(e.elementName,n);return t.setCustomProperty("media-content",!0,o),o}_getPreviewHtml(t){return this._previewRenderer?this._previewRenderer(this._match):this.url&&t.renderForEditingView?this._getPlaceholderHtml():""}_getPlaceholderHtml(){const t=new su,e=this._locale.t;t.content='',t.viewBox="0 0 64 42";return new ah({tag:"div",attributes:{class:"ck ck-reset_all ck-media__placeholder"},children:[{tag:"div",attributes:{class:"ck-media__placeholder__icon"},children:[t]},{tag:"a",attributes:{class:"ck-media__placeholder__url",target:"_blank",rel:"noopener noreferrer",href:this.url,"data-cke-tooltip-text":e("Open media in new tab")},children:[{tag:"span",attributes:{class:"ck-media__placeholder__url__text"},children:[this.url]}]}]}).render().outerHTML}_getValidUrl(t){return t?t.match(/^https?/)?t:"https://"+t:null}}var Kw=n(7442),Qw={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Kw.Z,Qw);Kw.Z.locals;class Zw extends F{static get pluginName(){return"MediaEmbedEditing"}constructor(t){super(t),t.config.define("mediaEmbed",{elementName:"oembed",providers:[{name:"dailymotion",url:/^dailymotion\.com\/video\/(\w+)/,html:t=>`
`},{name:"spotify",url:[/^open\.spotify\.com\/(artist\/\w+)/,/^open\.spotify\.com\/(album\/\w+)/,/^open\.spotify\.com\/(track\/\w+)/],html:t=>`
`},{name:"youtube",url:[/^(?:m\.)?youtube\.com\/watch\?v=([\w-]+)(?:&t=(\d+))?/,/^(?:m\.)?youtube\.com\/v\/([\w-]+)(?:\?t=(\d+))?/,/^youtube\.com\/embed\/([\w-]+)(?:\?start=(\d+))?/,/^youtu\.be\/([\w-]+)(?:\?t=(\d+))?/],html:t=>{const e=t[1],n=t[2];return`
`}},{name:"vimeo",url:[/^vimeo\.com\/(\d+)/,/^vimeo\.com\/[^/]+\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/album\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/channels\/[^/]+\/(\d+)/,/^vimeo\.com\/groups\/[^/]+\/videos\/(\d+)/,/^vimeo\.com\/ondemand\/[^/]+\/(\d+)/,/^player\.vimeo\.com\/video\/(\d+)/],html:t=>`
`},{name:"instagram",url:/^instagram\.com\/p\/(\w+)/},{name:"twitter",url:/^twitter\.com/},{name:"googleMaps",url:[/^google\.com\/maps/,/^goo\.gl\/maps/,/^maps\.google\.com/,/^maps\.app\.goo\.gl/]},{name:"flickr",url:/^flickr\.com/},{name:"facebook",url:/^facebook\.com/}]}),this.registry=new Yw(t.locale,t.config.get("mediaEmbed"))}init(){const t=this.editor,e=t.model.schema,n=t.t,o=t.conversion,i=t.config.get("mediaEmbed.previewsInData"),r=t.config.get("mediaEmbed.elementName"),s=this.registry;t.commands.add("mediaEmbed",new Ww(t)),e.register("media",{inheritAllFrom:"$blockObject",allowAttributes:["url"]}),o.for("dataDowncast").elementToStructure({model:"media",view:(t,{writer:e})=>{const n=t.getAttribute("url");return Hw(e,s,n,{elementName:r,renderMediaPreview:n&&i})}}),o.for("dataDowncast").add(Uw(s,{elementName:r,renderMediaPreview:i})),o.for("editingDowncast").elementToStructure({model:"media",view:(t,{writer:e})=>{const o=t.getAttribute("url");return function(t,e,n){return e.setCustomProperty("media",!0,t),cm(t,e,{label:n})}(Hw(e,s,o,{elementName:r,renderForEditingView:!0}),e,n("media widget"))}}),o.for("editingDowncast").add(Uw(s,{elementName:r,renderForEditingView:!0})),o.for("upcast").elementToElement({view:t=>["oembed",r].includes(t.name)&&t.getAttribute("url")?{name:!0}:null,model:(t,{writer:e})=>{const n=t.getAttribute("url");if(s.hasMedia(n))return e.createElement("media",{url:n})}}).elementToElement({view:{name:"div",attributes:{"data-oembed-url":!0}},model:(t,{writer:e})=>{const n=t.getAttribute("data-oembed-url");if(s.hasMedia(n))return e.createElement("media",{url:n})}}).add((t=>{t.on("element:figure",(function(t,e,n){if(!n.consumable.consume(e.viewItem,{name:!0,classes:"media"}))return;const{modelRange:o,modelCursor:i}=n.convertChildren(e.viewItem,e.modelCursor);e.modelRange=o,e.modelCursor=i;va(o.getItems())||n.consumable.revert(e.viewItem,{name:!0,classes:"media"})}))}))}}const Jw=/^(?:http(s)?:\/\/)?[\w-]+\.[\w-.~:/?#[\]@!$&'()*+,;=%]+$/;class Xw extends F{static get requires(){return[Vm,tm,Np]}static get pluginName(){return"AutoMediaEmbed"}constructor(t){super(t),this._timeoutId=null,this._positionToInsert=null}init(){const t=this.editor,e=t.model.document;this.listenTo(t.plugins.get("ClipboardPipeline"),"inputTransformation",(()=>{const t=e.selection.getFirstRange(),n=fd.fromPosition(t.start);n.stickiness="toPrevious";const o=fd.fromPosition(t.end);o.stickiness="toNext",e.once("change:data",(()=>{this._embedMediaBetweenPositions(n,o),n.detach(),o.detach()}),{priority:"high"})})),t.commands.get("undo").on("execute",(()=>{this._timeoutId&&(_o.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)}),{priority:"high"})}_embedMediaBetweenPositions(t,e){const n=this.editor,o=n.plugins.get(Zw).registry,i=new kc(t,e),r=i.getWalker({ignoreElementEnd:!0});let s="";for(const t of r)t.item.is("$textProxy")&&(s+=t.item.data);if(s=s.trim(),!s.match(Jw))return void i.detach();if(!o.hasMedia(s))return void i.detach();n.commands.get("mediaEmbed").isEnabled?(this._positionToInsert=fd.fromPosition(t),this._timeoutId=_o.window.setTimeout((()=>{n.model.change((t=>{let e;this._timeoutId=null,t.remove(i),i.detach(),"$graveyard"!==this._positionToInsert.root.rootName&&(e=this._positionToInsert),Gw(n.model,s,e,!1),this._positionToInsert.detach(),this._positionToInsert=null})),n.plugins.get("Delete").requestUndoOnBackspace()}),100)):i.detach()}}var t_=n(9292),e_={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(t_.Z,e_);t_.Z.locals;class n_ extends Mh{constructor(t,e){super(e);const n=e.t;this.focusTracker=new ya,this.keystrokes=new xa,this.set("mediaURLInputValue",""),this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(n("Save"),Xh.check,"ck-button-save"),this.saveButtonView.type="submit",this.saveButtonView.bind("isEnabled").to(this,"mediaURLInputValue",(t=>!!t)),this.cancelButtonView=this._createButton(n("Cancel"),Xh.cancel,"ck-button-cancel","cancel"),this._focusables=new sh,this._focusCycler=new yu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this._validators=t,this.setTemplate({tag:"form",attributes:{class:["ck","ck-media-form","ck-responsive-form"],tabindex:"-1"},children:[this.urlInputView,this.saveButtonView,this.cancelButtonView]}),eu(this)}render(){super.render(),nu({view:this});[this.urlInputView,this.saveButtonView,this.cancelButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)})),this.keystrokes.listenTo(this.element);const t=t=>t.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t),this.listenTo(this.urlInputView.element,"selectstart",((t,e)=>{e.stopPropagation()}),{priority:"high"})}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}get url(){return this.urlInputView.fieldView.element.value.trim()}set url(t){this.urlInputView.fieldView.element.value=t.trim()}isValid(){this.resetFormStatus();for(const t of this._validators){const e=t(this);if(e)return this.urlInputView.errorText=e,!1}return!0}resetFormStatus(){this.urlInputView.errorText=null,this.urlInputView.infoText=this._urlInputViewInfoDefault}_createUrlInput(){const t=this.locale.t,e=new gg(this.locale,mg),n=e.fieldView;return this._urlInputViewInfoDefault=t("Paste the media URL in the input."),this._urlInputViewInfoTip=t("Tip: Paste the URL into the content to embed faster."),e.label=t("Media URL"),e.infoText=this._urlInputViewInfoDefault,n.on("input",(()=>{e.infoText=n.element.value?this._urlInputViewInfoTip:this._urlInputViewInfoDefault,this.mediaURLInputValue=n.element.value.trim()})),e}_createButton(t,e,n,o){const i=new lu(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),o&&i.delegate("execute").to(this,o),i}}class o_ extends F{static get requires(){return[Zw]}static get pluginName(){return"MediaEmbedUI"}init(){const t=this.editor,e=t.commands.get("mediaEmbed"),n=t.plugins.get(Zw).registry;t.ui.componentFactory.add("mediaEmbed",(o=>{const i=Wu(o),r=new n_(function(t,e){return[e=>{if(!e.url.length)return t("The URL must not be empty.")},n=>{if(!e.hasMedia(n.url))return t("This media URL is not supported.")}]}(t.t,n),t.locale);return this._setUpDropdown(i,r,e,t),this._setUpForm(i,r,e),i}))}_setUpDropdown(t,e,n){const o=this.editor,i=o.t,r=t.buttonView;t.bind("isEnabled").to(n),t.panelView.children.add(e),r.set({label:i("Insert media"),icon:'',tooltip:!0}),r.on("open",(()=>{e.disableCssTransitions(),e.url=n.value||"",e.urlInputView.fieldView.select(),e.enableCssTransitions()}),{priority:"low"}),t.on("submit",(()=>{e.isValid()&&(o.execute("mediaEmbed",e.url),o.editing.view.focus())})),t.on("change:isOpen",(()=>e.resetFormStatus())),t.on("cancel",(()=>{o.editing.view.focus()}))}_setUpForm(t,e,n){e.delegate("submit","cancel").to(t),e.urlInputView.bind("value").to(n,"value"),e.urlInputView.bind("isReadOnly").to(n,"isEnabled",(t=>!t))}}var i_=n(4652),r_={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(i_.Z,r_);i_.Z.locals;function s_(t,e,n,{blockElements:o,inlineObjectElements:i}){let r=n.createPositionAt(t,"forward"==e?"after":"before");return r=r.getLastMatchingPosition((({item:t})=>t.is("element")&&!o.includes(t.name)&&!i.includes(t.name)),{direction:e}),"forward"==e?r.nodeAfter:r.nodeBefore}function a_(t,e){return!!t&&t.is("element")&&e.includes(t.name)}function c_(t,e){if(!t.childCount)return;const n=new Yd(t.document),o=function(t,e){const n=e.createRangeIn(t),o=new Po({name:/^p|h\d+$/,styles:{"mso-list":/.*/}}),i=[];for(const t of n)if("elementStart"===t.type&&o.match(t.item)){const e=h_(t.item);i.push({element:t.item,id:e.id,order:e.order,indent:e.indent})}return i}(t,n);if(!o.length)return;let i=null,r=1;o.forEach(((t,s)=>{const a=function(t,e){if(!t)return!0;if(t.id!==e.id)return e.indent-t.indent!=1;const n=e.element.previousSibling;if(!n)return!0;return o=n,!(o.is("element","ol")||o.is("element","ul"));var o}(o[s-1],t),c=a?null:o[s-1],l=(h=t,(d=c)?h.indent-d.indent:h.indent-1);var d,h;if(a&&(i=null,r=1),!i||0!==l){const o=function(t,e){const n=new RegExp(`@list l${t.id}:level${t.indent}\\s*({[^}]*)`,"gi"),o=/mso-level-number-format:([^;]{0,100});/gi,i=/mso-level-start-at:\s{0,100}([0-9]{0,10})\s{0,100};/gi,r=n.exec(e);let s="decimal",a="ol",c=null;if(r&&r[1]){const e=o.exec(r[1]);if(e&&e[1]&&(s=e[1].trim(),a="bullet"!==s&&"image"!==s?"ol":"ul"),"bullet"===s){const e=function(t){const e=function(t){if(t.getChild(0).is("$text"))return null;for(const e of t.getChildren()){if(!e.is("element","span"))continue;const t=e.getChild(0);return t.is("$text")?t:t.getChild(0)}}(t);if(!e)return null;const n=e._data;if("o"===n)return"circle";if("·"===n)return"disc";if("§"===n)return"square";return null}(t.element);e&&(s=e)}else{const t=i.exec(r[1]);t&&t[1]&&(c=parseInt(t[1]))}}return{type:a,startIndex:c,style:l_(s)}}(t,e);if(i){if(t.indent>r){const t=i.getChild(i.childCount-1),e=t.getChild(t.childCount-1);i=d_(o,e,n),r+=1}else if(t.indent1&&n.setAttribute("start",t.startIndex,i),i}function h_(t){const e={},n=t.getStyle("mso-list");if(n){const t=n.match(/(^|\s{1,100})l(\d+)/i),o=n.match(/\s{0,100}lfo(\d+)/i),i=n.match(/\s{0,100}level(\d+)/i);t&&o&&i&&(e.id=t[2],e.order=o[1],e.indent=i[1])}return e}const u_=/id=("|')docs-internal-guid-[-0-9a-f]+("|')/i;class g_{constructor(t){this.document=t}isActive(t){return u_.test(t)}execute(t){const e=new Yd(this.document),{body:n}=t._parsedData;!function(t,e){for(const n of t.getChildren())if(n.is("element","b")&&"normal"===n.getStyle("font-weight")){const o=t.getChildIndex(n);e.remove(n),e.insertChild(o,n.getChildren(),t)}}(n,e),function(t,e){for(const n of e.createRangeIn(t)){const t=n.item;if(t.is("element","li")){const n=t.getChild(0);n&&n.is("element","p")&&e.unwrapElement(n)}}}(n,e),function(t,e){const n=new tr(e.document.stylesProcessor),o=new ps(n,{renderingMode:"data"}),i=o.blockElements,r=o.inlineObjectElements,s=[];for(const n of e.createRangeIn(t)){const t=n.item;if(t.is("element","br")){const n=s_(t,"forward",e,{blockElements:i,inlineObjectElements:r}),o=s_(t,"backward",e,{blockElements:i,inlineObjectElements:r}),a=a_(n,i);(a_(o,i)||a)&&s.push(t)}}for(const t of s)t.hasClass("Apple-interchange-newline")?e.remove(t):e.replace(t,e.createElement("p"))}(n,e),t.content=n}}function m_(t,e){if(!t.childCount)return;const n=new Yd,o=function(t,e){const n=e.createRangeIn(t),o=new Po({name:/v:(.+)/}),i=[];for(const t of n){if("elementStart"!=t.type)continue;const e=t.item,n=e.previousSibling&&e.previousSibling.name||null;o.match(e)&&e.getAttribute("o:gfxdata")&&"v:shapetype"!==n&&i.push(t.item.getAttribute("id"))}return i}(t,n);!function(t,e,n){const o=n.createRangeIn(e),i=new Po({name:"img"}),r=[];for(const e of o)if(i.match(e.item)){const n=e.item,o=n.getAttribute("v:shapes")?n.getAttribute("v:shapes").split(" "):[];o.length&&o.every((e=>t.indexOf(e)>-1))?r.push(n):n.getAttribute("src")||r.push(n)}for(const t of r)n.remove(t)}(o,t,n),function(t,e){const n=e.createRangeIn(t),o=new Po({name:/v:(.+)/}),i=[];for(const t of n)"elementStart"==t.type&&o.match(t.item)&&i.push(t.item);for(const t of i)e.remove(t)}(t,n);const i=function(t,e){const n=e.createRangeIn(t),o=new Po({name:"img"}),i=[];for(const t of n)o.match(t.item)&&t.item.getAttribute("src").startsWith("file://")&&i.push(t.item);return i}(t,n);i.length&&function(t,e,n){if(t.length===e.length)for(let o=0;oString.fromCharCode(parseInt(t,16)))).join(""))}const f_=//i,k_=/xmlns:o="urn:schemas-microsoft-com/i;class b_{constructor(t){this.document=t}isActive(t){return f_.test(t)||k_.test(t)}execute(t){const{body:e,stylesString:n}=t._parsedData;c_(e,n),m_(e,t.dataTransfer.getData("text/rtf")),t.content=e}}function w_(t){return t.replace(/(\s+)<\/span>/g,((t,e)=>1===e.length?" ":Array(e.length+1).join("  ").substr(0,e.length)))}function __(t,e){const n=new DOMParser,o=function(t){return w_(w_(t)).replace(/([^\S\r\n]*?)[\r\n]+([^\S\r\n]*<\/span>)/g,"$1$2").replace(/<\/span>/g,"").replace(/ <\//g," <\/o:p>/g," ").replace(/( |\u00A0)<\/o:p>/g,"").replace(/>([^\S\r\n]*[\r\n]\s*)<")}(function(t){const e="",n="",o=t.indexOf(e);if(o<0)return t;const i=t.indexOf(n,o+e.length);return t.substring(0,o+e.length)+(i>=0?t.substring(i):"")}(t=t.replace(//g,"")}(i.getData("text/html")):i.getData("text/plain")&&(((s=(s=i.getData("text/plain")).replace(//g,">").replace(/\r?\n\r?\n/g,"

").replace(/\r?\n/g,"
").replace(/^\s/," ").replace(/\s$/," ").replace(/\s\s/g,"  ")).includes("

")||s.includes("
"))&&(s=`

${s}

`),t=s),r=this.editor.data.htmlProcessor.toView(t)}var s;const a=new e(this,"inputTransformation");this.fire(a,{content:r,dataTransfer:i,targetRanges:n.targetRanges,method:n.method}),a.stop.called&&t.stop(),o.scrollToTheSelection()}),{priority:"low"}),this.listenTo(this,"inputTransformation",((t,e)=>{if(e.content.isEmpty)return;const o=this.editor.data.toModel(e.content,"$clipboardHolder");0!=o.childCount&&(t.stop(),n.change((()=>{this.fire("contentInsertion",{content:o,method:e.method,dataTransfer:e.dataTransfer,targetRanges:e.targetRanges})})))}),{priority:"low"}),this.listenTo(this,"contentInsertion",((t,e)=>{e.resultRange=n.insertContent(e.content)}),{priority:"low"})}_setupCopyCut(){const t=this.editor,e=t.model.document,n=t.editing.view.document,o=(o,i)=>{const r=i.dataTransfer;i.preventDefault();const s=t.data.toView(t.model.getSelectedContent(e.selection));n.fire("clipboardOutput",{dataTransfer:r,content:s,method:o.name})};this.listenTo(n,"copy",o,{priority:"low"}),this.listenTo(n,"cut",((e,n)=>{t.isReadOnly?n.preventDefault():o(e,n)}),{priority:"low"}),this.listenTo(n,"clipboardOutput",((n,o)=>{o.content.isEmpty||(o.dataTransfer.setData("text/html",this.editor.data.htmlProcessor.toData(o.content)),o.dataTransfer.setData("text/plain",rm(o.content))),"cut"==o.method&&t.model.deleteContent(e.selection)}),{priority:"low"})}}function*am(t,e){for(const n of e)n&&t.getAttributeProperties(n[0]).copyOnEnter&&(yield n)}class cm extends H{execute(){const t=this.editor.model,e=t.document;t.change((n=>{!function(t,e,n,o){const i=n.isCollapsed,r=n.getFirstRange(),s=r.start.parent,a=r.end.parent;if(o.isLimit(s)||o.isLimit(a))return void(i||s!=a||t.deleteContent(n));if(i){const t=am(e.model.schema,n.getAttributes());lm(e,r.start),e.setSelectionAttribute(t)}else{const o=!(r.start.isAtStart&&r.end.isAtEnd),i=s==a;t.deleteContent(n,{leaveUnmerged:o}),o&&(i?lm(e,n.focus):e.setSelection(a,0))}}(this.editor.model,n,e.selection,t.schema),this.fire("afterExecute",{writer:n})}))}}function lm(t,e){t.split(e),t.setSelection(e.parent.nextSibling,0)}const dm={insertParagraph:{isSoft:!1},insertLineBreak:{isSoft:!0}};class um extends ys{constructor(t){super(t);const e=this.document;e.on("beforeinput",((n,o)=>{if(!this.isEnabled)return;const i=o.domEvent,r=dm[o.inputType];if(!r)return;const s=new $i(e,"enter",o.targetRanges[0]);e.fire(s,new Es(t,i,{isSoft:r.isSoft})),s.stop.called&&n.stop()}))}observe(){}}class hm extends F{static get pluginName(){return"Enter"}init(){const t=this.editor,e=t.editing.view,n=e.document;e.addObserver(um),t.commands.add("enter",new cm(t)),this.listenTo(n,"enter",((o,i)=>{n.isComposing||i.preventDefault(),i.isSoft||(t.execute("enter"),e.scrollToTheSelection())}),{priority:"low"})}}class gm{constructor(t,e=20){this._batch=null,this.model=t,this._size=0,this.limit=e,this._isLocked=!1,this._changeCallback=(t,e)=>{e.isLocal&&e.isUndoable&&e!==this._batch&&this._reset(!0)},this._selectionChangeCallback=()=>{this._reset()},this.model.document.on("change",this._changeCallback),this.model.document.selection.on("change:range",this._selectionChangeCallback),this.model.document.selection.on("change:attribute",this._selectionChangeCallback)}get batch(){return this._batch||(this._batch=this.model.createBatch({isTyping:!0})),this._batch}get size(){return this._size}input(t){this._size+=t,this._size>=this.limit&&this._reset(!0)}get isLocked(){return this._isLocked}lock(){this._isLocked=!0}unlock(){this._isLocked=!1}destroy(){this.model.document.off("change",this._changeCallback),this.model.document.selection.off("change:range",this._selectionChangeCallback),this.model.document.selection.off("change:attribute",this._selectionChangeCallback)}_reset(t=!1){this.isLocked&&!t||(this._batch=null,this._size=0)}}class mm extends H{constructor(t,e){super(t),this.direction=e,this._buffer=new gm(t.model,t.config.get("typing.undoStep"))}get buffer(){return this._buffer}execute(t={}){const e=this.editor.model,n=e.document;e.enqueueChange(this._buffer.batch,(o=>{this._buffer.lock();const i=o.createSelection(t.selection||n.selection),r=t.sequence||1,s=i.isCollapsed;if(i.isCollapsed&&e.modifySelection(i,{direction:this.direction,unit:t.unit,treatEmojiAsSingleUnit:!0}),this._shouldEntireContentBeReplacedWithParagraph(r))return void this._replaceEntireContentWithParagraph(o);if(this._shouldReplaceFirstBlockWithParagraph(i,r))return void this.editor.execute("paragraph",{selection:i});if(i.isCollapsed)return;let a=0;i.getFirstRange().getMinimalFlatRanges().forEach((t=>{a+=Gi(t.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))})),e.deleteContent(i,{doNotResetEntireContent:s,direction:this.direction}),this._buffer.input(a),o.setSelection(i),this._buffer.unlock()}))}_shouldEntireContentBeReplacedWithParagraph(t){if(t>1)return!1;const e=this.editor.model,n=e.document.selection,o=e.schema.getLimitElement(n);if(!(n.isCollapsed&&n.containsEntireContent(o)))return!1;if(!e.schema.checkChild(o,"paragraph"))return!1;const i=o.getChild(0);return!i||!i.is("element","paragraph")}_replaceEntireContentWithParagraph(t){const e=this.editor.model,n=e.document.selection,o=e.schema.getLimitElement(n),i=t.createElement("paragraph");t.remove(t.createRangeIn(o)),t.insert(i,o),t.setSelection(i,0)}_shouldReplaceFirstBlockWithParagraph(t,e){const n=this.editor.model;if(e>1||"backward"!=this.direction)return!1;if(!t.isCollapsed)return!1;const o=t.getFirstPosition(),i=n.schema.getLimitElement(o),r=i.getChild(0);return o.parent==r&&(!!t.containsEntireContent(r)&&(!!n.schema.checkChild(i,"paragraph")&&"paragraph"!=r.name))}}const pm="word",fm="selection",km="backward",bm="forward",wm={deleteContent:{unit:fm,direction:km},deleteContentBackward:{unit:"codePoint",direction:km},deleteWordBackward:{unit:pm,direction:km},deleteHardLineBackward:{unit:fm,direction:km},deleteSoftLineBackward:{unit:fm,direction:km},deleteContentForward:{unit:"character",direction:bm},deleteWordForward:{unit:pm,direction:bm},deleteHardLineForward:{unit:fm,direction:bm},deleteSoftLineForward:{unit:fm,direction:bm}};class Am extends ys{constructor(t){super(t);const e=t.document;let n=0;e.on("keydown",(()=>{n++})),e.on("keyup",(()=>{n=0})),e.on("beforeinput",((o,i)=>{if(!this.isEnabled)return;const{targetRanges:r,domEvent:s,inputType:a}=i,c=wm[a];if(!c)return;const l={direction:c.direction,unit:c.unit,sequence:n};l.unit==fm&&(l.selectionToRemove=t.createSelection(r[0])),cr.isAndroid&&"deleteContentBackward"===a&&(l.sequence=1,1!=r.length||r[0].start.parent==r[0].end.parent&&r[0].start.offset+1==r[0].end.offset||(l.unit=fm,l.selectionToRemove=t.createSelection(r)));const d=new $i(e,"delete",r[0]);e.fire(d,new Es(t,s,l)),d.stop.called&&o.stop()})),cr.isBlink&&function(t){const e=t.view,n=e.document;let o=null,i=!1;function r(t){return t==hr.backspace||t==hr.delete}function s(t){return t==hr.backspace?km:bm}n.on("keydown",((t,{keyCode:e})=>{o=e,i=!1})),n.on("keyup",((a,{keyCode:c,domEvent:l})=>{const d=n.selection,u=t.isEnabled&&c==o&&r(c)&&!d.isCollapsed&&!i;if(o=null,u){const t=d.getFirstRange(),o=new $i(n,"delete",t),i={unit:fm,direction:s(c),selectionToRemove:d};n.fire(o,new Es(e,l,i))}})),n.on("beforeinput",((t,{inputType:e})=>{const n=wm[e];r(o)&&n&&n.direction==s(o)&&(i=!0)})),n.on("beforeinput",((t,{inputType:e,data:n})=>{o==hr.delete&&"insertText"==e&&""==n&&t.stop()}),{priority:"high"})}(this)}observe(){}}class _m extends F{static get pluginName(){return"Delete"}init(){const t=this.editor,e=t.editing.view,n=e.document,o=t.model.document;e.addObserver(Am),this._undoOnBackspace=!1;const i=new mm(t,"forward");t.commands.add("deleteForward",i),t.commands.add("forwardDelete",i),t.commands.add("delete",new mm(t,"backward")),this.listenTo(n,"delete",((o,i)=>{n.isComposing||i.preventDefault();const{direction:r,sequence:s,selectionToRemove:a,unit:c}=i,l="forward"===r?"deleteForward":"delete",d={sequence:s};if("selection"==c){const e=Array.from(a.getRanges()).map((e=>t.editing.mapper.toModelRange(e)));d.selection=t.model.createSelection(e)}else d.unit=c;t.execute(l,d),e.scrollToTheSelection()}),{priority:"low"}),this.editor.plugins.has("UndoEditing")&&(this.listenTo(n,"delete",((e,n)=>{this._undoOnBackspace&&"backward"==n.direction&&1==n.sequence&&"codePoint"==n.unit&&(this._undoOnBackspace=!1,t.execute("undo"),n.preventDefault(),e.stop())}),{context:"$capture"}),this.listenTo(o,"change",(()=>{this._undoOnBackspace=!1})))}requestUndoOnBackspace(){this.editor.plugins.has("UndoEditing")&&(this._undoOnBackspace=!0)}}class Cm extends w{constructor(){super(),this._stack=[]}add(t,e){const n=this._stack,o=n[0];this._insertDescriptor(t);const i=n[0];o===i||vm(o,i)||this.fire("change:top",{oldDescriptor:o,newDescriptor:i,writer:e})}remove(t,e){const n=this._stack,o=n[0];this._removeDescriptor(t);const i=n[0];o===i||vm(o,i)||this.fire("change:top",{oldDescriptor:o,newDescriptor:i,writer:e})}_insertDescriptor(t){const e=this._stack,n=e.findIndex((e=>e.id===t.id));if(vm(t,e[n]))return;n>-1&&e.splice(n,1);let o=0;for(;e[o]&&ym(e[o],t);)o++;e.splice(o,0,t)}_removeDescriptor(t){const e=this._stack,n=e.findIndex((e=>e.id===t));n>-1&&e.splice(n,1)}}function vm(t,e){return t&&e&&t.priority==e.priority&&xm(t.classes)==xm(e.classes)}function ym(t,e){return t.priority>e.priority||!(t.priorityxm(e.classes)}function xm(t){return Array.isArray(t)?t.sort().join(","):t}const Em='',Dm="ck-widget_selected";function Im(t){return!!t.is("element")&&!!t.getCustomProperty("widget")}function Tm(t,e,n={}){if(!t.is("containerElement"))throw new c("widget-to-widget-wrong-element-type",null,{element:t});return e.setAttribute("contenteditable","false",t),e.addClass("ck-widget",t),e.setCustomProperty("widget",!0,t),t.getFillerOffset=Lm,n.label&&function(t,e,n){n.setCustomProperty("widgetLabel",e,t)}(t,n.label,e),n.hasSelectionHandle&&function(t,e){const n=e.createUIElement("div",{class:"ck ck-widget__selection-handle"},(function(t){const e=this.toDomElement(t),n=new Th;return n.set("content",Em),n.render(),e.appendChild(n.element),e}));e.insert(e.createPositionAt(t,0),n),e.addClass(["ck-widget_with-selection-handle"],t)}(t,e),Nm(t,e),t}function Sm(t,e,n){if(e.classes&&n.addClass(bo(e.classes),t),e.attributes)for(const o in e.attributes)n.setAttribute(o,e.attributes[o],t)}function Mm(t,e,n){if(e.classes&&n.removeClass(bo(e.classes),t),e.attributes)for(const o in e.attributes)n.removeAttribute(o,t)}function Nm(t,e,n=Sm,o=Mm){const i=new Cm;i.on("change:top",((e,i)=>{i.oldDescriptor&&o(t,i.oldDescriptor,i.writer),i.newDescriptor&&n(t,i.newDescriptor,i.writer)}));e.setCustomProperty("addHighlight",((t,e,n)=>i.add(e,n)),t),e.setCustomProperty("removeHighlight",((t,e,n)=>i.remove(e,n)),t)}function Bm(t){const e=t.getCustomProperty("widgetLabel");return e?"function"==typeof e?e():e:""}function zm(t,e,n={}){return e.addClass(["ck-editor__editable","ck-editor__nested-editable"],t),e.setAttribute("role","textbox",t),n.label&&e.setAttribute("aria-label",n.label,t),e.setAttribute("contenteditable",t.isReadOnly?"false":"true",t),t.on("change:isReadOnly",((n,o,i)=>{e.setAttribute("contenteditable",i?"false":"true",t)})),t.on("change:isFocused",((n,o,i)=>{i?e.addClass("ck-editor__nested-editable_focused",t):e.removeClass("ck-editor__nested-editable_focused",t)})),Nm(t,e),t}function Pm(t,e){const n=t.getSelectedElement();if(n){const o=jm(t);if(o)return e.createRange(e.createPositionAt(n,o))}return fu(t,e)}function Lm(){return null}const Om="widget-type-around";function Rm(t,e,n){return!!t&&Im(t)&&!n.isInline(e)}function jm(t){return t.getAttribute(Om)}var Fm=n(4921),Vm={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Fm.Z,Vm);Fm.Z.locals;const Hm=["before","after"],Um=(new DOMParser).parseFromString('',"image/svg+xml").firstChild,Gm="ck-widget__type-around_disabled";class Wm extends F{constructor(t){super(t),this._currentFakeCaretModelElement=null}static get pluginName(){return"WidgetTypeAround"}static get requires(){return[hm,_m]}init(){const t=this.editor,e=t.editing.view;this.on("change:isEnabled",((n,o,i)=>{e.change((t=>{for(const n of e.document.roots)i?t.removeClass(Gm,n):t.addClass(Gm,n)})),i||t.model.change((t=>{t.removeSelectionAttribute(Om)}))})),this._enableTypeAroundUIInjection(),this._enableInsertingParagraphsOnButtonClick(),this._enableInsertingParagraphsOnEnterKeypress(),this._enableInsertingParagraphsOnTypingKeystroke(),this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(),this._enableDeleteIntegration(),this._enableInsertContentIntegration(),this._enableInsertObjectIntegration(),this._enableDeleteContentIntegration()}destroy(){super.destroy(),this._currentFakeCaretModelElement=null}_insertParagraph(t,e){const n=this.editor,o=n.editing.view,i=n.model.schema.getAttributesWithProperty(t,"copyOnReplace",!0);n.execute("insertParagraph",{position:n.model.createPositionAt(t,e),attributes:i}),o.focus(),o.scrollToTheSelection()}_listenToIfEnabled(t,e,n,o){this.listenTo(t,e,((...t)=>{this.isEnabled&&n(...t)}),o)}_insertParagraphAccordingToFakeCaretPosition(){const t=this.editor.model.document.selection,e=jm(t);if(!e)return!1;const n=t.getSelectedElement();return this._insertParagraph(n,e),!0}_enableTypeAroundUIInjection(){const t=this.editor,e=t.model.schema,n=t.locale.t,o={before:n("Insert paragraph before block"),after:n("Insert paragraph after block")};t.editing.downcastDispatcher.on("insert",((t,n,i)=>{const r=i.mapper.toViewElement(n.item);Rm(r,n.item,e)&&function(t,e,n){const o=t.createUIElement("div",{class:"ck ck-reset_all ck-widget__type-around"},(function(t){const n=this.toDomElement(t);return function(t,e){for(const n of Hm){const o=new Iu({tag:"div",attributes:{class:["ck","ck-widget__type-around__button",`ck-widget__type-around__button_${n}`],title:e[n]},children:[t.ownerDocument.importNode(Um,!0)]});t.appendChild(o.render())}}(n,e),function(t){const e=new Iu({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});t.appendChild(e.render())}(n),n}));t.insert(t.createPositionAt(n,"end"),o)}(i.writer,o,r)}),{priority:"low"})}_enableTypeAroundFakeCaretActivationUsingKeyboardArrows(){const t=this.editor,e=t.model,n=e.document.selection,o=e.schema,i=t.editing.view;function r(t){return`ck-widget_type-around_show-fake-caret_${t}`}this._listenToIfEnabled(i.document,"arrowKey",((t,e)=>{this._handleArrowKeyPress(t,e)}),{context:[Im,"$text"],priority:"high"}),this._listenToIfEnabled(n,"change:range",((e,n)=>{n.directChange&&t.model.change((t=>{t.removeSelectionAttribute(Om)}))})),this._listenToIfEnabled(e.document,"change:data",(()=>{const e=n.getSelectedElement();if(e){if(Rm(t.editing.mapper.toViewElement(e),e,o))return}t.model.change((t=>{t.removeSelectionAttribute(Om)}))})),this._listenToIfEnabled(t.editing.downcastDispatcher,"selection",((t,e,n)=>{const i=n.writer;if(this._currentFakeCaretModelElement){const t=n.mapper.toViewElement(this._currentFakeCaretModelElement);t&&(i.removeClass(Hm.map(r),t),this._currentFakeCaretModelElement=null)}const s=e.selection.getSelectedElement();if(!s)return;const a=n.mapper.toViewElement(s);if(!Rm(a,s,o))return;const c=jm(e.selection);c&&(i.addClass(r(c),a),this._currentFakeCaretModelElement=s)})),this._listenToIfEnabled(t.ui.focusTracker,"change:isFocused",((e,n,o)=>{o||t.model.change((t=>{t.removeSelectionAttribute(Om)}))}))}_handleArrowKeyPress(t,e){const n=this.editor,o=n.model,i=o.document.selection,r=o.schema,s=n.editing.view,a=function(t,e){const n=kr(t,e);return"down"===n||"right"===n}(e.keyCode,n.locale.contentLanguageDirection),c=s.document.selection.getSelectedElement();let l;Rm(c,n.editing.mapper.toModelElement(c),r)?l=this._handleArrowKeyPressOnSelectedWidget(a):i.isCollapsed?l=this._handleArrowKeyPressWhenSelectionNextToAWidget(a):e.shiftKey||(l=this._handleArrowKeyPressWhenNonCollapsedSelection(a)),l&&(e.preventDefault(),t.stop())}_handleArrowKeyPressOnSelectedWidget(t){const e=this.editor.model,n=jm(e.document.selection);return e.change((e=>{if(!n)return e.setSelectionAttribute(Om,t?"after":"before"),!0;if(!(n===(t?"after":"before")))return e.removeSelectionAttribute(Om),!0;return!1}))}_handleArrowKeyPressWhenSelectionNextToAWidget(t){const e=this.editor,n=e.model,o=n.schema,i=e.plugins.get("Widget"),r=i._getObjectElementNextToSelection(t);return!!Rm(e.editing.mapper.toViewElement(r),r,o)&&(n.change((e=>{i._setSelectionOverElement(r),e.setSelectionAttribute(Om,t?"before":"after")})),!0)}_handleArrowKeyPressWhenNonCollapsedSelection(t){const e=this.editor,n=e.model,o=n.schema,i=e.editing.mapper,r=n.document.selection,s=t?r.getLastPosition().nodeBefore:r.getFirstPosition().nodeAfter;return!!Rm(i.toViewElement(s),s,o)&&(n.change((e=>{e.setSelection(s,"on"),e.setSelectionAttribute(Om,t?"after":"before")})),!0)}_enableInsertingParagraphsOnButtonClick(){const t=this.editor,e=t.editing.view;this._listenToIfEnabled(e.document,"mousedown",((n,o)=>{const i=o.domTarget.closest(".ck-widget__type-around__button");if(!i)return;const r=function(t){return t.classList.contains("ck-widget__type-around__button_before")?"before":"after"}(i),s=function(t,e){const n=t.closest(".ck-widget");return e.mapDomToView(n)}(i,e.domConverter),a=t.editing.mapper.toModelElement(s);this._insertParagraph(a,r),o.preventDefault(),n.stop()}))}_enableInsertingParagraphsOnEnterKeypress(){const t=this.editor,e=t.model.document.selection,n=t.editing.view;this._listenToIfEnabled(n.document,"enter",((n,o)=>{if("atTarget"!=n.eventPhase)return;const i=e.getSelectedElement(),r=t.editing.mapper.toViewElement(i),s=t.model.schema;let a;this._insertParagraphAccordingToFakeCaretPosition()?a=!0:Rm(r,i,s)&&(this._insertParagraph(i,o.isSoft?"before":"after"),a=!0),a&&(o.preventDefault(),n.stop())}),{context:Im})}_enableInsertingParagraphsOnTypingKeystroke(){const t=this.editor.editing.view.document;this._listenToIfEnabled(t,"insertText",((e,n)=>{this._insertParagraphAccordingToFakeCaretPosition()&&(n.selection=t.selection)}),{priority:"high"}),cr.isAndroid?this._listenToIfEnabled(t,"keydown",((t,e)=>{229==e.keyCode&&this._insertParagraphAccordingToFakeCaretPosition()})):this._listenToIfEnabled(t,"compositionstart",(()=>{this._insertParagraphAccordingToFakeCaretPosition()}),{priority:"high"})}_enableDeleteIntegration(){const t=this.editor,e=t.editing.view,n=t.model,o=n.schema;this._listenToIfEnabled(e.document,"delete",((e,i)=>{if("atTarget"!=e.eventPhase)return;const r=jm(n.document.selection);if(!r)return;const s=i.direction,a=n.document.selection.getSelectedElement(),c="forward"==s;if("before"===r===c)t.execute("delete",{selection:n.createSelection(a,"on")});else{const e=o.getNearestSelectionRange(n.createPositionAt(a,r),s);if(e)if(e.isCollapsed){const i=n.createSelection(e.start);if(n.modifySelection(i,{direction:s}),i.focus.isEqual(e.start)){const t=function(t,e){let n=e;for(const o of e.getAncestors({parentFirst:!0})){if(o.childCount>1||t.isLimit(o))break;n=o}return n}(o,e.start.parent);n.deleteContent(n.createSelection(t,"on"),{doNotAutoparagraph:!0})}else n.change((n=>{n.setSelection(e),t.execute(c?"deleteForward":"delete")}))}else n.change((n=>{n.setSelection(e),t.execute(c?"deleteForward":"delete")}))}i.preventDefault(),e.stop()}),{context:Im})}_enableInsertContentIntegration(){const t=this.editor,e=this.editor.model,n=e.document.selection;this._listenToIfEnabled(t.model,"insertContent",((t,[o,i])=>{if(i&&!i.is("documentSelection"))return;const r=jm(n);return r?(t.stop(),e.change((t=>{const i=n.getSelectedElement(),s=e.createPositionAt(i,r),a=t.createSelection(s),c=e.insertContent(o,a);return t.setSelection(a),c}))):void 0}),{priority:"high"})}_enableInsertObjectIntegration(){const t=this.editor,e=this.editor.model.document.selection;this._listenToIfEnabled(t.model,"insertObject",((t,n)=>{const[,o,,i={}]=n;if(o&&!o.is("documentSelection"))return;const r=jm(e);r&&(i.findOptimalPosition=r,n[3]=i)}),{priority:"high"})}_enableDeleteContentIntegration(){const t=this.editor,e=this.editor.model.document.selection;this._listenToIfEnabled(t.model,"deleteContent",((t,[n])=>{if(n&&!n.is("documentSelection"))return;jm(e)&&t.stop()}),{priority:"high"})}}function qm(t){const e=t.model;return(n,o)=>{const i=o.keyCode==hr.arrowup,r=o.keyCode==hr.arrowdown,s=o.shiftKey,a=e.document.selection;if(!i&&!r)return;const c=r;if(s&&function(t,e){return!t.isCollapsed&&t.isBackward==e}(a,c))return;const l=function(t,e,n){const o=t.model;if(n){const t=e.isCollapsed?e.focus:e.getLastPosition(),n=$m(o,t,"forward");if(!n)return null;const i=o.createRange(t,n),r=Ym(o.schema,i,"backward");return r?o.createRange(t,r):null}{const t=e.isCollapsed?e.focus:e.getFirstPosition(),n=$m(o,t,"backward");if(!n)return null;const i=o.createRange(n,t),r=Ym(o.schema,i,"forward");return r?o.createRange(r,t):null}}(t,a,c);if(l){if(l.isCollapsed){if(a.isCollapsed)return;if(s)return}(l.isCollapsed||function(t,e,n){const o=t.model,i=t.view.domConverter;if(n){const t=o.createSelection(e.start);o.modifySelection(t),t.focus.isAtEnd||e.start.isEqual(t.focus)||(e=o.createRange(t.focus,e.end))}const r=t.mapper.toViewRange(e),s=i.viewRangeToDom(r),a=Sa.getDomRangeRects(s);let c;for(const t of a)if(void 0!==c){if(Math.round(t.top)>=c)return!1;c=Math.max(c,Math.round(t.bottom))}else c=Math.round(t.bottom);return!0}(t,l,c))&&(e.change((t=>{const n=c?l.end:l.start;if(s){const o=e.createSelection(a.anchor);o.setFocus(n),t.setSelection(o)}else t.setSelection(n)})),n.stop(),o.preventDefault(),o.stopPropagation())}}}function $m(t,e,n){const o=t.schema,i=t.createRangeIn(e.root),r="forward"==n?"elementStart":"elementEnd";for(const{previousPosition:t,item:s,type:a}of i.getWalker({startPosition:e,direction:n})){if(o.isLimit(s)&&!o.isInline(s))return t;if(a==r&&o.isBlock(s))return null}return null}function Ym(t,e,n){const o="backward"==n?e.end:e.start;if(t.checkChild(o,"$text"))return o;for(const{nextPosition:o}of e.getWalker({direction:n}))if(t.checkChild(o,"$text"))return o;return null}var Km=n(3488),Qm={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Km.Z,Qm);Km.Z.locals;class Zm extends F{static get pluginName(){return"Widget"}static get requires(){return[Wm,_m]}init(){const t=this.editor,e=t.editing.view,n=e.document;this._previouslySelected=new Set,this.editor.editing.downcastDispatcher.on("selection",((e,n,o)=>{const i=o.writer,r=n.selection;if(r.isCollapsed)return;const s=r.getSelectedElement();if(!s)return;const a=t.editing.mapper.toViewElement(s);Im(a)&&o.consumable.consume(r,"selection")&&i.setSelection(i.createRangeOn(a),{fake:!0,label:Bm(a)})})),this.editor.editing.downcastDispatcher.on("selection",((t,e,n)=>{this._clearPreviouslySelectedWidgets(n.writer);const o=n.writer,i=o.document.selection;let r=null;for(const t of i.getRanges())for(const e of t){const t=e.item;Im(t)&&!Jm(t,r)&&(o.addClass(Dm,t),this._previouslySelected.add(t),r=t)}}),{priority:"low"}),e.addObserver(Wd),this.listenTo(n,"mousedown",((...t)=>this._onMousedown(...t))),this.listenTo(n,"arrowKey",((...t)=>{this._handleSelectionChangeOnArrowKeyPress(...t)}),{context:[Im,"$text"]}),this.listenTo(n,"arrowKey",((...t)=>{this._preventDefaultOnArrowKeyPress(...t)}),{context:"$root"}),this.listenTo(n,"arrowKey",qm(this.editor.editing),{context:"$text"}),this.listenTo(n,"delete",((t,e)=>{this._handleDelete("forward"==e.direction)&&(e.preventDefault(),t.stop())}),{context:"$root"})}_onMousedown(t,e){const n=this.editor,o=n.editing.view,i=o.document;let r=e.target;if(function(t){let e=t;for(;e;){if(e.is("editableElement")&&!e.is("rootElement"))return!0;if(Im(e))return!1;e=e.parent}return!1}(r)){if((cr.isSafari||cr.isGecko)&&e.domEvent.detail>=3){const t=n.editing.mapper,o=r.is("attributeElement")?r.findAncestor((t=>!t.is("attributeElement"))):r,i=t.toModelElement(o);e.preventDefault(),this.editor.model.change((t=>{t.setSelection(i,"in")}))}return}if(!Im(r)&&(r=r.findAncestor(Im),!r))return;cr.isAndroid&&e.preventDefault(),i.isFocused||o.focus();const s=n.editing.mapper.toModelElement(r);this._setSelectionOverElement(s)}_handleSelectionChangeOnArrowKeyPress(t,e){const n=e.keyCode,o=this.editor.model,i=o.schema,r=o.document.selection,s=r.getSelectedElement(),a=kr(n,this.editor.locale.contentLanguageDirection),c="down"==a||"right"==a,l="up"==a||"down"==a;if(s&&i.isObject(s)){const n=c?r.getLastPosition():r.getFirstPosition(),s=i.getNearestSelectionRange(n,c?"forward":"backward");return void(s&&(o.change((t=>{t.setSelection(s)})),e.preventDefault(),t.stop()))}if(!r.isCollapsed&&!e.shiftKey){const n=r.getFirstPosition(),s=r.getLastPosition(),a=n.nodeAfter,l=s.nodeBefore;return void((a&&i.isObject(a)||l&&i.isObject(l))&&(o.change((t=>{t.setSelection(c?s:n)})),e.preventDefault(),t.stop()))}if(!r.isCollapsed)return;const d=this._getObjectElementNextToSelection(c);if(d&&i.isObject(d)){if(i.isInline(d)&&l)return;this._setSelectionOverElement(d),e.preventDefault(),t.stop()}}_preventDefaultOnArrowKeyPress(t,e){const n=this.editor.model,o=n.schema,i=n.document.selection.getSelectedElement();i&&o.isObject(i)&&(e.preventDefault(),t.stop())}_handleDelete(t){if(this.editor.isReadOnly)return;const e=this.editor.model.document.selection;if(!e.isCollapsed)return;const n=this._getObjectElementNextToSelection(t);return n?(this.editor.model.change((t=>{let o=e.anchor.parent;for(;o.isEmpty;){const e=o;o=e.parent,t.remove(e)}this._setSelectionOverElement(n)})),!0):void 0}_setSelectionOverElement(t){this.editor.model.change((e=>{e.setSelection(e.createRangeOn(t))}))}_getObjectElementNextToSelection(t){const e=this.editor.model,n=e.schema,o=e.document.selection,i=e.createSelection(o);if(e.modifySelection(i,{direction:t?"forward":"backward"}),i.isEqual(o))return null;const r=t?i.focus.nodeBefore:i.focus.nodeAfter;return r&&n.isObject(r)?r:null}_clearPreviouslySelectedWidgets(t){for(const e of this._previouslySelected)t.removeClass(Dm,e);this._previouslySelected.clear()}}function Jm(t,e){return!!e&&Array.from(t.getAncestors()).includes(e)}const Xm=function(t,e,n){var o=!0,i=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return D(n)&&(o="leading"in n?!!n.leading:o,i="trailing"in n?!!n.trailing:i),Vs(t,e,{leading:o,maxWait:e,trailing:i})};var tp=n(903),ep={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(tp.Z,ep);tp.Z.locals;class np extends F{static get pluginName(){return"DragDrop"}static get requires(){return[sm,Zm]}init(){const t=this.editor,e=t.editing.view;this._draggedRange=null,this._draggingUid="",this._draggableElement=null,this._updateDropMarkerThrottled=Xm((t=>this._updateDropMarker(t)),40),this._removeDropMarkerDelayed=rp((()=>this._removeDropMarker()),40),this._clearDraggableAttributesDelayed=rp((()=>this._clearDraggableAttributes()),40),e.addObserver(om),e.addObserver(Wd),this._setupDragging(),this._setupContentInsertionIntegration(),this._setupClipboardInputIntegration(),this._setupDropMarker(),this._setupDraggableAttributeHandling(),this.listenTo(t,"change:isReadOnly",((t,e,n)=>{n?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")})),this.on("change:isEnabled",((t,e,n)=>{n||this._finalizeDragging(!1)})),cr.isAndroid&&this.forceDisabled("noAndroidSupport")}destroy(){return this._draggedRange&&(this._draggedRange.detach(),this._draggedRange=null),this._updateDropMarkerThrottled.cancel(),this._removeDropMarkerDelayed.cancel(),this._clearDraggableAttributesDelayed.cancel(),super.destroy()}_setupDragging(){const t=this.editor,e=t.model,n=e.document,o=t.editing.view,i=o.document;this.listenTo(i,"dragstart",((o,s)=>{const a=n.selection;if(s.target&&s.target.is("editableElement"))return void s.preventDefault();const c=s.target?sp(s.target):null;if(c){const n=t.editing.mapper.toModelElement(c);this._draggedRange=fc.fromRange(e.createRangeOn(n)),t.plugins.has("WidgetToolbarRepository")&&t.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop")}else if(!i.selection.isCollapsed){const t=i.selection.getSelectedElement();t&&Im(t)||(this._draggedRange=fc.fromRange(a.getFirstRange()))}if(!this._draggedRange)return void s.preventDefault();this._draggingUid=r(),s.dataTransfer.effectAllowed=this.isEnabled?"copyMove":"copy",s.dataTransfer.setData("application/ckeditor5-dragging-uid",this._draggingUid);const l=e.createSelection(this._draggedRange.toRange()),d=t.data.toView(e.getSelectedContent(l));i.fire("clipboardOutput",{dataTransfer:s.dataTransfer,content:d,method:"dragstart"}),this.isEnabled||(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="")}),{priority:"low"}),this.listenTo(i,"dragend",((t,e)=>{this._finalizeDragging(!e.dataTransfer.isCanceled&&"move"==e.dataTransfer.dropEffect)}),{priority:"low"}),this.listenTo(i,"dragenter",(()=>{this.isEnabled&&o.focus()})),this.listenTo(i,"dragleave",(()=>{this._removeDropMarkerDelayed()})),this.listenTo(i,"dragging",((e,n)=>{if(!this.isEnabled)return void(n.dataTransfer.dropEffect="none");this._removeDropMarkerDelayed.cancel();const o=op(t,n.targetRanges,n.target);this._draggedRange||(n.dataTransfer.dropEffect="copy"),cr.isGecko||("copy"==n.dataTransfer.effectAllowed?n.dataTransfer.dropEffect="copy":["all","copyMove"].includes(n.dataTransfer.effectAllowed)&&(n.dataTransfer.dropEffect="move")),o&&this._updateDropMarkerThrottled(o)}),{priority:"low"})}_setupClipboardInputIntegration(){const t=this.editor,e=t.editing.view.document;this.listenTo(e,"clipboardInput",((e,n)=>{if("drop"!=n.method)return;const o=op(t,n.targetRanges,n.target);if(this._removeDropMarker(),!o)return this._finalizeDragging(!1),void e.stop();this._draggedRange&&this._draggingUid!=n.dataTransfer.getData("application/ckeditor5-dragging-uid")&&(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="");if("move"==ip(n.dataTransfer)&&this._draggedRange&&this._draggedRange.containsRange(o,!0))return this._finalizeDragging(!1),void e.stop();n.targetRanges=[t.editing.mapper.toViewRange(o)]}),{priority:"high"})}_setupContentInsertionIntegration(){const t=this.editor.plugins.get(sm);t.on("contentInsertion",((t,e)=>{if(!this.isEnabled||"drop"!==e.method)return;const n=e.targetRanges.map((t=>this.editor.editing.mapper.toModelRange(t)));this.editor.model.change((t=>t.setSelection(n)))}),{priority:"high"}),t.on("contentInsertion",((t,e)=>{if(!this.isEnabled||"drop"!==e.method)return;const n="move"==ip(e.dataTransfer),o=!e.resultRange||!e.resultRange.isCollapsed;this._finalizeDragging(o&&n)}),{priority:"lowest"})}_setupDraggableAttributeHandling(){const t=this.editor,e=t.editing.view,n=e.document;this.listenTo(n,"mousedown",((o,i)=>{if(cr.isAndroid||!i)return;this._clearDraggableAttributesDelayed.cancel();let r=sp(i.target);if(cr.isBlink&&!t.isReadOnly&&!r&&!n.selection.isCollapsed){const t=n.selection.getSelectedElement();t&&Im(t)||(r=n.selection.editableElement)}r&&(e.change((t=>{t.setAttribute("draggable","true",r)})),this._draggableElement=t.editing.mapper.toModelElement(r))})),this.listenTo(n,"mouseup",(()=>{cr.isAndroid||this._clearDraggableAttributesDelayed()}))}_clearDraggableAttributes(){const t=this.editor.editing;t.view.change((e=>{this._draggableElement&&"$graveyard"!=this._draggableElement.root.rootName&&e.removeAttribute("draggable",t.mapper.toViewElement(this._draggableElement)),this._draggableElement=null}))}_setupDropMarker(){const t=this.editor;t.conversion.for("editingDowncast").markerToHighlight({model:"drop-target",view:{classes:["ck-clipboard-drop-target-range"]}}),t.conversion.for("editingDowncast").markerToElement({model:"drop-target",view:(e,{writer:n})=>{if(t.model.schema.checkChild(e.markerRange.start,"$text"))return n.createUIElement("span",{class:"ck ck-clipboard-drop-target-position"},(function(t){const e=this.toDomElement(t);return e.append("⁠",t.createElement("span"),"⁠"),e}))}})}_updateDropMarker(t){const e=this.editor,n=e.model.markers;e.model.change((e=>{n.has("drop-target")?n.get("drop-target").getRange().isEqual(t)||e.updateMarker("drop-target",{range:t}):e.addMarker("drop-target",{range:t,usingOperation:!1,affectsData:!1})}))}_removeDropMarker(){const t=this.editor.model;this._removeDropMarkerDelayed.cancel(),this._updateDropMarkerThrottled.cancel(),t.markers.has("drop-target")&&t.change((t=>{t.removeMarker("drop-target")}))}_finalizeDragging(t){const e=this.editor,n=e.model;this._removeDropMarker(),this._clearDraggableAttributes(),e.plugins.has("WidgetToolbarRepository")&&e.plugins.get("WidgetToolbarRepository").clearForceDisabled("dragDrop"),this._draggingUid="",this._draggedRange&&(t&&this.isEnabled&&n.deleteContent(n.createSelection(this._draggedRange),{doNotAutoparagraph:!0}),this._draggedRange.detach(),this._draggedRange=null)}}function op(t,e,n){const o=t.model,i=t.editing.mapper;let r=null;const s=e?e[0].start:null;if(n.is("uiElement")&&(n=n.parent),r=function(t,e){const n=t.model,o=t.editing.mapper;if(Im(e))return n.createRangeOn(o.toModelElement(e));if(!e.is("editableElement")){const t=e.findAncestor((t=>Im(t)||t.is("editableElement")));if(Im(t))return n.createRangeOn(o.toModelElement(t))}return null}(t,n),r)return r;const a=function(t,e){const n=t.editing.mapper,o=t.editing.view,i=n.toModelElement(e);if(i)return i;const r=o.createPositionBefore(e),s=n.findMappedViewAncestor(r);return n.toModelElement(s)}(t,n),c=s?i.toModelPosition(s):null;return c?(r=function(t,e,n){const o=t.model;if(!o.schema.checkChild(n,"$block"))return null;const i=o.createPositionAt(n,0),r=e.path.slice(0,i.path.length),s=o.createPositionFromPath(e.root,r).nodeAfter;if(s&&o.schema.isObject(s))return o.createRangeOn(s);return null}(t,c,a),r||(r=o.schema.getNearestSelectionRange(c,cr.isGecko?"forward":"backward"),r||function(t,e){const n=t.model;let o=e;for(;o;){if(n.schema.isObject(o))return n.createRangeOn(o);o=o.parent}return null}(t,c.parent))):function(t,e){const n=t.model,o=n.schema,i=n.createPositionAt(e,0);return o.getNearestSelectionRange(i,"forward")}(t,a)}function ip(t){return cr.isGecko?t.dropEffect:["all","copyMove"].includes(t.effectAllowed)?"move":"copy"}function rp(t,e){let n;function o(...i){o.cancel(),n=setTimeout((()=>t(...i)),e)}return o.cancel=()=>{clearTimeout(n)},o}function sp(t){if(t.is("editableElement"))return null;if(t.hasClass("ck-widget__selection-handle"))return t.findAncestor(Im);if(Im(t))return t;const e=t.findAncestor((t=>Im(t)||t.is("editableElement")));return Im(e)?e:null}class ap extends F{static get pluginName(){return"PastePlainText"}static get requires(){return[sm]}init(){const t=this.editor,e=t.model,n=t.editing.view,o=n.document,i=e.document.selection;let r=!1;n.addObserver(om),this.listenTo(o,"keydown",((t,e)=>{r=e.shiftKey})),t.plugins.get(sm).on("contentInsertion",((t,n)=>{(r||function(t,e){if(t.childCount>1)return!1;const n=t.getChild(0);if(e.isObject(n))return!1;return 0==Array.from(n.getAttributeKeys()).length}(n.content,e.schema))&&e.change((t=>{const o=Array.from(i.getAttributes()).filter((([t])=>e.schema.getAttributeProperties(t).isFormatting));i.isCollapsed||e.deleteContent(i,{doNotAutoparagraph:!0}),o.push(...i.getAttributes());const r=t.createRangeIn(n.content);for(const e of r.getItems())e.is("$textProxy")&&t.setAttributes(o,e)}))}))}}class cp extends F{static get pluginName(){return"Clipboard"}static get requires(){return[sm,np,ap]}}class lp extends H{execute(){const t=this.editor.model,e=t.document;t.change((n=>{!function(t,e,n){const o=n.isCollapsed,i=n.getFirstRange(),r=i.start.parent,s=i.end.parent,a=r==s;if(o){const o=am(t.schema,n.getAttributes());dp(t,e,i.end),e.removeSelectionAttribute(n.getAttributeKeys()),e.setSelectionAttribute(o)}else{const o=!(i.start.isAtStart&&i.end.isAtEnd);t.deleteContent(n,{leaveUnmerged:o}),a?dp(t,e,n.focus):o&&e.setSelection(s,0)}}(t,n,e.selection),this.fire("afterExecute",{writer:n})}))}refresh(){const t=this.editor.model,e=t.document;this.isEnabled=function(t,e){if(e.rangeCount>1)return!1;const n=e.anchor;if(!n||!t.checkChild(n,"softBreak"))return!1;const o=e.getFirstRange(),i=o.start.parent,r=o.end.parent;if((up(i,t)||up(r,t))&&i!==r)return!1;return!0}(t.schema,e.selection)}}function dp(t,e,n){const o=e.createElement("softBreak");t.insertContent(o,n),e.setSelection(o,"after")}function up(t,e){return!t.is("rootElement")&&(e.isLimit(t)||up(t.parent,e))}class hp extends F{static get pluginName(){return"ShiftEnter"}init(){const t=this.editor,e=t.model.schema,n=t.conversion,o=t.editing.view,i=o.document;e.register("softBreak",{allowWhere:"$text",isInline:!0}),n.for("upcast").elementToElement({model:"softBreak",view:"br"}),n.for("downcast").elementToElement({model:"softBreak",view:(t,{writer:e})=>e.createEmptyElement("br")}),o.addObserver(um),t.commands.add("shiftEnter",new lp(t)),this.listenTo(i,"enter",((e,n)=>{i.isComposing||n.preventDefault(),n.isSoft&&(t.execute("shiftEnter"),o.scrollToTheSelection())}),{priority:"low"})}}class gp extends H{constructor(t){super(t),this.affectsData=!1}execute(){const t=this.editor.model,e=t.document.selection;let n=t.schema.getLimitElement(e);if(e.containsEntireContent(n)||!mp(t.schema,n))do{if(n=n.parent,!n)return}while(!mp(t.schema,n));t.change((t=>{t.setSelection(n,"in")}))}}function mp(t,e){return t.isLimit(e)&&(t.checkChild(e,"$text")||t.checkChild(e,"paragraph"))}const pp=pr("Ctrl+A");class fp extends F{static get pluginName(){return"SelectAllEditing"}init(){const t=this.editor,e=t.editing.view.document;t.commands.add("selectAll",new gp(t)),this.listenTo(e,"keydown",((e,n)=>{mr(n)===pp&&(t.execute("selectAll"),n.preventDefault())}))}}class kp extends F{static get pluginName(){return"SelectAllUI"}init(){const t=this.editor;t.ui.componentFactory.add("selectAll",(e=>{const n=t.commands.get("selectAll"),o=new Nh(e),i=e.t;return o.set({label:i("Select all"),icon:'',keystroke:"Ctrl+A",tooltip:!0}),o.bind("isEnabled").to(n,"isEnabled"),this.listenTo(o,"execute",(()=>{t.execute("selectAll"),t.editing.view.focus()})),o}))}}class bp extends F{static get requires(){return[fp,kp]}static get pluginName(){return"SelectAll"}}class wp extends H{constructor(t,e){super(t),this._buffer=new gm(t.model,e)}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(t={}){const e=this.editor.model,n=e.document,o=t.text||"",i=o.length;let r=n.selection;t.selection?r=t.selection:t.range&&(r=e.createSelection(t.range));const s=t.resultRange;e.enqueueChange(this._buffer.batch,(t=>{this._buffer.lock(),e.deleteContent(r),o&&e.insertContent(t.createText(o,n.selection.getAttributes()),r),s?t.setSelection(s):r.is("documentSelection")||t.setSelection(r),this._buffer.unlock(),this._buffer.input(i)}))}}const Ap=["insertText","insertReplacementText"];class _p extends ys{constructor(t){super(t),cr.isAndroid&&Ap.push("insertCompositionText");const n=t.document;n.on("beforeinput",((o,i)=>{if(!this.isEnabled)return;const{data:r,targetRanges:s,inputType:a,domEvent:c}=i;if(!Ap.includes(a))return;const l=new e(n,"insertText");n.fire(l,new Es(t,c,{text:r,selection:t.createSelection(s)})),l.stop.called&&o.stop()})),n.on("compositionend",((e,{data:o,domEvent:i})=>{this.isEnabled&&!cr.isAndroid&&o&&n.fire("insertText",new Es(t,i,{text:o,selection:n.selection}))}),{priority:"lowest"})}observe(){}}class Cp extends F{static get pluginName(){return"Input"}init(){const t=this.editor,e=t.model,n=t.editing.view,o=e.document.selection;n.addObserver(_p);const i=new wp(t,t.config.get("typing.undoStep")||20);t.commands.add("insertText",i),t.commands.add("input",i),this.listenTo(n.document,"insertText",((o,i)=>{n.document.isComposing||i.preventDefault();const{text:r,selection:s,resultRange:a}=i,c=Array.from(s.getRanges()).map((e=>t.editing.mapper.toModelRange(e)));let l=r;if(cr.isAndroid){const t=Array.from(c[0].getItems()).reduce(((t,e)=>t+(e.is("$textProxy")?e.data:"")),"");t&&(t.length<=l.length?l.startsWith(t)&&(l=l.substring(t.length),c[0].start=c[0].start.getShiftedBy(t.length)):t.startsWith(l)&&(c[0].start=c[0].start.getShiftedBy(l.length),l=""))}const d={text:l,selection:e.createSelection(c)};a&&(d.resultRange=t.editing.mapper.toModelRange(a)),t.execute("insertText",d)})),cr.isAndroid?this.listenTo(n.document,"keydown",((t,r)=>{!o.isCollapsed&&229==r.keyCode&&n.document.isComposing&&vp(e,i)})):this.listenTo(n.document,"compositionstart",(()=>{o.isCollapsed||vp(e,i)}))}}function vp(t,e){if(!e.isEnabled)return;const n=e.buffer;n.lock(),t.enqueueChange(n.batch,(()=>{t.deleteContent(t.document.selection)})),n.unlock()}class yp extends F{static get requires(){return[Cp,_m]}static get pluginName(){return"Typing"}}function xp(t,e){let n=t.start;return{text:Array.from(t.getItems()).reduce(((t,o)=>o.is("$text")||o.is("$textProxy")?t+o.data:(n=e.createPositionAfter(o),"")),""),range:e.createRange(n,t.end)}}class Ep extends z{constructor(t,e){super(),this.model=t,this.testCallback=e,this._hasMatch=!1,this.set("isEnabled",!0),this.on("change:isEnabled",(()=>{this.isEnabled?this._startListening():(this.stopListening(t.document.selection),this.stopListening(t.document))})),this._startListening()}get hasMatch(){return this._hasMatch}_startListening(){const t=this.model.document;this.listenTo(t.selection,"change:range",((e,{directChange:n})=>{n&&(t.selection.isCollapsed?this._evaluateTextBeforeSelection("selection"):this.hasMatch&&(this.fire("unmatched"),this._hasMatch=!1))})),this.listenTo(t,"change:data",((t,e)=>{!e.isUndo&&e.isLocal&&this._evaluateTextBeforeSelection("data",{batch:e})}))}_evaluateTextBeforeSelection(t,e={}){const n=this.model,o=n.document.selection,i=n.createRange(n.createPositionAt(o.focus.parent,0),o.focus),{text:r,range:s}=xp(i,n),a=this.testCallback(r);if(!a&&this.hasMatch&&this.fire("unmatched"),this._hasMatch=!!a,a){const n=Object.assign(e,{text:r,range:s});"object"==typeof a&&Object.assign(n,a),this.fire(`matched:${t}`,n)}}}class Dp extends F{constructor(t){super(t),this.attributes=new Set,this._overrideUid=null}static get pluginName(){return"TwoStepCaretMovement"}init(){const t=this.editor,e=t.model,n=t.editing.view,o=t.locale,i=e.document.selection;this.listenTo(n.document,"arrowKey",((t,e)=>{if(!i.isCollapsed)return;if(e.shiftKey||e.altKey||e.ctrlKey)return;const n=e.keyCode==hr.arrowright,r=e.keyCode==hr.arrowleft;if(!n&&!r)return;const s=o.contentLanguageDirection;let a=!1;a="ltr"===s&&n||"rtl"===s&&r?this._handleForwardMovement(e):this._handleBackwardMovement(e),!0===a&&t.stop()}),{context:"$text",priority:"highest"}),this._isNextGravityRestorationSkipped=!1,this.listenTo(i,"change:range",((t,e)=>{this._isNextGravityRestorationSkipped?this._isNextGravityRestorationSkipped=!1:this._isGravityOverridden&&(!e.directChange&&Mp(i.getFirstPosition(),this.attributes)||this._restoreGravity())}))}registerAttribute(t){this.attributes.add(t)}_handleForwardMovement(t){const e=this.attributes,n=this.editor.model.document.selection,o=n.getFirstPosition();return!this._isGravityOverridden&&((!o.isAtStart||!Ip(n,e))&&(!!Mp(o,e)&&(Sp(t),this._overrideGravity(),!0)))}_handleBackwardMovement(t){const e=this.attributes,n=this.editor.model,o=n.document.selection,i=o.getFirstPosition();return this._isGravityOverridden?(Sp(t),this._restoreGravity(),Tp(n,e,i),!0):i.isAtStart?!!Ip(o,e)&&(Sp(t),Tp(n,e,i),!0):!!function(t,e){return Mp(t.getShiftedBy(-1),e)}(i,e)&&(i.isAtEnd&&!Ip(o,e)&&Mp(i,e)?(Sp(t),Tp(n,e,i),!0):(this._isNextGravityRestorationSkipped=!0,this._overrideGravity(),!1))}get _isGravityOverridden(){return!!this._overrideUid}_overrideGravity(){this._overrideUid=this.editor.model.change((t=>t.overrideSelectionGravity()))}_restoreGravity(){this.editor.model.change((t=>{t.restoreSelectionGravity(this._overrideUid),this._overrideUid=null}))}}function Ip(t,e){for(const n of e)if(t.hasAttribute(n))return!0;return!1}function Tp(t,e,n){const o=n.nodeBefore;t.change((t=>{o?t.setSelectionAttribute(o.getAttributes()):t.removeSelectionAttribute(e)}))}function Sp(t){t.preventDefault()}function Mp(t,e){const{nodeBefore:n,nodeAfter:o}=t;for(const t of e){const e=n?n.getAttribute(t):void 0;if((o?o.getAttribute(t):void 0)!==e)return!0}return!1}var Np=/[\\^$.*+?()[\]{}|]/g,Bp=RegExp(Np.source);const zp=function(t){return(t=Zo(t))&&Bp.test(t)?t.replace(Np,"\\$&"):t},Pp={copyright:{from:"(c)",to:"©"},registeredTrademark:{from:"(r)",to:"®"},trademark:{from:"(tm)",to:"™"},oneHalf:{from:/(^|[^/a-z0-9])(1\/2)([^/a-z0-9])$/i,to:[null,"½",null]},oneThird:{from:/(^|[^/a-z0-9])(1\/3)([^/a-z0-9])$/i,to:[null,"⅓",null]},twoThirds:{from:/(^|[^/a-z0-9])(2\/3)([^/a-z0-9])$/i,to:[null,"⅔",null]},oneForth:{from:/(^|[^/a-z0-9])(1\/4)([^/a-z0-9])$/i,to:[null,"¼",null]},threeQuarters:{from:/(^|[^/a-z0-9])(3\/4)([^/a-z0-9])$/i,to:[null,"¾",null]},lessThanOrEqual:{from:"<=",to:"≤"},greaterThanOrEqual:{from:">=",to:"≥"},notEqual:{from:"!=",to:"≠"},arrowLeft:{from:"<-",to:"←"},arrowRight:{from:"->",to:"→"},horizontalEllipsis:{from:"...",to:"…"},enDash:{from:/(^| )(--)( )$/,to:[null,"–",null]},emDash:{from:/(^| )(---)( )$/,to:[null,"—",null]},quotesPrimary:{from:Vp('"'),to:[null,"“",null,"”"]},quotesSecondary:{from:Vp("'"),to:[null,"‘",null,"’"]},quotesPrimaryEnGb:{from:Vp("'"),to:[null,"‘",null,"’"]},quotesSecondaryEnGb:{from:Vp('"'),to:[null,"“",null,"”"]},quotesPrimaryPl:{from:Vp('"'),to:[null,"„",null,"”"]},quotesSecondaryPl:{from:Vp("'"),to:[null,"‚",null,"’"]}},Lp={symbols:["copyright","registeredTrademark","trademark"],mathematical:["oneHalf","oneThird","twoThirds","oneForth","threeQuarters","lessThanOrEqual","greaterThanOrEqual","notEqual","arrowLeft","arrowRight"],typography:["horizontalEllipsis","enDash","emDash"],quotes:["quotesPrimary","quotesSecondary"]},Op=["symbols","mathematical","typography","quotes"];function Rp(t){return"string"==typeof t?new RegExp(`(${zp(t)})$`):t}function jp(t){return"string"==typeof t?()=>[t]:t instanceof Array?()=>t:t}function Fp(t){return(t.textNode?t.textNode:t.nodeAfter).getAttributes()}function Vp(t){return new RegExp(`(^|\\s)(${t})([^${t}]*)(${t})$`)}function Hp(t,e,n,o){return o.createRange(Up(t,e,n,!0,o),Up(t,e,n,!1,o))}function Up(t,e,n,o,i){let r=t.textNode||(o?t.nodeBefore:t.nodeAfter),s=null;for(;r&&r.getAttribute(e)==n;)s=r,r=o?r.previousSibling:r.nextSibling;return s?i.createPositionAt(s,o?"before":"after"):t}class Gp extends H{constructor(t){super(t),this._stack=[],this._createdBatches=new WeakSet,this.refresh(),this.listenTo(t.data,"set",((t,e)=>{e[1]={...e[1]};const n=e[1];n.batchType||(n.batchType={isUndoable:!1})}),{priority:"high"}),this.listenTo(t.data,"set",((t,e)=>{e[1].batchType.isUndoable||this.clearStack()}))}refresh(){this.isEnabled=this._stack.length>0}addBatch(t){const e=this.editor.model.document.selection,n={ranges:e.hasOwnRange?Array.from(e.getRanges()):[],isBackward:e.isBackward};this._stack.push({batch:t,selection:n}),this.refresh()}clearStack(){this._stack=[],this.refresh()}_restoreSelection(t,e,n){const o=this.editor.model,i=o.document,r=[],s=t.map((t=>t.getTransformedByOperations(n))),a=s.flat();for(const t of s){const e=t.filter((t=>t.root!=i.graveyard)).filter((t=>!qp(t,a)));e.length&&(Wp(e),r.push(e[0]))}r.length&&o.change((t=>{t.setSelection(r,{backward:e})}))}_undo(t,e){const n=this.editor.model,o=n.document;this._createdBatches.add(e);const i=t.operations.slice().filter((t=>t.isDocumentOperation));i.reverse();for(const t of i){const i=t.baseVersion+1,r=Array.from(o.history.getOperations(i)),s=Od([t.getReversed()],r,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA;for(const i of s)e.addOperation(i),n.applyOperation(i),o.history.setOperationAsUndone(t,i)}}}function Wp(t){t.sort(((t,e)=>t.start.isBefore(e.start)?-1:1));for(let e=1;ee!==t&&e.containsRange(t,!0)))}class $p extends Gp{execute(t=null){const e=t?this._stack.findIndex((e=>e.batch==t)):this._stack.length-1,n=this._stack.splice(e,1)[0],o=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(o,(()=>{this._undo(n.batch,o);const t=this.editor.model.document.history.getOperations(n.batch.baseVersion);this._restoreSelection(n.selection.ranges,n.selection.isBackward,t),this.fire("revert",n.batch,o)})),this.refresh()}}class Yp extends Gp{execute(){const t=this._stack.pop(),e=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(e,(()=>{const n=t.batch.operations[t.batch.operations.length-1].baseVersion+1,o=this.editor.model.document.history.getOperations(n);this._restoreSelection(t.selection.ranges,t.selection.isBackward,o),this._undo(t.batch,e)})),this.refresh()}}class Kp extends F{constructor(t){super(t),this._batchRegistry=new WeakSet}static get pluginName(){return"UndoEditing"}init(){const t=this.editor;this._undoCommand=new $p(t),this._redoCommand=new Yp(t),t.commands.add("undo",this._undoCommand),t.commands.add("redo",this._redoCommand),this.listenTo(t.model,"applyOperation",((t,e)=>{const n=e[0];if(!n.isDocumentOperation)return;const o=n.batch,i=this._redoCommand._createdBatches.has(o),r=this._undoCommand._createdBatches.has(o);this._batchRegistry.has(o)||(this._batchRegistry.add(o),o.isUndoable&&(i?this._undoCommand.addBatch(o):r||(this._undoCommand.addBatch(o),this._redoCommand.clearStack())))}),{priority:"highest"}),this.listenTo(this._undoCommand,"revert",((t,e,n)=>{this._redoCommand.addBatch(n)})),t.keystrokes.set("CTRL+Z","undo"),t.keystrokes.set("CTRL+Y","redo"),t.keystrokes.set("CTRL+SHIFT+Z","redo")}}const Qp='',Zp='';class Jp extends F{static get pluginName(){return"UndoUI"}init(){const t=this.editor,e=t.locale,n=t.t,o="ltr"==e.uiLanguageDirection?Qp:Zp,i="ltr"==e.uiLanguageDirection?Zp:Qp;this._addButton("undo",n("Undo"),"CTRL+Z",o),this._addButton("redo",n("Redo"),"CTRL+Y",i)}_addButton(t,e,n,o){const i=this.editor;i.ui.componentFactory.add(t,(r=>{const s=i.commands.get(t),a=new Nh(r);return a.set({label:e,icon:o,keystroke:n,tooltip:!0}),a.bind("isEnabled").to(s,"isEnabled"),this.listenTo(a,"execute",(()=>{i.execute(t),i.editing.view.focus()})),a}))}}class Xp extends F{static get requires(){return[Kp,Jp]}static get pluginName(){return"Undo"}}const tf=["left","right","center","justify"];function ef(t){return tf.includes(t)}function nf(t,e){return"rtl"==e.contentLanguageDirection?"right"===t:"left"===t}function of(t){const e=t.map((t=>{let e;return e="string"==typeof t?{name:t}:t,e})).filter((t=>{const e=!!tf.includes(t.name);return e||l("alignment-config-name-not-recognized",{option:t}),e})),n=e.filter((t=>!!t.className)).length;if(n&&n{const i=o.slice(n+1);if(i.some((t=>t.name==e.name)))throw new c("alignment-config-name-already-defined",{option:e,configuredOptions:t});if(e.className){if(i.some((t=>t.className==e.className)))throw new c("alignment-config-classname-already-defined",{option:e,configuredOptions:t})}})),e}const rf="alignment";class sf extends H{refresh(){const t=this.editor.locale,e=Ca(this.editor.model.document.selection.getSelectedBlocks());this.isEnabled=!!e&&this._canBeAligned(e),this.isEnabled&&e.hasAttribute("alignment")?this.value=e.getAttribute("alignment"):this.value="rtl"===t.contentLanguageDirection?"right":"left"}execute(t={}){const e=this.editor,n=e.locale,o=e.model,i=o.document,r=t.value;o.change((t=>{const e=Array.from(i.selection.getSelectedBlocks()).filter((t=>this._canBeAligned(t))),o=e[0].getAttribute("alignment");nf(r,n)||o===r||!r?function(t,e){for(const n of t)e.removeAttribute(rf,n)}(e,t):function(t,e,n){for(const o of t)e.setAttribute(rf,n,o)}(e,t,r)}))}_canBeAligned(t){return this.editor.model.schema.checkAttribute(t,rf)}}class af extends F{static get pluginName(){return"AlignmentEditing"}constructor(t){super(t),t.config.define("alignment",{options:[...tf.map((t=>({name:t})))]})}init(){const t=this.editor,e=t.locale,n=t.model.schema,o=of(t.config.get("alignment.options")).filter((t=>ef(t.name)&&!nf(t.name,e))),i=o.some((t=>!!t.className));n.extend("$block",{allowAttributes:"alignment"}),t.model.schema.setAttributeProperties("alignment",{isFormatting:!0}),i?t.conversion.attributeToAttribute(function(t){const e={model:{key:"alignment",values:t.map((t=>t.name))},view:{}};for(const n of t)e.view[n.name]={key:"class",value:n.className};return e}(o)):t.conversion.for("downcast").attributeToAttribute(function(t){const e={model:{key:"alignment",values:t.map((t=>t.name))},view:{}};for(const{name:n}of t)e.view[n]={key:"style",value:{"text-align":n}};return e}(o));const r=function(t){const e=[];for(const{name:n}of t)e.push({view:{key:"style",value:{"text-align":n}},model:{key:"alignment",value:n}});return e}(o);for(const e of r)t.conversion.for("upcast").attributeToAttribute(e);const s=function(t){const e=[];for(const{name:n}of t)e.push({view:{key:"align",value:n},model:{key:"alignment",value:n}});return e}(o);for(const e of s)t.conversion.for("upcast").attributeToAttribute(e);t.commands.add("alignment",new sf(t))}}const cf=new Map([["left",Ah.alignLeft],["right",Ah.alignRight],["center",Ah.alignCenter],["justify",Ah.alignJustify]]);class lf extends F{get localizedOptionTitles(){const t=this.editor.t;return{left:t("Align left"),right:t("Align right"),center:t("Align center"),justify:t("Justify")}}static get pluginName(){return"AlignmentUI"}init(){const t=this.editor,e=t.ui.componentFactory,n=t.t,o=of(t.config.get("alignment.options"));o.map((t=>t.name)).filter(ef).forEach((t=>this._addButton(t))),e.add("alignment",(i=>{const r=kg(i),s=o.map((t=>e.create(`alignment:${t.name}`)));bg(r,s,{enableActiveItemFocusOnDropdownOpen:!0}),r.buttonView.set({label:n("Text alignment"),tooltip:!0}),r.toolbarView.isVertical=!0,r.toolbarView.ariaLabel=n("Text alignment toolbar"),r.extendTemplate({attributes:{class:"ck-alignment-dropdown"}});const a="rtl"===i.contentLanguageDirection?cf.get("right"):cf.get("left");return r.buttonView.bind("icon").toMany(s,"isOn",((...t)=>{const e=t.findIndex((t=>t));return e<0?a:s[e].icon})),r.bind("isEnabled").toMany(s,"isEnabled",((...t)=>t.some((t=>t)))),this.listenTo(r,"execute",(()=>{t.editing.view.focus()})),r}))}_addButton(t){const e=this.editor;e.ui.componentFactory.add(`alignment:${t}`,(n=>{const o=e.commands.get("alignment"),i=new Nh(n);return i.set({label:this.localizedOptionTitles[t],icon:cf.get(t),tooltip:!0,isToggleable:!0}),i.bind("isEnabled").to(o),i.bind("isOn").to(o,"value",(e=>e===t)),this.listenTo(i,"execute",(()=>{e.execute("alignment",{value:t}),e.editing.view.focus()})),i}))}}class df extends H{constructor(t,e){super(t),this.attributeKey=e}refresh(){const t=this.editor.model,e=t.document;this.value=e.selection.getAttribute(this.attributeKey),this.isEnabled=t.schema.checkAttributeInSelection(e.selection,this.attributeKey)}execute(t={}){const e=this.editor.model,n=e.document.selection,o=t.value;e.change((t=>{if(n.isCollapsed)o?t.setSelectionAttribute(this.attributeKey,o):t.removeSelectionAttribute(this.attributeKey);else{const i=e.schema.getValidRanges(n.getRanges(),this.attributeKey);for(const e of i)o?t.setAttribute(this.attributeKey,o,e):t.removeAttribute(this.attributeKey,e)}}))}}class uf extends fo{constructor(t){super(t),this.set("isEmpty",!0),this.on("change",(()=>{this.set("isEmpty",0===this.length)}))}add(t,e){this.find((e=>e.color===t.color))||super.add(t,e)}hasColor(t){return!!this.find((e=>e.color===t))}}ka(uf,B);var hf=n(1896),gf={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(hf.Z,gf);hf.Z.locals;class mf extends Zu{constructor(t,{colors:e,columns:n,removeButtonLabel:o,documentColorsLabel:i,documentColorsCount:r}){super(t),this.items=this.createCollection(),this.colorDefinitions=e,this.focusTracker=new va,this.keystrokes=new ya,this.set("selectedColor"),this.removeButtonLabel=o,this.columns=n,this.documentColors=new uf,this.documentColorsCount=r,this._focusables=new Du,this._focusCycler=new Qh({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this._documentColorsLabel=i,this.setTemplate({tag:"div",attributes:{class:["ck","ck-color-table"]},children:this.items}),this.items.add(this._createRemoveColorButton())}updateDocumentColors(t,e){const n=t.document,o=this.documentColorsCount;this.documentColors.clear();for(const i of n.getRootNames()){const r=n.getRoot(i),s=t.createRangeIn(r);for(const t of s.getItems())if(t.is("$textProxy")&&t.hasAttribute(e)&&(this._addColorToDocumentColors(t.getAttribute(e)),this.documentColors.length>=o))return}}updateSelectedColors(){const t=this.documentColorsGrid,e=this.staticColorsGrid,n=this.selectedColor;e.selectedColor=n,t&&(t.selectedColor=n)}render(){super.render(),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}appendGrids(){if(!this.staticColorsGrid&&(this.staticColorsGrid=this._createStaticColorsGrid(),this.items.add(this.staticColorsGrid),this.focusTracker.add(this.staticColorsGrid.element),this._focusables.add(this.staticColorsGrid),this.documentColorsCount)){const t=Iu.bind(this.documentColors,this.documentColors),e=new Eg(this.locale);e.text=this._documentColorsLabel,e.extendTemplate({attributes:{class:["ck","ck-color-grid__label",t.if("isEmpty","ck-hidden")]}}),this.items.add(e),this.documentColorsGrid=this._createDocumentColorsGrid(),this.items.add(this.documentColorsGrid),this.focusTracker.add(this.documentColorsGrid.element),this._focusables.add(this.documentColorsGrid)}}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}_createRemoveColorButton(){const t=new Nh;return t.set({withText:!0,icon:Ah.eraser,label:this.removeButtonLabel}),t.class="ck-color-table__remove-color",t.on("execute",(()=>{this.fire("execute",{value:null})})),t.render(),this.focusTracker.add(t.element),this._focusables.add(t),t}_createStaticColorsGrid(){const t=new Fh(this.locale,{colorDefinitions:this.colorDefinitions,columns:this.columns});return t.delegate("execute").to(this),t}_createDocumentColorsGrid(){const t=Iu.bind(this.documentColors,this.documentColors),e=new Fh(this.locale,{columns:this.columns});return e.delegate("execute").to(this),e.extendTemplate({attributes:{class:t.if("isEmpty","ck-hidden")}}),e.items.bindTo(this.documentColors).using((t=>{const e=new Oh;return e.set({color:t.color,hasBorder:t.options&&t.options.hasBorder}),t.label&&e.set({label:t.label,tooltip:!0}),e.on("execute",(()=>{this.fire("execute",{value:t.color})})),e})),this.documentColors.on("change:isEmpty",((t,n,o)=>{o&&(e.selectedColor=null)})),e}_addColorToDocumentColors(t){const e=this.colorDefinitions.find((e=>e.color===t));e?this.documentColors.add(Object.assign({},e)):this.documentColors.add({color:t,label:t,options:{hasBorder:!1}})}}const pf="fontSize",ff="fontFamily",kf="fontColor",bf="fontBackgroundColor";function wf(t,e){const n={model:{key:t,values:[]},view:{},upcastAlso:{}};for(const t of e)n.model.values.push(t.model),n.view[t.model]=t.view,t.upcastAlso&&(n.upcastAlso[t.model]=t.upcastAlso);return n}function Af(t){return e=>e.getStyle(t).replace(/\s/g,"")}function _f(t){return(e,{writer:n})=>n.createAttributeElement("span",{style:`${t}:${e}`},{priority:7})}class Cf extends df{constructor(t){super(t,pf)}}function vf(t){return t.map((t=>function(t){if(e=t,"object"==typeof e&&e.title&&e.model&&e.view)return xf(t);var e;const n=function(t){return yf[t]||yf[t.model]}(t);if(n)return xf(n);if("default"===t)return{model:void 0,title:"Default"};if(function(t){let e;if("object"==typeof t){if(!t.model)throw new c("font-size-invalid-definition",null,t);e=parseFloat(t.model)}else e=parseFloat(t);return isNaN(e)}(t))return;return function(t){"number"!=typeof t&&"string"!=typeof t||(t={title:String(t),model:`${parseFloat(t)}px`});return t.view={name:"span",styles:{"font-size":t.model}},xf(t)}(t)}(t))).filter((t=>!!t))}const yf={get tiny(){return{title:"Tiny",model:"tiny",view:{name:"span",classes:"text-tiny",priority:7}}},get small(){return{title:"Small",model:"small",view:{name:"span",classes:"text-small",priority:7}}},get big(){return{title:"Big",model:"big",view:{name:"span",classes:"text-big",priority:7}}},get huge(){return{title:"Huge",model:"huge",view:{name:"span",classes:"text-huge",priority:7}}}};function xf(t){return t.view.priority||(t.view.priority=7),t}const Ef=["x-small","x-small","small","medium","large","x-large","xx-large","xxx-large"];class Df extends F{static get pluginName(){return"FontSizeEditing"}constructor(t){super(t),t.config.define(pf,{options:["tiny","small","default","big","huge"],supportAllValues:!1})}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:pf}),t.model.schema.setAttributeProperties(pf,{isFormatting:!0,copyOnEnter:!0});const e=t.config.get("fontSize.supportAllValues"),n=vf(this.editor.config.get("fontSize.options")).filter((t=>t.model)),o=wf(pf,n);e?(this._prepareAnyValueConverters(o),this._prepareCompatibilityConverter()):t.conversion.attributeToElement(o),t.commands.add(pf,new Cf(t))}_prepareAnyValueConverters(t){const e=this.editor,n=t.model.values.filter((t=>{return!(e=String(t),tu.test(e)||function(t){return eu.test(t)}(String(t)));var e}));if(n.length)throw new c("font-size-invalid-use-of-named-presets",null,{presets:n});e.conversion.for("downcast").attributeToElement({model:pf,view:(t,{writer:e})=>{if(t)return e.createAttributeElement("span",{style:"font-size:"+t},{priority:7})}}),e.conversion.for("upcast").elementToAttribute({model:{key:pf,value:t=>t.getStyle("font-size")},view:{name:"span",styles:{"font-size":/.*/}}})}_prepareCompatibilityConverter(){this.editor.conversion.for("upcast").elementToAttribute({view:{name:"font",attributes:{size:/^[+-]?\d{1,3}$/}},model:{key:pf,value:t=>{const e=t.getAttribute("size"),n="-"===e[0]||"+"===e[0];let o=parseInt(e,10);n&&(o=3+o);const i=Ef.length-1,r=Math.min(Math.max(o,0),i);return Ef[r]}}})}}var If=n(6007),Tf={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(If.Z,Tf);If.Z.locals;class Sf extends F{static get pluginName(){return"FontSizeUI"}init(){const t=this.editor,e=t.t,n=this._getLocalizedOptions(),o=t.commands.get(pf);t.ui.componentFactory.add(pf,(i=>{const r=kg(i);return wg(r,function(t,e){const n=new fo;for(const o of t){const t={type:"button",model:new Hg({commandName:pf,commandParam:o.model,label:o.title,class:"ck-fontsize-option",withText:!0})};o.view&&o.view.styles&&t.model.set("labelStyle",`font-size:${o.view.styles["font-size"]}`),o.view&&o.view.classes&&t.model.set("class",`${t.model.class} ${o.view.classes}`),t.model.bind("isOn").to(e,"value",(t=>t===o.model)),n.add(t)}return n}(n,o)),r.buttonView.set({label:e("Font Size"),icon:'',tooltip:!0}),r.extendTemplate({attributes:{class:["ck-font-size-dropdown"]}}),r.bind("isEnabled").to(o),this.listenTo(r,"execute",(e=>{t.execute(e.source.commandName,{value:e.source.commandParam}),t.editing.view.focus()})),r}))}_getLocalizedOptions(){const t=this.editor,e=t.t,n={Default:e("Default"),Tiny:e("Tiny"),Small:e("Small"),Big:e("Big"),Huge:e("Huge")};return vf(t.config.get(pf).options).map((t=>{const e=n[t.title];return e&&e!=t.title&&(t=Object.assign({},t,{title:e})),t}))}}class Mf extends df{constructor(t){super(t,ff)}}function Nf(t){return t.map(Bf).filter((t=>!!t))}function Bf(t){return"object"==typeof t?t:"default"===t?{title:"Default",model:void 0}:"string"==typeof t?function(t){const e=t.replace(/"|'/g,"").split(","),n=e[0],o=e.map(zf).join(", ");return{title:n,model:o,view:{name:"span",styles:{"font-family":o},priority:7}}}(t):void 0}function zf(t){return(t=t.trim()).indexOf(" ")>0&&(t=`'${t}'`),t}class Pf extends F{static get pluginName(){return"FontFamilyEditing"}constructor(t){super(t),t.config.define(ff,{options:["default","Arial, Helvetica, sans-serif","Courier New, Courier, monospace","Georgia, serif","Lucida Sans Unicode, Lucida Grande, sans-serif","Tahoma, Geneva, sans-serif","Times New Roman, Times, serif","Trebuchet MS, Helvetica, sans-serif","Verdana, Geneva, sans-serif"],supportAllValues:!1})}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:ff}),t.model.schema.setAttributeProperties(ff,{isFormatting:!0,copyOnEnter:!0});const e=Nf(t.config.get("fontFamily.options")).filter((t=>t.model)),n=wf(ff,e);t.config.get("fontFamily.supportAllValues")?(this._prepareAnyValueConverters(),this._prepareCompatibilityConverter()):t.conversion.attributeToElement(n),t.commands.add(ff,new Mf(t))}_prepareAnyValueConverters(){const t=this.editor;t.conversion.for("downcast").attributeToElement({model:ff,view:(t,{writer:e})=>e.createAttributeElement("span",{style:"font-family:"+t},{priority:7})}),t.conversion.for("upcast").elementToAttribute({model:{key:ff,value:t=>t.getStyle("font-family")},view:{name:"span",styles:{"font-family":/.*/}}})}_prepareCompatibilityConverter(){this.editor.conversion.for("upcast").elementToAttribute({view:{name:"font",attributes:{face:/.*/}},model:{key:ff,value:t=>t.getAttribute("face")}})}}class Lf extends F{static get pluginName(){return"FontFamilyUI"}init(){const t=this.editor,e=t.t,n=this._getLocalizedOptions(),o=t.commands.get(ff);t.ui.componentFactory.add(ff,(i=>{const r=kg(i);return wg(r,function(t,e){const n=new fo;for(const o of t){const t={type:"button",model:new Hg({commandName:ff,commandParam:o.model,label:o.title,withText:!0})};t.model.bind("isOn").to(e,"value",(t=>t===o.model||!(!t||!o.model)&&t.split(",")[0].replace(/'/g,"").toLowerCase()===o.model.toLowerCase())),o.view&&o.view.styles&&t.model.set("labelStyle",`font-family: ${o.view.styles["font-family"]}`),n.add(t)}return n}(n,o)),r.buttonView.set({label:e("Font Family"),icon:'',tooltip:!0}),r.extendTemplate({attributes:{class:"ck-font-family-dropdown"}}),r.bind("isEnabled").to(o),this.listenTo(r,"execute",(e=>{t.execute(e.source.commandName,{value:e.source.commandParam}),t.editing.view.focus()})),r}))}_getLocalizedOptions(){const t=this.editor,e=t.t;return Nf(t.config.get(ff).options).map((t=>("Default"===t.title&&(t.title=e("Default")),t)))}}class Of extends df{constructor(t){super(t,kf)}}class Rf extends F{static get pluginName(){return"FontColorEditing"}constructor(t){super(t),t.config.define(kf,{colors:[{color:"hsl(0, 0%, 0%)",label:"Black"},{color:"hsl(0, 0%, 30%)",label:"Dim grey"},{color:"hsl(0, 0%, 60%)",label:"Grey"},{color:"hsl(0, 0%, 90%)",label:"Light grey"},{color:"hsl(0, 0%, 100%)",label:"White",hasBorder:!0},{color:"hsl(0, 75%, 60%)",label:"Red"},{color:"hsl(30, 75%, 60%)",label:"Orange"},{color:"hsl(60, 75%, 60%)",label:"Yellow"},{color:"hsl(90, 75%, 60%)",label:"Light green"},{color:"hsl(120, 75%, 60%)",label:"Green"},{color:"hsl(150, 75%, 60%)",label:"Aquamarine"},{color:"hsl(180, 75%, 60%)",label:"Turquoise"},{color:"hsl(210, 75%, 60%)",label:"Light blue"},{color:"hsl(240, 75%, 60%)",label:"Blue"},{color:"hsl(270, 75%, 60%)",label:"Purple"}],columns:5}),t.conversion.for("upcast").elementToAttribute({view:{name:"span",styles:{color:/[\s\S]+/}},model:{key:kf,value:Af("color")}}),t.conversion.for("upcast").elementToAttribute({view:{name:"font",attributes:{color:/^#?\w+$/}},model:{key:kf,value:t=>t.getAttribute("color")}}),t.conversion.for("downcast").attributeToElement({model:kf,view:_f("color")}),t.commands.add(kf,new Of(t)),t.model.schema.extend("$text",{allowAttributes:kf}),t.model.schema.setAttributeProperties(kf,{isFormatting:!0,copyOnEnter:!0})}}class jf extends F{constructor(t,{commandName:e,icon:n,componentName:o,dropdownLabel:i}){super(t),this.commandName=e,this.componentName=o,this.icon=n,this.dropdownLabel=i,this.columns=t.config.get(`${this.componentName}.columns`),this.colorTableView=void 0}init(){const t=this.editor,e=t.locale,n=e.t,o=t.commands.get(this.commandName),i=function(t){return t.map(Lh).filter((t=>!!t))}(t.config.get(this.componentName).colors),r=function(t,e){const n=t.t,o={Black:n("Black"),"Dim grey":n("Dim grey"),Grey:n("Grey"),"Light grey":n("Light grey"),White:n("White"),Red:n("Red"),Orange:n("Orange"),Yellow:n("Yellow"),"Light green":n("Light green"),Green:n("Green"),Aquamarine:n("Aquamarine"),Turquoise:n("Turquoise"),"Light blue":n("Light blue"),Blue:n("Blue"),Purple:n("Purple")};return e.map((t=>{const e=o[t.label];return e&&e!=t.label&&(t.label=e),t}))}(e,i),s=t.config.get(`${this.componentName}.documentColors`);t.ui.componentFactory.add(this.componentName,(e=>{const i=kg(e);return this.colorTableView=function({dropdownView:t,colors:e,columns:n,removeButtonLabel:o,documentColorsLabel:i,documentColorsCount:r}){const s=t.locale,a=new mf(s,{colors:e,columns:n,removeButtonLabel:o,documentColorsLabel:i,documentColorsCount:r});return t.colorTableView=a,t.panelView.children.add(a),a.delegate("execute").to(t,"execute"),a}({dropdownView:i,colors:r.map((t=>({label:t.label,color:t.model,options:{hasBorder:t.hasBorder}}))),columns:this.columns,removeButtonLabel:n("Remove color"),documentColorsLabel:0!==s?n("Document colors"):void 0,documentColorsCount:void 0===s?this.columns:s}),this.colorTableView.bind("selectedColor").to(o,"value"),i.buttonView.set({label:this.dropdownLabel,icon:this.icon,tooltip:!0}),i.extendTemplate({attributes:{class:"ck-color-ui-dropdown"}}),i.bind("isEnabled").to(o),i.on("execute",((e,n)=>{t.execute(this.commandName,n),t.editing.view.focus()})),i.on("change:isOpen",((e,n,o)=>{i.colorTableView.appendGrids(),o&&(0!==s&&this.colorTableView.updateDocumentColors(t.model,this.componentName),this.colorTableView.updateSelectedColors())})),Ag(i,(()=>i.colorTableView.staticColorsGrid.items.find((t=>t.isOn)))),i}))}}class Ff extends jf{constructor(t){const e=t.locale.t;super(t,{commandName:kf,componentName:kf,icon:'',dropdownLabel:e("Font Color")})}static get pluginName(){return"FontColorUI"}}class Vf extends df{constructor(t){super(t,bf)}}class Hf extends F{static get pluginName(){return"FontBackgroundColorEditing"}constructor(t){super(t),t.config.define(bf,{colors:[{color:"hsl(0, 0%, 0%)",label:"Black"},{color:"hsl(0, 0%, 30%)",label:"Dim grey"},{color:"hsl(0, 0%, 60%)",label:"Grey"},{color:"hsl(0, 0%, 90%)",label:"Light grey"},{color:"hsl(0, 0%, 100%)",label:"White",hasBorder:!0},{color:"hsl(0, 75%, 60%)",label:"Red"},{color:"hsl(30, 75%, 60%)",label:"Orange"},{color:"hsl(60, 75%, 60%)",label:"Yellow"},{color:"hsl(90, 75%, 60%)",label:"Light green"},{color:"hsl(120, 75%, 60%)",label:"Green"},{color:"hsl(150, 75%, 60%)",label:"Aquamarine"},{color:"hsl(180, 75%, 60%)",label:"Turquoise"},{color:"hsl(210, 75%, 60%)",label:"Light blue"},{color:"hsl(240, 75%, 60%)",label:"Blue"},{color:"hsl(270, 75%, 60%)",label:"Purple"}],columns:5}),t.data.addStyleProcessorRules(gu),t.conversion.for("upcast").elementToAttribute({view:{name:"span",styles:{"background-color":/[\s\S]+/}},model:{key:bf,value:Af("background-color")}}),t.conversion.for("downcast").attributeToElement({model:bf,view:_f("background-color")}),t.commands.add(bf,new Vf(t)),t.model.schema.extend("$text",{allowAttributes:bf}),t.model.schema.setAttributeProperties(bf,{isFormatting:!0,copyOnEnter:!0})}}class Uf extends jf{constructor(t){const e=t.locale.t;super(t,{commandName:bf,componentName:bf,icon:'',dropdownLabel:e("Font Background Color")})}static get pluginName(){return"FontBackgroundColorUI"}}class Gf extends z{constructor(){super();const t=new window.FileReader;this._reader=t,this._data=void 0,this.set("loaded",0),t.onprogress=t=>{this.loaded=t.loaded}}get error(){return this._reader.error}get data(){return this._data}read(t){const e=this._reader;return this.total=t.size,new Promise(((n,o)=>{e.onload=()=>{const t=e.result;this._data=t,n(t)},e.onerror=()=>{o("error")},e.onabort=()=>{o("aborted")},this._reader.readAsDataURL(t)}))}abort(){this._reader.abort()}}class Wf extends F{static get pluginName(){return"FileRepository"}static get requires(){return[wh]}init(){this.loaders=new fo,this.loaders.on("change",(()=>this._updatePendingAction())),this._loadersMap=new Map,this._pendingAction=null,this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",((t,e)=>e?t/e*100:0))}getLoader(t){return this._loadersMap.get(t)||null}createLoader(t){if(!this.createUploadAdapter)return l("filerepository-no-upload-adapter"),null;const e=new qf(Promise.resolve(t),this.createUploadAdapter);return this.loaders.add(e),this._loadersMap.set(t,e),t instanceof Promise&&e.file.then((t=>{this._loadersMap.set(t,e)})).catch((()=>{})),e.on("change:uploaded",(()=>{let t=0;for(const e of this.loaders)t+=e.uploaded;this.uploaded=t})),e.on("change:uploadTotal",(()=>{let t=0;for(const e of this.loaders)e.uploadTotal&&(t+=e.uploadTotal);this.uploadTotal=t})),e}destroyLoader(t){const e=t instanceof qf?t:this.getLoader(t);e._destroy(),this.loaders.remove(e),this._loadersMap.forEach(((t,n)=>{t===e&&this._loadersMap.delete(n)}))}_updatePendingAction(){const t=this.editor.plugins.get(wh);if(this.loaders.length){if(!this._pendingAction){const e=this.editor.t,n=t=>`${e("Upload in progress")} ${parseInt(t)}%.`;this._pendingAction=t.add(n(this.uploadedPercent)),this._pendingAction.bind("message").to(this,"uploadedPercent",n)}}else t.remove(this._pendingAction),this._pendingAction=null}}class qf extends z{constructor(t,e){super(),this.id=r(),this._filePromiseWrapper=this._createFilePromiseWrapper(t),this._adapter=e(this),this._reader=new Gf,this.set("status","idle"),this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",((t,e)=>e?t/e*100:0)),this.set("uploadResponse",null)}get file(){return this._filePromiseWrapper?this._filePromiseWrapper.promise.then((t=>this._filePromiseWrapper?t:null)):Promise.resolve(null)}get data(){return this._reader.data}read(){if("idle"!=this.status)throw new c("filerepository-read-wrong-status",this);return this.status="reading",this.file.then((t=>this._reader.read(t))).then((t=>{if("reading"!==this.status)throw this.status;return this.status="idle",t})).catch((t=>{if("aborted"===t)throw this.status="aborted","aborted";throw this.status="error",this._reader.error?this._reader.error:t}))}upload(){if("idle"!=this.status)throw new c("filerepository-upload-wrong-status",this);return this.status="uploading",this.file.then((()=>this._adapter.upload())).then((t=>(this.uploadResponse=t,this.status="idle",t))).catch((t=>{if("aborted"===this.status)throw"aborted";throw this.status="error",t}))}abort(){const t=this.status;this.status="aborted",this._filePromiseWrapper.isFulfilled?"reading"==t?this._reader.abort():"uploading"==t&&this._adapter.abort&&this._adapter.abort():(this._filePromiseWrapper.promise.catch((()=>{})),this._filePromiseWrapper.rejecter("aborted")),this._destroy()}_destroy(){this._filePromiseWrapper=void 0,this._reader=void 0,this._adapter=void 0,this.uploadResponse=void 0}_createFilePromiseWrapper(t){const e={};return e.promise=new Promise(((n,o)=>{e.rejecter=o,e.isFulfilled=!1,t.then((t=>{e.isFulfilled=!0,n(t)})).catch((t=>{e.isFulfilled=!0,o(t)}))})),e}}class $f extends Zu{constructor(t){super(t),this.buttonView=new Nh(t),this._fileInputView=new Yf(t),this._fileInputView.bind("acceptedType").to(this),this._fileInputView.bind("allowMultipleFiles").to(this),this._fileInputView.delegate("done").to(this),this.setTemplate({tag:"span",attributes:{class:"ck-file-dialog-button"},children:[this.buttonView,this._fileInputView]}),this.buttonView.on("execute",(()=>{this._fileInputView.open()}))}focus(){this.buttonView.focus()}}class Yf extends Zu{constructor(t){super(t),this.set("acceptedType",void 0),this.set("allowMultipleFiles",!1);const e=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck-hidden"],type:"file",tabindex:"-1",accept:e.to("acceptedType"),multiple:e.to("allowMultipleFiles")},on:{change:e.to((()=>{this.element&&this.element.files&&this.element.files.length&&this.fire("done",this.element.files),this.element.value=""}))}})}open(){this.element.click()}}const Kf="ckCsrfToken",Qf="abcdefghijklmnopqrstuvwxyz0123456789";function Zf(){let t=function(t){t=t.toLowerCase();const e=document.cookie.split(";");for(const n of e){const e=n.split("=");if(decodeURIComponent(e[0].trim().toLowerCase())===t)return decodeURIComponent(e[1])}return null}(Kf);var e,n;return t&&40==t.length||(t=function(t){let e="";const n=new Uint8Array(t);window.crypto.getRandomValues(n);for(let t=0;t.5?o.toUpperCase():o}return e}(40),e=Kf,n=t,document.cookie=encodeURIComponent(e)+"="+encodeURIComponent(n)+";path=/"),t}class Jf{constructor(t,e,n){this.loader=t,this.url=e,this.t=n}upload(){return this.loader.file.then((t=>new Promise(((e,n)=>{this._initRequest(),this._initListeners(e,n,t),this._sendRequest(t)}))))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){const t=this.xhr=new XMLHttpRequest;t.open("POST",this.url,!0),t.responseType="json"}_initListeners(t,e,n){const o=this.xhr,i=this.loader,r=(0,this.t)("Cannot upload file:")+` ${n.name}.`;o.addEventListener("error",(()=>e(r))),o.addEventListener("abort",(()=>e())),o.addEventListener("load",(()=>{const n=o.response;if(!n||!n.uploaded)return e(n&&n.error&&n.error.message?n.error.message:r);t({default:n.url})})),o.upload&&o.upload.addEventListener("progress",(t=>{t.lengthComputable&&(i.uploadTotal=t.total,i.uploaded=t.loaded)}))}_sendRequest(t){const e=new FormData;e.append("upload",t),e.append("ckCsrfToken",Zf()),this.xhr.send(e)}}function Xf(t,e,n,o){let i,r=null;"function"==typeof o?i=o:(r=t.commands.get(o),i=()=>{t.execute(o)}),t.model.document.on("change:data",((s,a)=>{if(r&&!r.isEnabled||!e.isEnabled)return;const c=Ca(t.model.document.selection.getRanges());if(!c.isCollapsed)return;if(a.isUndo||!a.isLocal)return;const l=Array.from(t.model.document.differ.getChanges()),d=l[0];if(1!=l.length||"insert"!==d.type||"$text"!=d.name||1!=d.length)return;const u=d.position.parent;if(u.is("element","codeBlock"))return;if(u.is("element","listItem")&&"function"!=typeof o&&!["numberedList","bulletedList","todoList"].includes(o))return;if(r&&!0===r.value)return;const h=u.getChild(0),g=t.model.createRangeOn(h);if(!g.containsRange(c)&&!c.end.isEqual(g.end))return;const m=n.exec(h.data.substr(0,c.end.offset));m&&t.model.enqueueChange((e=>{const n=e.createPositionAt(u,0),o=e.createPositionAt(u,m[0].length),r=new fc(n,o);if(!1!==i({match:m})){e.remove(r);const n=t.model.document.selection.getFirstRange(),o=e.createRangeIn(u);!u.isEmpty||o.isEqual(n)||o.containsRange(n,!0)||e.remove(u)}r.detach(),t.model.enqueueChange((()=>{t.plugins.get("Delete").requestUndoOnBackspace()}))}))}))}function tk(t,e,n,o){let i,r;n instanceof RegExp?i=n:r=n,r=r||(t=>{let e;const n=[],o=[];for(;null!==(e=i.exec(t))&&!(e&&e.length<4);){let{index:t,1:i,2:r,3:s}=e;const a=i+r+s;t+=e[0].length-a.length;const c=[t,t+i.length],l=[t+i.length+r.length,t+i.length+r.length+s.length];n.push(c),n.push(l),o.push([t+i.length,t+i.length+r.length])}return{remove:n,format:o}}),t.model.document.on("change:data",((n,i)=>{if(i.isUndo||!i.isLocal||!e.isEnabled)return;const s=t.model,a=s.document.selection;if(!a.isCollapsed)return;const c=Array.from(s.document.differ.getChanges()),l=c[0];if(1!=c.length||"insert"!==l.type||"$text"!=l.name||1!=l.length)return;const d=a.focus,u=d.parent,{text:h,range:g}=function(t,e){let n=t.start;return{text:Array.from(t.getItems()).reduce(((t,o)=>!o.is("$text")&&!o.is("$textProxy")||o.getAttribute("code")?(n=e.createPositionAfter(o),""):t+o.data),""),range:e.createRange(n,t.end)}}(s.createRange(s.createPositionAt(u,0),d),s),m=r(h),p=ek(g.start,m.format,s),f=ek(g.start,m.remove,s);p.length&&f.length&&s.enqueueChange((e=>{if(!1!==o(e,p)){for(const t of f.reverse())e.remove(t);s.enqueueChange((()=>{t.plugins.get("Delete").requestUndoOnBackspace()}))}}))}))}function ek(t,e,n){return e.filter((t=>void 0!==t[0]&&void 0!==t[1])).map((e=>n.createRange(t.getShiftedBy(e[0]),t.getShiftedBy(e[1]))))}function nk(t,e){return(n,o)=>{if(!t.commands.get(e).isEnabled)return!1;const i=t.model.schema.getValidRanges(o,e);for(const t of i)n.setAttribute(e,!0,t);n.removeSelectionAttribute(e)}}class ok extends H{constructor(t,e){super(t),this.attributeKey=e}refresh(){const t=this.editor.model,e=t.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=t.schema.checkAttributeInSelection(e.selection,this.attributeKey)}execute(t={}){const e=this.editor.model,n=e.document.selection,o=void 0===t.forceValue?!this.value:t.forceValue;e.change((t=>{if(n.isCollapsed)o?t.setSelectionAttribute(this.attributeKey,!0):t.removeSelectionAttribute(this.attributeKey);else{const i=e.schema.getValidRanges(n.getRanges(),this.attributeKey);for(const e of i)o?t.setAttribute(this.attributeKey,o,e):t.removeAttribute(this.attributeKey,e)}}))}_getValueFromFirstAllowedNode(){const t=this.editor.model,e=t.schema,n=t.document.selection;if(n.isCollapsed)return n.hasAttribute(this.attributeKey);for(const t of n.getRanges())for(const n of t.getItems())if(e.checkAttribute(n,this.attributeKey))return n.hasAttribute(this.attributeKey);return!1}}const ik="bold";class rk extends F{static get pluginName(){return"BoldEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:ik}),t.model.schema.setAttributeProperties(ik,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:ik,view:"strong",upcastAlso:["b",t=>{const e=t.getStyle("font-weight");return e?"bold"==e||Number(e)>=600?{name:!0,styles:["font-weight"]}:void 0:null}]}),t.commands.add(ik,new ok(t,ik)),t.keystrokes.set("CTRL+B",ik)}}const sk="bold";class ak extends F{static get pluginName(){return"BoldUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(sk,(n=>{const o=t.commands.get(sk),i=new Nh(n);return i.set({label:e("Bold"),icon:Ah.bold,keystroke:"CTRL+B",tooltip:!0,isToggleable:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(i,"execute",(()=>{t.execute(sk),t.editing.view.focus()})),i}))}}const ck="italic";class lk extends F{static get pluginName(){return"ItalicEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:ck}),t.model.schema.setAttributeProperties(ck,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:ck,view:"i",upcastAlso:["em",{styles:{"font-style":"italic"}}]}),t.commands.add(ck,new ok(t,ck)),t.keystrokes.set("CTRL+I",ck)}}const dk="italic";class uk extends F{static get pluginName(){return"ItalicUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(dk,(n=>{const o=t.commands.get(dk),i=new Nh(n);return i.set({label:e("Italic"),icon:'',keystroke:"CTRL+I",tooltip:!0,isToggleable:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(i,"execute",(()=>{t.execute(dk),t.editing.view.focus()})),i}))}}const hk="strikethrough";class gk extends F{static get pluginName(){return"StrikethroughEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:hk}),t.model.schema.setAttributeProperties(hk,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:hk,view:"s",upcastAlso:["del","strike",{styles:{"text-decoration":"line-through"}}]}),t.commands.add(hk,new ok(t,hk)),t.keystrokes.set("CTRL+SHIFT+X","strikethrough")}}const mk="strikethrough";class pk extends F{static get pluginName(){return"StrikethroughUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(mk,(n=>{const o=t.commands.get(mk),i=new Nh(n);return i.set({label:e("Strikethrough"),icon:'',keystroke:"CTRL+SHIFT+X",tooltip:!0,isToggleable:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(i,"execute",(()=>{t.execute(mk),t.editing.view.focus()})),i}))}}const fk="underline";class kk extends F{static get pluginName(){return"UnderlineEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:fk}),t.model.schema.setAttributeProperties(fk,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:fk,view:"u",upcastAlso:{styles:{"text-decoration":"underline"}}}),t.commands.add(fk,new ok(t,fk)),t.keystrokes.set("CTRL+U","underline")}}const bk="underline";class wk extends F{static get pluginName(){return"UnderlineUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(bk,(n=>{const o=t.commands.get(bk),i=new Nh(n);return i.set({label:e("Underline"),icon:'',keystroke:"CTRL+U",tooltip:!0,isToggleable:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(i,"execute",(()=>{t.execute(bk),t.editing.view.focus()})),i}))}}class Ak extends H{refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,n=e.schema,o=e.document.selection,i=Array.from(o.getSelectedBlocks()),r=void 0===t.forceValue?!this.value:t.forceValue;e.change((t=>{if(r){const e=i.filter((t=>_k(t)||vk(n,t)));this._applyQuote(t,e)}else this._removeQuote(t,i.filter(_k))}))}_getValue(){const t=Ca(this.editor.model.document.selection.getSelectedBlocks());return!(!t||!_k(t))}_checkEnabled(){if(this.value)return!0;const t=this.editor.model.document.selection,e=this.editor.model.schema,n=Ca(t.getSelectedBlocks());return!!n&&vk(e,n)}_removeQuote(t,e){Ck(t,e).reverse().forEach((e=>{if(e.start.isAtStart&&e.end.isAtEnd)return void t.unwrap(e.start.parent);if(e.start.isAtStart){const n=t.createPositionBefore(e.start.parent);return void t.move(e,n)}e.end.isAtEnd||t.split(e.end);const n=t.createPositionAfter(e.end.parent);t.move(e,n)}))}_applyQuote(t,e){const n=[];Ck(t,e).reverse().forEach((e=>{let o=_k(e.start);o||(o=t.createElement("blockQuote"),t.wrap(e,o)),n.push(o)})),n.reverse().reduce(((e,n)=>e.nextSibling==n?(t.merge(t.createPositionAfter(e)),e):n))}}function _k(t){return"blockQuote"==t.parent.name?t.parent:null}function Ck(t,e){let n,o=0;const i=[];for(;o{const o=t.model.document.differ.getChanges();for(const t of o)if("insert"==t.type){const o=t.position.nodeAfter;if(!o)continue;if(o.is("element","blockQuote")&&o.isEmpty)return n.remove(o),!0;if(o.is("element","blockQuote")&&!e.checkChild(t.position,o))return n.unwrap(o),!0;if(o.is("element")){const t=n.createRangeIn(o);for(const o of t.getItems())if(o.is("element","blockQuote")&&!e.checkChild(n.createPositionBefore(o),o))return n.unwrap(o),!0}}else if("remove"==t.type){const e=t.position.parent;if(e.is("element","blockQuote")&&e.isEmpty)return n.remove(e),!0}return!1}));const n=this.editor.editing.view.document,o=t.model.document.selection,i=t.commands.get("blockQuote");this.listenTo(n,"enter",((e,n)=>{if(!o.isCollapsed||!i.value)return;o.getLastPosition().parent.isEmpty&&(t.execute("blockQuote"),t.editing.view.scrollToTheSelection(),n.preventDefault(),e.stop())}),{context:"blockquote"}),this.listenTo(n,"delete",((e,n)=>{if("backward"!=n.direction||!o.isCollapsed||!i.value)return;const r=o.getLastPosition().parent;r.isEmpty&&!r.previousSibling&&(t.execute("blockQuote"),t.editing.view.scrollToTheSelection(),n.preventDefault(),e.stop())}),{context:"blockquote"})}}var xk=n(3062),Ek={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(xk.Z,Ek);xk.Z.locals;class Dk extends F{static get pluginName(){return"BlockQuoteUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add("blockQuote",(n=>{const o=t.commands.get("blockQuote"),i=new Nh(n);return i.set({label:e("Block quote"),icon:Ah.quote,tooltip:!0,isToggleable:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(i,"execute",(()=>{t.execute("blockQuote"),t.editing.view.focus()})),i}))}}class Ik extends F{static get pluginName(){return"CKBoxUI"}afterInit(){const t=this.editor;if(!t.commands.get("ckbox"))return;const e=t.t;t.ui.componentFactory.add("ckbox",(n=>{const o=t.commands.get("ckbox"),i=new Nh(n);return i.set({label:e("Open file manager"),icon:'',tooltip:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),i.on("execute",(()=>{t.execute("ckbox")})),i}))}}function Tk({token:t,id:e,origin:n,width:o,extension:i}){const r=Sk(t),s=function(t){const e=[10*t/100,80],n=Math.floor(Math.max(...e)),o=[Math.min(t,4e3)];let i=o[0];for(;i-n>=n;)i-=n,o.unshift(i);return o}(o),a=function(t){if("bmp"===t||"tiff"===t||"jpg"===t)return"jpeg";return t}(i);return{imageFallbackUrl:Mk({environmentId:r,id:e,origin:n,width:o,extension:a}),imageSources:[{srcset:s.map((t=>`${Mk({environmentId:r,id:e,origin:n,width:t,extension:"webp"})} ${t}w`)).join(","),sizes:`(max-width: ${o}px) 100vw, ${o}px`,type:"image/webp"}]}}function Sk(t){const[,e]=t.value.split(".");return JSON.parse(atob(e)).aud}function Mk({environmentId:t,id:e,origin:n,width:o,extension:i}){return new URL(`${t}/assets/${e}/images/${o}.${i}`,n).toString()}class Nk extends H{constructor(t){super(t),this._chosenAssets=new Set,this._wrapper=null,this._initListeners()}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(){this.fire("ckbox:open")}_getValue(){return null!==this._wrapper}_checkEnabled(){const t=this.editor.commands.get("insertImage"),e=this.editor.commands.get("link");return!(!t.isEnabled&&!e.isEnabled)}_prepareOptions(){const t=this.editor.config.get("ckbox");return{theme:t.theme,language:t.language,tokenUrl:t.tokenUrl,serviceOrigin:t.serviceOrigin,assetsOrigin:t.assetsOrigin,dialog:{onClose:()=>this.fire("ckbox:close")},assets:{onChoose:t=>this.fire("ckbox:choose",t)}}}_initListeners(){const t=this.editor,e=t.model,n=!t.config.get("ckbox.ignoreDataId");this.on("ckbox",(()=>{this.refresh()}),{priority:"low"}),this.on("ckbox:open",(()=>{this.isEnabled&&!this.value&&(this._wrapper=wa(document,"div",{class:"ck ckbox-wrapper"}),document.body.appendChild(this._wrapper),window.CKBox.mount(this._wrapper,this._prepareOptions()))})),this.on("ckbox:close",(()=>{this.value&&(this._wrapper.remove(),this._wrapper=null)})),this.on("ckbox:choose",((o,i)=>{if(!this.isEnabled)return;const r=t.commands.get("insertImage"),s=t.commands.get("link"),a=t.plugins.get("CKBoxEditing"),c=function({assets:t,origin:e,token:n,isImageAllowed:o,isLinkAllowed:i}){return t.map((t=>({id:t.data.id,type:zk(t)?"image":"link",attributes:Bk(t,n,e)}))).filter((t=>"image"===t.type?o:i))}({assets:i,origin:t.config.get("ckbox.assetsOrigin"),token:a.getToken(),isImageAllowed:r.isEnabled,isLinkAllowed:s.isEnabled});0!==c.length&&e.change((t=>{for(const e of c){const o=e===c[c.length-1];this._insertAsset(e,o,t),n&&(setTimeout((()=>this._chosenAssets.delete(e)),1e3),this._chosenAssets.add(e))}}))})),this.listenTo(t,"destroy",(()=>{this.fire("ckbox:close"),this._chosenAssets.clear()}))}_insertAsset(t,e,n){const o=this.editor.model.document.selection;n.removeSelectionAttribute("linkHref"),"image"===t.type?this._insertImage(t):this._insertLink(t,n),e||n.setSelection(o.getLastPosition())}_insertImage(t){const e=this.editor,{imageFallbackUrl:n,imageSources:o,imageTextAlternative:i}=t.attributes;e.execute("insertImage",{source:{src:n,sources:o,alt:i}})}_insertLink(t,e){const n=this.editor,o=n.model,i=o.document.selection,{linkName:r,linkHref:s}=t.attributes;if(i.isCollapsed){const t=Bo(i.getAttributes()),n=e.createText(r,t),s=o.insertContent(n);e.setSelection(s)}n.execute("link",s)}}function Bk(t,e,n){if(zk(t)){const{imageFallbackUrl:o,imageSources:i}=Tk({token:e,origin:n,id:t.data.id,width:t.data.metadata.width,extension:t.data.extension});return{imageFallbackUrl:o,imageSources:i,imageTextAlternative:t.data.metadata.description||""}}return{linkName:t.data.name,linkHref:Pk(t,e,n)}}function zk(t){const e=t.data.metadata;return!!e&&(e.width&&e.height)}function Pk(t,e,n){const o=Sk(e),i=new URL(`${o}/assets/${t.data.id}/file`,n);return i.searchParams.set("download","true"),i.toString()}class Lk extends F{static get requires(){return["ImageUploadEditing","ImageUploadProgress",Wf,jk]}static get pluginName(){return"CKBoxUploadAdapter"}async afterInit(){const t=this.editor,e=!!t.config.get("ckbox"),n=!!window.CKBox;if(!e&&!n)return;const o=t.plugins.get(Wf),i=t.plugins.get(jk);o.createUploadAdapter=e=>new Ok(e,i.getToken(),t);const r=!t.config.get("ckbox.ignoreDataId"),s=t.plugins.get("ImageUploadEditing");r&&s.on("uploadComplete",((e,{imageElement:n,data:o})=>{t.model.change((t=>{t.setAttribute("ckboxImageId",o.ckboxImageId,n)}))}))}}class Ok{constructor(t,e,n){this.loader=t,this.token=e,this.editor=n,this.controller=new AbortController,this.serviceOrigin=n.config.get("ckbox.serviceOrigin"),this.assetsOrigin=n.config.get("ckbox.assetsOrigin")}async getAvailableCategories(t=0){const e=new URL("categories",this.serviceOrigin);return e.searchParams.set("limit",50..toString()),e.searchParams.set("offset",t.toString()),this._sendHttpRequest({url:e}).then((async e=>{if(e.totalCount-(t+50)>0){const n=await this.getAvailableCategories(t+50);return[...e.items,...n]}return e.items})).catch((()=>{this.controller.signal.throwIfAborted(),d("ckbox-fetch-category-http-error")}))}async getCategoryIdForFile(t){const e=Rk(t.name),n=await this.getAvailableCategories();if(!n)return null;const o=this.editor.config.get("ckbox.defaultUploadCategories");if(o){const t=Object.keys(o).find((t=>o[t].includes(e)));if(t){const e=n.find((e=>e.id===t||e.name===t));return e?e.id:null}}const i=n.find((t=>t.extensions.includes(e)));return i?i.id:null}async upload(){const t=this.editor.t,e=t("Cannot determine a category for the uploaded file."),n=await this.loader.file,o=await this.getCategoryIdForFile(n);if(!o)return Promise.reject(e);const i=new URL("assets",this.serviceOrigin),r=new FormData;r.append("categoryId",o),r.append("file",n);const s={method:"POST",url:i,data:r,onUploadProgress:t=>{t.lengthComputable&&(this.loader.uploadTotal=t.total,this.loader.uploaded=t.loaded)}};return this._sendHttpRequest(s).then((async t=>{const e=await this._getImageWidth(),o=Rk(n.name),i=Tk({token:this.token,id:t.id,origin:this.assetsOrigin,width:e,extension:o});return{ckboxImageId:t.id,default:i.imageFallbackUrl,sources:i.imageSources}})).catch((()=>{const e=t("Cannot upload file:")+` ${n.name}.`;return Promise.reject(e)}))}abort(){this.controller.abort()}_sendHttpRequest(t){const{url:e,data:n,onUploadProgress:o}=t,i=t.method||"GET",r=this.controller.signal,s=new XMLHttpRequest;s.open(i,e.toString(),!0),s.setRequestHeader("Authorization",this.token.value),s.setRequestHeader("CKBox-Version","CKEditor 5"),s.responseType="json";const a=()=>{s.abort()};return new Promise(((t,e)=>{r.addEventListener("abort",a),s.addEventListener("loadstart",(()=>{r.addEventListener("abort",a)})),s.addEventListener("loadend",(()=>{r.removeEventListener("abort",a)})),s.addEventListener("error",(()=>{e()})),s.addEventListener("abort",(()=>{e()})),s.addEventListener("load",(async()=>{const n=s.response;return!n||n.statusCode>=400?e(n&&n.message):t(n)})),o&&s.upload.addEventListener("progress",(t=>{o(t)})),s.send(n)}))}_getImageWidth(){return new Promise((t=>{const e=new Image;e.onload=()=>{URL.revokeObjectURL(e.src),t(e.width)},e.src=this.loader.data}))}}function Rk(t){return t.match(/\.(?[^.]+)$/).groups.ext}class jk extends F{static get pluginName(){return"CKBoxEditing"}static get requires(){return["CloudServices","LinkEditing","PictureEditing",Lk]}async init(){const t=this.editor,e=!!t.config.get("ckbox"),n=!!window.CKBox;if(!e&&!n)return;this._initConfig();const o=t.plugins.get("CloudServicesCore"),i=t.config.get("ckbox.tokenUrl"),r=t.config.get("cloudServices.tokenUrl");this._token=i===r?t.plugins.get("CloudServices").token:await o.createToken(i).init(),t.config.get("ckbox.ignoreDataId")||(this._initSchema(),this._initConversion(),this._initFixers()),n&&t.commands.add("ckbox",new Nk(t))}getToken(){return this._token}_initConfig(){const t=this.editor;t.config.define("ckbox",{serviceOrigin:"https://api.ckbox.io",assetsOrigin:"https://ckbox.cloud",defaultUploadCategories:null,ignoreDataId:!1,language:t.locale.uiLanguage,theme:"default",tokenUrl:t.config.get("cloudServices.tokenUrl")});if(!t.config.get("ckbox.tokenUrl"))throw new c("ckbox-plugin-missing-token-url",this);t.plugins.has("ImageBlockEditing")||t.plugins.has("ImageInlineEditing")||d("ckbox-plugin-image-feature-missing",t)}_initSchema(){const t=this.editor.model.schema;t.extend("$text",{allowAttributes:"ckboxLinkId"}),t.isRegistered("imageBlock")&&t.extend("imageBlock",{allowAttributes:["ckboxImageId","ckboxLinkId"]}),t.isRegistered("imageInline")&&t.extend("imageInline",{allowAttributes:["ckboxImageId","ckboxLinkId"]}),t.addAttributeCheck(((t,e)=>{if(!!!t.last.getAttribute("linkHref")&&"ckboxLinkId"===e)return!1}))}_initConversion(){const t=this.editor;t.conversion.for("downcast").add((t=>{t.on("attribute:ckboxLinkId:imageBlock",((t,e,n)=>{const{writer:o,mapper:i,consumable:r}=n;if(!r.consume(e.item,t.name))return;const s=[...i.toViewElement(e.item).getChildren()].find((t=>"a"===t.name));s&&(e.item.hasAttribute("ckboxLinkId")?o.setAttribute("data-ckbox-resource-id",e.item.getAttribute("ckboxLinkId"),s):o.removeAttribute("data-ckbox-resource-id",s))}),{priority:"low"}),t.on("attribute:ckboxLinkId",((t,e,n)=>{const{writer:o,mapper:i,consumable:r}=n;if(r.consume(e.item,t.name)){if(e.attributeOldValue){const t=Vk(o,e.attributeOldValue);o.unwrap(i.toViewRange(e.range),t)}if(e.attributeNewValue){const t=Vk(o,e.attributeNewValue);if(e.item.is("selection")){const e=o.document.selection;o.wrap(e.getFirstRange(),t)}else o.wrap(i.toViewRange(e.range),t)}}}),{priority:"low"})})),t.conversion.for("upcast").add((t=>{t.on("element:a",((t,e,n)=>{const{writer:o,consumable:i}=n;if(!e.viewItem.getAttribute("href"))return;if(!i.consume(e.viewItem,{attributes:["data-ckbox-resource-id"]}))return;const r=e.viewItem.getAttribute("data-ckbox-resource-id");if(r)if(e.modelRange)for(let t of e.modelRange.getItems())t.is("$textProxy")&&(t=t.textNode),Hk(t)&&o.setAttribute("ckboxLinkId",r,t);else{const t=e.modelCursor.nodeBefore||e.modelCursor.parent;o.setAttribute("ckboxLinkId",r,t)}}),{priority:"low"})})),t.conversion.for("downcast").attributeToAttribute({model:"ckboxImageId",view:"data-ckbox-resource-id"}),t.conversion.for("upcast").elementToAttribute({model:{key:"ckboxImageId",value:t=>t.getAttribute("data-ckbox-resource-id")},view:{attributes:{"data-ckbox-resource-id":/[\s\S]+/}}})}_initFixers(){const t=this.editor,e=t.model,n=e.document.selection;e.document.registerPostFixer(function(t){return e=>{let n=!1;const o=t.model,i=t.commands.get("ckbox");if(!i)return n;for(const t of o.document.differ.getChanges()){if("insert"!==t.type&&"attribute"!==t.type)continue;const o="insert"===t.type?new ic(t.position,t.position.getShiftedBy(t.length)):t.range,r="attribute"===t.type&&"linkHref"===t.attributeKey&&null===t.attributeNewValue;for(const t of o.getItems()){if(r&&t.hasAttribute("ckboxLinkId")){e.removeAttribute("ckboxLinkId",t),n=!0;continue}const o=Fk(t,i._chosenAssets);for(const i of o){const o="image"===i.type?"ckboxImageId":"ckboxLinkId";i.id!==t.getAttribute(o)&&(e.setAttribute(o,i.id,t),n=!0)}}}return n}}(t)),e.document.registerPostFixer(function(t){return e=>{!t.hasAttribute("linkHref")&&t.hasAttribute("ckboxLinkId")&&e.removeSelectionAttribute("ckboxLinkId")}}(n))}}function Fk(t,e){const n=t.is("element","imageInline")||t.is("element","imageBlock"),o=t.hasAttribute("linkHref");return[...e].filter((e=>"image"===e.type&&n?e.attributes.imageFallbackUrl===t.getAttribute("src"):"link"===e.type&&o?e.attributes.linkHref===t.getAttribute("linkHref"):void 0))}function Vk(t,e){const n=t.createAttributeElement("a",{"data-ckbox-resource-id":e},{priority:5});return t.setCustomProperty("link",!0,n),n}function Hk(t){return!!t.is("$text")||!(!t.is("element","imageInline")&&!t.is("element","imageBlock"))}class Uk extends F{static get pluginName(){return"CKFinderUI"}init(){const t=this.editor,e=t.ui.componentFactory,n=t.t;e.add("ckfinder",(e=>{const o=t.commands.get("ckfinder"),i=new Nh(e);return i.set({label:n("Insert image or file"),icon:'',tooltip:!0}),i.bind("isEnabled").to(o),i.on("execute",(()=>{t.execute("ckfinder"),t.editing.view.focus()})),i}))}}class Gk extends H{constructor(t){super(t),this.stopListening(this.editor.model.document,"change"),this.listenTo(this.editor.model.document,"change",(()=>this.refresh()),{priority:"low"})}refresh(){const t=this.editor.commands.get("insertImage"),e=this.editor.commands.get("link");this.isEnabled=t.isEnabled||e.isEnabled}execute(){const t=this.editor,e=this.editor.config.get("ckfinder.openerMethod")||"modal";if("popup"!=e&&"modal"!=e)throw new c("ckfinder-unknown-openermethod",t);const n=this.editor.config.get("ckfinder.options")||{};n.chooseFiles=!0;const o=n.onInit;n.language||(n.language=t.locale.uiLanguage),n.onInit=e=>{o&&o(e),e.on("files:choose",(n=>{const o=n.data.files.toArray(),i=o.filter((t=>!t.isImage())),r=o.filter((t=>t.isImage()));for(const e of i)t.execute("link",e.getUrl());const s=[];for(const t of r){const n=t.getUrl();s.push(n||e.request("file:getProxyUrl",{file:t}))}s.length&&Wk(t,s)})),e.on("file:choose:resizedImage",(e=>{const n=e.data.resizedUrl;if(n)Wk(t,[n]);else{const e=t.plugins.get("Notification"),n=t.locale.t;e.showWarning(n("Could not obtain resized image URL."),{title:n("Selecting resized image failed"),namespace:"ckfinder"})}}))},window.CKFinder[e](n)}}function Wk(t,e){if(t.commands.get("insertImage").isEnabled)t.execute("insertImage",{source:e});else{const e=t.plugins.get("Notification"),n=t.locale.t;e.showWarning(n("Could not insert image at the current position."),{title:n("Inserting image failed"),namespace:"ckfinder"})}}class qk extends F{static get pluginName(){return"CKFinderEditing"}static get requires(){return[Vg,"LinkEditing"]}init(){const t=this.editor;if(!t.plugins.has("ImageBlockEditing")&&!t.plugins.has("ImageInlineEditing"))throw new c("ckfinder-missing-image-plugin",t);t.commands.add("ckfinder",new Gk(t))}}class $k extends F{static get pluginName(){return"CloudServicesUploadAdapter"}static get requires(){return["CloudServices",Wf]}init(){const t=this.editor,e=t.plugins.get("CloudServices"),n=e.token,o=e.uploadUrl;n&&(this._uploadGateway=t.plugins.get("CloudServicesCore").createUploadGateway(n,o),t.plugins.get(Wf).createUploadAdapter=t=>new Yk(this._uploadGateway,t))}}class Yk{constructor(t,e){this.uploadGateway=t,this.loader=e}upload(){return this.loader.file.then((t=>(this.fileUploader=this.uploadGateway.upload(t),this.fileUploader.on("progress",((t,e)=>{this.loader.uploadTotal=e.total,this.loader.uploaded=e.uploaded})),this.fileUploader.send())))}abort(){this.fileUploader.abort()}}class Kk extends H{refresh(){const t=this.editor.model,e=Ca(t.document.selection.getSelectedBlocks());this.value=!!e&&e.is("element","paragraph"),this.isEnabled=!!e&&Qk(e,t.schema)}execute(t={}){const e=this.editor.model,n=e.document;e.change((o=>{const i=(t.selection||n.selection).getSelectedBlocks();for(const t of i)!t.is("element","paragraph")&&Qk(t,e.schema)&&o.rename(t,"paragraph")}))}}function Qk(t,e){return e.checkChild(t.parent,"paragraph")&&!e.isObject(t)}class Zk extends H{execute(t){const e=this.editor.model,n=t.attributes;let o=t.position;e.change((t=>{const i=t.createElement("paragraph");if(n&&e.schema.setAllowedAttributes(i,n,t),!e.schema.checkChild(o.parent,i)){const n=e.schema.findAllowedParent(o,i);if(!n)return;o=t.split(o,n).position}e.insertContent(i,o),t.setSelection(i,"in")}))}}class Jk extends F{static get pluginName(){return"Paragraph"}init(){const t=this.editor,e=t.model;t.commands.add("paragraph",new Kk(t)),t.commands.add("insertParagraph",new Zk(t)),e.schema.register("paragraph",{inheritAllFrom:"$block"}),t.conversion.elementToElement({model:"paragraph",view:"p"}),t.conversion.for("upcast").elementToElement({model:(t,{writer:e})=>Jk.paragraphLikeElements.has(t.name)?t.isEmpty?null:e.createElement("paragraph"):null,view:/.+/,converterPriority:"low"})}}Jk.paragraphLikeElements=new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td","th"]);class Xk extends H{constructor(t,e){super(t),this.modelElements=e}refresh(){const t=Ca(this.editor.model.document.selection.getSelectedBlocks());this.value=!!t&&this.modelElements.includes(t.name)&&t.name,this.isEnabled=!!t&&this.modelElements.some((e=>tb(t,e,this.editor.model.schema)))}execute(t){const e=this.editor.model,n=e.document,o=t.value;e.change((t=>{const i=Array.from(n.selection.getSelectedBlocks()).filter((t=>tb(t,o,e.schema)));for(const e of i)e.is("element",o)||t.rename(e,o)}))}}function tb(t,e,n){return n.checkChild(t.parent,e)&&!n.isObject(t)}const eb="paragraph";class nb extends F{static get pluginName(){return"HeadingEditing"}constructor(t){super(t),t.config.define("heading",{options:[{model:"paragraph",title:"Paragraph",class:"ck-heading_paragraph"},{model:"heading1",view:"h2",title:"Heading 1",class:"ck-heading_heading1"},{model:"heading2",view:"h3",title:"Heading 2",class:"ck-heading_heading2"},{model:"heading3",view:"h4",title:"Heading 3",class:"ck-heading_heading3"}]})}static get requires(){return[Jk]}init(){const t=this.editor,e=t.config.get("heading.options"),n=[];for(const o of e)o.model!==eb&&(t.model.schema.register(o.model,{inheritAllFrom:"$block"}),t.conversion.elementToElement(o),n.push(o.model));this._addDefaultH1Conversion(t),t.commands.add("heading",new Xk(t,n))}afterInit(){const t=this.editor,e=t.commands.get("enter"),n=t.config.get("heading.options");e&&this.listenTo(e,"afterExecute",((e,o)=>{const i=t.model.document.selection.getFirstPosition().parent;n.some((t=>i.is("element",t.model)))&&!i.is("element",eb)&&0===i.childCount&&o.writer.rename(i,eb)}))}_addDefaultH1Conversion(t){t.conversion.for("upcast").elementToElement({model:"heading1",view:"h1",converterPriority:s.get("low")+1})}}var ob=n(8733),ib={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(ob.Z,ib);ob.Z.locals;class rb extends F{static get pluginName(){return"HeadingUI"}init(){const t=this.editor,e=t.t,n=function(t){const e=t.t,n={Paragraph:e("Paragraph"),"Heading 1":e("Heading 1"),"Heading 2":e("Heading 2"),"Heading 3":e("Heading 3"),"Heading 4":e("Heading 4"),"Heading 5":e("Heading 5"),"Heading 6":e("Heading 6")};return t.config.get("heading.options").map((t=>{const e=n[t.title];return e&&e!=t.title&&(t.title=e),t}))}(t),o=e("Choose heading"),i=e("Heading");t.ui.componentFactory.add("heading",(e=>{const r={},s=new fo,a=t.commands.get("heading"),c=t.commands.get("paragraph"),l=[a];for(const t of n){const e={type:"button",model:new Hg({label:t.title,class:t.class,withText:!0})};"paragraph"===t.model?(e.model.bind("isOn").to(c,"value"),e.model.set("commandName","paragraph"),l.push(c)):(e.model.bind("isOn").to(a,"value",(e=>e===t.model)),e.model.set({commandName:"heading",commandValue:t.model})),s.add(e),r[t.model]=t.title}const d=kg(e);return wg(d,s),d.buttonView.set({isOn:!1,withText:!0,tooltip:i}),d.extendTemplate({attributes:{class:["ck-heading-dropdown"]}}),d.bind("isEnabled").toMany(l,"isEnabled",((...t)=>t.some((t=>t)))),d.buttonView.bind("label").to(a,"value",c,"value",((t,e)=>{const n=t||e&&"paragraph";return r[n]?r[n]:o})),this.listenTo(d,"execute",(e=>{t.execute(e.source.commandName,e.source.commandValue?{value:e.source.commandValue}:void 0),t.editing.view.focus()})),d}))}}class sb extends F{static get requires(){return[Yg]}static get pluginName(){return"WidgetToolbarRepository"}init(){const t=this.editor;if(t.plugins.has("BalloonToolbar")){const e=t.plugins.get("BalloonToolbar");this.listenTo(e,"show",(e=>{(function(t){const e=t.getSelectedElement();return!(!e||!Im(e))})(t.editing.view.document.selection)&&e.stop()}),{priority:"high"})}this._toolbarDefinitions=new Map,this._balloon=this.editor.plugins.get("ContextualBalloon"),this.on("change:isEnabled",(()=>{this._updateToolbarsVisibility()})),this.listenTo(t.ui,"update",(()=>{this._updateToolbarsVisibility()})),this.listenTo(t.ui.focusTracker,"change:isFocused",(()=>{this._updateToolbarsVisibility()}),{priority:"low"})}destroy(){super.destroy();for(const t of this._toolbarDefinitions.values())t.view.destroy()}register(t,{ariaLabel:e,items:n,getRelatedElement:o,balloonClassName:i="ck-toolbar-container"}){if(!n.length)return void l("widget-toolbar-no-items",{toolbarId:t});const r=this.editor,s=r.t,a=new ig(r.locale);if(a.ariaLabel=e||s("Widget toolbar"),this._toolbarDefinitions.has(t))throw new c("widget-toolbar-duplicated",this,{toolbarId:t});a.fillFromConfig(n,r.ui.componentFactory);const d={view:a,getRelatedElement:o,balloonClassName:i};r.ui.addToolbar(a,{isContextual:!0,beforeFocus:()=>{const t=o(r.editing.view.document.selection);t&&this._showToolbar(d,t)},afterBlur:()=>{this._hideToolbar(d)}}),this._toolbarDefinitions.set(t,d)}_updateToolbarsVisibility(){let t=0,e=null,n=null;for(const o of this._toolbarDefinitions.values()){const i=o.getRelatedElement(this.editor.editing.view.document.selection);if(this.isEnabled&&i)if(this.editor.ui.focusTracker.isFocused){const r=i.getAncestors().length;r>t&&(t=r,e=i,n=o)}else this._isToolbarVisible(o)&&this._hideToolbar(o);else this._isToolbarInBalloon(o)&&this._hideToolbar(o)}n&&this._showToolbar(n,e)}_hideToolbar(t){this._balloon.remove(t.view),this.stopListening(this._balloon,"change:visibleView")}_showToolbar(t,e){this._isToolbarVisible(t)?ab(this.editor,e):this._isToolbarInBalloon(t)||(this._balloon.add({view:t.view,position:cb(this.editor,e),balloonClassName:t.balloonClassName}),this.listenTo(this._balloon,"change:visibleView",(()=>{for(const t of this._toolbarDefinitions.values())if(this._isToolbarVisible(t)){const e=t.getRelatedElement(this.editor.editing.view.document.selection);ab(this.editor,e)}})))}_isToolbarVisible(t){return this._balloon.visibleView===t.view}_isToolbarInBalloon(t){return this._balloon.hasView(t.view)}}function ab(t,e){const n=t.plugins.get("ContextualBalloon"),o=cb(t,e);n.updatePosition(o)}function cb(t,e){const n=t.editing.view,o=sh.defaultPositions;return{target:n.domConverter.mapViewToDom(e),positions:[o.northArrowSouth,o.northArrowSouthWest,o.northArrowSouthEast,o.southArrowNorth,o.southArrowNorthWest,o.southArrowNorthEast,o.viewportStickyNorth]}}class lb extends z{constructor(t){super(),this.set("activeHandlePosition",null),this.set("proposedWidthPercents",null),this.set("proposedWidth",null),this.set("proposedHeight",null),this.set("proposedHandleHostWidth",null),this.set("proposedHandleHostHeight",null),this._options=t,this._referenceCoordinates=null}get originalWidth(){return this._originalWidth}get originalHeight(){return this._originalHeight}get originalWidthPercents(){return this._originalWidthPercents}get aspectRatio(){return this._aspectRatio}begin(t,e,n){const o=new Sa(e);this.activeHandlePosition=function(t){const e=["top-left","top-right","bottom-right","bottom-left"];for(const n of e)if(t.classList.contains(db(n)))return n}(t),this._referenceCoordinates=function(t,e){const n=new Sa(t),o=e.split("-"),i={x:"right"==o[1]?n.right:n.left,y:"bottom"==o[0]?n.bottom:n.top};return i.x+=t.ownerDocument.defaultView.scrollX,i.y+=t.ownerDocument.defaultView.scrollY,i}(e,function(t){const e=t.split("-"),n={top:"bottom",bottom:"top",left:"right",right:"left"};return`${n[e[0]]}-${n[e[1]]}`}(this.activeHandlePosition)),this._originalWidth=o.width,this._originalHeight=o.height,this._aspectRatio=o.width/o.height;const i=n.style.width;i&&i.match(/^\d+(\.\d*)?%$/)?this._originalWidthPercents=parseFloat(i):this._originalWidthPercents=function(t,e){const n=t.parentElement,o=parseFloat(n.ownerDocument.defaultView.getComputedStyle(n).width);return e.width/o*100}(n,o)}update(t){this.proposedWidth=t.width,this.proposedHeight=t.height,this.proposedWidthPercents=t.widthPercents,this.proposedHandleHostWidth=t.handleHostWidth,this.proposedHandleHostHeight=t.handleHostHeight}}function db(t){return`ck-widget__resizer__handle-${t}`}class ub extends Zu{constructor(){super();const t=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-size-view",t.to("_viewPosition",(t=>t?`ck-orientation-${t}`:""))],style:{display:t.if("_isVisible","none",(t=>!t))}},children:[{text:t.to("_label")}]})}_bindToState(t,e){this.bind("_isVisible").to(e,"proposedWidth",e,"proposedHeight",((t,e)=>null!==t&&null!==e)),this.bind("_label").to(e,"proposedHandleHostWidth",e,"proposedHandleHostHeight",e,"proposedWidthPercents",((e,n,o)=>"px"===t.unit?`${e}×${n}`:`${o}%`)),this.bind("_viewPosition").to(e,"activeHandlePosition",e,"proposedHandleHostWidth",e,"proposedHandleHostHeight",((t,e,n)=>e<50||n<50?"above-center":t))}_dismiss(){this.unbind(),this._isVisible=!1}}class hb extends z{constructor(t){super(),this._options=t,this._viewResizerWrapper=null,this.set("isEnabled",!0),this.set("isSelected",!1),this.bind("isVisible").to(this,"isEnabled",this,"isSelected",((t,e)=>t&&e)),this.decorate("begin"),this.decorate("cancel"),this.decorate("commit"),this.decorate("updateSize"),this.on("commit",(t=>{this.state.proposedWidth||this.state.proposedWidthPercents||(this._cleanup(),t.stop())}),{priority:"high"})}get state(){return this._state}show(){this._options.editor.editing.view.change((t=>{t.removeClass("ck-hidden",this._viewResizerWrapper)}))}hide(){this._options.editor.editing.view.change((t=>{t.addClass("ck-hidden",this._viewResizerWrapper)}))}attach(){const t=this,e=this._options.viewElement;this._options.editor.editing.view.change((n=>{const o=n.createUIElement("div",{class:"ck ck-reset_all ck-widget__resizer"},(function(e){const n=this.toDomElement(e);return t._appendHandles(n),t._appendSizeUI(n),n}));n.insert(n.createPositionAt(e,"end"),o),n.addClass("ck-widget_with-resizer",e),this._viewResizerWrapper=o,this.isVisible||this.hide()})),this.on("change:isVisible",(()=>{this.isVisible?(this.show(),this.redraw()):this.hide()}))}begin(t){this._state=new lb(this._options),this._sizeView._bindToState(this._options,this.state),this._initialViewWidth=this._options.viewElement.getStyle("width"),this.state.begin(t,this._getHandleHost(),this._getResizeHost())}updateSize(t){const e=this._proposeNewSize(t);this._options.editor.editing.view.change((t=>{const n=this._options.unit||"%",o=("%"===n?e.widthPercents:e.width)+n;t.setStyle("width",o,this._options.viewElement)}));const n=this._getHandleHost(),o=new Sa(n),i=Math.round(o.width),r=Math.round(o.height),s=new Sa(n);e.width=Math.round(s.width),e.height=Math.round(s.height),this.redraw(o),this.state.update({...e,handleHostWidth:i,handleHostHeight:r})}commit(){const t=this._options.unit||"%",e=("%"===t?this.state.proposedWidthPercents:this.state.proposedWidth)+t;this._options.editor.editing.view.change((()=>{this._cleanup(),this._options.onCommit(e)}))}cancel(){this._cleanup()}destroy(){this.cancel()}redraw(t){const e=this._domResizerWrapper;if(!((n=e)&&n.ownerDocument&&n.ownerDocument.contains(n)))return;var n;const o=e.parentElement,i=this._getHandleHost(),r=this._viewResizerWrapper,s=[r.getStyle("width"),r.getStyle("height"),r.getStyle("left"),r.getStyle("top")];let a;if(o.isSameNode(i)){const e=t||new Sa(i);a=[e.width+"px",e.height+"px",void 0,void 0]}else a=[i.offsetWidth+"px",i.offsetHeight+"px",i.offsetLeft+"px",i.offsetTop+"px"];"same"!==Io(s,a)&&this._options.editor.editing.view.change((t=>{t.setStyle({width:a[0],height:a[1],left:a[2],top:a[3]},r)}))}containsHandle(t){return this._domResizerWrapper.contains(t)}static isResizeHandle(t){return t.classList.contains("ck-widget__resizer__handle")}_cleanup(){this._sizeView._dismiss();this._options.editor.editing.view.change((t=>{t.setStyle("width",this._initialViewWidth,this._options.viewElement)}))}_proposeNewSize(t){const e=this.state,n={x:(o=t).pageX,y:o.pageY};var o;const i=!this._options.isCentered||this._options.isCentered(this),r={x:e._referenceCoordinates.x-(n.x+e.originalWidth),y:n.y-e.originalHeight-e._referenceCoordinates.y};i&&e.activeHandlePosition.endsWith("-right")&&(r.x=n.x-(e._referenceCoordinates.x+e.originalWidth)),i&&(r.x*=2);let s=Math.abs(e.originalWidth+r.x),a=Math.abs(e.originalHeight+r.y);return"width"==(s/e.aspectRatio>a?"width":"height")?a=s/e.aspectRatio:s=a*e.aspectRatio,{width:Math.round(s),height:Math.round(a),widthPercents:Math.min(Math.round(e.originalWidthPercents/e.originalWidth*s*100)/100,100)}}_getResizeHost(){const t=this._domResizerWrapper.parentElement;return this._options.getResizeHost(t)}_getHandleHost(){const t=this._domResizerWrapper.parentElement;return this._options.getHandleHost(t)}get _domResizerWrapper(){return this._options.editor.editing.view.domConverter.mapViewToDom(this._viewResizerWrapper)}_appendHandles(t){const e=["top-left","top-right","bottom-right","bottom-left"];for(const o of e)t.appendChild(new Iu({tag:"div",attributes:{class:"ck-widget__resizer__handle "+(n=o,`ck-widget__resizer__handle-${n}`)}}).render());var n}_appendSizeUI(t){this._sizeView=new ub,this._sizeView.render(),t.appendChild(this._sizeView.element)}}var gb=n(8506),mb={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(gb.Z,mb);gb.Z.locals;class pb extends F{static get pluginName(){return"WidgetResize"}init(){const t=this.editor.editing,e=Ao.window.document;this.set("selectedResizer",null),this.set("_activeResizer",null),this._resizers=new Map,t.view.addObserver(Wd),this._observer=new _s,this.listenTo(t.view.document,"mousedown",this._mouseDownListener.bind(this),{priority:"high"}),this._observer.listenTo(e,"mousemove",this._mouseMoveListener.bind(this)),this._observer.listenTo(e,"mouseup",this._mouseUpListener.bind(this)),this._redrawSelectedResizerThrottled=Xm((()=>this.redrawSelectedResizer()),200),this.editor.ui.on("update",this._redrawSelectedResizerThrottled),this.editor.model.document.on("change",(()=>{for(const[t,e]of this._resizers)t.isAttached()||(this._resizers.delete(t),e.destroy())}),{priority:"lowest"}),this._observer.listenTo(Ao.window,"resize",this._redrawSelectedResizerThrottled);const n=this.editor.editing.view.document.selection;n.on("change",(()=>{const t=n.getSelectedElement(),e=this.getResizerByViewElement(t)||null;e?this.select(e):this.deselect()}))}redrawSelectedResizer(){this.selectedResizer&&this.selectedResizer.isVisible&&this.selectedResizer.redraw()}destroy(){super.destroy(),this._observer.stopListening();for(const t of this._resizers.values())t.destroy();this._redrawSelectedResizerThrottled.cancel()}select(t){this.deselect(),this.selectedResizer=t,this.selectedResizer.isSelected=!0}deselect(){this.selectedResizer&&(this.selectedResizer.isSelected=!1),this.selectedResizer=null}attachTo(t){const e=new hb(t),n=this.editor.plugins;if(e.attach(),n.has("WidgetToolbarRepository")){const t=n.get("WidgetToolbarRepository");e.on("begin",(()=>{t.forceDisabled("resize")}),{priority:"lowest"}),e.on("cancel",(()=>{t.clearForceDisabled("resize")}),{priority:"highest"}),e.on("commit",(()=>{t.clearForceDisabled("resize")}),{priority:"highest"})}this._resizers.set(t.viewElement,e);const o=this.editor.editing.view.document.selection.getSelectedElement();return this.getResizerByViewElement(o)==e&&this.select(e),e}getResizerByViewElement(t){return this._resizers.get(t)}_getResizerByHandle(t){for(const e of this._resizers.values())if(e.containsHandle(t))return e}_mouseDownListener(t,e){const n=e.domTarget;hb.isResizeHandle(n)&&(this._activeResizer=this._getResizerByHandle(n)||null,this._activeResizer&&(this._activeResizer.begin(n),t.stop(),e.preventDefault()))}_mouseMoveListener(t,e){this._activeResizer&&this._activeResizer.updateSize(e)}_mouseUpListener(){this._activeResizer&&(this._activeResizer.commit(),this._activeResizer=null)}}class fb extends H{refresh(){const t=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!t,this.isEnabled&&t.hasAttribute("alt")?this.value=t.getAttribute("alt"):this.value=!1}execute(t){const e=this.editor,n=e.plugins.get("ImageUtils"),o=e.model,i=n.getClosestSelectedImageElement(o.document.selection);o.change((e=>{e.setAttribute("alt",t.newValue,i)}))}}function kb(t){return t.createContainerElement("figure",{class:"image"},[t.createEmptyElement("img"),t.createSlot()])}function bb(t,e){const n=t.plugins.get("ImageUtils"),o=t.plugins.has("ImageInlineEditing")&&t.plugins.has("ImageBlockEditing");return t=>{if(!n.isInlineImageView(t))return null;if(!o)return i(t);return(t.findAncestor(n.isBlockImageView)?"imageBlock":"imageInline")!==e?null:i(t)};function i(t){const e={name:!0};return t.hasAttribute("src")&&(e.attributes=["src"]),e}}function wb(t,e){const n=Ca(e.getSelectedBlocks());return!n||t.isObject(n)||n.isEmpty&&"listItem"!=n.name?"imageBlock":"imageInline"}class Ab extends F{static get pluginName(){return"ImageUtils"}isImage(t){return this.isInlineImage(t)||this.isBlockImage(t)}isInlineImageView(t){return!!t&&t.is("element","img")}isBlockImageView(t){return!!t&&t.is("element","figure")&&t.hasClass("image")}insertImage(t={},e=null,n=null){const o=this.editor,i=o.model,r=i.document.selection;n=_b(o,e||r,n),t={...Object.fromEntries(r.getAttributes()),...t};for(const e in t)i.schema.checkAttribute(n,e)||delete t[e];return i.change((o=>{const r=o.createElement(n,t);return i.insertObject(r,e,null,{setSelection:"on",findOptimalPosition:!e&&"imageInline"!=n}),r.parent?r:null}))}getClosestSelectedImageWidget(t){const e=t.getFirstPosition();if(!e)return null;const n=t.getSelectedElement();if(n&&this.isImageWidget(n))return n;let o=e.parent;for(;o;){if(o.is("element")&&this.isImageWidget(o))return o;o=o.parent}return null}getClosestSelectedImageElement(t){const e=t.getSelectedElement();return this.isImage(e)?e:t.getFirstPosition().findAncestor("imageBlock")}isImageAllowed(){const t=this.editor.model.document.selection;return function(t,e){if("imageBlock"==_b(t,e)){const n=function(t,e){const n=Pm(t,e).start.parent;if(n.isEmpty&&!n.is("element","$root"))return n.parent;return n}(e,t.model);if(t.model.schema.checkChild(n,"imageBlock"))return!0}else if(t.model.schema.checkChild(e.focus,"imageInline"))return!0;return!1}(this.editor,t)&&function(t){return[...t.focus.getAncestors()].every((t=>!t.is("element","imageBlock")))}(t)}toImageWidget(t,e,n){e.setCustomProperty("image",!0,t);return Tm(t,e,{label:()=>{const e=this.findViewImgElement(t).getAttribute("alt");return e?`${e} ${n}`:n}})}isImageWidget(t){return!!t.getCustomProperty("image")&&Im(t)}isBlockImage(t){return!!t&&t.is("element","imageBlock")}isInlineImage(t){return!!t&&t.is("element","imageInline")}findViewImgElement(t){if(this.isInlineImageView(t))return t;const e=this.editor.editing.view;for(const{item:n}of e.createRangeIn(t))if(this.isInlineImageView(n))return n}}function _b(t,e,n){const o=t.model.schema,i=t.config.get("image.insert.type");return t.plugins.has("ImageBlockEditing")?t.plugins.has("ImageInlineEditing")?n||("inline"===i?"imageInline":"block"===i?"imageBlock":e.is("selection")?wb(o,e):o.checkChild(e,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}class Cb extends F{static get requires(){return[Ab]}static get pluginName(){return"ImageTextAlternativeEditing"}init(){this.editor.commands.add("imageTextAlternative",new fb(this.editor))}}var vb=n(1905),yb={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(vb.Z,yb);vb.Z.locals;var xb=n(6764),Eb={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(xb.Z,Eb);xb.Z.locals;class Db extends Zu{constructor(t){super(t);const e=this.locale.t;this.focusTracker=new va,this.keystrokes=new ya,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(e("Save"),Ah.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(e("Cancel"),Ah.cancel,"ck-button-cancel","cancel"),this._focusables=new Du,this._focusCycler=new Qh({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:[this.labeledInput,this.saveButtonView,this.cancelButtonView]}),vh(this)}render(){super.render(),this.keystrokes.listenTo(this.element),yh({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createButton(t,e,n,o){const i=new Nh(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),o&&i.delegate("execute").to(this,o),i}_createLabeledInputView(){const t=this.locale.t,e=new Rg(this.locale,jg);return e.label=t("Text alternative"),e}}function Ib(t){const e=t.editing.view,n=sh.defaultPositions,o=t.plugins.get("ImageUtils");return{target:e.domConverter.mapViewToDom(o.getClosestSelectedImageWidget(e.document.selection)),positions:[n.northArrowSouth,n.northArrowSouthWest,n.northArrowSouthEast,n.southArrowNorth,n.southArrowNorthWest,n.southArrowNorthEast,n.viewportStickyNorth]}}class Tb extends F{static get requires(){return[Yg]}static get pluginName(){return"ImageTextAlternativeUI"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const t=this.editor,e=t.t;t.ui.componentFactory.add("imageTextAlternative",(n=>{const o=t.commands.get("imageTextAlternative"),i=new Nh(n);return i.set({label:e("Change image text alternative"),icon:Ah.lowVision,tooltip:!0}),i.bind("isEnabled").to(o,"isEnabled"),i.bind("isOn").to(o,"value",(t=>!!t)),this.listenTo(i,"execute",(()=>{this._showForm()})),i}))}_createForm(){const t=this.editor,e=t.editing.view.document,n=t.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new Db(t.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{t.execute("imageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this._form.keystrokes.set("Esc",((t,e)=>{this._hideForm(!0),e()})),this.listenTo(t.ui,"update",(()=>{n.getClosestSelectedImageWidget(e.selection)?this._isVisible&&function(t){const e=t.plugins.get("ContextualBalloon");if(t.plugins.get("ImageUtils").getClosestSelectedImageWidget(t.editing.view.document.selection)){const n=Ib(t);e.updatePosition(n)}}(t):this._hideForm(!0)})),Ch({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const t=this.editor,e=t.commands.get("imageTextAlternative"),n=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:Ib(t)}),n.fieldView.value=n.fieldView.element.value=e.value||"",this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(t){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),t&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class Sb extends F{static get requires(){return[Cb,Tb]}static get pluginName(){return"ImageTextAlternative"}}function Mb(t,e){return t=>{t.on(`attribute:srcset:${e}`,n)};function n(e,n,o){if(!o.consumable.consume(n.item,e.name))return;const i=o.writer,r=o.mapper.toViewElement(n.item),s=t.findViewImgElement(r);if(null===n.attributeNewValue){const t=n.attributeOldValue;t.data&&(i.removeAttribute("srcset",s),i.removeAttribute("sizes",s),t.width&&i.removeAttribute("width",s))}else{const t=n.attributeNewValue;t.data&&(i.setAttribute("srcset",t.data,s),i.setAttribute("sizes","100vw",s),t.width&&i.setAttribute("width",t.width,s))}}}function Nb(t,e,n){return t=>{t.on(`attribute:${n}:${e}`,o)};function o(e,n,o){if(!o.consumable.consume(n.item,e.name))return;const i=o.writer,r=o.mapper.toViewElement(n.item),s=t.findViewImgElement(r);i.setAttribute(n.attributeKey,n.attributeNewValue||"",s)}}class Bb extends ys{observe(t){this.listenTo(t,"load",((t,e)=>{const n=e.target;this.checkShouldIgnoreEventFromTarget(n)||"IMG"==n.tagName&&this._fireEvents(e)}),{useCapture:!0})}_fireEvents(t){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",t))}}class zb extends H{constructor(t){super(t);const e=t.config.get("image.insert.type");t.plugins.has("ImageBlockEditing")||"block"===e&&l("image-block-plugin-required"),t.plugins.has("ImageInlineEditing")||"inline"===e&&l("image-inline-plugin-required")}refresh(){this.isEnabled=this.editor.plugins.get("ImageUtils").isImageAllowed()}execute(t){const e=bo(t.source),n=this.editor.model.document.selection,o=this.editor.plugins.get("ImageUtils"),i=Object.fromEntries(n.getAttributes());e.forEach(((t,e)=>{const r=n.getSelectedElement();if("string"==typeof t&&(t={src:t}),e&&r&&o.isImage(r)){const e=this.editor.model.createPositionAfter(r);o.insertImage({...t,...i},e)}else o.insertImage({...t,...i})}))}}class Pb extends F{static get requires(){return[Ab]}static get pluginName(){return"ImageEditing"}init(){const t=this.editor,e=t.conversion;t.editing.view.addObserver(Bb),e.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:{key:"srcset",value:t=>{const e={data:t.getAttribute("srcset")};return t.hasAttribute("width")&&(e.width=t.getAttribute("width")),e}}});const n=new zb(t);t.commands.add("insertImage",n),t.commands.add("imageInsert",n)}}class Lb extends H{constructor(t,e){super(t),this._modelElementName=e}refresh(){const t=this.editor.plugins.get("ImageUtils"),e=t.getClosestSelectedImageElement(this.editor.model.document.selection);"imageBlock"===this._modelElementName?this.isEnabled=t.isInlineImage(e):this.isEnabled=t.isBlockImage(e)}execute(){const t=this.editor,e=this.editor.model,n=t.plugins.get("ImageUtils"),o=n.getClosestSelectedImageElement(e.document.selection),i=Object.fromEntries(o.getAttributes());return i.src||i.uploadId?e.change((t=>{const r=Array.from(e.markers).filter((t=>t.getRange().containsItem(o))),s=n.insertImage(i,e.createSelection(o,"on"),this._modelElementName);if(!s)return null;const a=t.createRangeOn(s);for(const e of r){const n=e.getRange(),o="$graveyard"!=n.root.rootName?n.getJoined(a,!0):a;t.updateMarker(e,{range:o})}return{oldElement:o,newElement:s}})):null}}class Ob extends F{static get requires(){return[Pb,Ab,sm]}static get pluginName(){return"ImageBlockEditing"}init(){const t=this.editor;t.model.schema.register("imageBlock",{inheritAllFrom:"$blockObject",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),t.plugins.has("ImageInlineEditing")&&(t.commands.add("imageTypeBlock",new Lb(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const t=this.editor,e=t.t,n=t.conversion,o=t.plugins.get("ImageUtils");n.for("dataDowncast").elementToStructure({model:"imageBlock",view:(t,{writer:e})=>kb(e)}),n.for("editingDowncast").elementToStructure({model:"imageBlock",view:(t,{writer:n})=>o.toImageWidget(kb(n),n,e("image widget"))}),n.for("downcast").add(Nb(o,"imageBlock","src")).add(Nb(o,"imageBlock","alt")).add(Mb(o,"imageBlock")),n.for("upcast").elementToElement({view:bb(t,"imageBlock"),model:(t,{writer:e})=>e.createElement("imageBlock",t.hasAttribute("src")?{src:t.getAttribute("src")}:null)}).add(function(t){return t=>{t.on("element:figure",e)};function e(e,n,o){if(!o.consumable.test(n.viewItem,{name:!0,classes:"image"}))return;const i=t.findViewImgElement(n.viewItem);if(!i||!o.consumable.test(i,{name:!0}))return;o.consumable.consume(n.viewItem,{name:!0,classes:"image"});const r=Ca(o.convertItem(i,n.modelCursor).modelRange.getItems());r?(o.convertChildren(n.viewItem,r),o.updateConversionResult(r,n)):o.consumable.revert(n.viewItem,{name:!0,classes:"image"})}}(o))}_setupClipboardIntegration(){const t=this.editor,e=t.model,n=t.editing.view,o=t.plugins.get("ImageUtils");this.listenTo(t.plugins.get("ClipboardPipeline"),"inputTransformation",((i,r)=>{const s=Array.from(r.content.getChildren());let a;if(!s.every(o.isInlineImageView))return;a=r.targetRanges?t.editing.mapper.toModelRange(r.targetRanges[0]):e.document.selection.getFirstRange();const c=e.createSelection(a);if("imageBlock"===wb(e.schema,c)){const t=new qd(n.document),e=s.map((e=>t.createElement("figure",{class:"image"},e)));r.content=t.createDocumentFragment(e)}}))}}var Rb=n(3508),jb={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Rb.Z,jb);Rb.Z.locals;class Fb extends F{static get requires(){return[Ob,Zm,Sb]}static get pluginName(){return"ImageBlock"}}class Vb extends F{static get requires(){return[Pb,Ab,sm]}static get pluginName(){return"ImageInlineEditing"}init(){const t=this.editor,e=t.model.schema;e.register("imageInline",{inheritAllFrom:"$inlineObject",allowAttributes:["alt","src","srcset"]}),e.addChildCheck(((t,e)=>{if(t.endsWith("caption")&&"imageInline"===e.name)return!1})),this._setupConversion(),t.plugins.has("ImageBlockEditing")&&(t.commands.add("imageTypeInline",new Lb(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const t=this.editor,e=t.t,n=t.conversion,o=t.plugins.get("ImageUtils");n.for("dataDowncast").elementToElement({model:"imageInline",view:(t,{writer:e})=>e.createEmptyElement("img")}),n.for("editingDowncast").elementToStructure({model:"imageInline",view:(t,{writer:n})=>o.toImageWidget(function(t){return t.createContainerElement("span",{class:"image-inline"},t.createEmptyElement("img"))}(n),n,e("image widget"))}),n.for("downcast").add(Nb(o,"imageInline","src")).add(Nb(o,"imageInline","alt")).add(Mb(o,"imageInline")),n.for("upcast").elementToElement({view:bb(t,"imageInline"),model:(t,{writer:e})=>e.createElement("imageInline",t.hasAttribute("src")?{src:t.getAttribute("src")}:null)})}_setupClipboardIntegration(){const t=this.editor,e=t.model,n=t.editing.view,o=t.plugins.get("ImageUtils");this.listenTo(t.plugins.get("ClipboardPipeline"),"inputTransformation",((i,r)=>{const s=Array.from(r.content.getChildren());let a;if(!s.every(o.isBlockImageView))return;a=r.targetRanges?t.editing.mapper.toModelRange(r.targetRanges[0]):e.document.selection.getFirstRange();const c=e.createSelection(a);if("imageInline"===wb(e.schema,c)){const t=new qd(n.document),e=s.map((e=>1===e.childCount?(Array.from(e.getAttributes()).forEach((n=>t.setAttribute(...n,o.findViewImgElement(e)))),e.getChild(0)):e));r.content=t.createDocumentFragment(e)}}))}}class Hb extends F{static get requires(){return[Vb,Zm,Sb]}static get pluginName(){return"ImageInline"}}class Ub extends H{refresh(){const t=this.editor,e=t.plugins.get("ImageCaptionUtils");if(!t.plugins.has(Ob))return this.isEnabled=!1,void(this.value=!1);const n=t.model.document.selection,o=n.getSelectedElement();if(!o){const t=e.getCaptionFromModelSelection(n);return this.isEnabled=!!t,void(this.value=!!t)}this.isEnabled=this.editor.plugins.get("ImageUtils").isImage(o),this.isEnabled?this.value=!!e.getCaptionFromImageModelElement(o):this.value=!1}execute(t={}){const{focusCaptionOnShow:e}=t;this.editor.model.change((t=>{this.value?this._hideImageCaption(t):this._showImageCaption(t,e)}))}_showImageCaption(t,e){const n=this.editor.model.document.selection,o=this.editor.plugins.get("ImageCaptionEditing");let i=n.getSelectedElement();const r=o._getSavedCaption(i);this.editor.plugins.get("ImageUtils").isInlineImage(i)&&(this.editor.execute("imageTypeBlock"),i=n.getSelectedElement());const s=r||t.createElement("caption");t.append(s,i),e&&t.setSelection(s,"in")}_hideImageCaption(t){const e=this.editor,n=e.model.document.selection,o=e.plugins.get("ImageCaptionEditing"),i=e.plugins.get("ImageCaptionUtils");let r,s=n.getSelectedElement();s?r=i.getCaptionFromImageModelElement(s):(r=i.getCaptionFromModelSelection(n),s=r.parent),o._saveCaption(s,r),t.setSelection(s,"on"),t.remove(r)}}class Gb extends F{static get pluginName(){return"ImageCaptionUtils"}static get requires(){return[Ab]}getCaptionFromImageModelElement(t){for(const e of t.getChildren())if(e&&e.is("element","caption"))return e;return null}getCaptionFromModelSelection(t){const e=this.editor.plugins.get("ImageUtils"),n=t.getFirstPosition().findAncestor("caption");return n&&e.isBlockImage(n.parent)?n:null}matchImageCaptionViewElement(t){const e=this.editor.plugins.get("ImageUtils");return"figcaption"==t.name&&e.isBlockImageView(t.parent)?{name:!0}:null}}class Wb extends F{static get requires(){return[Ab,Gb]}static get pluginName(){return"ImageCaptionEditing"}constructor(t){super(t),this._savedCaptionsMap=new WeakMap}init(){const t=this.editor,e=t.model.schema;e.isRegistered("caption")?e.extend("caption",{allowIn:"imageBlock"}):e.register("caption",{allowIn:"imageBlock",allowContentOf:"$block",isLimit:!0}),t.commands.add("toggleImageCaption",new Ub(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration(),this._registerCaptionReconversion()}_setupConversion(){const t=this.editor,e=t.editing.view,n=t.plugins.get("ImageUtils"),o=t.plugins.get("ImageCaptionUtils"),i=t.t;t.conversion.for("upcast").elementToElement({view:t=>o.matchImageCaptionViewElement(t),model:"caption"}),t.conversion.for("dataDowncast").elementToElement({model:"caption",view:(t,{writer:e})=>n.isBlockImage(t.parent)?e.createContainerElement("figcaption"):null}),t.conversion.for("editingDowncast").elementToElement({model:"caption",view:(t,{writer:o})=>{if(!n.isBlockImage(t.parent))return null;const r=o.createEditableElement("figcaption");o.setCustomProperty("imageCaption",!0,r),Id({view:e,element:r,text:i("Enter image caption"),keepOnFocus:!0});const s=t.parent.getAttribute("alt");return zm(r,o,{label:s?i("Caption for image: %0",[s]):i("Caption for the image")})}})}_setupImageTypeCommandsIntegration(){const t=this.editor,e=t.plugins.get("ImageUtils"),n=t.plugins.get("ImageCaptionUtils"),o=t.commands.get("imageTypeInline"),i=t.commands.get("imageTypeBlock"),r=t=>{if(!t.return)return;const{oldElement:o,newElement:i}=t.return;if(!o)return;if(e.isBlockImage(o)){const t=n.getCaptionFromImageModelElement(o);if(t)return void this._saveCaption(i,t)}const r=this._getSavedCaption(o);r&&this._saveCaption(i,r)};o&&this.listenTo(o,"execute",r,{priority:"low"}),i&&this.listenTo(i,"execute",r,{priority:"low"})}_getSavedCaption(t){const e=this._savedCaptionsMap.get(t);return e?Ka.fromJSON(e):null}_saveCaption(t,e){this._savedCaptionsMap.set(t,e.toJSON())}_registerCaptionReconversion(){const t=this.editor,e=t.model,n=t.plugins.get("ImageUtils"),o=t.plugins.get("ImageCaptionUtils");e.document.on("change:data",(()=>{const i=e.document.differ.getChanges();for(const e of i){if("alt"!==e.attributeKey)continue;const i=e.range.start.nodeAfter;if(n.isBlockImage(i)){const e=o.getCaptionFromImageModelElement(i);if(!e)return;t.editing.reconvertItem(e)}}}))}}class qb extends F{static get requires(){return[Gb]}static get pluginName(){return"ImageCaptionUI"}init(){const t=this.editor,e=t.editing.view,n=t.plugins.get("ImageCaptionUtils"),o=t.t;t.ui.componentFactory.add("toggleImageCaption",(i=>{const r=t.commands.get("toggleImageCaption"),s=new Nh(i);return s.set({icon:Ah.caption,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.bind("label").to(r,"value",(t=>o(t?"Toggle caption off":"Toggle caption on"))),this.listenTo(s,"execute",(()=>{t.execute("toggleImageCaption",{focusCaptionOnShow:!0});const o=n.getCaptionFromModelSelection(t.model.document.selection);if(o){const n=t.editing.mapper.toViewElement(o);e.scrollToTheSelection(),e.change((t=>{t.addClass("image__caption_highlighted",n)}))}t.editing.view.focus()})),s}))}}var $b=n(2640),Yb={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()($b.Z,Yb);$b.Z.locals;class Kb extends H{refresh(){const t=this.editor,e=t.plugins.get("ImageUtils").getClosestSelectedImageElement(t.model.document.selection);this.isEnabled=!!e,e&&e.hasAttribute("width")?this.value={width:e.getAttribute("width"),height:null}:this.value=null}execute(t){const e=this.editor,n=e.model,o=e.plugins.get("ImageUtils").getClosestSelectedImageElement(n.document.selection);this.value={width:t.width,height:null},o&&n.change((e=>{e.setAttribute("width",t.width,o)}))}}class Qb extends F{static get requires(){return[Ab]}static get pluginName(){return"ImageResizeEditing"}constructor(t){super(t),t.config.define("image",{resizeUnit:"%",resizeOptions:[{name:"resizeImage:original",value:null,icon:"original"},{name:"resizeImage:25",value:"25",icon:"small"},{name:"resizeImage:50",value:"50",icon:"medium"},{name:"resizeImage:75",value:"75",icon:"large"}]})}init(){const t=this.editor,e=new Kb(t);this._registerSchema(),this._registerConverters("imageBlock"),this._registerConverters("imageInline"),t.commands.add("resizeImage",e),t.commands.add("imageResize",e)}_registerSchema(){this.editor.plugins.has("ImageBlockEditing")&&this.editor.model.schema.extend("imageBlock",{allowAttributes:"width"}),this.editor.plugins.has("ImageInlineEditing")&&this.editor.model.schema.extend("imageInline",{allowAttributes:"width"})}_registerConverters(t){const e=this.editor;e.conversion.for("downcast").add((e=>e.on(`attribute:width:${t}`,((t,e,n)=>{if(!n.consumable.consume(e.item,t.name))return;const o=n.writer,i=n.mapper.toViewElement(e.item);null!==e.attributeNewValue?(o.setStyle("width",e.attributeNewValue,i),o.addClass("image_resized",i)):(o.removeStyle("width",i),o.removeClass("image_resized",i))})))),e.conversion.for("upcast").attributeToAttribute({view:{name:"imageBlock"===t?"figure":"img",styles:{width:/.+/}},model:{key:"width",value:t=>t.getStyle("width")}})}}const Zb={small:Ah.objectSizeSmall,medium:Ah.objectSizeMedium,large:Ah.objectSizeLarge,original:Ah.objectSizeFull};class Jb extends F{static get requires(){return[Qb]}static get pluginName(){return"ImageResizeButtons"}constructor(t){super(t),this._resizeUnit=t.config.get("image.resizeUnit")}init(){const t=this.editor,e=t.config.get("image.resizeOptions"),n=t.commands.get("resizeImage");this.bind("isEnabled").to(n);for(const t of e)this._registerImageResizeButton(t);this._registerImageResizeDropdown(e)}_registerImageResizeButton(t){const e=this.editor,{name:n,value:o,icon:i}=t,r=o?o+this._resizeUnit:null;e.ui.componentFactory.add(n,(n=>{const o=new Nh(n),s=e.commands.get("resizeImage"),a=this._getOptionLabelValue(t,!0);if(!Zb[i])throw new c("imageresizebuttons-missing-icon",e,t);return o.set({label:a,icon:Zb[i],tooltip:a,isToggleable:!0}),o.bind("isEnabled").to(this),o.bind("isOn").to(s,"value",Xb(r)),this.listenTo(o,"execute",(()=>{e.execute("resizeImage",{width:r})})),o}))}_registerImageResizeDropdown(t){const e=this.editor,n=e.t,o=t.find((t=>!t.value)),i=i=>{const r=e.commands.get("resizeImage"),s=kg(i,Hh),a=s.buttonView;return a.set({tooltip:n("Resize image"),commandValue:o.value,icon:Zb.medium,isToggleable:!0,label:this._getOptionLabelValue(o),withText:!0,class:"ck-resize-image-button"}),a.bind("label").to(r,"value",(t=>t&&t.width?t.width:this._getOptionLabelValue(o))),s.bind("isOn").to(r),s.bind("isEnabled").to(this),wg(s,this._getResizeDropdownListItemDefinitions(t,r)),s.listView.ariaLabel=n("Image resize list"),this.listenTo(s,"execute",(t=>{e.execute(t.source.commandName,{width:t.source.commandValue}),e.editing.view.focus()})),s};e.ui.componentFactory.add("resizeImage",i),e.ui.componentFactory.add("imageResize",i)}_getOptionLabelValue(t,e){const n=this.editor.t;return t.label?t.label:e?t.value?n("Resize image to %0",t.value+this._resizeUnit):n("Resize image to the original size"):t.value?t.value+this._resizeUnit:n("Original")}_getResizeDropdownListItemDefinitions(t,e){const n=new fo;return t.map((t=>{const o=t.value?t.value+this._resizeUnit:null,i={type:"button",model:new Hg({commandName:"resizeImage",commandValue:o,label:this._getOptionLabelValue(t),withText:!0,icon:null})};i.model.bind("isOn").to(e,"value",Xb(o)),n.add(i)})),n}}function Xb(t){return e=>null===t&&e===t||e&&e.width===t}const tw=/(image|image-inline)/,ew="image_resized";class nw extends F{static get requires(){return[pb]}static get pluginName(){return"ImageResizeHandles"}init(){const t=this.editor.commands.get("resizeImage");this.bind("isEnabled").to(t),this._setupResizerCreator()}_setupResizerCreator(){const t=this.editor,e=t.editing.view;e.addObserver(Bb),this.listenTo(e.document,"imageLoaded",((n,o)=>{if(!o.target.matches("figure.image.ck-widget > img,figure.image.ck-widget > picture > img,figure.image.ck-widget > a > img,figure.image.ck-widget > a > picture > img,span.image-inline.ck-widget > img,span.image-inline.ck-widget > picture > img"))return;const i=t.editing.view.domConverter,r=i.domToView(o.target).findAncestor({classes:tw});let s=this.editor.plugins.get(pb).getResizerByViewElement(r);if(s)return void s.redraw();const a=t.editing.mapper,c=a.toModelElement(r);s=t.plugins.get(pb).attachTo({unit:t.config.get("image.resizeUnit"),modelElement:c,viewElement:r,editor:t,getHandleHost:t=>t.querySelector("img"),getResizeHost:()=>i.mapViewToDom(a.toViewElement(c.parent)),isCentered(){const t=c.getAttribute("imageStyle");return!t||"block"==t||"alignCenter"==t},onCommit(n){e.change((t=>{t.removeClass(ew,r)})),t.execute("resizeImage",{width:n})}}),s.on("updateSize",(()=>{r.hasClass(ew)||e.change((t=>{t.addClass(ew,r)}))})),s.bind("isEnabled").to(this)}))}}var ow=n(6270),iw={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(ow.Z,iw);ow.Z.locals;class rw extends H{constructor(t,e){super(t),this._defaultStyles={imageBlock:!1,imageInline:!1},this._styles=new Map(e.map((t=>{if(t.isDefault)for(const e of t.modelElements)this._defaultStyles[e]=t.name;return[t.name,t]})))}refresh(){const t=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!t,this.isEnabled?t.hasAttribute("imageStyle")?this.value=t.getAttribute("imageStyle"):this.value=this._defaultStyles[t.name]:this.value=!1}execute(t={}){const e=this.editor,n=e.model,o=e.plugins.get("ImageUtils");n.change((e=>{const i=t.value;let r=o.getClosestSelectedImageElement(n.document.selection);i&&this.shouldConvertImageType(i,r)&&(this.editor.execute(o.isBlockImage(r)?"imageTypeInline":"imageTypeBlock"),r=o.getClosestSelectedImageElement(n.document.selection)),!i||this._styles.get(i).isDefault?e.removeAttribute("imageStyle",r):e.setAttribute("imageStyle",i,r)}))}shouldConvertImageType(t,e){return!this._styles.get(t).modelElements.includes(e.name)}}const{objectFullWidth:sw,objectInline:aw,objectLeft:cw,objectRight:lw,objectCenter:dw,objectBlockLeft:uw,objectBlockRight:hw}=Ah,gw={get inline(){return{name:"inline",title:"In line",icon:aw,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:cw,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:uw,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:dw,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:lw,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:hw,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:dw,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:lw,modelElements:["imageBlock"],className:"image-style-side"}}},mw={full:sw,left:uw,right:hw,center:dw,inlineLeft:cw,inlineRight:lw,inline:aw},pw=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function fw(t){l("image-style-configuration-definition-invalid",t)}const kw={normalizeStyles:function(t){return(t.configuredStyles.options||[]).map((t=>function(t){t="string"==typeof t?gw[t]?{...gw[t]}:{name:t}:function(t,e){const n={...e};for(const o in t)Object.prototype.hasOwnProperty.call(e,o)||(n[o]=t[o]);return n}(gw[t.name],t);"string"==typeof t.icon&&(t.icon=mw[t.icon]||t.icon);return t}(t))).filter((e=>function(t,{isBlockPluginLoaded:e,isInlinePluginLoaded:n}){const{modelElements:o,name:i}=t;if(!(o&&o.length&&i))return fw({style:t}),!1;{const i=[e?"imageBlock":null,n?"imageInline":null];if(!o.some((t=>i.includes(t))))return l("image-style-missing-dependency",{style:t,missingPlugins:o.map((t=>"imageBlock"===t?"ImageBlockEditing":"ImageInlineEditing"))}),!1}return!0}(e,t)))},getDefaultStylesConfiguration:function(t,e){return t&&e?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:t?{options:["block","side"]}:e?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(t){return t.has("ImageBlockEditing")&&t.has("ImageInlineEditing")?[...pw]:[]},warnInvalidStyle:fw,DEFAULT_OPTIONS:gw,DEFAULT_ICONS:mw,DEFAULT_DROPDOWN_DEFINITIONS:pw};function bw(t,e){for(const n of e)if(n.name===t)return n}class ww extends F{static get pluginName(){return"ImageStyleEditing"}static get requires(){return[Ab]}init(){const{normalizeStyles:t,getDefaultStylesConfiguration:e}=kw,n=this.editor,o=n.plugins.has("ImageBlockEditing"),i=n.plugins.has("ImageInlineEditing");n.config.define("image.styles",e(o,i)),this.normalizedStyles=t({configuredStyles:n.config.get("image.styles"),isBlockPluginLoaded:o,isInlinePluginLoaded:i}),this._setupConversion(o,i),this._setupPostFixer(),n.commands.add("imageStyle",new rw(n,this.normalizedStyles))}_setupConversion(t,e){const n=this.editor,o=n.model.schema,i=(r=this.normalizedStyles,(t,e,n)=>{if(!n.consumable.consume(e.item,t.name))return;const o=bw(e.attributeNewValue,r),i=bw(e.attributeOldValue,r),s=n.mapper.toViewElement(e.item),a=n.writer;i&&a.removeClass(i.className,s),o&&a.addClass(o.className,s)});var r;const s=function(t){const e={imageInline:t.filter((t=>!t.isDefault&&t.modelElements.includes("imageInline"))),imageBlock:t.filter((t=>!t.isDefault&&t.modelElements.includes("imageBlock")))};return(t,n,o)=>{if(!n.modelRange)return;const i=n.viewItem,r=Ca(n.modelRange.getItems());if(r&&o.schema.checkAttribute(r,"imageStyle"))for(const t of e[r.name])o.consumable.consume(i,{classes:t.className})&&o.writer.setAttribute("imageStyle",t.name,r)}}(this.normalizedStyles);n.editing.downcastDispatcher.on("attribute:imageStyle",i),n.data.downcastDispatcher.on("attribute:imageStyle",i),t&&(o.extend("imageBlock",{allowAttributes:"imageStyle"}),n.data.upcastDispatcher.on("element:figure",s,{priority:"low"})),e&&(o.extend("imageInline",{allowAttributes:"imageStyle"}),n.data.upcastDispatcher.on("element:img",s,{priority:"low"}))}_setupPostFixer(){const t=this.editor,e=t.model.document,n=t.plugins.get(Ab),o=new Map(this.normalizedStyles.map((t=>[t.name,t])));e.registerPostFixer((t=>{let i=!1;for(const r of e.differ.getChanges())if("insert"==r.type||"attribute"==r.type&&"imageStyle"==r.attributeKey){let e="insert"==r.type?r.position.nodeAfter:r.range.start.nodeAfter;if(e&&e.is("element","paragraph")&&e.childCount>0&&(e=e.getChild(0)),!n.isImage(e))continue;const s=e.getAttribute("imageStyle");if(!s)continue;const a=o.get(s);a&&a.modelElements.includes(e.name)||(t.removeAttribute("imageStyle",e),i=!0)}return i}))}}var Aw=n(5083),_w={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Aw.Z,_w);Aw.Z.locals;class Cw extends F{static get requires(){return[ww]}static get pluginName(){return"ImageStyleUI"}get localizedDefaultStylesTitles(){const t=this.editor.t;return{"Wrap text":t("Wrap text"),"Break text":t("Break text"),"In line":t("In line"),"Full size image":t("Full size image"),"Side image":t("Side image"),"Left aligned image":t("Left aligned image"),"Centered image":t("Centered image"),"Right aligned image":t("Right aligned image")}}init(){const t=this.editor.plugins,e=this.editor.config.get("image.toolbar")||[],n=vw(t.get("ImageStyleEditing").normalizedStyles,this.localizedDefaultStylesTitles);for(const t of n)this._createButton(t);const o=vw([...e.filter(D),...kw.getDefaultDropdownDefinitions(t)],this.localizedDefaultStylesTitles);for(const t of o)this._createDropdown(t,n)}_createDropdown(t,e){const n=this.editor.ui.componentFactory;n.add(t.name,(o=>{let i;const{defaultItem:r,items:s,title:a}=t,c=s.filter((t=>e.find((({name:e})=>yw(e)===t)))).map((t=>{const e=n.create(t);return t===r&&(i=e),e}));s.length!==c.length&&kw.warnInvalidStyle({dropdown:t});const l=kg(o,Wh),d=l.buttonView,u=d.arrowView;return bg(l,c,{enableActiveItemFocusOnDropdownOpen:!0}),d.set({label:xw(a,i.label),class:null,tooltip:!0}),u.unbind("label"),u.set({label:a}),d.bind("icon").toMany(c,"isOn",((...t)=>{const e=t.findIndex(mi);return e<0?i.icon:c[e].icon})),d.bind("label").toMany(c,"isOn",((...t)=>{const e=t.findIndex(mi);return xw(a,e<0?i.label:c[e].label)})),d.bind("isOn").toMany(c,"isOn",((...t)=>t.some(mi))),d.bind("class").toMany(c,"isOn",((...t)=>t.some(mi)?"ck-splitbutton_flatten":null)),d.on("execute",(()=>{c.some((({isOn:t})=>t))?l.isOpen=!l.isOpen:i.fire("execute")})),l.bind("isEnabled").toMany(c,"isEnabled",((...t)=>t.some(mi))),this.listenTo(l,"execute",(()=>{this.editor.editing.view.focus()})),l}))}_createButton(t){const e=t.name;this.editor.ui.componentFactory.add(yw(e),(n=>{const o=this.editor.commands.get("imageStyle"),i=new Nh(n);return i.set({label:t.title,icon:t.icon,tooltip:!0,isToggleable:!0}),i.bind("isEnabled").to(o,"isEnabled"),i.bind("isOn").to(o,"value",(t=>t===e)),i.on("execute",this._executeCommand.bind(this,e)),i}))}_executeCommand(t){this.editor.execute("imageStyle",{value:t}),this.editor.editing.view.focus()}}function vw(t,e){for(const n of t)e[n.title]&&(n.title=e[n.title]);return t}function yw(t){return`imageStyle:${t}`}function xw(t,e){return(t?t+": ":"")+e}function Ew(t){const e=t.map((t=>t.replace("+","\\+")));return new RegExp(`^image\\/(${e.join("|")})$`)}function Dw(t){return new Promise(((e,n)=>{const o=t.getAttribute("src");fetch(o).then((t=>t.blob())).then((t=>{const n=Iw(t,o),i=n.replace("image/",""),r=new File([t],`image.${i}`,{type:n});e(r)})).catch((t=>t&&"TypeError"===t.name?function(t){return function(t){return new Promise(((e,n)=>{const o=Ao.document.createElement("img");o.addEventListener("load",(()=>{const t=Ao.document.createElement("canvas");t.width=o.width,t.height=o.height;t.getContext("2d").drawImage(o,0,0),t.toBlob((t=>t?e(t):n()))})),o.addEventListener("error",(()=>n())),o.src=t}))}(t).then((e=>{const n=Iw(e,t),o=n.replace("image/","");return new File([e],`image.${o}`,{type:n})}))}(o).then(e).catch(n):n(t)))}))}function Iw(t,e){return t.type?t.type:e.match(/data:(image\/\w+);base64/)?e.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}class Tw extends F{static get pluginName(){return"ImageUploadUI"}init(){const t=this.editor,e=t.t,n=n=>{const o=new $f(n),i=t.commands.get("uploadImage"),r=t.config.get("image.upload.types"),s=Ew(r);return o.set({acceptedType:r.map((t=>`image/${t}`)).join(","),allowMultipleFiles:!0}),o.buttonView.set({label:e("Insert image"),icon:Ah.image,tooltip:!0}),o.buttonView.bind("isEnabled").to(i),o.on("done",((e,n)=>{const o=Array.from(n).filter((t=>s.test(t.type)));o.length&&(t.execute("uploadImage",{file:o}),t.editing.view.focus())})),o};t.ui.componentFactory.add("uploadImage",n),t.ui.componentFactory.add("imageUpload",n)}}var Sw=n(3689),Mw={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Sw.Z,Mw);Sw.Z.locals;var Nw=n(4036),Bw={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Nw.Z,Bw);Nw.Z.locals;var zw=n(3773),Pw={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(zw.Z,Pw);zw.Z.locals;class Lw extends F{static get pluginName(){return"ImageUploadProgress"}constructor(t){super(t),this.placeholder="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}init(){const t=this.editor;t.plugins.has("ImageBlockEditing")&&t.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",((...t)=>this.uploadStatusChange(...t))),t.plugins.has("ImageInlineEditing")&&t.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",((...t)=>this.uploadStatusChange(...t)))}uploadStatusChange(t,e,n){const o=this.editor,i=e.item,r=i.getAttribute("uploadId");if(!n.consumable.consume(e.item,t.name))return;const s=o.plugins.get("ImageUtils"),a=o.plugins.get(Wf),c=r?e.attributeNewValue:null,l=this.placeholder,d=o.editing.mapper.toViewElement(i),u=n.writer;if("reading"==c)return Ow(d,u),void Rw(s,l,d,u);if("uploading"==c){const t=a.loaders.get(r);return Ow(d,u),void(t?(jw(d,u),function(t,e,n,o){const i=function(t){const e=t.createUIElement("div",{class:"ck-progress-bar"});return t.setCustomProperty("progressBar",!0,e),e}(e);e.insert(e.createPositionAt(t,"end"),i),n.on("change:uploadedPercent",((t,e,n)=>{o.change((t=>{t.setStyle("width",n+"%",i)}))}))}(d,u,t,o.editing.view),function(t,e,n,o){if(o.data){const i=t.findViewImgElement(e);n.setAttribute("src",o.data,i)}}(s,d,u,t)):Rw(s,l,d,u))}"complete"==c&&a.loaders.get(r)&&function(t,e,n){const o=e.createUIElement("div",{class:"ck-image-upload-complete-icon"});e.insert(e.createPositionAt(t,"end"),o),setTimeout((()=>{n.change((t=>t.remove(t.createRangeOn(o))))}),3e3)}(d,u,o.editing.view),function(t,e){Vw(t,e,"progressBar")}(d,u),jw(d,u),function(t,e){e.removeClass("ck-appear",t)}(d,u)}}function Ow(t,e){t.hasClass("ck-appear")||e.addClass("ck-appear",t)}function Rw(t,e,n,o){n.hasClass("ck-image-upload-placeholder")||o.addClass("ck-image-upload-placeholder",n);const i=t.findViewImgElement(n);i.getAttribute("src")!==e&&o.setAttribute("src",e,i),Fw(n,"placeholder")||o.insert(o.createPositionAfter(i),function(t){const e=t.createUIElement("div",{class:"ck-upload-placeholder-loader"});return t.setCustomProperty("placeholder",!0,e),e}(o))}function jw(t,e){t.hasClass("ck-image-upload-placeholder")&&e.removeClass("ck-image-upload-placeholder",t),Vw(t,e,"placeholder")}function Fw(t,e){for(const n of t.getChildren())if(n.getCustomProperty(e))return n}function Vw(t,e,n){const o=Fw(t,n);o&&e.remove(e.createRangeOn(o))}class Hw extends H{refresh(){const t=this.editor,e=t.plugins.get("ImageUtils"),n=t.model.document.selection.getSelectedElement();this.isEnabled=e.isImageAllowed()||e.isImage(n)}execute(t){const e=bo(t.file),n=this.editor.model.document.selection,o=this.editor.plugins.get("ImageUtils"),i=Object.fromEntries(n.getAttributes());e.forEach(((t,e)=>{const r=n.getSelectedElement();if(e&&r&&o.isImage(r)){const e=this.editor.model.createPositionAfter(r);this._uploadImage(t,i,e)}else this._uploadImage(t,i)}))}_uploadImage(t,e,n){const o=this.editor,i=o.plugins.get(Wf).createLoader(t),r=o.plugins.get("ImageUtils");i&&r.insertImage({...e,uploadId:i.id},n)}}class Uw extends F{static get requires(){return[Wf,Vg,sm,Ab]}static get pluginName(){return"ImageUploadEditing"}constructor(t){super(t),t.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),this._uploadImageElements=new Map}init(){const t=this.editor,e=t.model.document,n=t.conversion,o=t.plugins.get(Wf),i=t.plugins.get("ImageUtils"),r=Ew(t.config.get("image.upload.types")),s=new Hw(t);t.commands.add("uploadImage",s),t.commands.add("imageUpload",s),n.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}),this.listenTo(t.editing.view.document,"clipboardInput",((e,n)=>{if(o=n.dataTransfer,Array.from(o.types).includes("text/html")&&""!==o.getData("text/html"))return;var o;const i=Array.from(n.dataTransfer.files).filter((t=>!!t&&r.test(t.type)));i.length&&(e.stop(),t.model.change((e=>{n.targetRanges&&e.setSelection(n.targetRanges.map((e=>t.editing.mapper.toModelRange(e)))),t.model.enqueueChange((()=>{t.execute("uploadImage",{file:i})}))})))})),this.listenTo(t.plugins.get("ClipboardPipeline"),"inputTransformation",((e,n)=>{const r=Array.from(t.editing.view.createRangeIn(n.content)).filter((t=>function(t,e){return!(!t.isInlineImageView(e)||!e.getAttribute("src"))&&(e.getAttribute("src").match(/^data:image\/\w+;base64,/g)||e.getAttribute("src").match(/^blob:/g))}(i,t.item)&&!t.item.getAttribute("uploadProcessed"))).map((t=>({promise:Dw(t.item),imageElement:t.item})));if(!r.length)return;const s=new qd(t.editing.view.document);for(const t of r){s.setAttribute("uploadProcessed",!0,t.imageElement);const e=o.createLoader(t.promise);e&&(s.setAttribute("src","",t.imageElement),s.setAttribute("uploadId",e.id,t.imageElement))}})),t.editing.view.document.on("dragover",((t,e)=>{e.preventDefault()})),e.on("change",(()=>{const n=e.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),i=new Set;for(const e of n)if("insert"==e.type&&"$text"!=e.name){const n=e.position.nodeAfter,r="$graveyard"==e.position.root.rootName;for(const e of Gw(t,n)){const t=e.getAttribute("uploadId");if(!t)continue;const n=o.loaders.get(t);n&&(r?i.has(t)||n.abort():(i.add(t),this._uploadImageElements.set(t,e),"idle"==n.status&&this._readAndUpload(n)))}}})),this.on("uploadComplete",((t,{imageElement:e,data:n})=>{const o=n.urls?n.urls:n;this.editor.model.change((t=>{t.setAttribute("src",o.default,e),this._parseAndSetSrcsetAttributeOnImage(o,e,t)}))}),{priority:"low"})}afterInit(){const t=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&t.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this.editor.plugins.has("ImageInlineEditing")&&t.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]})}_readAndUpload(t){const e=this.editor,n=e.model,o=e.locale.t,i=e.plugins.get(Wf),r=e.plugins.get(Vg),s=e.plugins.get("ImageUtils"),a=this._uploadImageElements;return n.enqueueChange({isUndoable:!1},(e=>{e.setAttribute("uploadStatus","reading",a.get(t.id))})),t.read().then((()=>{const o=t.upload(),i=a.get(t.id);if(cr.isSafari){const t=e.editing.mapper.toViewElement(i),n=s.findViewImgElement(t);e.editing.view.once("render",(()=>{if(!n.parent)return;const t=e.editing.view.domConverter.mapViewToDom(n.parent);if(!t)return;const o=t.style.display;t.style.display="none",t._ckHack=t.offsetHeight,t.style.display=o}))}return n.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("uploadStatus","uploading",i)})),o})).then((e=>{n.enqueueChange({isUndoable:!1},(n=>{const o=a.get(t.id);n.setAttribute("uploadStatus","complete",o),this.fire("uploadComplete",{data:e,imageElement:o})})),c()})).catch((e=>{if("error"!==t.status&&"aborted"!==t.status)throw e;"error"==t.status&&e&&r.showWarning(e,{title:o("Upload failed"),namespace:"upload"}),n.enqueueChange({isUndoable:!1},(e=>{e.remove(a.get(t.id))})),c()}));function c(){n.enqueueChange({isUndoable:!1},(e=>{const n=a.get(t.id);e.removeAttribute("uploadId",n),e.removeAttribute("uploadStatus",n),a.delete(t.id)})),i.destroyLoader(t)}}_parseAndSetSrcsetAttributeOnImage(t,e,n){let o=0;const i=Object.keys(t).filter((t=>{const e=parseInt(t,10);if(!isNaN(e))return o=Math.max(o,e),!0})).map((e=>`${t[e]} ${e}w`)).join(", ");""!=i&&n.setAttribute("srcset",{data:i,width:o},e)}}function Gw(t,e){const n=t.plugins.get("ImageUtils");return Array.from(t.model.createRangeOn(e)).filter((t=>n.isImage(t.item))).map((t=>t.item))}class Ww extends F{static get pluginName(){return"IndentEditing"}init(){const t=this.editor;t.commands.add("indent",new G(t)),t.commands.add("outdent",new G(t))}}const qw='',$w='';class Yw extends F{static get pluginName(){return"IndentUI"}init(){const t=this.editor,e=t.locale,n=t.t,o="ltr"==e.uiLanguageDirection?qw:$w,i="ltr"==e.uiLanguageDirection?$w:qw;this._defineButton("indent",n("Increase indent"),o),this._defineButton("outdent",n("Decrease indent"),i)}_defineButton(t,e,n){const o=this.editor;o.ui.componentFactory.add(t,(i=>{const r=o.commands.get(t),s=new Nh(i);return s.set({label:e,icon:n,tooltip:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),this.listenTo(s,"execute",(()=>{o.execute(t),o.editing.view.focus()})),s}))}}class Kw extends H{constructor(t,e){super(t),this._indentBehavior=e}refresh(){const t=this.editor.model,e=Ca(t.document.selection.getSelectedBlocks());e&&t.schema.checkAttribute(e,"blockIndent")?this.isEnabled=this._indentBehavior.checkEnabled(e.getAttribute("blockIndent")):this.isEnabled=!1}execute(){const t=this.editor.model,e=function(t){const e=t.document.selection,n=t.schema;return Array.from(e.getSelectedBlocks()).filter((t=>n.checkAttribute(t,"blockIndent")))}(t);t.change((t=>{for(const n of e){const e=n.getAttribute("blockIndent"),o=this._indentBehavior.getNextIndent(e);o?t.setAttribute("blockIndent",o,n):t.removeAttribute("blockIndent",n)}}))}}class Qw{constructor(t){this.isForward="forward"===t.direction,this.offset=t.offset,this.unit=t.unit}checkEnabled(t){const e=parseFloat(t||0);return this.isForward||e>0}getNextIndent(t){const e=parseFloat(t||0);if(!(!t||t.endsWith(this.unit)))return this.isForward?this.offset+this.unit:void 0;const n=e+(this.isForward?this.offset:-this.offset);return n>0?n+this.unit:void 0}}class Zw{constructor(t){this.isForward="forward"===t.direction,this.classes=t.classes}checkEnabled(t){const e=this.classes.indexOf(t);return this.isForward?e=0}getNextIndent(t){const e=this.classes.indexOf(t),n=this.isForward?1:-1;return this.classes[e+n]}}const Jw=["paragraph","heading1","heading2","heading3","heading4","heading5","heading6"];class Xw{constructor(){this._definitions=new Set}get length(){return this._definitions.size}add(t){Array.isArray(t)?t.forEach((t=>this._definitions.add(t))):this._definitions.add(t)}getDispatcher(){return t=>{t.on("attribute:linkHref",((t,e,n)=>{if(!n.consumable.test(e.item,"attribute:linkHref"))return;if(!e.item.is("selection")&&!n.schema.isInline(e.item))return;const o=n.writer,i=o.document.selection;for(const t of this._definitions){const r=o.createAttributeElement("a",t.attributes,{priority:5});t.classes&&o.addClass(t.classes,r);for(const e in t.styles)o.setStyle(e,t.styles[e],r);o.setCustomProperty("link",!0,r),t.callback(e.attributeNewValue)?e.item.is("selection")?o.wrap(i.getFirstRange(),r):o.wrap(n.mapper.toViewRange(e.range),r):o.unwrap(n.mapper.toViewRange(e.range),r)}}),{priority:"high"})}}getDispatcherForLinkedImage(){return t=>{t.on("attribute:linkHref:imageBlock",((t,e,{writer:n,mapper:o})=>{const i=o.toViewElement(e.item),r=Array.from(i.getChildren()).find((t=>"a"===t.name));for(const t of this._definitions){const o=Bo(t.attributes);if(t.callback(e.attributeNewValue)){for(const[t,e]of o)"class"===t?n.addClass(e,r):n.setAttribute(t,e,r);t.classes&&n.addClass(t.classes,r);for(const e in t.styles)n.setStyle(e,t.styles[e],r)}else{for(const[t,e]of o)"class"===t?n.removeClass(e,r):n.removeAttribute(t,r);t.classes&&n.removeClass(t.classes,r);for(const e in t.styles)n.removeStyle(e,r)}}}))}}}const tA=function(t,e,n){var o=t.length;return n=void 0===n?o:n,!e&&n>=o?t:ni(t,e,n)};var eA=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");const nA=function(t){return eA.test(t)};const oA=function(t){return t.split("")};var iA="[\\ud800-\\udfff]",rA="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",sA="\\ud83c[\\udffb-\\udfff]",aA="[^\\ud800-\\udfff]",cA="(?:\\ud83c[\\udde6-\\uddff]){2}",lA="[\\ud800-\\udbff][\\udc00-\\udfff]",dA="(?:"+rA+"|"+sA+")"+"?",uA="[\\ufe0e\\ufe0f]?",hA=uA+dA+("(?:\\u200d(?:"+[aA,cA,lA].join("|")+")"+uA+dA+")*"),gA="(?:"+[aA+rA+"?",rA,cA,lA,iA].join("|")+")",mA=RegExp(sA+"(?="+sA+")|"+gA+hA,"g");const pA=function(t){return t.match(mA)||[]};const fA=function(t){return nA(t)?pA(t):oA(t)};const kA=function(t){return function(e){e=Zo(e);var n=nA(e)?fA(e):void 0,o=n?n[0]:e.charAt(0),i=n?tA(n,1).join(""):e.slice(1);return o[t]()+i}}("toUpperCase"),bA=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,wA=/^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i,AA=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,_A=/^((\w+:(\/{2,})?)|(\W))/i,CA="Ctrl+K";function vA(t,{writer:e}){const n=e.createAttributeElement("a",{href:t},{priority:5});return e.setCustomProperty("link",!0,n),n}function yA(t){return function(t){return t.replace(bA,"").match(wA)}(t=String(t))?t:"#"}function xA(t,e){return!!t&&e.checkAttribute(t.name,"linkHref")}function EA(t,e){const n=(o=t,AA.test(o)?"mailto:":e);var o;const i=!!n&&!DA(t);return t&&i?n+t:t}function DA(t){return _A.test(t)}function IA(t){window.open(t,"_blank","noopener")}class TA extends H{constructor(t){super(t),this.manualDecorators=new fo,this.automaticDecorators=new Xw}restoreManualDecoratorStates(){for(const t of this.manualDecorators)t.value=this._getDecoratorStateFromModel(t.id)}refresh(){const t=this.editor.model,e=t.document.selection,n=e.getSelectedElement()||Ca(e.getSelectedBlocks());xA(n,t.schema)?(this.value=n.getAttribute("linkHref"),this.isEnabled=t.schema.checkAttribute(n,"linkHref")):(this.value=e.getAttribute("linkHref"),this.isEnabled=t.schema.checkAttributeInSelection(e,"linkHref"));for(const t of this.manualDecorators)t.value=this._getDecoratorStateFromModel(t.id)}execute(t,e={}){const n=this.editor.model,o=n.document.selection,i=[],r=[];for(const t in e)e[t]?i.push(t):r.push(t);n.change((e=>{if(o.isCollapsed){const s=o.getFirstPosition();if(o.hasAttribute("linkHref")){const a=Hp(s,"linkHref",o.getAttribute("linkHref"),n);e.setAttribute("linkHref",t,a),i.forEach((t=>{e.setAttribute(t,!0,a)})),r.forEach((t=>{e.removeAttribute(t,a)})),e.setSelection(e.createPositionAfter(a.end.nodeBefore))}else if(""!==t){const r=Bo(o.getAttributes());r.set("linkHref",t),i.forEach((t=>{r.set(t,!0)}));const{end:a}=n.insertContent(e.createText(t,r),s);e.setSelection(a)}["linkHref",...i,...r].forEach((t=>{e.removeSelectionAttribute(t)}))}else{const s=n.schema.getValidRanges(o.getRanges(),"linkHref"),a=[];for(const t of o.getSelectedBlocks())n.schema.checkAttribute(t,"linkHref")&&a.push(e.createRangeOn(t));const c=a.slice();for(const t of s)this._isRangeToUpdate(t,a)&&c.push(t);for(const n of c)e.setAttribute("linkHref",t,n),i.forEach((t=>{e.setAttribute(t,!0,n)})),r.forEach((t=>{e.removeAttribute(t,n)}))}}))}_getDecoratorStateFromModel(t){const e=this.editor.model,n=e.document.selection,o=n.getSelectedElement();return xA(o,e.schema)?o.getAttribute(t):n.getAttribute(t)}_isRangeToUpdate(t,e){for(const n of e)if(n.containsRange(t))return!1;return!0}}class SA extends H{refresh(){const t=this.editor.model,e=t.document.selection,n=e.getSelectedElement();xA(n,t.schema)?this.isEnabled=t.schema.checkAttribute(n,"linkHref"):this.isEnabled=t.schema.checkAttributeInSelection(e,"linkHref")}execute(){const t=this.editor,e=this.editor.model,n=e.document.selection,o=t.commands.get("link");e.change((t=>{const i=n.isCollapsed?[Hp(n.getFirstPosition(),"linkHref",n.getAttribute("linkHref"),e)]:e.schema.getValidRanges(n.getRanges(),"linkHref");for(const e of i)if(t.removeAttribute("linkHref",e),o)for(const n of o.manualDecorators)t.removeAttribute(n.id,e)}))}}class MA{constructor({id:t,label:e,attributes:n,classes:o,styles:i,defaultValue:r}){this.id=t,this.set("value"),this.defaultValue=r,this.label=e,this.attributes=n,this.classes=o,this.styles=i}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}ka(MA,B);var NA=n(9773),BA={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(NA.Z,BA);NA.Z.locals;const zA="automatic",PA=/^(https?:)?\/\//;class LA extends F{static get pluginName(){return"LinkEditing"}static get requires(){return[Dp,Cp,sm]}constructor(t){super(t),t.config.define("link",{addTargetToExternalLinks:!1})}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:"linkHref"}),t.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:vA}),t.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(t,e)=>vA(yA(t),e)}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:t=>t.getAttribute("href")}}),t.commands.add("link",new TA(t)),t.commands.add("unlink",new SA(t));const e=function(t,e){const n={"Open in a new tab":t("Open in a new tab"),Downloadable:t("Downloadable")};return e.forEach((t=>(t.label&&n[t.label]&&(t.label=n[t.label]),t))),e}(t.t,function(t){const e=[];if(t)for(const[n,o]of Object.entries(t)){const t=Object.assign({},o,{id:`link${kA(n)}`});e.push(t)}return e}(t.config.get("link.decorators")));this._enableAutomaticDecorators(e.filter((t=>t.mode===zA))),this._enableManualDecorators(e.filter((t=>"manual"===t.mode)));t.plugins.get(Dp).registerAttribute("linkHref"),function(t,e,n,o){const i=t.editing.view,r=new Set;i.document.registerPostFixer((i=>{const s=t.model.document.selection;let a=!1;if(s.hasAttribute(e)){const c=Hp(s.getFirstPosition(),e,s.getAttribute(e),t.model),l=t.editing.mapper.toViewRange(c);for(const t of l.getItems())t.is("element",n)&&!t.hasClass(o)&&(i.addClass(o,t),r.add(t),a=!0)}return a})),t.conversion.for("editingDowncast").add((t=>{function e(){i.change((t=>{for(const e of r.values())t.removeClass(o,e),r.delete(e)}))}t.on("insert",e,{priority:"highest"}),t.on("remove",e,{priority:"highest"}),t.on("attribute",e,{priority:"highest"}),t.on("selection",e,{priority:"highest"})}))}(t,"linkHref","a","ck-link_selected"),this._enableLinkOpen(),this._enableInsertContentSelectionAttributesFixer(),this._enableClickingAfterLink(),this._enableTypingOverLink(),this._handleDeleteContentAfterLink()}_enableAutomaticDecorators(t){const e=this.editor,n=e.commands.get("link").automaticDecorators;e.config.get("link.addTargetToExternalLinks")&&n.add({id:"linkIsExternal",mode:zA,callback:t=>PA.test(t),attributes:{target:"_blank",rel:"noopener noreferrer"}}),n.add(t),n.length&&e.conversion.for("downcast").add(n.getDispatcher())}_enableManualDecorators(t){if(!t.length)return;const e=this.editor,n=e.commands.get("link").manualDecorators;t.forEach((t=>{e.model.schema.extend("$text",{allowAttributes:t.id}),t=new MA(t),n.add(t),e.conversion.for("downcast").attributeToElement({model:t.id,view:(e,{writer:n,schema:o},{item:i})=>{if((i.is("selection")||o.isInline(i))&&e){const e=n.createAttributeElement("a",t.attributes,{priority:5});t.classes&&n.addClass(t.classes,e);for(const o in t.styles)n.setStyle(o,t.styles[o],e);return n.setCustomProperty("link",!0,e),e}}}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",...t._createPattern()},model:{key:t.id}})}))}_enableLinkOpen(){const t=this.editor,e=t.editing.view.document;this.listenTo(e,"click",((t,e)=>{if(!(cr.isMac?e.domEvent.metaKey:e.domEvent.ctrlKey))return;let n=e.domTarget;if("a"!=n.tagName.toLowerCase()&&(n=n.closest("a")),!n)return;const o=n.getAttribute("href");o&&(t.stop(),e.preventDefault(),IA(o))}),{context:"$capture"}),this.listenTo(e,"keydown",((e,n)=>{const o=t.commands.get("link").value;o&&n.keyCode===hr.enter&&n.altKey&&(e.stop(),IA(o))}))}_enableInsertContentSelectionAttributesFixer(){const t=this.editor.model,e=t.document.selection;this.listenTo(t,"insertContent",(()=>{const n=e.anchor.nodeBefore,o=e.anchor.nodeAfter;e.hasAttribute("linkHref")&&n&&n.hasAttribute("linkHref")&&(o&&o.hasAttribute("linkHref")||t.change((e=>{OA(e,jA(t.schema))})))}),{priority:"low"})}_enableClickingAfterLink(){const t=this.editor,e=t.model;t.editing.view.addObserver(Wd);let n=!1;this.listenTo(t.editing.view.document,"mousedown",(()=>{n=!0})),this.listenTo(t.editing.view.document,"selectionChange",(()=>{if(!n)return;n=!1;const t=e.document.selection;if(!t.isCollapsed)return;if(!t.hasAttribute("linkHref"))return;const o=t.getFirstPosition(),i=Hp(o,"linkHref",t.getAttribute("linkHref"),e);(o.isTouching(i.start)||o.isTouching(i.end))&&e.change((t=>{OA(t,jA(e.schema))}))}))}_enableTypingOverLink(){const t=this.editor,e=t.editing.view;let n,o;this.listenTo(e.document,"delete",(()=>{o=!0}),{priority:"high"}),this.listenTo(t.model,"deleteContent",(()=>{const e=t.model.document.selection;e.isCollapsed||(o?o=!1:RA(t)&&function(t){const e=t.document.selection,n=e.getFirstPosition(),o=e.getLastPosition(),i=n.nodeAfter;if(!i)return!1;if(!i.is("$text"))return!1;if(!i.hasAttribute("linkHref"))return!1;const r=o.textNode||o.nodeBefore;if(i===r)return!0;return Hp(n,"linkHref",i.getAttribute("linkHref"),t).containsRange(t.createRange(n,o),!0)}(t.model)&&(n=e.getAttributes()))}),{priority:"high"}),this.listenTo(t.model,"insertContent",((e,[i])=>{o=!1,RA(t)&&n&&(t.model.change((t=>{for(const[e,o]of n)t.setAttribute(e,o,i)})),n=null)}),{priority:"high"})}_handleDeleteContentAfterLink(){const t=this.editor,e=t.model,n=e.document.selection,o=t.editing.view;let i=!1,r=!1;this.listenTo(o.document,"delete",((t,e)=>{r="backward"===e.direction}),{priority:"high"}),this.listenTo(e,"deleteContent",(()=>{i=!1;const t=n.getFirstPosition(),o=n.getAttribute("linkHref");if(!o)return;const r=Hp(t,"linkHref",o,e);i=r.containsPosition(t)||r.end.isEqual(t)}),{priority:"high"}),this.listenTo(e,"deleteContent",(()=>{r&&(r=!1,i||t.model.enqueueChange((t=>{OA(t,jA(e.schema))})))}),{priority:"low"})}}function OA(t,e){t.removeSelectionAttribute("linkHref");for(const n of e)t.removeSelectionAttribute(n)}function RA(t){return t.model.change((t=>t.batch)).isTyping}function jA(t){return t.getDefinition("$text").allowAttributes.filter((t=>t.startsWith("link")))}var FA=n(7754),VA={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(FA.Z,VA);FA.Z.locals;class HA extends Zu{constructor(t,e){super(t);const n=t.t;this.focusTracker=new va,this.keystrokes=new ya,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(n("Save"),Ah.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(n("Cancel"),Ah.cancel,"ck-button-cancel","cancel"),this._manualDecoratorSwitches=this._createManualDecoratorSwitches(e),this.children=this._createFormChildren(e.manualDecorators),this._focusables=new Du,this._focusCycler=new Qh({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});const o=["ck","ck-link-form","ck-responsive-form"];e.manualDecorators.length&&o.push("ck-link-form_layout-vertical","ck-vertical-form"),this.setTemplate({tag:"form",attributes:{class:o,tabindex:"-1"},children:this.children}),vh(this)}getDecoratorSwitchesState(){return Array.from(this._manualDecoratorSwitches).reduce(((t,e)=>(t[e.name]=e.isOn,t)),{})}render(){super.render(),yh({view:this});[this.urlInputView,...this._manualDecoratorSwitches,this.saveButtonView,this.cancelButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createUrlInput(){const t=this.locale.t,e=new Rg(this.locale,jg);return e.label=t("Link URL"),e}_createButton(t,e,n,o){const i=new Nh(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),o&&i.delegate("execute").to(this,o),i}_createManualDecoratorSwitches(t){const e=this.createCollection();for(const n of t.manualDecorators){const o=new Ph(this.locale);o.set({name:n.id,label:n.label,withText:!0}),o.bind("isOn").toMany([n,t],"value",((t,e)=>void 0===e&&void 0===t?n.defaultValue:t)),o.on("execute",(()=>{n.set("value",!o.isOn)})),e.add(o)}return e}_createFormChildren(t){const e=this.createCollection();if(e.add(this.urlInputView),t.length){const t=new Zu;t.setTemplate({tag:"ul",children:this._manualDecoratorSwitches.map((t=>({tag:"li",children:[t],attributes:{class:["ck","ck-list__item"]}}))),attributes:{class:["ck","ck-reset","ck-list"]}}),e.add(t)}return e.add(this.saveButtonView),e.add(this.cancelButtonView),e}}var UA=n(2347),GA={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(UA.Z,GA);UA.Z.locals;class WA extends Zu{constructor(t){super(t);const e=t.t;this.focusTracker=new va,this.keystrokes=new ya,this.previewButtonView=this._createPreviewButton(),this.unlinkButtonView=this._createButton(e("Unlink"),'',"unlink"),this.editButtonView=this._createButton(e("Edit link"),Ah.pencil,"edit"),this.set("href"),this._focusables=new Du,this._focusCycler=new Qh({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-actions","ck-responsive-form"],tabindex:"-1"},children:[this.previewButtonView,this.editButtonView,this.unlinkButtonView]})}render(){super.render();[this.previewButtonView,this.editButtonView,this.unlinkButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createButton(t,e,n){const o=new Nh(this.locale);return o.set({label:t,icon:e,tooltip:!0}),o.delegate("execute").to(this,n),o}_createPreviewButton(){const t=new Nh(this.locale),e=this.bindTemplate,n=this.t;return t.set({withText:!0,tooltip:n("Open link in new tab")}),t.extendTemplate({attributes:{class:["ck","ck-link-actions__preview"],href:e.to("href",(t=>t&&yA(t))),target:"_blank",rel:"noopener noreferrer"}}),t.bind("label").to(this,"href",(t=>t||n("This link has no URL"))),t.bind("isEnabled").to(this,"href",(t=>!!t)),t.template.tag="a",t.template.eventListeners={},t}}const qA="link-ui";class $A extends F{static get requires(){return[Yg]}static get pluginName(){return"LinkUI"}init(){const t=this.editor;t.editing.view.addObserver(Gd),this.actionsView=this._createActionsView(),this.formView=this._createFormView(),this._balloon=t.plugins.get(Yg),this._createToolbarLinkButton(),this._enableUserBalloonInteractions(),t.conversion.for("editingDowncast").markerToHighlight({model:qA,view:{classes:["ck-fake-link-selection"]}}),t.conversion.for("editingDowncast").markerToElement({model:qA,view:{name:"span",classes:["ck-fake-link-selection","ck-fake-link-selection_collapsed"]}})}destroy(){super.destroy(),this.formView.destroy()}_createActionsView(){const t=this.editor,e=new WA(t.locale),n=t.commands.get("link"),o=t.commands.get("unlink");return e.bind("href").to(n,"value"),e.editButtonView.bind("isEnabled").to(n),e.unlinkButtonView.bind("isEnabled").to(o),this.listenTo(e,"edit",(()=>{this._addFormView()})),this.listenTo(e,"unlink",(()=>{t.execute("unlink"),this._hideUI()})),e.keystrokes.set("Esc",((t,e)=>{this._hideUI(),e()})),e.keystrokes.set(CA,((t,e)=>{this._addFormView(),e()})),e}_createFormView(){const t=this.editor,e=t.commands.get("link"),n=t.config.get("link.defaultProtocol"),o=new HA(t.locale,e);return o.urlInputView.fieldView.bind("value").to(e,"value"),o.urlInputView.bind("isReadOnly").to(e,"isEnabled",(t=>!t)),o.saveButtonView.bind("isEnabled").to(e),this.listenTo(o,"submit",(()=>{const{value:e}=o.urlInputView.fieldView.element,i=EA(e,n);t.execute("link",i,o.getDecoratorSwitchesState()),this._closeFormView()})),this.listenTo(o,"cancel",(()=>{this._closeFormView()})),o.keystrokes.set("Esc",((t,e)=>{this._closeFormView(),e()})),o}_createToolbarLinkButton(){const t=this.editor,e=t.commands.get("link"),n=t.t;t.keystrokes.set(CA,((t,n)=>{n(),e.isEnabled&&this._showUI(!0)})),t.ui.componentFactory.add("link",(t=>{const o=new Nh(t);return o.isEnabled=!0,o.label=n("Link"),o.icon='',o.keystroke=CA,o.tooltip=!0,o.isToggleable=!0,o.bind("isEnabled").to(e,"isEnabled"),o.bind("isOn").to(e,"value",(t=>!!t)),this.listenTo(o,"execute",(()=>this._showUI(!0))),o}))}_enableUserBalloonInteractions(){const t=this.editor.editing.view.document;this.listenTo(t,"click",(()=>{this._getSelectedLinkElement()&&this._showUI()})),this.editor.keystrokes.set("Tab",((t,e)=>{this._areActionsVisible&&!this.actionsView.focusTracker.isFocused&&(this.actionsView.focus(),e())}),{priority:"high"}),this.editor.keystrokes.set("Esc",((t,e)=>{this._isUIVisible&&(this._hideUI(),e())})),Ch({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:[this._balloon.view.element],callback:()=>this._hideUI()})}_addActionsView(){this._areActionsInPanel||this._balloon.add({view:this.actionsView,position:this._getBalloonPositionData()})}_addFormView(){if(this._isFormInPanel)return;const t=this.editor.commands.get("link");this.formView.disableCssTransitions(),this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions(),this.formView.urlInputView.fieldView.element.value=t.value||""}_closeFormView(){const t=this.editor.commands.get("link");t.restoreManualDecoratorStates(),void 0!==t.value?this._removeFormView():this._hideUI()}_removeFormView(){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this._balloon.remove(this.formView),this.editor.editing.view.focus(),this._hideFakeVisualSelection())}_showUI(t=!1){this._getSelectedLinkElement()?(this._areActionsVisible?this._addFormView():this._addActionsView(),t&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addActionsView(),t&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}_hideUI(){if(!this._isUIInPanel)return;const t=this.editor;this.stopListening(t.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),t.editing.view.focus(),this._removeFormView(),this._balloon.remove(this.actionsView),this._hideFakeVisualSelection()}_startUpdatingUI(){const t=this.editor,e=t.editing.view.document;let n=this._getSelectedLinkElement(),o=r();const i=()=>{const t=this._getSelectedLinkElement(),e=r();n&&!t||!n&&e!==o?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),n=t,o=e};function r(){return e.selection.focus.getAncestors().reverse().find((t=>t.is("element")))}this.listenTo(t.ui,"update",i),this.listenTo(this._balloon,"change:visibleView",i)}get _isFormInPanel(){return this._balloon.hasView(this.formView)}get _areActionsInPanel(){return this._balloon.hasView(this.actionsView)}get _areActionsVisible(){return this._balloon.visibleView===this.actionsView}get _isUIInPanel(){return this._isFormInPanel||this._areActionsInPanel}get _isUIVisible(){return this._balloon.visibleView==this.formView||this._areActionsVisible}_getBalloonPositionData(){const t=this.editor.editing.view,e=this.editor.model,n=t.document;let o=null;if(e.markers.has(qA)){const e=Array.from(this.editor.editing.mapper.markerNameToElements(qA)),n=t.createRange(t.createPositionBefore(e[0]),t.createPositionAfter(e[e.length-1]));o=t.domConverter.viewRangeToDom(n)}else o=()=>{const e=this._getSelectedLinkElement();return e?t.domConverter.mapViewToDom(e):t.domConverter.viewRangeToDom(n.selection.getFirstRange())};return{target:o}}_getSelectedLinkElement(){const t=this.editor.editing.view,e=t.document.selection,n=e.getSelectedElement();if(e.isCollapsed||n&&Im(n))return YA(e.getFirstPosition());{const n=e.getFirstRange().getTrimmed(),o=YA(n.start),i=YA(n.end);return o&&o==i&&t.createRangeIn(o).getTrimmed().isEqual(n)?o:null}}_showFakeVisualSelection(){const t=this.editor.model;t.change((e=>{const n=t.document.selection.getFirstRange();if(t.markers.has(qA))e.updateMarker(qA,{range:n});else if(n.start.isAtEnd){const o=n.start.getLastMatchingPosition((({item:e})=>!t.schema.isContent(e)),{boundaries:n});e.addMarker(qA,{usingOperation:!1,affectsData:!1,range:e.createRange(o,n.end)})}else e.addMarker(qA,{usingOperation:!1,affectsData:!1,range:n})}))}_hideFakeVisualSelection(){const t=this.editor.model;t.markers.has(qA)&&t.change((t=>{t.removeMarker(qA)}))}}function YA(t){return t.getAncestors().find((t=>{return(e=t).is("attributeElement")&&!!e.getCustomProperty("link");var e}))}const KA=new RegExp("(^|\\s)(((?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(((?!www\\.)|(www\\.))(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63})))(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+(?:[a-z\\u00a1-\\uffff]{2,63})))$","i");class QA extends F{static get requires(){return[_m]}static get pluginName(){return"AutoLink"}init(){const t=this.editor.model.document.selection;t.on("change:range",(()=>{this.isEnabled=!t.anchor.parent.is("element","codeBlock")})),this._enableTypingHandling()}afterInit(){this._enableEnterHandling(),this._enableShiftEnterHandling()}_enableTypingHandling(){const t=this.editor,e=new Ep(t.model,(t=>{if(!function(t){return t.length>4&&" "===t[t.length-1]&&" "!==t[t.length-2]}(t))return;const e=ZA(t.substr(0,t.length-1));return e?{url:e}:void 0}));e.on("matched:data",((e,n)=>{const{batch:o,range:i,url:r}=n;if(!o.isTyping)return;const s=i.end.getShiftedBy(-1),a=s.getShiftedBy(-r.length),c=t.model.createRange(a,s);this._applyAutoLink(r,c)})),e.bind("isEnabled").to(this)}_enableEnterHandling(){const t=this.editor,e=t.model,n=t.commands.get("enter");n&&n.on("execute",(()=>{const t=e.document.selection.getFirstPosition();if(!t.parent.previousSibling)return;const n=e.createRangeIn(t.parent.previousSibling);this._checkAndApplyAutoLinkOnRange(n)}))}_enableShiftEnterHandling(){const t=this.editor,e=t.model,n=t.commands.get("shiftEnter");n&&n.on("execute",(()=>{const t=e.document.selection.getFirstPosition(),n=e.createRange(e.createPositionAt(t.parent,0),t.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(n)}))}_checkAndApplyAutoLinkOnRange(t){const e=this.editor.model,{text:n,range:o}=xp(t,e),i=ZA(n);if(i){const t=e.createRange(o.end.getShiftedBy(-i.length),o.end);this._applyAutoLink(i,t)}}_applyAutoLink(t,e){const n=this.editor.model,o=EA(t,this.editor.config.get("link.defaultProtocol"));this.isEnabled&&function(t,e){return e.schema.checkAttributeInSelection(e.createSelection(t),"linkHref")}(e,n)&&DA(o)&&!function(t){const e=t.start.nodeAfter;return e&&e.hasAttribute("linkHref")}(e)&&this._persistAutoLink(o,e)}_persistAutoLink(t,e){const n=this.editor.model,o=this.editor.plugins.get("Delete");n.enqueueChange((i=>{i.setAttribute("linkHref",t,e),n.enqueueChange((()=>{o.requestUndoOnBackspace()}))}))}}function ZA(t){const e=KA.exec(t);return e?e[2]:null}class JA extends H{constructor(t,e){super(t),this.type=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,n=e.document,o=Array.from(n.selection.getSelectedBlocks()).filter((t=>t_(t,e.schema))),i=void 0!==t.forceValue?!t.forceValue:this.value;e.change((t=>{if(i){let e=o[o.length-1].nextSibling,n=Number.POSITIVE_INFINITY,i=[];for(;e&&"listItem"==e.name&&0!==e.getAttribute("listIndent");){const t=e.getAttribute("listIndent");t=n;)r>i.getAttribute("listIndent")&&(r=i.getAttribute("listIndent")),i.getAttribute("listIndent")==r&&t[e?"unshift":"push"](i),i=i[e?"previousSibling":"nextSibling"]}}function t_(t,e){return e.checkChild(t.parent,"listItem")&&!e.isObject(t)}class e_ extends H{constructor(t,e){super(t),this._indentBy="forward"==e?1:-1}refresh(){this.isEnabled=this._checkEnabled()}execute(){const t=this.editor.model,e=t.document;let n=Array.from(e.selection.getSelectedBlocks());t.change((t=>{const e=n[n.length-1];let o=e.nextSibling;for(;o&&"listItem"==o.name&&o.getAttribute("listIndent")>e.getAttribute("listIndent");)n.push(o),o=o.nextSibling;this._indentBy<0&&(n=n.reverse());for(const e of n){const n=e.getAttribute("listIndent")+this._indentBy;n<0?t.rename(e,"paragraph"):t.setAttribute("listIndent",n,e)}this.fire("_executeCleanup",n)}))}_checkEnabled(){const t=Ca(this.editor.model.document.selection.getSelectedBlocks());if(!t||!t.is("element","listItem"))return!1;if(this._indentBy>0){const e=t.getAttribute("listIndent"),n=t.getAttribute("listType");let o=t.previousSibling;for(;o&&o.is("element","listItem")&&o.getAttribute("listIndent")>=e;){if(o.getAttribute("listIndent")==e)return o.getAttribute("listType")==n;o=o.previousSibling}return!1}return!0}}function n_(t,e){const n=e.mapper,o=e.writer,i="numbered"==t.getAttribute("listType")?"ol":"ul",r=function(t){const e=t.createContainerElement("li");return e.getFillerOffset=h_,e}(o),s=o.createContainerElement(i,null);return o.insert(o.createPositionAt(s,0),r),n.bindElements(t,r),r}function o_(t,e,n,o){const i=e.parent,r=n.mapper,s=n.writer;let a=r.toViewPosition(o.createPositionBefore(t));const c=s_(t.previousSibling,{sameIndent:!0,smallerIndent:!0,listIndent:t.getAttribute("listIndent")}),l=t.previousSibling;if(c&&c.getAttribute("listIndent")==t.getAttribute("listIndent")){const t=r.toViewElement(c);a=s.breakContainer(s.createPositionAfter(t))}else if(l&&"listItem"==l.name){a=r.toViewPosition(o.createPositionAt(l,"end"));const t=r.findMappedViewAncestor(a),e=function(t){for(const e of t.getChildren())if("ul"==e.name||"ol"==e.name)return e;return null}(t);a=e?s.createPositionBefore(e):s.createPositionAt(t,"end")}else a=r.toViewPosition(o.createPositionBefore(t));if(a=r_(a),s.insert(a,i),l&&"listItem"==l.name){const t=r.toViewElement(l),n=s.createRange(s.createPositionAt(t,0),a).getWalker({ignoreElementEnd:!0});for(const t of n)if(t.item.is("element","li")){const o=s.breakContainer(s.createPositionBefore(t.item)),i=t.item.parent,r=s.createPositionAt(e,"end");i_(s,r.nodeBefore,r.nodeAfter),s.move(s.createRangeOn(i),r),n.position=o}}else{const n=i.nextSibling;if(n&&(n.is("element","ul")||n.is("element","ol"))){let o=null;for(const e of n.getChildren()){const n=r.toModelElement(e);if(!(n&&n.getAttribute("listIndent")>t.getAttribute("listIndent")))break;o=e}o&&(s.breakContainer(s.createPositionAfter(o)),s.move(s.createRangeOn(o.parent),s.createPositionAt(e,"end")))}}i_(s,i,i.nextSibling),i_(s,i.previousSibling,i)}function i_(t,e,n){return!e||!n||"ul"!=e.name&&"ol"!=e.name||e.name!=n.name||e.getAttribute("class")!==n.getAttribute("class")?null:t.mergeContainers(t.createPositionAfter(e))}function r_(t){return t.getLastMatchingPosition((t=>t.item.is("uiElement")))}function s_(t,e){const n=!!e.sameIndent,o=!!e.smallerIndent,i=e.listIndent;let r=t;for(;r&&"listItem"==r.name;){const t=r.getAttribute("listIndent");if(n&&i==t||o&&i>t)return r;r="forward"===e.direction?r.nextSibling:r.previousSibling}return null}function a_(t,e,n,o){t.ui.componentFactory.add(e,(i=>{const r=t.commands.get(e),s=new Nh(i);return s.set({label:n,icon:o,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.on("execute",(()=>{t.execute(e),t.editing.view.focus()})),s}))}function c_(t,e){const n=[],o=t.parent,i={ignoreElementEnd:!1,startPosition:t,shallow:!0,direction:e},r=o.getAttribute("listIndent"),s=[...new Qa(i)].filter((t=>t.item.is("element"))).map((t=>t.item));for(const t of s){if(!t.is("element","listItem"))break;if(t.getAttribute("listIndent")r)){if(t.getAttribute("listType")!==o.getAttribute("listType"))break;if(t.getAttribute("listStyle")!==o.getAttribute("listStyle"))break;if(t.getAttribute("listReversed")!==o.getAttribute("listReversed"))break;if(t.getAttribute("listStart")!==o.getAttribute("listStart"))break;"backward"===e?n.unshift(t):n.push(t)}}return n}function l_(t){let e=[...t.document.selection.getSelectedBlocks()].filter((t=>t.is("element","listItem"))).map((e=>{const n=t.change((t=>t.createPositionAt(e,0)));return[...c_(n,"backward"),...c_(n,"forward")]})).flat();return e=[...new Set(e)],e}const d_=["disc","circle","square"],u_=["decimal","decimal-leading-zero","lower-roman","upper-roman","lower-latin","upper-latin"];function h_(){const t=!this.isEmpty&&("ul"==this.getChild(0).name||"ol"==this.getChild(0).name);return this.isEmpty||t?0:Li.call(this)}function g_(t){return(e,n,o)=>{const i=o.consumable;if(!i.test(n.item,"insert")||!i.test(n.item,"attribute:listType")||!i.test(n.item,"attribute:listIndent"))return;i.consume(n.item,"insert"),i.consume(n.item,"attribute:listType"),i.consume(n.item,"attribute:listIndent");const r=n.item;o_(r,n_(r,o),o,t)}}function m_(t,e,n){if(!n.consumable.test(e.item,t.name))return;const o=n.mapper.toViewElement(e.item),i=n.writer;i.breakContainer(i.createPositionBefore(o)),i.breakContainer(i.createPositionAfter(o));const r=o.parent,s="numbered"==e.attributeNewValue?"ol":"ul";i.rename(s,r)}function p_(t,e,n){n.consumable.consume(e.item,t.name);const o=n.mapper.toViewElement(e.item).parent,i=n.writer;i_(i,o,o.nextSibling),i_(i,o.previousSibling,o)}function f_(t,e,n){if(n.consumable.test(e.item,t.name)&&"listItem"!=e.item.name){let t=n.mapper.toViewPosition(e.range.start);const o=n.writer,i=[];for(;("ul"==t.parent.name||"ol"==t.parent.name)&&(t=o.breakContainer(t),"li"==t.parent.name);){const e=t,n=o.createPositionAt(t.parent,"end");if(!e.isEqual(n)){const t=o.remove(o.createRange(e,n));i.push(t)}t=o.createPositionAfter(t.parent)}if(i.length>0){for(let e=0;e0){const e=i_(o,n,n.nextSibling);e&&e.parent==n&&t.offset--}}i_(o,t.nodeBefore,t.nodeAfter)}}}function k_(t,e,n){const o=n.mapper.toViewPosition(e.position),i=o.nodeBefore,r=o.nodeAfter;i_(n.writer,i,r)}function b_(t,e,n){if(n.consumable.consume(e.viewItem,{name:!0})){const t=n.writer,o=t.createElement("listItem"),i=function(t){let e=0,n=t.parent;for(;n;){if(n.is("element","li"))e++;else{const t=n.previousSibling;t&&t.is("element","li")&&e++}n=n.parent}return e}(e.viewItem);t.setAttribute("listIndent",i,o);const r=e.viewItem.parent&&"ol"==e.viewItem.parent.name?"numbered":"bulleted";if(t.setAttribute("listType",r,o),!n.safeInsert(o,e.modelCursor))return;const s=function(t,e,n){const{writer:o,schema:i}=n;let r=o.createPositionAfter(t);for(const s of e)if("ul"==s.name||"ol"==s.name)r=n.convertItem(s,r).modelCursor;else{const e=n.convertItem(s,o.createPositionAt(t,"end")),a=e.modelRange.start.nodeAfter;a&&a.is("element")&&!i.checkChild(t,a.name)&&(t=e.modelCursor.parent.is("element","listItem")?e.modelCursor.parent:v_(e.modelCursor),r=o.createPositionAfter(t))}return r}(o,e.viewItem.getChildren(),n);e.modelRange=t.createRange(e.modelCursor,s),n.updateConversionResult(o,e)}}function w_(t,e,n){if(n.consumable.test(e.viewItem,{name:!0})){const t=Array.from(e.viewItem.getChildren());for(const e of t){!(e.is("element","li")||x_(e))&&e._remove()}}}function A_(t,e,n){if(n.consumable.test(e.viewItem,{name:!0})){if(0===e.viewItem.childCount)return;const t=[...e.viewItem.getChildren()];let n=!1;for(const e of t)n&&!x_(e)&&e._remove(),x_(e)&&(n=!0)}}function __(t){return(e,n)=>{if(n.isPhantom)return;const o=n.modelPosition.nodeBefore;if(o&&o.is("element","listItem")){const e=n.mapper.toViewElement(o),i=e.getAncestors().find(x_),r=t.createPositionAt(e,0).getWalker();for(const t of r){if("elementStart"==t.type&&t.item.is("element","li")){n.viewPosition=t.previousPosition;break}if("elementEnd"==t.type&&t.item==i){n.viewPosition=t.nextPosition;break}}}}}function C_(t,[e,n,o]){let i,r=e.is("documentFragment")?e.getChild(0):e;if(i=n?this.createSelection(n,o):this.document.selection,r&&r.is("element","listItem")){const t=i.getFirstPosition();let e=null;if(t.parent.is("element","listItem")?e=t.parent:t.nodeBefore&&t.nodeBefore.is("element","listItem")&&(e=t.nodeBefore),e){const t=e.getAttribute("listIndent");if(t>0)for(;r&&r.is("element","listItem");)r._setAttribute("listIndent",r.getAttribute("listIndent")+t),r=r.nextSibling}}}function v_(t){const e=new Qa({startPosition:t});let n;do{n=e.next()}while(!n.value.item.is("element","listItem"));return n.value.item}function y_(t,e,n,o,i,r){const s=s_(e.nodeBefore,{sameIndent:!0,smallerIndent:!0,listIndent:t,foo:"b"}),a=i.mapper,c=i.writer,l=s?s.getAttribute("listIndent"):null;let d;if(s)if(l==t){const t=a.toViewElement(s).parent;d=c.createPositionAfter(t)}else{const t=r.createPositionAt(s,"end");d=a.toViewPosition(t)}else d=n;d=r_(d);for(const t of[...o.getChildren()])x_(t)&&(d=c.move(c.createRangeOn(t),d).end,i_(c,t,t.nextSibling),i_(c,t.previousSibling,t))}function x_(t){return t.is("element","ol")||t.is("element","ul")}class E_ extends F{static get pluginName(){return"ListEditing"}static get requires(){return[hm,_m]}init(){const t=this.editor;t.model.schema.register("listItem",{inheritAllFrom:"$block",allowAttributes:["listType","listIndent"]});const e=t.data,n=t.editing;var o;t.model.document.registerPostFixer((e=>function(t,e){const n=t.document.differ.getChanges(),o=new Map;let i=!1;for(const o of n)if("insert"==o.type&&"listItem"==o.name)r(o.position);else if("insert"==o.type&&"listItem"!=o.name){if("$text"!=o.name){const n=o.position.nodeAfter;n.hasAttribute("listIndent")&&(e.removeAttribute("listIndent",n),i=!0),n.hasAttribute("listType")&&(e.removeAttribute("listType",n),i=!0),n.hasAttribute("listStyle")&&(e.removeAttribute("listStyle",n),i=!0),n.hasAttribute("listReversed")&&(e.removeAttribute("listReversed",n),i=!0),n.hasAttribute("listStart")&&(e.removeAttribute("listStart",n),i=!0);for(const e of Array.from(t.createRangeIn(n)).filter((t=>t.item.is("element","listItem"))))r(e.previousPosition)}r(o.position.getShiftedBy(o.length))}else"remove"==o.type&&"listItem"==o.name?r(o.position):("attribute"==o.type&&"listIndent"==o.attributeKey||"attribute"==o.type&&"listType"==o.attributeKey)&&r(o.range.start);for(const t of o.values())s(t),a(t);return i;function r(t){const e=t.nodeBefore;if(e&&e.is("element","listItem")){let t=e;if(o.has(t))return;for(let e=t.previousSibling;e&&e.is("element","listItem");e=t.previousSibling)if(t=e,o.has(t))return;o.set(e,t)}else{const e=t.nodeAfter;e&&e.is("element","listItem")&&o.set(e,e)}}function s(t){let n=0,o=null;for(;t&&t.is("element","listItem");){const r=t.getAttribute("listIndent");if(r>n){let s;null===o?(o=r-n,s=n):(o>r&&(o=r),s=r-o),e.setAttribute("listIndent",s,t),i=!0}else o=null,n=t.getAttribute("listIndent")+1;t=t.nextSibling}}function a(t){let n=[],o=null;for(;t&&t.is("element","listItem");){const r=t.getAttribute("listIndent");if(o&&o.getAttribute("listIndent")>r&&(n=n.slice(0,r+1)),0!=r)if(n[r]){const o=n[r];t.getAttribute("listType")!=o&&(e.setAttribute("listType",o,t),i=!0)}else n[r]=t.getAttribute("listType");o=t,t=t.nextSibling}}}(t.model,e))),n.mapper.registerViewToModelLength("li",D_),e.mapper.registerViewToModelLength("li",D_),n.mapper.on("modelToViewPosition",__(n.view)),n.mapper.on("viewToModelPosition",(o=t.model,(t,e)=>{const n=e.viewPosition,i=n.parent,r=e.mapper;if("ul"==i.name||"ol"==i.name){if(n.isAtEnd){const t=r.toModelElement(n.nodeBefore),i=r.getModelLength(n.nodeBefore);e.modelPosition=o.createPositionBefore(t).getShiftedBy(i)}else{const t=r.toModelElement(n.nodeAfter);e.modelPosition=o.createPositionBefore(t)}t.stop()}else if("li"==i.name&&n.nodeBefore&&("ul"==n.nodeBefore.name||"ol"==n.nodeBefore.name)){const s=r.toModelElement(i);let a=1,c=n.nodeBefore;for(;c&&x_(c);)a+=r.getModelLength(c),c=c.previousSibling;e.modelPosition=o.createPositionBefore(s).getShiftedBy(a),t.stop()}})),e.mapper.on("modelToViewPosition",__(n.view)),t.conversion.for("editingDowncast").add((e=>{e.on("insert",f_,{priority:"high"}),e.on("insert:listItem",g_(t.model)),e.on("attribute:listType:listItem",m_,{priority:"high"}),e.on("attribute:listType:listItem",p_,{priority:"low"}),e.on("attribute:listIndent:listItem",function(t){return(e,n,o)=>{if(!o.consumable.consume(n.item,"attribute:listIndent"))return;const i=o.mapper.toViewElement(n.item),r=o.writer;r.breakContainer(r.createPositionBefore(i)),r.breakContainer(r.createPositionAfter(i));const s=i.parent,a=s.previousSibling,c=r.createRangeOn(s);r.remove(c),a&&a.nextSibling&&i_(r,a,a.nextSibling),y_(n.attributeOldValue+1,n.range.start,c.start,i,o,t),o_(n.item,i,o,t);for(const t of n.item.getChildren())o.consumable.consume(t,"insert")}}(t.model)),e.on("remove:listItem",function(t){return(e,n,o)=>{const i=o.mapper.toViewPosition(n.position).getLastMatchingPosition((t=>!t.item.is("element","li"))).nodeAfter,r=o.writer;r.breakContainer(r.createPositionBefore(i)),r.breakContainer(r.createPositionAfter(i));const s=i.parent,a=s.previousSibling,c=r.createRangeOn(s),l=r.remove(c);a&&a.nextSibling&&i_(r,a,a.nextSibling),y_(o.mapper.toModelElement(i).getAttribute("listIndent")+1,n.position,c.start,i,o,t);for(const t of r.createRangeIn(l).getItems())o.mapper.unbindViewElement(t);e.stop()}}(t.model)),e.on("remove",k_,{priority:"low"})})),t.conversion.for("dataDowncast").add((e=>{e.on("insert",f_,{priority:"high"}),e.on("insert:listItem",g_(t.model))})),t.conversion.for("upcast").add((t=>{t.on("element:ul",w_,{priority:"high"}),t.on("element:ol",w_,{priority:"high"}),t.on("element:li",A_,{priority:"high"}),t.on("element:li",b_)})),t.model.on("insertContent",C_,{priority:"high"}),t.commands.add("numberedList",new JA(t,"numbered")),t.commands.add("bulletedList",new JA(t,"bulleted")),t.commands.add("indentList",new e_(t,"forward")),t.commands.add("outdentList",new e_(t,"backward"));const i=n.view.document;this.listenTo(i,"enter",((t,e)=>{const n=this.editor.model.document,o=n.selection.getLastPosition().parent;n.selection.isCollapsed&&"listItem"==o.name&&o.isEmpty&&(this.editor.execute("outdentList"),e.preventDefault(),t.stop())}),{context:"li"}),this.listenTo(i,"delete",((t,e)=>{if("backward"!==e.direction)return;const n=this.editor.model.document.selection;if(!n.isCollapsed)return;const o=n.getFirstPosition();if(!o.isAtStart)return;const i=o.parent;if("listItem"!==i.name)return;i.previousSibling&&"listItem"===i.previousSibling.name||(this.editor.execute("outdentList"),e.preventDefault(),t.stop())}),{context:"li"}),this.listenTo(t.editing.view.document,"tab",((e,n)=>{const o=n.shiftKey?"outdentList":"indentList";this.editor.commands.get(o).isEnabled&&(t.execute(o),n.stopPropagation(),n.preventDefault(),e.stop())}),{context:"li"})}afterInit(){const t=this.editor.commands,e=t.get("indent"),n=t.get("outdent");e&&e.registerChildCommand(t.get("indentList")),n&&n.registerChildCommand(t.get("outdentList"))}}function D_(t){let e=1;for(const n of t.getChildren())if("ul"==n.name||"ol"==n.name)for(const t of n.getChildren())e+=D_(t);return e}const I_='',T_='';class S_ extends F{static get pluginName(){return"ListUI"}init(){const t=this.editor.t;a_(this.editor,"numberedList",t("Numbered List"),I_),a_(this.editor,"bulletedList",t("Bulleted List"),T_)}}class M_ extends H{constructor(t,e){super(t),this._defaultType=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){this._tryToConvertItemsToList(t);const e=this.editor.model,n=l_(e);n.length&&e.change((e=>{for(const o of n)e.setAttribute("listStyle",t.type||this._defaultType,o)}))}_getValue(){const t=this.editor.model.document.selection.getFirstPosition().parent;return t&&t.is("element","listItem")?t.getAttribute("listStyle"):null}_checkEnabled(){const t=this.editor,e=t.commands.get("numberedList"),n=t.commands.get("bulletedList");return e.isEnabled||n.isEnabled}_tryToConvertItemsToList(t){if(!t.type)return;const e=(n=t.type,d_.includes(n)?"bulleted":u_.includes(n)?"numbered":null);var n;if(!e)return;const o=this.editor,i=e+"List";o.commands.get(i).value||o.execute(i)}}class N_ extends H{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute(t={}){const e=this.editor.model,n=l_(e).filter((t=>"numbered"==t.getAttribute("listType")));e.change((e=>{for(const o of n)e.setAttribute("listReversed",!!t.reversed,o)}))}_getValue(){const t=this.editor.model.document.selection.getFirstPosition().parent;return t&&t.is("element","listItem")&&"numbered"==t.getAttribute("listType")?t.getAttribute("listReversed"):null}}class B_ extends H{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute(t={}){const e=this.editor.model,n=l_(e).filter((t=>"numbered"==t.getAttribute("listType")));e.change((e=>{for(const o of n)e.setAttribute("listStart",t.startIndex||1,o)}))}_getValue(){const t=this.editor.model.document.selection.getFirstPosition().parent;return t&&t.is("element","listItem")&&"numbered"==t.getAttribute("listType")?t.getAttribute("listStart"):null}}const z_="default";class P_ extends F{static get requires(){return[E_]}static get pluginName(){return"ListPropertiesEditing"}constructor(t){super(t),t.config.define("list",{properties:{styles:!0,startIndex:!1,reversed:!1}})}init(){const t=this.editor,e=t.model,n=function(t){const e=[];t.styles&&e.push({attributeName:"listStyle",defaultValue:z_,addCommand(t){t.commands.add("listStyle",new M_(t,z_))},appliesToListItem:()=>!0,setAttributeOnDowncast(t,e,n){e&&e!==z_?t.setStyle("list-style-type",e,n):t.removeStyle("list-style-type",n)},getAttributeOnUpcast:t=>t.getStyle("list-style-type")||z_});t.reversed&&e.push({attributeName:"listReversed",defaultValue:!1,addCommand(t){t.commands.add("listReversed",new N_(t))},appliesToListItem:t=>"numbered"==t.getAttribute("listType"),setAttributeOnDowncast(t,e,n){e?t.setAttribute("reversed","reversed",n):t.removeAttribute("reversed",n)},getAttributeOnUpcast:t=>t.hasAttribute("reversed")});t.startIndex&&e.push({attributeName:"listStart",defaultValue:1,addCommand(t){t.commands.add("listStart",new B_(t))},appliesToListItem:t=>"numbered"==t.getAttribute("listType"),setAttributeOnDowncast(t,e,n){1!=e?t.setAttribute("start",e,n):t.removeAttribute("start",n)},getAttributeOnUpcast:t=>t.getAttribute("start")||1});return e}(t.config.get("list.properties"));e.schema.extend("listItem",{allowAttributes:n.map((t=>t.attributeName))});for(const e of n)e.addCommand(t);var o;this.listenTo(t.commands.get("indentList"),"_executeCleanup",function(t,e){return(n,o)=>{const i=o[0],r=i.getAttribute("listIndent"),s=o.filter((t=>t.getAttribute("listIndent")===r));let a=null;i.previousSibling.getAttribute("listIndent")+1!==r&&(a=s_(i.previousSibling,{sameIndent:!0,direction:"backward",listIndent:r})),t.model.change((t=>{for(const n of s)for(const o of e)if(o.appliesToListItem(n)){const e=null==a?o.defaultValue:a.getAttribute(o.attributeName);t.setAttribute(o.attributeName,e,n)}}))}}(t,n)),this.listenTo(t.commands.get("outdentList"),"_executeCleanup",function(t,e){return(n,o)=>{if(!(o=o.reverse().filter((t=>t.is("element","listItem")))).length)return;const i=o[0].getAttribute("listIndent"),r=o[0].getAttribute("listType");let s=o[0].previousSibling;if(s.is("element","listItem"))for(;s.getAttribute("listIndent")!==i;)s=s.previousSibling;else s=null;s||(s=o[o.length-1].nextSibling),s&&s.is("element","listItem")&&s.getAttribute("listType")===r&&t.model.change((t=>{const n=o.filter((t=>t.getAttribute("listIndent")===i));for(const o of n)for(const n of e)if(n.appliesToListItem(o)){const e=n.attributeName,i=s.getAttribute(e);t.setAttribute(e,i,o)}}))}}(t,n)),this.listenTo(t.commands.get("bulletedList"),"_executeCleanup",R_(t)),this.listenTo(t.commands.get("numberedList"),"_executeCleanup",R_(t)),e.document.registerPostFixer(function(t,e){return n=>{let o=!1;const i=j_(t.model.document.differ.getChanges()).filter((t=>"todo"!==t.getAttribute("listType")));if(!i.length)return o;let r=i[i.length-1].nextSibling;if((!r||!r.is("element","listItem"))&&(r=i[0].previousSibling,r)){const t=i[0].getAttribute("listIndent");for(;r.is("element","listItem")&&r.getAttribute("listIndent")!==t&&(r=r.previousSibling,r););}for(const t of e){const e=t.attributeName;for(const s of i)if(t.appliesToListItem(s))if(s.hasAttribute(e)){const i=s.previousSibling;O_(i,s,t.attributeName)&&(n.setAttribute(e,i.getAttribute(e),s),o=!0)}else L_(r,s,t)?n.setAttribute(e,r.getAttribute(e),s):n.setAttribute(e,t.defaultValue,s),o=!0;else n.removeAttribute(e,s)}return o}}(t,n)),t.conversion.for("upcast").add((o=n,t=>{t.on("element:li",((t,e,n)=>{const i=e.viewItem.parent,r=e.modelRange.start.nodeAfter||e.modelRange.end.nodeBefore;for(const t of o)if(t.appliesToListItem(r)){const e=t.getAttributeOnUpcast(i);n.writer.setAttribute(t.attributeName,e,r)}}),{priority:"low"})})),t.conversion.for("downcast").add(function(t){return n=>{for(const o of t)n.on(`attribute:${o.attributeName}:listItem`,((t,n,i)=>{const r=i.writer,s=n.item,a=s_(s.previousSibling,{sameIndent:!0,listIndent:s.getAttribute("listIndent"),direction:"backward"}),c=i.mapper.toViewElement(s);e(s,a)||r.breakContainer(r.createPositionBefore(c)),o.setAttributeOnDowncast(r,n.attributeNewValue,c.parent)}),{priority:"low"})};function e(t,e){return e&&t.getAttribute("listType")===e.getAttribute("listType")&&t.getAttribute("listIndent")===e.getAttribute("listIndent")&&t.getAttribute("listStyle")===e.getAttribute("listStyle")&&t.getAttribute("listReversed")===e.getAttribute("listReversed")&&t.getAttribute("listStart")===e.getAttribute("listStart")}}(n)),this._mergeListAttributesWhileMergingLists(n)}afterInit(){const t=this.editor;t.commands.get("todoList")&&t.model.document.registerPostFixer(function(t){return e=>{const n=j_(t.model.document.differ.getChanges()).filter((t=>"todo"===t.getAttribute("listType")&&(t.hasAttribute("listStyle")||t.hasAttribute("listReversed")||t.hasAttribute("listStart"))));if(!n.length)return!1;for(const t of n)e.removeAttribute("listStyle",t),e.removeAttribute("listReversed",t),e.removeAttribute("listStart",t);return!0}}(t))}_mergeListAttributesWhileMergingLists(t){const e=this.editor.model;let n;this.listenTo(e,"deleteContent",((t,[e])=>{const o=e.getFirstPosition(),i=e.getLastPosition();if(o.parent===i.parent)return;if(!o.parent.is("element","listItem"))return;const r=i.parent.nextSibling;if(!r||!r.is("element","listItem"))return;const s=s_(o.parent,{sameIndent:!0,listIndent:r.getAttribute("listIndent")});s&&s.getAttribute("listType")===r.getAttribute("listType")&&(n=s)}),{priority:"high"}),this.listenTo(e,"deleteContent",(()=>{n&&(e.change((e=>{const o=s_(n.nextSibling,{sameIndent:!0,listIndent:n.getAttribute("listIndent"),direction:"forward"});if(!o)return void(n=null);const i=[o,...c_(e.createPositionAt(o,0),"forward")];for(const o of i)for(const i of t)if(i.appliesToListItem(o)){const t=i.attributeName,r=n.getAttribute(t);e.setAttribute(t,r,o)}})),n=null)}),{priority:"low"})}}function L_(t,e,n){if(!t)return!1;const o=t.getAttribute(n.attributeName);return!!o&&(o!=n.defaultValue&&t.getAttribute("listType")===e.getAttribute("listType"))}function O_(t,e,n){if(!t||!t.is("element","listItem"))return!1;if(e.getAttribute("listType")!==t.getAttribute("listType"))return!1;const o=t.getAttribute("listIndent");if(o<1||o!==e.getAttribute("listIndent"))return!1;const i=t.getAttribute(n);return!(!i||i===e.getAttribute(n))}function R_(t){return(e,n)=>{n=n.filter((t=>t.is("element","listItem"))),t.model.change((t=>{for(const e of n)t.removeAttribute("listStyle",e)}))}}function j_(t){const e=[];for(const n of t){const t=F_(n);t&&t.is("element","listItem")&&e.push(t)}return e}function F_(t){return"attribute"===t.type?t.range.start.nodeAfter:"insert"===t.type?t.position.nodeAfter:null}var V_=n(4721),H_={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(V_.Z,H_);V_.Z.locals;class U_ extends Zu{constructor(t,e){super(t);const n=this.bindTemplate;this.set("isCollapsed",!1),this.set("label",""),this.buttonView=this._createButtonView(),this.children=this.createCollection(),this.set("_collapsibleAriaLabelUid"),e&&this.children.addMany(e),this.setTemplate({tag:"div",attributes:{class:["ck","ck-collapsible",n.if("isCollapsed","ck-collapsible_collapsed")]},children:[this.buttonView,{tag:"div",attributes:{class:["ck","ck-collapsible__children"],role:"region",hidden:n.if("isCollapsed","hidden"),"aria-labelledby":n.to("_collapsibleAriaLabelUid")},children:this.children}]})}render(){super.render(),this._collapsibleAriaLabelUid=this.buttonView.labelView.element.id}_createButtonView(){const t=new Nh(this.locale),e=t.bindTemplate;return t.set({withText:!0,icon:Vh}),t.extendTemplate({attributes:{"aria-expanded":e.to("isOn",(t=>String(t)))}}),t.bind("label").to(this),t.bind("isOn").to(this,"isCollapsed",(t=>!t)),t.on("execute",(()=>{this.isCollapsed=!this.isCollapsed})),t}}var G_=n(6082),W_={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(G_.Z,W_);G_.Z.locals;class q_ extends Zu{constructor(t,{enabledProperties:e,styleButtonViews:n,styleGridAriaLabel:o}){super(t);const i=["ck","ck-list-properties"];this.children=this.createCollection(),this.stylesView=null,this.additionalPropertiesCollapsibleView=null,this.startIndexFieldView=null,this.reversedSwitchButtonView=null,this.focusTracker=new va,this.keystrokes=new ya,this.focusables=new Du,this.focusCycler=new Qh({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),e.styles?(this.stylesView=this._createStylesView(n,o),this.children.add(this.stylesView)):i.push("ck-list-properties_without-styles"),(e.startIndex||e.reversed)&&(this._addNumberedListPropertyViews(e,n),i.push("ck-list-properties_with-numbered-properties")),this.setTemplate({tag:"div",attributes:{class:i},children:this.children})}render(){if(super.render(),this.stylesView){this.focusables.add(this.stylesView),this.focusTracker.add(this.stylesView.element),(this.startIndexFieldView||this.reversedSwitchButtonView)&&(this.focusables.add(this.children.last.buttonView),this.focusTracker.add(this.children.last.buttonView.element));for(const t of this.stylesView.children)this.stylesView.focusTracker.add(t.element);xh({keystrokeHandler:this.stylesView.keystrokes,focusTracker:this.stylesView.focusTracker,gridItems:this.stylesView.children,numberOfColumns:()=>Ao.window.getComputedStyle(this.stylesView.element).getPropertyValue("grid-template-columns").split(" ").length})}if(this.startIndexFieldView){this.focusables.add(this.startIndexFieldView),this.focusTracker.add(this.startIndexFieldView.element),this.listenTo(this.startIndexFieldView.element,"selectstart",((t,e)=>{e.stopPropagation()}),{priority:"high"});const t=t=>t.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t)}this.reversedSwitchButtonView&&(this.focusables.add(this.reversedSwitchButtonView),this.focusTracker.add(this.reversedSwitchButtonView.element)),this.keystrokes.listenTo(this.element)}focus(){this.focusCycler.focusFirst()}focusLast(){this.focusCycler.focusLast()}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createStylesView(t,e){const n=new Zu(this.locale);return n.children=n.createCollection(this.locale),n.children.addMany(t),n.setTemplate({tag:"div",attributes:{"aria-label":e,class:["ck","ck-list-styles-list"]},children:n.children}),n.children.delegate("execute").to(this),n.focus=function(){this.children.first.focus()},n.focusTracker=new va,n.keystrokes=new ya,n.render(),n.keystrokes.listenTo(n.element),n}_addNumberedListPropertyViews(t){const e=this.locale.t,n=[];t.startIndex&&(this.startIndexFieldView=this._createStartIndexField(),n.push(this.startIndexFieldView)),t.reversed&&(this.reversedSwitchButtonView=this._createReversedSwitchButton(),n.push(this.reversedSwitchButtonView)),t.styles?(this.additionalPropertiesCollapsibleView=new U_(this.locale,n),this.additionalPropertiesCollapsibleView.set({label:e("List properties"),isCollapsed:!0}),this.additionalPropertiesCollapsibleView.buttonView.bind("isEnabled").toMany(n,"isEnabled",((...t)=>t.some((t=>t)))),this.additionalPropertiesCollapsibleView.buttonView.on("change:isEnabled",((t,e,n)=>{n||(this.additionalPropertiesCollapsibleView.isCollapsed=!0)})),this.children.add(this.additionalPropertiesCollapsibleView)):this.children.addMany(n)}_createStartIndexField(){const t=this.locale.t,e=new Rg(this.locale,Fg);return e.set({label:t("Start at"),class:"ck-numbered-list-properties__start-index"}),e.fieldView.set({min:1,step:1,value:1,inputMode:"numeric"}),e.fieldView.on("input",(()=>{const n=e.fieldView.element,o=n.valueAsNumber;Number.isNaN(o)||(n.checkValidity()?this.fire("listStart",{startIndex:o}):e.errorText=t("Start index must be greater than 0."))})),e}_createReversedSwitchButton(){const t=this.locale.t,e=new Ph(this.locale);return e.set({withText:!0,label:t("Reversed order"),class:"ck-numbered-list-properties__reversed-order"}),e.delegate("execute").to(this,"listReversed"),e}}var $_=n(2417),Y_={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()($_.Z,Y_);$_.Z.locals;class K_ extends F{static get pluginName(){return"ListPropertiesUI"}init(){const t=this.editor,e=t.locale.t,n=t.config.get("list.properties");n.styles&&t.ui.componentFactory.add("bulletedList",Q_({editor:t,parentCommandName:"bulletedList",buttonLabel:e("Bulleted List"),buttonIcon:T_,styleGridAriaLabel:e("Bulleted list styles toolbar"),styleDefinitions:[{label:e("Toggle the disc list style"),tooltip:e("Disc"),type:"disc",icon:''},{label:e("Toggle the circle list style"),tooltip:e("Circle"),type:"circle",icon:''},{label:e("Toggle the square list style"),tooltip:e("Square"),type:"square",icon:''}]})),(n.styles||n.startIndex||n.reversed)&&t.ui.componentFactory.add("numberedList",Q_({editor:t,parentCommandName:"numberedList",buttonLabel:e("Numbered List"),buttonIcon:I_,styleGridAriaLabel:e("Numbered list styles toolbar"),styleDefinitions:[{label:e("Toggle the decimal list style"),tooltip:e("Decimal"),type:"decimal",icon:''},{label:e("Toggle the decimal with leading zero list style"),tooltip:e("Decimal with leading zero"),type:"decimal-leading-zero",icon:''},{label:e("Toggle the lower–roman list style"),tooltip:e("Lower–roman"),type:"lower-roman",icon:''},{label:e("Toggle the upper–roman list style"),tooltip:e("Upper-roman"),type:"upper-roman",icon:''},{label:e("Toggle the lower–latin list style"),tooltip:e("Lower-latin"),type:"lower-latin",icon:''},{label:e("Toggle the upper–latin list style"),tooltip:e("Upper-latin"),type:"upper-latin",icon:''}]}))}}function Q_({editor:t,parentCommandName:e,buttonLabel:n,buttonIcon:o,styleGridAriaLabel:i,styleDefinitions:r}){const s=t.commands.get(e);return a=>{const c=kg(a,Wh),l=c.buttonView;c.bind("isEnabled").to(s),c.class="ck-list-styles-dropdown",l.on("execute",(()=>{t.execute(e),t.editing.view.focus()})),l.set({label:n,icon:o,tooltip:!0,isToggleable:!0}),l.bind("isOn").to(s,"value",(t=>!!t));const d=function({editor:t,dropdownView:e,parentCommandName:n,styleDefinitions:o,styleGridAriaLabel:i}){const r=t.locale,s=t.config.get("list.properties");let a;"numberedList"!=n&&(s.startIndex=!1,s.reversed=!1);if(s.styles){const e=t.commands.get("listStyle"),i=function({editor:t,listStyleCommand:e,parentCommandName:n}){const o=t.locale,i=t.commands.get(n);return({label:n,type:r,icon:s,tooltip:a})=>{const c=new Nh(o);return c.set({label:n,icon:s,tooltip:a}),e.on("change:value",(()=>{c.isOn=e.value===r})),c.on("execute",(()=>{i.value?e.value!==r?t.execute("listStyle",{type:r}):t.execute("listStyle",{type:e._defaultType}):t.model.change((()=>{t.execute("listStyle",{type:r})}))})),c}}({editor:t,parentCommandName:n,listStyleCommand:e}),r="function"==typeof e.isStyleTypeSupported?t=>e.isStyleTypeSupported(t.type):()=>!0;a=o.filter(r).map(i)}const c=new q_(r,{styleGridAriaLabel:i,enabledProperties:s,styleButtonViews:a});s.styles&&Ag(e,(()=>c.stylesView.children.find((t=>t.isOn))));if(s.startIndex){const e=t.commands.get("listStart");c.startIndexFieldView.bind("isEnabled").to(e),c.startIndexFieldView.fieldView.bind("value").to(e),c.on("listStart",((e,n)=>t.execute("listStart",n)))}if(s.reversed){const e=t.commands.get("listReversed");c.reversedSwitchButtonView.bind("isEnabled").to(e),c.reversedSwitchButtonView.bind("isOn").to(e,"value"),c.on("listReversed",(()=>{const n=e.value;t.execute("listReversed",{reversed:!n})}))}return c.delegate("execute").to(e),c}({editor:t,dropdownView:c,parentCommandName:e,styleGridAriaLabel:i,styleDefinitions:r});return c.panelView.children.add(d),c.on("execute",(()=>{t.editing.view.focus()})),c}}function Z_(t,e){return t=>{t.on("attribute:url:media",n)};function n(n,o,i){if(!i.consumable.consume(o.item,n.name))return;const r=o.attributeNewValue,s=i.writer,a=i.mapper.toViewElement(o.item),c=[...a.getChildren()].find((t=>t.getCustomProperty("media-content")));s.remove(c);const l=t.getMediaViewElement(s,r,e);s.insert(s.createPositionAt(a,0),l)}}function J_(t,e,n,o){return t.createContainerElement("figure",{class:"media"},[e.getMediaViewElement(t,n,o),t.createSlot()])}function X_(t){const e=t.getSelectedElement();return e&&e.is("element","media")?e:null}function tC(t,e,n,o){t.change((i=>{const r=i.createElement("media",{url:e});t.insertObject(r,n,null,{setSelection:"on",findOptimalPosition:o})}))}class eC extends H{refresh(){const t=this.editor.model,e=t.document.selection,n=X_(e);this.value=n?n.getAttribute("url"):null,this.isEnabled=function(t){const e=t.getSelectedElement();return!!e&&"media"===e.name}(e)||function(t,e){let n=Pm(t,e).start.parent;n.isEmpty&&!e.schema.isLimit(n)&&(n=n.parent);return e.schema.checkChild(n,"media")}(e,t)}execute(t){const e=this.editor.model,n=e.document.selection,o=X_(n);o?e.change((e=>{e.setAttribute("url",t,o)})):tC(e,t,n,!0)}}class nC{constructor(t,e){const n=e.providers,o=e.extraProviders||[],i=new Set(e.removeProviders),r=n.concat(o).filter((t=>{const e=t.name;return e?!i.has(e):(l("media-embed-no-provider-name",{provider:t}),!1)}));this.locale=t,this.providerDefinitions=r}hasMedia(t){return!!this._getMedia(t)}getMediaViewElement(t,e,n){return this._getMedia(e).getViewElement(t,n)}_getMedia(t){if(!t)return new oC(this.locale);t=t.trim();for(const e of this.providerDefinitions){const n=e.html,o=bo(e.url);for(const e of o){const o=this._getUrlMatches(t,e);if(o)return new oC(this.locale,t,o,n)}}return null}_getUrlMatches(t,e){let n=t.match(e);if(n)return n;let o=t.replace(/^https?:\/\//,"");return n=o.match(e),n||(o=o.replace(/^www\./,""),n=o.match(e),n||null)}}class oC{constructor(t,e,n,o){this.url=this._getValidUrl(e),this._locale=t,this._match=n,this._previewRenderer=o}getViewElement(t,e){const n={};let o;if(e.renderForEditingView||e.renderMediaPreview&&this.url&&this._previewRenderer){this.url&&(n["data-oembed-url"]=this.url),e.renderForEditingView&&(n.class="ck-media__wrapper");const i=this._getPreviewHtml(e);o=t.createRawElement("div",n,((t,e)=>{e.setContentOf(t,i)}))}else this.url&&(n.url=this.url),o=t.createEmptyElement(e.elementName,n);return t.setCustomProperty("media-content",!0,o),o}_getPreviewHtml(t){return this._previewRenderer?this._previewRenderer(this._match):this.url&&t.renderForEditingView?this._getPlaceholderHtml():""}_getPlaceholderHtml(){const t=new Th,e=this._locale.t;t.content='',t.viewBox="0 0 64 42";return new Iu({tag:"div",attributes:{class:"ck ck-reset_all ck-media__placeholder"},children:[{tag:"div",attributes:{class:"ck-media__placeholder__icon"},children:[t]},{tag:"a",attributes:{class:"ck-media__placeholder__url",target:"_blank",rel:"noopener noreferrer",href:this.url,"data-cke-tooltip-text":e("Open media in new tab")},children:[{tag:"span",attributes:{class:"ck-media__placeholder__url__text"},children:[this.url]}]}]}).render().outerHTML}_getValidUrl(t){return t?t.match(/^https?/)?t:"https://"+t:null}}var iC=n(7442),rC={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(iC.Z,rC);iC.Z.locals;class sC extends F{static get pluginName(){return"MediaEmbedEditing"}constructor(t){super(t),t.config.define("mediaEmbed",{elementName:"oembed",providers:[{name:"dailymotion",url:/^dailymotion\.com\/video\/(\w+)/,html:t=>`
`},{name:"spotify",url:[/^open\.spotify\.com\/(artist\/\w+)/,/^open\.spotify\.com\/(album\/\w+)/,/^open\.spotify\.com\/(track\/\w+)/],html:t=>`
`},{name:"youtube",url:[/^(?:m\.)?youtube\.com\/watch\?v=([\w-]+)(?:&t=(\d+))?/,/^(?:m\.)?youtube\.com\/v\/([\w-]+)(?:\?t=(\d+))?/,/^youtube\.com\/embed\/([\w-]+)(?:\?start=(\d+))?/,/^youtu\.be\/([\w-]+)(?:\?t=(\d+))?/],html:t=>{const e=t[1],n=t[2];return`
`}},{name:"vimeo",url:[/^vimeo\.com\/(\d+)/,/^vimeo\.com\/[^/]+\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/album\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/channels\/[^/]+\/(\d+)/,/^vimeo\.com\/groups\/[^/]+\/videos\/(\d+)/,/^vimeo\.com\/ondemand\/[^/]+\/(\d+)/,/^player\.vimeo\.com\/video\/(\d+)/],html:t=>`
`},{name:"instagram",url:/^instagram\.com\/p\/(\w+)/},{name:"twitter",url:/^twitter\.com/},{name:"googleMaps",url:[/^google\.com\/maps/,/^goo\.gl\/maps/,/^maps\.google\.com/,/^maps\.app\.goo\.gl/]},{name:"flickr",url:/^flickr\.com/},{name:"facebook",url:/^facebook\.com/}]}),this.registry=new nC(t.locale,t.config.get("mediaEmbed"))}init(){const t=this.editor,e=t.model.schema,n=t.t,o=t.conversion,i=t.config.get("mediaEmbed.previewsInData"),r=t.config.get("mediaEmbed.elementName"),s=this.registry;t.commands.add("mediaEmbed",new eC(t)),e.register("media",{inheritAllFrom:"$blockObject",allowAttributes:["url"]}),o.for("dataDowncast").elementToStructure({model:"media",view:(t,{writer:e})=>{const n=t.getAttribute("url");return J_(e,s,n,{elementName:r,renderMediaPreview:n&&i})}}),o.for("dataDowncast").add(Z_(s,{elementName:r,renderMediaPreview:i})),o.for("editingDowncast").elementToStructure({model:"media",view:(t,{writer:e})=>{const o=t.getAttribute("url");return function(t,e,n){return e.setCustomProperty("media",!0,t),Tm(t,e,{label:n})}(J_(e,s,o,{elementName:r,renderForEditingView:!0}),e,n("media widget"))}}),o.for("editingDowncast").add(Z_(s,{elementName:r,renderForEditingView:!0})),o.for("upcast").elementToElement({view:t=>["oembed",r].includes(t.name)&&t.getAttribute("url")?{name:!0}:null,model:(t,{writer:e})=>{const n=t.getAttribute("url");if(s.hasMedia(n))return e.createElement("media",{url:n})}}).elementToElement({view:{name:"div",attributes:{"data-oembed-url":!0}},model:(t,{writer:e})=>{const n=t.getAttribute("data-oembed-url");if(s.hasMedia(n))return e.createElement("media",{url:n})}}).add((t=>{t.on("element:figure",(function(t,e,n){if(!n.consumable.consume(e.viewItem,{name:!0,classes:"media"}))return;const{modelRange:o,modelCursor:i}=n.convertChildren(e.viewItem,e.modelCursor);e.modelRange=o,e.modelCursor=i;Ca(o.getItems())||n.consumable.revert(e.viewItem,{name:!0,classes:"media"})}))}))}}const aC=/^(?:http(s)?:\/\/)?[\w-]+\.[\w-.~:/?#[\]@!$&'()*+,;=%]+$/;class cC extends F{static get requires(){return[cp,_m,Xp]}static get pluginName(){return"AutoMediaEmbed"}constructor(t){super(t),this._timeoutId=null,this._positionToInsert=null}init(){const t=this.editor,e=t.model.document;this.listenTo(t.plugins.get("ClipboardPipeline"),"inputTransformation",(()=>{const t=e.selection.getFirstRange(),n=pd.fromPosition(t.start);n.stickiness="toPrevious";const o=pd.fromPosition(t.end);o.stickiness="toNext",e.once("change:data",(()=>{this._embedMediaBetweenPositions(n,o),n.detach(),o.detach()}),{priority:"high"})})),t.commands.get("undo").on("execute",(()=>{this._timeoutId&&(Ao.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)}),{priority:"high"})}_embedMediaBetweenPositions(t,e){const n=this.editor,o=n.plugins.get(sC).registry,i=new fc(t,e),r=i.getWalker({ignoreElementEnd:!0});let s="";for(const t of r)t.item.is("$textProxy")&&(s+=t.item.data);if(s=s.trim(),!s.match(aC))return void i.detach();if(!o.hasMedia(s))return void i.detach();n.commands.get("mediaEmbed").isEnabled?(this._positionToInsert=pd.fromPosition(t),this._timeoutId=Ao.window.setTimeout((()=>{n.model.change((t=>{let e;this._timeoutId=null,t.remove(i),i.detach(),"$graveyard"!==this._positionToInsert.root.rootName&&(e=this._positionToInsert),tC(n.model,s,e,!1),this._positionToInsert.detach(),this._positionToInsert=null})),n.plugins.get("Delete").requestUndoOnBackspace()}),100)):i.detach()}}var lC=n(9292),dC={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(lC.Z,dC);lC.Z.locals;class uC extends Zu{constructor(t,e){super(e);const n=e.t;this.focusTracker=new va,this.keystrokes=new ya,this.set("mediaURLInputValue",""),this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(n("Save"),Ah.check,"ck-button-save"),this.saveButtonView.type="submit",this.saveButtonView.bind("isEnabled").to(this,"mediaURLInputValue",(t=>!!t)),this.cancelButtonView=this._createButton(n("Cancel"),Ah.cancel,"ck-button-cancel","cancel"),this._focusables=new Du,this._focusCycler=new Qh({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this._validators=t,this.setTemplate({tag:"form",attributes:{class:["ck","ck-media-form","ck-responsive-form"],tabindex:"-1"},children:[this.urlInputView,this.saveButtonView,this.cancelButtonView]}),vh(this)}render(){super.render(),yh({view:this});[this.urlInputView,this.saveButtonView,this.cancelButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)})),this.keystrokes.listenTo(this.element);const t=t=>t.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t),this.listenTo(this.urlInputView.element,"selectstart",((t,e)=>{e.stopPropagation()}),{priority:"high"})}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}get url(){return this.urlInputView.fieldView.element.value.trim()}set url(t){this.urlInputView.fieldView.element.value=t.trim()}isValid(){this.resetFormStatus();for(const t of this._validators){const e=t(this);if(e)return this.urlInputView.errorText=e,!1}return!0}resetFormStatus(){this.urlInputView.errorText=null,this.urlInputView.infoText=this._urlInputViewInfoDefault}_createUrlInput(){const t=this.locale.t,e=new Rg(this.locale,jg),n=e.fieldView;return this._urlInputViewInfoDefault=t("Paste the media URL in the input."),this._urlInputViewInfoTip=t("Tip: Paste the URL into the content to embed faster."),e.label=t("Media URL"),e.infoText=this._urlInputViewInfoDefault,n.on("input",(()=>{e.infoText=n.element.value?this._urlInputViewInfoTip:this._urlInputViewInfoDefault,this.mediaURLInputValue=n.element.value.trim()})),e}_createButton(t,e,n,o){const i=new Nh(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),o&&i.delegate("execute").to(this,o),i}}class hC extends F{static get requires(){return[sC]}static get pluginName(){return"MediaEmbedUI"}init(){const t=this.editor,e=t.commands.get("mediaEmbed"),n=t.plugins.get(sC).registry;t.ui.componentFactory.add("mediaEmbed",(o=>{const i=kg(o),r=new uC(function(t,e){return[e=>{if(!e.url.length)return t("The URL must not be empty.")},n=>{if(!e.hasMedia(n.url))return t("This media URL is not supported.")}]}(t.t,n),t.locale);return this._setUpDropdown(i,r,e,t),this._setUpForm(i,r,e),i}))}_setUpDropdown(t,e,n){const o=this.editor,i=o.t,r=t.buttonView;t.bind("isEnabled").to(n),t.panelView.children.add(e),r.set({label:i("Insert media"),icon:'',tooltip:!0}),r.on("open",(()=>{e.disableCssTransitions(),e.url=n.value||"",e.urlInputView.fieldView.select(),e.enableCssTransitions()}),{priority:"low"}),t.on("submit",(()=>{e.isValid()&&(o.execute("mediaEmbed",e.url),o.editing.view.focus())})),t.on("change:isOpen",(()=>e.resetFormStatus())),t.on("cancel",(()=>{o.editing.view.focus()}))}_setUpForm(t,e,n){e.delegate("submit","cancel").to(t),e.urlInputView.bind("value").to(n,"value"),e.urlInputView.bind("isReadOnly").to(n,"isEnabled",(t=>!t))}}var gC=n(4652),mC={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(gC.Z,mC);gC.Z.locals;function pC(t,e,n,{blockElements:o,inlineObjectElements:i}){let r=n.createPositionAt(t,"forward"==e?"after":"before");return r=r.getLastMatchingPosition((({item:t})=>t.is("element")&&!o.includes(t.name)&&!i.includes(t.name)),{direction:e}),"forward"==e?r.nodeAfter:r.nodeBefore}function fC(t,e){return!!t&&t.is("element")&&e.includes(t.name)}function kC(t,e){if(!t.childCount)return;const n=new qd(t.document),o=function(t,e){const n=e.createRangeIn(t),o=new zo({name:/^p|h\d+$/,styles:{"mso-list":/.*/}}),i=[];for(const t of n)if("elementStart"===t.type&&o.match(t.item)){const e=AC(t.item);i.push({element:t.item,id:e.id,order:e.order,indent:e.indent})}return i}(t,n);if(!o.length)return;let i=null,r=1;o.forEach(((t,s)=>{const a=function(t,e){if(!t)return!0;if(t.id!==e.id)return e.indent-t.indent!=1;const n=e.element.previousSibling;if(!n)return!0;return o=n,!(o.is("element","ol")||o.is("element","ul"));var o}(o[s-1],t),c=a?null:o[s-1],l=(u=t,(d=c)?u.indent-d.indent:u.indent-1);var d,u;if(a&&(i=null,r=1),!i||0!==l){const o=function(t,e){const n=new RegExp(`@list l${t.id}:level${t.indent}\\s*({[^}]*)`,"gi"),o=/mso-level-number-format:([^;]{0,100});/gi,i=/mso-level-start-at:\s{0,100}([0-9]{0,10})\s{0,100};/gi,r=n.exec(e);let s="decimal",a="ol",c=null;if(r&&r[1]){const e=o.exec(r[1]);if(e&&e[1]&&(s=e[1].trim(),a="bullet"!==s&&"image"!==s?"ol":"ul"),"bullet"===s){const e=function(t){const e=function(t){if(t.getChild(0).is("$text"))return null;for(const e of t.getChildren()){if(!e.is("element","span"))continue;const t=e.getChild(0);return t.is("$text")?t:t.getChild(0)}}(t);if(!e)return null;const n=e._data;if("o"===n)return"circle";if("·"===n)return"disc";if("§"===n)return"square";return null}(t.element);e&&(s=e)}else{const t=i.exec(r[1]);t&&t[1]&&(c=parseInt(t[1]))}}return{type:a,startIndex:c,style:bC(s)}}(t,e);if(i){if(t.indent>r){const t=i.getChild(i.childCount-1),e=t.getChild(t.childCount-1);i=wC(o,e,n),r+=1}else if(t.indent1&&n.setAttribute("start",t.startIndex,i),i}function AC(t){const e={},n=t.getStyle("mso-list");if(n){const t=n.match(/(^|\s{1,100})l(\d+)/i),o=n.match(/\s{0,100}lfo(\d+)/i),i=n.match(/\s{0,100}level(\d+)/i);t&&o&&i&&(e.id=t[2],e.order=o[1],e.indent=i[1])}return e}const _C=/id=("|')docs-internal-guid-[-0-9a-f]+("|')/i;class CC{constructor(t){this.document=t}isActive(t){return _C.test(t)}execute(t){const e=new qd(this.document),{body:n}=t._parsedData;!function(t,e){for(const n of t.getChildren())if(n.is("element","b")&&"normal"===n.getStyle("font-weight")){const o=t.getChildIndex(n);e.remove(n),e.insertChild(o,n.getChildren(),t)}}(n,e),function(t,e){for(const n of e.createRangeIn(t)){const t=n.item;if(t.is("element","li")){const n=t.getChild(0);n&&n.is("element","p")&&e.unwrapElement(n)}}}(n,e),function(t,e){const n=new tr(e.document.stylesProcessor),o=new ps(n,{renderingMode:"data"}),i=o.blockElements,r=o.inlineObjectElements,s=[];for(const n of e.createRangeIn(t)){const t=n.item;if(t.is("element","br")){const n=pC(t,"forward",e,{blockElements:i,inlineObjectElements:r}),o=pC(t,"backward",e,{blockElements:i,inlineObjectElements:r}),a=fC(n,i);(fC(o,i)||a)&&s.push(t)}}for(const t of s)t.hasClass("Apple-interchange-newline")?e.remove(t):e.replace(t,e.createElement("p"))}(n,e),t.content=n}}function vC(t,e){if(!t.childCount)return;const n=new qd,o=function(t,e){const n=e.createRangeIn(t),o=new zo({name:/v:(.+)/}),i=[];for(const t of n){if("elementStart"!=t.type)continue;const e=t.item,n=e.previousSibling&&e.previousSibling.name||null;o.match(e)&&e.getAttribute("o:gfxdata")&&"v:shapetype"!==n&&i.push(t.item.getAttribute("id"))}return i}(t,n);!function(t,e,n){const o=n.createRangeIn(e),i=new zo({name:"img"}),r=[];for(const e of o)if(i.match(e.item)){const n=e.item,o=n.getAttribute("v:shapes")?n.getAttribute("v:shapes").split(" "):[];o.length&&o.every((e=>t.indexOf(e)>-1))?r.push(n):n.getAttribute("src")||r.push(n)}for(const t of r)n.remove(t)}(o,t,n),function(t,e){const n=e.createRangeIn(t),o=new zo({name:/v:(.+)/}),i=[];for(const t of n)"elementStart"==t.type&&o.match(t.item)&&i.push(t.item);for(const t of i)e.remove(t)}(t,n);const i=function(t,e){const n=e.createRangeIn(t),o=new zo({name:"img"}),i=[];for(const t of n)o.match(t.item)&&t.item.getAttribute("src").startsWith("file://")&&i.push(t.item);return i}(t,n);i.length&&function(t,e,n){if(t.length===e.length)for(let o=0;oString.fromCharCode(parseInt(t,16)))).join(""))}const xC=//i,EC=/xmlns:o="urn:schemas-microsoft-com/i;class DC{constructor(t){this.document=t}isActive(t){return xC.test(t)||EC.test(t)}execute(t){const{body:e,stylesString:n}=t._parsedData;kC(e,n),vC(e,t.dataTransfer.getData("text/rtf")),t.content=e}}function IC(t){return t.replace(/(\s+)<\/span>/g,((t,e)=>1===e.length?" ":Array(e.length+1).join("  ").substr(0,e.length)))}function TC(t,e){const n=new DOMParser,o=function(t){return IC(IC(t)).replace(/([^\S\r\n]*?)[\r\n]+([^\S\r\n]*<\/span>)/g,"$1$2").replace(/<\/span>/g,"").replace(/ <\//g," <\/o:p>/g," ").replace(/( |\u00A0)<\/o:p>/g,"").replace(/>([^\S\r\n]*[\r\n]\s*)<")}(function(t){const e="",n="",o=t.indexOf(e);if(o<0)return t;const i=t.indexOf(n,o+e.length);return t.substring(0,o+e.length)+(i>=0?t.substring(i):"")}(t=t.replace(//g,"")}(i.getData("text/html")):i.getData("text/plain")&&(((s=(s=i.getData("text/plain")).replace(//g,">").replace(/\r?\n\r?\n/g,"

").replace(/\r?\n/g,"
").replace(/^\s/," ").replace(/\s$/," ").replace(/\s\s/g,"  ")).includes("

")||s.includes("
"))&&(s=`

${s}

`),t=s),r=this.editor.data.htmlProcessor.toView(t)}var s;const a=new e(this,"inputTransformation");this.fire(a,{content:r,dataTransfer:i,targetRanges:n.targetRanges,method:n.method}),a.stop.called&&t.stop(),o.scrollToTheSelection()}),{priority:"low"}),this.listenTo(this,"inputTransformation",((t,e)=>{if(e.content.isEmpty)return;const o=this.editor.data.toModel(e.content,"$clipboardHolder");0!=o.childCount&&(t.stop(),n.change((()=>{this.fire("contentInsertion",{content:o,method:e.method,dataTransfer:e.dataTransfer,targetRanges:e.targetRanges})})))}),{priority:"low"}),this.listenTo(this,"contentInsertion",((t,e)=>{e.resultRange=n.insertContent(e.content)}),{priority:"low"})}_setupCopyCut(){const t=this.editor,e=t.model.document,n=t.editing.view.document,o=(o,i)=>{const r=i.dataTransfer;i.preventDefault();const s=t.data.toView(t.model.getSelectedContent(e.selection));n.fire("clipboardOutput",{dataTransfer:r,content:s,method:o.name})};this.listenTo(n,"copy",o,{priority:"low"}),this.listenTo(n,"cut",((e,n)=>{t.isReadOnly?n.preventDefault():o(e,n)}),{priority:"low"}),this.listenTo(n,"clipboardOutput",((n,o)=>{o.content.isEmpty||(o.dataTransfer.setData("text/html",this.editor.data.htmlProcessor.toData(o.content)),o.dataTransfer.setData("text/plain",Bg(o.content))),"cut"==o.method&&t.model.deleteContent(e.selection)}),{priority:"low"})}}function*zg(t,e){for(const n of e)n&&t.getAttributeProperties(n[0]).copyOnEnter&&(yield n)}class Lg extends U{execute(){const t=this.editor.model,e=t.document;t.change((n=>{!function(t,e,n,o){const i=n.isCollapsed,r=n.getFirstRange(),s=r.start.parent,a=r.end.parent;if(o.isLimit(s)||o.isLimit(a))return void(i||s!=a||t.deleteContent(n));if(i){const t=zg(e.model.schema,n.getAttributes());Og(e,r.start),e.setSelectionAttribute(t)}else{const o=!(r.start.isAtStart&&r.end.isAtEnd),i=s==a;t.deleteContent(n,{leaveUnmerged:o}),o&&(i?Og(e,n.focus):e.setSelection(a,0))}}(this.editor.model,n,e.selection,t.schema),this.fire("afterExecute",{writer:n})}))}}function Og(t,e){t.split(e),t.setSelection(e.parent.nextSibling,0)}const Rg={insertParagraph:{isSoft:!1},insertLineBreak:{isSoft:!0}};class jg extends ys{constructor(t){super(t);const e=this.document;e.on("beforeinput",((n,o)=>{if(!this.isEnabled)return;const i=o.domEvent,r=Rg[o.inputType];if(!r)return;const s=new Yi(e,"enter",o.targetRanges[0]);e.fire(s,new Es(t,i,{isSoft:r.isSoft})),s.stop.called&&n.stop()}))}observe(){}}class Fg extends F{static get pluginName(){return"Enter"}init(){const t=this.editor,e=t.editing.view,n=e.document;e.addObserver(jg),t.commands.add("enter",new Lg(t)),this.listenTo(n,"enter",((o,i)=>{n.isComposing||i.preventDefault(),i.isSoft||(t.execute("enter"),e.scrollToTheSelection())}),{priority:"low"})}}class Vg{constructor(t,e=20){this._batch=null,this.model=t,this._size=0,this.limit=e,this._isLocked=!1,this._changeCallback=(t,e)=>{e.isLocal&&e.isUndoable&&e!==this._batch&&this._reset(!0)},this._selectionChangeCallback=()=>{this._reset()},this.model.document.on("change",this._changeCallback),this.model.document.selection.on("change:range",this._selectionChangeCallback),this.model.document.selection.on("change:attribute",this._selectionChangeCallback)}get batch(){return this._batch||(this._batch=this.model.createBatch({isTyping:!0})),this._batch}get size(){return this._size}input(t){this._size+=t,this._size>=this.limit&&this._reset(!0)}get isLocked(){return this._isLocked}lock(){this._isLocked=!0}unlock(){this._isLocked=!1}destroy(){this.model.document.off("change",this._changeCallback),this.model.document.selection.off("change:range",this._selectionChangeCallback),this.model.document.selection.off("change:attribute",this._selectionChangeCallback)}_reset(t=!1){this.isLocked&&!t||(this._batch=null,this._size=0)}}class Ug extends U{constructor(t,e){super(t),this.direction=e,this._buffer=new Vg(t.model,t.config.get("typing.undoStep"))}get buffer(){return this._buffer}execute(t={}){const e=this.editor.model,n=e.document;e.enqueueChange(this._buffer.batch,(o=>{this._buffer.lock();const i=o.createSelection(t.selection||n.selection),r=t.sequence||1,s=i.isCollapsed;if(i.isCollapsed&&e.modifySelection(i,{direction:this.direction,unit:t.unit,treatEmojiAsSingleUnit:!0}),this._shouldEntireContentBeReplacedWithParagraph(r))return void this._replaceEntireContentWithParagraph(o);if(this._shouldReplaceFirstBlockWithParagraph(i,r))return void this.editor.execute("paragraph",{selection:i});if(i.isCollapsed)return;let a=0;i.getFirstRange().getMinimalFlatRanges().forEach((t=>{a+=Gi(t.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))})),e.deleteContent(i,{doNotResetEntireContent:s,direction:this.direction}),this._buffer.input(a),o.setSelection(i),this._buffer.unlock()}))}_shouldEntireContentBeReplacedWithParagraph(t){if(t>1)return!1;const e=this.editor.model,n=e.document.selection,o=e.schema.getLimitElement(n);if(!(n.isCollapsed&&n.containsEntireContent(o)))return!1;if(!e.schema.checkChild(o,"paragraph"))return!1;const i=o.getChild(0);return!i||!i.is("element","paragraph")}_replaceEntireContentWithParagraph(t){const e=this.editor.model,n=e.document.selection,o=e.schema.getLimitElement(n),i=t.createElement("paragraph");t.remove(t.createRangeIn(o)),t.insert(i,o),t.setSelection(i,0)}_shouldReplaceFirstBlockWithParagraph(t,e){const n=this.editor.model;if(e>1||"backward"!=this.direction)return!1;if(!t.isCollapsed)return!1;const o=t.getFirstPosition(),i=n.schema.getLimitElement(o),r=i.getChild(0);return o.parent==r&&(!!t.containsEntireContent(r)&&(!!n.schema.checkChild(i,"paragraph")&&"paragraph"!=r.name))}}const Hg="word",Gg="selection",qg="backward",Wg="forward",Yg={deleteContent:{unit:Gg,direction:qg},deleteContentBackward:{unit:"codePoint",direction:qg},deleteWordBackward:{unit:Hg,direction:qg},deleteHardLineBackward:{unit:Gg,direction:qg},deleteSoftLineBackward:{unit:Gg,direction:qg},deleteContentForward:{unit:"character",direction:Wg},deleteWordForward:{unit:Hg,direction:Wg},deleteHardLineForward:{unit:Gg,direction:Wg},deleteSoftLineForward:{unit:Gg,direction:Wg}};class $g extends ys{constructor(t){super(t);const e=t.document;let n=0;e.on("keydown",(()=>{n++})),e.on("keyup",(()=>{n=0})),e.on("beforeinput",((o,i)=>{if(!this.isEnabled)return;const{targetRanges:r,domEvent:s,inputType:a}=i,c=Yg[a];if(!c)return;const l={direction:c.direction,unit:c.unit,sequence:n};l.unit==Gg&&(l.selectionToRemove=t.createSelection(r[0])),cr.isAndroid&&"deleteContentBackward"===a&&(l.sequence=1,1!=r.length||r[0].start.parent==r[0].end.parent&&r[0].start.offset+1==r[0].end.offset||(l.unit=Gg,l.selectionToRemove=t.createSelection(r)));const d=new Yi(e,"delete",r[0]);e.fire(d,new Es(t,s,l)),d.stop.called&&o.stop()})),cr.isBlink&&function(t){const e=t.view,n=e.document;let o=null,i=!1;function r(t){return t==ur.backspace||t==ur.delete}function s(t){return t==ur.backspace?qg:Wg}n.on("keydown",((t,{keyCode:e})=>{o=e,i=!1})),n.on("keyup",((a,{keyCode:c,domEvent:l})=>{const d=n.selection,h=t.isEnabled&&c==o&&r(c)&&!d.isCollapsed&&!i;if(o=null,h){const t=d.getFirstRange(),o=new Yi(n,"delete",t),i={unit:Gg,direction:s(c),selectionToRemove:d};n.fire(o,new Es(e,l,i))}})),n.on("beforeinput",((t,{inputType:e})=>{const n=Yg[e];r(o)&&n&&n.direction==s(o)&&(i=!0)})),n.on("beforeinput",((t,{inputType:e,data:n})=>{o==ur.delete&&"insertText"==e&&""==n&&t.stop()}),{priority:"high"})}(this)}observe(){}}class Kg extends F{static get pluginName(){return"Delete"}init(){const t=this.editor,e=t.editing.view,n=e.document,o=t.model.document;e.addObserver($g),this._undoOnBackspace=!1;const i=new Ug(t,"forward");t.commands.add("deleteForward",i),t.commands.add("forwardDelete",i),t.commands.add("delete",new Ug(t,"backward")),this.listenTo(n,"delete",((o,i)=>{n.isComposing||i.preventDefault();const{direction:r,sequence:s,selectionToRemove:a,unit:c}=i,l="forward"===r?"deleteForward":"delete",d={sequence:s};if("selection"==c){const e=Array.from(a.getRanges()).map((e=>t.editing.mapper.toModelRange(e)));d.selection=t.model.createSelection(e)}else d.unit=c;t.execute(l,d),e.scrollToTheSelection()}),{priority:"low"}),this.editor.plugins.has("UndoEditing")&&(this.listenTo(n,"delete",((e,n)=>{this._undoOnBackspace&&"backward"==n.direction&&1==n.sequence&&"codePoint"==n.unit&&(this._undoOnBackspace=!1,t.execute("undo"),n.preventDefault(),e.stop())}),{context:"$capture"}),this.listenTo(o,"change",(()=>{this._undoOnBackspace=!1})))}requestUndoOnBackspace(){this.editor.plugins.has("UndoEditing")&&(this._undoOnBackspace=!0)}}class Qg extends w{constructor(){super(),this._stack=[]}add(t,e){const n=this._stack,o=n[0];this._insertDescriptor(t);const i=n[0];o===i||Zg(o,i)||this.fire("change:top",{oldDescriptor:o,newDescriptor:i,writer:e})}remove(t,e){const n=this._stack,o=n[0];this._removeDescriptor(t);const i=n[0];o===i||Zg(o,i)||this.fire("change:top",{oldDescriptor:o,newDescriptor:i,writer:e})}_insertDescriptor(t){const e=this._stack,n=e.findIndex((e=>e.id===t.id));if(Zg(t,e[n]))return;n>-1&&e.splice(n,1);let o=0;for(;e[o]&&Jg(e[o],t);)o++;e.splice(o,0,t)}_removeDescriptor(t){const e=this._stack,n=e.findIndex((e=>e.id===t));n>-1&&e.splice(n,1)}}function Zg(t,e){return t&&e&&t.priority==e.priority&&Xg(t.classes)==Xg(e.classes)}function Jg(t,e){return t.priority>e.priority||!(t.priorityXg(e.classes)}function Xg(t){return Array.isArray(t)?t.sort().join(","):t}const tm='',em="ck-widget_selected";function nm(t){return!!t.is("element")&&!!t.getCustomProperty("widget")}function om(t,e,n={}){if(!t.is("containerElement"))throw new c("widget-to-widget-wrong-element-type",null,{element:t});return e.setAttribute("contenteditable","false",t),e.addClass("ck-widget",t),e.setCustomProperty("widget",!0,t),t.getFillerOffset=dm,n.label&&function(t,e,n){n.setCustomProperty("widgetLabel",e,t)}(t,n.label,e),n.hasSelectionHandle&&function(t,e){const n=e.createUIElement("div",{class:"ck ck-widget__selection-handle"},(function(t){const e=this.toDomElement(t),n=new ru;return n.set("content",tm),n.render(),e.appendChild(n.element),e}));e.insert(e.createPositionAt(t,0),n),e.addClass(["ck-widget_with-selection-handle"],t)}(t,e),sm(t,e),t}function im(t,e,n){if(e.classes&&n.addClass(bo(e.classes),t),e.attributes)for(const o in e.attributes)n.setAttribute(o,e.attributes[o],t)}function rm(t,e,n){if(e.classes&&n.removeClass(bo(e.classes),t),e.attributes)for(const o in e.attributes)n.removeAttribute(o,t)}function sm(t,e,n=im,o=rm){const i=new Qg;i.on("change:top",((e,i)=>{i.oldDescriptor&&o(t,i.oldDescriptor,i.writer),i.newDescriptor&&n(t,i.newDescriptor,i.writer)}));e.setCustomProperty("addHighlight",((t,e,n)=>i.add(e,n)),t),e.setCustomProperty("removeHighlight",((t,e,n)=>i.remove(e,n)),t)}function am(t){const e=t.getCustomProperty("widgetLabel");return e?"function"==typeof e?e():e:""}function cm(t,e,n={}){return e.addClass(["ck-editor__editable","ck-editor__nested-editable"],t),e.setAttribute("role","textbox",t),n.label&&e.setAttribute("aria-label",n.label,t),e.setAttribute("contenteditable",t.isReadOnly?"false":"true",t),t.on("change:isReadOnly",((n,o,i)=>{e.setAttribute("contenteditable",i?"false":"true",t)})),t.on("change:isFocused",((n,o,i)=>{i?e.addClass("ck-editor__nested-editable_focused",t):e.removeClass("ck-editor__nested-editable_focused",t)})),sm(t,e),t}function lm(t,e){const n=t.getSelectedElement();if(n){const o=gm(t);if(o)return e.createRange(e.createPositionAt(n,o))}return Kd(t,e)}function dm(){return null}const hm="widget-type-around";function um(t,e,n){return!!t&&nm(t)&&!n.isInline(e)}function gm(t){return t.getAttribute(hm)}var mm=n(4921),pm={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(mm.Z,pm);mm.Z.locals;const fm=["before","after"],km=(new DOMParser).parseFromString('',"image/svg+xml").firstChild,bm="ck-widget__type-around_disabled";class wm extends F{constructor(t){super(t),this._currentFakeCaretModelElement=null}static get pluginName(){return"WidgetTypeAround"}static get requires(){return[Fg,Kg]}init(){const t=this.editor,e=t.editing.view;this.on("change:isEnabled",((n,o,i)=>{e.change((t=>{for(const n of e.document.roots)i?t.removeClass(bm,n):t.addClass(bm,n)})),i||t.model.change((t=>{t.removeSelectionAttribute(hm)}))})),this._enableTypeAroundUIInjection(),this._enableInsertingParagraphsOnButtonClick(),this._enableInsertingParagraphsOnEnterKeypress(),this._enableInsertingParagraphsOnTypingKeystroke(),this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(),this._enableDeleteIntegration(),this._enableInsertContentIntegration(),this._enableInsertObjectIntegration(),this._enableDeleteContentIntegration()}destroy(){super.destroy(),this._currentFakeCaretModelElement=null}_insertParagraph(t,e){const n=this.editor,o=n.editing.view,i=n.model.schema.getAttributesWithProperty(t,"copyOnReplace",!0);n.execute("insertParagraph",{position:n.model.createPositionAt(t,e),attributes:i}),o.focus(),o.scrollToTheSelection()}_listenToIfEnabled(t,e,n,o){this.listenTo(t,e,((...t)=>{this.isEnabled&&n(...t)}),o)}_insertParagraphAccordingToFakeCaretPosition(){const t=this.editor.model.document.selection,e=gm(t);if(!e)return!1;const n=t.getSelectedElement();return this._insertParagraph(n,e),!0}_enableTypeAroundUIInjection(){const t=this.editor,e=t.model.schema,n=t.locale.t,o={before:n("Insert paragraph before block"),after:n("Insert paragraph after block")};t.editing.downcastDispatcher.on("insert",((t,n,i)=>{const r=i.mapper.toViewElement(n.item);um(r,n.item,e)&&function(t,e,n){const o=t.createUIElement("div",{class:"ck ck-reset_all ck-widget__type-around"},(function(t){const n=this.toDomElement(t);return function(t,e){for(const n of fm){const o=new ah({tag:"div",attributes:{class:["ck","ck-widget__type-around__button",`ck-widget__type-around__button_${n}`],title:e[n]},children:[t.ownerDocument.importNode(km,!0)]});t.appendChild(o.render())}}(n,e),function(t){const e=new ah({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});t.appendChild(e.render())}(n),n}));t.insert(t.createPositionAt(n,"end"),o)}(i.writer,o,r)}),{priority:"low"})}_enableTypeAroundFakeCaretActivationUsingKeyboardArrows(){const t=this.editor,e=t.model,n=e.document.selection,o=e.schema,i=t.editing.view;function r(t){return`ck-widget_type-around_show-fake-caret_${t}`}this._listenToIfEnabled(i.document,"arrowKey",((t,e)=>{this._handleArrowKeyPress(t,e)}),{context:[nm,"$text"],priority:"high"}),this._listenToIfEnabled(n,"change:range",((e,n)=>{n.directChange&&t.model.change((t=>{t.removeSelectionAttribute(hm)}))})),this._listenToIfEnabled(e.document,"change:data",(()=>{const e=n.getSelectedElement();if(e){if(um(t.editing.mapper.toViewElement(e),e,o))return}t.model.change((t=>{t.removeSelectionAttribute(hm)}))})),this._listenToIfEnabled(t.editing.downcastDispatcher,"selection",((t,e,n)=>{const i=n.writer;if(this._currentFakeCaretModelElement){const t=n.mapper.toViewElement(this._currentFakeCaretModelElement);t&&(i.removeClass(fm.map(r),t),this._currentFakeCaretModelElement=null)}const s=e.selection.getSelectedElement();if(!s)return;const a=n.mapper.toViewElement(s);if(!um(a,s,o))return;const c=gm(e.selection);c&&(i.addClass(r(c),a),this._currentFakeCaretModelElement=s)})),this._listenToIfEnabled(t.ui.focusTracker,"change:isFocused",((e,n,o)=>{o||t.model.change((t=>{t.removeSelectionAttribute(hm)}))}))}_handleArrowKeyPress(t,e){const n=this.editor,o=n.model,i=o.document.selection,r=o.schema,s=n.editing.view,a=function(t,e){const n=kr(t,e);return"down"===n||"right"===n}(e.keyCode,n.locale.contentLanguageDirection),c=s.document.selection.getSelectedElement();let l;um(c,n.editing.mapper.toModelElement(c),r)?l=this._handleArrowKeyPressOnSelectedWidget(a):i.isCollapsed?l=this._handleArrowKeyPressWhenSelectionNextToAWidget(a):e.shiftKey||(l=this._handleArrowKeyPressWhenNonCollapsedSelection(a)),l&&(e.preventDefault(),t.stop())}_handleArrowKeyPressOnSelectedWidget(t){const e=this.editor.model,n=gm(e.document.selection);return e.change((e=>{if(!n)return e.setSelectionAttribute(hm,t?"after":"before"),!0;if(!(n===(t?"after":"before")))return e.removeSelectionAttribute(hm),!0;return!1}))}_handleArrowKeyPressWhenSelectionNextToAWidget(t){const e=this.editor,n=e.model,o=n.schema,i=e.plugins.get("Widget"),r=i._getObjectElementNextToSelection(t);return!!um(e.editing.mapper.toViewElement(r),r,o)&&(n.change((e=>{i._setSelectionOverElement(r),e.setSelectionAttribute(hm,t?"before":"after")})),!0)}_handleArrowKeyPressWhenNonCollapsedSelection(t){const e=this.editor,n=e.model,o=n.schema,i=e.editing.mapper,r=n.document.selection,s=t?r.getLastPosition().nodeBefore:r.getFirstPosition().nodeAfter;return!!um(i.toViewElement(s),s,o)&&(n.change((e=>{e.setSelection(s,"on"),e.setSelectionAttribute(hm,t?"after":"before")})),!0)}_enableInsertingParagraphsOnButtonClick(){const t=this.editor,e=t.editing.view;this._listenToIfEnabled(e.document,"mousedown",((n,o)=>{const i=o.domTarget.closest(".ck-widget__type-around__button");if(!i)return;const r=function(t){return t.classList.contains("ck-widget__type-around__button_before")?"before":"after"}(i),s=function(t,e){const n=t.closest(".ck-widget");return e.mapDomToView(n)}(i,e.domConverter),a=t.editing.mapper.toModelElement(s);this._insertParagraph(a,r),o.preventDefault(),n.stop()}))}_enableInsertingParagraphsOnEnterKeypress(){const t=this.editor,e=t.model.document.selection,n=t.editing.view;this._listenToIfEnabled(n.document,"enter",((n,o)=>{if("atTarget"!=n.eventPhase)return;const i=e.getSelectedElement(),r=t.editing.mapper.toViewElement(i),s=t.model.schema;let a;this._insertParagraphAccordingToFakeCaretPosition()?a=!0:um(r,i,s)&&(this._insertParagraph(i,o.isSoft?"before":"after"),a=!0),a&&(o.preventDefault(),n.stop())}),{context:nm})}_enableInsertingParagraphsOnTypingKeystroke(){const t=this.editor.editing.view.document;this._listenToIfEnabled(t,"insertText",((e,n)=>{this._insertParagraphAccordingToFakeCaretPosition()&&(n.selection=t.selection)}),{priority:"high"}),cr.isAndroid?this._listenToIfEnabled(t,"keydown",((t,e)=>{229==e.keyCode&&this._insertParagraphAccordingToFakeCaretPosition()})):this._listenToIfEnabled(t,"compositionstart",(()=>{this._insertParagraphAccordingToFakeCaretPosition()}),{priority:"high"})}_enableDeleteIntegration(){const t=this.editor,e=t.editing.view,n=t.model,o=n.schema;this._listenToIfEnabled(e.document,"delete",((e,i)=>{if("atTarget"!=e.eventPhase)return;const r=gm(n.document.selection);if(!r)return;const s=i.direction,a=n.document.selection.getSelectedElement(),c="forward"==s;if("before"===r===c)t.execute("delete",{selection:n.createSelection(a,"on")});else{const e=o.getNearestSelectionRange(n.createPositionAt(a,r),s);if(e)if(e.isCollapsed){const i=n.createSelection(e.start);if(n.modifySelection(i,{direction:s}),i.focus.isEqual(e.start)){const t=function(t,e){let n=e;for(const o of e.getAncestors({parentFirst:!0})){if(o.childCount>1||t.isLimit(o))break;n=o}return n}(o,e.start.parent);n.deleteContent(n.createSelection(t,"on"),{doNotAutoparagraph:!0})}else n.change((n=>{n.setSelection(e),t.execute(c?"deleteForward":"delete")}))}else n.change((n=>{n.setSelection(e),t.execute(c?"deleteForward":"delete")}))}i.preventDefault(),e.stop()}),{context:nm})}_enableInsertContentIntegration(){const t=this.editor,e=this.editor.model,n=e.document.selection;this._listenToIfEnabled(t.model,"insertContent",((t,[o,i])=>{if(i&&!i.is("documentSelection"))return;const r=gm(n);return r?(t.stop(),e.change((t=>{const i=n.getSelectedElement(),s=e.createPositionAt(i,r),a=t.createSelection(s),c=e.insertContent(o,a);return t.setSelection(a),c}))):void 0}),{priority:"high"})}_enableInsertObjectIntegration(){const t=this.editor,e=this.editor.model.document.selection;this._listenToIfEnabled(t.model,"insertObject",((t,n)=>{const[,o,,i={}]=n;if(o&&!o.is("documentSelection"))return;const r=gm(e);r&&(i.findOptimalPosition=r,n[3]=i)}),{priority:"high"})}_enableDeleteContentIntegration(){const t=this.editor,e=this.editor.model.document.selection;this._listenToIfEnabled(t.model,"deleteContent",((t,[n])=>{if(n&&!n.is("documentSelection"))return;gm(e)&&t.stop()}),{priority:"high"})}}function Am(t){const e=t.model;return(n,o)=>{const i=o.keyCode==ur.arrowup,r=o.keyCode==ur.arrowdown,s=o.shiftKey,a=e.document.selection;if(!i&&!r)return;const c=r;if(s&&function(t,e){return!t.isCollapsed&&t.isBackward==e}(a,c))return;const l=function(t,e,n){const o=t.model;if(n){const t=e.isCollapsed?e.focus:e.getLastPosition(),n=_m(o,t,"forward");if(!n)return null;const i=o.createRange(t,n),r=Cm(o.schema,i,"backward");return r?o.createRange(t,r):null}{const t=e.isCollapsed?e.focus:e.getFirstPosition(),n=_m(o,t,"backward");if(!n)return null;const i=o.createRange(n,t),r=Cm(o.schema,i,"forward");return r?o.createRange(r,t):null}}(t,a,c);if(l){if(l.isCollapsed){if(a.isCollapsed)return;if(s)return}(l.isCollapsed||function(t,e,n){const o=t.model,i=t.view.domConverter;if(n){const t=o.createSelection(e.start);o.modifySelection(t),t.focus.isAtEnd||e.start.isEqual(t.focus)||(e=o.createRange(t.focus,e.end))}const r=t.mapper.toViewRange(e),s=i.viewRangeToDom(r),a=va.getDomRangeRects(s);let c;for(const t of a)if(void 0!==c){if(Math.round(t.top)>=c)return!1;c=Math.max(c,Math.round(t.bottom))}else c=Math.round(t.bottom);return!0}(t,l,c))&&(e.change((t=>{const n=c?l.end:l.start;if(s){const o=e.createSelection(a.anchor);o.setFocus(n),t.setSelection(o)}else t.setSelection(n)})),n.stop(),o.preventDefault(),o.stopPropagation())}}}function _m(t,e,n){const o=t.schema,i=t.createRangeIn(e.root),r="forward"==n?"elementStart":"elementEnd";for(const{previousPosition:t,item:s,type:a}of i.getWalker({startPosition:e,direction:n})){if(o.isLimit(s)&&!o.isInline(s))return t;if(a==r&&o.isBlock(s))return null}return null}function Cm(t,e,n){const o="backward"==n?e.end:e.start;if(t.checkChild(o,"$text"))return o;for(const{nextPosition:o}of e.getWalker({direction:n}))if(t.checkChild(o,"$text"))return o;return null}var vm=n(3488),ym={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(vm.Z,ym);vm.Z.locals;class xm extends F{static get pluginName(){return"Widget"}static get requires(){return[wm,Kg]}init(){const t=this.editor,e=t.editing.view,n=e.document;this._previouslySelected=new Set,this.editor.editing.downcastDispatcher.on("selection",((e,n,o)=>{const i=o.writer,r=n.selection;if(r.isCollapsed)return;const s=r.getSelectedElement();if(!s)return;const a=t.editing.mapper.toViewElement(s);nm(a)&&o.consumable.consume(r,"selection")&&i.setSelection(i.createRangeOn(a),{fake:!0,label:am(a)})})),this.editor.editing.downcastDispatcher.on("selection",((t,e,n)=>{this._clearPreviouslySelectedWidgets(n.writer);const o=n.writer,i=o.document.selection;let r=null;for(const t of i.getRanges())for(const e of t){const t=e.item;nm(t)&&!Em(t,r)&&(o.addClass(em,t),this._previouslySelected.add(t),r=t)}}),{priority:"low"}),e.addObserver(Wd),this.listenTo(n,"mousedown",((...t)=>this._onMousedown(...t))),this.listenTo(n,"arrowKey",((...t)=>{this._handleSelectionChangeOnArrowKeyPress(...t)}),{context:[nm,"$text"]}),this.listenTo(n,"arrowKey",((...t)=>{this._preventDefaultOnArrowKeyPress(...t)}),{context:"$root"}),this.listenTo(n,"arrowKey",Am(this.editor.editing),{context:"$text"}),this.listenTo(n,"delete",((t,e)=>{this._handleDelete("forward"==e.direction)&&(e.preventDefault(),t.stop())}),{context:"$root"})}_onMousedown(t,e){const n=this.editor,o=n.editing.view,i=o.document;let r=e.target;if(function(t){let e=t;for(;e;){if(e.is("editableElement")&&!e.is("rootElement"))return!0;if(nm(e))return!1;e=e.parent}return!1}(r)){if((cr.isSafari||cr.isGecko)&&e.domEvent.detail>=3){const t=n.editing.mapper,o=r.is("attributeElement")?r.findAncestor((t=>!t.is("attributeElement"))):r,i=t.toModelElement(o);e.preventDefault(),this.editor.model.change((t=>{t.setSelection(i,"in")}))}return}if(!nm(r)&&(r=r.findAncestor(nm),!r))return;cr.isAndroid&&e.preventDefault(),i.isFocused||o.focus();const s=n.editing.mapper.toModelElement(r);this._setSelectionOverElement(s)}_handleSelectionChangeOnArrowKeyPress(t,e){const n=e.keyCode,o=this.editor.model,i=o.schema,r=o.document.selection,s=r.getSelectedElement(),a=kr(n,this.editor.locale.contentLanguageDirection),c="down"==a||"right"==a,l="up"==a||"down"==a;if(s&&i.isObject(s)){const n=c?r.getLastPosition():r.getFirstPosition(),s=i.getNearestSelectionRange(n,c?"forward":"backward");return void(s&&(o.change((t=>{t.setSelection(s)})),e.preventDefault(),t.stop()))}if(!r.isCollapsed&&!e.shiftKey){const n=r.getFirstPosition(),s=r.getLastPosition(),a=n.nodeAfter,l=s.nodeBefore;return void((a&&i.isObject(a)||l&&i.isObject(l))&&(o.change((t=>{t.setSelection(c?s:n)})),e.preventDefault(),t.stop()))}if(!r.isCollapsed)return;const d=this._getObjectElementNextToSelection(c);if(d&&i.isObject(d)){if(i.isInline(d)&&l)return;this._setSelectionOverElement(d),e.preventDefault(),t.stop()}}_preventDefaultOnArrowKeyPress(t,e){const n=this.editor.model,o=n.schema,i=n.document.selection.getSelectedElement();i&&o.isObject(i)&&(e.preventDefault(),t.stop())}_handleDelete(t){if(this.editor.isReadOnly)return;const e=this.editor.model.document.selection;if(!e.isCollapsed)return;const n=this._getObjectElementNextToSelection(t);return n?(this.editor.model.change((t=>{let o=e.anchor.parent;for(;o.isEmpty;){const e=o;o=e.parent,t.remove(e)}this._setSelectionOverElement(n)})),!0):void 0}_setSelectionOverElement(t){this.editor.model.change((e=>{e.setSelection(e.createRangeOn(t))}))}_getObjectElementNextToSelection(t){const e=this.editor.model,n=e.schema,o=e.document.selection,i=e.createSelection(o);if(e.modifySelection(i,{direction:t?"forward":"backward"}),i.isEqual(o))return null;const r=t?i.focus.nodeBefore:i.focus.nodeAfter;return r&&n.isObject(r)?r:null}_clearPreviouslySelectedWidgets(t){for(const e of this._previouslySelected)t.removeClass(em,e);this._previouslySelected.clear()}}function Em(t,e){return!!e&&Array.from(t.getAncestors()).includes(e)}const Dm=function(t,e,n){var o=!0,i=!0;if("function"!=typeof t)throw new TypeError("Expected a function");return D(n)&&(o="leading"in n?!!n.leading:o,i="trailing"in n?!!n.trailing:i),Vs(t,e,{leading:o,maxWait:e,trailing:i})};var Im=n(903),Tm={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Im.Z,Tm);Im.Z.locals;class Mm extends F{static get pluginName(){return"DragDrop"}static get requires(){return[Pg,xm]}init(){const t=this.editor,e=t.editing.view;this._draggedRange=null,this._draggingUid="",this._draggableElement=null,this._updateDropMarkerThrottled=Dm((t=>this._updateDropMarker(t)),40),this._removeDropMarkerDelayed=Bm((()=>this._removeDropMarker()),40),this._clearDraggableAttributesDelayed=Bm((()=>this._clearDraggableAttributes()),40),e.addObserver(Sg),e.addObserver(Wd),this._setupDragging(),this._setupContentInsertionIntegration(),this._setupClipboardInputIntegration(),this._setupDropMarker(),this._setupDraggableAttributeHandling(),this.listenTo(t,"change:isReadOnly",((t,e,n)=>{n?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")})),this.on("change:isEnabled",((t,e,n)=>{n||this._finalizeDragging(!1)})),cr.isAndroid&&this.forceDisabled("noAndroidSupport")}destroy(){return this._draggedRange&&(this._draggedRange.detach(),this._draggedRange=null),this._updateDropMarkerThrottled.cancel(),this._removeDropMarkerDelayed.cancel(),this._clearDraggableAttributesDelayed.cancel(),super.destroy()}_setupDragging(){const t=this.editor,e=t.model,n=e.document,o=t.editing.view,i=o.document;this.listenTo(i,"dragstart",((o,s)=>{const a=n.selection;if(s.target&&s.target.is("editableElement"))return void s.preventDefault();const c=s.target?Pm(s.target):null;if(c){const n=t.editing.mapper.toModelElement(c);this._draggedRange=kc.fromRange(e.createRangeOn(n)),t.plugins.has("WidgetToolbarRepository")&&t.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop")}else if(!i.selection.isCollapsed){const t=i.selection.getSelectedElement();t&&nm(t)||(this._draggedRange=kc.fromRange(a.getFirstRange()))}if(!this._draggedRange)return void s.preventDefault();this._draggingUid=r(),s.dataTransfer.effectAllowed=this.isEnabled?"copyMove":"copy",s.dataTransfer.setData("application/ckeditor5-dragging-uid",this._draggingUid);const l=e.createSelection(this._draggedRange.toRange()),d=t.data.toView(e.getSelectedContent(l));i.fire("clipboardOutput",{dataTransfer:s.dataTransfer,content:d,method:"dragstart"}),this.isEnabled||(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="")}),{priority:"low"}),this.listenTo(i,"dragend",((t,e)=>{this._finalizeDragging(!e.dataTransfer.isCanceled&&"move"==e.dataTransfer.dropEffect)}),{priority:"low"}),this.listenTo(i,"dragenter",(()=>{this.isEnabled&&o.focus()})),this.listenTo(i,"dragleave",(()=>{this._removeDropMarkerDelayed()})),this.listenTo(i,"dragging",((e,n)=>{if(!this.isEnabled)return void(n.dataTransfer.dropEffect="none");this._removeDropMarkerDelayed.cancel();const o=Sm(t,n.targetRanges,n.target);this._draggedRange||(n.dataTransfer.dropEffect="copy"),cr.isGecko||("copy"==n.dataTransfer.effectAllowed?n.dataTransfer.dropEffect="copy":["all","copyMove"].includes(n.dataTransfer.effectAllowed)&&(n.dataTransfer.dropEffect="move")),o&&this._updateDropMarkerThrottled(o)}),{priority:"low"})}_setupClipboardInputIntegration(){const t=this.editor,e=t.editing.view.document;this.listenTo(e,"clipboardInput",((e,n)=>{if("drop"!=n.method)return;const o=Sm(t,n.targetRanges,n.target);if(this._removeDropMarker(),!o)return this._finalizeDragging(!1),void e.stop();this._draggedRange&&this._draggingUid!=n.dataTransfer.getData("application/ckeditor5-dragging-uid")&&(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="");if("move"==Nm(n.dataTransfer)&&this._draggedRange&&this._draggedRange.containsRange(o,!0))return this._finalizeDragging(!1),void e.stop();n.targetRanges=[t.editing.mapper.toViewRange(o)]}),{priority:"high"})}_setupContentInsertionIntegration(){const t=this.editor.plugins.get(Pg);t.on("contentInsertion",((t,e)=>{if(!this.isEnabled||"drop"!==e.method)return;const n=e.targetRanges.map((t=>this.editor.editing.mapper.toModelRange(t)));this.editor.model.change((t=>t.setSelection(n)))}),{priority:"high"}),t.on("contentInsertion",((t,e)=>{if(!this.isEnabled||"drop"!==e.method)return;const n="move"==Nm(e.dataTransfer),o=!e.resultRange||!e.resultRange.isCollapsed;this._finalizeDragging(o&&n)}),{priority:"lowest"})}_setupDraggableAttributeHandling(){const t=this.editor,e=t.editing.view,n=e.document;this.listenTo(n,"mousedown",((o,i)=>{if(cr.isAndroid||!i)return;this._clearDraggableAttributesDelayed.cancel();let r=Pm(i.target);if(cr.isBlink&&!t.isReadOnly&&!r&&!n.selection.isCollapsed){const t=n.selection.getSelectedElement();t&&nm(t)||(r=n.selection.editableElement)}r&&(e.change((t=>{t.setAttribute("draggable","true",r)})),this._draggableElement=t.editing.mapper.toModelElement(r))})),this.listenTo(n,"mouseup",(()=>{cr.isAndroid||this._clearDraggableAttributesDelayed()}))}_clearDraggableAttributes(){const t=this.editor.editing;t.view.change((e=>{this._draggableElement&&"$graveyard"!=this._draggableElement.root.rootName&&e.removeAttribute("draggable",t.mapper.toViewElement(this._draggableElement)),this._draggableElement=null}))}_setupDropMarker(){const t=this.editor;t.conversion.for("editingDowncast").markerToHighlight({model:"drop-target",view:{classes:["ck-clipboard-drop-target-range"]}}),t.conversion.for("editingDowncast").markerToElement({model:"drop-target",view:(e,{writer:n})=>{if(t.model.schema.checkChild(e.markerRange.start,"$text"))return n.createUIElement("span",{class:"ck ck-clipboard-drop-target-position"},(function(t){const e=this.toDomElement(t);return e.append("⁠",t.createElement("span"),"⁠"),e}))}})}_updateDropMarker(t){const e=this.editor,n=e.model.markers;e.model.change((e=>{n.has("drop-target")?n.get("drop-target").getRange().isEqual(t)||e.updateMarker("drop-target",{range:t}):e.addMarker("drop-target",{range:t,usingOperation:!1,affectsData:!1})}))}_removeDropMarker(){const t=this.editor.model;this._removeDropMarkerDelayed.cancel(),this._updateDropMarkerThrottled.cancel(),t.markers.has("drop-target")&&t.change((t=>{t.removeMarker("drop-target")}))}_finalizeDragging(t){const e=this.editor,n=e.model;this._removeDropMarker(),this._clearDraggableAttributes(),e.plugins.has("WidgetToolbarRepository")&&e.plugins.get("WidgetToolbarRepository").clearForceDisabled("dragDrop"),this._draggingUid="",this._draggedRange&&(t&&this.isEnabled&&n.deleteContent(n.createSelection(this._draggedRange),{doNotAutoparagraph:!0}),this._draggedRange.detach(),this._draggedRange=null)}}function Sm(t,e,n){const o=t.model,i=t.editing.mapper;let r=null;const s=e?e[0].start:null;if(n.is("uiElement")&&(n=n.parent),r=function(t,e){const n=t.model,o=t.editing.mapper;if(nm(e))return n.createRangeOn(o.toModelElement(e));if(!e.is("editableElement")){const t=e.findAncestor((t=>nm(t)||t.is("editableElement")));if(nm(t))return n.createRangeOn(o.toModelElement(t))}return null}(t,n),r)return r;const a=function(t,e){const n=t.editing.mapper,o=t.editing.view,i=n.toModelElement(e);if(i)return i;const r=o.createPositionBefore(e),s=n.findMappedViewAncestor(r);return n.toModelElement(s)}(t,n),c=s?i.toModelPosition(s):null;return c?(r=function(t,e,n){const o=t.model;if(!o.schema.checkChild(n,"$block"))return null;const i=o.createPositionAt(n,0),r=e.path.slice(0,i.path.length),s=o.createPositionFromPath(e.root,r).nodeAfter;if(s&&o.schema.isObject(s))return o.createRangeOn(s);return null}(t,c,a),r||(r=o.schema.getNearestSelectionRange(c,cr.isGecko?"forward":"backward"),r||function(t,e){const n=t.model;let o=e;for(;o;){if(n.schema.isObject(o))return n.createRangeOn(o);o=o.parent}return null}(t,c.parent))):function(t,e){const n=t.model,o=n.schema,i=n.createPositionAt(e,0);return o.getNearestSelectionRange(i,"forward")}(t,a)}function Nm(t){return cr.isGecko?t.dropEffect:["all","copyMove"].includes(t.effectAllowed)?"move":"copy"}function Bm(t,e){let n;function o(...i){o.cancel(),n=setTimeout((()=>t(...i)),e)}return o.cancel=()=>{clearTimeout(n)},o}function Pm(t){if(t.is("editableElement"))return null;if(t.hasClass("ck-widget__selection-handle"))return t.findAncestor(nm);if(nm(t))return t;const e=t.findAncestor((t=>nm(t)||t.is("editableElement")));return nm(e)?e:null}class zm extends F{static get pluginName(){return"PastePlainText"}static get requires(){return[Pg]}init(){const t=this.editor,e=t.model,n=t.editing.view,o=n.document,i=e.document.selection;let r=!1;n.addObserver(Sg),this.listenTo(o,"keydown",((t,e)=>{r=e.shiftKey})),t.plugins.get(Pg).on("contentInsertion",((t,n)=>{(r||function(t,e){if(t.childCount>1)return!1;const n=t.getChild(0);if(e.isObject(n))return!1;return 0==Array.from(n.getAttributeKeys()).length}(n.content,e.schema))&&e.change((t=>{const o=Array.from(i.getAttributes()).filter((([t])=>e.schema.getAttributeProperties(t).isFormatting));i.isCollapsed||e.deleteContent(i,{doNotAutoparagraph:!0}),o.push(...i.getAttributes());const r=t.createRangeIn(n.content);for(const e of r.getItems())e.is("$textProxy")&&t.setAttributes(o,e)}))}))}}class Lm extends F{static get pluginName(){return"Clipboard"}static get requires(){return[Pg,Mm,zm]}}class Om extends U{execute(){const t=this.editor.model,e=t.document;t.change((n=>{!function(t,e,n){const o=n.isCollapsed,i=n.getFirstRange(),r=i.start.parent,s=i.end.parent,a=r==s;if(o){const o=zg(t.schema,n.getAttributes());Rm(t,e,i.end),e.removeSelectionAttribute(n.getAttributeKeys()),e.setSelectionAttribute(o)}else{const o=!(i.start.isAtStart&&i.end.isAtEnd);t.deleteContent(n,{leaveUnmerged:o}),a?Rm(t,e,n.focus):o&&e.setSelection(s,0)}}(t,n,e.selection),this.fire("afterExecute",{writer:n})}))}refresh(){const t=this.editor.model,e=t.document;this.isEnabled=function(t,e){if(e.rangeCount>1)return!1;const n=e.anchor;if(!n||!t.checkChild(n,"softBreak"))return!1;const o=e.getFirstRange(),i=o.start.parent,r=o.end.parent;if((jm(i,t)||jm(r,t))&&i!==r)return!1;return!0}(t.schema,e.selection)}}function Rm(t,e,n){const o=e.createElement("softBreak");t.insertContent(o,n),e.setSelection(o,"after")}function jm(t,e){return!t.is("rootElement")&&(e.isLimit(t)||jm(t.parent,e))}class Fm extends F{static get pluginName(){return"ShiftEnter"}init(){const t=this.editor,e=t.model.schema,n=t.conversion,o=t.editing.view,i=o.document;e.register("softBreak",{allowWhere:"$text",isInline:!0}),n.for("upcast").elementToElement({model:"softBreak",view:"br"}),n.for("downcast").elementToElement({model:"softBreak",view:(t,{writer:e})=>e.createEmptyElement("br")}),o.addObserver(jg),t.commands.add("shiftEnter",new Om(t)),this.listenTo(i,"enter",((e,n)=>{i.isComposing||n.preventDefault(),n.isSoft&&(t.execute("shiftEnter"),o.scrollToTheSelection())}),{priority:"low"})}}class Vm extends U{constructor(t){super(t),this.affectsData=!1}execute(){const t=this.editor.model,e=t.document.selection;let n=t.schema.getLimitElement(e);if(e.containsEntireContent(n)||!Um(t.schema,n))do{if(n=n.parent,!n)return}while(!Um(t.schema,n));t.change((t=>{t.setSelection(n,"in")}))}}function Um(t,e){return t.isLimit(e)&&(t.checkChild(e,"$text")||t.checkChild(e,"paragraph"))}const Hm=pr("Ctrl+A");class Gm extends F{static get pluginName(){return"SelectAllEditing"}init(){const t=this.editor,e=t.editing.view.document;t.commands.add("selectAll",new Vm(t)),this.listenTo(e,"keydown",((e,n)=>{mr(n)===Hm&&(t.execute("selectAll"),n.preventDefault())}))}}class qm extends F{static get pluginName(){return"SelectAllUI"}init(){const t=this.editor;t.ui.componentFactory.add("selectAll",(e=>{const n=t.commands.get("selectAll"),o=new cu(e),i=e.t;return o.set({label:i("Select all"),icon:'',keystroke:"Ctrl+A",tooltip:!0}),o.bind("isEnabled").to(n,"isEnabled"),this.listenTo(o,"execute",(()=>{t.execute("selectAll"),t.editing.view.focus()})),o}))}}class Wm extends F{static get requires(){return[Gm,qm]}static get pluginName(){return"SelectAll"}}class Ym extends U{constructor(t,e){super(t),this._buffer=new Vg(t.model,e)}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(t={}){const e=this.editor.model,n=e.document,o=t.text||"",i=o.length;let r=n.selection;t.selection?r=t.selection:t.range&&(r=e.createSelection(t.range));const s=t.resultRange;e.enqueueChange(this._buffer.batch,(t=>{this._buffer.lock(),e.deleteContent(r),o&&e.insertContent(t.createText(o,n.selection.getAttributes()),r),s?t.setSelection(s):r.is("documentSelection")||t.setSelection(r),this._buffer.unlock(),this._buffer.input(i)}))}}const $m=["insertText","insertReplacementText"];class Km extends ys{constructor(t){super(t),cr.isAndroid&&$m.push("insertCompositionText");const n=t.document;n.on("beforeinput",((o,i)=>{if(!this.isEnabled)return;const{data:r,targetRanges:s,inputType:a,domEvent:c}=i;if(!$m.includes(a))return;const l=new e(n,"insertText");n.fire(l,new Es(t,c,{text:r,selection:t.createSelection(s)})),l.stop.called&&o.stop()})),n.on("compositionend",((e,{data:o,domEvent:i})=>{this.isEnabled&&!cr.isAndroid&&o&&n.fire("insertText",new Es(t,i,{text:o,selection:n.selection}))}),{priority:"lowest"})}observe(){}}class Qm extends F{static get pluginName(){return"Input"}init(){const t=this.editor,e=t.model,n=t.editing.view,o=e.document.selection;n.addObserver(Km);const i=new Ym(t,t.config.get("typing.undoStep")||20);t.commands.add("insertText",i),t.commands.add("input",i),this.listenTo(n.document,"insertText",((o,i)=>{n.document.isComposing||i.preventDefault();const{text:r,selection:s,resultRange:a}=i,c=Array.from(s.getRanges()).map((e=>t.editing.mapper.toModelRange(e)));let l=r;if(cr.isAndroid){const t=Array.from(c[0].getItems()).reduce(((t,e)=>t+(e.is("$textProxy")?e.data:"")),"");t&&(t.length<=l.length?l.startsWith(t)&&(l=l.substring(t.length),c[0].start=c[0].start.getShiftedBy(t.length)):t.startsWith(l)&&(c[0].start=c[0].start.getShiftedBy(l.length),l=""))}const d={text:l,selection:e.createSelection(c)};a&&(d.resultRange=t.editing.mapper.toModelRange(a)),t.execute("insertText",d)})),cr.isAndroid?this.listenTo(n.document,"keydown",((t,r)=>{!o.isCollapsed&&229==r.keyCode&&n.document.isComposing&&Zm(e,i)})):this.listenTo(n.document,"compositionstart",(()=>{o.isCollapsed||Zm(e,i)}))}}function Zm(t,e){if(!e.isEnabled)return;const n=e.buffer;n.lock(),t.enqueueChange(n.batch,(()=>{t.deleteContent(t.document.selection)})),n.unlock()}class Jm extends F{static get requires(){return[Qm,Kg]}static get pluginName(){return"Typing"}}function Xm(t,e){let n=t.start;return{text:Array.from(t.getItems()).reduce(((t,o)=>o.is("$text")||o.is("$textProxy")?t+o.data:(n=e.createPositionAfter(o),"")),""),range:e.createRange(n,t.end)}}class tp extends P{constructor(t,e){super(),this.model=t,this.testCallback=e,this._hasMatch=!1,this.set("isEnabled",!0),this.on("change:isEnabled",(()=>{this.isEnabled?this._startListening():(this.stopListening(t.document.selection),this.stopListening(t.document))})),this._startListening()}get hasMatch(){return this._hasMatch}_startListening(){const t=this.model.document;this.listenTo(t.selection,"change:range",((e,{directChange:n})=>{n&&(t.selection.isCollapsed?this._evaluateTextBeforeSelection("selection"):this.hasMatch&&(this.fire("unmatched"),this._hasMatch=!1))})),this.listenTo(t,"change:data",((t,e)=>{!e.isUndo&&e.isLocal&&this._evaluateTextBeforeSelection("data",{batch:e})}))}_evaluateTextBeforeSelection(t,e={}){const n=this.model,o=n.document.selection,i=n.createRange(n.createPositionAt(o.focus.parent,0),o.focus),{text:r,range:s}=Xm(i,n),a=this.testCallback(r);if(!a&&this.hasMatch&&this.fire("unmatched"),this._hasMatch=!!a,a){const n=Object.assign(e,{text:r,range:s});"object"==typeof a&&Object.assign(n,a),this.fire(`matched:${t}`,n)}}}class ep extends F{constructor(t){super(t),this.attributes=new Set,this._overrideUid=null}static get pluginName(){return"TwoStepCaretMovement"}init(){const t=this.editor,e=t.model,n=t.editing.view,o=t.locale,i=e.document.selection;this.listenTo(n.document,"arrowKey",((t,e)=>{if(!i.isCollapsed)return;if(e.shiftKey||e.altKey||e.ctrlKey)return;const n=e.keyCode==ur.arrowright,r=e.keyCode==ur.arrowleft;if(!n&&!r)return;const s=o.contentLanguageDirection;let a=!1;a="ltr"===s&&n||"rtl"===s&&r?this._handleForwardMovement(e):this._handleBackwardMovement(e),!0===a&&t.stop()}),{context:"$text",priority:"highest"}),this._isNextGravityRestorationSkipped=!1,this.listenTo(i,"change:range",((t,e)=>{this._isNextGravityRestorationSkipped?this._isNextGravityRestorationSkipped=!1:this._isGravityOverridden&&(!e.directChange&&rp(i.getFirstPosition(),this.attributes)||this._restoreGravity())}))}registerAttribute(t){this.attributes.add(t)}_handleForwardMovement(t){const e=this.attributes,n=this.editor.model.document.selection,o=n.getFirstPosition();return!this._isGravityOverridden&&((!o.isAtStart||!np(n,e))&&(!!rp(o,e)&&(ip(t),this._overrideGravity(),!0)))}_handleBackwardMovement(t){const e=this.attributes,n=this.editor.model,o=n.document.selection,i=o.getFirstPosition();return this._isGravityOverridden?(ip(t),this._restoreGravity(),op(n,e,i),!0):i.isAtStart?!!np(o,e)&&(ip(t),op(n,e,i),!0):!!function(t,e){return rp(t.getShiftedBy(-1),e)}(i,e)&&(i.isAtEnd&&!np(o,e)&&rp(i,e)?(ip(t),op(n,e,i),!0):(this._isNextGravityRestorationSkipped=!0,this._overrideGravity(),!1))}get _isGravityOverridden(){return!!this._overrideUid}_overrideGravity(){this._overrideUid=this.editor.model.change((t=>t.overrideSelectionGravity()))}_restoreGravity(){this.editor.model.change((t=>{t.restoreSelectionGravity(this._overrideUid),this._overrideUid=null}))}}function np(t,e){for(const n of e)if(t.hasAttribute(n))return!0;return!1}function op(t,e,n){const o=n.nodeBefore;t.change((t=>{o?t.setSelectionAttribute(o.getAttributes()):t.removeSelectionAttribute(e)}))}function ip(t){t.preventDefault()}function rp(t,e){const{nodeBefore:n,nodeAfter:o}=t;for(const t of e){const e=n?n.getAttribute(t):void 0;if((o?o.getAttribute(t):void 0)!==e)return!0}return!1}var sp=/[\\^$.*+?()[\]{}|]/g,ap=RegExp(sp.source);const cp=function(t){return(t=Zo(t))&&ap.test(t)?t.replace(sp,"\\$&"):t},lp={copyright:{from:"(c)",to:"©"},registeredTrademark:{from:"(r)",to:"®"},trademark:{from:"(tm)",to:"™"},oneHalf:{from:/(^|[^/a-z0-9])(1\/2)([^/a-z0-9])$/i,to:[null,"½",null]},oneThird:{from:/(^|[^/a-z0-9])(1\/3)([^/a-z0-9])$/i,to:[null,"⅓",null]},twoThirds:{from:/(^|[^/a-z0-9])(2\/3)([^/a-z0-9])$/i,to:[null,"⅔",null]},oneForth:{from:/(^|[^/a-z0-9])(1\/4)([^/a-z0-9])$/i,to:[null,"¼",null]},threeQuarters:{from:/(^|[^/a-z0-9])(3\/4)([^/a-z0-9])$/i,to:[null,"¾",null]},lessThanOrEqual:{from:"<=",to:"≤"},greaterThanOrEqual:{from:">=",to:"≥"},notEqual:{from:"!=",to:"≠"},arrowLeft:{from:"<-",to:"←"},arrowRight:{from:"->",to:"→"},horizontalEllipsis:{from:"...",to:"…"},enDash:{from:/(^| )(--)( )$/,to:[null,"–",null]},emDash:{from:/(^| )(---)( )$/,to:[null,"—",null]},quotesPrimary:{from:pp('"'),to:[null,"“",null,"”"]},quotesSecondary:{from:pp("'"),to:[null,"‘",null,"’"]},quotesPrimaryEnGb:{from:pp("'"),to:[null,"‘",null,"’"]},quotesSecondaryEnGb:{from:pp('"'),to:[null,"“",null,"”"]},quotesPrimaryPl:{from:pp('"'),to:[null,"„",null,"”"]},quotesSecondaryPl:{from:pp("'"),to:[null,"‚",null,"’"]}},dp={symbols:["copyright","registeredTrademark","trademark"],mathematical:["oneHalf","oneThird","twoThirds","oneForth","threeQuarters","lessThanOrEqual","greaterThanOrEqual","notEqual","arrowLeft","arrowRight"],typography:["horizontalEllipsis","enDash","emDash"],quotes:["quotesPrimary","quotesSecondary"]},hp=["symbols","mathematical","typography","quotes"];function up(t){return"string"==typeof t?new RegExp(`(${cp(t)})$`):t}function gp(t){return"string"==typeof t?()=>[t]:t instanceof Array?()=>t:t}function mp(t){return(t.textNode?t.textNode:t.nodeAfter).getAttributes()}function pp(t){return new RegExp(`(^|\\s)(${t})([^${t}]*)(${t})$`)}function fp(t,e,n,o){return o.createRange(kp(t,e,n,!0,o),kp(t,e,n,!1,o))}function kp(t,e,n,o,i){let r=t.textNode||(o?t.nodeBefore:t.nodeAfter),s=null;for(;r&&r.getAttribute(e)==n;)s=r,r=o?r.previousSibling:r.nextSibling;return s?i.createPositionAt(s,o?"before":"after"):t}class bp extends U{constructor(t){super(t),this._stack=[],this._createdBatches=new WeakSet,this.refresh(),this.listenTo(t.data,"set",((t,e)=>{e[1]={...e[1]};const n=e[1];n.batchType||(n.batchType={isUndoable:!1})}),{priority:"high"}),this.listenTo(t.data,"set",((t,e)=>{e[1].batchType.isUndoable||this.clearStack()}))}refresh(){this.isEnabled=this._stack.length>0}addBatch(t){const e=this.editor.model.document.selection,n={ranges:e.hasOwnRange?Array.from(e.getRanges()):[],isBackward:e.isBackward};this._stack.push({batch:t,selection:n}),this.refresh()}clearStack(){this._stack=[],this.refresh()}_restoreSelection(t,e,n){const o=this.editor.model,i=o.document,r=[],s=t.map((t=>t.getTransformedByOperations(n))),a=s.flat();for(const t of s){const e=t.filter((t=>t.root!=i.graveyard)).filter((t=>!Ap(t,a)));e.length&&(wp(e),r.push(e[0]))}r.length&&o.change((t=>{t.setSelection(r,{backward:e})}))}_undo(t,e){const n=this.editor.model,o=n.document;this._createdBatches.add(e);const i=t.operations.slice().filter((t=>t.isDocumentOperation));i.reverse();for(const t of i){const i=t.baseVersion+1,r=Array.from(o.history.getOperations(i)),s=Rd([t.getReversed()],r,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA;for(const i of s)e.addOperation(i),n.applyOperation(i),o.history.setOperationAsUndone(t,i)}}}function wp(t){t.sort(((t,e)=>t.start.isBefore(e.start)?-1:1));for(let e=1;ee!==t&&e.containsRange(t,!0)))}class _p extends bp{execute(t=null){const e=t?this._stack.findIndex((e=>e.batch==t)):this._stack.length-1,n=this._stack.splice(e,1)[0],o=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(o,(()=>{this._undo(n.batch,o);const t=this.editor.model.document.history.getOperations(n.batch.baseVersion);this._restoreSelection(n.selection.ranges,n.selection.isBackward,t),this.fire("revert",n.batch,o)})),this.refresh()}}class Cp extends bp{execute(){const t=this._stack.pop(),e=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(e,(()=>{const n=t.batch.operations[t.batch.operations.length-1].baseVersion+1,o=this.editor.model.document.history.getOperations(n);this._restoreSelection(t.selection.ranges,t.selection.isBackward,o),this._undo(t.batch,e)})),this.refresh()}}class vp extends F{constructor(t){super(t),this._batchRegistry=new WeakSet}static get pluginName(){return"UndoEditing"}init(){const t=this.editor;this._undoCommand=new _p(t),this._redoCommand=new Cp(t),t.commands.add("undo",this._undoCommand),t.commands.add("redo",this._redoCommand),this.listenTo(t.model,"applyOperation",((t,e)=>{const n=e[0];if(!n.isDocumentOperation)return;const o=n.batch,i=this._redoCommand._createdBatches.has(o),r=this._undoCommand._createdBatches.has(o);this._batchRegistry.has(o)||(this._batchRegistry.add(o),o.isUndoable&&(i?this._undoCommand.addBatch(o):r||(this._undoCommand.addBatch(o),this._redoCommand.clearStack())))}),{priority:"highest"}),this.listenTo(this._undoCommand,"revert",((t,e,n)=>{this._redoCommand.addBatch(n)})),t.keystrokes.set("CTRL+Z","undo"),t.keystrokes.set("CTRL+Y","redo"),t.keystrokes.set("CTRL+SHIFT+Z","redo")}}const yp='',xp='';class Ep extends F{static get pluginName(){return"UndoUI"}init(){const t=this.editor,e=t.locale,n=t.t,o="ltr"==e.uiLanguageDirection?yp:xp,i="ltr"==e.uiLanguageDirection?xp:yp;this._addButton("undo",n("Undo"),"CTRL+Z",o),this._addButton("redo",n("Redo"),"CTRL+Y",i)}_addButton(t,e,n,o){const i=this.editor;i.ui.componentFactory.add(t,(r=>{const s=i.commands.get(t),a=new cu(r);return a.set({label:e,icon:o,keystroke:n,tooltip:!0}),a.bind("isEnabled").to(s,"isEnabled"),this.listenTo(a,"execute",(()=>{i.execute(t),i.editing.view.focus()})),a}))}}class Dp extends F{static get requires(){return[vp,Ep]}static get pluginName(){return"Undo"}}class Ip extends P{constructor(){super();const t=new window.FileReader;this._reader=t,this._data=void 0,this.set("loaded",0),t.onprogress=t=>{this.loaded=t.loaded}}get error(){return this._reader.error}get data(){return this._data}read(t){const e=this._reader;return this.total=t.size,new Promise(((n,o)=>{e.onload=()=>{const t=e.result;this._data=t,n(t)},e.onerror=()=>{o("error")},e.onabort=()=>{o("aborted")},this._reader.readAsDataURL(t)}))}abort(){this._reader.abort()}}class Tp extends F{static get pluginName(){return"FileRepository"}static get requires(){return[Zh]}init(){this.loaders=new fo,this.loaders.on("change",(()=>this._updatePendingAction())),this._loadersMap=new Map,this._pendingAction=null,this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",((t,e)=>e?t/e*100:0))}getLoader(t){return this._loadersMap.get(t)||null}createLoader(t){if(!this.createUploadAdapter)return l("filerepository-no-upload-adapter"),null;const e=new Mp(Promise.resolve(t),this.createUploadAdapter);return this.loaders.add(e),this._loadersMap.set(t,e),t instanceof Promise&&e.file.then((t=>{this._loadersMap.set(t,e)})).catch((()=>{})),e.on("change:uploaded",(()=>{let t=0;for(const e of this.loaders)t+=e.uploaded;this.uploaded=t})),e.on("change:uploadTotal",(()=>{let t=0;for(const e of this.loaders)e.uploadTotal&&(t+=e.uploadTotal);this.uploadTotal=t})),e}destroyLoader(t){const e=t instanceof Mp?t:this.getLoader(t);e._destroy(),this.loaders.remove(e),this._loadersMap.forEach(((t,n)=>{t===e&&this._loadersMap.delete(n)}))}_updatePendingAction(){const t=this.editor.plugins.get(Zh);if(this.loaders.length){if(!this._pendingAction){const e=this.editor.t,n=t=>`${e("Upload in progress")} ${parseInt(t)}%.`;this._pendingAction=t.add(n(this.uploadedPercent)),this._pendingAction.bind("message").to(this,"uploadedPercent",n)}}else t.remove(this._pendingAction),this._pendingAction=null}}class Mp extends P{constructor(t,e){super(),this.id=r(),this._filePromiseWrapper=this._createFilePromiseWrapper(t),this._adapter=e(this),this._reader=new Ip,this.set("status","idle"),this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",((t,e)=>e?t/e*100:0)),this.set("uploadResponse",null)}get file(){return this._filePromiseWrapper?this._filePromiseWrapper.promise.then((t=>this._filePromiseWrapper?t:null)):Promise.resolve(null)}get data(){return this._reader.data}read(){if("idle"!=this.status)throw new c("filerepository-read-wrong-status",this);return this.status="reading",this.file.then((t=>this._reader.read(t))).then((t=>{if("reading"!==this.status)throw this.status;return this.status="idle",t})).catch((t=>{if("aborted"===t)throw this.status="aborted","aborted";throw this.status="error",this._reader.error?this._reader.error:t}))}upload(){if("idle"!=this.status)throw new c("filerepository-upload-wrong-status",this);return this.status="uploading",this.file.then((()=>this._adapter.upload())).then((t=>(this.uploadResponse=t,this.status="idle",t))).catch((t=>{if("aborted"===this.status)throw"aborted";throw this.status="error",t}))}abort(){const t=this.status;this.status="aborted",this._filePromiseWrapper.isFulfilled?"reading"==t?this._reader.abort():"uploading"==t&&this._adapter.abort&&this._adapter.abort():(this._filePromiseWrapper.promise.catch((()=>{})),this._filePromiseWrapper.rejecter("aborted")),this._destroy()}_destroy(){this._filePromiseWrapper=void 0,this._reader=void 0,this._adapter=void 0,this.uploadResponse=void 0}_createFilePromiseWrapper(t){const e={};return e.promise=new Promise(((n,o)=>{e.rejecter=o,e.isFulfilled=!1,t.then((t=>{e.isFulfilled=!0,n(t)})).catch((t=>{e.isFulfilled=!0,o(t)}))})),e}}class Sp extends Mh{constructor(t){super(t),this.buttonView=new cu(t),this._fileInputView=new Np(t),this._fileInputView.bind("acceptedType").to(this),this._fileInputView.bind("allowMultipleFiles").to(this),this._fileInputView.delegate("done").to(this),this.setTemplate({tag:"span",attributes:{class:"ck-file-dialog-button"},children:[this.buttonView,this._fileInputView]}),this.buttonView.on("execute",(()=>{this._fileInputView.open()}))}focus(){this.buttonView.focus()}}class Np extends Mh{constructor(t){super(t),this.set("acceptedType",void 0),this.set("allowMultipleFiles",!1);const e=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck-hidden"],type:"file",tabindex:"-1",accept:e.to("acceptedType"),multiple:e.to("allowMultipleFiles")},on:{change:e.to((()=>{this.element&&this.element.files&&this.element.files.length&&this.fire("done",this.element.files),this.element.value=""}))}})}open(){this.element.click()}}const Bp="ckCsrfToken",Pp="abcdefghijklmnopqrstuvwxyz0123456789";function zp(){let t=function(t){t=t.toLowerCase();const e=document.cookie.split(";");for(const n of e){const e=n.split("=");if(decodeURIComponent(e[0].trim().toLowerCase())===t)return decodeURIComponent(e[1])}return null}(Bp);var e,n;return t&&40==t.length||(t=function(t){let e="";const n=new Uint8Array(t);window.crypto.getRandomValues(n);for(let t=0;t.5?o.toUpperCase():o}return e}(40),e=Bp,n=t,document.cookie=encodeURIComponent(e)+"="+encodeURIComponent(n)+";path=/"),t}class Lp{constructor(t,e,n){this.loader=t,this.url=e,this.t=n}upload(){return this.loader.file.then((t=>new Promise(((e,n)=>{this._initRequest(),this._initListeners(e,n,t),this._sendRequest(t)}))))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){const t=this.xhr=new XMLHttpRequest;t.open("POST",this.url,!0),t.responseType="json"}_initListeners(t,e,n){const o=this.xhr,i=this.loader,r=(0,this.t)("Cannot upload file:")+` ${n.name}.`;o.addEventListener("error",(()=>e(r))),o.addEventListener("abort",(()=>e())),o.addEventListener("load",(()=>{const n=o.response;if(!n||!n.uploaded)return e(n&&n.error&&n.error.message?n.error.message:r);t({default:n.url})})),o.upload&&o.upload.addEventListener("progress",(t=>{t.lengthComputable&&(i.uploadTotal=t.total,i.uploaded=t.loaded)}))}_sendRequest(t){const e=new FormData;e.append("upload",t),e.append("ckCsrfToken",zp()),this.xhr.send(e)}}function Op(t,e,n,o){let i,r=null;"function"==typeof o?i=o:(r=t.commands.get(o),i=()=>{t.execute(o)}),t.model.document.on("change:data",((s,a)=>{if(r&&!r.isEnabled||!e.isEnabled)return;const c=Ma(t.model.document.selection.getRanges());if(!c.isCollapsed)return;if(a.isUndo||!a.isLocal)return;const l=Array.from(t.model.document.differ.getChanges()),d=l[0];if(1!=l.length||"insert"!==d.type||"$text"!=d.name||1!=d.length)return;const h=d.position.parent;if(h.is("element","codeBlock"))return;if(h.is("element","listItem")&&"function"!=typeof o&&!["numberedList","bulletedList","todoList"].includes(o))return;if(r&&!0===r.value)return;const u=h.getChild(0),g=t.model.createRangeOn(u);if(!g.containsRange(c)&&!c.end.isEqual(g.end))return;const m=n.exec(u.data.substr(0,c.end.offset));m&&t.model.enqueueChange((e=>{const n=e.createPositionAt(h,0),o=e.createPositionAt(h,m[0].length),r=new kc(n,o);if(!1!==i({match:m})){e.remove(r);const n=t.model.document.selection.getFirstRange(),o=e.createRangeIn(h);!h.isEmpty||o.isEqual(n)||o.containsRange(n,!0)||e.remove(h)}r.detach(),t.model.enqueueChange((()=>{t.plugins.get("Delete").requestUndoOnBackspace()}))}))}))}function Rp(t,e,n,o){let i,r;n instanceof RegExp?i=n:r=n,r=r||(t=>{let e;const n=[],o=[];for(;null!==(e=i.exec(t))&&!(e&&e.length<4);){let{index:t,1:i,2:r,3:s}=e;const a=i+r+s;t+=e[0].length-a.length;const c=[t,t+i.length],l=[t+i.length+r.length,t+i.length+r.length+s.length];n.push(c),n.push(l),o.push([t+i.length,t+i.length+r.length])}return{remove:n,format:o}}),t.model.document.on("change:data",((n,i)=>{if(i.isUndo||!i.isLocal||!e.isEnabled)return;const s=t.model,a=s.document.selection;if(!a.isCollapsed)return;const c=Array.from(s.document.differ.getChanges()),l=c[0];if(1!=c.length||"insert"!==l.type||"$text"!=l.name||1!=l.length)return;const d=a.focus,h=d.parent,{text:u,range:g}=function(t,e){let n=t.start;return{text:Array.from(t.getItems()).reduce(((t,o)=>!o.is("$text")&&!o.is("$textProxy")||o.getAttribute("code")?(n=e.createPositionAfter(o),""):t+o.data),""),range:e.createRange(n,t.end)}}(s.createRange(s.createPositionAt(h,0),d),s),m=r(u),p=jp(g.start,m.format,s),f=jp(g.start,m.remove,s);p.length&&f.length&&s.enqueueChange((e=>{if(!1!==o(e,p)){for(const t of f.reverse())e.remove(t);s.enqueueChange((()=>{t.plugins.get("Delete").requestUndoOnBackspace()}))}}))}))}function jp(t,e,n){return e.filter((t=>void 0!==t[0]&&void 0!==t[1])).map((e=>n.createRange(t.getShiftedBy(e[0]),t.getShiftedBy(e[1]))))}function Fp(t,e){return(n,o)=>{if(!t.commands.get(e).isEnabled)return!1;const i=t.model.schema.getValidRanges(o,e);for(const t of i)n.setAttribute(e,!0,t);n.removeSelectionAttribute(e)}}class Vp extends U{constructor(t,e){super(t),this.attributeKey=e}refresh(){const t=this.editor.model,e=t.document;this.value=this._getValueFromFirstAllowedNode(),this.isEnabled=t.schema.checkAttributeInSelection(e.selection,this.attributeKey)}execute(t={}){const e=this.editor.model,n=e.document.selection,o=void 0===t.forceValue?!this.value:t.forceValue;e.change((t=>{if(n.isCollapsed)o?t.setSelectionAttribute(this.attributeKey,!0):t.removeSelectionAttribute(this.attributeKey);else{const i=e.schema.getValidRanges(n.getRanges(),this.attributeKey);for(const e of i)o?t.setAttribute(this.attributeKey,o,e):t.removeAttribute(this.attributeKey,e)}}))}_getValueFromFirstAllowedNode(){const t=this.editor.model,e=t.schema,n=t.document.selection;if(n.isCollapsed)return n.hasAttribute(this.attributeKey);for(const t of n.getRanges())for(const n of t.getItems())if(e.checkAttribute(n,this.attributeKey))return n.hasAttribute(this.attributeKey);return!1}}const Up="bold";class Hp extends F{static get pluginName(){return"BoldEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:Up}),t.model.schema.setAttributeProperties(Up,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:Up,view:"strong",upcastAlso:["b",t=>{const e=t.getStyle("font-weight");return e?"bold"==e||Number(e)>=600?{name:!0,styles:["font-weight"]}:void 0:null}]}),t.commands.add(Up,new Vp(t,Up)),t.keystrokes.set("CTRL+B",Up)}}const Gp="bold";class qp extends F{static get pluginName(){return"BoldUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add(Gp,(n=>{const o=t.commands.get(Gp),i=new cu(n);return i.set({label:e("Bold"),icon:Jh.bold,keystroke:"CTRL+B",tooltip:!0,isToggleable:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(i,"execute",(()=>{t.execute(Gp),t.editing.view.focus()})),i}))}}const Wp="italic";class Yp extends F{static get pluginName(){return"ItalicEditing"}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:Wp}),t.model.schema.setAttributeProperties(Wp,{isFormatting:!0,copyOnEnter:!0}),t.conversion.attributeToElement({model:Wp,view:"i",upcastAlso:["em",{styles:{"font-style":"italic"}}]}),t.commands.add(Wp,new Vp(t,Wp)),t.keystrokes.set("CTRL+I",Wp)}}const $p="italic";class Kp extends F{static get pluginName(){return"ItalicUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add($p,(n=>{const o=t.commands.get($p),i=new cu(n);return i.set({label:e("Italic"),icon:'',keystroke:"CTRL+I",tooltip:!0,isToggleable:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(i,"execute",(()=>{t.execute($p),t.editing.view.focus()})),i}))}}class Qp extends U{refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,n=e.schema,o=e.document.selection,i=Array.from(o.getSelectedBlocks()),r=void 0===t.forceValue?!this.value:t.forceValue;e.change((t=>{if(r){const e=i.filter((t=>Zp(t)||Xp(n,t)));this._applyQuote(t,e)}else this._removeQuote(t,i.filter(Zp))}))}_getValue(){const t=Ma(this.editor.model.document.selection.getSelectedBlocks());return!(!t||!Zp(t))}_checkEnabled(){if(this.value)return!0;const t=this.editor.model.document.selection,e=this.editor.model.schema,n=Ma(t.getSelectedBlocks());return!!n&&Xp(e,n)}_removeQuote(t,e){Jp(t,e).reverse().forEach((e=>{if(e.start.isAtStart&&e.end.isAtEnd)return void t.unwrap(e.start.parent);if(e.start.isAtStart){const n=t.createPositionBefore(e.start.parent);return void t.move(e,n)}e.end.isAtEnd||t.split(e.end);const n=t.createPositionAfter(e.end.parent);t.move(e,n)}))}_applyQuote(t,e){const n=[];Jp(t,e).reverse().forEach((e=>{let o=Zp(e.start);o||(o=t.createElement("blockQuote"),t.wrap(e,o)),n.push(o)})),n.reverse().reduce(((e,n)=>e.nextSibling==n?(t.merge(t.createPositionAfter(e)),e):n))}}function Zp(t){return"blockQuote"==t.parent.name?t.parent:null}function Jp(t,e){let n,o=0;const i=[];for(;o{const o=t.model.document.differ.getChanges();for(const t of o)if("insert"==t.type){const o=t.position.nodeAfter;if(!o)continue;if(o.is("element","blockQuote")&&o.isEmpty)return n.remove(o),!0;if(o.is("element","blockQuote")&&!e.checkChild(t.position,o))return n.unwrap(o),!0;if(o.is("element")){const t=n.createRangeIn(o);for(const o of t.getItems())if(o.is("element","blockQuote")&&!e.checkChild(n.createPositionBefore(o),o))return n.unwrap(o),!0}}else if("remove"==t.type){const e=t.position.parent;if(e.is("element","blockQuote")&&e.isEmpty)return n.remove(e),!0}return!1}));const n=this.editor.editing.view.document,o=t.model.document.selection,i=t.commands.get("blockQuote");this.listenTo(n,"enter",((e,n)=>{if(!o.isCollapsed||!i.value)return;o.getLastPosition().parent.isEmpty&&(t.execute("blockQuote"),t.editing.view.scrollToTheSelection(),n.preventDefault(),e.stop())}),{context:"blockquote"}),this.listenTo(n,"delete",((e,n)=>{if("backward"!=n.direction||!o.isCollapsed||!i.value)return;const r=o.getLastPosition().parent;r.isEmpty&&!r.previousSibling&&(t.execute("blockQuote"),t.editing.view.scrollToTheSelection(),n.preventDefault(),e.stop())}),{context:"blockquote"})}}var ef=n(3062),nf={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(ef.Z,nf);ef.Z.locals;class of extends F{static get pluginName(){return"BlockQuoteUI"}init(){const t=this.editor,e=t.t;t.ui.componentFactory.add("blockQuote",(n=>{const o=t.commands.get("blockQuote"),i=new cu(n);return i.set({label:e("Block quote"),icon:Jh.quote,tooltip:!0,isToggleable:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),this.listenTo(i,"execute",(()=>{t.execute("blockQuote"),t.editing.view.focus()})),i}))}}class rf extends F{static get pluginName(){return"CKBoxUI"}afterInit(){const t=this.editor;if(!t.commands.get("ckbox"))return;const e=t.t;t.ui.componentFactory.add("ckbox",(n=>{const o=t.commands.get("ckbox"),i=new cu(n);return i.set({label:e("Open file manager"),icon:'',tooltip:!0}),i.bind("isOn","isEnabled").to(o,"value","isEnabled"),i.on("execute",(()=>{t.execute("ckbox")})),i}))}}function sf({token:t,id:e,origin:n,width:o,extension:i}){const r=af(t),s=function(t){const e=[10*t/100,80],n=Math.floor(Math.max(...e)),o=[Math.min(t,4e3)];let i=o[0];for(;i-n>=n;)i-=n,o.unshift(i);return o}(o),a=function(t){if("bmp"===t||"tiff"===t||"jpg"===t)return"jpeg";return t}(i);return{imageFallbackUrl:cf({environmentId:r,id:e,origin:n,width:o,extension:a}),imageSources:[{srcset:s.map((t=>`${cf({environmentId:r,id:e,origin:n,width:t,extension:"webp"})} ${t}w`)).join(","),sizes:`(max-width: ${o}px) 100vw, ${o}px`,type:"image/webp"}]}}function af(t){const[,e]=t.value.split(".");return JSON.parse(atob(e)).aud}function cf({environmentId:t,id:e,origin:n,width:o,extension:i}){return new URL(`${t}/assets/${e}/images/${o}.${i}`,n).toString()}class lf extends U{constructor(t){super(t),this._chosenAssets=new Set,this._wrapper=null,this._initListeners()}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(){this.fire("ckbox:open")}_getValue(){return null!==this._wrapper}_checkEnabled(){const t=this.editor.commands.get("insertImage"),e=this.editor.commands.get("link");return!(!t.isEnabled&&!e.isEnabled)}_prepareOptions(){const t=this.editor.config.get("ckbox");return{theme:t.theme,language:t.language,tokenUrl:t.tokenUrl,serviceOrigin:t.serviceOrigin,assetsOrigin:t.assetsOrigin,dialog:{onClose:()=>this.fire("ckbox:close")},assets:{onChoose:t=>this.fire("ckbox:choose",t)}}}_initListeners(){const t=this.editor,e=t.model,n=!t.config.get("ckbox.ignoreDataId");this.on("ckbox",(()=>{this.refresh()}),{priority:"low"}),this.on("ckbox:open",(()=>{this.isEnabled&&!this.value&&(this._wrapper=wa(document,"div",{class:"ck ckbox-wrapper"}),document.body.appendChild(this._wrapper),window.CKBox.mount(this._wrapper,this._prepareOptions()))})),this.on("ckbox:close",(()=>{this.value&&(this._wrapper.remove(),this._wrapper=null)})),this.on("ckbox:choose",((o,i)=>{if(!this.isEnabled)return;const r=t.commands.get("insertImage"),s=t.commands.get("link"),a=t.plugins.get("CKBoxEditing"),c=function({assets:t,origin:e,token:n,isImageAllowed:o,isLinkAllowed:i}){return t.map((t=>({id:t.data.id,type:hf(t)?"image":"link",attributes:df(t,n,e)}))).filter((t=>"image"===t.type?o:i))}({assets:i,origin:t.config.get("ckbox.assetsOrigin"),token:a.getToken(),isImageAllowed:r.isEnabled,isLinkAllowed:s.isEnabled});0!==c.length&&e.change((t=>{for(const e of c){const o=e===c[c.length-1];this._insertAsset(e,o,t),n&&(setTimeout((()=>this._chosenAssets.delete(e)),1e3),this._chosenAssets.add(e))}}))})),this.listenTo(t,"destroy",(()=>{this.fire("ckbox:close"),this._chosenAssets.clear()}))}_insertAsset(t,e,n){const o=this.editor.model.document.selection;n.removeSelectionAttribute("linkHref"),"image"===t.type?this._insertImage(t):this._insertLink(t,n),e||n.setSelection(o.getLastPosition())}_insertImage(t){const e=this.editor,{imageFallbackUrl:n,imageSources:o,imageTextAlternative:i}=t.attributes;e.execute("insertImage",{source:{src:n,sources:o,alt:i}})}_insertLink(t,e){const n=this.editor,o=n.model,i=o.document.selection,{linkName:r,linkHref:s}=t.attributes;if(i.isCollapsed){const t=Bo(i.getAttributes()),n=e.createText(r,t),s=o.insertContent(n);e.setSelection(s)}n.execute("link",s)}}function df(t,e,n){if(hf(t)){const{imageFallbackUrl:o,imageSources:i}=sf({token:e,origin:n,id:t.data.id,width:t.data.metadata.width,extension:t.data.extension});return{imageFallbackUrl:o,imageSources:i,imageTextAlternative:t.data.metadata.description||""}}return{linkName:t.data.name,linkHref:uf(t,e,n)}}function hf(t){const e=t.data.metadata;return!!e&&(e.width&&e.height)}function uf(t,e,n){const o=af(e),i=new URL(`${o}/assets/${t.data.id}/file`,n);return i.searchParams.set("download","true"),i.toString()}class gf extends F{static get requires(){return["ImageUploadEditing","ImageUploadProgress",Tp,ff]}static get pluginName(){return"CKBoxUploadAdapter"}async afterInit(){const t=this.editor,e=!!t.config.get("ckbox"),n=!!window.CKBox;if(!e&&!n)return;const o=t.plugins.get(Tp),i=t.plugins.get(ff);o.createUploadAdapter=e=>new mf(e,i.getToken(),t);const r=!t.config.get("ckbox.ignoreDataId"),s=t.plugins.get("ImageUploadEditing");r&&s.on("uploadComplete",((e,{imageElement:n,data:o})=>{t.model.change((t=>{t.setAttribute("ckboxImageId",o.ckboxImageId,n)}))}))}}class mf{constructor(t,e,n){this.loader=t,this.token=e,this.editor=n,this.controller=new AbortController,this.serviceOrigin=n.config.get("ckbox.serviceOrigin"),this.assetsOrigin=n.config.get("ckbox.assetsOrigin")}async getAvailableCategories(t=0){const e=new URL("categories",this.serviceOrigin);return e.searchParams.set("limit",50..toString()),e.searchParams.set("offset",t.toString()),this._sendHttpRequest({url:e}).then((async e=>{if(e.totalCount-(t+50)>0){const n=await this.getAvailableCategories(t+50);return[...e.items,...n]}return e.items})).catch((()=>{this.controller.signal.throwIfAborted(),d("ckbox-fetch-category-http-error")}))}async getCategoryIdForFile(t){const e=pf(t.name),n=await this.getAvailableCategories();if(!n)return null;const o=this.editor.config.get("ckbox.defaultUploadCategories");if(o){const t=Object.keys(o).find((t=>o[t].includes(e)));if(t){const e=n.find((e=>e.id===t||e.name===t));return e?e.id:null}}const i=n.find((t=>t.extensions.includes(e)));return i?i.id:null}async upload(){const t=this.editor.t,e=t("Cannot determine a category for the uploaded file."),n=await this.loader.file,o=await this.getCategoryIdForFile(n);if(!o)return Promise.reject(e);const i=new URL("assets",this.serviceOrigin),r=new FormData;r.append("categoryId",o),r.append("file",n);const s={method:"POST",url:i,data:r,onUploadProgress:t=>{t.lengthComputable&&(this.loader.uploadTotal=t.total,this.loader.uploaded=t.loaded)}};return this._sendHttpRequest(s).then((async t=>{const e=await this._getImageWidth(),o=pf(n.name),i=sf({token:this.token,id:t.id,origin:this.assetsOrigin,width:e,extension:o});return{ckboxImageId:t.id,default:i.imageFallbackUrl,sources:i.imageSources}})).catch((()=>{const e=t("Cannot upload file:")+` ${n.name}.`;return Promise.reject(e)}))}abort(){this.controller.abort()}_sendHttpRequest(t){const{url:e,data:n,onUploadProgress:o}=t,i=t.method||"GET",r=this.controller.signal,s=new XMLHttpRequest;s.open(i,e.toString(),!0),s.setRequestHeader("Authorization",this.token.value),s.setRequestHeader("CKBox-Version","CKEditor 5"),s.responseType="json";const a=()=>{s.abort()};return new Promise(((t,e)=>{r.addEventListener("abort",a),s.addEventListener("loadstart",(()=>{r.addEventListener("abort",a)})),s.addEventListener("loadend",(()=>{r.removeEventListener("abort",a)})),s.addEventListener("error",(()=>{e()})),s.addEventListener("abort",(()=>{e()})),s.addEventListener("load",(async()=>{const n=s.response;return!n||n.statusCode>=400?e(n&&n.message):t(n)})),o&&s.upload.addEventListener("progress",(t=>{o(t)})),s.send(n)}))}_getImageWidth(){return new Promise((t=>{const e=new Image;e.onload=()=>{URL.revokeObjectURL(e.src),t(e.width)},e.src=this.loader.data}))}}function pf(t){return t.match(/\.(?[^.]+)$/).groups.ext}class ff extends F{static get pluginName(){return"CKBoxEditing"}static get requires(){return["CloudServices","LinkEditing","PictureEditing",gf]}async init(){const t=this.editor,e=!!t.config.get("ckbox"),n=!!window.CKBox;if(!e&&!n)return;this._initConfig();const o=t.plugins.get("CloudServicesCore"),i=t.config.get("ckbox.tokenUrl"),r=t.config.get("cloudServices.tokenUrl");this._token=i===r?t.plugins.get("CloudServices").token:await o.createToken(i).init(),t.config.get("ckbox.ignoreDataId")||(this._initSchema(),this._initConversion(),this._initFixers()),n&&t.commands.add("ckbox",new lf(t))}getToken(){return this._token}_initConfig(){const t=this.editor;t.config.define("ckbox",{serviceOrigin:"https://api.ckbox.io",assetsOrigin:"https://ckbox.cloud",defaultUploadCategories:null,ignoreDataId:!1,language:t.locale.uiLanguage,theme:"default",tokenUrl:t.config.get("cloudServices.tokenUrl")});if(!t.config.get("ckbox.tokenUrl"))throw new c("ckbox-plugin-missing-token-url",this);t.plugins.has("ImageBlockEditing")||t.plugins.has("ImageInlineEditing")||d("ckbox-plugin-image-feature-missing",t)}_initSchema(){const t=this.editor.model.schema;t.extend("$text",{allowAttributes:"ckboxLinkId"}),t.isRegistered("imageBlock")&&t.extend("imageBlock",{allowAttributes:["ckboxImageId","ckboxLinkId"]}),t.isRegistered("imageInline")&&t.extend("imageInline",{allowAttributes:["ckboxImageId","ckboxLinkId"]}),t.addAttributeCheck(((t,e)=>{if(!!!t.last.getAttribute("linkHref")&&"ckboxLinkId"===e)return!1}))}_initConversion(){const t=this.editor;t.conversion.for("downcast").add((t=>{t.on("attribute:ckboxLinkId:imageBlock",((t,e,n)=>{const{writer:o,mapper:i,consumable:r}=n;if(!r.consume(e.item,t.name))return;const s=[...i.toViewElement(e.item).getChildren()].find((t=>"a"===t.name));s&&(e.item.hasAttribute("ckboxLinkId")?o.setAttribute("data-ckbox-resource-id",e.item.getAttribute("ckboxLinkId"),s):o.removeAttribute("data-ckbox-resource-id",s))}),{priority:"low"}),t.on("attribute:ckboxLinkId",((t,e,n)=>{const{writer:o,mapper:i,consumable:r}=n;if(r.consume(e.item,t.name)){if(e.attributeOldValue){const t=bf(o,e.attributeOldValue);o.unwrap(i.toViewRange(e.range),t)}if(e.attributeNewValue){const t=bf(o,e.attributeNewValue);if(e.item.is("selection")){const e=o.document.selection;o.wrap(e.getFirstRange(),t)}else o.wrap(i.toViewRange(e.range),t)}}}),{priority:"low"})})),t.conversion.for("upcast").add((t=>{t.on("element:a",((t,e,n)=>{const{writer:o,consumable:i}=n;if(!e.viewItem.getAttribute("href"))return;if(!i.consume(e.viewItem,{attributes:["data-ckbox-resource-id"]}))return;const r=e.viewItem.getAttribute("data-ckbox-resource-id");if(r)if(e.modelRange)for(let t of e.modelRange.getItems())t.is("$textProxy")&&(t=t.textNode),wf(t)&&o.setAttribute("ckboxLinkId",r,t);else{const t=e.modelCursor.nodeBefore||e.modelCursor.parent;o.setAttribute("ckboxLinkId",r,t)}}),{priority:"low"})})),t.conversion.for("downcast").attributeToAttribute({model:"ckboxImageId",view:"data-ckbox-resource-id"}),t.conversion.for("upcast").elementToAttribute({model:{key:"ckboxImageId",value:t=>t.getAttribute("data-ckbox-resource-id")},view:{attributes:{"data-ckbox-resource-id":/[\s\S]+/}}})}_initFixers(){const t=this.editor,e=t.model,n=e.document.selection;e.document.registerPostFixer(function(t){return e=>{let n=!1;const o=t.model,i=t.commands.get("ckbox");if(!i)return n;for(const t of o.document.differ.getChanges()){if("insert"!==t.type&&"attribute"!==t.type)continue;const o="insert"===t.type?new rc(t.position,t.position.getShiftedBy(t.length)):t.range,r="attribute"===t.type&&"linkHref"===t.attributeKey&&null===t.attributeNewValue;for(const t of o.getItems()){if(r&&t.hasAttribute("ckboxLinkId")){e.removeAttribute("ckboxLinkId",t),n=!0;continue}const o=kf(t,i._chosenAssets);for(const i of o){const o="image"===i.type?"ckboxImageId":"ckboxLinkId";i.id!==t.getAttribute(o)&&(e.setAttribute(o,i.id,t),n=!0)}}}return n}}(t)),e.document.registerPostFixer(function(t){return e=>{!t.hasAttribute("linkHref")&&t.hasAttribute("ckboxLinkId")&&e.removeSelectionAttribute("ckboxLinkId")}}(n))}}function kf(t,e){const n=t.is("element","imageInline")||t.is("element","imageBlock"),o=t.hasAttribute("linkHref");return[...e].filter((e=>"image"===e.type&&n?e.attributes.imageFallbackUrl===t.getAttribute("src"):"link"===e.type&&o?e.attributes.linkHref===t.getAttribute("linkHref"):void 0))}function bf(t,e){const n=t.createAttributeElement("a",{"data-ckbox-resource-id":e},{priority:5});return t.setCustomProperty("link",!0,n),n}function wf(t){return!!t.is("$text")||!(!t.is("element","imageInline")&&!t.is("element","imageBlock"))}class Af extends F{static get pluginName(){return"CKFinderUI"}init(){const t=this.editor,e=t.ui.componentFactory,n=t.t;e.add("ckfinder",(e=>{const o=t.commands.get("ckfinder"),i=new cu(e);return i.set({label:n("Insert image or file"),icon:'',tooltip:!0}),i.bind("isEnabled").to(o),i.on("execute",(()=>{t.execute("ckfinder"),t.editing.view.focus()})),i}))}}class _f extends U{constructor(t){super(t),this.stopListening(this.editor.model.document,"change"),this.listenTo(this.editor.model.document,"change",(()=>this.refresh()),{priority:"low"})}refresh(){const t=this.editor.commands.get("insertImage"),e=this.editor.commands.get("link");this.isEnabled=t.isEnabled||e.isEnabled}execute(){const t=this.editor,e=this.editor.config.get("ckfinder.openerMethod")||"modal";if("popup"!=e&&"modal"!=e)throw new c("ckfinder-unknown-openermethod",t);const n=this.editor.config.get("ckfinder.options")||{};n.chooseFiles=!0;const o=n.onInit;n.language||(n.language=t.locale.uiLanguage),n.onInit=e=>{o&&o(e),e.on("files:choose",(n=>{const o=n.data.files.toArray(),i=o.filter((t=>!t.isImage())),r=o.filter((t=>t.isImage()));for(const e of i)t.execute("link",e.getUrl());const s=[];for(const t of r){const n=t.getUrl();s.push(n||e.request("file:getProxyUrl",{file:t}))}s.length&&Cf(t,s)})),e.on("file:choose:resizedImage",(e=>{const n=e.data.resizedUrl;if(n)Cf(t,[n]);else{const e=t.plugins.get("Notification"),n=t.locale.t;e.showWarning(n("Could not obtain resized image URL."),{title:n("Selecting resized image failed"),namespace:"ckfinder"})}}))},window.CKFinder[e](n)}}function Cf(t,e){if(t.commands.get("insertImage").isEnabled)t.execute("insertImage",{source:e});else{const e=t.plugins.get("Notification"),n=t.locale.t;e.showWarning(n("Could not insert image at the current position."),{title:n("Inserting image failed"),namespace:"ckfinder"})}}class vf extends F{static get pluginName(){return"CKFinderEditing"}static get requires(){return[gg,"LinkEditing"]}init(){const t=this.editor;if(!t.plugins.has("ImageBlockEditing")&&!t.plugins.has("ImageInlineEditing"))throw new c("ckfinder-missing-image-plugin",t);t.commands.add("ckfinder",new _f(t))}}class yf extends F{static get pluginName(){return"CloudServicesUploadAdapter"}static get requires(){return["CloudServices",Tp]}init(){const t=this.editor,e=t.plugins.get("CloudServices"),n=e.token,o=e.uploadUrl;n&&(this._uploadGateway=t.plugins.get("CloudServicesCore").createUploadGateway(n,o),t.plugins.get(Tp).createUploadAdapter=t=>new xf(this._uploadGateway,t))}}class xf{constructor(t,e){this.uploadGateway=t,this.loader=e}upload(){return this.loader.file.then((t=>(this.fileUploader=this.uploadGateway.upload(t),this.fileUploader.on("progress",((t,e)=>{this.loader.uploadTotal=e.total,this.loader.uploaded=e.uploaded})),this.fileUploader.send())))}abort(){this.fileUploader.abort()}}class Ef extends U{refresh(){const t=this.editor.model,e=Ma(t.document.selection.getSelectedBlocks());this.value=!!e&&e.is("element","paragraph"),this.isEnabled=!!e&&Df(e,t.schema)}execute(t={}){const e=this.editor.model,n=e.document;e.change((o=>{const i=(t.selection||n.selection).getSelectedBlocks();for(const t of i)!t.is("element","paragraph")&&Df(t,e.schema)&&o.rename(t,"paragraph")}))}}function Df(t,e){return e.checkChild(t.parent,"paragraph")&&!e.isObject(t)}class If extends U{execute(t){const e=this.editor.model,n=t.attributes;let o=t.position;e.change((t=>{const i=t.createElement("paragraph");if(n&&e.schema.setAllowedAttributes(i,n,t),!e.schema.checkChild(o.parent,i)){const n=e.schema.findAllowedParent(o,i);if(!n)return;o=t.split(o,n).position}e.insertContent(i,o),t.setSelection(i,"in")}))}}class Tf extends F{static get pluginName(){return"Paragraph"}init(){const t=this.editor,e=t.model;t.commands.add("paragraph",new Ef(t)),t.commands.add("insertParagraph",new If(t)),e.schema.register("paragraph",{inheritAllFrom:"$block"}),t.conversion.elementToElement({model:"paragraph",view:"p"}),t.conversion.for("upcast").elementToElement({model:(t,{writer:e})=>Tf.paragraphLikeElements.has(t.name)?t.isEmpty?null:e.createElement("paragraph"):null,view:/.+/,converterPriority:"low"})}}Tf.paragraphLikeElements=new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td","th"]);class Mf extends U{constructor(t,e){super(t),this.modelElements=e}refresh(){const t=Ma(this.editor.model.document.selection.getSelectedBlocks());this.value=!!t&&this.modelElements.includes(t.name)&&t.name,this.isEnabled=!!t&&this.modelElements.some((e=>Sf(t,e,this.editor.model.schema)))}execute(t){const e=this.editor.model,n=e.document,o=t.value;e.change((t=>{const i=Array.from(n.selection.getSelectedBlocks()).filter((t=>Sf(t,o,e.schema)));for(const e of i)e.is("element",o)||t.rename(e,o)}))}}function Sf(t,e,n){return n.checkChild(t.parent,e)&&!n.isObject(t)}const Nf="paragraph";class Bf extends F{static get pluginName(){return"HeadingEditing"}constructor(t){super(t),t.config.define("heading",{options:[{model:"paragraph",title:"Paragraph",class:"ck-heading_paragraph"},{model:"heading1",view:"h2",title:"Heading 1",class:"ck-heading_heading1"},{model:"heading2",view:"h3",title:"Heading 2",class:"ck-heading_heading2"},{model:"heading3",view:"h4",title:"Heading 3",class:"ck-heading_heading3"}]})}static get requires(){return[Tf]}init(){const t=this.editor,e=t.config.get("heading.options"),n=[];for(const o of e)o.model!==Nf&&(t.model.schema.register(o.model,{inheritAllFrom:"$block"}),t.conversion.elementToElement(o),n.push(o.model));this._addDefaultH1Conversion(t),t.commands.add("heading",new Mf(t,n))}afterInit(){const t=this.editor,e=t.commands.get("enter"),n=t.config.get("heading.options");e&&this.listenTo(e,"afterExecute",((e,o)=>{const i=t.model.document.selection.getFirstPosition().parent;n.some((t=>i.is("element",t.model)))&&!i.is("element",Nf)&&0===i.childCount&&o.writer.rename(i,Nf)}))}_addDefaultH1Conversion(t){t.conversion.for("upcast").elementToElement({model:"heading1",view:"h1",converterPriority:s.get("low")+1})}}var Pf=n(8733),zf={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Pf.Z,zf);Pf.Z.locals;class Lf extends F{static get pluginName(){return"HeadingUI"}init(){const t=this.editor,e=t.t,n=function(t){const e=t.t,n={Paragraph:e("Paragraph"),"Heading 1":e("Heading 1"),"Heading 2":e("Heading 2"),"Heading 3":e("Heading 3"),"Heading 4":e("Heading 4"),"Heading 5":e("Heading 5"),"Heading 6":e("Heading 6")};return t.config.get("heading.options").map((t=>{const e=n[t.title];return e&&e!=t.title&&(t.title=e),t}))}(t),o=e("Choose heading"),i=e("Heading");t.ui.componentFactory.add("heading",(e=>{const r={},s=new fo,a=t.commands.get("heading"),c=t.commands.get("paragraph"),l=[a];for(const t of n){const e={type:"button",model:new mg({label:t.title,class:t.class,withText:!0})};"paragraph"===t.model?(e.model.bind("isOn").to(c,"value"),e.model.set("commandName","paragraph"),l.push(c)):(e.model.bind("isOn").to(a,"value",(e=>e===t.model)),e.model.set({commandName:"heading",commandValue:t.model})),s.add(e),r[t.model]=t.title}const d=qu(e);return Yu(d,s),d.buttonView.set({isOn:!1,withText:!0,tooltip:i}),d.extendTemplate({attributes:{class:["ck-heading-dropdown"]}}),d.bind("isEnabled").toMany(l,"isEnabled",((...t)=>t.some((t=>t)))),d.buttonView.bind("label").to(a,"value",c,"value",((t,e)=>{const n=t||e&&"paragraph";return r[n]?r[n]:o})),this.listenTo(d,"execute",(e=>{t.execute(e.source.commandName,e.source.commandValue?{value:e.source.commandValue}:void 0),t.editing.view.focus()})),d}))}}class Of extends F{static get requires(){return[Ag]}static get pluginName(){return"WidgetToolbarRepository"}init(){const t=this.editor;if(t.plugins.has("BalloonToolbar")){const e=t.plugins.get("BalloonToolbar");this.listenTo(e,"show",(e=>{(function(t){const e=t.getSelectedElement();return!(!e||!nm(e))})(t.editing.view.document.selection)&&e.stop()}),{priority:"high"})}this._toolbarDefinitions=new Map,this._balloon=this.editor.plugins.get("ContextualBalloon"),this.on("change:isEnabled",(()=>{this._updateToolbarsVisibility()})),this.listenTo(t.ui,"update",(()=>{this._updateToolbarsVisibility()})),this.listenTo(t.ui.focusTracker,"change:isFocused",(()=>{this._updateToolbarsVisibility()}),{priority:"low"})}destroy(){super.destroy();for(const t of this._toolbarDefinitions.values())t.view.destroy()}register(t,{ariaLabel:e,items:n,getRelatedElement:o,balloonClassName:i="ck-toolbar-container"}){if(!n.length)return void l("widget-toolbar-no-items",{toolbarId:t});const r=this.editor,s=r.t,a=new Nu(r.locale);if(a.ariaLabel=e||s("Widget toolbar"),this._toolbarDefinitions.has(t))throw new c("widget-toolbar-duplicated",this,{toolbarId:t});a.fillFromConfig(n,r.ui.componentFactory);const d={view:a,getRelatedElement:o,balloonClassName:i};r.ui.addToolbar(a,{isContextual:!0,beforeFocus:()=>{const t=o(r.editing.view.document.selection);t&&this._showToolbar(d,t)},afterBlur:()=>{this._hideToolbar(d)}}),this._toolbarDefinitions.set(t,d)}_updateToolbarsVisibility(){let t=0,e=null,n=null;for(const o of this._toolbarDefinitions.values()){const i=o.getRelatedElement(this.editor.editing.view.document.selection);if(this.isEnabled&&i)if(this.editor.ui.focusTracker.isFocused){const r=i.getAncestors().length;r>t&&(t=r,e=i,n=o)}else this._isToolbarVisible(o)&&this._hideToolbar(o);else this._isToolbarInBalloon(o)&&this._hideToolbar(o)}n&&this._showToolbar(n,e)}_hideToolbar(t){this._balloon.remove(t.view),this.stopListening(this._balloon,"change:visibleView")}_showToolbar(t,e){this._isToolbarVisible(t)?Rf(this.editor,e):this._isToolbarInBalloon(t)||(this._balloon.add({view:t.view,position:jf(this.editor,e),balloonClassName:t.balloonClassName}),this.listenTo(this._balloon,"change:visibleView",(()=>{for(const t of this._toolbarDefinitions.values())if(this._isToolbarVisible(t)){const e=t.getRelatedElement(this.editor.editing.view.document.selection);Rf(this.editor,e)}})))}_isToolbarVisible(t){return this._balloon.visibleView===t.view}_isToolbarInBalloon(t){return this._balloon.hasView(t.view)}}function Rf(t,e){const n=t.plugins.get("ContextualBalloon"),o=jf(t,e);n.updatePosition(o)}function jf(t,e){const n=t.editing.view,o=Rh.defaultPositions;return{target:n.domConverter.mapViewToDom(e),positions:[o.northArrowSouth,o.northArrowSouthWest,o.northArrowSouthEast,o.southArrowNorth,o.southArrowNorthWest,o.southArrowNorthEast,o.viewportStickyNorth]}}var Ff=n(8506),Vf={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Ff.Z,Vf);Ff.Z.locals;class Uf extends U{refresh(){const t=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!t,this.isEnabled&&t.hasAttribute("alt")?this.value=t.getAttribute("alt"):this.value=!1}execute(t){const e=this.editor,n=e.plugins.get("ImageUtils"),o=e.model,i=n.getClosestSelectedImageElement(o.document.selection);o.change((e=>{e.setAttribute("alt",t.newValue,i)}))}}function Hf(t){return t.createContainerElement("figure",{class:"image"},[t.createEmptyElement("img"),t.createSlot()])}function Gf(t,e){const n=t.plugins.get("ImageUtils"),o=t.plugins.has("ImageInlineEditing")&&t.plugins.has("ImageBlockEditing");return t=>{if(!n.isInlineImageView(t))return null;if(!o)return i(t);return(t.findAncestor(n.isBlockImageView)?"imageBlock":"imageInline")!==e?null:i(t)};function i(t){const e={name:!0};return t.hasAttribute("src")&&(e.attributes=["src"]),e}}function qf(t,e){const n=Ma(e.getSelectedBlocks());return!n||t.isObject(n)||n.isEmpty&&"listItem"!=n.name?"imageBlock":"imageInline"}class Wf extends F{static get pluginName(){return"ImageUtils"}isImage(t){return this.isInlineImage(t)||this.isBlockImage(t)}isInlineImageView(t){return!!t&&t.is("element","img")}isBlockImageView(t){return!!t&&t.is("element","figure")&&t.hasClass("image")}insertImage(t={},e=null,n=null){const o=this.editor,i=o.model,r=i.document.selection;n=Yf(o,e||r,n),t={...Object.fromEntries(r.getAttributes()),...t};for(const e in t)i.schema.checkAttribute(n,e)||delete t[e];return i.change((o=>{const r=o.createElement(n,t);return i.insertObject(r,e,null,{setSelection:"on",findOptimalPosition:!e&&"imageInline"!=n}),r.parent?r:null}))}getClosestSelectedImageWidget(t){const e=t.getFirstPosition();if(!e)return null;const n=t.getSelectedElement();if(n&&this.isImageWidget(n))return n;let o=e.parent;for(;o;){if(o.is("element")&&this.isImageWidget(o))return o;o=o.parent}return null}getClosestSelectedImageElement(t){const e=t.getSelectedElement();return this.isImage(e)?e:t.getFirstPosition().findAncestor("imageBlock")}isImageAllowed(){const t=this.editor.model.document.selection;return function(t,e){if("imageBlock"==Yf(t,e)){const n=function(t,e){const n=lm(t,e).start.parent;if(n.isEmpty&&!n.is("element","$root"))return n.parent;return n}(e,t.model);if(t.model.schema.checkChild(n,"imageBlock"))return!0}else if(t.model.schema.checkChild(e.focus,"imageInline"))return!0;return!1}(this.editor,t)&&function(t){return[...t.focus.getAncestors()].every((t=>!t.is("element","imageBlock")))}(t)}toImageWidget(t,e,n){e.setCustomProperty("image",!0,t);return om(t,e,{label:()=>{const e=this.findViewImgElement(t).getAttribute("alt");return e?`${e} ${n}`:n}})}isImageWidget(t){return!!t.getCustomProperty("image")&&nm(t)}isBlockImage(t){return!!t&&t.is("element","imageBlock")}isInlineImage(t){return!!t&&t.is("element","imageInline")}findViewImgElement(t){if(this.isInlineImageView(t))return t;const e=this.editor.editing.view;for(const{item:n}of e.createRangeIn(t))if(this.isInlineImageView(n))return n}}function Yf(t,e,n){const o=t.model.schema,i=t.config.get("image.insert.type");return t.plugins.has("ImageBlockEditing")?t.plugins.has("ImageInlineEditing")?n||("inline"===i?"imageInline":"block"===i?"imageBlock":e.is("selection")?qf(o,e):o.checkChild(e,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}class $f extends F{static get requires(){return[Wf]}static get pluginName(){return"ImageTextAlternativeEditing"}init(){this.editor.commands.add("imageTextAlternative",new Uf(this.editor))}}var Kf=n(1905),Qf={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Kf.Z,Qf);Kf.Z.locals;var Zf=n(6764),Jf={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Zf.Z,Jf);Zf.Z.locals;class Xf extends Mh{constructor(t){super(t);const e=this.locale.t;this.focusTracker=new Sa,this.keystrokes=new Na,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(e("Save"),Jh.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(e("Cancel"),Jh.cancel,"ck-button-cancel","cancel"),this._focusables=new sh,this._focusCycler=new vu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:[this.labeledInput,this.saveButtonView,this.cancelButtonView]}),tu(this)}render(){super.render(),this.keystrokes.listenTo(this.element),eu({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createButton(t,e,n,o){const i=new cu(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),o&&i.delegate("execute").to(this,o),i}_createLabeledInputView(){const t=this.locale.t,e=new hg(this.locale,ug);return e.label=t("Text alternative"),e}}function tk(t){const e=t.editing.view,n=Rh.defaultPositions,o=t.plugins.get("ImageUtils");return{target:e.domConverter.mapViewToDom(o.getClosestSelectedImageWidget(e.document.selection)),positions:[n.northArrowSouth,n.northArrowSouthWest,n.northArrowSouthEast,n.southArrowNorth,n.southArrowNorthWest,n.southArrowNorthEast,n.viewportStickyNorth]}}class ek extends F{static get requires(){return[Ag]}static get pluginName(){return"ImageTextAlternativeUI"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const t=this.editor,e=t.t;t.ui.componentFactory.add("imageTextAlternative",(n=>{const o=t.commands.get("imageTextAlternative"),i=new cu(n);return i.set({label:e("Change image text alternative"),icon:Jh.lowVision,tooltip:!0}),i.bind("isEnabled").to(o,"isEnabled"),i.bind("isOn").to(o,"value",(t=>!!t)),this.listenTo(i,"execute",(()=>{this._showForm()})),i}))}_createForm(){const t=this.editor,e=t.editing.view.document,n=t.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new Xf(t.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{t.execute("imageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this._form.keystrokes.set("Esc",((t,e)=>{this._hideForm(!0),e()})),this.listenTo(t.ui,"update",(()=>{n.getClosestSelectedImageWidget(e.selection)?this._isVisible&&function(t){const e=t.plugins.get("ContextualBalloon");if(t.plugins.get("ImageUtils").getClosestSelectedImageWidget(t.editing.view.document.selection)){const n=tk(t);e.updatePosition(n)}}(t):this._hideForm(!0)})),Xh({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const t=this.editor,e=t.commands.get("imageTextAlternative"),n=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:tk(t)}),n.fieldView.value=n.fieldView.element.value=e.value||"",this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(t){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),t&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class nk extends F{static get requires(){return[$f,ek]}static get pluginName(){return"ImageTextAlternative"}}function ok(t,e){return t=>{t.on(`attribute:srcset:${e}`,n)};function n(e,n,o){if(!o.consumable.consume(n.item,e.name))return;const i=o.writer,r=o.mapper.toViewElement(n.item),s=t.findViewImgElement(r);if(null===n.attributeNewValue){const t=n.attributeOldValue;t.data&&(i.removeAttribute("srcset",s),i.removeAttribute("sizes",s),t.width&&i.removeAttribute("width",s))}else{const t=n.attributeNewValue;t.data&&(i.setAttribute("srcset",t.data,s),i.setAttribute("sizes","100vw",s),t.width&&i.setAttribute("width",t.width,s))}}}function ik(t,e,n){return t=>{t.on(`attribute:${n}:${e}`,o)};function o(e,n,o){if(!o.consumable.consume(n.item,e.name))return;const i=o.writer,r=o.mapper.toViewElement(n.item),s=t.findViewImgElement(r);i.setAttribute(n.attributeKey,n.attributeNewValue||"",s)}}class rk extends ys{observe(t){this.listenTo(t,"load",((t,e)=>{const n=e.target;this.checkShouldIgnoreEventFromTarget(n)||"IMG"==n.tagName&&this._fireEvents(e)}),{useCapture:!0})}_fireEvents(t){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",t))}}class sk extends U{constructor(t){super(t);const e=t.config.get("image.insert.type");t.plugins.has("ImageBlockEditing")||"block"===e&&l("image-block-plugin-required"),t.plugins.has("ImageInlineEditing")||"inline"===e&&l("image-inline-plugin-required")}refresh(){this.isEnabled=this.editor.plugins.get("ImageUtils").isImageAllowed()}execute(t){const e=bo(t.source),n=this.editor.model.document.selection,o=this.editor.plugins.get("ImageUtils"),i=Object.fromEntries(n.getAttributes());e.forEach(((t,e)=>{const r=n.getSelectedElement();if("string"==typeof t&&(t={src:t}),e&&r&&o.isImage(r)){const e=this.editor.model.createPositionAfter(r);o.insertImage({...t,...i},e)}else o.insertImage({...t,...i})}))}}class ak extends F{static get requires(){return[Wf]}static get pluginName(){return"ImageEditing"}init(){const t=this.editor,e=t.conversion;t.editing.view.addObserver(rk),e.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:{key:"srcset",value:t=>{const e={data:t.getAttribute("srcset")};return t.hasAttribute("width")&&(e.width=t.getAttribute("width")),e}}});const n=new sk(t);t.commands.add("insertImage",n),t.commands.add("imageInsert",n)}}class ck extends U{constructor(t,e){super(t),this._modelElementName=e}refresh(){const t=this.editor.plugins.get("ImageUtils"),e=t.getClosestSelectedImageElement(this.editor.model.document.selection);"imageBlock"===this._modelElementName?this.isEnabled=t.isInlineImage(e):this.isEnabled=t.isBlockImage(e)}execute(){const t=this.editor,e=this.editor.model,n=t.plugins.get("ImageUtils"),o=n.getClosestSelectedImageElement(e.document.selection),i=Object.fromEntries(o.getAttributes());return i.src||i.uploadId?e.change((t=>{const r=Array.from(e.markers).filter((t=>t.getRange().containsItem(o))),s=n.insertImage(i,e.createSelection(o,"on"),this._modelElementName);if(!s)return null;const a=t.createRangeOn(s);for(const e of r){const n=e.getRange(),o="$graveyard"!=n.root.rootName?n.getJoined(a,!0):a;t.updateMarker(e,{range:o})}return{oldElement:o,newElement:s}})):null}}class lk extends F{static get requires(){return[ak,Wf,Pg]}static get pluginName(){return"ImageBlockEditing"}init(){const t=this.editor;t.model.schema.register("imageBlock",{inheritAllFrom:"$blockObject",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),t.plugins.has("ImageInlineEditing")&&(t.commands.add("imageTypeBlock",new ck(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const t=this.editor,e=t.t,n=t.conversion,o=t.plugins.get("ImageUtils");n.for("dataDowncast").elementToStructure({model:"imageBlock",view:(t,{writer:e})=>Hf(e)}),n.for("editingDowncast").elementToStructure({model:"imageBlock",view:(t,{writer:n})=>o.toImageWidget(Hf(n),n,e("image widget"))}),n.for("downcast").add(ik(o,"imageBlock","src")).add(ik(o,"imageBlock","alt")).add(ok(o,"imageBlock")),n.for("upcast").elementToElement({view:Gf(t,"imageBlock"),model:(t,{writer:e})=>e.createElement("imageBlock",t.hasAttribute("src")?{src:t.getAttribute("src")}:null)}).add(function(t){return t=>{t.on("element:figure",e)};function e(e,n,o){if(!o.consumable.test(n.viewItem,{name:!0,classes:"image"}))return;const i=t.findViewImgElement(n.viewItem);if(!i||!o.consumable.test(i,{name:!0}))return;o.consumable.consume(n.viewItem,{name:!0,classes:"image"});const r=Ma(o.convertItem(i,n.modelCursor).modelRange.getItems());r?(o.convertChildren(n.viewItem,r),o.updateConversionResult(r,n)):o.consumable.revert(n.viewItem,{name:!0,classes:"image"})}}(o))}_setupClipboardIntegration(){const t=this.editor,e=t.model,n=t.editing.view,o=t.plugins.get("ImageUtils");this.listenTo(t.plugins.get("ClipboardPipeline"),"inputTransformation",((i,r)=>{const s=Array.from(r.content.getChildren());let a;if(!s.every(o.isInlineImageView))return;a=r.targetRanges?t.editing.mapper.toModelRange(r.targetRanges[0]):e.document.selection.getFirstRange();const c=e.createSelection(a);if("imageBlock"===qf(e.schema,c)){const t=new Yd(n.document),e=s.map((e=>t.createElement("figure",{class:"image"},e)));r.content=t.createDocumentFragment(e)}}))}}var dk=n(3508),hk={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(dk.Z,hk);dk.Z.locals;class uk extends F{static get requires(){return[lk,xm,nk]}static get pluginName(){return"ImageBlock"}}class gk extends F{static get requires(){return[ak,Wf,Pg]}static get pluginName(){return"ImageInlineEditing"}init(){const t=this.editor,e=t.model.schema;e.register("imageInline",{inheritAllFrom:"$inlineObject",allowAttributes:["alt","src","srcset"]}),e.addChildCheck(((t,e)=>{if(t.endsWith("caption")&&"imageInline"===e.name)return!1})),this._setupConversion(),t.plugins.has("ImageBlockEditing")&&(t.commands.add("imageTypeInline",new ck(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const t=this.editor,e=t.t,n=t.conversion,o=t.plugins.get("ImageUtils");n.for("dataDowncast").elementToElement({model:"imageInline",view:(t,{writer:e})=>e.createEmptyElement("img")}),n.for("editingDowncast").elementToStructure({model:"imageInline",view:(t,{writer:n})=>o.toImageWidget(function(t){return t.createContainerElement("span",{class:"image-inline"},t.createEmptyElement("img"))}(n),n,e("image widget"))}),n.for("downcast").add(ik(o,"imageInline","src")).add(ik(o,"imageInline","alt")).add(ok(o,"imageInline")),n.for("upcast").elementToElement({view:Gf(t,"imageInline"),model:(t,{writer:e})=>e.createElement("imageInline",t.hasAttribute("src")?{src:t.getAttribute("src")}:null)})}_setupClipboardIntegration(){const t=this.editor,e=t.model,n=t.editing.view,o=t.plugins.get("ImageUtils");this.listenTo(t.plugins.get("ClipboardPipeline"),"inputTransformation",((i,r)=>{const s=Array.from(r.content.getChildren());let a;if(!s.every(o.isBlockImageView))return;a=r.targetRanges?t.editing.mapper.toModelRange(r.targetRanges[0]):e.document.selection.getFirstRange();const c=e.createSelection(a);if("imageInline"===qf(e.schema,c)){const t=new Yd(n.document),e=s.map((e=>1===e.childCount?(Array.from(e.getAttributes()).forEach((n=>t.setAttribute(...n,o.findViewImgElement(e)))),e.getChild(0)):e));r.content=t.createDocumentFragment(e)}}))}}class mk extends F{static get requires(){return[gk,xm,nk]}static get pluginName(){return"ImageInline"}}class pk extends U{refresh(){const t=this.editor,e=t.plugins.get("ImageCaptionUtils");if(!t.plugins.has(lk))return this.isEnabled=!1,void(this.value=!1);const n=t.model.document.selection,o=n.getSelectedElement();if(!o){const t=e.getCaptionFromModelSelection(n);return this.isEnabled=!!t,void(this.value=!!t)}this.isEnabled=this.editor.plugins.get("ImageUtils").isImage(o),this.isEnabled?this.value=!!e.getCaptionFromImageModelElement(o):this.value=!1}execute(t={}){const{focusCaptionOnShow:e}=t;this.editor.model.change((t=>{this.value?this._hideImageCaption(t):this._showImageCaption(t,e)}))}_showImageCaption(t,e){const n=this.editor.model.document.selection,o=this.editor.plugins.get("ImageCaptionEditing");let i=n.getSelectedElement();const r=o._getSavedCaption(i);this.editor.plugins.get("ImageUtils").isInlineImage(i)&&(this.editor.execute("imageTypeBlock"),i=n.getSelectedElement());const s=r||t.createElement("caption");t.append(s,i),e&&t.setSelection(s,"in")}_hideImageCaption(t){const e=this.editor,n=e.model.document.selection,o=e.plugins.get("ImageCaptionEditing"),i=e.plugins.get("ImageCaptionUtils");let r,s=n.getSelectedElement();s?r=i.getCaptionFromImageModelElement(s):(r=i.getCaptionFromModelSelection(n),s=r.parent),o._saveCaption(s,r),t.setSelection(s,"on"),t.remove(r)}}class fk extends F{static get pluginName(){return"ImageCaptionUtils"}static get requires(){return[Wf]}getCaptionFromImageModelElement(t){for(const e of t.getChildren())if(e&&e.is("element","caption"))return e;return null}getCaptionFromModelSelection(t){const e=this.editor.plugins.get("ImageUtils"),n=t.getFirstPosition().findAncestor("caption");return n&&e.isBlockImage(n.parent)?n:null}matchImageCaptionViewElement(t){const e=this.editor.plugins.get("ImageUtils");return"figcaption"==t.name&&e.isBlockImageView(t.parent)?{name:!0}:null}}class kk extends F{static get requires(){return[Wf,fk]}static get pluginName(){return"ImageCaptionEditing"}constructor(t){super(t),this._savedCaptionsMap=new WeakMap}init(){const t=this.editor,e=t.model.schema;e.isRegistered("caption")?e.extend("caption",{allowIn:"imageBlock"}):e.register("caption",{allowIn:"imageBlock",allowContentOf:"$block",isLimit:!0}),t.commands.add("toggleImageCaption",new pk(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration(),this._registerCaptionReconversion()}_setupConversion(){const t=this.editor,e=t.editing.view,n=t.plugins.get("ImageUtils"),o=t.plugins.get("ImageCaptionUtils"),i=t.t;t.conversion.for("upcast").elementToElement({view:t=>o.matchImageCaptionViewElement(t),model:"caption"}),t.conversion.for("dataDowncast").elementToElement({model:"caption",view:(t,{writer:e})=>n.isBlockImage(t.parent)?e.createContainerElement("figcaption"):null}),t.conversion.for("editingDowncast").elementToElement({model:"caption",view:(t,{writer:o})=>{if(!n.isBlockImage(t.parent))return null;const r=o.createEditableElement("figcaption");o.setCustomProperty("imageCaption",!0,r),Td({view:e,element:r,text:i("Enter image caption"),keepOnFocus:!0});const s=t.parent.getAttribute("alt");return cm(r,o,{label:s?i("Caption for image: %0",[s]):i("Caption for the image")})}})}_setupImageTypeCommandsIntegration(){const t=this.editor,e=t.plugins.get("ImageUtils"),n=t.plugins.get("ImageCaptionUtils"),o=t.commands.get("imageTypeInline"),i=t.commands.get("imageTypeBlock"),r=t=>{if(!t.return)return;const{oldElement:o,newElement:i}=t.return;if(!o)return;if(e.isBlockImage(o)){const t=n.getCaptionFromImageModelElement(o);if(t)return void this._saveCaption(i,t)}const r=this._getSavedCaption(o);r&&this._saveCaption(i,r)};o&&this.listenTo(o,"execute",r,{priority:"low"}),i&&this.listenTo(i,"execute",r,{priority:"low"})}_getSavedCaption(t){const e=this._savedCaptionsMap.get(t);return e?Qa.fromJSON(e):null}_saveCaption(t,e){this._savedCaptionsMap.set(t,e.toJSON())}_registerCaptionReconversion(){const t=this.editor,e=t.model,n=t.plugins.get("ImageUtils"),o=t.plugins.get("ImageCaptionUtils");e.document.on("change:data",(()=>{const i=e.document.differ.getChanges();for(const e of i){if("alt"!==e.attributeKey)continue;const i=e.range.start.nodeAfter;if(n.isBlockImage(i)){const e=o.getCaptionFromImageModelElement(i);if(!e)return;t.editing.reconvertItem(e)}}}))}}class bk extends F{static get requires(){return[fk]}static get pluginName(){return"ImageCaptionUI"}init(){const t=this.editor,e=t.editing.view,n=t.plugins.get("ImageCaptionUtils"),o=t.t;t.ui.componentFactory.add("toggleImageCaption",(i=>{const r=t.commands.get("toggleImageCaption"),s=new cu(i);return s.set({icon:Jh.caption,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.bind("label").to(r,"value",(t=>o(t?"Toggle caption off":"Toggle caption on"))),this.listenTo(s,"execute",(()=>{t.execute("toggleImageCaption",{focusCaptionOnShow:!0});const o=n.getCaptionFromModelSelection(t.model.document.selection);if(o){const n=t.editing.mapper.toViewElement(o);e.scrollToTheSelection(),e.change((t=>{t.addClass("image__caption_highlighted",n)}))}t.editing.view.focus()})),s}))}}var wk=n(2640),Ak={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(wk.Z,Ak);wk.Z.locals;class _k extends U{constructor(t,e){super(t),this._defaultStyles={imageBlock:!1,imageInline:!1},this._styles=new Map(e.map((t=>{if(t.isDefault)for(const e of t.modelElements)this._defaultStyles[e]=t.name;return[t.name,t]})))}refresh(){const t=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!t,this.isEnabled?t.hasAttribute("imageStyle")?this.value=t.getAttribute("imageStyle"):this.value=this._defaultStyles[t.name]:this.value=!1}execute(t={}){const e=this.editor,n=e.model,o=e.plugins.get("ImageUtils");n.change((e=>{const i=t.value;let r=o.getClosestSelectedImageElement(n.document.selection);i&&this.shouldConvertImageType(i,r)&&(this.editor.execute(o.isBlockImage(r)?"imageTypeInline":"imageTypeBlock"),r=o.getClosestSelectedImageElement(n.document.selection)),!i||this._styles.get(i).isDefault?e.removeAttribute("imageStyle",r):e.setAttribute("imageStyle",i,r)}))}shouldConvertImageType(t,e){return!this._styles.get(t).modelElements.includes(e.name)}}const{objectFullWidth:Ck,objectInline:vk,objectLeft:yk,objectRight:xk,objectCenter:Ek,objectBlockLeft:Dk,objectBlockRight:Ik}=Jh,Tk={get inline(){return{name:"inline",title:"In line",icon:vk,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:yk,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:Dk,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:Ek,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:xk,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:Ik,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:Ek,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:xk,modelElements:["imageBlock"],className:"image-style-side"}}},Mk={full:Ck,left:Dk,right:Ik,center:Ek,inlineLeft:yk,inlineRight:xk,inline:vk},Sk=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function Nk(t){l("image-style-configuration-definition-invalid",t)}const Bk={normalizeStyles:function(t){return(t.configuredStyles.options||[]).map((t=>function(t){t="string"==typeof t?Tk[t]?{...Tk[t]}:{name:t}:function(t,e){const n={...e};for(const o in t)Object.prototype.hasOwnProperty.call(e,o)||(n[o]=t[o]);return n}(Tk[t.name],t);"string"==typeof t.icon&&(t.icon=Mk[t.icon]||t.icon);return t}(t))).filter((e=>function(t,{isBlockPluginLoaded:e,isInlinePluginLoaded:n}){const{modelElements:o,name:i}=t;if(!(o&&o.length&&i))return Nk({style:t}),!1;{const i=[e?"imageBlock":null,n?"imageInline":null];if(!o.some((t=>i.includes(t))))return l("image-style-missing-dependency",{style:t,missingPlugins:o.map((t=>"imageBlock"===t?"ImageBlockEditing":"ImageInlineEditing"))}),!1}return!0}(e,t)))},getDefaultStylesConfiguration:function(t,e){return t&&e?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:t?{options:["block","side"]}:e?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(t){return t.has("ImageBlockEditing")&&t.has("ImageInlineEditing")?[...Sk]:[]},warnInvalidStyle:Nk,DEFAULT_OPTIONS:Tk,DEFAULT_ICONS:Mk,DEFAULT_DROPDOWN_DEFINITIONS:Sk};function Pk(t,e){for(const n of e)if(n.name===t)return n}class zk extends F{static get pluginName(){return"ImageStyleEditing"}static get requires(){return[Wf]}init(){const{normalizeStyles:t,getDefaultStylesConfiguration:e}=Bk,n=this.editor,o=n.plugins.has("ImageBlockEditing"),i=n.plugins.has("ImageInlineEditing");n.config.define("image.styles",e(o,i)),this.normalizedStyles=t({configuredStyles:n.config.get("image.styles"),isBlockPluginLoaded:o,isInlinePluginLoaded:i}),this._setupConversion(o,i),this._setupPostFixer(),n.commands.add("imageStyle",new _k(n,this.normalizedStyles))}_setupConversion(t,e){const n=this.editor,o=n.model.schema,i=(r=this.normalizedStyles,(t,e,n)=>{if(!n.consumable.consume(e.item,t.name))return;const o=Pk(e.attributeNewValue,r),i=Pk(e.attributeOldValue,r),s=n.mapper.toViewElement(e.item),a=n.writer;i&&a.removeClass(i.className,s),o&&a.addClass(o.className,s)});var r;const s=function(t){const e={imageInline:t.filter((t=>!t.isDefault&&t.modelElements.includes("imageInline"))),imageBlock:t.filter((t=>!t.isDefault&&t.modelElements.includes("imageBlock")))};return(t,n,o)=>{if(!n.modelRange)return;const i=n.viewItem,r=Ma(n.modelRange.getItems());if(r&&o.schema.checkAttribute(r,"imageStyle"))for(const t of e[r.name])o.consumable.consume(i,{classes:t.className})&&o.writer.setAttribute("imageStyle",t.name,r)}}(this.normalizedStyles);n.editing.downcastDispatcher.on("attribute:imageStyle",i),n.data.downcastDispatcher.on("attribute:imageStyle",i),t&&(o.extend("imageBlock",{allowAttributes:"imageStyle"}),n.data.upcastDispatcher.on("element:figure",s,{priority:"low"})),e&&(o.extend("imageInline",{allowAttributes:"imageStyle"}),n.data.upcastDispatcher.on("element:img",s,{priority:"low"}))}_setupPostFixer(){const t=this.editor,e=t.model.document,n=t.plugins.get(Wf),o=new Map(this.normalizedStyles.map((t=>[t.name,t])));e.registerPostFixer((t=>{let i=!1;for(const r of e.differ.getChanges())if("insert"==r.type||"attribute"==r.type&&"imageStyle"==r.attributeKey){let e="insert"==r.type?r.position.nodeAfter:r.range.start.nodeAfter;if(e&&e.is("element","paragraph")&&e.childCount>0&&(e=e.getChild(0)),!n.isImage(e))continue;const s=e.getAttribute("imageStyle");if(!s)continue;const a=o.get(s);a&&a.modelElements.includes(e.name)||(t.removeAttribute("imageStyle",e),i=!0)}return i}))}}var Lk=n(5083),Ok={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Lk.Z,Ok);Lk.Z.locals;class Rk extends F{static get requires(){return[zk]}static get pluginName(){return"ImageStyleUI"}get localizedDefaultStylesTitles(){const t=this.editor.t;return{"Wrap text":t("Wrap text"),"Break text":t("Break text"),"In line":t("In line"),"Full size image":t("Full size image"),"Side image":t("Side image"),"Left aligned image":t("Left aligned image"),"Centered image":t("Centered image"),"Right aligned image":t("Right aligned image")}}init(){const t=this.editor.plugins,e=this.editor.config.get("image.toolbar")||[],n=jk(t.get("ImageStyleEditing").normalizedStyles,this.localizedDefaultStylesTitles);for(const t of n)this._createButton(t);const o=jk([...e.filter(D),...Bk.getDefaultDropdownDefinitions(t)],this.localizedDefaultStylesTitles);for(const t of o)this._createDropdown(t,n)}_createDropdown(t,e){const n=this.editor.ui.componentFactory;n.add(t.name,(o=>{let i;const{defaultItem:r,items:s,title:a}=t,c=s.filter((t=>e.find((({name:e})=>Fk(e)===t)))).map((t=>{const e=n.create(t);return t===r&&(i=e),e}));s.length!==c.length&&Bk.warnInvalidStyle({dropdown:t});const l=qu(o,bu),d=l.buttonView,h=d.arrowView;return Wu(l,c,{enableActiveItemFocusOnDropdownOpen:!0}),d.set({label:Vk(a,i.label),class:null,tooltip:!0}),h.unbind("label"),h.set({label:a}),d.bind("icon").toMany(c,"isOn",((...t)=>{const e=t.findIndex(mi);return e<0?i.icon:c[e].icon})),d.bind("label").toMany(c,"isOn",((...t)=>{const e=t.findIndex(mi);return Vk(a,e<0?i.label:c[e].label)})),d.bind("isOn").toMany(c,"isOn",((...t)=>t.some(mi))),d.bind("class").toMany(c,"isOn",((...t)=>t.some(mi)?"ck-splitbutton_flatten":null)),d.on("execute",(()=>{c.some((({isOn:t})=>t))?l.isOpen=!l.isOpen:i.fire("execute")})),l.bind("isEnabled").toMany(c,"isEnabled",((...t)=>t.some(mi))),this.listenTo(l,"execute",(()=>{this.editor.editing.view.focus()})),l}))}_createButton(t){const e=t.name;this.editor.ui.componentFactory.add(Fk(e),(n=>{const o=this.editor.commands.get("imageStyle"),i=new cu(n);return i.set({label:t.title,icon:t.icon,tooltip:!0,isToggleable:!0}),i.bind("isEnabled").to(o,"isEnabled"),i.bind("isOn").to(o,"value",(t=>t===e)),i.on("execute",this._executeCommand.bind(this,e)),i}))}_executeCommand(t){this.editor.execute("imageStyle",{value:t}),this.editor.editing.view.focus()}}function jk(t,e){for(const n of t)e[n.title]&&(n.title=e[n.title]);return t}function Fk(t){return`imageStyle:${t}`}function Vk(t,e){return(t?t+": ":"")+e}function Uk(t){const e=t.map((t=>t.replace("+","\\+")));return new RegExp(`^image\\/(${e.join("|")})$`)}function Hk(t){return new Promise(((e,n)=>{const o=t.getAttribute("src");fetch(o).then((t=>t.blob())).then((t=>{const n=Gk(t,o),i=n.replace("image/",""),r=new File([t],`image.${i}`,{type:n});e(r)})).catch((t=>t&&"TypeError"===t.name?function(t){return function(t){return new Promise(((e,n)=>{const o=Ao.document.createElement("img");o.addEventListener("load",(()=>{const t=Ao.document.createElement("canvas");t.width=o.width,t.height=o.height;t.getContext("2d").drawImage(o,0,0),t.toBlob((t=>t?e(t):n()))})),o.addEventListener("error",(()=>n())),o.src=t}))}(t).then((e=>{const n=Gk(e,t),o=n.replace("image/","");return new File([e],`image.${o}`,{type:n})}))}(o).then(e).catch(n):n(t)))}))}function Gk(t,e){return t.type?t.type:e.match(/data:(image\/\w+);base64/)?e.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}class qk extends F{static get pluginName(){return"ImageUploadUI"}init(){const t=this.editor,e=t.t,n=n=>{const o=new Sp(n),i=t.commands.get("uploadImage"),r=t.config.get("image.upload.types"),s=Uk(r);return o.set({acceptedType:r.map((t=>`image/${t}`)).join(","),allowMultipleFiles:!0}),o.buttonView.set({label:e("Insert image"),icon:Jh.image,tooltip:!0}),o.buttonView.bind("isEnabled").to(i),o.on("done",((e,n)=>{const o=Array.from(n).filter((t=>s.test(t.type)));o.length&&(t.execute("uploadImage",{file:o}),t.editing.view.focus())})),o};t.ui.componentFactory.add("uploadImage",n),t.ui.componentFactory.add("imageUpload",n)}}var Wk=n(3689),Yk={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Wk.Z,Yk);Wk.Z.locals;var $k=n(4036),Kk={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()($k.Z,Kk);$k.Z.locals;var Qk=n(3773),Zk={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Qk.Z,Zk);Qk.Z.locals;class Jk extends F{static get pluginName(){return"ImageUploadProgress"}constructor(t){super(t),this.placeholder="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}init(){const t=this.editor;t.plugins.has("ImageBlockEditing")&&t.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",((...t)=>this.uploadStatusChange(...t))),t.plugins.has("ImageInlineEditing")&&t.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",((...t)=>this.uploadStatusChange(...t)))}uploadStatusChange(t,e,n){const o=this.editor,i=e.item,r=i.getAttribute("uploadId");if(!n.consumable.consume(e.item,t.name))return;const s=o.plugins.get("ImageUtils"),a=o.plugins.get(Tp),c=r?e.attributeNewValue:null,l=this.placeholder,d=o.editing.mapper.toViewElement(i),h=n.writer;if("reading"==c)return Xk(d,h),void tb(s,l,d,h);if("uploading"==c){const t=a.loaders.get(r);return Xk(d,h),void(t?(eb(d,h),function(t,e,n,o){const i=function(t){const e=t.createUIElement("div",{class:"ck-progress-bar"});return t.setCustomProperty("progressBar",!0,e),e}(e);e.insert(e.createPositionAt(t,"end"),i),n.on("change:uploadedPercent",((t,e,n)=>{o.change((t=>{t.setStyle("width",n+"%",i)}))}))}(d,h,t,o.editing.view),function(t,e,n,o){if(o.data){const i=t.findViewImgElement(e);n.setAttribute("src",o.data,i)}}(s,d,h,t)):tb(s,l,d,h))}"complete"==c&&a.loaders.get(r)&&function(t,e,n){const o=e.createUIElement("div",{class:"ck-image-upload-complete-icon"});e.insert(e.createPositionAt(t,"end"),o),setTimeout((()=>{n.change((t=>t.remove(t.createRangeOn(o))))}),3e3)}(d,h,o.editing.view),function(t,e){ob(t,e,"progressBar")}(d,h),eb(d,h),function(t,e){e.removeClass("ck-appear",t)}(d,h)}}function Xk(t,e){t.hasClass("ck-appear")||e.addClass("ck-appear",t)}function tb(t,e,n,o){n.hasClass("ck-image-upload-placeholder")||o.addClass("ck-image-upload-placeholder",n);const i=t.findViewImgElement(n);i.getAttribute("src")!==e&&o.setAttribute("src",e,i),nb(n,"placeholder")||o.insert(o.createPositionAfter(i),function(t){const e=t.createUIElement("div",{class:"ck-upload-placeholder-loader"});return t.setCustomProperty("placeholder",!0,e),e}(o))}function eb(t,e){t.hasClass("ck-image-upload-placeholder")&&e.removeClass("ck-image-upload-placeholder",t),ob(t,e,"placeholder")}function nb(t,e){for(const n of t.getChildren())if(n.getCustomProperty(e))return n}function ob(t,e,n){const o=nb(t,n);o&&e.remove(e.createRangeOn(o))}class ib extends U{refresh(){const t=this.editor,e=t.plugins.get("ImageUtils"),n=t.model.document.selection.getSelectedElement();this.isEnabled=e.isImageAllowed()||e.isImage(n)}execute(t){const e=bo(t.file),n=this.editor.model.document.selection,o=this.editor.plugins.get("ImageUtils"),i=Object.fromEntries(n.getAttributes());e.forEach(((t,e)=>{const r=n.getSelectedElement();if(e&&r&&o.isImage(r)){const e=this.editor.model.createPositionAfter(r);this._uploadImage(t,i,e)}else this._uploadImage(t,i)}))}_uploadImage(t,e,n){const o=this.editor,i=o.plugins.get(Tp).createLoader(t),r=o.plugins.get("ImageUtils");i&&r.insertImage({...e,uploadId:i.id},n)}}class rb extends F{static get requires(){return[Tp,gg,Pg,Wf]}static get pluginName(){return"ImageUploadEditing"}constructor(t){super(t),t.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),this._uploadImageElements=new Map}init(){const t=this.editor,e=t.model.document,n=t.conversion,o=t.plugins.get(Tp),i=t.plugins.get("ImageUtils"),r=Uk(t.config.get("image.upload.types")),s=new ib(t);t.commands.add("uploadImage",s),t.commands.add("imageUpload",s),n.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}),this.listenTo(t.editing.view.document,"clipboardInput",((e,n)=>{if(o=n.dataTransfer,Array.from(o.types).includes("text/html")&&""!==o.getData("text/html"))return;var o;const i=Array.from(n.dataTransfer.files).filter((t=>!!t&&r.test(t.type)));i.length&&(e.stop(),t.model.change((e=>{n.targetRanges&&e.setSelection(n.targetRanges.map((e=>t.editing.mapper.toModelRange(e)))),t.model.enqueueChange((()=>{t.execute("uploadImage",{file:i})}))})))})),this.listenTo(t.plugins.get("ClipboardPipeline"),"inputTransformation",((e,n)=>{const r=Array.from(t.editing.view.createRangeIn(n.content)).filter((t=>function(t,e){return!(!t.isInlineImageView(e)||!e.getAttribute("src"))&&(e.getAttribute("src").match(/^data:image\/\w+;base64,/g)||e.getAttribute("src").match(/^blob:/g))}(i,t.item)&&!t.item.getAttribute("uploadProcessed"))).map((t=>({promise:Hk(t.item),imageElement:t.item})));if(!r.length)return;const s=new Yd(t.editing.view.document);for(const t of r){s.setAttribute("uploadProcessed",!0,t.imageElement);const e=o.createLoader(t.promise);e&&(s.setAttribute("src","",t.imageElement),s.setAttribute("uploadId",e.id,t.imageElement))}})),t.editing.view.document.on("dragover",((t,e)=>{e.preventDefault()})),e.on("change",(()=>{const n=e.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),i=new Set;for(const e of n)if("insert"==e.type&&"$text"!=e.name){const n=e.position.nodeAfter,r="$graveyard"==e.position.root.rootName;for(const e of sb(t,n)){const t=e.getAttribute("uploadId");if(!t)continue;const n=o.loaders.get(t);n&&(r?i.has(t)||n.abort():(i.add(t),this._uploadImageElements.set(t,e),"idle"==n.status&&this._readAndUpload(n)))}}})),this.on("uploadComplete",((t,{imageElement:e,data:n})=>{const o=n.urls?n.urls:n;this.editor.model.change((t=>{t.setAttribute("src",o.default,e),this._parseAndSetSrcsetAttributeOnImage(o,e,t)}))}),{priority:"low"})}afterInit(){const t=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&t.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this.editor.plugins.has("ImageInlineEditing")&&t.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]})}_readAndUpload(t){const e=this.editor,n=e.model,o=e.locale.t,i=e.plugins.get(Tp),r=e.plugins.get(gg),s=e.plugins.get("ImageUtils"),a=this._uploadImageElements;return n.enqueueChange({isUndoable:!1},(e=>{e.setAttribute("uploadStatus","reading",a.get(t.id))})),t.read().then((()=>{const o=t.upload(),i=a.get(t.id);if(cr.isSafari){const t=e.editing.mapper.toViewElement(i),n=s.findViewImgElement(t);e.editing.view.once("render",(()=>{if(!n.parent)return;const t=e.editing.view.domConverter.mapViewToDom(n.parent);if(!t)return;const o=t.style.display;t.style.display="none",t._ckHack=t.offsetHeight,t.style.display=o}))}return n.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("uploadStatus","uploading",i)})),o})).then((e=>{n.enqueueChange({isUndoable:!1},(n=>{const o=a.get(t.id);n.setAttribute("uploadStatus","complete",o),this.fire("uploadComplete",{data:e,imageElement:o})})),c()})).catch((e=>{if("error"!==t.status&&"aborted"!==t.status)throw e;"error"==t.status&&e&&r.showWarning(e,{title:o("Upload failed"),namespace:"upload"}),n.enqueueChange({isUndoable:!1},(e=>{e.remove(a.get(t.id))})),c()}));function c(){n.enqueueChange({isUndoable:!1},(e=>{const n=a.get(t.id);e.removeAttribute("uploadId",n),e.removeAttribute("uploadStatus",n),a.delete(t.id)})),i.destroyLoader(t)}}_parseAndSetSrcsetAttributeOnImage(t,e,n){let o=0;const i=Object.keys(t).filter((t=>{const e=parseInt(t,10);if(!isNaN(e))return o=Math.max(o,e),!0})).map((e=>`${t[e]} ${e}w`)).join(", ");""!=i&&n.setAttribute("srcset",{data:i,width:o},e)}}function sb(t,e){const n=t.plugins.get("ImageUtils");return Array.from(t.model.createRangeOn(e)).filter((t=>n.isImage(t.item))).map((t=>t.item))}class ab extends F{static get pluginName(){return"IndentEditing"}init(){const t=this.editor;t.commands.add("indent",new G(t)),t.commands.add("outdent",new G(t))}}const cb='',lb='';class db extends F{static get pluginName(){return"IndentUI"}init(){const t=this.editor,e=t.locale,n=t.t,o="ltr"==e.uiLanguageDirection?cb:lb,i="ltr"==e.uiLanguageDirection?lb:cb;this._defineButton("indent",n("Increase indent"),o),this._defineButton("outdent",n("Decrease indent"),i)}_defineButton(t,e,n){const o=this.editor;o.ui.componentFactory.add(t,(i=>{const r=o.commands.get(t),s=new cu(i);return s.set({label:e,icon:n,tooltip:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),this.listenTo(s,"execute",(()=>{o.execute(t),o.editing.view.focus()})),s}))}}class hb{constructor(){this._definitions=new Set}get length(){return this._definitions.size}add(t){Array.isArray(t)?t.forEach((t=>this._definitions.add(t))):this._definitions.add(t)}getDispatcher(){return t=>{t.on("attribute:linkHref",((t,e,n)=>{if(!n.consumable.test(e.item,"attribute:linkHref"))return;if(!e.item.is("selection")&&!n.schema.isInline(e.item))return;const o=n.writer,i=o.document.selection;for(const t of this._definitions){const r=o.createAttributeElement("a",t.attributes,{priority:5});t.classes&&o.addClass(t.classes,r);for(const e in t.styles)o.setStyle(e,t.styles[e],r);o.setCustomProperty("link",!0,r),t.callback(e.attributeNewValue)?e.item.is("selection")?o.wrap(i.getFirstRange(),r):o.wrap(n.mapper.toViewRange(e.range),r):o.unwrap(n.mapper.toViewRange(e.range),r)}}),{priority:"high"})}}getDispatcherForLinkedImage(){return t=>{t.on("attribute:linkHref:imageBlock",((t,e,{writer:n,mapper:o})=>{const i=o.toViewElement(e.item),r=Array.from(i.getChildren()).find((t=>"a"===t.name));for(const t of this._definitions){const o=Bo(t.attributes);if(t.callback(e.attributeNewValue)){for(const[t,e]of o)"class"===t?n.addClass(e,r):n.setAttribute(t,e,r);t.classes&&n.addClass(t.classes,r);for(const e in t.styles)n.setStyle(e,t.styles[e],r)}else{for(const[t,e]of o)"class"===t?n.removeClass(e,r):n.removeAttribute(t,r);t.classes&&n.removeClass(t.classes,r);for(const e in t.styles)n.removeStyle(e,r)}}}))}}}const ub=function(t,e,n){var o=t.length;return n=void 0===n?o:n,!e&&n>=o?t:ni(t,e,n)};var gb=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");const mb=function(t){return gb.test(t)};const pb=function(t){return t.split("")};var fb="[\\ud800-\\udfff]",kb="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",bb="\\ud83c[\\udffb-\\udfff]",wb="[^\\ud800-\\udfff]",Ab="(?:\\ud83c[\\udde6-\\uddff]){2}",_b="[\\ud800-\\udbff][\\udc00-\\udfff]",Cb="(?:"+kb+"|"+bb+")"+"?",vb="[\\ufe0e\\ufe0f]?",yb=vb+Cb+("(?:\\u200d(?:"+[wb,Ab,_b].join("|")+")"+vb+Cb+")*"),xb="(?:"+[wb+kb+"?",kb,Ab,_b,fb].join("|")+")",Eb=RegExp(bb+"(?="+bb+")|"+xb+yb,"g");const Db=function(t){return t.match(Eb)||[]};const Ib=function(t){return mb(t)?Db(t):pb(t)};const Tb=function(t){return function(e){e=Zo(e);var n=mb(e)?Ib(e):void 0,o=n?n[0]:e.charAt(0),i=n?ub(n,1).join(""):e.slice(1);return o[t]()+i}}("toUpperCase"),Mb=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,Sb=/^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i,Nb=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,Bb=/^((\w+:(\/{2,})?)|(\W))/i,Pb="Ctrl+K";function zb(t,{writer:e}){const n=e.createAttributeElement("a",{href:t},{priority:5});return e.setCustomProperty("link",!0,n),n}function Lb(t){return function(t){return t.replace(Mb,"").match(Sb)}(t=String(t))?t:"#"}function Ob(t,e){return!!t&&e.checkAttribute(t.name,"linkHref")}function Rb(t,e){const n=(o=t,Nb.test(o)?"mailto:":e);var o;const i=!!n&&!jb(t);return t&&i?n+t:t}function jb(t){return Bb.test(t)}function Fb(t){window.open(t,"_blank","noopener")}class Vb extends U{constructor(t){super(t),this.manualDecorators=new fo,this.automaticDecorators=new hb}restoreManualDecoratorStates(){for(const t of this.manualDecorators)t.value=this._getDecoratorStateFromModel(t.id)}refresh(){const t=this.editor.model,e=t.document.selection,n=e.getSelectedElement()||Ma(e.getSelectedBlocks());Ob(n,t.schema)?(this.value=n.getAttribute("linkHref"),this.isEnabled=t.schema.checkAttribute(n,"linkHref")):(this.value=e.getAttribute("linkHref"),this.isEnabled=t.schema.checkAttributeInSelection(e,"linkHref"));for(const t of this.manualDecorators)t.value=this._getDecoratorStateFromModel(t.id)}execute(t,e={}){const n=this.editor.model,o=n.document.selection,i=[],r=[];for(const t in e)e[t]?i.push(t):r.push(t);n.change((e=>{if(o.isCollapsed){const s=o.getFirstPosition();if(o.hasAttribute("linkHref")){const a=fp(s,"linkHref",o.getAttribute("linkHref"),n);e.setAttribute("linkHref",t,a),i.forEach((t=>{e.setAttribute(t,!0,a)})),r.forEach((t=>{e.removeAttribute(t,a)})),e.setSelection(e.createPositionAfter(a.end.nodeBefore))}else if(""!==t){const r=Bo(o.getAttributes());r.set("linkHref",t),i.forEach((t=>{r.set(t,!0)}));const{end:a}=n.insertContent(e.createText(t,r),s);e.setSelection(a)}["linkHref",...i,...r].forEach((t=>{e.removeSelectionAttribute(t)}))}else{const s=n.schema.getValidRanges(o.getRanges(),"linkHref"),a=[];for(const t of o.getSelectedBlocks())n.schema.checkAttribute(t,"linkHref")&&a.push(e.createRangeOn(t));const c=a.slice();for(const t of s)this._isRangeToUpdate(t,a)&&c.push(t);for(const n of c)e.setAttribute("linkHref",t,n),i.forEach((t=>{e.setAttribute(t,!0,n)})),r.forEach((t=>{e.removeAttribute(t,n)}))}}))}_getDecoratorStateFromModel(t){const e=this.editor.model,n=e.document.selection,o=n.getSelectedElement();return Ob(o,e.schema)?o.getAttribute(t):n.getAttribute(t)}_isRangeToUpdate(t,e){for(const n of e)if(n.containsRange(t))return!1;return!0}}class Ub extends U{refresh(){const t=this.editor.model,e=t.document.selection,n=e.getSelectedElement();Ob(n,t.schema)?this.isEnabled=t.schema.checkAttribute(n,"linkHref"):this.isEnabled=t.schema.checkAttributeInSelection(e,"linkHref")}execute(){const t=this.editor,e=this.editor.model,n=e.document.selection,o=t.commands.get("link");e.change((t=>{const i=n.isCollapsed?[fp(n.getFirstPosition(),"linkHref",n.getAttribute("linkHref"),e)]:e.schema.getValidRanges(n.getRanges(),"linkHref");for(const e of i)if(t.removeAttribute("linkHref",e),o)for(const n of o.manualDecorators)t.removeAttribute(n.id,e)}))}}class Hb{constructor({id:t,label:e,attributes:n,classes:o,styles:i,defaultValue:r}){this.id=t,this.set("value"),this.defaultValue=r,this.label=e,this.attributes=n,this.classes=o,this.styles=i}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}ka(Hb,B);var Gb=n(9773),qb={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Gb.Z,qb);Gb.Z.locals;const Wb="automatic",Yb=/^(https?:)?\/\//;class $b extends F{static get pluginName(){return"LinkEditing"}static get requires(){return[ep,Qm,Pg]}constructor(t){super(t),t.config.define("link",{addTargetToExternalLinks:!1})}init(){const t=this.editor;t.model.schema.extend("$text",{allowAttributes:"linkHref"}),t.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:zb}),t.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(t,e)=>zb(Lb(t),e)}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:t=>t.getAttribute("href")}}),t.commands.add("link",new Vb(t)),t.commands.add("unlink",new Ub(t));const e=function(t,e){const n={"Open in a new tab":t("Open in a new tab"),Downloadable:t("Downloadable")};return e.forEach((t=>(t.label&&n[t.label]&&(t.label=n[t.label]),t))),e}(t.t,function(t){const e=[];if(t)for(const[n,o]of Object.entries(t)){const t=Object.assign({},o,{id:`link${Tb(n)}`});e.push(t)}return e}(t.config.get("link.decorators")));this._enableAutomaticDecorators(e.filter((t=>t.mode===Wb))),this._enableManualDecorators(e.filter((t=>"manual"===t.mode)));t.plugins.get(ep).registerAttribute("linkHref"),function(t,e,n,o){const i=t.editing.view,r=new Set;i.document.registerPostFixer((i=>{const s=t.model.document.selection;let a=!1;if(s.hasAttribute(e)){const c=fp(s.getFirstPosition(),e,s.getAttribute(e),t.model),l=t.editing.mapper.toViewRange(c);for(const t of l.getItems())t.is("element",n)&&!t.hasClass(o)&&(i.addClass(o,t),r.add(t),a=!0)}return a})),t.conversion.for("editingDowncast").add((t=>{function e(){i.change((t=>{for(const e of r.values())t.removeClass(o,e),r.delete(e)}))}t.on("insert",e,{priority:"highest"}),t.on("remove",e,{priority:"highest"}),t.on("attribute",e,{priority:"highest"}),t.on("selection",e,{priority:"highest"})}))}(t,"linkHref","a","ck-link_selected"),this._enableLinkOpen(),this._enableInsertContentSelectionAttributesFixer(),this._enableClickingAfterLink(),this._enableTypingOverLink(),this._handleDeleteContentAfterLink()}_enableAutomaticDecorators(t){const e=this.editor,n=e.commands.get("link").automaticDecorators;e.config.get("link.addTargetToExternalLinks")&&n.add({id:"linkIsExternal",mode:Wb,callback:t=>Yb.test(t),attributes:{target:"_blank",rel:"noopener noreferrer"}}),n.add(t),n.length&&e.conversion.for("downcast").add(n.getDispatcher())}_enableManualDecorators(t){if(!t.length)return;const e=this.editor,n=e.commands.get("link").manualDecorators;t.forEach((t=>{e.model.schema.extend("$text",{allowAttributes:t.id}),t=new Hb(t),n.add(t),e.conversion.for("downcast").attributeToElement({model:t.id,view:(e,{writer:n,schema:o},{item:i})=>{if((i.is("selection")||o.isInline(i))&&e){const e=n.createAttributeElement("a",t.attributes,{priority:5});t.classes&&n.addClass(t.classes,e);for(const o in t.styles)n.setStyle(o,t.styles[o],e);return n.setCustomProperty("link",!0,e),e}}}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",...t._createPattern()},model:{key:t.id}})}))}_enableLinkOpen(){const t=this.editor,e=t.editing.view.document;this.listenTo(e,"click",((t,e)=>{if(!(cr.isMac?e.domEvent.metaKey:e.domEvent.ctrlKey))return;let n=e.domTarget;if("a"!=n.tagName.toLowerCase()&&(n=n.closest("a")),!n)return;const o=n.getAttribute("href");o&&(t.stop(),e.preventDefault(),Fb(o))}),{context:"$capture"}),this.listenTo(e,"keydown",((e,n)=>{const o=t.commands.get("link").value;o&&n.keyCode===ur.enter&&n.altKey&&(e.stop(),Fb(o))}))}_enableInsertContentSelectionAttributesFixer(){const t=this.editor.model,e=t.document.selection;this.listenTo(t,"insertContent",(()=>{const n=e.anchor.nodeBefore,o=e.anchor.nodeAfter;e.hasAttribute("linkHref")&&n&&n.hasAttribute("linkHref")&&(o&&o.hasAttribute("linkHref")||t.change((e=>{Kb(e,Zb(t.schema))})))}),{priority:"low"})}_enableClickingAfterLink(){const t=this.editor,e=t.model;t.editing.view.addObserver(Wd);let n=!1;this.listenTo(t.editing.view.document,"mousedown",(()=>{n=!0})),this.listenTo(t.editing.view.document,"selectionChange",(()=>{if(!n)return;n=!1;const t=e.document.selection;if(!t.isCollapsed)return;if(!t.hasAttribute("linkHref"))return;const o=t.getFirstPosition(),i=fp(o,"linkHref",t.getAttribute("linkHref"),e);(o.isTouching(i.start)||o.isTouching(i.end))&&e.change((t=>{Kb(t,Zb(e.schema))}))}))}_enableTypingOverLink(){const t=this.editor,e=t.editing.view;let n,o;this.listenTo(e.document,"delete",(()=>{o=!0}),{priority:"high"}),this.listenTo(t.model,"deleteContent",(()=>{const e=t.model.document.selection;e.isCollapsed||(o?o=!1:Qb(t)&&function(t){const e=t.document.selection,n=e.getFirstPosition(),o=e.getLastPosition(),i=n.nodeAfter;if(!i)return!1;if(!i.is("$text"))return!1;if(!i.hasAttribute("linkHref"))return!1;const r=o.textNode||o.nodeBefore;if(i===r)return!0;return fp(n,"linkHref",i.getAttribute("linkHref"),t).containsRange(t.createRange(n,o),!0)}(t.model)&&(n=e.getAttributes()))}),{priority:"high"}),this.listenTo(t.model,"insertContent",((e,[i])=>{o=!1,Qb(t)&&n&&(t.model.change((t=>{for(const[e,o]of n)t.setAttribute(e,o,i)})),n=null)}),{priority:"high"})}_handleDeleteContentAfterLink(){const t=this.editor,e=t.model,n=e.document.selection,o=t.editing.view;let i=!1,r=!1;this.listenTo(o.document,"delete",((t,e)=>{r="backward"===e.direction}),{priority:"high"}),this.listenTo(e,"deleteContent",(()=>{i=!1;const t=n.getFirstPosition(),o=n.getAttribute("linkHref");if(!o)return;const r=fp(t,"linkHref",o,e);i=r.containsPosition(t)||r.end.isEqual(t)}),{priority:"high"}),this.listenTo(e,"deleteContent",(()=>{r&&(r=!1,i||t.model.enqueueChange((t=>{Kb(t,Zb(e.schema))})))}),{priority:"low"})}}function Kb(t,e){t.removeSelectionAttribute("linkHref");for(const n of e)t.removeSelectionAttribute(n)}function Qb(t){return t.model.change((t=>t.batch)).isTyping}function Zb(t){return t.getDefinition("$text").allowAttributes.filter((t=>t.startsWith("link")))}var Jb=n(7754),Xb={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Jb.Z,Xb);Jb.Z.locals;class tw extends Mh{constructor(t,e){super(t);const n=t.t;this.focusTracker=new Sa,this.keystrokes=new Na,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(n("Save"),Jh.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(n("Cancel"),Jh.cancel,"ck-button-cancel","cancel"),this._manualDecoratorSwitches=this._createManualDecoratorSwitches(e),this.children=this._createFormChildren(e.manualDecorators),this._focusables=new sh,this._focusCycler=new vu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});const o=["ck","ck-link-form","ck-responsive-form"];e.manualDecorators.length&&o.push("ck-link-form_layout-vertical","ck-vertical-form"),this.setTemplate({tag:"form",attributes:{class:o,tabindex:"-1"},children:this.children}),tu(this)}getDecoratorSwitchesState(){return Array.from(this._manualDecoratorSwitches).reduce(((t,e)=>(t[e.name]=e.isOn,t)),{})}render(){super.render(),eu({view:this});[this.urlInputView,...this._manualDecoratorSwitches,this.saveButtonView,this.cancelButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createUrlInput(){const t=this.locale.t,e=new hg(this.locale,ug);return e.label=t("Link URL"),e}_createButton(t,e,n,o){const i=new cu(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),o&&i.delegate("execute").to(this,o),i}_createManualDecoratorSwitches(t){const e=this.createCollection();for(const n of t.manualDecorators){const o=new hu(this.locale);o.set({name:n.id,label:n.label,withText:!0}),o.bind("isOn").toMany([n,t],"value",((t,e)=>void 0===e&&void 0===t?n.defaultValue:t)),o.on("execute",(()=>{n.set("value",!o.isOn)})),e.add(o)}return e}_createFormChildren(t){const e=this.createCollection();if(e.add(this.urlInputView),t.length){const t=new Mh;t.setTemplate({tag:"ul",children:this._manualDecoratorSwitches.map((t=>({tag:"li",children:[t],attributes:{class:["ck","ck-list__item"]}}))),attributes:{class:["ck","ck-reset","ck-list"]}}),e.add(t)}return e.add(this.saveButtonView),e.add(this.cancelButtonView),e}}var ew=n(2347),nw={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(ew.Z,nw);ew.Z.locals;class ow extends Mh{constructor(t){super(t);const e=t.t;this.focusTracker=new Sa,this.keystrokes=new Na,this.previewButtonView=this._createPreviewButton(),this.unlinkButtonView=this._createButton(e("Unlink"),'',"unlink"),this.editButtonView=this._createButton(e("Edit link"),Jh.pencil,"edit"),this.set("href"),this._focusables=new sh,this._focusCycler=new vu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-actions","ck-responsive-form"],tabindex:"-1"},children:[this.previewButtonView,this.editButtonView,this.unlinkButtonView]})}render(){super.render();[this.previewButtonView,this.editButtonView,this.unlinkButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createButton(t,e,n){const o=new cu(this.locale);return o.set({label:t,icon:e,tooltip:!0}),o.delegate("execute").to(this,n),o}_createPreviewButton(){const t=new cu(this.locale),e=this.bindTemplate,n=this.t;return t.set({withText:!0,tooltip:n("Open link in new tab")}),t.extendTemplate({attributes:{class:["ck","ck-link-actions__preview"],href:e.to("href",(t=>t&&Lb(t))),target:"_blank",rel:"noopener noreferrer"}}),t.bind("label").to(this,"href",(t=>t||n("This link has no URL"))),t.bind("isEnabled").to(this,"href",(t=>!!t)),t.template.tag="a",t.template.eventListeners={},t}}const iw="link-ui";class rw extends F{static get requires(){return[Ag]}static get pluginName(){return"LinkUI"}init(){const t=this.editor;t.editing.view.addObserver(qd),this.actionsView=this._createActionsView(),this.formView=this._createFormView(),this._balloon=t.plugins.get(Ag),this._createToolbarLinkButton(),this._enableUserBalloonInteractions(),t.conversion.for("editingDowncast").markerToHighlight({model:iw,view:{classes:["ck-fake-link-selection"]}}),t.conversion.for("editingDowncast").markerToElement({model:iw,view:{name:"span",classes:["ck-fake-link-selection","ck-fake-link-selection_collapsed"]}})}destroy(){super.destroy(),this.formView.destroy()}_createActionsView(){const t=this.editor,e=new ow(t.locale),n=t.commands.get("link"),o=t.commands.get("unlink");return e.bind("href").to(n,"value"),e.editButtonView.bind("isEnabled").to(n),e.unlinkButtonView.bind("isEnabled").to(o),this.listenTo(e,"edit",(()=>{this._addFormView()})),this.listenTo(e,"unlink",(()=>{t.execute("unlink"),this._hideUI()})),e.keystrokes.set("Esc",((t,e)=>{this._hideUI(),e()})),e.keystrokes.set(Pb,((t,e)=>{this._addFormView(),e()})),e}_createFormView(){const t=this.editor,e=t.commands.get("link"),n=t.config.get("link.defaultProtocol"),o=new tw(t.locale,e);return o.urlInputView.fieldView.bind("value").to(e,"value"),o.urlInputView.bind("isReadOnly").to(e,"isEnabled",(t=>!t)),o.saveButtonView.bind("isEnabled").to(e),this.listenTo(o,"submit",(()=>{const{value:e}=o.urlInputView.fieldView.element,i=Rb(e,n);t.execute("link",i,o.getDecoratorSwitchesState()),this._closeFormView()})),this.listenTo(o,"cancel",(()=>{this._closeFormView()})),o.keystrokes.set("Esc",((t,e)=>{this._closeFormView(),e()})),o}_createToolbarLinkButton(){const t=this.editor,e=t.commands.get("link"),n=t.t;t.keystrokes.set(Pb,((t,n)=>{n(),e.isEnabled&&this._showUI(!0)})),t.ui.componentFactory.add("link",(t=>{const o=new cu(t);return o.isEnabled=!0,o.label=n("Link"),o.icon='',o.keystroke=Pb,o.tooltip=!0,o.isToggleable=!0,o.bind("isEnabled").to(e,"isEnabled"),o.bind("isOn").to(e,"value",(t=>!!t)),this.listenTo(o,"execute",(()=>this._showUI(!0))),o}))}_enableUserBalloonInteractions(){const t=this.editor.editing.view.document;this.listenTo(t,"click",(()=>{this._getSelectedLinkElement()&&this._showUI()})),this.editor.keystrokes.set("Tab",((t,e)=>{this._areActionsVisible&&!this.actionsView.focusTracker.isFocused&&(this.actionsView.focus(),e())}),{priority:"high"}),this.editor.keystrokes.set("Esc",((t,e)=>{this._isUIVisible&&(this._hideUI(),e())})),Xh({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:[this._balloon.view.element],callback:()=>this._hideUI()})}_addActionsView(){this._areActionsInPanel||this._balloon.add({view:this.actionsView,position:this._getBalloonPositionData()})}_addFormView(){if(this._isFormInPanel)return;const t=this.editor.commands.get("link");this.formView.disableCssTransitions(),this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions(),this.formView.urlInputView.fieldView.element.value=t.value||""}_closeFormView(){const t=this.editor.commands.get("link");t.restoreManualDecoratorStates(),void 0!==t.value?this._removeFormView():this._hideUI()}_removeFormView(){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this._balloon.remove(this.formView),this.editor.editing.view.focus(),this._hideFakeVisualSelection())}_showUI(t=!1){this._getSelectedLinkElement()?(this._areActionsVisible?this._addFormView():this._addActionsView(),t&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addActionsView(),t&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}_hideUI(){if(!this._isUIInPanel)return;const t=this.editor;this.stopListening(t.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),t.editing.view.focus(),this._removeFormView(),this._balloon.remove(this.actionsView),this._hideFakeVisualSelection()}_startUpdatingUI(){const t=this.editor,e=t.editing.view.document;let n=this._getSelectedLinkElement(),o=r();const i=()=>{const t=this._getSelectedLinkElement(),e=r();n&&!t||!n&&e!==o?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),n=t,o=e};function r(){return e.selection.focus.getAncestors().reverse().find((t=>t.is("element")))}this.listenTo(t.ui,"update",i),this.listenTo(this._balloon,"change:visibleView",i)}get _isFormInPanel(){return this._balloon.hasView(this.formView)}get _areActionsInPanel(){return this._balloon.hasView(this.actionsView)}get _areActionsVisible(){return this._balloon.visibleView===this.actionsView}get _isUIInPanel(){return this._isFormInPanel||this._areActionsInPanel}get _isUIVisible(){return this._balloon.visibleView==this.formView||this._areActionsVisible}_getBalloonPositionData(){const t=this.editor.editing.view,e=this.editor.model,n=t.document;let o=null;if(e.markers.has(iw)){const e=Array.from(this.editor.editing.mapper.markerNameToElements(iw)),n=t.createRange(t.createPositionBefore(e[0]),t.createPositionAfter(e[e.length-1]));o=t.domConverter.viewRangeToDom(n)}else o=()=>{const e=this._getSelectedLinkElement();return e?t.domConverter.mapViewToDom(e):t.domConverter.viewRangeToDom(n.selection.getFirstRange())};return{target:o}}_getSelectedLinkElement(){const t=this.editor.editing.view,e=t.document.selection,n=e.getSelectedElement();if(e.isCollapsed||n&&nm(n))return sw(e.getFirstPosition());{const n=e.getFirstRange().getTrimmed(),o=sw(n.start),i=sw(n.end);return o&&o==i&&t.createRangeIn(o).getTrimmed().isEqual(n)?o:null}}_showFakeVisualSelection(){const t=this.editor.model;t.change((e=>{const n=t.document.selection.getFirstRange();if(t.markers.has(iw))e.updateMarker(iw,{range:n});else if(n.start.isAtEnd){const o=n.start.getLastMatchingPosition((({item:e})=>!t.schema.isContent(e)),{boundaries:n});e.addMarker(iw,{usingOperation:!1,affectsData:!1,range:e.createRange(o,n.end)})}else e.addMarker(iw,{usingOperation:!1,affectsData:!1,range:n})}))}_hideFakeVisualSelection(){const t=this.editor.model;t.markers.has(iw)&&t.change((t=>{t.removeMarker(iw)}))}}function sw(t){return t.getAncestors().find((t=>{return(e=t).is("attributeElement")&&!!e.getCustomProperty("link");var e}))}const aw=new RegExp("(^|\\s)(((?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(((?!www\\.)|(www\\.))(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63})))(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+(?:[a-z\\u00a1-\\uffff]{2,63})))$","i");class cw extends F{static get requires(){return[Kg]}static get pluginName(){return"AutoLink"}init(){const t=this.editor.model.document.selection;t.on("change:range",(()=>{this.isEnabled=!t.anchor.parent.is("element","codeBlock")})),this._enableTypingHandling()}afterInit(){this._enableEnterHandling(),this._enableShiftEnterHandling()}_enableTypingHandling(){const t=this.editor,e=new tp(t.model,(t=>{if(!function(t){return t.length>4&&" "===t[t.length-1]&&" "!==t[t.length-2]}(t))return;const e=lw(t.substr(0,t.length-1));return e?{url:e}:void 0}));e.on("matched:data",((e,n)=>{const{batch:o,range:i,url:r}=n;if(!o.isTyping)return;const s=i.end.getShiftedBy(-1),a=s.getShiftedBy(-r.length),c=t.model.createRange(a,s);this._applyAutoLink(r,c)})),e.bind("isEnabled").to(this)}_enableEnterHandling(){const t=this.editor,e=t.model,n=t.commands.get("enter");n&&n.on("execute",(()=>{const t=e.document.selection.getFirstPosition();if(!t.parent.previousSibling)return;const n=e.createRangeIn(t.parent.previousSibling);this._checkAndApplyAutoLinkOnRange(n)}))}_enableShiftEnterHandling(){const t=this.editor,e=t.model,n=t.commands.get("shiftEnter");n&&n.on("execute",(()=>{const t=e.document.selection.getFirstPosition(),n=e.createRange(e.createPositionAt(t.parent,0),t.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(n)}))}_checkAndApplyAutoLinkOnRange(t){const e=this.editor.model,{text:n,range:o}=Xm(t,e),i=lw(n);if(i){const t=e.createRange(o.end.getShiftedBy(-i.length),o.end);this._applyAutoLink(i,t)}}_applyAutoLink(t,e){const n=this.editor.model,o=Rb(t,this.editor.config.get("link.defaultProtocol"));this.isEnabled&&function(t,e){return e.schema.checkAttributeInSelection(e.createSelection(t),"linkHref")}(e,n)&&jb(o)&&!function(t){const e=t.start.nodeAfter;return e&&e.hasAttribute("linkHref")}(e)&&this._persistAutoLink(o,e)}_persistAutoLink(t,e){const n=this.editor.model,o=this.editor.plugins.get("Delete");n.enqueueChange((i=>{i.setAttribute("linkHref",t,e),n.enqueueChange((()=>{o.requestUndoOnBackspace()}))}))}}function lw(t){const e=aw.exec(t);return e?e[2]:null}class dw extends U{constructor(t,e){super(t),this.type=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,n=e.document,o=Array.from(n.selection.getSelectedBlocks()).filter((t=>uw(t,e.schema))),i=void 0!==t.forceValue?!t.forceValue:this.value;e.change((t=>{if(i){let e=o[o.length-1].nextSibling,n=Number.POSITIVE_INFINITY,i=[];for(;e&&"listItem"==e.name&&0!==e.getAttribute("listIndent");){const t=e.getAttribute("listIndent");t=n;)r>i.getAttribute("listIndent")&&(r=i.getAttribute("listIndent")),i.getAttribute("listIndent")==r&&t[e?"unshift":"push"](i),i=i[e?"previousSibling":"nextSibling"]}}function uw(t,e){return e.checkChild(t.parent,"listItem")&&!e.isObject(t)}class gw extends U{constructor(t,e){super(t),this._indentBy="forward"==e?1:-1}refresh(){this.isEnabled=this._checkEnabled()}execute(){const t=this.editor.model,e=t.document;let n=Array.from(e.selection.getSelectedBlocks());t.change((t=>{const e=n[n.length-1];let o=e.nextSibling;for(;o&&"listItem"==o.name&&o.getAttribute("listIndent")>e.getAttribute("listIndent");)n.push(o),o=o.nextSibling;this._indentBy<0&&(n=n.reverse());for(const e of n){const n=e.getAttribute("listIndent")+this._indentBy;n<0?t.rename(e,"paragraph"):t.setAttribute("listIndent",n,e)}this.fire("_executeCleanup",n)}))}_checkEnabled(){const t=Ma(this.editor.model.document.selection.getSelectedBlocks());if(!t||!t.is("element","listItem"))return!1;if(this._indentBy>0){const e=t.getAttribute("listIndent"),n=t.getAttribute("listType");let o=t.previousSibling;for(;o&&o.is("element","listItem")&&o.getAttribute("listIndent")>=e;){if(o.getAttribute("listIndent")==e)return o.getAttribute("listType")==n;o=o.previousSibling}return!1}return!0}}function mw(t,e){const n=e.mapper,o=e.writer,i="numbered"==t.getAttribute("listType")?"ol":"ul",r=function(t){const e=t.createContainerElement("li");return e.getFillerOffset=Aw,e}(o),s=o.createContainerElement(i,null);return o.insert(o.createPositionAt(s,0),r),n.bindElements(t,r),r}function pw(t,e,n,o){const i=e.parent,r=n.mapper,s=n.writer;let a=r.toViewPosition(o.createPositionBefore(t));const c=bw(t.previousSibling,{sameIndent:!0,smallerIndent:!0,listIndent:t.getAttribute("listIndent")}),l=t.previousSibling;if(c&&c.getAttribute("listIndent")==t.getAttribute("listIndent")){const t=r.toViewElement(c);a=s.breakContainer(s.createPositionAfter(t))}else if(l&&"listItem"==l.name){a=r.toViewPosition(o.createPositionAt(l,"end"));const t=r.findMappedViewAncestor(a),e=function(t){for(const e of t.getChildren())if("ul"==e.name||"ol"==e.name)return e;return null}(t);a=e?s.createPositionBefore(e):s.createPositionAt(t,"end")}else a=r.toViewPosition(o.createPositionBefore(t));if(a=kw(a),s.insert(a,i),l&&"listItem"==l.name){const t=r.toViewElement(l),n=s.createRange(s.createPositionAt(t,0),a).getWalker({ignoreElementEnd:!0});for(const t of n)if(t.item.is("element","li")){const o=s.breakContainer(s.createPositionBefore(t.item)),i=t.item.parent,r=s.createPositionAt(e,"end");fw(s,r.nodeBefore,r.nodeAfter),s.move(s.createRangeOn(i),r),n.position=o}}else{const n=i.nextSibling;if(n&&(n.is("element","ul")||n.is("element","ol"))){let o=null;for(const e of n.getChildren()){const n=r.toModelElement(e);if(!(n&&n.getAttribute("listIndent")>t.getAttribute("listIndent")))break;o=e}o&&(s.breakContainer(s.createPositionAfter(o)),s.move(s.createRangeOn(o.parent),s.createPositionAt(e,"end")))}}fw(s,i,i.nextSibling),fw(s,i.previousSibling,i)}function fw(t,e,n){return!e||!n||"ul"!=e.name&&"ol"!=e.name||e.name!=n.name||e.getAttribute("class")!==n.getAttribute("class")?null:t.mergeContainers(t.createPositionAfter(e))}function kw(t){return t.getLastMatchingPosition((t=>t.item.is("uiElement")))}function bw(t,e){const n=!!e.sameIndent,o=!!e.smallerIndent,i=e.listIndent;let r=t;for(;r&&"listItem"==r.name;){const t=r.getAttribute("listIndent");if(n&&i==t||o&&i>t)return r;r="forward"===e.direction?r.nextSibling:r.previousSibling}return null}function ww(t,e,n,o){t.ui.componentFactory.add(e,(i=>{const r=t.commands.get(e),s=new cu(i);return s.set({label:n,icon:o,tooltip:!0,isToggleable:!0}),s.bind("isOn","isEnabled").to(r,"value","isEnabled"),s.on("execute",(()=>{t.execute(e),t.editing.view.focus()})),s}))}function Aw(){const t=!this.isEmpty&&("ul"==this.getChild(0).name||"ol"==this.getChild(0).name);return this.isEmpty||t?0:Li.call(this)}function _w(t){return(e,n,o)=>{const i=o.consumable;if(!i.test(n.item,"insert")||!i.test(n.item,"attribute:listType")||!i.test(n.item,"attribute:listIndent"))return;i.consume(n.item,"insert"),i.consume(n.item,"attribute:listType"),i.consume(n.item,"attribute:listIndent");const r=n.item;pw(r,mw(r,o),o,t)}}function Cw(t,e,n){if(!n.consumable.test(e.item,t.name))return;const o=n.mapper.toViewElement(e.item),i=n.writer;i.breakContainer(i.createPositionBefore(o)),i.breakContainer(i.createPositionAfter(o));const r=o.parent,s="numbered"==e.attributeNewValue?"ol":"ul";i.rename(s,r)}function vw(t,e,n){n.consumable.consume(e.item,t.name);const o=n.mapper.toViewElement(e.item).parent,i=n.writer;fw(i,o,o.nextSibling),fw(i,o.previousSibling,o)}function yw(t,e,n){if(n.consumable.test(e.item,t.name)&&"listItem"!=e.item.name){let t=n.mapper.toViewPosition(e.range.start);const o=n.writer,i=[];for(;("ul"==t.parent.name||"ol"==t.parent.name)&&(t=o.breakContainer(t),"li"==t.parent.name);){const e=t,n=o.createPositionAt(t.parent,"end");if(!e.isEqual(n)){const t=o.remove(o.createRange(e,n));i.push(t)}t=o.createPositionAfter(t.parent)}if(i.length>0){for(let e=0;e0){const e=fw(o,n,n.nextSibling);e&&e.parent==n&&t.offset--}}fw(o,t.nodeBefore,t.nodeAfter)}}}function xw(t,e,n){const o=n.mapper.toViewPosition(e.position),i=o.nodeBefore,r=o.nodeAfter;fw(n.writer,i,r)}function Ew(t,e,n){if(n.consumable.consume(e.viewItem,{name:!0})){const t=n.writer,o=t.createElement("listItem"),i=function(t){let e=0,n=t.parent;for(;n;){if(n.is("element","li"))e++;else{const t=n.previousSibling;t&&t.is("element","li")&&e++}n=n.parent}return e}(e.viewItem);t.setAttribute("listIndent",i,o);const r=e.viewItem.parent&&"ol"==e.viewItem.parent.name?"numbered":"bulleted";if(t.setAttribute("listType",r,o),!n.safeInsert(o,e.modelCursor))return;const s=function(t,e,n){const{writer:o,schema:i}=n;let r=o.createPositionAfter(t);for(const s of e)if("ul"==s.name||"ol"==s.name)r=n.convertItem(s,r).modelCursor;else{const e=n.convertItem(s,o.createPositionAt(t,"end")),a=e.modelRange.start.nodeAfter;a&&a.is("element")&&!i.checkChild(t,a.name)&&(t=e.modelCursor.parent.is("element","listItem")?e.modelCursor.parent:Sw(e.modelCursor),r=o.createPositionAfter(t))}return r}(o,e.viewItem.getChildren(),n);e.modelRange=t.createRange(e.modelCursor,s),n.updateConversionResult(o,e)}}function Dw(t,e,n){if(n.consumable.test(e.viewItem,{name:!0})){const t=Array.from(e.viewItem.getChildren());for(const e of t){!(e.is("element","li")||Bw(e))&&e._remove()}}}function Iw(t,e,n){if(n.consumable.test(e.viewItem,{name:!0})){if(0===e.viewItem.childCount)return;const t=[...e.viewItem.getChildren()];let n=!1;for(const e of t)n&&!Bw(e)&&e._remove(),Bw(e)&&(n=!0)}}function Tw(t){return(e,n)=>{if(n.isPhantom)return;const o=n.modelPosition.nodeBefore;if(o&&o.is("element","listItem")){const e=n.mapper.toViewElement(o),i=e.getAncestors().find(Bw),r=t.createPositionAt(e,0).getWalker();for(const t of r){if("elementStart"==t.type&&t.item.is("element","li")){n.viewPosition=t.previousPosition;break}if("elementEnd"==t.type&&t.item==i){n.viewPosition=t.nextPosition;break}}}}}function Mw(t,[e,n,o]){let i,r=e.is("documentFragment")?e.getChild(0):e;if(i=n?this.createSelection(n,o):this.document.selection,r&&r.is("element","listItem")){const t=i.getFirstPosition();let e=null;if(t.parent.is("element","listItem")?e=t.parent:t.nodeBefore&&t.nodeBefore.is("element","listItem")&&(e=t.nodeBefore),e){const t=e.getAttribute("listIndent");if(t>0)for(;r&&r.is("element","listItem");)r._setAttribute("listIndent",r.getAttribute("listIndent")+t),r=r.nextSibling}}}function Sw(t){const e=new Za({startPosition:t});let n;do{n=e.next()}while(!n.value.item.is("element","listItem"));return n.value.item}function Nw(t,e,n,o,i,r){const s=bw(e.nodeBefore,{sameIndent:!0,smallerIndent:!0,listIndent:t,foo:"b"}),a=i.mapper,c=i.writer,l=s?s.getAttribute("listIndent"):null;let d;if(s)if(l==t){const t=a.toViewElement(s).parent;d=c.createPositionAfter(t)}else{const t=r.createPositionAt(s,"end");d=a.toViewPosition(t)}else d=n;d=kw(d);for(const t of[...o.getChildren()])Bw(t)&&(d=c.move(c.createRangeOn(t),d).end,fw(c,t,t.nextSibling),fw(c,t.previousSibling,t))}function Bw(t){return t.is("element","ol")||t.is("element","ul")}class Pw extends F{static get pluginName(){return"ListEditing"}static get requires(){return[Fg,Kg]}init(){const t=this.editor;t.model.schema.register("listItem",{inheritAllFrom:"$block",allowAttributes:["listType","listIndent"]});const e=t.data,n=t.editing;var o;t.model.document.registerPostFixer((e=>function(t,e){const n=t.document.differ.getChanges(),o=new Map;let i=!1;for(const o of n)if("insert"==o.type&&"listItem"==o.name)r(o.position);else if("insert"==o.type&&"listItem"!=o.name){if("$text"!=o.name){const n=o.position.nodeAfter;n.hasAttribute("listIndent")&&(e.removeAttribute("listIndent",n),i=!0),n.hasAttribute("listType")&&(e.removeAttribute("listType",n),i=!0),n.hasAttribute("listStyle")&&(e.removeAttribute("listStyle",n),i=!0),n.hasAttribute("listReversed")&&(e.removeAttribute("listReversed",n),i=!0),n.hasAttribute("listStart")&&(e.removeAttribute("listStart",n),i=!0);for(const e of Array.from(t.createRangeIn(n)).filter((t=>t.item.is("element","listItem"))))r(e.previousPosition)}r(o.position.getShiftedBy(o.length))}else"remove"==o.type&&"listItem"==o.name?r(o.position):("attribute"==o.type&&"listIndent"==o.attributeKey||"attribute"==o.type&&"listType"==o.attributeKey)&&r(o.range.start);for(const t of o.values())s(t),a(t);return i;function r(t){const e=t.nodeBefore;if(e&&e.is("element","listItem")){let t=e;if(o.has(t))return;for(let e=t.previousSibling;e&&e.is("element","listItem");e=t.previousSibling)if(t=e,o.has(t))return;o.set(e,t)}else{const e=t.nodeAfter;e&&e.is("element","listItem")&&o.set(e,e)}}function s(t){let n=0,o=null;for(;t&&t.is("element","listItem");){const r=t.getAttribute("listIndent");if(r>n){let s;null===o?(o=r-n,s=n):(o>r&&(o=r),s=r-o),e.setAttribute("listIndent",s,t),i=!0}else o=null,n=t.getAttribute("listIndent")+1;t=t.nextSibling}}function a(t){let n=[],o=null;for(;t&&t.is("element","listItem");){const r=t.getAttribute("listIndent");if(o&&o.getAttribute("listIndent")>r&&(n=n.slice(0,r+1)),0!=r)if(n[r]){const o=n[r];t.getAttribute("listType")!=o&&(e.setAttribute("listType",o,t),i=!0)}else n[r]=t.getAttribute("listType");o=t,t=t.nextSibling}}}(t.model,e))),n.mapper.registerViewToModelLength("li",zw),e.mapper.registerViewToModelLength("li",zw),n.mapper.on("modelToViewPosition",Tw(n.view)),n.mapper.on("viewToModelPosition",(o=t.model,(t,e)=>{const n=e.viewPosition,i=n.parent,r=e.mapper;if("ul"==i.name||"ol"==i.name){if(n.isAtEnd){const t=r.toModelElement(n.nodeBefore),i=r.getModelLength(n.nodeBefore);e.modelPosition=o.createPositionBefore(t).getShiftedBy(i)}else{const t=r.toModelElement(n.nodeAfter);e.modelPosition=o.createPositionBefore(t)}t.stop()}else if("li"==i.name&&n.nodeBefore&&("ul"==n.nodeBefore.name||"ol"==n.nodeBefore.name)){const s=r.toModelElement(i);let a=1,c=n.nodeBefore;for(;c&&Bw(c);)a+=r.getModelLength(c),c=c.previousSibling;e.modelPosition=o.createPositionBefore(s).getShiftedBy(a),t.stop()}})),e.mapper.on("modelToViewPosition",Tw(n.view)),t.conversion.for("editingDowncast").add((e=>{e.on("insert",yw,{priority:"high"}),e.on("insert:listItem",_w(t.model)),e.on("attribute:listType:listItem",Cw,{priority:"high"}),e.on("attribute:listType:listItem",vw,{priority:"low"}),e.on("attribute:listIndent:listItem",function(t){return(e,n,o)=>{if(!o.consumable.consume(n.item,"attribute:listIndent"))return;const i=o.mapper.toViewElement(n.item),r=o.writer;r.breakContainer(r.createPositionBefore(i)),r.breakContainer(r.createPositionAfter(i));const s=i.parent,a=s.previousSibling,c=r.createRangeOn(s);r.remove(c),a&&a.nextSibling&&fw(r,a,a.nextSibling),Nw(n.attributeOldValue+1,n.range.start,c.start,i,o,t),pw(n.item,i,o,t);for(const t of n.item.getChildren())o.consumable.consume(t,"insert")}}(t.model)),e.on("remove:listItem",function(t){return(e,n,o)=>{const i=o.mapper.toViewPosition(n.position).getLastMatchingPosition((t=>!t.item.is("element","li"))).nodeAfter,r=o.writer;r.breakContainer(r.createPositionBefore(i)),r.breakContainer(r.createPositionAfter(i));const s=i.parent,a=s.previousSibling,c=r.createRangeOn(s),l=r.remove(c);a&&a.nextSibling&&fw(r,a,a.nextSibling),Nw(o.mapper.toModelElement(i).getAttribute("listIndent")+1,n.position,c.start,i,o,t);for(const t of r.createRangeIn(l).getItems())o.mapper.unbindViewElement(t);e.stop()}}(t.model)),e.on("remove",xw,{priority:"low"})})),t.conversion.for("dataDowncast").add((e=>{e.on("insert",yw,{priority:"high"}),e.on("insert:listItem",_w(t.model))})),t.conversion.for("upcast").add((t=>{t.on("element:ul",Dw,{priority:"high"}),t.on("element:ol",Dw,{priority:"high"}),t.on("element:li",Iw,{priority:"high"}),t.on("element:li",Ew)})),t.model.on("insertContent",Mw,{priority:"high"}),t.commands.add("numberedList",new dw(t,"numbered")),t.commands.add("bulletedList",new dw(t,"bulleted")),t.commands.add("indentList",new gw(t,"forward")),t.commands.add("outdentList",new gw(t,"backward"));const i=n.view.document;this.listenTo(i,"enter",((t,e)=>{const n=this.editor.model.document,o=n.selection.getLastPosition().parent;n.selection.isCollapsed&&"listItem"==o.name&&o.isEmpty&&(this.editor.execute("outdentList"),e.preventDefault(),t.stop())}),{context:"li"}),this.listenTo(i,"delete",((t,e)=>{if("backward"!==e.direction)return;const n=this.editor.model.document.selection;if(!n.isCollapsed)return;const o=n.getFirstPosition();if(!o.isAtStart)return;const i=o.parent;if("listItem"!==i.name)return;i.previousSibling&&"listItem"===i.previousSibling.name||(this.editor.execute("outdentList"),e.preventDefault(),t.stop())}),{context:"li"}),this.listenTo(t.editing.view.document,"tab",((e,n)=>{const o=n.shiftKey?"outdentList":"indentList";this.editor.commands.get(o).isEnabled&&(t.execute(o),n.stopPropagation(),n.preventDefault(),e.stop())}),{context:"li"})}afterInit(){const t=this.editor.commands,e=t.get("indent"),n=t.get("outdent");e&&e.registerChildCommand(t.get("indentList")),n&&n.registerChildCommand(t.get("outdentList"))}}function zw(t){let e=1;for(const n of t.getChildren())if("ul"==n.name||"ol"==n.name)for(const t of n.getChildren())e+=zw(t);return e}class Lw extends F{static get pluginName(){return"ListUI"}init(){const t=this.editor.t;ww(this.editor,"numberedList",t("Numbered List"),''),ww(this.editor,"bulletedList",t("Bulleted List"),'')}}function Ow(t,e){return t=>{t.on("attribute:url:media",n)};function n(n,o,i){if(!i.consumable.consume(o.item,n.name))return;const r=o.attributeNewValue,s=i.writer,a=i.mapper.toViewElement(o.item),c=[...a.getChildren()].find((t=>t.getCustomProperty("media-content")));s.remove(c);const l=t.getMediaViewElement(s,r,e);s.insert(s.createPositionAt(a,0),l)}}function Rw(t,e,n,o){return t.createContainerElement("figure",{class:"media"},[e.getMediaViewElement(t,n,o),t.createSlot()])}function jw(t){const e=t.getSelectedElement();return e&&e.is("element","media")?e:null}function Fw(t,e,n,o){t.change((i=>{const r=i.createElement("media",{url:e});t.insertObject(r,n,null,{setSelection:"on",findOptimalPosition:o})}))}class Vw extends U{refresh(){const t=this.editor.model,e=t.document.selection,n=jw(e);this.value=n?n.getAttribute("url"):null,this.isEnabled=function(t){const e=t.getSelectedElement();return!!e&&"media"===e.name}(e)||function(t,e){let n=lm(t,e).start.parent;n.isEmpty&&!e.schema.isLimit(n)&&(n=n.parent);return e.schema.checkChild(n,"media")}(e,t)}execute(t){const e=this.editor.model,n=e.document.selection,o=jw(n);o?e.change((e=>{e.setAttribute("url",t,o)})):Fw(e,t,n,!0)}}class Uw{constructor(t,e){const n=e.providers,o=e.extraProviders||[],i=new Set(e.removeProviders),r=n.concat(o).filter((t=>{const e=t.name;return e?!i.has(e):(l("media-embed-no-provider-name",{provider:t}),!1)}));this.locale=t,this.providerDefinitions=r}hasMedia(t){return!!this._getMedia(t)}getMediaViewElement(t,e,n){return this._getMedia(e).getViewElement(t,n)}_getMedia(t){if(!t)return new Hw(this.locale);t=t.trim();for(const e of this.providerDefinitions){const n=e.html,o=bo(e.url);for(const e of o){const o=this._getUrlMatches(t,e);if(o)return new Hw(this.locale,t,o,n)}}return null}_getUrlMatches(t,e){let n=t.match(e);if(n)return n;let o=t.replace(/^https?:\/\//,"");return n=o.match(e),n||(o=o.replace(/^www\./,""),n=o.match(e),n||null)}}class Hw{constructor(t,e,n,o){this.url=this._getValidUrl(e),this._locale=t,this._match=n,this._previewRenderer=o}getViewElement(t,e){const n={};let o;if(e.renderForEditingView||e.renderMediaPreview&&this.url&&this._previewRenderer){this.url&&(n["data-oembed-url"]=this.url),e.renderForEditingView&&(n.class="ck-media__wrapper");const i=this._getPreviewHtml(e);o=t.createRawElement("div",n,((t,e)=>{e.setContentOf(t,i)}))}else this.url&&(n.url=this.url),o=t.createEmptyElement(e.elementName,n);return t.setCustomProperty("media-content",!0,o),o}_getPreviewHtml(t){return this._previewRenderer?this._previewRenderer(this._match):this.url&&t.renderForEditingView?this._getPlaceholderHtml():""}_getPlaceholderHtml(){const t=new ru,e=this._locale.t;t.content='',t.viewBox="0 0 64 42";return new ah({tag:"div",attributes:{class:"ck ck-reset_all ck-media__placeholder"},children:[{tag:"div",attributes:{class:"ck-media__placeholder__icon"},children:[t]},{tag:"a",attributes:{class:"ck-media__placeholder__url",target:"_blank",rel:"noopener noreferrer",href:this.url,"data-cke-tooltip-text":e("Open media in new tab")},children:[{tag:"span",attributes:{class:"ck-media__placeholder__url__text"},children:[this.url]}]}]}).render().outerHTML}_getValidUrl(t){return t?t.match(/^https?/)?t:"https://"+t:null}}var Gw=n(7442),qw={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Gw.Z,qw);Gw.Z.locals;class Ww extends F{static get pluginName(){return"MediaEmbedEditing"}constructor(t){super(t),t.config.define("mediaEmbed",{elementName:"oembed",providers:[{name:"dailymotion",url:/^dailymotion\.com\/video\/(\w+)/,html:t=>`
`},{name:"spotify",url:[/^open\.spotify\.com\/(artist\/\w+)/,/^open\.spotify\.com\/(album\/\w+)/,/^open\.spotify\.com\/(track\/\w+)/],html:t=>`
`},{name:"youtube",url:[/^(?:m\.)?youtube\.com\/watch\?v=([\w-]+)(?:&t=(\d+))?/,/^(?:m\.)?youtube\.com\/v\/([\w-]+)(?:\?t=(\d+))?/,/^youtube\.com\/embed\/([\w-]+)(?:\?start=(\d+))?/,/^youtu\.be\/([\w-]+)(?:\?t=(\d+))?/],html:t=>{const e=t[1],n=t[2];return`
`}},{name:"vimeo",url:[/^vimeo\.com\/(\d+)/,/^vimeo\.com\/[^/]+\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/album\/[^/]+\/video\/(\d+)/,/^vimeo\.com\/channels\/[^/]+\/(\d+)/,/^vimeo\.com\/groups\/[^/]+\/videos\/(\d+)/,/^vimeo\.com\/ondemand\/[^/]+\/(\d+)/,/^player\.vimeo\.com\/video\/(\d+)/],html:t=>`
`},{name:"instagram",url:/^instagram\.com\/p\/(\w+)/},{name:"twitter",url:/^twitter\.com/},{name:"googleMaps",url:[/^google\.com\/maps/,/^goo\.gl\/maps/,/^maps\.google\.com/,/^maps\.app\.goo\.gl/]},{name:"flickr",url:/^flickr\.com/},{name:"facebook",url:/^facebook\.com/}]}),this.registry=new Uw(t.locale,t.config.get("mediaEmbed"))}init(){const t=this.editor,e=t.model.schema,n=t.t,o=t.conversion,i=t.config.get("mediaEmbed.previewsInData"),r=t.config.get("mediaEmbed.elementName"),s=this.registry;t.commands.add("mediaEmbed",new Vw(t)),e.register("media",{inheritAllFrom:"$blockObject",allowAttributes:["url"]}),o.for("dataDowncast").elementToStructure({model:"media",view:(t,{writer:e})=>{const n=t.getAttribute("url");return Rw(e,s,n,{elementName:r,renderMediaPreview:n&&i})}}),o.for("dataDowncast").add(Ow(s,{elementName:r,renderMediaPreview:i})),o.for("editingDowncast").elementToStructure({model:"media",view:(t,{writer:e})=>{const o=t.getAttribute("url");return function(t,e,n){return e.setCustomProperty("media",!0,t),om(t,e,{label:n})}(Rw(e,s,o,{elementName:r,renderForEditingView:!0}),e,n("media widget"))}}),o.for("editingDowncast").add(Ow(s,{elementName:r,renderForEditingView:!0})),o.for("upcast").elementToElement({view:t=>["oembed",r].includes(t.name)&&t.getAttribute("url")?{name:!0}:null,model:(t,{writer:e})=>{const n=t.getAttribute("url");if(s.hasMedia(n))return e.createElement("media",{url:n})}}).elementToElement({view:{name:"div",attributes:{"data-oembed-url":!0}},model:(t,{writer:e})=>{const n=t.getAttribute("data-oembed-url");if(s.hasMedia(n))return e.createElement("media",{url:n})}}).add((t=>{t.on("element:figure",(function(t,e,n){if(!n.consumable.consume(e.viewItem,{name:!0,classes:"media"}))return;const{modelRange:o,modelCursor:i}=n.convertChildren(e.viewItem,e.modelCursor);e.modelRange=o,e.modelCursor=i;Ma(o.getItems())||n.consumable.revert(e.viewItem,{name:!0,classes:"media"})}))}))}}const Yw=/^(?:http(s)?:\/\/)?[\w-]+\.[\w-.~:/?#[\]@!$&'()*+,;=%]+$/;class $w extends F{static get requires(){return[Lm,Kg,Dp]}static get pluginName(){return"AutoMediaEmbed"}constructor(t){super(t),this._timeoutId=null,this._positionToInsert=null}init(){const t=this.editor,e=t.model.document;this.listenTo(t.plugins.get("ClipboardPipeline"),"inputTransformation",(()=>{const t=e.selection.getFirstRange(),n=fd.fromPosition(t.start);n.stickiness="toPrevious";const o=fd.fromPosition(t.end);o.stickiness="toNext",e.once("change:data",(()=>{this._embedMediaBetweenPositions(n,o),n.detach(),o.detach()}),{priority:"high"})})),t.commands.get("undo").on("execute",(()=>{this._timeoutId&&(Ao.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)}),{priority:"high"})}_embedMediaBetweenPositions(t,e){const n=this.editor,o=n.plugins.get(Ww).registry,i=new kc(t,e),r=i.getWalker({ignoreElementEnd:!0});let s="";for(const t of r)t.item.is("$textProxy")&&(s+=t.item.data);if(s=s.trim(),!s.match(Yw))return void i.detach();if(!o.hasMedia(s))return void i.detach();n.commands.get("mediaEmbed").isEnabled?(this._positionToInsert=fd.fromPosition(t),this._timeoutId=Ao.window.setTimeout((()=>{n.model.change((t=>{let e;this._timeoutId=null,t.remove(i),i.detach(),"$graveyard"!==this._positionToInsert.root.rootName&&(e=this._positionToInsert),Fw(n.model,s,e,!1),this._positionToInsert.detach(),this._positionToInsert=null})),n.plugins.get("Delete").requestUndoOnBackspace()}),100)):i.detach()}}var Kw=n(9292),Qw={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Kw.Z,Qw);Kw.Z.locals;class Zw extends Mh{constructor(t,e){super(e);const n=e.t;this.focusTracker=new Sa,this.keystrokes=new Na,this.set("mediaURLInputValue",""),this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(n("Save"),Jh.check,"ck-button-save"),this.saveButtonView.type="submit",this.saveButtonView.bind("isEnabled").to(this,"mediaURLInputValue",(t=>!!t)),this.cancelButtonView=this._createButton(n("Cancel"),Jh.cancel,"ck-button-cancel","cancel"),this._focusables=new sh,this._focusCycler=new vu({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this._validators=t,this.setTemplate({tag:"form",attributes:{class:["ck","ck-media-form","ck-responsive-form"],tabindex:"-1"},children:[this.urlInputView,this.saveButtonView,this.cancelButtonView]}),tu(this)}render(){super.render(),eu({view:this});[this.urlInputView,this.saveButtonView,this.cancelButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)})),this.keystrokes.listenTo(this.element);const t=t=>t.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t),this.listenTo(this.urlInputView.element,"selectstart",((t,e)=>{e.stopPropagation()}),{priority:"high"})}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}get url(){return this.urlInputView.fieldView.element.value.trim()}set url(t){this.urlInputView.fieldView.element.value=t.trim()}isValid(){this.resetFormStatus();for(const t of this._validators){const e=t(this);if(e)return this.urlInputView.errorText=e,!1}return!0}resetFormStatus(){this.urlInputView.errorText=null,this.urlInputView.infoText=this._urlInputViewInfoDefault}_createUrlInput(){const t=this.locale.t,e=new hg(this.locale,ug),n=e.fieldView;return this._urlInputViewInfoDefault=t("Paste the media URL in the input."),this._urlInputViewInfoTip=t("Tip: Paste the URL into the content to embed faster."),e.label=t("Media URL"),e.infoText=this._urlInputViewInfoDefault,n.on("input",(()=>{e.infoText=n.element.value?this._urlInputViewInfoTip:this._urlInputViewInfoDefault,this.mediaURLInputValue=n.element.value.trim()})),e}_createButton(t,e,n,o){const i=new cu(this.locale);return i.set({label:t,icon:e,tooltip:!0}),i.extendTemplate({attributes:{class:n}}),o&&i.delegate("execute").to(this,o),i}}class Jw extends F{static get requires(){return[Ww]}static get pluginName(){return"MediaEmbedUI"}init(){const t=this.editor,e=t.commands.get("mediaEmbed"),n=t.plugins.get(Ww).registry;t.ui.componentFactory.add("mediaEmbed",(o=>{const i=qu(o),r=new Zw(function(t,e){return[e=>{if(!e.url.length)return t("The URL must not be empty.")},n=>{if(!e.hasMedia(n.url))return t("This media URL is not supported.")}]}(t.t,n),t.locale);return this._setUpDropdown(i,r,e,t),this._setUpForm(i,r,e),i}))}_setUpDropdown(t,e,n){const o=this.editor,i=o.t,r=t.buttonView;t.bind("isEnabled").to(n),t.panelView.children.add(e),r.set({label:i("Insert media"),icon:'',tooltip:!0}),r.on("open",(()=>{e.disableCssTransitions(),e.url=n.value||"",e.urlInputView.fieldView.select(),e.enableCssTransitions()}),{priority:"low"}),t.on("submit",(()=>{e.isValid()&&(o.execute("mediaEmbed",e.url),o.editing.view.focus())})),t.on("change:isOpen",(()=>e.resetFormStatus())),t.on("cancel",(()=>{o.editing.view.focus()}))}_setUpForm(t,e,n){e.delegate("submit","cancel").to(t),e.urlInputView.bind("value").to(n,"value"),e.urlInputView.bind("isReadOnly").to(n,"isEnabled",(t=>!t))}}var Xw=n(4652),tA={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};Xr()(Xw.Z,tA);Xw.Z.locals;function eA(t,e,n,{blockElements:o,inlineObjectElements:i}){let r=n.createPositionAt(t,"forward"==e?"after":"before");return r=r.getLastMatchingPosition((({item:t})=>t.is("element")&&!o.includes(t.name)&&!i.includes(t.name)),{direction:e}),"forward"==e?r.nodeAfter:r.nodeBefore}function nA(t,e){return!!t&&t.is("element")&&e.includes(t.name)}function oA(t,e){if(!t.childCount)return;const n=new Yd(t.document),o=function(t,e){const n=e.createRangeIn(t),o=new Po({name:/^p|h\d+$/,styles:{"mso-list":/.*/}}),i=[];for(const t of n)if("elementStart"===t.type&&o.match(t.item)){const e=sA(t.item);i.push({element:t.item,id:e.id,order:e.order,indent:e.indent})}return i}(t,n);if(!o.length)return;let i=null,r=1;o.forEach(((t,s)=>{const a=function(t,e){if(!t)return!0;if(t.id!==e.id)return e.indent-t.indent!=1;const n=e.element.previousSibling;if(!n)return!0;return o=n,!(o.is("element","ol")||o.is("element","ul"));var o}(o[s-1],t),c=a?null:o[s-1],l=(h=t,(d=c)?h.indent-d.indent:h.indent-1);var d,h;if(a&&(i=null,r=1),!i||0!==l){const o=function(t,e){const n=new RegExp(`@list l${t.id}:level${t.indent}\\s*({[^}]*)`,"gi"),o=/mso-level-number-format:([^;]{0,100});/gi,i=/mso-level-start-at:\s{0,100}([0-9]{0,10})\s{0,100};/gi,r=n.exec(e);let s="decimal",a="ol",c=null;if(r&&r[1]){const e=o.exec(r[1]);if(e&&e[1]&&(s=e[1].trim(),a="bullet"!==s&&"image"!==s?"ol":"ul"),"bullet"===s){const e=function(t){const e=function(t){if(t.getChild(0).is("$text"))return null;for(const e of t.getChildren()){if(!e.is("element","span"))continue;const t=e.getChild(0);return t.is("$text")?t:t.getChild(0)}}(t);if(!e)return null;const n=e._data;if("o"===n)return"circle";if("·"===n)return"disc";if("§"===n)return"square";return null}(t.element);e&&(s=e)}else{const t=i.exec(r[1]);t&&t[1]&&(c=parseInt(t[1]))}}return{type:a,startIndex:c,style:iA(s)}}(t,e);if(i){if(t.indent>r){const t=i.getChild(i.childCount-1),e=t.getChild(t.childCount-1);i=rA(o,e,n),r+=1}else if(t.indent1&&n.setAttribute("start",t.startIndex,i),i}function sA(t){const e={},n=t.getStyle("mso-list");if(n){const t=n.match(/(^|\s{1,100})l(\d+)/i),o=n.match(/\s{0,100}lfo(\d+)/i),i=n.match(/\s{0,100}level(\d+)/i);t&&o&&i&&(e.id=t[2],e.order=o[1],e.indent=i[1])}return e}const aA=/id=("|')docs-internal-guid-[-0-9a-f]+("|')/i;class cA{constructor(t){this.document=t}isActive(t){return aA.test(t)}execute(t){const e=new Yd(this.document),{body:n}=t._parsedData;!function(t,e){for(const n of t.getChildren())if(n.is("element","b")&&"normal"===n.getStyle("font-weight")){const o=t.getChildIndex(n);e.remove(n),e.insertChild(o,n.getChildren(),t)}}(n,e),function(t,e){for(const n of e.createRangeIn(t)){const t=n.item;if(t.is("element","li")){const n=t.getChild(0);n&&n.is("element","p")&&e.unwrapElement(n)}}}(n,e),function(t,e){const n=new tr(e.document.stylesProcessor),o=new ps(n,{renderingMode:"data"}),i=o.blockElements,r=o.inlineObjectElements,s=[];for(const n of e.createRangeIn(t)){const t=n.item;if(t.is("element","br")){const n=eA(t,"forward",e,{blockElements:i,inlineObjectElements:r}),o=eA(t,"backward",e,{blockElements:i,inlineObjectElements:r}),a=nA(n,i);(nA(o,i)||a)&&s.push(t)}}for(const t of s)t.hasClass("Apple-interchange-newline")?e.remove(t):e.replace(t,e.createElement("p"))}(n,e),t.content=n}}function lA(t,e){if(!t.childCount)return;const n=new Yd,o=function(t,e){const n=e.createRangeIn(t),o=new Po({name:/v:(.+)/}),i=[];for(const t of n){if("elementStart"!=t.type)continue;const e=t.item,n=e.previousSibling&&e.previousSibling.name||null;o.match(e)&&e.getAttribute("o:gfxdata")&&"v:shapetype"!==n&&i.push(t.item.getAttribute("id"))}return i}(t,n);!function(t,e,n){const o=n.createRangeIn(e),i=new Po({name:"img"}),r=[];for(const e of o)if(i.match(e.item)){const n=e.item,o=n.getAttribute("v:shapes")?n.getAttribute("v:shapes").split(" "):[];o.length&&o.every((e=>t.indexOf(e)>-1))?r.push(n):n.getAttribute("src")||r.push(n)}for(const t of r)n.remove(t)}(o,t,n),function(t,e){const n=e.createRangeIn(t),o=new Po({name:/v:(.+)/}),i=[];for(const t of n)"elementStart"==t.type&&o.match(t.item)&&i.push(t.item);for(const t of i)e.remove(t)}(t,n);const i=function(t,e){const n=e.createRangeIn(t),o=new Po({name:"img"}),i=[];for(const t of n)o.match(t.item)&&t.item.getAttribute("src").startsWith("file://")&&i.push(t.item);return i}(t,n);i.length&&function(t,e,n){if(t.length===e.length)for(let o=0;oString.fromCharCode(parseInt(t,16)))).join(""))}const hA=//i,uA=/xmlns:o="urn:schemas-microsoft-com/i;class gA{constructor(t){this.document=t}isActive(t){return hA.test(t)||uA.test(t)}execute(t){const{body:e,stylesString:n}=t._parsedData;oA(e,n),lA(e,t.dataTransfer.getData("text/rtf")),t.content=e}}function mA(t){return t.replace(/(\s+)<\/span>/g,((t,e)=>1===e.length?" ":Array(e.length+1).join("  ").substr(0,e.length)))}function pA(t,e){const n=new DOMParser,o=function(t){return mA(mA(t)).replace(/([^\S\r\n]*?)[\r\n]+([^\S\r\n]*<\/span>)/g,"$1$2").replace(/<\/span>/g,"").replace(/ <\//g," <\/o:p>/g," ").replace(/( |\u00A0)<\/o:p>/g,"").replace(/>([^\S\r\n]*[\r\n]\s*)<")}(function(t){const e="",n="",o=t.indexOf(e);if(o<0)return t;const i=t.indexOf(n,o+e.length);return t.substring(0,o+e.length)+(i>=0?t.substring(i):"")}(t=t.replace(//))return new i(null,8,r,g);if(r=p.match(/^<\?[\s\S]*?\?>/))return new i(null,7,r,g);if(r=p.match(/^/))return new i(null,10,r,g);if(r=p.match(/^/,!0))return new i("#cdata-section",4,r[1],g);if(r=p.match(/^([^<]+)/,!0))return new i("#text",3,decodeEntities(r[1]),g)}};u=y();)1!==u.nodeType||o?(1===u.nodeType||3===u.nodeType&&""!==u.nodeValue.trim())&&_e("parseXml: data after document end has been discarded"):o=u;return p.matchAll()&&_e("parseXml: parsing error"),o}function decodeEntities(r){return r.replace(/&(?:#([0-9]+)|#[xX]([0-9A-Fa-f]+)|([0-9A-Za-z]+));/g,(function(r,i,o,u){return i?String.fromCharCode(parseInt(i,10)):o?String.fromCharCode(parseInt(o,16)):u&&w[u]?String.fromCharCode(w[u]):r}))}function parseColor(r){var i,o;return r=(r||"").trim(),(i=g[r])?o=[i.slice(),1]:(i=r.match(/^rgba\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9.]+)\s*\)$/i))?(i[1]=parseInt(i[1]),i[2]=parseInt(i[2]),i[3]=parseInt(i[3]),i[4]=parseFloat(i[4]),i[1]<256&&i[2]<256&&i[3]<256&&i[4]<=1&&(o=[i.slice(1,4),i[4]])):(i=r.match(/^rgb\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)$/i))?(i[1]=parseInt(i[1]),i[2]=parseInt(i[2]),i[3]=parseInt(i[3]),i[1]<256&&i[2]<256&&i[3]<256&&(o=[i.slice(1,4),1])):(i=r.match(/^rgb\(\s*([0-9.]+)%\s*,\s*([0-9.]+)%\s*,\s*([0-9.]+)%\s*\)$/i))?(i[1]=2.55*parseFloat(i[1]),i[2]=2.55*parseFloat(i[2]),i[3]=2.55*parseFloat(i[3]),i[1]<256&&i[2]<256&&i[3]<256&&(o=[i.slice(1,4),1])):(i=r.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i))?o=[[parseInt(i[1],16),parseInt(i[2],16),parseInt(i[3],16)],1]:(i=r.match(/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i))&&(o=[[17*parseInt(i[1],16),17*parseInt(i[2],16),17*parseInt(i[3],16)],1]),Ce?Ce(o,r):o}function opacityToColor(r,i,o){var u=r[0].slice(),p=r[1]*i;if(o){for(var g=0;g=0;o--)i=multiplyMatrix(Ae[o].savedMatrix,i);return i}function getPageBBox(){return(new B).M(0,0).L(r.page.width,0).L(r.page.width,r.page.height).L(0,r.page.height).transform(inverseMatrix(getGlobalMatrix())).getBoundingBox()}function inverseMatrix(r){var i=r[0]*r[3]-r[1]*r[2];return[r[3]/i,-r[1]/i,-r[2]/i,r[0]/i,(r[2]*r[5]-r[3]*r[4])/i,(r[1]*r[4]-r[0]*r[5])/i]}function validateMatrix(r){var i=validateNumber(r[0]),o=validateNumber(r[1]),u=validateNumber(r[2]),p=validateNumber(r[3]),g=validateNumber(r[4]),y=validateNumber(r[5]);if(isNotEqual(i*p-o*u,0))return[i,o,u,p,g,y]}function solveEquation(r){var i=r[2]||0,o=r[1]||0,u=r[0]||0;if(isEqual(i,0)&&isEqual(o,0))return[];if(isEqual(i,0))return[-u/o];var p=o*o-4*i*u;return isNotEqual(p,0)&&p>0?[(-o+Math.sqrt(p))/(2*i),(-o-Math.sqrt(p))/(2*i)]:isEqual(p,0)?[-o/(2*i)]:[]}function getCurveValue(r,i){return(i[0]||0)+(i[1]||0)*r+(i[2]||0)*r*r+(i[3]||0)*r*r*r}function isEqual(r,i){return Math.abs(r-i)<1e-10}function isNotEqual(r,i){return Math.abs(r-i)>=1e-10}function validateNumber(r){return r>-1e21&&r<1e21?Math.round(1e6*r)/1e6:0}function parseTranform(r){for(var i,o=new P((r||"").trim()),u=[1,0,0,1,0,0];i=o.match(/^([A-Za-z]+)\s*[(]([^(]+)[)]/,!0);){for(var p=i[1],g=[],y=new P(i[2].trim()),w=void 0;w=y.matchNumber();)g.push(Number(w)),y.matchSeparator();if("matrix"===p&&6===g.length)u=multiplyMatrix(u,[g[0],g[1],g[2],g[3],g[4],g[5]]);else if("translate"===p&&2===g.length)u=multiplyMatrix(u,[1,0,0,1,g[0],g[1]]);else if("translate"===p&&1===g.length)u=multiplyMatrix(u,[1,0,0,1,g[0],0]);else if("scale"===p&&2===g.length)u=multiplyMatrix(u,[g[0],0,0,g[1],0,0]);else if("scale"===p&&1===g.length)u=multiplyMatrix(u,[g[0],0,0,g[0],0,0]);else if("rotate"===p&&3===g.length){var _=g[0]*Math.PI/180;u=multiplyMatrix(u,[1,0,0,1,g[1],g[2]],[Math.cos(_),Math.sin(_),-Math.sin(_),Math.cos(_),0,0],[1,0,0,1,-g[1],-g[2]])}else if("rotate"===p&&1===g.length){var x=g[0]*Math.PI/180;u=multiplyMatrix(u,[Math.cos(x),Math.sin(x),-Math.sin(x),Math.cos(x),0,0])}else if("skewX"===p&&1===g.length){var k=g[0]*Math.PI/180;u=multiplyMatrix(u,[1,0,Math.tan(k),1,0,0])}else{if("skewY"!==p||1!==g.length)return;var O=g[0]*Math.PI/180;u=multiplyMatrix(u,[1,Math.tan(O),0,1,0,0])}o.matchSeparator()}if(!o.matchAll())return u}function parseAspectRatio(r,i,o,u,p,g){var y=(r||"").trim().match(/^(none)$|^x(Min|Mid|Max)Y(Min|Mid|Max)(?:\s+(meet|slice))?$/)||[],w=y[1]||y[4]||"meet",_=y[2]||"Mid",x=y[3]||"Mid",k=i/u,P=o/p,O={Min:0,Mid:.5,Max:1}[_]-(g||0),I={Min:0,Mid:.5,Max:1}[x]-(g||0);return"slice"===w?P=k=Math.max(k,P):"meet"===w&&(P=k=Math.min(k,P)),[k,0,0,P,O*(i-u*k),I*(o-p*P)]}function parseStyleAttr(r){var i=Object.create(null);r=(r||"").trim().split(/;/);for(var o=0;ou&&(r=u,u=i,i=r),o>p&&(r=p,p=o,o=r);for(var g=solveEquation(P),y=0;y=0&&g[y]<=1){var w=getCurveValue(g[y],x);wu&&(u=w)}for(var _=solveEquation(O),I=0;I<_.length;I++)if(_[I]>=0&&_[I]<=1){var B=getCurveValue(_[I],k);Bp&&(p=B)}return[i,o,u,p]},this.getPointAtLength=function(r){if(isEqual(r,0))return this.startPoint;if(isEqual(r,this.totalLength))return this.endPoint;if(!(r<0||r>this.totalLength))for(var i=1;i<=_;i++){var o=I[i-1],u=I[i];if(o<=r&&r<=u){var p=(i-(u-r)/(u-o))/_,g=getCurveValue(p,x),y=getCurveValue(p,k),w=getCurveValue(p,P),B=getCurveValue(p,O);return[g,y,Math.atan2(B,w)]}}}},I=function LineSegment(r,i,o,u){this.totalLength=Math.sqrt((o-r)*(o-r)+(u-i)*(u-i)),this.startPoint=[r,i,Math.atan2(u-i,o-r)],this.endPoint=[o,u,Math.atan2(u-i,o-r)],this.getBoundingBox=function(){return[Math.min(this.startPoint[0],this.endPoint[0]),Math.min(this.startPoint[1],this.endPoint[1]),Math.max(this.startPoint[0],this.endPoint[0]),Math.max(this.startPoint[1],this.endPoint[1])]},this.getPointAtLength=function(r){if(r>=0&&r<=this.totalLength){var i=r/this.totalLength||0;return[this.startPoint[0]+i*(this.endPoint[0]-this.startPoint[0]),this.startPoint[1]+i*(this.endPoint[1]-this.startPoint[1]),this.startPoint[2]]}}},B=function SvgShape(){this.pathCommands=[],this.pathSegments=[],this.startPoint=null,this.endPoint=null,this.totalLength=0;var i,o,u,p=0,g=0,y=0,w=0;this.move=function(r,i){return p=y=r,g=w=i,null},this.line=function(r,i){var o=new I(y,w,r,i);return y=r,w=i,o},this.curve=function(r,i,o,u,p,g){var _=new O(y,w,r,i,o,u,p,g);return y=p,w=g,_},this.close=function(){var r=new I(y,w,p,g);return y=p,w=g,r},this.addCommand=function(r){this.pathCommands.push(r);var i=this[r[0]].apply(this,r.slice(3));i&&(i.hasStart=r[1],i.hasEnd=r[2],this.startPoint=this.startPoint||i.startPoint,this.endPoint=i.endPoint,this.pathSegments.push(i),this.totalLength+=i.totalLength)},this.M=function(r,o){return this.addCommand(["move",!0,!0,r,o]),i="M",this},this.m=function(r,i){return this.M(y+r,w+i)},this.Z=this.z=function(){return this.addCommand(["close",!0,!0]),i="Z",this},this.L=function(r,o){return this.addCommand(["line",!0,!0,r,o]),i="L",this},this.l=function(r,i){return this.L(y+r,w+i)},this.H=function(r){return this.L(r,w)},this.h=function(r){return this.L(y+r,w)},this.V=function(r){return this.L(y,r)},this.v=function(r){return this.L(y,w+r)},this.C=function(r,p,g,y,w,_){return this.addCommand(["curve",!0,!0,r,p,g,y,w,_]),i="C",o=g,u=y,this},this.c=function(r,i,o,u,p,g){return this.C(y+r,w+i,y+o,w+u,y+p,w+g)},this.S=function(r,p,g,_){return this.C(y+("C"===i?y-o:0),w+("C"===i?w-u:0),r,p,g,_)},this.s=function(r,p,g,_){return this.C(y+("C"===i?y-o:0),w+("C"===i?w-u:0),y+r,w+p,y+g,w+_)},this.Q=function(r,p,g,_){var x=y+2/3*(r-y),k=w+2/3*(p-w),P=g+2/3*(r-g),O=_+2/3*(p-_);return this.addCommand(["curve",!0,!0,x,k,P,O,g,_]),i="Q",o=r,u=p,this},this.q=function(r,i,o,u){return this.Q(y+r,w+i,y+o,w+u)},this.T=function(r,p){return this.Q(y+("Q"===i?y-o:0),w+("Q"===i?w-u:0),r,p)},this.t=function(r,p){return this.Q(y+("Q"===i?y-o:0),w+("Q"===i?w-u:0),y+r,w+p)},this.A=function(r,o,u,p,g,_,x){if(isEqual(r,0)||isEqual(o,0))this.addCommand(["line",!0,!0,_,x]);else{u*=Math.PI/180,r=Math.abs(r),o=Math.abs(o),p=1*!!p,g=1*!!g;var k=Math.cos(u)*(y-_)/2+Math.sin(u)*(w-x)/2,P=Math.cos(u)*(w-x)/2-Math.sin(u)*(y-_)/2,O=k*k/(r*r)+P*P/(o*o);O>1&&(r*=Math.sqrt(O),o*=Math.sqrt(O));var I=Math.sqrt(Math.max(0,r*r*o*o-r*r*P*P-o*o*k*k)/(r*r*P*P+o*o*k*k)),B=(p===g?-1:1)*I*r*P/o,R=(p===g?1:-1)*I*o*k/r,D=Math.cos(u)*B-Math.sin(u)*R+(y+_)/2,N=Math.sin(u)*B+Math.cos(u)*R+(w+x)/2,W=Math.atan2((P-R)/o,(k-B)/r),U=Math.atan2((-P-R)/o,(-k-B)/r);0===g&&U-W>0?U-=2*Math.PI:1===g&&U-W<0&&(U+=2*Math.PI);for(var j=Math.ceil(Math.abs(U-W)/(Math.PI/Pe)),G=0;Gi[2]&&(i[2]=r[2]),r[1]i[3]&&(i[3]=r[3]);return i[0]===1/0&&(i[0]=0),i[1]===1/0&&(i[1]=0),i[2]===-1/0&&(i[2]=0),i[3]===-1/0&&(i[3]=0),i},this.getPointAtLength=function(r){if(r>=0&&r<=this.totalLength){for(var i,o=0;op.selector.specificity||(i[g]=p.css[g],o[g]=p.selector.specificity)}return i}(r),this.allowedChildren=[],this.attr=function(i){if("function"==typeof r.getAttribute)return r.getAttribute(i)},this.resolveUrl=function(r){var o=(r||"").match(/^\s*(?:url\("(.*)#(.*)"\)|url\('(.*)#(.*)'\)|url\((.*)#(.*)\)|(.*)#(.*))\s*$/)||[],u=o[1]||o[3]||o[5]||o[7],p=o[2]||o[4]||o[6]||o[8];if(p){if(!u){var g=i.getElementById(p);if(g)return-1===this.stack.indexOf(g)?g:void _e('SVGtoPDF: loop of circular references for id "'+p+'"')}if(ke){var y=Ee[u];if(!y){(function isArrayLike(r){return"object"==typeof r&&null!==r&&"number"==typeof r.length})(y=ke(u))||(y=[y]);for(var w=0;w=0&&o[3]>=0?o:i},this.getPercent=function(r,i){var o=this.attr(r),u=new P((o||"").trim()),p=u.matchNumber();return p?(u.match("%")&&(p*=.01),u.matchAll()?i:Math.max(0,Math.min(1,p))):i},this.chooseValue=function(r){for(var i=0;i=0&&(o=y);break;case"stroke-miterlimit":null!=(y=parseFloat(i))&&y>=1&&(o=y);break;case"word-spacing":case"letter-spacing":o=this.computeLength(i,this.getViewport());break;case"stroke-dashoffset":if(null!=(o=this.computeLength(i,this.getViewport()))&&o<0)for(var I=this.get("stroke-dasharray"),B=0;B0?r:this.ref?this.ref.getChildren():[]},this.getPaint=function(i,o,p,g){var y="userSpaceOnUse"!==this.attr("patternUnits"),w="objectBoundingBox"===this.attr("patternContentUnits"),_=this.getLength("x",y?1:this.getParentVWidth(),0),x=this.getLength("y",y?1:this.getParentVHeight(),0),k=this.getLength("width",y?1:this.getParentVWidth(),0),P=this.getLength("height",y?1:this.getParentVHeight(),0);w&&!y?(_=(_-i[0])/(i[2]-i[0])||0,x=(x-i[1])/(i[3]-i[1])||0,k=k/(i[2]-i[0])||0,P=P/(i[3]-i[1])||0):!w&&y&&(_=i[0]+_*(i[2]-i[0]),x=i[1]+x*(i[3]-i[1]),k*=i[2]-i[0],P*=i[3]-i[1]);var O=this.getViewbox("viewBox",[0,0,k,P]),I=multiplyMatrix(parseAspectRatio((this.attr("preserveAspectRatio")||"").trim(),k,P,O[2],O[3],0),[1,0,0,1,-O[0],-O[1]]),B=parseTranform(this.attr("patternTransform"));if(w&&(B=multiplyMatrix([i[2]-i[0],0,0,i[3]-i[1],i[0],i[1]],B)),(B=validateMatrix(B=multiplyMatrix(B,[1,0,0,1,_,x])))&&(I=validateMatrix(I))&&(k=validateNumber(k))&&(P=validateNumber(P))){var R=docBeginGroup([0,0,k,P]);return r.transform.apply(r,I),this.drawChildren(p,g),docEndGroup(R),[docCreatePattern(R,k,P,B),o]}return u?[u[0],u[1]*o]:void 0},this.getVWidth=function(){var r="userSpaceOnUse"!==this.attr("patternUnits"),i=this.getLength("width",r?1:this.getParentVWidth(),0);return this.getViewbox("viewBox",[0,0,i,0])[2]},this.getVHeight=function(){var r="userSpaceOnUse"!==this.attr("patternUnits"),i=this.getLength("height",r?1:this.getParentVHeight(),0);return this.getViewbox("viewBox",[0,0,0,i])[3]}},$=function SvgElemGradient(i,o,u){R.call(this,i,o),this.allowedChildren=["stop"],this.ref=function(){var r=this.getUrl("href")||this.getUrl("xlink:href");if(r&&r.nodeName===i.nodeName)return new SvgElemGradient(r,o,u)}.call(this);var p=this.attr;this.attr=function(r){var i=p.call(this,r);return null!=i||"href"===r||"xlink:href"===r?i:this.ref?this.ref.attr(r):null};var g=this.getChildren;this.getChildren=function(){var r=g.call(this);return r.length>0?r:this.ref?this.ref.getChildren():[]},this.getPaint=function(i,o,p,g){var w=this.getChildren();if(0!==w.length){if(1===w.length){var _=w[0],x=_.get("stop-color");if("none"===x)return;return opacityToColor(x,_.get("stop-opacity")*o,g)}var k,P,O,I,B,R,D="userSpaceOnUse"!==this.attr("gradientUnits"),N=parseTranform(this.attr("gradientTransform")),W=this.attr("spreadMethod"),U=0,j=0,G=1;if(D&&(N=multiplyMatrix([i[2]-i[0],0,0,i[3]-i[1],i[0],i[1]],N)),N=validateMatrix(N)){if("linearGradient"===this.name)P=this.getLength("x1",D?1:this.getVWidth(),0),O=this.getLength("x2",D?1:this.getVWidth(),D?1:this.getVWidth()),I=this.getLength("y1",D?1:this.getVHeight(),0),B=this.getLength("y2",D?1:this.getVHeight(),0);else{O=this.getLength("cx",D?1:this.getVWidth(),D?.5:.5*this.getVWidth()),B=this.getLength("cy",D?1:this.getVHeight(),D?.5:.5*this.getVHeight()),R=this.getLength("r",D?1:this.getViewport(),D?.5:.5*this.getViewport()),P=this.getLength("fx",D?1:this.getVWidth(),O),I=this.getLength("fy",D?1:this.getVHeight(),B),R<0&&_e("SvgElemGradient: negative r value");var X=Math.sqrt(Math.pow(O-P,2)+Math.pow(B-I,2)),K=1;X>R&&(P=O+(P-O)*(K=R/X),I=B+(I-B)*K),R=Math.max(R,X*K*1.000001)}if("reflect"===W||"repeat"===W){var Y=inverseMatrix(N),J=transformPoint([i[0],i[1]],Y),$=transformPoint([i[2],i[1]],Y),ee=transformPoint([i[2],i[3]],Y),te=transformPoint([i[0],i[3]],Y);"linearGradient"===this.name?(U=Math.max((J[0]-O)*(O-P)+(J[1]-B)*(B-I),($[0]-O)*(O-P)+($[1]-B)*(B-I),(ee[0]-O)*(O-P)+(ee[1]-B)*(B-I),(te[0]-O)*(O-P)+(te[1]-B)*(B-I))/(Math.pow(O-P,2)+Math.pow(B-I,2)),j=Math.max((J[0]-P)*(P-O)+(J[1]-I)*(I-B),($[0]-P)*(P-O)+($[1]-I)*(I-B),(ee[0]-P)*(P-O)+(ee[1]-I)*(I-B),(te[0]-P)*(P-O)+(te[1]-I)*(I-B))/(Math.pow(O-P,2)+Math.pow(B-I,2))):U=Math.sqrt(Math.max(Math.pow(J[0]-O,2)+Math.pow(J[1]-B,2),Math.pow($[0]-O,2)+Math.pow($[1]-B,2),Math.pow(ee[0]-O,2)+Math.pow(ee[1]-B,2),Math.pow(te[0]-O,2)+Math.pow(te[1]-B,2)))/R-1,U=Math.ceil(U+.5),G=(j=Math.ceil(j+.5))+1+U}k="linearGradient"===this.name?r.linearGradient(P-j*(O-P),I-j*(B-I),O+U*(O-P),B+U*(B-I)):r.radialGradient(P,I,0,O,B,R+U*R);for(var re=0;re0&&k.stop((re+0)/G,se[0],se[1]),k.stop((re+ne)/(U+j+1),se[0],se[1]),oe===w.length-1&&ne<1&&k.stop((re+1)/G,se[0],se[1])}return k.setTransform.apply(k,N),[k,1]}return u?[u[0],u[1]*o]:void 0}}},ee=function SvgElemBasicShape(i,o){D.call(this,i,o),this.dashScale=1,this.getBoundingShape=function(){return this.shape},this.getTransformation=function(){return this.get("transform")},this.drawInDocument=function(i,o){if("hidden"!==this.get("visibility")&&this.shape){if(r.save(),this.transform(),this.clip(),i)this.shape.insertInDocument(),docFillColor(y.white),r.fill(this.get("clip-rule"));else{var u;this.mask()&&(u=docBeginGroup(getPageBBox()));var p=this.shape.getSubPaths(),g=this.getFill(i,o),w=this.getStroke(i,o),_=this.get("stroke-width"),x=this.get("stroke-linecap");if(g||w){if(g&&docFillColor(g),w){for(var k=0;k0&&p[k].startPoint&&p[k].startPoint.length>1){var P=p[k].startPoint[0],O=p[k].startPoint[1];docFillColor(w),"square"===x?r.rect(P-.5*_,O-.5*_,_,_):"round"===x&&r.circle(P,O,.5*_),r.fill()}var I=this.get("stroke-dasharray"),B=this.get("stroke-dashoffset");if(isNotEqual(this.dashScale,1)){for(var R=0;R0&&p[D].insertInDocument();g&&w?r.fillAndStroke(this.get("fill-rule")):g?r.fill(this.get("fill-rule")):w&&r.stroke()}var N=this.get("marker-start"),W=this.get("marker-mid"),U=this.get("marker-end");if("none"!==N||"none"!==W||"none"!==U){var j=this.shape.getMarkers();if("none"!==N&&new ce(N,null).drawMarker(!1,o,j[0],_),"none"!==W)for(var G=1;G0&&g>0?y&&w?(y=Math.min(y,.5*p),w=Math.min(w,.5*g),this.shape=(new B).M(o+y,u).L(o+p-y,u).A(y,w,0,0,1,o+p,u+w).L(o+p,u+g-w).A(y,w,0,0,1,o+p-y,u+g).L(o+y,u+g).A(y,w,0,0,1,o,u+g-w).L(o,u+w).A(y,w,0,0,1,o+y,u).Z()):this.shape=(new B).M(o,u).L(o+p,u).L(o+p,u+g).L(o,u+g).Z():this.shape=new B},re=function SvgElemCircle(r,i){ee.call(this,r,i);var o=this.getLength("cx",this.getVWidth(),0),u=this.getLength("cy",this.getVHeight(),0),p=this.getLength("r",this.getViewport(),0);this.shape=p>0?(new B).M(o+p,u).A(p,p,0,0,1,o-p,u).A(p,p,0,0,1,o+p,u).Z():new B},ne=function SvgElemEllipse(r,i){ee.call(this,r,i);var o=this.getLength("cx",this.getVWidth(),0),u=this.getLength("cy",this.getVHeight(),0),p=this.getLength("rx",this.getVWidth(),0),g=this.getLength("ry",this.getVHeight(),0);this.shape=p>0&&g>0?(new B).M(o+p,u).A(p,g,0,0,1,o-p,u).A(p,g,0,0,1,o+p,u).Z():new B},ie=function SvgElemLine(r,i){ee.call(this,r,i);var o=this.getLength("x1",this.getVWidth(),0),u=this.getLength("y1",this.getVHeight(),0),p=this.getLength("x2",this.getVWidth(),0),g=this.getLength("y2",this.getVHeight(),0);this.shape=(new B).M(o,u).L(p,g)},oe=function SvgElemPolyline(r,i){ee.call(this,r,i);var o=this.getNumberList("points");this.shape=new B;for(var u=0;u0?o:void 0,this.dashScale=void 0!==this.pathLength?this.shape.totalLength/this.pathLength:1},ce=function SvgElemMarker(i,o){N.call(this,i,o);var u=this.getLength("markerWidth",this.getParentVWidth(),3),p=this.getLength("markerHeight",this.getParentVHeight(),3),g=this.getViewbox("viewBox",[0,0,u,p]);this.getVWidth=function(){return g[2]},this.getVHeight=function(){return g[3]},this.drawMarker=function(i,o,y,w){r.save();var _=this.attr("orient"),x=this.attr("markerUnits"),k="auto"===_?y[2]:(parseFloat(_)||0)*Math.PI/180,P="userSpaceOnUse"===x?1:w;r.transform(Math.cos(k)*P,Math.sin(k)*P,-Math.sin(k)*P,Math.cos(k)*P,y[0],y[1]);var O,I=this.getLength("refX",this.getVWidth(),0),B=this.getLength("refY",this.getVHeight(),0),R=parseAspectRatio(this.attr("preserveAspectRatio"),u,p,g[2],g[3],.5);"hidden"===this.get("overflow")&&r.rect(R[0]*(g[0]+g[2]/2-I)-u/2,R[3]*(g[1]+g[3]/2-B)-p/2,u,p).clip(),r.transform.apply(r,R),r.translate(-I,-B),this.get("opacity")<1&&!i&&(O=docBeginGroup(getPageBBox())),this.drawChildren(i,o),O&&(docEndGroup(O),r.fillOpacity(this.get("opacity")),docInsertGroup(O)),r.restore()}},le=function SvgElemClipPath(i,o){N.call(this,i,o),this.useMask=function(i){var o=docBeginGroup(getPageBBox());r.save(),"objectBoundingBox"===this.attr("clipPathUnits")&&r.transform(i[2]-i[0],0,0,i[3]-i[1],i[0],i[1]),this.clip(),this.drawChildren(!0,!1),r.restore(),docEndGroup(o),docApplyMask(o,!0)}},ue=function SvgElemMask(i,o){N.call(this,i,o),this.useMask=function(i){var o,u,p,g,y=docBeginGroup(getPageBBox());r.save(),"userSpaceOnUse"===this.attr("maskUnits")?(o=this.getLength("x",this.getVWidth(),-.1*(i[2]-i[0])+i[0]),u=this.getLength("y",this.getVHeight(),-.1*(i[3]-i[1])+i[1]),p=this.getLength("width",this.getVWidth(),1.2*(i[2]-i[0])),g=this.getLength("height",this.getVHeight(),1.2*(i[3]-i[1]))):(o=this.getLength("x",this.getVWidth(),-.1)*(i[2]-i[0])+i[0],u=this.getLength("y",this.getVHeight(),-.1)*(i[3]-i[1])+i[1],p=this.getLength("width",this.getVWidth(),1.2)*(i[2]-i[0]),g=this.getLength("height",this.getVHeight(),1.2)*(i[3]-i[1])),r.rect(o,u,p,g).clip(),"objectBoundingBox"===this.attr("maskContentUnits")&&r.transform(i[2]-i[0],0,0,i[3]-i[1],i[0],i[1]),this.clip(),this.drawChildren(!1,!0),r.restore(),docEndGroup(y),docApplyMask(y,!0)}},fe=function SvgElemTextContainer(i,o){D.call(this,i,o),this.allowedChildren=["tspan","#text","#cdata-section","a"],this.isText=!0,this.getBoundingShape=function(){for(var r=new B,i=0;i Tj")}r.addContent("ET")}}}"line-through"===this.get("text-decoration")&&this.decorate(.05*this._font.size,.5*(getAscent(this._font.font,this._font.size)+getDescent(this._font.font,this._font.size)),i,o)},this.decorate=function(i,o,u,p){var g=this.getFill(u,p),y=this.getStroke(u,p);g&&docFillColor(g),y&&(docStrokeColor(y),r.lineWidth(this.get("stroke-width")).miterLimit(this.get("stroke-miterlimit")).lineJoin(this.get("stroke-linejoin")).lineCap(this.get("stroke-linecap")).dash(this.get("stroke-dasharray"),{phase:this.get("stroke-dashoffset")}));for(var w=0,_=this._pos;w<_.length;w++)if(!_[w].hidden&&isNotEqual(_[w].width,0)){var x=(o+i/2)*Math.sin(_[w].rotate),k=-(o+i/2)*Math.cos(_[w].rotate),P=(o-i/2)*Math.sin(_[w].rotate),O=-(o-i/2)*Math.cos(_[w].rotate),I=_[w].width*Math.cos(_[w].rotate),R=_[w].width*Math.sin(_[w].rotate);(new B).M(_[w].x+x,_[w].y+k).L(_[w].x+x+I,_[w].y+k+R).L(_[w].x+P+I,_[w].y+O+R).L(_[w].x+P,_[w].y+O).Z().insertInDocument(),g&&y?r.fillAndStroke():g?r.fill():y&&r.stroke()}}},he=function SvgElemTextNode(r,i){this.name=r.nodeName,this.textContent=r.nodeValue},de=function SvgElemTspan(r,i){fe.call(this,r,i)},pe=function SvgElemTextPath(r,i){var o;if(fe.call(this,r,i),(o=this.attr("path"))&&""!==o.trim()){var u=this.getLength("pathLength",this.getViewport());this.pathObject=(new B).path(o),this.pathLength=u>0?u:this.pathObject.totalLength,this.pathScale=this.pathObject.totalLength/this.pathLength}else if((o=this.getUrl("href")||this.getUrl("xlink:href"))&&"path"===o.nodeName){var p=new se(o,this);this.pathObject=p.shape.clone().transform(p.get("transform")),this.pathLength=this.chooseValue(p.pathLength,this.pathObject.totalLength),this.pathScale=this.pathObject.totalLength/this.pathLength}},ge=function SvgElemText(i,o){fe.call(this,i,o),this.allowedChildren=["textPath","tspan","#text","#cdata-section","a"],function(o){var u,p,g="",y=i.textContent,w=[],_=[],x=0,k=0;function doAnchoring(){if(_.length)for(var r=_[_.length-1],i=_[0],o=r.x+r.width-i.x,g={startltr:0,middleltr:.5,endltr:1,startrtl:1,middlertl:.5,endrtl:0}[u+p]*o||0,y=0;y<_.length;y++)_[y].x-=g;_=[]}function textOnPath(r){var i=r.pathObject,o=r.pathLength,u=r.pathScale;if(i)for(var p=r.getLength("startOffset",o,0),g=0;go||y<0)r._pos[g].hidden=!0;else{var w=i.getPointAtLength(y*u);isNotEqual(u,1)&&(r._pos[g].scale*=u,r._pos[g].width*=u),r._pos[g].x=w[0]-.5*r._pos[g].width*Math.cos(w[2])-r._pos[g].y*Math.sin(w[2]),r._pos[g].y=w[1]-.5*r._pos[g].width*Math.sin(w[2])+r._pos[g].y*Math.cos(w[2]),r._pos[g].rotate=w[2]+r._pos[g].rotate,r._pos[g].continuous=!1}}else for(var _=0;_0&&w<1/0)for(var _=0;_=2)for(var k=(i-(y-g))/(r.length-1),P=0;P0?y-4:y;for(o=0;o>16&255,_[x++]=i>>8&255,_[x++]=255&i;2===w&&(i=u[r.charCodeAt(o)]<<2|u[r.charCodeAt(o+1)]>>4,_[x++]=255&i);1===w&&(i=u[r.charCodeAt(o)]<<10|u[r.charCodeAt(o+1)]<<4|u[r.charCodeAt(o+2)]>>2,_[x++]=i>>8&255,_[x++]=255&i);return _},i.fromByteArray=function fromByteArray(r){for(var i,u=r.length,p=u%3,g=[],y=16383,w=0,_=u-p;w<_;w+=y)g.push(encodeChunk(r,w,w+y>_?_:w+y));1===p?(i=r[u-1],g.push(o[i>>2]+o[i<<4&63]+"==")):2===p&&(i=(r[u-2]<<8)+r[u-1],g.push(o[i>>10]+o[i>>4&63]+o[i<<2&63]+"="));return g.join("")};for(var o=[],u=[],p="undefined"!=typeof Uint8Array?Uint8Array:Array,g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",y=0,w=g.length;y0)throw new Error("Invalid string. Length must be a multiple of 4");var o=r.indexOf("=");return-1===o&&(o=i),[o,o===i?0:4-o%4]}function encodeChunk(r,i,u){for(var p,g,y=[],w=i;w>18&63]+o[g>>12&63]+o[g>>6&63]+o[63&g]);return y.join("")}u["-".charCodeAt(0)]=62,u["_".charCodeAt(0)]=63},4181:function(r){var i=4096,o=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function BrotliBitReader(r){this.buf_=new Uint8Array(8224),this.input_=r,this.reset()}BrotliBitReader.READ_SIZE=i,BrotliBitReader.IBUF_MASK=8191,BrotliBitReader.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var r=0;r<4;r++)this.val_|=this.buf_[this.pos_]<<8*r,++this.pos_;return this.bit_end_pos_>0},BrotliBitReader.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var r=this.buf_ptr_,o=this.input_.read(this.buf_,r,i);if(o<0)throw new Error("Unexpected end of input");if(o=8;)this.val_>>>=8,this.val_|=this.buf_[8191&this.pos_]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},BrotliBitReader.prototype.readBits=function(r){32-this.bit_pos_>>this.bit_pos_&o[r];return this.bit_pos_+=r,i},r.exports=BrotliBitReader},7080:function(r,i){i.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),i.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},6450:function(r,i,o){var u=o(6154).g,p=o(6154).j,g=o(4181),y=o(5139),w=o(966).h,_=o(966).g,x=o(7080),k=o(8435),P=o(2973),O=1080,I=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),B=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),R=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),D=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function DecodeWindowBits(r){var i;return 0===r.readBits(1)?16:(i=r.readBits(3))>0?17+i:(i=r.readBits(3))>0?8+i:17}function DecodeVarLenUint8(r){if(r.readBits(1)){var i=r.readBits(3);return 0===i?1:r.readBits(i)+(1<1&&0===g)throw new Error("Invalid size byte");p.meta_block_length|=g<<8*u}}else for(u=0;u4&&0===y)throw new Error("Invalid size nibble");p.meta_block_length|=y<<4*u}return++p.meta_block_length,p.input_end||p.is_metadata||(p.is_uncompressed=r.readBits(1)),p}function ReadSymbol(r,i,o){var u;return o.fillBitWindow(),(u=r[i+=o.val_>>>o.bit_pos_&255].bits-8)>0&&(o.bit_pos_+=8,i+=r[i].value,i+=o.val_>>>o.bit_pos_&(1<>=1,++k;for(B=0;B0;++B){var U,j=I[B],G=0;u.fillBitWindow(),G+=u.val_>>>u.bit_pos_&15,u.bit_pos_+=W[G].bits,U=W[G].value,R[j]=U,0!==U&&(D-=32>>U,++N)}if(1!==N&&0!==D)throw new Error("[ReadHuffmanCode] invalid num_codes or space");!function ReadHuffmanCodeLengths(r,i,o,u){for(var p=0,g=8,y=0,x=0,k=32768,P=[],O=0;O<32;O++)P.push(new w(0,0));for(_(P,0,5,r,18);p0;){var I,B=0;if(u.readMoreInput(),u.fillBitWindow(),B+=u.val_>>>u.bit_pos_&31,u.bit_pos_+=P[B].bits,(I=255&P[B].value)<16)y=0,o[p++]=I,0!==I&&(g=I,k-=32768>>I);else{var R,D,N=I-14,W=0;if(16===I&&(W=g),x!==W&&(y=0,x=W),R=y,y>0&&(y-=2,y<<=N),p+(D=(y+=u.readBits(N)+3)-R)>i)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var U=0;U>>5]),this.htrees=new Uint32Array(i)}function DecodeContextMap(r,i){var o,u,p={num_htrees:null,context_map:null},g=0;i.readMoreInput();var y=p.num_htrees=DecodeVarLenUint8(i)+1,_=p.context_map=new Uint8Array(r);if(y<=1)return p;for(i.readBits(1)&&(g=i.readBits(4)+1),o=[],u=0;u=r)throw new Error("[DecodeContextMap] i >= context_map_size");_[u]=0,++u}else _[u]=x-g,++u}return i.readBits(1)&&function InverseMoveToFrontTransform(r,i){var o,u=new Uint8Array(256);for(o=0;o<256;++o)u[o]=o;for(o=0;o=r&&(w-=r),u[o]=w,p[_+(1&g[x])]=w,++g[x]}function CopyUncompressedBlockToOutput(r,i,o,u,p,y){var w,_=p+1,x=o&p,k=y.pos_&g.IBUF_MASK;if(i<8||y.bit_pos_+(i<<3)0;)y.readMoreInput(),u[x++]=y.readBits(8),x===_&&(r.write(u,_),x=0);else{if(y.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;y.bit_pos_<32;)u[x]=y.val_>>>y.bit_pos_,y.bit_pos_+=8,++x,--i;if(k+(w=y.bit_end_pos_-y.bit_pos_>>3)>g.IBUF_MASK){for(var P=g.IBUF_MASK+1-k,O=0;O=_){r.write(u,_),x-=_;for(O=0;O=_;){if(w=_-x,y.input_.read(u,x,w)i.buffer.length){var Ae=new Uint8Array(U+de);Ae.set(i.buffer),i.buffer=Ae}if(j=Pe.input_end,re=Pe.is_uncompressed,Pe.is_metadata)for(JumpToByteBoundary(W);de>0;--de)W.readMoreInput(),W.readBits(8);else if(0!==de)if(re)W.bit_pos_=W.bit_pos_+7&-8,CopyUncompressedBlockToOutput(i,de,U,B,I,W),U+=de;else{for(o=0;o<3;++o)ye[o]=DecodeVarLenUint8(W)+1,ye[o]>=2&&(ReadHuffmanCode(ye[o]+2,D,o*O,W),ReadHuffmanCode(26,N,o*O,W),pe[o]=ReadBlockLength(N,o*O,W),me[o]=1);for(W.readMoreInput(),oe=(1<<(ne=W.readBits(2)))-1,ae=(ie=16+(W.readBits(4)<0;){var Oe,Ie,Be,Fe,Le,Re,De,Me,Ne,We,ze,Ue;for(W.readMoreInput(),0===pe[1]&&(DecodeBlockType(ye[1],D,1,ge,ve,me,W),pe[1]=ReadBlockLength(N,O,W),he=$[1].htrees[ge[1]]),--pe[1],(Ie=(Oe=ReadSymbol($[1].codes,he,W))>>6)>=2?(Ie-=2,De=-1):De=0,Be=k.kInsertRangeLut[Ie]+(Oe>>3&7),Fe=k.kCopyRangeLut[Ie]+(7&Oe),Le=k.kInsertLengthPrefixCode[Be].offset+W.readBits(k.kInsertLengthPrefixCode[Be].nbits),Re=k.kCopyLengthPrefixCode[Fe].offset+W.readBits(k.kCopyLengthPrefixCode[Fe].nbits),Y=B[U-1&I],J=B[U-2&I],Ne=0;Ne4?3:Re-2))],(De=ReadSymbol($[2].codes,$[2].htrees[xe],W))>=ie)Ue=(De-=ie)&oe,De=ie+((je=(2+(1&(De>>=ne))<<(ze=1+(De>>1)))-4)+W.readBits(ze)<(G=U=y.minDictionaryWordLength&&Re<=y.maxDictionaryWordLength))throw new Error("Invalid backward reference. pos: "+U+" distance: "+Me+" len: "+Re+" bytes left: "+de);var je=y.offsetsByLength[Re],Ge=Me-G-1,Ve=y.sizeBitsByLength[Re],He=Ge>>Ve;if(je+=(Ge&(1<=R){i.write(B,_);for(var Xe=0;Xe0&&(X[3&K]=Me,++K),Re>de)throw new Error("Invalid backward reference. pos: "+U+" distance: "+Me+" len: "+Re+" bytes left: "+de);for(Ne=0;Ne>=1;return(r&o-1)+o}function ReplicateValue(r,i,o,u,p){do{r[i+(u-=o)]=new HuffmanCode(p.bits,p.value)}while(u>0)}function NextTableBitSize(r,i,u){for(var p=1<0;--N[y])ReplicateValue(r,i+_,x,I,new HuffmanCode(255&y,65535&R[w++])),_=GetNextKey(_,y);for(P=B-1,k=-1,y=u+1,x=2;y<=o;++y,x<<=1)for(;N[y]>0;--N[y])(_&P)!==k&&(i+=I,B+=I=1<<(O=NextTableBitSize(N,y,u)),r[D+(k=_&P)]=new HuffmanCode(O+u&255,i-D-k&65535)),ReplicateValue(r,i+(_>>u),x,I,new HuffmanCode(y-u&255,65535&R[w++])),_=GetNextKey(_,y);return B}},8435:function(r,i){function PrefixCodeRange(r,i){this.offset=r,this.nbits=i}i.kBlockLengthPrefixCode=[new PrefixCodeRange(1,2),new PrefixCodeRange(5,2),new PrefixCodeRange(9,2),new PrefixCodeRange(13,2),new PrefixCodeRange(17,3),new PrefixCodeRange(25,3),new PrefixCodeRange(33,3),new PrefixCodeRange(41,3),new PrefixCodeRange(49,4),new PrefixCodeRange(65,4),new PrefixCodeRange(81,4),new PrefixCodeRange(97,4),new PrefixCodeRange(113,5),new PrefixCodeRange(145,5),new PrefixCodeRange(177,5),new PrefixCodeRange(209,5),new PrefixCodeRange(241,6),new PrefixCodeRange(305,6),new PrefixCodeRange(369,7),new PrefixCodeRange(497,8),new PrefixCodeRange(753,9),new PrefixCodeRange(1265,10),new PrefixCodeRange(2289,11),new PrefixCodeRange(4337,12),new PrefixCodeRange(8433,13),new PrefixCodeRange(16625,24)],i.kInsertLengthPrefixCode=[new PrefixCodeRange(0,0),new PrefixCodeRange(1,0),new PrefixCodeRange(2,0),new PrefixCodeRange(3,0),new PrefixCodeRange(4,0),new PrefixCodeRange(5,0),new PrefixCodeRange(6,1),new PrefixCodeRange(8,1),new PrefixCodeRange(10,2),new PrefixCodeRange(14,2),new PrefixCodeRange(18,3),new PrefixCodeRange(26,3),new PrefixCodeRange(34,4),new PrefixCodeRange(50,4),new PrefixCodeRange(66,5),new PrefixCodeRange(98,5),new PrefixCodeRange(130,6),new PrefixCodeRange(194,7),new PrefixCodeRange(322,8),new PrefixCodeRange(578,9),new PrefixCodeRange(1090,10),new PrefixCodeRange(2114,12),new PrefixCodeRange(6210,14),new PrefixCodeRange(22594,24)],i.kCopyLengthPrefixCode=[new PrefixCodeRange(2,0),new PrefixCodeRange(3,0),new PrefixCodeRange(4,0),new PrefixCodeRange(5,0),new PrefixCodeRange(6,0),new PrefixCodeRange(7,0),new PrefixCodeRange(8,0),new PrefixCodeRange(9,0),new PrefixCodeRange(10,1),new PrefixCodeRange(12,1),new PrefixCodeRange(14,2),new PrefixCodeRange(18,2),new PrefixCodeRange(22,3),new PrefixCodeRange(30,3),new PrefixCodeRange(38,4),new PrefixCodeRange(54,4),new PrefixCodeRange(70,5),new PrefixCodeRange(102,5),new PrefixCodeRange(134,6),new PrefixCodeRange(198,7),new PrefixCodeRange(326,8),new PrefixCodeRange(582,9),new PrefixCodeRange(1094,10),new PrefixCodeRange(2118,24)],i.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],i.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},6154:function(r,i){function BrotliInput(r){this.buffer=r,this.pos=0}function BrotliOutput(r){this.buffer=r,this.pos=0}BrotliInput.prototype.read=function(r,i,o){this.pos+o>this.buffer.length&&(o=this.buffer.length-this.pos);for(var u=0;uthis.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(r.subarray(0,i),this.pos),this.pos+=i,i},i.j=BrotliOutput},2973:function(r,i,o){var u=o(5139),p=10,g=11;function Transform(r,i,o){this.prefix=new Uint8Array(r.length),this.transform=i,this.suffix=new Uint8Array(o.length);for(var u=0;u'),new Transform("",0,"\n"),new Transform("",3,""),new Transform("",0,"]"),new Transform("",0," for "),new Transform("",14,""),new Transform("",2,""),new Transform("",0," a "),new Transform("",0," that "),new Transform(" ",p,""),new Transform("",0,". "),new Transform(".",0,""),new Transform(" ",0,", "),new Transform("",15,""),new Transform("",0," with "),new Transform("",0,"'"),new Transform("",0," from "),new Transform("",0," by "),new Transform("",16,""),new Transform("",17,""),new Transform(" the ",0,""),new Transform("",4,""),new Transform("",0,". The "),new Transform("",g,""),new Transform("",0," on "),new Transform("",0," as "),new Transform("",0," is "),new Transform("",7,""),new Transform("",1,"ing "),new Transform("",0,"\n\t"),new Transform("",0,":"),new Transform(" ",0,". "),new Transform("",0,"ed "),new Transform("",20,""),new Transform("",18,""),new Transform("",6,""),new Transform("",0,"("),new Transform("",p,", "),new Transform("",8,""),new Transform("",0," at "),new Transform("",0,"ly "),new Transform(" the ",0," of "),new Transform("",5,""),new Transform("",9,""),new Transform(" ",p,", "),new Transform("",p,'"'),new Transform(".",0,"("),new Transform("",g," "),new Transform("",p,'">'),new Transform("",0,'="'),new Transform(" ",0,"."),new Transform(".com/",0,""),new Transform(" the ",0," of the "),new Transform("",p,"'"),new Transform("",0,". This "),new Transform("",0,","),new Transform(".",0," "),new Transform("",p,"("),new Transform("",p,"."),new Transform("",0," not "),new Transform(" ",0,'="'),new Transform("",0,"er "),new Transform(" ",g," "),new Transform("",0,"al "),new Transform(" ",g,""),new Transform("",0,"='"),new Transform("",g,'"'),new Transform("",p,". "),new Transform(" ",0,"("),new Transform("",0,"ful "),new Transform(" ",p,". "),new Transform("",0,"ive "),new Transform("",0,"less "),new Transform("",g,"'"),new Transform("",0,"est "),new Transform(" ",p,"."),new Transform("",g,'">'),new Transform(" ",0,"='"),new Transform("",p,","),new Transform("",0,"ize "),new Transform("",g,"."),new Transform(" ",0,""),new Transform(" ",0,","),new Transform("",p,'="'),new Transform("",g,'="'),new Transform("",0,"ous "),new Transform("",g,", "),new Transform("",p,"='"),new Transform(" ",p,","),new Transform(" ",g,'="'),new Transform(" ",g,", "),new Transform("",g,","),new Transform("",g,"("),new Transform("",g,". "),new Transform(" ",g,"."),new Transform("",g,"='"),new Transform(" ",g,". "),new Transform(" ",p,'="'),new Transform(" ",g,"='"),new Transform(" ",p,"='")];function ToUpperCase(r,i){return r[i]<192?(r[i]>=97&&r[i]<=122&&(r[i]^=32),1):r[i]<224?(r[i+1]^=32,2):(r[i+2]^=5,3)}i.kTransforms=y,i.kNumTransforms=y.length,i.transformDictionaryWord=function(r,i,o,w,_){var x,k=y[_].prefix,P=y[_].suffix,O=y[_].transform,I=O<12?0:O-11,B=0,R=i;I>w&&(I=w);for(var D=0;D0;){var N=ToUpperCase(r,x);x+=N,w-=N}for(var W=0;Wi.UNZIP)throw new TypeError("Bad argument");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=r,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}Zlib.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,g(this.init_done,"close before init"),g(this.mode<=i.UNZIP),this.mode===i.DEFLATE||this.mode===i.GZIP||this.mode===i.DEFLATERAW?w.deflateEnd(this.strm):this.mode!==i.INFLATE&&this.mode!==i.GUNZIP&&this.mode!==i.INFLATERAW&&this.mode!==i.UNZIP||_.inflateEnd(this.strm),this.mode=i.NONE,this.dictionary=null)},Zlib.prototype.write=function(r,i,o,u,p,g,y){return this._write(!0,r,i,o,u,p,g,y)},Zlib.prototype.writeSync=function(r,i,o,u,p,g,y){return this._write(!1,r,i,o,u,p,g,y)},Zlib.prototype._write=function(r,o,y,w,_,x,k,P){if(g.equal(arguments.length,8),g(this.init_done,"write before init"),g(this.mode!==i.NONE,"already finalized"),g.equal(!1,this.write_in_progress,"write already in progress"),g.equal(!1,this.pending_close,"close is pending"),this.write_in_progress=!0,g.equal(!1,void 0===o,"must provide flush value"),this.write_in_progress=!0,o!==i.Z_NO_FLUSH&&o!==i.Z_PARTIAL_FLUSH&&o!==i.Z_SYNC_FLUSH&&o!==i.Z_FULL_FLUSH&&o!==i.Z_FINISH&&o!==i.Z_BLOCK)throw new Error("Invalid flush value");if(null==y&&(y=u.alloc(0),_=0,w=0),this.strm.avail_in=_,this.strm.input=y,this.strm.next_in=w,this.strm.avail_out=P,this.strm.output=x,this.strm.next_out=k,this.flush=o,!r)return this._process(),this._checkError()?this._afterSync():void 0;var O=this;return p.nextTick((function(){O._process(),O._after()})),this},Zlib.prototype._afterSync=function(){var r=this.strm.avail_out,i=this.strm.avail_in;return this.write_in_progress=!1,[i,r]},Zlib.prototype._process=function(){var r=null;switch(this.mode){case i.DEFLATE:case i.GZIP:case i.DEFLATERAW:this.err=w.deflate(this.strm,this.flush);break;case i.UNZIP:switch(this.strm.avail_in>0&&(r=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===r)break;if(31!==this.strm.input[r]){this.mode=i.INFLATE;break}if(this.gzip_id_bytes_read=1,r++,1===this.strm.avail_in)break;case 1:if(null===r)break;139===this.strm.input[r]?(this.gzip_id_bytes_read=2,this.mode=i.GUNZIP):this.mode=i.INFLATE;break;default:throw new Error("invalid number of gzip magic number bytes read")}case i.INFLATE:case i.GUNZIP:case i.INFLATERAW:for(this.err=_.inflate(this.strm,this.flush),this.err===i.Z_NEED_DICT&&this.dictionary&&(this.err=_.inflateSetDictionary(this.strm,this.dictionary),this.err===i.Z_OK?this.err=_.inflate(this.strm,this.flush):this.err===i.Z_DATA_ERROR&&(this.err=i.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===i.GUNZIP&&this.err===i.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=_.inflate(this.strm,this.flush);break;default:throw new Error("Unknown mode "+this.mode)}},Zlib.prototype._checkError=function(){switch(this.err){case i.Z_OK:case i.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===i.Z_FINISH)return this._error("unexpected end of file"),!1;break;case i.Z_STREAM_END:break;case i.Z_NEED_DICT:return null==this.dictionary?this._error("Missing dictionary"):this._error("Bad dictionary"),!1;default:return this._error("Zlib error"),!1}return!0},Zlib.prototype._after=function(){if(this._checkError()){var r=this.strm.avail_out,i=this.strm.avail_in;this.write_in_progress=!1,this.callback(i,r),this.pending_close&&this.close()}},Zlib.prototype._error=function(r){this.strm.msg&&(r=this.strm.msg),this.onerror(r,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},Zlib.prototype.init=function(r,o,u,p,y){g(4===arguments.length||5===arguments.length,"init(windowBits, level, memLevel, strategy, [dictionary])"),g(r>=8&&r<=15,"invalid windowBits"),g(o>=-1&&o<=9,"invalid compression level"),g(u>=1&&u<=9,"invalid memlevel"),g(p===i.Z_FILTERED||p===i.Z_HUFFMAN_ONLY||p===i.Z_RLE||p===i.Z_FIXED||p===i.Z_DEFAULT_STRATEGY,"invalid strategy"),this._init(o,r,u,p,y),this._setDictionary()},Zlib.prototype.params=function(){throw new Error("deflateParams Not supported")},Zlib.prototype.reset=function(){this._reset(),this._setDictionary()},Zlib.prototype._init=function(r,o,u,p,g){switch(this.level=r,this.windowBits=o,this.memLevel=u,this.strategy=p,this.flush=i.Z_NO_FLUSH,this.err=i.Z_OK,this.mode!==i.GZIP&&this.mode!==i.GUNZIP||(this.windowBits+=16),this.mode===i.UNZIP&&(this.windowBits+=32),this.mode!==i.DEFLATERAW&&this.mode!==i.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new y,this.mode){case i.DEFLATE:case i.GZIP:case i.DEFLATERAW:this.err=w.deflateInit2(this.strm,this.level,i.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case i.INFLATE:case i.GUNZIP:case i.INFLATERAW:case i.UNZIP:this.err=_.inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}this.err!==i.Z_OK&&this._error("Init error"),this.dictionary=g,this.write_in_progress=!1,this.init_done=!0},Zlib.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=i.Z_OK,this.mode){case i.DEFLATE:case i.DEFLATERAW:this.err=w.deflateSetDictionary(this.strm,this.dictionary)}this.err!==i.Z_OK&&this._error("Failed to set dictionary")}},Zlib.prototype._reset=function(){switch(this.err=i.Z_OK,this.mode){case i.DEFLATE:case i.DEFLATERAW:case i.GZIP:this.err=w.deflateReset(this.strm);break;case i.INFLATE:case i.INFLATERAW:case i.GUNZIP:this.err=_.inflateReset(this.strm)}this.err!==i.Z_OK&&this._error("Failed to reset stream")},i.Zlib=Zlib},2635:function(r,i,o){"use strict";var u=o(4155),p=o(8823).Buffer,g=o(2830).Transform,y=o(4505),w=o(9539),_=o(9282).ok,x=o(8823).kMaxLength,k="Cannot create final Buffer. It would be larger than 0x"+x.toString(16)+" bytes";y.Z_MIN_WINDOWBITS=8,y.Z_MAX_WINDOWBITS=15,y.Z_DEFAULT_WINDOWBITS=15,y.Z_MIN_CHUNK=64,y.Z_MAX_CHUNK=1/0,y.Z_DEFAULT_CHUNK=16384,y.Z_MIN_MEMLEVEL=1,y.Z_MAX_MEMLEVEL=9,y.Z_DEFAULT_MEMLEVEL=8,y.Z_MIN_LEVEL=-1,y.Z_MAX_LEVEL=9,y.Z_DEFAULT_LEVEL=y.Z_DEFAULT_COMPRESSION;for(var P=Object.keys(y),O=0;O=x?y=new RangeError(k):i=p.concat(u,g),u=[],r.close(),o(y,i)}r.on("error",(function onError(i){r.removeListener("end",onEnd),r.removeListener("readable",flow),o(i)})),r.on("end",onEnd),r.end(i),flow()}function zlibBufferSync(r,i){if("string"==typeof i&&(i=p.from(i)),!p.isBuffer(i))throw new TypeError("Not a string or buffer");var o=r._finishFlushFlag;return r._processChunk(i,o)}function Deflate(r){if(!(this instanceof Deflate))return new Deflate(r);Zlib.call(this,r,y.DEFLATE)}function Inflate(r){if(!(this instanceof Inflate))return new Inflate(r);Zlib.call(this,r,y.INFLATE)}function Gzip(r){if(!(this instanceof Gzip))return new Gzip(r);Zlib.call(this,r,y.GZIP)}function Gunzip(r){if(!(this instanceof Gunzip))return new Gunzip(r);Zlib.call(this,r,y.GUNZIP)}function DeflateRaw(r){if(!(this instanceof DeflateRaw))return new DeflateRaw(r);Zlib.call(this,r,y.DEFLATERAW)}function InflateRaw(r){if(!(this instanceof InflateRaw))return new InflateRaw(r);Zlib.call(this,r,y.INFLATERAW)}function Unzip(r){if(!(this instanceof Unzip))return new Unzip(r);Zlib.call(this,r,y.UNZIP)}function isValidFlushFlag(r){return r===y.Z_NO_FLUSH||r===y.Z_PARTIAL_FLUSH||r===y.Z_SYNC_FLUSH||r===y.Z_FULL_FLUSH||r===y.Z_FINISH||r===y.Z_BLOCK}function Zlib(r,o){var u=this;if(this._opts=r=r||{},this._chunkSize=r.chunkSize||i.Z_DEFAULT_CHUNK,g.call(this,r),r.flush&&!isValidFlushFlag(r.flush))throw new Error("Invalid flush flag: "+r.flush);if(r.finishFlush&&!isValidFlushFlag(r.finishFlush))throw new Error("Invalid flush flag: "+r.finishFlush);if(this._flushFlag=r.flush||y.Z_NO_FLUSH,this._finishFlushFlag=void 0!==r.finishFlush?r.finishFlush:y.Z_FINISH,r.chunkSize&&(r.chunkSizei.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+r.chunkSize);if(r.windowBits&&(r.windowBitsi.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+r.windowBits);if(r.level&&(r.leveli.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+r.level);if(r.memLevel&&(r.memLeveli.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+r.memLevel);if(r.strategy&&r.strategy!=i.Z_FILTERED&&r.strategy!=i.Z_HUFFMAN_ONLY&&r.strategy!=i.Z_RLE&&r.strategy!=i.Z_FIXED&&r.strategy!=i.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+r.strategy);if(r.dictionary&&!p.isBuffer(r.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._handle=new y.Zlib(o);var w=this;this._hadError=!1,this._handle.onerror=function(r,o){_close(w),w._hadError=!0;var u=new Error(r);u.errno=o,u.code=i.codes[o],w.emit("error",u)};var _=i.Z_DEFAULT_COMPRESSION;"number"==typeof r.level&&(_=r.level);var x=i.Z_DEFAULT_STRATEGY;"number"==typeof r.strategy&&(x=r.strategy),this._handle.init(r.windowBits||i.Z_DEFAULT_WINDOWBITS,_,r.memLevel||i.Z_DEFAULT_MEMLEVEL,x,r.dictionary),this._buffer=p.allocUnsafe(this._chunkSize),this._offset=0,this._level=_,this._strategy=x,this.once("end",this.close),Object.defineProperty(this,"_closed",{get:function(){return!u._handle},configurable:!0,enumerable:!0})}function _close(r,i){i&&u.nextTick(i),r._handle&&(r._handle.close(),r._handle=null)}function emitCloseNT(r){r.emit("close")}Object.defineProperty(i,"codes",{enumerable:!0,value:Object.freeze(B),writable:!1}),i.Deflate=Deflate,i.Inflate=Inflate,i.Gzip=Gzip,i.Gunzip=Gunzip,i.DeflateRaw=DeflateRaw,i.InflateRaw=InflateRaw,i.Unzip=Unzip,i.createDeflate=function(r){return new Deflate(r)},i.createInflate=function(r){return new Inflate(r)},i.createDeflateRaw=function(r){return new DeflateRaw(r)},i.createInflateRaw=function(r){return new InflateRaw(r)},i.createGzip=function(r){return new Gzip(r)},i.createGunzip=function(r){return new Gunzip(r)},i.createUnzip=function(r){return new Unzip(r)},i.deflate=function(r,i,o){return"function"==typeof i&&(o=i,i={}),zlibBuffer(new Deflate(i),r,o)},i.deflateSync=function(r,i){return zlibBufferSync(new Deflate(i),r)},i.gzip=function(r,i,o){return"function"==typeof i&&(o=i,i={}),zlibBuffer(new Gzip(i),r,o)},i.gzipSync=function(r,i){return zlibBufferSync(new Gzip(i),r)},i.deflateRaw=function(r,i,o){return"function"==typeof i&&(o=i,i={}),zlibBuffer(new DeflateRaw(i),r,o)},i.deflateRawSync=function(r,i){return zlibBufferSync(new DeflateRaw(i),r)},i.unzip=function(r,i,o){return"function"==typeof i&&(o=i,i={}),zlibBuffer(new Unzip(i),r,o)},i.unzipSync=function(r,i){return zlibBufferSync(new Unzip(i),r)},i.inflate=function(r,i,o){return"function"==typeof i&&(o=i,i={}),zlibBuffer(new Inflate(i),r,o)},i.inflateSync=function(r,i){return zlibBufferSync(new Inflate(i),r)},i.gunzip=function(r,i,o){return"function"==typeof i&&(o=i,i={}),zlibBuffer(new Gunzip(i),r,o)},i.gunzipSync=function(r,i){return zlibBufferSync(new Gunzip(i),r)},i.inflateRaw=function(r,i,o){return"function"==typeof i&&(o=i,i={}),zlibBuffer(new InflateRaw(i),r,o)},i.inflateRawSync=function(r,i){return zlibBufferSync(new InflateRaw(i),r)},w.inherits(Zlib,g),Zlib.prototype.params=function(r,o,p){if(ri.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+r);if(o!=i.Z_FILTERED&&o!=i.Z_HUFFMAN_ONLY&&o!=i.Z_RLE&&o!=i.Z_FIXED&&o!=i.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+o);if(this._level!==r||this._strategy!==o){var g=this;this.flush(y.Z_SYNC_FLUSH,(function(){_(g._handle,"zlib binding closed"),g._handle.params(r,o),g._hadError||(g._level=r,g._strategy=o,p&&p())}))}else u.nextTick(p)},Zlib.prototype.reset=function(){return _(this._handle,"zlib binding closed"),this._handle.reset()},Zlib.prototype._flush=function(r){this._transform(p.alloc(0),"",r)},Zlib.prototype.flush=function(r,i){var o=this,g=this._writableState;("function"==typeof r||void 0===r&&!i)&&(i=r,r=y.Z_FULL_FLUSH),g.ended?i&&u.nextTick(i):g.ending?i&&this.once("end",i):g.needDrain?i&&this.once("drain",(function(){return o.flush(r,i)})):(this._flushFlag=r,this.write(p.alloc(0),"",i))},Zlib.prototype.close=function(r){_close(this,r),u.nextTick(emitCloseNT,this)},Zlib.prototype._transform=function(r,i,o){var u,g=this._writableState,w=(g.ending||g.ended)&&(!r||g.length===r.length);return null===r||p.isBuffer(r)?this._handle?(w?u=this._finishFlushFlag:(u=this._flushFlag,r.length>=g.length&&(this._flushFlag=this._opts.flush||y.Z_NO_FLUSH)),void this._processChunk(r,u,o)):o(new Error("zlib binding closed")):o(new Error("invalid input"))},Zlib.prototype._processChunk=function(r,i,o){var u=r&&r.length,g=this._chunkSize-this._offset,y=0,w=this,P="function"==typeof o;if(!P){var O,I=[],B=0;this.on("error",(function(r){O=r})),_(this._handle,"zlib binding closed");do{var R=this._handle.writeSync(i,r,y,u,this._buffer,this._offset,g)}while(!this._hadError&&callback(R[0],R[1]));if(this._hadError)throw O;if(B>=x)throw _close(this),new RangeError(k);var D=p.concat(I,B);return _close(this),D}_(this._handle,"zlib binding closed");var N=this._handle.write(i,r,y,u,this._buffer,this._offset,g);function callback(x,k){if(this&&(this.buffer=null,this.callback=null),!w._hadError){var O=g-k;if(_(O>=0,"have should not go down"),O>0){var R=w._buffer.slice(w._offset,w._offset+O);w._offset+=O,P?w.push(R):(I.push(R),B+=R.length)}if((0===k||w._offset>=w._chunkSize)&&(g=w._chunkSize,w._offset=0,w._buffer=p.allocUnsafe(w._chunkSize)),0===k){if(y+=u-x,u=x,!P)return!0;var D=w._handle.write(i,r,y,u,w._buffer,w._offset,w._chunkSize);return D.callback=callback,void(D.buffer=r)}if(!P)return!1;o()}}N.buffer=r,N.callback=callback},w.inherits(Deflate,Zlib),w.inherits(Inflate,Zlib),w.inherits(Gzip,Zlib),w.inherits(Gunzip,Zlib),w.inherits(DeflateRaw,Zlib),w.inherits(InflateRaw,Zlib),w.inherits(Unzip,Zlib)},1924:function(r,i,o){"use strict";var u=o(210),p=o(5559),g=p(u("String.prototype.indexOf"));r.exports=function callBoundIntrinsic(r,i){var o=u(r,!!i);return"function"==typeof o&&g(r,".prototype.")>-1?p(o):o}},5559:function(r,i,o){"use strict";var u=o(8612),p=o(210),g=p("%Function.prototype.apply%"),y=p("%Function.prototype.call%"),w=p("%Reflect.apply%",!0)||u.call(y,g),_=p("%Object.getOwnPropertyDescriptor%",!0),x=p("%Object.defineProperty%",!0),k=p("%Math.max%");if(x)try{x({},"a",{value:1})}catch(r){x=null}r.exports=function callBind(r){var i=w(u,y,arguments);if(_&&x){var o=_(i,"length");o.configurable&&x(i,"length",{value:1+k(0,r.length-(arguments.length-1))})}return i};var P=function applyBind(){return w(u,g,arguments)};x?x(r.exports,"apply",{value:P}):r.exports.apply=P},6313:function(r,i,o){var u=o(8823).Buffer,p=function(){"use strict";function clone(r,i,o,p){"object"==typeof i&&(o=i.depth,p=i.prototype,i.filter,i=i.circular);var g=[],y=[],w=void 0!==u;return void 0===i&&(i=!0),void 0===o&&(o=1/0),function _clone(r,o){if(null===r)return null;if(0==o)return r;var _,x;if("object"!=typeof r)return r;if(clone.__isArray(r))_=[];else if(clone.__isRegExp(r))_=new RegExp(r.source,__getRegExpFlags(r)),r.lastIndex&&(_.lastIndex=r.lastIndex);else if(clone.__isDate(r))_=new Date(r.getTime());else{if(w&&u.isBuffer(r))return _=u.allocUnsafe?u.allocUnsafe(r.length):new u(r.length),r.copy(_),_;void 0===p?(x=Object.getPrototypeOf(r),_=Object.create(x)):(_=Object.create(p),x=p)}if(i){var k=g.indexOf(r);if(-1!=k)return y[k];g.push(r),y.push(_)}for(var P in r){var O;x&&(O=Object.getOwnPropertyDescriptor(x,P)),O&&null==O.set||(_[P]=_clone(r[P],o-1))}return _}(r,o)}function __objToStr(r){return Object.prototype.toString.call(r)}function __getRegExpFlags(r){var i="";return r.global&&(i+="g"),r.ignoreCase&&(i+="i"),r.multiline&&(i+="m"),i}return clone.clonePrototype=function clonePrototype(r){if(null===r)return null;var c=function(){};return c.prototype=r,new c},clone.__objToStr=__objToStr,clone.__isDate=function __isDate(r){return"object"==typeof r&&"[object Date]"===__objToStr(r)},clone.__isArray=function __isArray(r){return"object"==typeof r&&"[object Array]"===__objToStr(r)},clone.__isRegExp=function __isRegExp(r){return"object"==typeof r&&"[object RegExp]"===__objToStr(r)},clone.__getRegExpFlags=__getRegExpFlags,clone}();r.exports&&(r.exports=p)},4667:function(r,i,o){o(2479);var u=o(857);r.exports=u.Object.values},7633:function(r,i,o){o(9170),o(6992),o(1539),o(8674),o(7922),o(4668),o(7727),o(8783);var u=o(857);r.exports=u.Promise},3867:function(r,i,o){var u=o(1150);o(8628),o(7314),o(7479),o(6290),r.exports=u},9662:function(r,i,o){var u=o(7854),p=o(614),g=o(6330),y=u.TypeError;r.exports=function(r){if(p(r))return r;throw y(g(r)+" is not a function")}},9483:function(r,i,o){var u=o(7854),p=o(4411),g=o(6330),y=u.TypeError;r.exports=function(r){if(p(r))return r;throw y(g(r)+" is not a constructor")}},6077:function(r,i,o){var u=o(7854),p=o(614),g=u.String,y=u.TypeError;r.exports=function(r){if("object"==typeof r||p(r))return r;throw y("Can't set "+g(r)+" as a prototype")}},1223:function(r,i,o){var u=o(5112),p=o(30),g=o(3070),y=u("unscopables"),w=Array.prototype;null==w[y]&&g.f(w,y,{configurable:!0,value:p(null)}),r.exports=function(r){w[y][r]=!0}},1530:function(r,i,o){"use strict";var u=o(8710).charAt;r.exports=function(r,i,o){return i+(o?u(r,i).length:1)}},5787:function(r,i,o){var u=o(7854),p=o(7976),g=u.TypeError;r.exports=function(r,i){if(p(i,r))return r;throw g("Incorrect invocation")}},9670:function(r,i,o){var u=o(7854),p=o(111),g=u.String,y=u.TypeError;r.exports=function(r){if(p(r))return r;throw y(g(r)+" is not an object")}},1048:function(r,i,o){"use strict";var u=o(7908),p=o(1400),g=o(6244),y=Math.min;r.exports=[].copyWithin||function copyWithin(r,i){var o=u(this),w=g(o),_=p(r,w),x=p(i,w),k=arguments.length>2?arguments[2]:void 0,P=y((void 0===k?w:p(k,w))-x,w-_),O=1;for(x<_&&_0;)x in o?o[_]=o[x]:delete o[_],_+=O,x+=O;return o}},1285:function(r,i,o){"use strict";var u=o(7908),p=o(1400),g=o(6244);r.exports=function fill(r){for(var i=u(this),o=g(i),y=arguments.length,w=p(y>1?arguments[1]:void 0,o),_=y>2?arguments[2]:void 0,x=void 0===_?o:p(_,o);x>w;)i[w++]=r;return i}},8533:function(r,i,o){"use strict";var u=o(2092).forEach,p=o(9341)("forEach");r.exports=p?[].forEach:function forEach(r){return u(this,r,arguments.length>1?arguments[1]:void 0)}},7745:function(r){r.exports=function(r,i){for(var o=0,u=i.length,p=new r(u);u>o;)p[o]=i[o++];return p}},8457:function(r,i,o){"use strict";var u=o(7854),p=o(9974),g=o(6916),y=o(7908),w=o(3411),_=o(7659),x=o(4411),k=o(6244),P=o(6135),O=o(8554),I=o(1246),B=u.Array;r.exports=function from(r){var i=y(r),o=x(this),u=arguments.length,R=u>1?arguments[1]:void 0,D=void 0!==R;D&&(R=p(R,u>2?arguments[2]:void 0));var N,W,U,j,G,X,K=I(i),Y=0;if(!K||this==B&&_(K))for(N=k(i),W=o?new this(N):B(N);N>Y;Y++)X=D?R(i[Y],Y):i[Y],P(W,Y,X);else for(G=(j=O(i,K)).next,W=o?new this:[];!(U=g(G,j)).done;Y++)X=D?w(j,R,[U.value,Y],!0):U.value,P(W,Y,X);return W.length=Y,W}},1318:function(r,i,o){var u=o(5656),p=o(1400),g=o(6244),createMethod=function(r){return function(i,o,y){var w,_=u(i),x=g(_),k=p(y,x);if(r&&o!=o){for(;x>k;)if((w=_[k++])!=w)return!0}else for(;x>k;k++)if((r||k in _)&&_[k]===o)return r||k||0;return!r&&-1}};r.exports={includes:createMethod(!0),indexOf:createMethod(!1)}},2092:function(r,i,o){var u=o(9974),p=o(1702),g=o(8361),y=o(7908),w=o(6244),_=o(5417),x=p([].push),createMethod=function(r){var i=1==r,o=2==r,p=3==r,k=4==r,P=6==r,O=7==r,I=5==r||P;return function(B,R,D,N){for(var W,U,j=y(B),G=g(j),X=u(R,D),K=w(G),Y=0,J=N||_,$=i?J(B,K):o||O?J(B,0):void 0;K>Y;Y++)if((I||Y in G)&&(U=X(W=G[Y],Y,j),r))if(i)$[Y]=U;else if(U)switch(r){case 3:return!0;case 5:return W;case 6:return Y;case 2:x($,W)}else switch(r){case 4:return!1;case 7:x($,W)}return P?-1:p||k?k:$}};r.exports={forEach:createMethod(0),map:createMethod(1),filter:createMethod(2),some:createMethod(3),every:createMethod(4),find:createMethod(5),findIndex:createMethod(6),filterReject:createMethod(7)}},6583:function(r,i,o){"use strict";var u=o(2104),p=o(5656),g=o(9303),y=o(6244),w=o(9341),_=Math.min,x=[].lastIndexOf,k=!!x&&1/[1].lastIndexOf(1,-0)<0,P=w("lastIndexOf"),O=k||!P;r.exports=O?function lastIndexOf(r){if(k)return u(x,this,arguments)||0;var i=p(this),o=y(i),w=o-1;for(arguments.length>1&&(w=_(w,g(arguments[1]))),w<0&&(w=o+w);w>=0;w--)if(w in i&&i[w]===r)return w||0;return-1}:x},1194:function(r,i,o){var u=o(7293),p=o(5112),g=o(7392),y=p("species");r.exports=function(r){return g>=51||!u((function(){var i=[];return(i.constructor={})[y]=function(){return{foo:1}},1!==i[r](Boolean).foo}))}},9341:function(r,i,o){"use strict";var u=o(7293);r.exports=function(r,i){var o=[][r];return!!o&&u((function(){o.call(null,i||function(){throw 1},1)}))}},3671:function(r,i,o){var u=o(7854),p=o(9662),g=o(7908),y=o(8361),w=o(6244),_=u.TypeError,createMethod=function(r){return function(i,o,u,x){p(o);var k=g(i),P=y(k),O=w(k),I=r?O-1:0,B=r?-1:1;if(u<2)for(;;){if(I in P){x=P[I],I+=B;break}if(I+=B,r?I<0:O<=I)throw _("Reduce of empty array with no initial value")}for(;r?I>=0:O>I;I+=B)I in P&&(x=o(x,P[I],I,k));return x}};r.exports={left:createMethod(!1),right:createMethod(!0)}},206:function(r,i,o){var u=o(1702);r.exports=u([].slice)},4362:function(r,i,o){var u=o(206),p=Math.floor,mergeSort=function(r,i){var o=r.length,g=p(o/2);return o<8?insertionSort(r,i):merge(r,mergeSort(u(r,0,g),i),mergeSort(u(r,g),i),i)},insertionSort=function(r,i){for(var o,u,p=r.length,g=1;g0;)r[u]=r[--u];u!==g++&&(r[u]=o)}return r},merge=function(r,i,o,u){for(var p=i.length,g=o.length,y=0,w=0;y1?arguments[1]:void 0);i=i?i.next:o.first;)for(u(i.value,i.key,this);i&&i.removed;)i=i.previous},has:function has(r){return!!getEntry(this,r)}}),g(I,o?{get:function get(r){var i=getEntry(this,r);return i&&i.value},set:function set(r,i){return define(this,0===r?0:r,i)}}:{add:function add(r){return define(this,r=0===r?0:r,r)}}),P&&u(I,"size",{get:function(){return D(this).size}}),k},setStrong:function(r,i,o){var u=i+" Iterator",p=R(i),g=R(u);x(r,i,(function(r,i){B(this,{type:u,target:r,state:p(r),kind:i,last:void 0})}),(function(){for(var r=g(this),i=r.kind,o=r.last;o&&o.removed;)o=o.previous;return r.target&&(r.last=o=o?o.next:r.state.first)?"keys"==i?{value:o.key,done:!1}:"values"==i?{value:o.value,done:!1}:{value:[o.key,o.value],done:!1}:(r.target=void 0,{value:void 0,done:!0})}),o?"entries":"values",!o,!0),k(i)}}},7710:function(r,i,o){"use strict";var u=o(2109),p=o(7854),g=o(1702),y=o(4705),w=o(1320),_=o(2423),x=o(408),k=o(5787),P=o(614),O=o(111),I=o(7293),B=o(7072),R=o(8003),D=o(9587);r.exports=function(r,i,o){var N=-1!==r.indexOf("Map"),W=-1!==r.indexOf("Weak"),U=N?"set":"add",j=p[r],G=j&&j.prototype,X=j,K={},fixMethod=function(r){var i=g(G[r]);w(G,r,"add"==r?function add(r){return i(this,0===r?0:r),this}:"delete"==r?function(r){return!(W&&!O(r))&&i(this,0===r?0:r)}:"get"==r?function get(r){return W&&!O(r)?void 0:i(this,0===r?0:r)}:"has"==r?function has(r){return!(W&&!O(r))&&i(this,0===r?0:r)}:function set(r,o){return i(this,0===r?0:r,o),this})};if(y(r,!P(j)||!(W||G.forEach&&!I((function(){(new j).entries().next()})))))X=o.getConstructor(i,r,N,U),_.enable();else if(y(r,!0)){var Y=new X,J=Y[U](W?{}:-0,1)!=Y,$=I((function(){Y.has(1)})),ee=B((function(r){new j(r)})),te=!W&&I((function(){for(var r=new j,i=5;i--;)r[U](i,i);return!r.has(-0)}));ee||((X=i((function(r,i){k(r,G);var o=D(new j,r,X);return null!=i&&x(i,o[U],{that:o,AS_ENTRIES:N}),o}))).prototype=G,G.constructor=X),($||te)&&(fixMethod("delete"),fixMethod("has"),N&&fixMethod("get")),(te||J)&&fixMethod(U),W&&G.clear&&delete G.clear}return K[r]=X,u({global:!0,forced:X!=j},K),R(X,r),W||o.setStrong(X,r,N),X}},9920:function(r,i,o){var u=o(2597),p=o(3887),g=o(1236),y=o(3070);r.exports=function(r,i){for(var o=p(i),w=y.f,_=g.f,x=0;x"+_+""}},4994:function(r,i,o){"use strict";var u=o(3383).IteratorPrototype,p=o(30),g=o(9114),y=o(8003),w=o(7497),returnThis=function(){return this};r.exports=function(r,i,o){var _=i+" Iterator";return r.prototype=p(u,{next:g(1,o)}),y(r,_,!1,!0),w[_]=returnThis,r}},8880:function(r,i,o){var u=o(9781),p=o(3070),g=o(9114);r.exports=u?function(r,i,o){return p.f(r,i,g(1,o))}:function(r,i,o){return r[i]=o,r}},9114:function(r){r.exports=function(r,i){return{enumerable:!(1&r),configurable:!(2&r),writable:!(4&r),value:i}}},6135:function(r,i,o){"use strict";var u=o(4948),p=o(3070),g=o(9114);r.exports=function(r,i,o){var y=u(i);y in r?p.f(r,y,g(0,o)):r[y]=o}},8709:function(r,i,o){"use strict";var u=o(7854),p=o(9670),g=o(2140),y=u.TypeError;r.exports=function(r){if(p(this),"string"===r||"default"===r)r="string";else if("number"!==r)throw y("Incorrect hint");return g(this,r)}},654:function(r,i,o){"use strict";var u=o(2109),p=o(6916),g=o(1913),y=o(6530),w=o(614),_=o(4994),x=o(9518),k=o(7674),P=o(8003),O=o(8880),I=o(1320),B=o(5112),R=o(7497),D=o(3383),N=y.PROPER,W=y.CONFIGURABLE,U=D.IteratorPrototype,j=D.BUGGY_SAFARI_ITERATORS,G=B("iterator"),X="keys",K="values",Y="entries",returnThis=function(){return this};r.exports=function(r,i,o,y,B,D,J){_(o,i,y);var $,ee,te,getIterationMethod=function(r){if(r===B&&ae)return ae;if(!j&&r in ie)return ie[r];switch(r){case X:return function keys(){return new o(this,r)};case K:return function values(){return new o(this,r)};case Y:return function entries(){return new o(this,r)}}return function(){return new o(this)}},re=i+" Iterator",ne=!1,ie=r.prototype,oe=ie[G]||ie["@@iterator"]||B&&ie[B],ae=!j&&oe||getIterationMethod(B),se="Array"==i&&ie.entries||oe;if(se&&($=x(se.call(new r)))!==Object.prototype&&$.next&&(g||x($)===U||(k?k($,U):w($[G])||I($,G,returnThis)),P($,re,!0,!0),g&&(R[re]=returnThis)),N&&B==K&&oe&&oe.name!==K&&(!g&&W?O(ie,"name",K):(ne=!0,ae=function values(){return p(oe,this)})),B)if(ee={values:getIterationMethod(K),keys:D?ae:getIterationMethod(X),entries:getIterationMethod(Y)},J)for(te in ee)(j||ne||!(te in ie))&&I(ie,te,ee[te]);else u({target:i,proto:!0,forced:j||ne},ee);return g&&!J||ie[G]===ae||I(ie,G,ae,{name:B}),R[i]=ae,ee}},7235:function(r,i,o){var u=o(857),p=o(2597),g=o(6061),y=o(3070).f;r.exports=function(r){var i=u.Symbol||(u.Symbol={});p(i,r)||y(i,r,{value:g.f(r)})}},9781:function(r,i,o){var u=o(7293);r.exports=!u((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},317:function(r,i,o){var u=o(7854),p=o(111),g=u.document,y=p(g)&&p(g.createElement);r.exports=function(r){return y?g.createElement(r):{}}},8324:function(r){r.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},8509:function(r,i,o){var u=o(317)("span").classList,p=u&&u.constructor&&u.constructor.prototype;r.exports=p===Object.prototype?void 0:p},8886:function(r,i,o){var u=o(8113).match(/firefox\/(\d+)/i);r.exports=!!u&&+u[1]},7871:function(r){r.exports="object"==typeof window},256:function(r,i,o){var u=o(8113);r.exports=/MSIE|Trident/.test(u)},1528:function(r,i,o){var u=o(8113),p=o(7854);r.exports=/ipad|iphone|ipod/i.test(u)&&void 0!==p.Pebble},6833:function(r,i,o){var u=o(8113);r.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(u)},5268:function(r,i,o){var u=o(4326),p=o(7854);r.exports="process"==u(p.process)},1036:function(r,i,o){var u=o(8113);r.exports=/web0s(?!.*chrome)/i.test(u)},8113:function(r,i,o){var u=o(5005);r.exports=u("navigator","userAgent")||""},7392:function(r,i,o){var u,p,g=o(7854),y=o(8113),w=g.process,_=g.Deno,x=w&&w.versions||_&&_.version,k=x&&x.v8;k&&(p=(u=k.split("."))[0]>0&&u[0]<4?1:+(u[0]+u[1])),!p&&y&&(!(u=y.match(/Edge\/(\d+)/))||u[1]>=74)&&(u=y.match(/Chrome\/(\d+)/))&&(p=+u[1]),r.exports=p},8008:function(r,i,o){var u=o(8113).match(/AppleWebKit\/(\d+)\./);r.exports=!!u&&+u[1]},748:function(r){r.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2914:function(r,i,o){var u=o(7293),p=o(9114);r.exports=!u((function(){var r=Error("a");return!("stack"in r)||(Object.defineProperty(r,"stack",p(1,7)),7!==r.stack)}))},2109:function(r,i,o){var u=o(7854),p=o(1236).f,g=o(8880),y=o(1320),w=o(3505),_=o(9920),x=o(4705);r.exports=function(r,i){var o,k,P,O,I,B=r.target,R=r.global,D=r.stat;if(o=R?u:D?u[B]||w(B,{}):(u[B]||{}).prototype)for(k in i){if(O=i[k],P=r.noTargetGet?(I=p(o,k))&&I.value:o[k],!x(R?k:B+(D?".":"#")+k,r.forced)&&void 0!==P){if(typeof O==typeof P)continue;_(O,P)}(r.sham||P&&P.sham)&&g(O,"sham",!0),y(o,k,O,r)}}},7293:function(r){r.exports=function(r){try{return!!r()}catch(r){return!0}}},7007:function(r,i,o){"use strict";o(4916);var u=o(1702),p=o(1320),g=o(2261),y=o(7293),w=o(5112),_=o(8880),x=w("species"),k=RegExp.prototype;r.exports=function(r,i,o,P){var O=w(r),I=!y((function(){var i={};return i[O]=function(){return 7},7!=""[r](i)})),B=I&&!y((function(){var i=!1,o=/a/;return"split"===r&&((o={}).constructor={},o.constructor[x]=function(){return o},o.flags="",o[O]=/./[O]),o.exec=function(){return i=!0,null},o[O](""),!i}));if(!I||!B||o){var R=u(/./[O]),D=i(O,""[r],(function(r,i,o,p,y){var w=u(r),_=i.exec;return _===g||_===k.exec?I&&!y?{done:!0,value:R(i,o,p)}:{done:!0,value:w(o,i,p)}:{done:!1}}));p(String.prototype,r,D[0]),p(k,O,D[1])}P&&_(k[O],"sham",!0)}},6677:function(r,i,o){var u=o(7293);r.exports=!u((function(){return Object.isExtensible(Object.preventExtensions({}))}))},2104:function(r){var i=Function.prototype,o=i.apply,u=i.bind,p=i.call;r.exports="object"==typeof Reflect&&Reflect.apply||(u?p.bind(o):function(){return p.apply(o,arguments)})},9974:function(r,i,o){var u=o(1702),p=o(9662),g=u(u.bind);r.exports=function(r,i){return p(r),void 0===i?r:g?g(r,i):function(){return r.apply(i,arguments)}}},7065:function(r,i,o){"use strict";var u=o(7854),p=o(1702),g=o(9662),y=o(111),w=o(2597),_=o(206),x=u.Function,k=p([].concat),P=p([].join),O={},construct=function(r,i,o){if(!w(O,i)){for(var u=[],p=0;p]*>)/g,k=/\$([$&'`]|\d{1,2})/g;r.exports=function(r,i,o,u,P,O){var I=o+r.length,B=u.length,R=k;return void 0!==P&&(P=p(P),R=x),w(O,R,(function(p,w){var x;switch(y(w,0)){case"$":return"$";case"&":return r;case"`":return _(i,0,o);case"'":return _(i,I);case"<":x=P[_(w,1,-1)];break;default:var k=+w;if(0===k)return p;if(k>B){var O=g(k/10);return 0===O?p:O<=B?void 0===u[O-1]?y(w,1):u[O-1]+y(w,1):p}x=u[k-1]}return void 0===x?"":x}))}},7854:function(r,i,o){var check=function(r){return r&&r.Math==Math&&r};r.exports=check("object"==typeof globalThis&&globalThis)||check("object"==typeof window&&window)||check("object"==typeof self&&self)||check("object"==typeof o.g&&o.g)||function(){return this}()||Function("return this")()},2597:function(r,i,o){var u=o(1702),p=o(7908),g=u({}.hasOwnProperty);r.exports=Object.hasOwn||function hasOwn(r,i){return g(p(r),i)}},3501:function(r){r.exports={}},842:function(r,i,o){var u=o(7854);r.exports=function(r,i){var o=u.console;o&&o.error&&(1==arguments.length?o.error(r):o.error(r,i))}},490:function(r,i,o){var u=o(5005);r.exports=u("document","documentElement")},4664:function(r,i,o){var u=o(9781),p=o(7293),g=o(317);r.exports=!u&&!p((function(){return 7!=Object.defineProperty(g("div"),"a",{get:function(){return 7}}).a}))},1179:function(r,i,o){var u=o(7854).Array,p=Math.abs,g=Math.pow,y=Math.floor,w=Math.log,_=Math.LN2;r.exports={pack:function(r,i,o){var x,k,P,O=u(o),I=8*o-i-1,B=(1<>1,D=23===i?g(2,-24)-g(2,-77):0,N=r<0||0===r&&1/r<0?1:0,W=0;for((r=p(r))!=r||r===1/0?(k=r!=r?1:0,x=B):(x=y(w(r)/_),r*(P=g(2,-x))<1&&(x--,P*=2),(r+=x+R>=1?D/P:D*g(2,1-R))*P>=2&&(x++,P/=2),x+R>=B?(k=0,x=B):x+R>=1?(k=(r*P-1)*g(2,i),x+=R):(k=r*g(2,R-1)*g(2,i),x=0));i>=8;O[W++]=255&k,k/=256,i-=8);for(x=x<0;O[W++]=255&x,x/=256,I-=8);return O[--W]|=128*N,O},unpack:function(r,i){var o,u=r.length,p=8*u-i-1,y=(1<>1,_=p-7,x=u-1,k=r[x--],P=127&k;for(k>>=7;_>0;P=256*P+r[x],x--,_-=8);for(o=P&(1<<-_)-1,P>>=-_,_+=i;_>0;o=256*o+r[x],x--,_-=8);if(0===P)P=1-w;else{if(P===y)return o?NaN:k?-1/0:1/0;o+=g(2,i),P-=w}return(k?-1:1)*o*g(2,P-i)}}},8361:function(r,i,o){var u=o(7854),p=o(1702),g=o(7293),y=o(4326),w=u.Object,_=p("".split);r.exports=g((function(){return!w("z").propertyIsEnumerable(0)}))?function(r){return"String"==y(r)?_(r,""):w(r)}:w},9587:function(r,i,o){var u=o(614),p=o(111),g=o(7674);r.exports=function(r,i,o){var y,w;return g&&u(y=i.constructor)&&y!==o&&p(w=y.prototype)&&w!==o.prototype&&g(r,w),r}},2788:function(r,i,o){var u=o(1702),p=o(614),g=o(5465),y=u(Function.toString);p(g.inspectSource)||(g.inspectSource=function(r){return y(r)}),r.exports=g.inspectSource},8340:function(r,i,o){var u=o(111),p=o(8880);r.exports=function(r,i){u(i)&&"cause"in i&&p(r,"cause",i.cause)}},2423:function(r,i,o){var u=o(2109),p=o(1702),g=o(3501),y=o(111),w=o(2597),_=o(3070).f,x=o(8006),k=o(1156),P=o(9711),O=o(6677),I=!1,B=P("meta"),R=0,D=Object.isExtensible||function(){return!0},setMetadata=function(r){_(r,B,{value:{objectID:"O"+R++,weakData:{}}})},N=r.exports={enable:function(){N.enable=function(){},I=!0;var r=x.f,i=p([].splice),o={};o[B]=1,r(o).length&&(x.f=function(o){for(var u=r(o),p=0,g=u.length;pN;N++)if((U=callFn(r[N]))&&k(R,U))return U;return new Result(!1)}u=P(r,D)}for(j=u.next;!(G=g(j,u)).done;){try{U=callFn(G.value)}catch(r){I(u,"throw",r)}if("object"==typeof U&&U&&k(R,U))return U}return new Result(!1)}},9212:function(r,i,o){var u=o(6916),p=o(9670),g=o(8173);r.exports=function(r,i,o){var y,w;p(r);try{if(!(y=g(r,"return"))){if("throw"===i)throw o;return o}y=u(y,r)}catch(r){w=!0,y=r}if("throw"===i)throw o;if(w)throw y;return p(y),o}},3383:function(r,i,o){"use strict";var u,p,g,y=o(7293),w=o(614),_=o(30),x=o(9518),k=o(1320),P=o(5112),O=o(1913),I=P("iterator"),B=!1;[].keys&&("next"in(g=[].keys())?(p=x(x(g)))!==Object.prototype&&(u=p):B=!0),null==u||y((function(){var r={};return u[I].call(r)!==r}))?u={}:O&&(u=_(u)),w(u[I])||k(u,I,(function(){return this})),r.exports={IteratorPrototype:u,BUGGY_SAFARI_ITERATORS:B}},7497:function(r){r.exports={}},6244:function(r,i,o){var u=o(7466);r.exports=function(r){return u(r.length)}},5948:function(r,i,o){var u,p,g,y,w,_,x,k,P=o(7854),O=o(9974),I=o(1236).f,B=o(261).set,R=o(6833),D=o(1528),N=o(1036),W=o(5268),U=P.MutationObserver||P.WebKitMutationObserver,j=P.document,G=P.process,X=P.Promise,K=I(P,"queueMicrotask"),Y=K&&K.value;Y||(u=function(){var r,i;for(W&&(r=G.domain)&&r.exit();p;){i=p.fn,p=p.next;try{i()}catch(r){throw p?y():g=void 0,r}}g=void 0,r&&r.enter()},R||W||N||!U||!j?!D&&X&&X.resolve?((x=X.resolve(void 0)).constructor=X,k=O(x.then,x),y=function(){k(u)}):W?y=function(){G.nextTick(u)}:(B=O(B,P),y=function(){B(u)}):(w=!0,_=j.createTextNode(""),new U(u).observe(_,{characterData:!0}),y=function(){_.data=w=!w})),r.exports=Y||function(r){var i={fn:r,next:void 0};g&&(g.next=i),p||(p=i,y()),g=i}},3366:function(r,i,o){var u=o(7854);r.exports=u.Promise},133:function(r,i,o){var u=o(7392),p=o(7293);r.exports=!!Object.getOwnPropertySymbols&&!p((function(){var r=Symbol();return!String(r)||!(Object(r)instanceof Symbol)||!Symbol.sham&&u&&u<41}))},8536:function(r,i,o){var u=o(7854),p=o(614),g=o(2788),y=u.WeakMap;r.exports=p(y)&&/native code/.test(g(y))},8523:function(r,i,o){"use strict";var u=o(9662),PromiseCapability=function(r){var i,o;this.promise=new r((function(r,u){if(void 0!==i||void 0!==o)throw TypeError("Bad Promise constructor");i=r,o=u})),this.resolve=u(i),this.reject=u(o)};r.exports.f=function(r){return new PromiseCapability(r)}},6277:function(r,i,o){var u=o(1340);r.exports=function(r,i){return void 0===r?arguments.length<2?"":i:u(r)}},3929:function(r,i,o){var u=o(7854),p=o(7850),g=u.TypeError;r.exports=function(r){if(p(r))throw g("The method doesn't accept regular expressions");return r}},7023:function(r,i,o){var u=o(7854).isFinite;r.exports=Number.isFinite||function isFinite(r){return"number"==typeof r&&u(r)}},1574:function(r,i,o){"use strict";var u=o(9781),p=o(1702),g=o(6916),y=o(7293),w=o(1956),_=o(5181),x=o(5296),k=o(7908),P=o(8361),O=Object.assign,I=Object.defineProperty,B=p([].concat);r.exports=!O||y((function(){if(u&&1!==O({b:1},O(I({},"a",{enumerable:!0,get:function(){I(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var r={},i={},o=Symbol(),p="abcdefghijklmnopqrst";return r[o]=7,p.split("").forEach((function(r){i[r]=r})),7!=O({},r)[o]||w(O({},i)).join("")!=p}))?function assign(r,i){for(var o=k(r),p=arguments.length,y=1,O=_.f,I=x.f;p>y;)for(var R,D=P(arguments[y++]),N=O?B(w(D),O(D)):w(D),W=N.length,U=0;W>U;)R=N[U++],u&&!g(I,D,R)||(o[R]=D[R]);return o}:O},30:function(r,i,o){var u,p=o(9670),g=o(6048),y=o(748),w=o(3501),_=o(490),x=o(317),k=o(6200),P=k("IE_PROTO"),EmptyConstructor=function(){},scriptTag=function(r){return"'; + }; + var dataToHtml = function (editor, dataIn) { + var data = global$8.extend({}, dataIn); + if (!data.source) { + global$8.extend(data, htmlToData(getScripts(editor), data.embed)); + if (!data.source) { + return ''; + } + } + if (!data.altsource) { + data.altsource = ''; + } + if (!data.poster) { + data.poster = ''; + } + data.source = editor.convertURL(data.source, 'source'); + data.altsource = editor.convertURL(data.altsource, 'source'); + data.sourcemime = guess(data.source); + data.altsourcemime = guess(data.altsource); + data.poster = editor.convertURL(data.poster, 'poster'); + var pattern = matchPattern(data.source); + if (pattern) { + data.source = pattern.url; + data.type = pattern.type; + data.allowfullscreen = pattern.allowFullscreen; + data.width = data.width || String(pattern.w); + data.height = data.height || String(pattern.h); + } + if (data.embed) { + return updateHtml(data.embed, data, true); + } else { + var videoScript = getVideoScriptMatch(getScripts(editor), data.source); + if (videoScript) { + data.type = 'script'; + data.width = String(videoScript.width); + data.height = String(videoScript.height); + } + var audioTemplateCallback = getAudioTemplateCallback(editor); + var videoTemplateCallback = getVideoTemplateCallback(editor); + data.width = data.width || '300'; + data.height = data.height || '150'; + global$8.each(data, function (value, key) { + data[key] = editor.dom.encode('' + value); + }); + if (data.type === 'iframe') { + return getIframeHtml(data); + } else if (data.sourcemime === 'application/x-shockwave-flash') { + return getFlashHtml(data); + } else if (data.sourcemime.indexOf('audio') !== -1) { + return getAudioHtml(data, audioTemplateCallback); + } else if (data.type === 'script') { + return getScriptHtml(data); + } else { + return getVideoHtml(data, videoTemplateCallback); + } + } + }; + + var isMediaElement = function (element) { + return element.hasAttribute('data-mce-object') || element.hasAttribute('data-ephox-embed-iri'); + }; + var setup$2 = function (editor) { + editor.on('click keyup touchend', function () { + var selectedNode = editor.selection.getNode(); + if (selectedNode && editor.dom.hasClass(selectedNode, 'mce-preview-object')) { + if (editor.dom.getAttrib(selectedNode, 'data-mce-selected')) { + selectedNode.setAttribute('data-mce-selected', '2'); + } + } + }); + editor.on('ObjectSelected', function (e) { + var objectType = e.target.getAttribute('data-mce-object'); + if (objectType === 'script') { + e.preventDefault(); + } + }); + editor.on('ObjectResized', function (e) { + var target = e.target; + if (target.getAttribute('data-mce-object')) { + var html = target.getAttribute('data-mce-html'); + if (html) { + html = unescape(html); + target.setAttribute('data-mce-html', escape(updateHtml(html, { + width: String(e.width), + height: String(e.height) + }))); + } + } + }); + }; + + var global$3 = tinymce.util.Tools.resolve('tinymce.util.Promise'); + + var cache = {}; + var embedPromise = function (data, dataToHtml, handler) { + return new global$3(function (res, rej) { + var wrappedResolve = function (response) { + if (response.html) { + cache[data.source] = response; + } + return res({ + url: data.source, + html: response.html ? response.html : dataToHtml(data) + }); + }; + if (cache[data.source]) { + wrappedResolve(cache[data.source]); + } else { + handler({ url: data.source }, wrappedResolve, rej); + } + }); + }; + var defaultPromise = function (data, dataToHtml) { + return global$3.resolve({ + html: dataToHtml(data), + url: data.source + }); + }; + var loadedData = function (editor) { + return function (data) { + return dataToHtml(editor, data); + }; + }; + var getEmbedHtml = function (editor, data) { + var embedHandler = getUrlResolver(editor); + return embedHandler ? embedPromise(data, loadedData(editor), embedHandler) : defaultPromise(data, loadedData(editor)); + }; + var isCached = function (url) { + return has(cache, url); + }; + + var extractMeta = function (sourceInput, data) { + return get$1(data, sourceInput).bind(function (mainData) { + return get$1(mainData, 'meta'); + }); + }; + var getValue = function (data, metaData, sourceInput) { + return function (prop) { + var _a; + var getFromData = function () { + return get$1(data, prop); + }; + var getFromMetaData = function () { + return get$1(metaData, prop); + }; + var getNonEmptyValue = function (c) { + return get$1(c, 'value').bind(function (v) { + return v.length > 0 ? Optional.some(v) : Optional.none(); + }); + }; + var getFromValueFirst = function () { + return getFromData().bind(function (child) { + return isObject(child) ? getNonEmptyValue(child).orThunk(getFromMetaData) : getFromMetaData().orThunk(function () { + return Optional.from(child); + }); + }); + }; + var getFromMetaFirst = function () { + return getFromMetaData().orThunk(function () { + return getFromData().bind(function (child) { + return isObject(child) ? getNonEmptyValue(child) : Optional.from(child); + }); + }); + }; + return _a = {}, _a[prop] = (prop === sourceInput ? getFromValueFirst() : getFromMetaFirst()).getOr(''), _a; + }; + }; + var getDimensions = function (data, metaData) { + var dimensions = {}; + get$1(data, 'dimensions').each(function (dims) { + each$1([ + 'width', + 'height' + ], function (prop) { + get$1(metaData, prop).orThunk(function () { + return get$1(dims, prop); + }).each(function (value) { + return dimensions[prop] = value; + }); + }); + }); + return dimensions; + }; + var unwrap = function (data, sourceInput) { + var metaData = sourceInput ? extractMeta(sourceInput, data).getOr({}) : {}; + var get = getValue(data, metaData, sourceInput); + return __assign(__assign(__assign(__assign(__assign({}, get('source')), get('altsource')), get('poster')), get('embed')), getDimensions(data, metaData)); + }; + var wrap = function (data) { + var wrapped = __assign(__assign({}, data), { + source: { value: get$1(data, 'source').getOr('') }, + altsource: { value: get$1(data, 'altsource').getOr('') }, + poster: { value: get$1(data, 'poster').getOr('') } + }); + each$1([ + 'width', + 'height' + ], function (prop) { + get$1(data, prop).each(function (value) { + var dimensions = wrapped.dimensions || {}; + dimensions[prop] = value; + wrapped.dimensions = dimensions; + }); + }); + return wrapped; + }; + var handleError = function (editor) { + return function (error) { + var errorMessage = error && error.msg ? 'Media embed handler error: ' + error.msg : 'Media embed handler threw unknown error.'; + editor.notificationManager.open({ + type: 'error', + text: errorMessage + }); + }; + }; + var snippetToData = function (editor, embedSnippet) { + return htmlToData(getScripts(editor), embedSnippet); + }; + var getEditorData = function (editor) { + var element = editor.selection.getNode(); + var snippet = isMediaElement(element) ? editor.serializer.serialize(element, { selection: true }) : ''; + return __assign({ embed: snippet }, htmlToData(getScripts(editor), snippet)); + }; + var addEmbedHtml = function (api, editor) { + return function (response) { + if (isString(response.url) && response.url.trim().length > 0) { + var html = response.html; + var snippetData = snippetToData(editor, html); + var nuData = __assign(__assign({}, snippetData), { + source: response.url, + embed: html + }); + api.setData(wrap(nuData)); + } + }; + }; + var selectPlaceholder = function (editor, beforeObjects) { + var afterObjects = editor.dom.select('*[data-mce-object]'); + for (var i = 0; i < beforeObjects.length; i++) { + for (var y = afterObjects.length - 1; y >= 0; y--) { + if (beforeObjects[i] === afterObjects[y]) { + afterObjects.splice(y, 1); + } + } + } + editor.selection.select(afterObjects[0]); + }; + var handleInsert = function (editor, html) { + var beforeObjects = editor.dom.select('*[data-mce-object]'); + editor.insertContent(html); + selectPlaceholder(editor, beforeObjects); + editor.nodeChanged(); + }; + var submitForm = function (prevData, newData, editor) { + newData.embed = updateHtml(newData.embed, newData); + if (newData.embed && (prevData.source === newData.source || isCached(newData.source))) { + handleInsert(editor, newData.embed); + } else { + getEmbedHtml(editor, newData).then(function (response) { + handleInsert(editor, response.html); + }).catch(handleError(editor)); + } + }; + var showDialog = function (editor) { + var editorData = getEditorData(editor); + var currentData = Cell(editorData); + var initialData = wrap(editorData); + var handleSource = function (prevData, api) { + var serviceData = unwrap(api.getData(), 'source'); + if (prevData.source !== serviceData.source) { + addEmbedHtml(win, editor)({ + url: serviceData.source, + html: '' + }); + getEmbedHtml(editor, serviceData).then(addEmbedHtml(win, editor)).catch(handleError(editor)); + } + }; + var handleEmbed = function (api) { + var data = unwrap(api.getData()); + var dataFromEmbed = snippetToData(editor, data.embed); + api.setData(wrap(dataFromEmbed)); + }; + var handleUpdate = function (api, sourceInput) { + var data = unwrap(api.getData(), sourceInput); + var embed = dataToHtml(editor, data); + api.setData(wrap(__assign(__assign({}, data), { embed: embed }))); + }; + var mediaInput = [{ + name: 'source', + type: 'urlinput', + filetype: 'media', + label: 'Source' + }]; + var sizeInput = !hasDimensions(editor) ? [] : [{ + type: 'sizeinput', + name: 'dimensions', + label: 'Constrain proportions', + constrain: true + }]; + var generalTab = { + title: 'General', + name: 'general', + items: flatten([ + mediaInput, + sizeInput + ]) + }; + var embedTextarea = { + type: 'textarea', + name: 'embed', + label: 'Paste your embed code below:' + }; + var embedTab = { + title: 'Embed', + items: [embedTextarea] + }; + var advancedFormItems = []; + if (hasAltSource(editor)) { + advancedFormItems.push({ + name: 'altsource', + type: 'urlinput', + filetype: 'media', + label: 'Alternative source URL' + }); + } + if (hasPoster(editor)) { + advancedFormItems.push({ + name: 'poster', + type: 'urlinput', + filetype: 'image', + label: 'Media poster (Image URL)' + }); + } + var advancedTab = { + title: 'Advanced', + name: 'advanced', + items: advancedFormItems + }; + var tabs = [ + generalTab, + embedTab + ]; + if (advancedFormItems.length > 0) { + tabs.push(advancedTab); + } + var body = { + type: 'tabpanel', + tabs: tabs + }; + var win = editor.windowManager.open({ + title: 'Insert/Edit Media', + size: 'normal', + body: body, + buttons: [ + { + type: 'cancel', + name: 'cancel', + text: 'Cancel' + }, + { + type: 'submit', + name: 'save', + text: 'Save', + primary: true + } + ], + onSubmit: function (api) { + var serviceData = unwrap(api.getData()); + submitForm(currentData.get(), serviceData, editor); + api.close(); + }, + onChange: function (api, detail) { + switch (detail.name) { + case 'source': + handleSource(currentData.get(), api); + break; + case 'embed': + handleEmbed(api); + break; + case 'dimensions': + case 'altsource': + case 'poster': + handleUpdate(api, detail.name); + break; + } + currentData.set(unwrap(api.getData())); + }, + initialData: initialData + }); + }; + + var get = function (editor) { + var showDialog$1 = function () { + showDialog(editor); + }; + return { showDialog: showDialog$1 }; + }; + + var register$1 = function (editor) { + var showDialog$1 = function () { + showDialog(editor); + }; + editor.addCommand('mceMedia', showDialog$1); + }; + + var global$2 = tinymce.util.Tools.resolve('tinymce.html.Node'); + + var global$1 = tinymce.util.Tools.resolve('tinymce.Env'); + + var global = tinymce.util.Tools.resolve('tinymce.html.DomParser'); + + var sanitize = function (editor, html) { + if (shouldFilterHtml(editor) === false) { + return html; + } + var writer = global$4(); + var blocked; + global$6({ + validate: false, + allow_conditional_comments: false, + comment: function (text) { + if (!blocked) { + writer.comment(text); + } + }, + cdata: function (text) { + if (!blocked) { + writer.cdata(text); + } + }, + text: function (text, raw) { + if (!blocked) { + writer.text(text, raw); + } + }, + start: function (name, attrs, empty) { + blocked = true; + if (name === 'script' || name === 'noscript' || name === 'svg') { + return; + } + for (var i = attrs.length - 1; i >= 0; i--) { + var attrName = attrs[i].name; + if (attrName.indexOf('on') === 0) { + delete attrs.map[attrName]; + attrs.splice(i, 1); + } + if (attrName === 'style') { + attrs[i].value = editor.dom.serializeStyle(editor.dom.parseStyle(attrs[i].value), name); + } + } + writer.start(name, attrs, empty); + blocked = false; + }, + end: function (name) { + if (blocked) { + return; + } + writer.end(name); + } + }, global$5({})).parse(html); + return writer.getContent(); + }; + + var isLiveEmbedNode = function (node) { + var name = node.name; + return name === 'iframe' || name === 'video' || name === 'audio'; + }; + var getDimension = function (node, styles, dimension, defaultValue) { + if (defaultValue === void 0) { + defaultValue = null; + } + var value = node.attr(dimension); + if (isNonNullable(value)) { + return value; + } else if (!has(styles, dimension)) { + return defaultValue; + } else { + return null; + } + }; + var setDimensions = function (node, previewNode, styles) { + var useDefaults = previewNode.name === 'img' || node.name === 'video'; + var defaultWidth = useDefaults ? '300' : null; + var fallbackHeight = node.name === 'audio' ? '30' : '150'; + var defaultHeight = useDefaults ? fallbackHeight : null; + previewNode.attr({ + width: getDimension(node, styles, 'width', defaultWidth), + height: getDimension(node, styles, 'height', defaultHeight) + }); + }; + var appendNodeContent = function (editor, nodeName, previewNode, html) { + var newNode = global({ + forced_root_block: false, + validate: false + }, editor.schema).parse(html, { context: nodeName }); + while (newNode.firstChild) { + previewNode.append(newNode.firstChild); + } + }; + var createPlaceholderNode = function (editor, node) { + var name = node.name; + var placeHolder = new global$2('img', 1); + placeHolder.shortEnded = true; + retainAttributesAndInnerHtml(editor, node, placeHolder); + setDimensions(node, placeHolder, {}); + placeHolder.attr({ + 'style': node.attr('style'), + 'src': global$1.transparentSrc, + 'data-mce-object': name, + 'class': 'mce-object mce-object-' + name + }); + return placeHolder; + }; + var createPreviewNode = function (editor, node) { + var name = node.name; + var previewWrapper = new global$2('span', 1); + previewWrapper.attr({ + 'contentEditable': 'false', + 'style': node.attr('style'), + 'data-mce-object': name, + 'class': 'mce-preview-object mce-object-' + name + }); + retainAttributesAndInnerHtml(editor, node, previewWrapper); + var styles = editor.dom.parseStyle(node.attr('style')); + var previewNode = new global$2(name, 1); + setDimensions(node, previewNode, styles); + previewNode.attr({ + src: node.attr('src'), + style: node.attr('style'), + class: node.attr('class') + }); + if (name === 'iframe') { + previewNode.attr({ + allowfullscreen: node.attr('allowfullscreen'), + frameborder: '0' + }); + } else { + var attrs = [ + 'controls', + 'crossorigin', + 'currentTime', + 'loop', + 'muted', + 'poster', + 'preload' + ]; + each$1(attrs, function (attrName) { + previewNode.attr(attrName, node.attr(attrName)); + }); + var sanitizedHtml = previewWrapper.attr('data-mce-html'); + if (isNonNullable(sanitizedHtml)) { + appendNodeContent(editor, name, previewNode, unescape(sanitizedHtml)); + } + } + var shimNode = new global$2('span', 1); + shimNode.attr('class', 'mce-shim'); + previewWrapper.append(previewNode); + previewWrapper.append(shimNode); + return previewWrapper; + }; + var retainAttributesAndInnerHtml = function (editor, sourceNode, targetNode) { + var attribs = sourceNode.attributes; + var ai = attribs.length; + while (ai--) { + var attrName = attribs[ai].name; + var attrValue = attribs[ai].value; + if (attrName !== 'width' && attrName !== 'height' && attrName !== 'style') { + if (attrName === 'data' || attrName === 'src') { + attrValue = editor.convertURL(attrValue, attrName); + } + targetNode.attr('data-mce-p-' + attrName, attrValue); + } + } + var innerHtml = sourceNode.firstChild && sourceNode.firstChild.value; + if (innerHtml) { + targetNode.attr('data-mce-html', escape(sanitize(editor, innerHtml))); + targetNode.firstChild = null; + } + }; + var isPageEmbedWrapper = function (node) { + var nodeClass = node.attr('class'); + return nodeClass && /\btiny-pageembed\b/.test(nodeClass); + }; + var isWithinEmbedWrapper = function (node) { + while (node = node.parent) { + if (node.attr('data-ephox-embed-iri') || isPageEmbedWrapper(node)) { + return true; + } + } + return false; + }; + var placeHolderConverter = function (editor) { + return function (nodes) { + var i = nodes.length; + var node; + var videoScript; + while (i--) { + node = nodes[i]; + if (!node.parent) { + continue; + } + if (node.parent.attr('data-mce-object')) { + continue; + } + if (node.name === 'script') { + videoScript = getVideoScriptMatch(getScripts(editor), node.attr('src')); + if (!videoScript) { + continue; + } + } + if (videoScript) { + if (videoScript.width) { + node.attr('width', videoScript.width.toString()); + } + if (videoScript.height) { + node.attr('height', videoScript.height.toString()); + } + } + if (isLiveEmbedNode(node) && hasLiveEmbeds(editor) && global$1.ceFalse) { + if (!isWithinEmbedWrapper(node)) { + node.replace(createPreviewNode(editor, node)); + } + } else { + if (!isWithinEmbedWrapper(node)) { + node.replace(createPlaceholderNode(editor, node)); + } + } + } + }; + }; + + var setup$1 = function (editor) { + editor.on('preInit', function () { + var specialElements = editor.schema.getSpecialElements(); + global$8.each('video audio iframe object'.split(' '), function (name) { + specialElements[name] = new RegExp(']*>', 'gi'); + }); + var boolAttrs = editor.schema.getBoolAttrs(); + global$8.each('webkitallowfullscreen mozallowfullscreen allowfullscreen'.split(' '), function (name) { + boolAttrs[name] = {}; + }); + editor.parser.addNodeFilter('iframe,video,audio,object,embed,script', placeHolderConverter(editor)); + editor.serializer.addAttributeFilter('data-mce-object', function (nodes, name) { + var i = nodes.length; + var node; + var realElm; + var ai; + var attribs; + var innerHtml; + var innerNode; + var realElmName; + var className; + while (i--) { + node = nodes[i]; + if (!node.parent) { + continue; + } + realElmName = node.attr(name); + realElm = new global$2(realElmName, 1); + if (realElmName !== 'audio' && realElmName !== 'script') { + className = node.attr('class'); + if (className && className.indexOf('mce-preview-object') !== -1) { + realElm.attr({ + width: node.firstChild.attr('width'), + height: node.firstChild.attr('height') + }); + } else { + realElm.attr({ + width: node.attr('width'), + height: node.attr('height') + }); + } + } + realElm.attr({ style: node.attr('style') }); + attribs = node.attributes; + ai = attribs.length; + while (ai--) { + var attrName = attribs[ai].name; + if (attrName.indexOf('data-mce-p-') === 0) { + realElm.attr(attrName.substr(11), attribs[ai].value); + } + } + if (realElmName === 'script') { + realElm.attr('type', 'text/javascript'); + } + innerHtml = node.attr('data-mce-html'); + if (innerHtml) { + innerNode = new global$2('#text', 3); + innerNode.raw = true; + innerNode.value = sanitize(editor, unescape(innerHtml)); + realElm.append(innerNode); + } + node.replace(realElm); + } + }); + }); + editor.on('SetContent', function () { + editor.$('span.mce-preview-object').each(function (index, elm) { + var $elm = editor.$(elm); + if ($elm.find('span.mce-shim').length === 0) { + $elm.append(''); + } + }); + }); + }; + + var setup = function (editor) { + editor.on('ResolveName', function (e) { + var name; + if (e.target.nodeType === 1 && (name = e.target.getAttribute('data-mce-object'))) { + e.name = name; + } + }); + }; + + var register = function (editor) { + var onAction = function () { + return editor.execCommand('mceMedia'); + }; + editor.ui.registry.addToggleButton('media', { + tooltip: 'Insert/edit media', + icon: 'embed', + onAction: onAction, + onSetup: function (buttonApi) { + var selection = editor.selection; + buttonApi.setActive(isMediaElement(selection.getNode())); + return selection.selectorChangedWithUnbind('img[data-mce-object],span[data-mce-object],div[data-ephox-embed-iri]', buttonApi.setActive).unbind; + } + }); + editor.ui.registry.addMenuItem('media', { + icon: 'embed', + text: 'Media...', + onAction: onAction + }); + }; + + function Plugin () { + global$9.add('media', function (editor) { + register$1(editor); + register(editor); + setup(editor); + setup$1(editor); + setup$2(editor); + return get(editor); + }); + } + + Plugin(); + +}()); + +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.6 (2022-10-19) + */ +(function () { + 'use strict'; + + var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var getKeyboardSpaces = function (editor) { + var spaces = editor.getParam('nonbreaking_force_tab', 0); + if (typeof spaces === 'boolean') { + return spaces === true ? 3 : 0; + } else { + return spaces; + } + }; + var wrapNbsps = function (editor) { + return editor.getParam('nonbreaking_wrap', true, 'boolean'); + }; + + var stringRepeat = function (string, repeats) { + var str = ''; + for (var index = 0; index < repeats; index++) { + str += string; + } + return str; + }; + var isVisualCharsEnabled = function (editor) { + return editor.plugins.visualchars ? editor.plugins.visualchars.isEnabled() : false; + }; + var insertNbsp = function (editor, times) { + var classes = function () { + return isVisualCharsEnabled(editor) ? 'mce-nbsp-wrap mce-nbsp' : 'mce-nbsp-wrap'; + }; + var nbspSpan = function () { + return '' + stringRepeat(' ', times) + ''; + }; + var shouldWrap = wrapNbsps(editor); + var html = shouldWrap || editor.plugins.visualchars ? nbspSpan() : stringRepeat(' ', times); + editor.undoManager.transact(function () { + return editor.insertContent(html); + }); + }; + + var register$1 = function (editor) { + editor.addCommand('mceNonBreaking', function () { + insertNbsp(editor, 1); + }); + }; + + var global = tinymce.util.Tools.resolve('tinymce.util.VK'); + + var setup = function (editor) { + var spaces = getKeyboardSpaces(editor); + if (spaces > 0) { + editor.on('keydown', function (e) { + if (e.keyCode === global.TAB && !e.isDefaultPrevented()) { + if (e.shiftKey) { + return; + } + e.preventDefault(); + e.stopImmediatePropagation(); + insertNbsp(editor, spaces); + } + }); + } + }; + + var register = function (editor) { + var onAction = function () { + return editor.execCommand('mceNonBreaking'); + }; + editor.ui.registry.addButton('nonbreaking', { + icon: 'non-breaking', + tooltip: 'Nonbreaking space', + onAction: onAction + }); + editor.ui.registry.addMenuItem('nonbreaking', { + icon: 'non-breaking', + text: 'Nonbreaking space', + onAction: onAction + }); + }; + + function Plugin () { + global$1.add('nonbreaking', function (editor) { + register$1(editor); + register(editor); + setup(editor); + }); + } + + Plugin(); + +}()); + +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.6 (2022-10-19) + */ +(function () { + 'use strict'; + + var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var global = tinymce.util.Tools.resolve('tinymce.util.Tools'); + + var getNonEditableClass = function (editor) { + return editor.getParam('noneditable_noneditable_class', 'mceNonEditable'); + }; + var getEditableClass = function (editor) { + return editor.getParam('noneditable_editable_class', 'mceEditable'); + }; + var getNonEditableRegExps = function (editor) { + var nonEditableRegExps = editor.getParam('noneditable_regexp', []); + if (nonEditableRegExps && nonEditableRegExps.constructor === RegExp) { + return [nonEditableRegExps]; + } else { + return nonEditableRegExps; + } + }; + + var hasClass = function (checkClassName) { + return function (node) { + return (' ' + node.attr('class') + ' ').indexOf(checkClassName) !== -1; + }; + }; + var replaceMatchWithSpan = function (editor, content, cls) { + return function (match) { + var args = arguments, index = args[args.length - 2]; + var prevChar = index > 0 ? content.charAt(index - 1) : ''; + if (prevChar === '"') { + return match; + } + if (prevChar === '>') { + var findStartTagIndex = content.lastIndexOf('<', index); + if (findStartTagIndex !== -1) { + var tagHtml = content.substring(findStartTagIndex, index); + if (tagHtml.indexOf('contenteditable="false"') !== -1) { + return match; + } + } + } + return '' + editor.dom.encode(typeof args[1] === 'string' ? args[1] : args[0]) + ''; + }; + }; + var convertRegExpsToNonEditable = function (editor, nonEditableRegExps, e) { + var i = nonEditableRegExps.length, content = e.content; + if (e.format === 'raw') { + return; + } + while (i--) { + content = content.replace(nonEditableRegExps[i], replaceMatchWithSpan(editor, content, getNonEditableClass(editor))); + } + e.content = content; + }; + var setup = function (editor) { + var contentEditableAttrName = 'contenteditable'; + var editClass = ' ' + global.trim(getEditableClass(editor)) + ' '; + var nonEditClass = ' ' + global.trim(getNonEditableClass(editor)) + ' '; + var hasEditClass = hasClass(editClass); + var hasNonEditClass = hasClass(nonEditClass); + var nonEditableRegExps = getNonEditableRegExps(editor); + editor.on('PreInit', function () { + if (nonEditableRegExps.length > 0) { + editor.on('BeforeSetContent', function (e) { + convertRegExpsToNonEditable(editor, nonEditableRegExps, e); + }); + } + editor.parser.addAttributeFilter('class', function (nodes) { + var i = nodes.length, node; + while (i--) { + node = nodes[i]; + if (hasEditClass(node)) { + node.attr(contentEditableAttrName, 'true'); + } else if (hasNonEditClass(node)) { + node.attr(contentEditableAttrName, 'false'); + } + } + }); + editor.serializer.addAttributeFilter(contentEditableAttrName, function (nodes) { + var i = nodes.length, node; + while (i--) { + node = nodes[i]; + if (!hasEditClass(node) && !hasNonEditClass(node)) { + continue; + } + if (nonEditableRegExps.length > 0 && node.attr('data-mce-content')) { + node.name = '#text'; + node.type = 3; + node.raw = true; + node.value = node.attr('data-mce-content'); + } else { + node.attr(contentEditableAttrName, null); + } + } + }); + }); + }; + + function Plugin () { + global$1.add('noneditable', function (editor) { + setup(editor); + }); + } + + Plugin(); + +}()); + +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.6 (2022-10-19) + */ +(function () { + 'use strict'; + + var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var global = tinymce.util.Tools.resolve('tinymce.Env'); + + var getSeparatorHtml = function (editor) { + return editor.getParam('pagebreak_separator', ''); + }; + var shouldSplitBlock = function (editor) { + return editor.getParam('pagebreak_split_block', false); + }; + + var pageBreakClass = 'mce-pagebreak'; + var getPlaceholderHtml = function (shouldSplitBlock) { + var html = ''; + return shouldSplitBlock ? '

' + html + '

' : html; + }; + var setup$1 = function (editor) { + var separatorHtml = getSeparatorHtml(editor); + var shouldSplitBlock$1 = function () { + return shouldSplitBlock(editor); + }; + var pageBreakSeparatorRegExp = new RegExp(separatorHtml.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, function (a) { + return '\\' + a; + }), 'gi'); + editor.on('BeforeSetContent', function (e) { + e.content = e.content.replace(pageBreakSeparatorRegExp, getPlaceholderHtml(shouldSplitBlock$1())); + }); + editor.on('PreInit', function () { + editor.serializer.addNodeFilter('img', function (nodes) { + var i = nodes.length, node, className; + while (i--) { + node = nodes[i]; + className = node.attr('class'); + if (className && className.indexOf(pageBreakClass) !== -1) { + var parentNode = node.parent; + if (editor.schema.getBlockElements()[parentNode.name] && shouldSplitBlock$1()) { + parentNode.type = 3; + parentNode.value = separatorHtml; + parentNode.raw = true; + node.remove(); + continue; + } + node.type = 3; + node.value = separatorHtml; + node.raw = true; + } + } + }); + }); + }; + + var register$1 = function (editor) { + editor.addCommand('mcePageBreak', function () { + editor.insertContent(getPlaceholderHtml(shouldSplitBlock(editor))); + }); + }; + + var setup = function (editor) { + editor.on('ResolveName', function (e) { + if (e.target.nodeName === 'IMG' && editor.dom.hasClass(e.target, pageBreakClass)) { + e.name = 'pagebreak'; + } + }); + }; + + var register = function (editor) { + var onAction = function () { + return editor.execCommand('mcePageBreak'); + }; + editor.ui.registry.addButton('pagebreak', { + icon: 'page-break', + tooltip: 'Page break', + onAction: onAction + }); + editor.ui.registry.addMenuItem('pagebreak', { + text: 'Page break', + icon: 'page-break', + onAction: onAction + }); + }; + + function Plugin () { + global$1.add('pagebreak', function (editor) { + register$1(editor); + register(editor); + setup$1(editor); + setup(editor); + }); + } + + Plugin(); + +}()); + +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.6 (2022-10-19) + */ +(function () { + 'use strict'; + + var Cell = function (initial) { + var value = initial; + var get = function () { + return value; + }; + var set = function (v) { + value = v; + }; + return { + get: get, + set: set + }; + }; + + var global$b = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var hasProPlugin = function (editor) { + if (editor.hasPlugin('powerpaste', true)) { + if (typeof window.console !== 'undefined' && window.console.log) { + window.console.log('PowerPaste is incompatible with Paste plugin! Remove \'paste\' from the \'plugins\' option.'); + } + return true; + } else { + return false; + } + }; + + var get = function (clipboard) { + return { clipboard: clipboard }; + }; + + var typeOf = function (x) { + var t = typeof x; + if (x === null) { + return 'null'; + } else if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) { + return 'array'; + } else if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) { + return 'string'; + } else { + return t; + } + }; + var isType = function (type) { + return function (value) { + return typeOf(value) === type; + }; + }; + var isSimpleType = function (type) { + return function (value) { + return typeof value === type; + }; + }; + var isArray = isType('array'); + var isNullable = function (a) { + return a === null || a === undefined; + }; + var isNonNullable = function (a) { + return !isNullable(a); + }; + var isFunction = isSimpleType('function'); + + var noop = function () { + }; + var constant = function (value) { + return function () { + return value; + }; + }; + var identity = function (x) { + return x; + }; + var never = constant(false); + var always = constant(true); + + var none = function () { + return NONE; + }; + var NONE = function () { + var call = function (thunk) { + return thunk(); + }; + var id = identity; + var me = { + fold: function (n, _s) { + return n(); + }, + isSome: never, + isNone: always, + getOr: id, + getOrThunk: call, + getOrDie: function (msg) { + throw new Error(msg || 'error: getOrDie called on none.'); + }, + getOrNull: constant(null), + getOrUndefined: constant(undefined), + or: id, + orThunk: call, + map: none, + each: noop, + bind: none, + exists: never, + forall: always, + filter: function () { + return none(); + }, + toArray: function () { + return []; + }, + toString: constant('none()') + }; + return me; + }(); + var some = function (a) { + var constant_a = constant(a); + var self = function () { + return me; + }; + var bind = function (f) { + return f(a); + }; + var me = { + fold: function (n, s) { + return s(a); + }, + isSome: always, + isNone: never, + getOr: constant_a, + getOrThunk: constant_a, + getOrDie: constant_a, + getOrNull: constant_a, + getOrUndefined: constant_a, + or: self, + orThunk: self, + map: function (f) { + return some(f(a)); + }, + each: function (f) { + f(a); + }, + bind: bind, + exists: bind, + forall: bind, + filter: function (f) { + return f(a) ? me : NONE; + }, + toArray: function () { + return [a]; + }, + toString: function () { + return 'some(' + a + ')'; + } + }; + return me; + }; + var from$1 = function (value) { + return value === null || value === undefined ? NONE : some(value); + }; + var Optional = { + some: some, + none: none, + from: from$1 + }; + + var nativeSlice = Array.prototype.slice; + var nativePush = Array.prototype.push; + var exists = function (xs, pred) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i)) { + return true; + } + } + return false; + }; + var map = function (xs, f) { + var len = xs.length; + var r = new Array(len); + for (var i = 0; i < len; i++) { + var x = xs[i]; + r[i] = f(x, i); + } + return r; + }; + var each = function (xs, f) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + f(x, i); + } + }; + var filter$1 = function (xs, pred) { + var r = []; + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i)) { + r.push(x); + } + } + return r; + }; + var foldl = function (xs, f, acc) { + each(xs, function (x, i) { + acc = f(acc, x, i); + }); + return acc; + }; + var flatten = function (xs) { + var r = []; + for (var i = 0, len = xs.length; i < len; ++i) { + if (!isArray(xs[i])) { + throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs); + } + nativePush.apply(r, xs[i]); + } + return r; + }; + var bind = function (xs, f) { + return flatten(map(xs, f)); + }; + var from = isFunction(Array.from) ? Array.from : function (x) { + return nativeSlice.call(x); + }; + + var __assign = function () { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + var singleton = function (doRevoke) { + var subject = Cell(Optional.none()); + var revoke = function () { + return subject.get().each(doRevoke); + }; + var clear = function () { + revoke(); + subject.set(Optional.none()); + }; + var isSet = function () { + return subject.get().isSome(); + }; + var get = function () { + return subject.get(); + }; + var set = function (s) { + revoke(); + subject.set(Optional.some(s)); + }; + return { + clear: clear, + isSet: isSet, + get: get, + set: set + }; + }; + var value = function () { + var subject = singleton(noop); + var on = function (f) { + return subject.get().each(f); + }; + return __assign(__assign({}, subject), { on: on }); + }; + + var checkRange = function (str, substr, start) { + return substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr; + }; + var startsWith = function (str, prefix) { + return checkRange(str, prefix, 0); + }; + var endsWith = function (str, suffix) { + return checkRange(str, suffix, str.length - suffix.length); + }; + var repeat = function (s, count) { + return count <= 0 ? '' : new Array(count + 1).join(s); + }; + + var global$a = tinymce.util.Tools.resolve('tinymce.Env'); + + var global$9 = tinymce.util.Tools.resolve('tinymce.util.Delay'); + + var global$8 = tinymce.util.Tools.resolve('tinymce.util.Promise'); + + var global$7 = tinymce.util.Tools.resolve('tinymce.util.VK'); + + var firePastePreProcess = function (editor, html, internal, isWordHtml) { + return editor.fire('PastePreProcess', { + content: html, + internal: internal, + wordContent: isWordHtml + }); + }; + var firePastePostProcess = function (editor, node, internal, isWordHtml) { + return editor.fire('PastePostProcess', { + node: node, + internal: internal, + wordContent: isWordHtml + }); + }; + var firePastePlainTextToggle = function (editor, state) { + return editor.fire('PastePlainTextToggle', { state: state }); + }; + var firePaste = function (editor, ieFake) { + return editor.fire('paste', { ieFake: ieFake }); + }; + + var global$6 = tinymce.util.Tools.resolve('tinymce.util.Tools'); + + var shouldBlockDrop = function (editor) { + return editor.getParam('paste_block_drop', false); + }; + var shouldPasteDataImages = function (editor) { + return editor.getParam('paste_data_images', false); + }; + var shouldFilterDrop = function (editor) { + return editor.getParam('paste_filter_drop', true); + }; + var getPreProcess = function (editor) { + return editor.getParam('paste_preprocess'); + }; + var getPostProcess = function (editor) { + return editor.getParam('paste_postprocess'); + }; + var getWebkitStyles = function (editor) { + return editor.getParam('paste_webkit_styles'); + }; + var shouldRemoveWebKitStyles = function (editor) { + return editor.getParam('paste_remove_styles_if_webkit', true); + }; + var shouldMergeFormats = function (editor) { + return editor.getParam('paste_merge_formats', true); + }; + var isSmartPasteEnabled = function (editor) { + return editor.getParam('smart_paste', true); + }; + var isPasteAsTextEnabled = function (editor) { + return editor.getParam('paste_as_text', false); + }; + var getRetainStyleProps = function (editor) { + return editor.getParam('paste_retain_style_properties'); + }; + var getWordValidElements = function (editor) { + var defaultValidElements = '-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,' + '-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,' + 'td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody'; + return editor.getParam('paste_word_valid_elements', defaultValidElements); + }; + var shouldConvertWordFakeLists = function (editor) { + return editor.getParam('paste_convert_word_fake_lists', true); + }; + var shouldUseDefaultFilters = function (editor) { + return editor.getParam('paste_enable_default_filters', true); + }; + var getValidate = function (editor) { + return editor.getParam('validate'); + }; + var getAllowHtmlDataUrls = function (editor) { + return editor.getParam('allow_html_data_urls', false, 'boolean'); + }; + var getPasteDataImages = function (editor) { + return editor.getParam('paste_data_images', false, 'boolean'); + }; + var getImagesDataImgFilter = function (editor) { + return editor.getParam('images_dataimg_filter'); + }; + var getImagesReuseFilename = function (editor) { + return editor.getParam('images_reuse_filename'); + }; + var getForcedRootBlock = function (editor) { + return editor.getParam('forced_root_block'); + }; + var getForcedRootBlockAttrs = function (editor) { + return editor.getParam('forced_root_block_attrs'); + }; + var getTabSpaces = function (editor) { + return editor.getParam('paste_tab_spaces', 4, 'number'); + }; + var getAllowedImageFileTypes = function (editor) { + var defaultImageFileTypes = 'jpeg,jpg,jpe,jfi,jif,jfif,png,gif,bmp,webp'; + return global$6.explode(editor.getParam('images_file_types', defaultImageFileTypes, 'string')); + }; + + var internalMimeType = 'x-tinymce/html'; + var internalMark = ''; + var mark = function (html) { + return internalMark + html; + }; + var unmark = function (html) { + return html.replace(internalMark, ''); + }; + var isMarked = function (html) { + return html.indexOf(internalMark) !== -1; + }; + var internalHtmlMime = constant(internalMimeType); + + var hasOwnProperty = Object.hasOwnProperty; + var has = function (obj, key) { + return hasOwnProperty.call(obj, key); + }; + + var global$5 = tinymce.util.Tools.resolve('tinymce.html.Entities'); + + var isPlainText = function (text) { + return !/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(text); + }; + var toBRs = function (text) { + return text.replace(/\r?\n/g, '
'); + }; + var openContainer = function (rootTag, rootAttrs) { + var attrs = []; + var tag = '<' + rootTag; + if (typeof rootAttrs === 'object') { + for (var key in rootAttrs) { + if (has(rootAttrs, key)) { + attrs.push(key + '="' + global$5.encodeAllRaw(rootAttrs[key]) + '"'); + } + } + if (attrs.length) { + tag += ' ' + attrs.join(' '); + } + } + return tag + '>'; + }; + var toBlockElements = function (text, rootTag, rootAttrs) { + var blocks = text.split(/\n\n/); + var tagOpen = openContainer(rootTag, rootAttrs); + var tagClose = ''; + var paragraphs = global$6.map(blocks, function (p) { + return p.split(/\n/).join('
'); + }); + var stitch = function (p) { + return tagOpen + p + tagClose; + }; + return paragraphs.length === 1 ? paragraphs[0] : global$6.map(paragraphs, stitch).join(''); + }; + var convert = function (text, rootTag, rootAttrs) { + return rootTag ? toBlockElements(text, rootTag === true ? 'p' : rootTag, rootAttrs) : toBRs(text); + }; + + var global$4 = tinymce.util.Tools.resolve('tinymce.html.DomParser'); + + var global$3 = tinymce.util.Tools.resolve('tinymce.html.Serializer'); + + var nbsp = '\xA0'; + + var global$2 = tinymce.util.Tools.resolve('tinymce.html.Node'); + + var global$1 = tinymce.util.Tools.resolve('tinymce.html.Schema'); + + var isRegExp = function (val) { + return val.constructor === RegExp; + }; + var filter = function (content, items) { + global$6.each(items, function (v) { + if (isRegExp(v)) { + content = content.replace(v, ''); + } else { + content = content.replace(v[0], v[1]); + } + }); + return content; + }; + var innerText = function (html) { + var schema = global$1(); + var domParser = global$4({}, schema); + var text = ''; + var shortEndedElements = schema.getShortEndedElements(); + var ignoreElements = global$6.makeMap('script noscript style textarea video audio iframe object', ' '); + var blockElements = schema.getBlockElements(); + var walk = function (node) { + var name = node.name, currentNode = node; + if (name === 'br') { + text += '\n'; + return; + } + if (name === 'wbr') { + return; + } + if (shortEndedElements[name]) { + text += ' '; + } + if (ignoreElements[name]) { + text += ' '; + return; + } + if (node.type === 3) { + text += node.value; + } + if (!node.shortEnded) { + if (node = node.firstChild) { + do { + walk(node); + } while (node = node.next); + } + } + if (blockElements[name] && currentNode.next) { + text += '\n'; + if (name === 'p') { + text += '\n'; + } + } + }; + html = filter(html, [//g]); + walk(domParser.parse(html)); + return text; + }; + var trimHtml = function (html) { + var trimSpaces = function (all, s1, s2) { + if (!s1 && !s2) { + return ' '; + } + return nbsp; + }; + html = filter(html, [ + /^[\s\S]*]*>\s*|\s*<\/body[^>]*>[\s\S]*$/ig, + /|/g, + [ + /( ?)\u00a0<\/span>( ?)/g, + trimSpaces + ], + /
/g, + /
$/i + ]); + return html; + }; + var createIdGenerator = function (prefix) { + var count = 0; + return function () { + return prefix + count++; + }; + }; + var getImageMimeType = function (ext) { + var lowerExt = ext.toLowerCase(); + var mimeOverrides = { + jpg: 'jpeg', + jpe: 'jpeg', + jfi: 'jpeg', + jif: 'jpeg', + jfif: 'jpeg', + pjpeg: 'jpeg', + pjp: 'jpeg', + svg: 'svg+xml' + }; + return global$6.hasOwn(mimeOverrides, lowerExt) ? 'image/' + mimeOverrides[lowerExt] : 'image/' + lowerExt; + }; + + var isWordContent = function (content) { + return / 1) { + currentListNode.attr('start', '' + start); + } + paragraphNode.wrap(currentListNode); + } else { + currentListNode.append(paragraphNode); + } + paragraphNode.name = 'li'; + if (level > lastLevel && prevListNode) { + prevListNode.lastChild.append(currentListNode); + } + lastLevel = level; + removeIgnoredNodes(paragraphNode); + trimListStart(paragraphNode, /^\u00a0+/); + trimListStart(paragraphNode, /^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/); + trimListStart(paragraphNode, /^\u00a0+/); + }; + var elements = []; + var child = node.firstChild; + while (typeof child !== 'undefined' && child !== null) { + elements.push(child); + child = child.walk(); + if (child !== null) { + while (typeof child !== 'undefined' && child.parent !== node) { + child = child.walk(); + } + } + } + for (var i = 0; i < elements.length; i++) { + node = elements[i]; + if (node.name === 'p' && node.firstChild) { + var nodeText = getText(node); + if (isBulletList(nodeText)) { + convertParagraphToLi(node, 'ul'); + continue; + } + if (isNumericList(nodeText)) { + var matches = /([0-9]+)\./.exec(nodeText); + var start = 1; + if (matches) { + start = parseInt(matches[1], 10); + } + convertParagraphToLi(node, 'ol', start); + continue; + } + if (node._listLevel) { + convertParagraphToLi(node, 'ul', 1); + continue; + } + currentListNode = null; + } else { + prevListNode = currentListNode; + currentListNode = null; + } + } + }; + var filterStyles = function (editor, validStyles, node, styleValue) { + var outputStyles = {}; + var styles = editor.dom.parseStyle(styleValue); + global$6.each(styles, function (value, name) { + switch (name) { + case 'mso-list': + var matches = /\w+ \w+([0-9]+)/i.exec(styleValue); + if (matches) { + node._listLevel = parseInt(matches[1], 10); + } + if (/Ignore/i.test(value) && node.firstChild) { + node._listIgnore = true; + node.firstChild._listIgnore = true; + } + break; + case 'horiz-align': + name = 'text-align'; + break; + case 'vert-align': + name = 'vertical-align'; + break; + case 'font-color': + case 'mso-foreground': + name = 'color'; + break; + case 'mso-background': + case 'mso-highlight': + name = 'background'; + break; + case 'font-weight': + case 'font-style': + if (value !== 'normal') { + outputStyles[name] = value; + } + return; + case 'mso-element': + if (/^(comment|comment-list)$/i.test(value)) { + node.remove(); + return; + } + break; + } + if (name.indexOf('mso-comment') === 0) { + node.remove(); + return; + } + if (name.indexOf('mso-') === 0) { + return; + } + if (getRetainStyleProps(editor) === 'all' || validStyles && validStyles[name]) { + outputStyles[name] = value; + } + }); + if (/(bold)/i.test(outputStyles['font-weight'])) { + delete outputStyles['font-weight']; + node.wrap(new global$2('b', 1)); + } + if (/(italic)/i.test(outputStyles['font-style'])) { + delete outputStyles['font-style']; + node.wrap(new global$2('i', 1)); + } + var outputStyle = editor.dom.serializeStyle(outputStyles, node.name); + if (outputStyle) { + return outputStyle; + } + return null; + }; + var filterWordContent = function (editor, content) { + var validStyles; + var retainStyleProperties = getRetainStyleProps(editor); + if (retainStyleProperties) { + validStyles = global$6.makeMap(retainStyleProperties.split(/[, ]/)); + } + content = filter(content, [ + /
/gi, + /]+id="?docs-internal-[^>]*>/gi, + //gi, + /<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi, + [ + /<(\/?)s>/gi, + '<$1strike>' + ], + [ + / /gi, + nbsp + ], + [ + /([\s\u00a0]*)<\/span>/gi, + function (str, spaces) { + return spaces.length > 0 ? spaces.replace(/./, ' ').slice(Math.floor(spaces.length / 2)).split('').join(nbsp) : ''; + } + ] + ]); + var validElements = getWordValidElements(editor); + var schema = global$1({ + valid_elements: validElements, + valid_children: '-li[p]' + }); + global$6.each(schema.elements, function (rule) { + if (!rule.attributes.class) { + rule.attributes.class = {}; + rule.attributesOrder.push('class'); + } + if (!rule.attributes.style) { + rule.attributes.style = {}; + rule.attributesOrder.push('style'); + } + }); + var domParser = global$4({}, schema); + domParser.addAttributeFilter('style', function (nodes) { + var i = nodes.length, node; + while (i--) { + node = nodes[i]; + node.attr('style', filterStyles(editor, validStyles, node, node.attr('style'))); + if (node.name === 'span' && node.parent && !node.attributes.length) { + node.unwrap(); + } + } + }); + domParser.addAttributeFilter('class', function (nodes) { + var i = nodes.length, node, className; + while (i--) { + node = nodes[i]; + className = node.attr('class'); + if (/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(className)) { + node.remove(); + } + node.attr('class', null); + } + }); + domParser.addNodeFilter('del', function (nodes) { + var i = nodes.length; + while (i--) { + nodes[i].remove(); + } + }); + domParser.addNodeFilter('a', function (nodes) { + var i = nodes.length, node, href, name; + while (i--) { + node = nodes[i]; + href = node.attr('href'); + name = node.attr('name'); + if (href && href.indexOf('#_msocom_') !== -1) { + node.remove(); + continue; + } + if (href && href.indexOf('file://') === 0) { + href = href.split('#')[1]; + if (href) { + href = '#' + href; + } + } + if (!href && !name) { + node.unwrap(); + } else { + if (name && !/^_?(?:toc|edn|ftn)/i.test(name)) { + node.unwrap(); + continue; + } + node.attr({ + href: href, + name: name + }); + } + } + }); + var rootNode = domParser.parse(content); + if (shouldConvertWordFakeLists(editor)) { + convertFakeListsToProperLists(rootNode); + } + content = global$3({ validate: getValidate(editor) }, schema).serialize(rootNode); + return content; + }; + var preProcess$1 = function (editor, content) { + return shouldUseDefaultFilters(editor) ? filterWordContent(editor, content) : content; + }; + + var preProcess = function (editor, html) { + var parser = global$4({}, editor.schema); + parser.addNodeFilter('meta', function (nodes) { + global$6.each(nodes, function (node) { + node.remove(); + }); + }); + var fragment = parser.parse(html, { + forced_root_block: false, + isRootContent: true + }); + return global$3({ validate: getValidate(editor) }, editor.schema).serialize(fragment); + }; + var processResult = function (content, cancelled) { + return { + content: content, + cancelled: cancelled + }; + }; + var postProcessFilter = function (editor, html, internal, isWordHtml) { + var tempBody = editor.dom.create('div', { style: 'display:none' }, html); + var postProcessArgs = firePastePostProcess(editor, tempBody, internal, isWordHtml); + return processResult(postProcessArgs.node.innerHTML, postProcessArgs.isDefaultPrevented()); + }; + var filterContent = function (editor, content, internal, isWordHtml) { + var preProcessArgs = firePastePreProcess(editor, content, internal, isWordHtml); + var filteredContent = preProcess(editor, preProcessArgs.content); + if (editor.hasEventListeners('PastePostProcess') && !preProcessArgs.isDefaultPrevented()) { + return postProcessFilter(editor, filteredContent, internal, isWordHtml); + } else { + return processResult(filteredContent, preProcessArgs.isDefaultPrevented()); + } + }; + var process = function (editor, html, internal) { + var isWordHtml = isWordContent(html); + var content = isWordHtml ? preProcess$1(editor, html) : html; + return filterContent(editor, content, internal, isWordHtml); + }; + + var pasteHtml$1 = function (editor, html) { + editor.insertContent(html, { + merge: shouldMergeFormats(editor), + paste: true + }); + return true; + }; + var isAbsoluteUrl = function (url) { + return /^https?:\/\/[\w\-\/+=.,!;:&%@^~(){}?#]+$/i.test(url); + }; + var isImageUrl = function (editor, url) { + return isAbsoluteUrl(url) && exists(getAllowedImageFileTypes(editor), function (type) { + return endsWith(url.toLowerCase(), '.' + type.toLowerCase()); + }); + }; + var createImage = function (editor, url, pasteHtmlFn) { + editor.undoManager.extra(function () { + pasteHtmlFn(editor, url); + }, function () { + editor.insertContent(''); + }); + return true; + }; + var createLink = function (editor, url, pasteHtmlFn) { + editor.undoManager.extra(function () { + pasteHtmlFn(editor, url); + }, function () { + editor.execCommand('mceInsertLink', false, url); + }); + return true; + }; + var linkSelection = function (editor, html, pasteHtmlFn) { + return editor.selection.isCollapsed() === false && isAbsoluteUrl(html) ? createLink(editor, html, pasteHtmlFn) : false; + }; + var insertImage = function (editor, html, pasteHtmlFn) { + return isImageUrl(editor, html) ? createImage(editor, html, pasteHtmlFn) : false; + }; + var smartInsertContent = function (editor, html) { + global$6.each([ + linkSelection, + insertImage, + pasteHtml$1 + ], function (action) { + return action(editor, html, pasteHtml$1) !== true; + }); + }; + var insertContent = function (editor, html, pasteAsText) { + if (pasteAsText || isSmartPasteEnabled(editor) === false) { + pasteHtml$1(editor, html); + } else { + smartInsertContent(editor, html); + } + }; + + var isCollapsibleWhitespace = function (c) { + return ' \f\t\x0B'.indexOf(c) !== -1; + }; + var isNewLineChar = function (c) { + return c === '\n' || c === '\r'; + }; + var isNewline = function (text, idx) { + return idx < text.length && idx >= 0 ? isNewLineChar(text[idx]) : false; + }; + var normalizeWhitespace = function (editor, text) { + var tabSpace = repeat(' ', getTabSpaces(editor)); + var normalizedText = text.replace(/\t/g, tabSpace); + var result = foldl(normalizedText, function (acc, c) { + if (isCollapsibleWhitespace(c) || c === nbsp) { + if (acc.pcIsSpace || acc.str === '' || acc.str.length === normalizedText.length - 1 || isNewline(normalizedText, acc.str.length + 1)) { + return { + pcIsSpace: false, + str: acc.str + nbsp + }; + } else { + return { + pcIsSpace: true, + str: acc.str + ' ' + }; + } + } else { + return { + pcIsSpace: isNewLineChar(c), + str: acc.str + c + }; + } + }, { + pcIsSpace: false, + str: '' + }); + return result.str; + }; + + var doPaste = function (editor, content, internal, pasteAsText) { + var args = process(editor, content, internal); + if (args.cancelled === false) { + insertContent(editor, args.content, pasteAsText); + } + }; + var pasteHtml = function (editor, html, internalFlag) { + var internal = internalFlag ? internalFlag : isMarked(html); + doPaste(editor, unmark(html), internal, false); + }; + var pasteText = function (editor, text) { + var encodedText = editor.dom.encode(text).replace(/\r\n/g, '\n'); + var normalizedText = normalizeWhitespace(editor, encodedText); + var html = convert(normalizedText, getForcedRootBlock(editor), getForcedRootBlockAttrs(editor)); + doPaste(editor, html, false, true); + }; + var getDataTransferItems = function (dataTransfer) { + var items = {}; + var mceInternalUrlPrefix = 'data:text/mce-internal,'; + if (dataTransfer) { + if (dataTransfer.getData) { + var legacyText = dataTransfer.getData('Text'); + if (legacyText && legacyText.length > 0) { + if (legacyText.indexOf(mceInternalUrlPrefix) === -1) { + items['text/plain'] = legacyText; + } + } + } + if (dataTransfer.types) { + for (var i = 0; i < dataTransfer.types.length; i++) { + var contentType = dataTransfer.types[i]; + try { + items[contentType] = dataTransfer.getData(contentType); + } catch (ex) { + items[contentType] = ''; + } + } + } + } + return items; + }; + var getClipboardContent = function (editor, clipboardEvent) { + return getDataTransferItems(clipboardEvent.clipboardData || editor.getDoc().dataTransfer); + }; + var hasContentType = function (clipboardContent, mimeType) { + return mimeType in clipboardContent && clipboardContent[mimeType].length > 0; + }; + var hasHtmlOrText = function (content) { + return hasContentType(content, 'text/html') || hasContentType(content, 'text/plain'); + }; + var parseDataUri = function (uri) { + var matches = /data:([^;]+);base64,([a-z0-9\+\/=]+)/i.exec(uri); + if (matches) { + return { + type: matches[1], + data: decodeURIComponent(matches[2]) + }; + } else { + return { + type: null, + data: null + }; + } + }; + var isValidDataUriImage = function (editor, imgElm) { + var filter = getImagesDataImgFilter(editor); + return filter ? filter(imgElm) : true; + }; + var extractFilename = function (editor, str) { + var m = str.match(/([\s\S]+?)(?:\.[a-z0-9.]+)$/i); + return isNonNullable(m) ? editor.dom.encode(m[1]) : null; + }; + var uniqueId = createIdGenerator('mceclip'); + var pasteImage = function (editor, imageItem) { + var _a = parseDataUri(imageItem.uri), base64 = _a.data, type = _a.type; + var id = uniqueId(); + var file = imageItem.blob; + var img = new Image(); + img.src = imageItem.uri; + if (isValidDataUriImage(editor, img)) { + var blobCache = editor.editorUpload.blobCache; + var blobInfo = void 0; + var existingBlobInfo = blobCache.getByData(base64, type); + if (!existingBlobInfo) { + var useFileName = getImagesReuseFilename(editor) && isNonNullable(file.name); + var name_1 = useFileName ? extractFilename(editor, file.name) : id; + var filename = useFileName ? file.name : undefined; + blobInfo = blobCache.create(id, file, base64, name_1, filename); + blobCache.add(blobInfo); + } else { + blobInfo = existingBlobInfo; + } + pasteHtml(editor, '', false); + } else { + pasteHtml(editor, '', false); + } + }; + var isClipboardEvent = function (event) { + return event.type === 'paste'; + }; + var isDataTransferItem = function (item) { + return isNonNullable(item.getAsFile); + }; + var readFilesAsDataUris = function (items) { + return global$8.all(map(items, function (item) { + return new global$8(function (resolve) { + var blob = isDataTransferItem(item) ? item.getAsFile() : item; + var reader = new window.FileReader(); + reader.onload = function () { + resolve({ + blob: blob, + uri: reader.result + }); + }; + reader.readAsDataURL(blob); + }); + })); + }; + var isImage = function (editor) { + var allowedExtensions = getAllowedImageFileTypes(editor); + return function (file) { + return startsWith(file.type, 'image/') && exists(allowedExtensions, function (extension) { + return getImageMimeType(extension) === file.type; + }); + }; + }; + var getImagesFromDataTransfer = function (editor, dataTransfer) { + var items = dataTransfer.items ? bind(from(dataTransfer.items), function (item) { + return item.kind === 'file' ? [item.getAsFile()] : []; + }) : []; + var files = dataTransfer.files ? from(dataTransfer.files) : []; + return filter$1(items.length > 0 ? items : files, isImage(editor)); + }; + var pasteImageData = function (editor, e, rng) { + var dataTransfer = isClipboardEvent(e) ? e.clipboardData : e.dataTransfer; + if (getPasteDataImages(editor) && dataTransfer) { + var images = getImagesFromDataTransfer(editor, dataTransfer); + if (images.length > 0) { + e.preventDefault(); + readFilesAsDataUris(images).then(function (fileResults) { + if (rng) { + editor.selection.setRng(rng); + } + each(fileResults, function (result) { + pasteImage(editor, result); + }); + }); + return true; + } + } + return false; + }; + var isBrokenAndroidClipboardEvent = function (e) { + var clipboardData = e.clipboardData; + return navigator.userAgent.indexOf('Android') !== -1 && clipboardData && clipboardData.items && clipboardData.items.length === 0; + }; + var isKeyboardPasteEvent = function (e) { + return global$7.metaKeyPressed(e) && e.keyCode === 86 || e.shiftKey && e.keyCode === 45; + }; + var registerEventHandlers = function (editor, pasteBin, pasteFormat) { + var keyboardPasteEvent = value(); + var keyboardPastePressed = value(); + var keyboardPastePlainTextState; + editor.on('keyup', keyboardPastePressed.clear); + editor.on('keydown', function (e) { + var removePasteBinOnKeyUp = function (e) { + if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) { + pasteBin.remove(); + } + }; + if (isKeyboardPasteEvent(e) && !e.isDefaultPrevented()) { + keyboardPastePlainTextState = e.shiftKey && e.keyCode === 86; + if (keyboardPastePlainTextState && global$a.webkit && navigator.userAgent.indexOf('Version/') !== -1) { + return; + } + e.stopImmediatePropagation(); + keyboardPasteEvent.set(e); + keyboardPastePressed.set(true); + if (global$a.ie && keyboardPastePlainTextState) { + e.preventDefault(); + firePaste(editor, true); + return; + } + pasteBin.remove(); + pasteBin.create(); + editor.once('keyup', removePasteBinOnKeyUp); + editor.once('paste', function () { + editor.off('keyup', removePasteBinOnKeyUp); + }); + } + }); + var insertClipboardContent = function (editor, clipboardContent, isKeyBoardPaste, plainTextMode, internal) { + var content; + if (hasContentType(clipboardContent, 'text/html')) { + content = clipboardContent['text/html']; + } else { + content = pasteBin.getHtml(); + internal = internal ? internal : isMarked(content); + if (pasteBin.isDefaultContent(content)) { + plainTextMode = true; + } + } + content = trimHtml(content); + pasteBin.remove(); + var isPlainTextHtml = internal === false && isPlainText(content); + var isAbsoluteUrl$1 = isAbsoluteUrl(content); + if (!content.length || isPlainTextHtml && !isAbsoluteUrl$1) { + plainTextMode = true; + } + if (plainTextMode || isAbsoluteUrl$1) { + if (hasContentType(clipboardContent, 'text/plain') && isPlainTextHtml) { + content = clipboardContent['text/plain']; + } else { + content = innerText(content); + } + } + if (pasteBin.isDefaultContent(content)) { + if (!isKeyBoardPaste) { + editor.windowManager.alert('Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.'); + } + return; + } + if (plainTextMode) { + pasteText(editor, content); + } else { + pasteHtml(editor, content, internal); + } + }; + var getLastRng = function () { + return pasteBin.getLastRng() || editor.selection.getRng(); + }; + editor.on('paste', function (e) { + var isKeyboardPaste = keyboardPasteEvent.isSet() || keyboardPastePressed.isSet(); + if (isKeyboardPaste) { + keyboardPasteEvent.clear(); + } + var clipboardContent = getClipboardContent(editor, e); + var plainTextMode = pasteFormat.get() === 'text' || keyboardPastePlainTextState; + var internal = hasContentType(clipboardContent, internalHtmlMime()); + keyboardPastePlainTextState = false; + if (e.isDefaultPrevented() || isBrokenAndroidClipboardEvent(e)) { + pasteBin.remove(); + return; + } + if (!hasHtmlOrText(clipboardContent) && pasteImageData(editor, e, getLastRng())) { + pasteBin.remove(); + return; + } + if (!isKeyboardPaste) { + e.preventDefault(); + } + if (global$a.ie && (!isKeyboardPaste || e.ieFake) && !hasContentType(clipboardContent, 'text/html')) { + pasteBin.create(); + editor.dom.bind(pasteBin.getEl(), 'paste', function (e) { + e.stopPropagation(); + }); + editor.getDoc().execCommand('Paste', false, null); + clipboardContent['text/html'] = pasteBin.getHtml(); + } + if (hasContentType(clipboardContent, 'text/html')) { + e.preventDefault(); + if (!internal) { + internal = isMarked(clipboardContent['text/html']); + } + insertClipboardContent(editor, clipboardContent, isKeyboardPaste, plainTextMode, internal); + } else { + global$9.setEditorTimeout(editor, function () { + insertClipboardContent(editor, clipboardContent, isKeyboardPaste, plainTextMode, internal); + }, 0); + } + }); + }; + var registerEventsAndFilters = function (editor, pasteBin, pasteFormat) { + registerEventHandlers(editor, pasteBin, pasteFormat); + var src; + editor.parser.addNodeFilter('img', function (nodes, name, args) { + var isPasteInsert = function (args) { + return args.data && args.data.paste === true; + }; + var remove = function (node) { + if (!node.attr('data-mce-object') && src !== global$a.transparentSrc) { + node.remove(); + } + }; + var isWebKitFakeUrl = function (src) { + return src.indexOf('webkit-fake-url') === 0; + }; + var isDataUri = function (src) { + return src.indexOf('data:') === 0; + }; + if (!getPasteDataImages(editor) && isPasteInsert(args)) { + var i = nodes.length; + while (i--) { + src = nodes[i].attr('src'); + if (!src) { + continue; + } + if (isWebKitFakeUrl(src)) { + remove(nodes[i]); + } else if (!getAllowHtmlDataUrls(editor) && isDataUri(src)) { + remove(nodes[i]); + } + } + } + }); + }; + + var getPasteBinParent = function (editor) { + return global$a.ie && editor.inline ? document.body : editor.getBody(); + }; + var isExternalPasteBin = function (editor) { + return getPasteBinParent(editor) !== editor.getBody(); + }; + var delegatePasteEvents = function (editor, pasteBinElm, pasteBinDefaultContent) { + if (isExternalPasteBin(editor)) { + editor.dom.bind(pasteBinElm, 'paste keyup', function (_e) { + if (!isDefault(editor, pasteBinDefaultContent)) { + editor.fire('paste'); + } + }); + } + }; + var create = function (editor, lastRngCell, pasteBinDefaultContent) { + var dom = editor.dom, body = editor.getBody(); + lastRngCell.set(editor.selection.getRng()); + var pasteBinElm = editor.dom.add(getPasteBinParent(editor), 'div', { + 'id': 'mcepastebin', + 'class': 'mce-pastebin', + 'contentEditable': true, + 'data-mce-bogus': 'all', + 'style': 'position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0' + }, pasteBinDefaultContent); + if (global$a.ie || global$a.gecko) { + dom.setStyle(pasteBinElm, 'left', dom.getStyle(body, 'direction', true) === 'rtl' ? 65535 : -65535); + } + dom.bind(pasteBinElm, 'beforedeactivate focusin focusout', function (e) { + e.stopPropagation(); + }); + delegatePasteEvents(editor, pasteBinElm, pasteBinDefaultContent); + pasteBinElm.focus(); + editor.selection.select(pasteBinElm, true); + }; + var remove = function (editor, lastRngCell) { + if (getEl(editor)) { + var pasteBinClone = void 0; + var lastRng = lastRngCell.get(); + while (pasteBinClone = editor.dom.get('mcepastebin')) { + editor.dom.remove(pasteBinClone); + editor.dom.unbind(pasteBinClone); + } + if (lastRng) { + editor.selection.setRng(lastRng); + } + } + lastRngCell.set(null); + }; + var getEl = function (editor) { + return editor.dom.get('mcepastebin'); + }; + var getHtml = function (editor) { + var copyAndRemove = function (toElm, fromElm) { + toElm.appendChild(fromElm); + editor.dom.remove(fromElm, true); + }; + var pasteBinClones = global$6.grep(getPasteBinParent(editor).childNodes, function (elm) { + return elm.id === 'mcepastebin'; + }); + var pasteBinElm = pasteBinClones.shift(); + global$6.each(pasteBinClones, function (pasteBinClone) { + copyAndRemove(pasteBinElm, pasteBinClone); + }); + var dirtyWrappers = editor.dom.select('div[id=mcepastebin]', pasteBinElm); + for (var i = dirtyWrappers.length - 1; i >= 0; i--) { + var cleanWrapper = editor.dom.create('div'); + pasteBinElm.insertBefore(cleanWrapper, dirtyWrappers[i]); + copyAndRemove(cleanWrapper, dirtyWrappers[i]); + } + return pasteBinElm ? pasteBinElm.innerHTML : ''; + }; + var isDefaultContent = function (pasteBinDefaultContent, content) { + return content === pasteBinDefaultContent; + }; + var isPasteBin = function (elm) { + return elm && elm.id === 'mcepastebin'; + }; + var isDefault = function (editor, pasteBinDefaultContent) { + var pasteBinElm = getEl(editor); + return isPasteBin(pasteBinElm) && isDefaultContent(pasteBinDefaultContent, pasteBinElm.innerHTML); + }; + var PasteBin = function (editor) { + var lastRng = Cell(null); + var pasteBinDefaultContent = '%MCEPASTEBIN%'; + return { + create: function () { + return create(editor, lastRng, pasteBinDefaultContent); + }, + remove: function () { + return remove(editor, lastRng); + }, + getEl: function () { + return getEl(editor); + }, + getHtml: function () { + return getHtml(editor); + }, + getLastRng: lastRng.get, + isDefault: function () { + return isDefault(editor, pasteBinDefaultContent); + }, + isDefaultContent: function (content) { + return isDefaultContent(pasteBinDefaultContent, content); + } + }; + }; + + var Clipboard = function (editor, pasteFormat) { + var pasteBin = PasteBin(editor); + editor.on('PreInit', function () { + return registerEventsAndFilters(editor, pasteBin, pasteFormat); + }); + return { + pasteFormat: pasteFormat, + pasteHtml: function (html, internalFlag) { + return pasteHtml(editor, html, internalFlag); + }, + pasteText: function (text) { + return pasteText(editor, text); + }, + pasteImageData: function (e, rng) { + return pasteImageData(editor, e, rng); + }, + getDataTransferItems: getDataTransferItems, + hasHtmlOrText: hasHtmlOrText, + hasContentType: hasContentType + }; + }; + + var togglePlainTextPaste = function (editor, clipboard) { + if (clipboard.pasteFormat.get() === 'text') { + clipboard.pasteFormat.set('html'); + firePastePlainTextToggle(editor, false); + } else { + clipboard.pasteFormat.set('text'); + firePastePlainTextToggle(editor, true); + } + editor.focus(); + }; + + var register$2 = function (editor, clipboard) { + editor.addCommand('mceTogglePlainTextPaste', function () { + togglePlainTextPaste(editor, clipboard); + }); + editor.addCommand('mceInsertClipboardContent', function (ui, value) { + if (value.content) { + clipboard.pasteHtml(value.content, value.internal); + } + if (value.text) { + clipboard.pasteText(value.text); + } + }); + }; + + var hasWorkingClipboardApi = function (clipboardData) { + return global$a.iOS === false && typeof (clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.setData) === 'function'; + }; + var setHtml5Clipboard = function (clipboardData, html, text) { + if (hasWorkingClipboardApi(clipboardData)) { + try { + clipboardData.clearData(); + clipboardData.setData('text/html', html); + clipboardData.setData('text/plain', text); + clipboardData.setData(internalHtmlMime(), html); + return true; + } catch (e) { + return false; + } + } else { + return false; + } + }; + var setClipboardData = function (evt, data, fallback, done) { + if (setHtml5Clipboard(evt.clipboardData, data.html, data.text)) { + evt.preventDefault(); + done(); + } else { + fallback(data.html, done); + } + }; + var fallback = function (editor) { + return function (html, done) { + var markedHtml = mark(html); + var outer = editor.dom.create('div', { + 'contenteditable': 'false', + 'data-mce-bogus': 'all' + }); + var inner = editor.dom.create('div', { contenteditable: 'true' }, markedHtml); + editor.dom.setStyles(outer, { + position: 'fixed', + top: '0', + left: '-3000px', + width: '1000px', + overflow: 'hidden' + }); + outer.appendChild(inner); + editor.dom.add(editor.getBody(), outer); + var range = editor.selection.getRng(); + inner.focus(); + var offscreenRange = editor.dom.createRng(); + offscreenRange.selectNodeContents(inner); + editor.selection.setRng(offscreenRange); + global$9.setTimeout(function () { + editor.selection.setRng(range); + outer.parentNode.removeChild(outer); + done(); + }, 0); + }; + }; + var getData = function (editor) { + return { + html: editor.selection.getContent({ contextual: true }), + text: editor.selection.getContent({ format: 'text' }) + }; + }; + var isTableSelection = function (editor) { + return !!editor.dom.getParent(editor.selection.getStart(), 'td[data-mce-selected],th[data-mce-selected]', editor.getBody()); + }; + var hasSelectedContent = function (editor) { + return !editor.selection.isCollapsed() || isTableSelection(editor); + }; + var cut = function (editor) { + return function (evt) { + if (hasSelectedContent(editor)) { + setClipboardData(evt, getData(editor), fallback(editor), function () { + if (global$a.browser.isChrome() || global$a.browser.isFirefox()) { + var rng_1 = editor.selection.getRng(); + global$9.setEditorTimeout(editor, function () { + editor.selection.setRng(rng_1); + editor.execCommand('Delete'); + }, 0); + } else { + editor.execCommand('Delete'); + } + }); + } + }; + }; + var copy = function (editor) { + return function (evt) { + if (hasSelectedContent(editor)) { + setClipboardData(evt, getData(editor), fallback(editor), noop); + } + }; + }; + var register$1 = function (editor) { + editor.on('cut', cut(editor)); + editor.on('copy', copy(editor)); + }; + + var global = tinymce.util.Tools.resolve('tinymce.dom.RangeUtils'); + + var getCaretRangeFromEvent = function (editor, e) { + return global.getCaretRangeFromPoint(e.clientX, e.clientY, editor.getDoc()); + }; + var isPlainTextFileUrl = function (content) { + var plainTextContent = content['text/plain']; + return plainTextContent ? plainTextContent.indexOf('file://') === 0 : false; + }; + var setFocusedRange = function (editor, rng) { + editor.focus(); + editor.selection.setRng(rng); + }; + var setup$2 = function (editor, clipboard, draggingInternallyState) { + if (shouldBlockDrop(editor)) { + editor.on('dragend dragover draggesture dragdrop drop drag', function (e) { + e.preventDefault(); + e.stopPropagation(); + }); + } + if (!shouldPasteDataImages(editor)) { + editor.on('drop', function (e) { + var dataTransfer = e.dataTransfer; + if (dataTransfer && dataTransfer.files && dataTransfer.files.length > 0) { + e.preventDefault(); + } + }); + } + editor.on('drop', function (e) { + var rng = getCaretRangeFromEvent(editor, e); + if (e.isDefaultPrevented() || draggingInternallyState.get()) { + return; + } + var dropContent = clipboard.getDataTransferItems(e.dataTransfer); + var internal = clipboard.hasContentType(dropContent, internalHtmlMime()); + if ((!clipboard.hasHtmlOrText(dropContent) || isPlainTextFileUrl(dropContent)) && clipboard.pasteImageData(e, rng)) { + return; + } + if (rng && shouldFilterDrop(editor)) { + var content_1 = dropContent['mce-internal'] || dropContent['text/html'] || dropContent['text/plain']; + if (content_1) { + e.preventDefault(); + global$9.setEditorTimeout(editor, function () { + editor.undoManager.transact(function () { + if (dropContent['mce-internal']) { + editor.execCommand('Delete'); + } + setFocusedRange(editor, rng); + content_1 = trimHtml(content_1); + if (!dropContent['text/html']) { + clipboard.pasteText(content_1); + } else { + clipboard.pasteHtml(content_1, internal); + } + }); + }); + } + } + }); + editor.on('dragstart', function (_e) { + draggingInternallyState.set(true); + }); + editor.on('dragover dragend', function (e) { + if (shouldPasteDataImages(editor) && draggingInternallyState.get() === false) { + e.preventDefault(); + setFocusedRange(editor, getCaretRangeFromEvent(editor, e)); + } + if (e.type === 'dragend') { + draggingInternallyState.set(false); + } + }); + }; + + var setup$1 = function (editor) { + var plugin = editor.plugins.paste; + var preProcess = getPreProcess(editor); + if (preProcess) { + editor.on('PastePreProcess', function (e) { + preProcess.call(plugin, plugin, e); + }); + } + var postProcess = getPostProcess(editor); + if (postProcess) { + editor.on('PastePostProcess', function (e) { + postProcess.call(plugin, plugin, e); + }); + } + }; + + var addPreProcessFilter = function (editor, filterFunc) { + editor.on('PastePreProcess', function (e) { + e.content = filterFunc(editor, e.content, e.internal, e.wordContent); + }); + }; + var addPostProcessFilter = function (editor, filterFunc) { + editor.on('PastePostProcess', function (e) { + filterFunc(editor, e.node); + }); + }; + var removeExplorerBrElementsAfterBlocks = function (editor, html) { + if (!isWordContent(html)) { + return html; + } + var blockElements = []; + global$6.each(editor.schema.getBlockElements(), function (block, blockName) { + blockElements.push(blockName); + }); + var explorerBlocksRegExp = new RegExp('(?:
 [\\s\\r\\n]+|
)*(<\\/?(' + blockElements.join('|') + ')[^>]*>)(?:
 [\\s\\r\\n]+|
)*', 'g'); + html = filter(html, [[ + explorerBlocksRegExp, + '$1' + ]]); + html = filter(html, [ + [ + /

/g, + '

' + ], + [ + /
/g, + ' ' + ], + [ + /

/g, + '
' + ] + ]); + return html; + }; + var removeWebKitStyles = function (editor, content, internal, isWordHtml) { + if (isWordHtml || internal) { + return content; + } + var webKitStylesSetting = getWebkitStyles(editor); + var webKitStyles; + if (shouldRemoveWebKitStyles(editor) === false || webKitStylesSetting === 'all') { + return content; + } + if (webKitStylesSetting) { + webKitStyles = webKitStylesSetting.split(/[, ]/); + } + if (webKitStyles) { + var dom_1 = editor.dom, node_1 = editor.selection.getNode(); + content = content.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, function (all, before, value, after) { + var inputStyles = dom_1.parseStyle(dom_1.decode(value)); + var outputStyles = {}; + if (webKitStyles === 'none') { + return before + after; + } + for (var i = 0; i < webKitStyles.length; i++) { + var inputValue = inputStyles[webKitStyles[i]], currentValue = dom_1.getStyle(node_1, webKitStyles[i], true); + if (/color/.test(webKitStyles[i])) { + inputValue = dom_1.toHex(inputValue); + currentValue = dom_1.toHex(currentValue); + } + if (currentValue !== inputValue) { + outputStyles[webKitStyles[i]] = inputValue; + } + } + var outputStyle = dom_1.serializeStyle(outputStyles, 'span'); + if (outputStyle) { + return before + ' style="' + outputStyle + '"' + after; + } + return before + after; + }); + } else { + content = content.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, '$1$3'); + } + content = content.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi, function (all, before, value, after) { + return before + ' style="' + value + '"' + after; + }); + return content; + }; + var removeUnderlineAndFontInAnchor = function (editor, root) { + editor.$('a', root).find('font,u').each(function (i, node) { + editor.dom.remove(node, true); + }); + }; + var setup = function (editor) { + if (global$a.webkit) { + addPreProcessFilter(editor, removeWebKitStyles); + } + if (global$a.ie) { + addPreProcessFilter(editor, removeExplorerBrElementsAfterBlocks); + addPostProcessFilter(editor, removeUnderlineAndFontInAnchor); + } + }; + + var makeSetupHandler = function (editor, clipboard) { + return function (api) { + api.setActive(clipboard.pasteFormat.get() === 'text'); + var pastePlainTextToggleHandler = function (e) { + return api.setActive(e.state); + }; + editor.on('PastePlainTextToggle', pastePlainTextToggleHandler); + return function () { + return editor.off('PastePlainTextToggle', pastePlainTextToggleHandler); + }; + }; + }; + var register = function (editor, clipboard) { + var onAction = function () { + return editor.execCommand('mceTogglePlainTextPaste'); + }; + editor.ui.registry.addToggleButton('pastetext', { + active: false, + icon: 'paste-text', + tooltip: 'Paste as text', + onAction: onAction, + onSetup: makeSetupHandler(editor, clipboard) + }); + editor.ui.registry.addToggleMenuItem('pastetext', { + text: 'Paste as text', + icon: 'paste-text', + onAction: onAction, + onSetup: makeSetupHandler(editor, clipboard) + }); + }; + + function Plugin () { + global$b.add('paste', function (editor) { + if (hasProPlugin(editor) === false) { + var draggingInternallyState = Cell(false); + var pasteFormat = Cell(isPasteAsTextEnabled(editor) ? 'text' : 'html'); + var clipboard = Clipboard(editor, pasteFormat); + setup(editor); + register(editor, clipboard); + register$2(editor, clipboard); + setup$1(editor); + register$1(editor); + setup$2(editor, clipboard, draggingInternallyState); + return get(clipboard); + } + }); + } + + Plugin(); + +}()); + +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.6 (2022-10-19) + */ +(function () { + 'use strict'; + + var global$2 = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var global$1 = tinymce.util.Tools.resolve('tinymce.Env'); + + var global = tinymce.util.Tools.resolve('tinymce.util.Tools'); + + var getContentStyle = function (editor) { + return editor.getParam('content_style', '', 'string'); + }; + var shouldUseContentCssCors = function (editor) { + return editor.getParam('content_css_cors', false, 'boolean'); + }; + var getBodyClassByHash = function (editor) { + var bodyClass = editor.getParam('body_class', '', 'hash'); + return bodyClass[editor.id] || ''; + }; + var getBodyClass = function (editor) { + var bodyClass = editor.getParam('body_class', '', 'string'); + if (bodyClass.indexOf('=') === -1) { + return bodyClass; + } else { + return getBodyClassByHash(editor); + } + }; + var getBodyIdByHash = function (editor) { + var bodyId = editor.getParam('body_id', '', 'hash'); + return bodyId[editor.id] || bodyId; + }; + var getBodyId = function (editor) { + var bodyId = editor.getParam('body_id', 'tinymce', 'string'); + if (bodyId.indexOf('=') === -1) { + return bodyId; + } else { + return getBodyIdByHash(editor); + } + }; + + var getPreviewHtml = function (editor) { + var headHtml = ''; + var encode = editor.dom.encode; + var contentStyle = getContentStyle(editor); + headHtml += ''; + var cors = shouldUseContentCssCors(editor) ? ' crossorigin="anonymous"' : ''; + global.each(editor.contentCSS, function (url) { + headHtml += ''; + }); + if (contentStyle) { + headHtml += ''; + } + var bodyId = getBodyId(editor); + var bodyClass = getBodyClass(editor); + var isMetaKeyPressed = global$1.mac ? 'e.metaKey' : 'e.ctrlKey && !e.altKey'; + var preventClicksOnLinksScript = ' '; + var directionality = editor.getBody().dir; + var dirAttr = directionality ? ' dir="' + encode(directionality) + '"' : ''; + var previewHtml = '' + '' + '' + headHtml + '' + '' + editor.getContent() + preventClicksOnLinksScript + '' + ''; + return previewHtml; + }; + + var open = function (editor) { + var content = getPreviewHtml(editor); + var dataApi = editor.windowManager.open({ + title: 'Preview', + size: 'large', + body: { + type: 'panel', + items: [{ + name: 'preview', + type: 'iframe', + sandboxed: true + }] + }, + buttons: [{ + type: 'cancel', + name: 'close', + text: 'Close', + primary: true + }], + initialData: { preview: content } + }); + dataApi.focus('close'); + }; + + var register$1 = function (editor) { + editor.addCommand('mcePreview', function () { + open(editor); + }); + }; + + var register = function (editor) { + var onAction = function () { + return editor.execCommand('mcePreview'); + }; + editor.ui.registry.addButton('preview', { + icon: 'preview', + tooltip: 'Preview', + onAction: onAction + }); + editor.ui.registry.addMenuItem('preview', { + icon: 'preview', + text: 'Preview', + onAction: onAction + }); + }; + + function Plugin () { + global$2.add('preview', function (editor) { + register$1(editor); + register(editor); + }); + } + + Plugin(); + +}()); + +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.6 (2022-10-19) + */ +(function () { + 'use strict'; + + var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var global = tinymce.util.Tools.resolve('tinymce.Env'); + + var register$1 = function (editor) { + editor.addCommand('mcePrint', function () { + if (global.browser.isIE()) { + editor.getDoc().execCommand('print', false, null); + } else { + editor.getWin().print(); + } + }); + }; + + var register = function (editor) { + var onAction = function () { + return editor.execCommand('mcePrint'); + }; + editor.ui.registry.addButton('print', { + icon: 'print', + tooltip: 'Print', + onAction: onAction + }); + editor.ui.registry.addMenuItem('print', { + text: 'Print...', + icon: 'print', + onAction: onAction + }); + }; + + function Plugin () { + global$1.add('print', function (editor) { + register$1(editor); + register(editor); + editor.addShortcut('Meta+P', '', 'mcePrint'); + }); + } + + Plugin(); + +}()); + +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.6 (2022-10-19) + */ +(function () { + 'use strict'; + + var global$3 = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var unique = 0; + var generate = function (prefix) { + var date = new Date(); + var time = date.getTime(); + var random = Math.floor(Math.random() * 1000000000); + unique++; + return prefix + '_' + random + unique + String(time); + }; + + var createTableHtml = function (cols, rows) { + var html = ''; + html += ''; + for (var y = 0; y < rows; y++) { + html += ''; + for (var x = 0; x < cols; x++) { + html += ''; + } + html += ''; + } + html += ''; + html += '

'; + return html; + }; + var getInsertedElement = function (editor) { + var elms = editor.dom.select('*[data-mce-id]'); + return elms[0]; + }; + var insertTableHtml = function (editor, cols, rows) { + editor.undoManager.transact(function () { + editor.insertContent(createTableHtml(cols, rows)); + var tableElm = getInsertedElement(editor); + tableElm.removeAttribute('data-mce-id'); + var cellElm = editor.dom.select('td,th', tableElm); + editor.selection.setCursorLocation(cellElm[0], 0); + }); + }; + var insertTable = function (editor, cols, rows) { + editor.plugins.table ? editor.plugins.table.insertTable(cols, rows) : insertTableHtml(editor, cols, rows); + }; + var insertBlob = function (editor, base64, blob) { + var blobCache = editor.editorUpload.blobCache; + var blobInfo = blobCache.create(generate('mceu'), blob, base64); + blobCache.add(blobInfo); + editor.insertContent(editor.dom.createHTML('img', { src: blobInfo.blobUri() })); + }; + + var global$2 = tinymce.util.Tools.resolve('tinymce.util.Promise'); + + var blobToBase64 = function (blob) { + return new global$2(function (resolve) { + var reader = new FileReader(); + reader.onloadend = function () { + resolve(reader.result.split(',')[1]); + }; + reader.readAsDataURL(blob); + }); + }; + + var global$1 = tinymce.util.Tools.resolve('tinymce.Env'); + + var global = tinymce.util.Tools.resolve('tinymce.util.Delay'); + + var pickFile = function (editor) { + return new global$2(function (resolve) { + var fileInput = document.createElement('input'); + fileInput.type = 'file'; + fileInput.accept = 'image/*'; + fileInput.style.position = 'fixed'; + fileInput.style.left = '0'; + fileInput.style.top = '0'; + fileInput.style.opacity = '0.001'; + document.body.appendChild(fileInput); + var changeHandler = function (e) { + resolve(Array.prototype.slice.call(e.target.files)); + }; + fileInput.addEventListener('change', changeHandler); + var cancelHandler = function (e) { + var cleanup = function () { + resolve([]); + fileInput.parentNode.removeChild(fileInput); + }; + if (global$1.os.isAndroid() && e.type !== 'remove') { + global.setEditorTimeout(editor, cleanup, 0); + } else { + cleanup(); + } + editor.off('focusin remove', cancelHandler); + }; + editor.on('focusin remove', cancelHandler); + fileInput.click(); + }); + }; + + var setupButtons = function (editor) { + editor.ui.registry.addButton('quickimage', { + icon: 'image', + tooltip: 'Insert image', + onAction: function () { + pickFile(editor).then(function (files) { + if (files.length > 0) { + var blob_1 = files[0]; + blobToBase64(blob_1).then(function (base64) { + insertBlob(editor, base64, blob_1); + }); + } + }); + } + }); + editor.ui.registry.addButton('quicktable', { + icon: 'table', + tooltip: 'Insert table', + onAction: function () { + insertTable(editor, 2, 2); + } + }); + }; + + var typeOf = function (x) { + var t = typeof x; + if (x === null) { + return 'null'; + } else if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) { + return 'array'; + } else if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) { + return 'string'; + } else { + return t; + } + }; + var isType = function (type) { + return function (value) { + return typeOf(value) === type; + }; + }; + var isSimpleType = function (type) { + return function (value) { + return typeof value === type; + }; + }; + var eq = function (t) { + return function (a) { + return t === a; + }; + }; + var isString = isType('string'); + var isObject = isType('object'); + var isArray = isType('array'); + var isBoolean = isSimpleType('boolean'); + var isUndefined = eq(undefined); + var isFunction = isSimpleType('function'); + + var noop = function () { + }; + var constant = function (value) { + return function () { + return value; + }; + }; + var identity = function (x) { + return x; + }; + var never = constant(false); + var always = constant(true); + + var none = function () { + return NONE; + }; + var NONE = function () { + var call = function (thunk) { + return thunk(); + }; + var id = identity; + var me = { + fold: function (n, _s) { + return n(); + }, + isSome: never, + isNone: always, + getOr: id, + getOrThunk: call, + getOrDie: function (msg) { + throw new Error(msg || 'error: getOrDie called on none.'); + }, + getOrNull: constant(null), + getOrUndefined: constant(undefined), + or: id, + orThunk: call, + map: none, + each: noop, + bind: none, + exists: never, + forall: always, + filter: function () { + return none(); + }, + toArray: function () { + return []; + }, + toString: constant('none()') + }; + return me; + }(); + var some = function (a) { + var constant_a = constant(a); + var self = function () { + return me; + }; + var bind = function (f) { + return f(a); + }; + var me = { + fold: function (n, s) { + return s(a); + }, + isSome: always, + isNone: never, + getOr: constant_a, + getOrThunk: constant_a, + getOrDie: constant_a, + getOrNull: constant_a, + getOrUndefined: constant_a, + or: self, + orThunk: self, + map: function (f) { + return some(f(a)); + }, + each: function (f) { + f(a); + }, + bind: bind, + exists: bind, + forall: bind, + filter: function (f) { + return f(a) ? me : NONE; + }, + toArray: function () { + return [a]; + }, + toString: function () { + return 'some(' + a + ')'; + } + }; + return me; + }; + var from = function (value) { + return value === null || value === undefined ? NONE : some(value); + }; + var Optional = { + some: some, + none: none, + from: from + }; + + function ClosestOrAncestor (is, ancestor, scope, a, isRoot) { + if (is(scope, a)) { + return Optional.some(scope); + } else if (isFunction(isRoot) && isRoot(scope)) { + return Optional.none(); + } else { + return ancestor(scope, a, isRoot); + } + } + + var ELEMENT = 1; + + var fromHtml = function (html, scope) { + var doc = scope || document; + var div = doc.createElement('div'); + div.innerHTML = html; + if (!div.hasChildNodes() || div.childNodes.length > 1) { + console.error('HTML does not have a single root node', html); + throw new Error('HTML must have a single root node'); + } + return fromDom(div.childNodes[0]); + }; + var fromTag = function (tag, scope) { + var doc = scope || document; + var node = doc.createElement(tag); + return fromDom(node); + }; + var fromText = function (text, scope) { + var doc = scope || document; + var node = doc.createTextNode(text); + return fromDom(node); + }; + var fromDom = function (node) { + if (node === null || node === undefined) { + throw new Error('Node cannot be null or undefined'); + } + return { dom: node }; + }; + var fromPoint = function (docElm, x, y) { + return Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom); + }; + var SugarElement = { + fromHtml: fromHtml, + fromTag: fromTag, + fromText: fromText, + fromDom: fromDom, + fromPoint: fromPoint + }; + + var is = function (element, selector) { + var dom = element.dom; + if (dom.nodeType !== ELEMENT) { + return false; + } else { + var elem = dom; + if (elem.matches !== undefined) { + return elem.matches(selector); + } else if (elem.msMatchesSelector !== undefined) { + return elem.msMatchesSelector(selector); + } else if (elem.webkitMatchesSelector !== undefined) { + return elem.webkitMatchesSelector(selector); + } else if (elem.mozMatchesSelector !== undefined) { + return elem.mozMatchesSelector(selector); + } else { + throw new Error('Browser lacks native selectors'); + } + } + }; + + typeof window !== 'undefined' ? window : Function('return this;')(); + + var name = function (element) { + var r = element.dom.nodeName; + return r.toLowerCase(); + }; + + var ancestor$1 = function (scope, predicate, isRoot) { + var element = scope.dom; + var stop = isFunction(isRoot) ? isRoot : never; + while (element.parentNode) { + element = element.parentNode; + var el = SugarElement.fromDom(element); + if (predicate(el)) { + return Optional.some(el); + } else if (stop(el)) { + break; + } + } + return Optional.none(); + }; + var closest$1 = function (scope, predicate, isRoot) { + var is = function (s, test) { + return test(s); + }; + return ClosestOrAncestor(is, ancestor$1, scope, predicate, isRoot); + }; + + var ancestor = function (scope, selector, isRoot) { + return ancestor$1(scope, function (e) { + return is(e, selector); + }, isRoot); + }; + var closest = function (scope, selector, isRoot) { + var is$1 = function (element, selector) { + return is(element, selector); + }; + return ClosestOrAncestor(is$1, ancestor, scope, selector, isRoot); + }; + + var validDefaultOrDie = function (value, predicate) { + if (predicate(value)) { + return true; + } + throw new Error('Default value doesn\'t match requested type.'); + }; + var items = function (value, defaultValue) { + if (isArray(value) || isObject(value)) { + throw new Error('expected a string but found: ' + value); + } + if (isUndefined(value)) { + return defaultValue; + } + if (isBoolean(value)) { + return value === false ? '' : defaultValue; + } + return value; + }; + var getToolbarItemsOr_ = function (predicate) { + return function (editor, name, defaultValue) { + validDefaultOrDie(defaultValue, predicate); + var value = editor.getParam(name, defaultValue); + return items(value, defaultValue); + }; + }; + var getToolbarItemsOr = getToolbarItemsOr_(isString); + + var getTextSelectionToolbarItems = function (editor) { + return getToolbarItemsOr(editor, 'quickbars_selection_toolbar', 'bold italic | quicklink h2 h3 blockquote'); + }; + var getInsertToolbarItems = function (editor) { + return getToolbarItemsOr(editor, 'quickbars_insert_toolbar', 'quickimage quicktable'); + }; + var getImageToolbarItems = function (editor) { + return getToolbarItemsOr(editor, 'quickbars_image_toolbar', 'alignleft aligncenter alignright'); + }; + + var addToEditor$1 = function (editor) { + var insertToolbarItems = getInsertToolbarItems(editor); + if (insertToolbarItems.trim().length > 0) { + editor.ui.registry.addContextToolbar('quickblock', { + predicate: function (node) { + var sugarNode = SugarElement.fromDom(node); + var textBlockElementsMap = editor.schema.getTextBlockElements(); + var isRoot = function (elem) { + return elem.dom === editor.getBody(); + }; + return closest(sugarNode, 'table', isRoot).fold(function () { + return closest$1(sugarNode, function (elem) { + return name(elem) in textBlockElementsMap && editor.dom.isEmpty(elem.dom); + }, isRoot).isSome(); + }, never); + }, + items: insertToolbarItems, + position: 'line', + scope: 'editor' + }); + } + }; + + var addToEditor = function (editor) { + var isEditable = function (node) { + return editor.dom.getContentEditableParent(node) !== 'false'; + }; + var isImage = function (node) { + return node.nodeName === 'IMG' || node.nodeName === 'FIGURE' && /image/i.test(node.className); + }; + var imageToolbarItems = getImageToolbarItems(editor); + if (imageToolbarItems.trim().length > 0) { + editor.ui.registry.addContextToolbar('imageselection', { + predicate: isImage, + items: imageToolbarItems, + position: 'node' + }); + } + var textToolbarItems = getTextSelectionToolbarItems(editor); + if (textToolbarItems.trim().length > 0) { + editor.ui.registry.addContextToolbar('textselection', { + predicate: function (node) { + return !isImage(node) && !editor.selection.isCollapsed() && isEditable(node); + }, + items: textToolbarItems, + position: 'selection', + scope: 'editor' + }); + } + }; + + function Plugin () { + global$3.add('quickbars', function (editor) { + setupButtons(editor); + addToEditor$1(editor); + addToEditor(editor); + }); + } + + Plugin(); + +}()); + +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.6 (2022-10-19) + */ +(function () { + 'use strict'; + + var global$2 = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); + + var global = tinymce.util.Tools.resolve('tinymce.util.Tools'); + + var enableWhenDirty = function (editor) { + return editor.getParam('save_enablewhendirty', true); + }; + var hasOnSaveCallback = function (editor) { + return !!editor.getParam('save_onsavecallback'); + }; + var hasOnCancelCallback = function (editor) { + return !!editor.getParam('save_oncancelcallback'); + }; + + var displayErrorMessage = function (editor, message) { + editor.notificationManager.open({ + text: message, + type: 'error' + }); + }; + var save = function (editor) { + var formObj = global$1.DOM.getParent(editor.id, 'form'); + if (enableWhenDirty(editor) && !editor.isDirty()) { + return; + } + editor.save(); + if (hasOnSaveCallback(editor)) { + editor.execCallback('save_onsavecallback', editor); + editor.nodeChanged(); + return; + } + if (formObj) { + editor.setDirty(false); + if (!formObj.onsubmit || formObj.onsubmit()) { + if (typeof formObj.submit === 'function') { + formObj.submit(); + } else { + displayErrorMessage(editor, 'Error: Form submit field collision.'); + } + } + editor.nodeChanged(); + } else { + displayErrorMessage(editor, 'Error: No form element found.'); + } + }; + var cancel = function (editor) { + var h = global.trim(editor.startContent); + if (hasOnCancelCallback(editor)) { + editor.execCallback('save_oncancelcallback', editor); + return; + } + editor.resetContent(h); + }; + + var register$1 = function (editor) { + editor.addCommand('mceSave', function () { + save(editor); + }); + editor.addCommand('mceCancel', function () { + cancel(editor); + }); + }; + + var stateToggle = function (editor) { + return function (api) { + var handler = function () { + api.setDisabled(enableWhenDirty(editor) && !editor.isDirty()); + }; + handler(); + editor.on('NodeChange dirty', handler); + return function () { + return editor.off('NodeChange dirty', handler); + }; + }; + }; + var register = function (editor) { + editor.ui.registry.addButton('save', { + icon: 'save', + tooltip: 'Save', + disabled: true, + onAction: function () { + return editor.execCommand('mceSave'); + }, + onSetup: stateToggle(editor) + }); + editor.ui.registry.addButton('cancel', { + icon: 'cancel', + tooltip: 'Cancel', + disabled: true, + onAction: function () { + return editor.execCommand('mceCancel'); + }, + onSetup: stateToggle(editor) + }); + editor.addShortcut('Meta+S', '', 'mceSave'); + }; + + function Plugin () { + global$2.add('save', function (editor) { + register(editor); + register$1(editor); + }); + } + + Plugin(); + +}()); + +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.6 (2022-10-19) + */ +(function () { + 'use strict'; + + var Cell = function (initial) { + var value = initial; + var get = function () { + return value; + }; + var set = function (v) { + value = v; + }; + return { + get: get, + set: set + }; + }; + + var global$3 = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var __assign = function () { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + var typeOf = function (x) { + var t = typeof x; + if (x === null) { + return 'null'; + } else if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) { + return 'array'; + } else if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) { + return 'string'; + } else { + return t; + } + }; + var isType$1 = function (type) { + return function (value) { + return typeOf(value) === type; + }; + }; + var isSimpleType = function (type) { + return function (value) { + return typeof value === type; + }; + }; + var isString = isType$1('string'); + var isArray = isType$1('array'); + var isBoolean = isSimpleType('boolean'); + var isNumber = isSimpleType('number'); + + var noop = function () { + }; + var constant = function (value) { + return function () { + return value; + }; + }; + var identity = function (x) { + return x; + }; + var never = constant(false); + var always = constant(true); + + var punctuationStr = '[!-#%-*,-\\/:;?@\\[-\\]_{}\xA1\xAB\xB7\xBB\xBF;\xB7\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1361-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u3008\u3009\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30\u2E31\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uff3f\uFF5B\uFF5D\uFF5F-\uFF65]'; + + var punctuation$1 = constant(punctuationStr); + + var none = function () { + return NONE; + }; + var NONE = function () { + var call = function (thunk) { + return thunk(); + }; + var id = identity; + var me = { + fold: function (n, _s) { + return n(); + }, + isSome: never, + isNone: always, + getOr: id, + getOrThunk: call, + getOrDie: function (msg) { + throw new Error(msg || 'error: getOrDie called on none.'); + }, + getOrNull: constant(null), + getOrUndefined: constant(undefined), + or: id, + orThunk: call, + map: none, + each: noop, + bind: none, + exists: never, + forall: always, + filter: function () { + return none(); + }, + toArray: function () { + return []; + }, + toString: constant('none()') + }; + return me; + }(); + var some = function (a) { + var constant_a = constant(a); + var self = function () { + return me; + }; + var bind = function (f) { + return f(a); + }; + var me = { + fold: function (n, s) { + return s(a); + }, + isSome: always, + isNone: never, + getOr: constant_a, + getOrThunk: constant_a, + getOrDie: constant_a, + getOrNull: constant_a, + getOrUndefined: constant_a, + or: self, + orThunk: self, + map: function (f) { + return some(f(a)); + }, + each: function (f) { + f(a); + }, + bind: bind, + exists: bind, + forall: bind, + filter: function (f) { + return f(a) ? me : NONE; + }, + toArray: function () { + return [a]; + }, + toString: function () { + return 'some(' + a + ')'; + } + }; + return me; + }; + var from = function (value) { + return value === null || value === undefined ? NONE : some(value); + }; + var Optional = { + some: some, + none: none, + from: from + }; + + var punctuation = punctuation$1; + + var global$2 = tinymce.util.Tools.resolve('tinymce.Env'); + + var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools'); + + var nativeSlice = Array.prototype.slice; + var nativePush = Array.prototype.push; + var map = function (xs, f) { + var len = xs.length; + var r = new Array(len); + for (var i = 0; i < len; i++) { + var x = xs[i]; + r[i] = f(x, i); + } + return r; + }; + var each = function (xs, f) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + f(x, i); + } + }; + var eachr = function (xs, f) { + for (var i = xs.length - 1; i >= 0; i--) { + var x = xs[i]; + f(x, i); + } + }; + var groupBy = function (xs, f) { + if (xs.length === 0) { + return []; + } else { + var wasType = f(xs[0]); + var r = []; + var group = []; + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + var type = f(x); + if (type !== wasType) { + r.push(group); + group = []; + } + wasType = type; + group.push(x); + } + if (group.length !== 0) { + r.push(group); + } + return r; + } + }; + var foldl = function (xs, f, acc) { + each(xs, function (x, i) { + acc = f(acc, x, i); + }); + return acc; + }; + var flatten = function (xs) { + var r = []; + for (var i = 0, len = xs.length; i < len; ++i) { + if (!isArray(xs[i])) { + throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs); + } + nativePush.apply(r, xs[i]); + } + return r; + }; + var bind = function (xs, f) { + return flatten(map(xs, f)); + }; + var sort = function (xs, comparator) { + var copy = nativeSlice.call(xs, 0); + copy.sort(comparator); + return copy; + }; + + var hasOwnProperty = Object.hasOwnProperty; + var has = function (obj, key) { + return hasOwnProperty.call(obj, key); + }; + + typeof window !== 'undefined' ? window : Function('return this;')(); + + var DOCUMENT = 9; + var DOCUMENT_FRAGMENT = 11; + var ELEMENT = 1; + var TEXT = 3; + + var type = function (element) { + return element.dom.nodeType; + }; + var isType = function (t) { + return function (element) { + return type(element) === t; + }; + }; + var isText$1 = isType(TEXT); + + var rawSet = function (dom, key, value) { + if (isString(value) || isBoolean(value) || isNumber(value)) { + dom.setAttribute(key, value + ''); + } else { + console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom); + throw new Error('Attribute value was not simple'); + } + }; + var set = function (element, key, value) { + rawSet(element.dom, key, value); + }; + + var compareDocumentPosition = function (a, b, match) { + return (a.compareDocumentPosition(b) & match) !== 0; + }; + var documentPositionPreceding = function (a, b) { + return compareDocumentPosition(a, b, Node.DOCUMENT_POSITION_PRECEDING); + }; + + var fromHtml = function (html, scope) { + var doc = scope || document; + var div = doc.createElement('div'); + div.innerHTML = html; + if (!div.hasChildNodes() || div.childNodes.length > 1) { + console.error('HTML does not have a single root node', html); + throw new Error('HTML must have a single root node'); + } + return fromDom(div.childNodes[0]); + }; + var fromTag = function (tag, scope) { + var doc = scope || document; + var node = doc.createElement(tag); + return fromDom(node); + }; + var fromText = function (text, scope) { + var doc = scope || document; + var node = doc.createTextNode(text); + return fromDom(node); + }; + var fromDom = function (node) { + if (node === null || node === undefined) { + throw new Error('Node cannot be null or undefined'); + } + return { dom: node }; + }; + var fromPoint = function (docElm, x, y) { + return Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom); + }; + var SugarElement = { + fromHtml: fromHtml, + fromTag: fromTag, + fromText: fromText, + fromDom: fromDom, + fromPoint: fromPoint + }; + + var bypassSelector = function (dom) { + return dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT && dom.nodeType !== DOCUMENT_FRAGMENT || dom.childElementCount === 0; + }; + var all = function (selector, scope) { + var base = scope === undefined ? document : scope.dom; + return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), SugarElement.fromDom); + }; + + var parent = function (element) { + return Optional.from(element.dom.parentNode).map(SugarElement.fromDom); + }; + var children = function (element) { + return map(element.dom.childNodes, SugarElement.fromDom); + }; + var spot = function (element, offset) { + return { + element: element, + offset: offset + }; + }; + var leaf = function (element, offset) { + var cs = children(element); + return cs.length > 0 && offset < cs.length ? spot(cs[offset], 0) : spot(element, offset); + }; + + var before = function (marker, element) { + var parent$1 = parent(marker); + parent$1.each(function (v) { + v.dom.insertBefore(element.dom, marker.dom); + }); + }; + var append = function (parent, element) { + parent.dom.appendChild(element.dom); + }; + var wrap = function (element, wrapper) { + before(element, wrapper); + append(wrapper, element); + }; + + var NodeValue = function (is, name) { + var get = function (element) { + if (!is(element)) { + throw new Error('Can only get ' + name + ' value of a ' + name + ' node'); + } + return getOption(element).getOr(''); + }; + var getOption = function (element) { + return is(element) ? Optional.from(element.dom.nodeValue) : Optional.none(); + }; + var set = function (element, value) { + if (!is(element)) { + throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node'); + } + element.dom.nodeValue = value; + }; + return { + get: get, + getOption: getOption, + set: set + }; + }; + + var api = NodeValue(isText$1, 'text'); + var get$1 = function (element) { + return api.get(element); + }; + + var descendants = function (scope, selector) { + return all(selector, scope); + }; + + var global = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker'); + + var isSimpleBoundary = function (dom, node) { + return dom.isBlock(node) || has(dom.schema.getShortEndedElements(), node.nodeName); + }; + var isContentEditableFalse = function (dom, node) { + return dom.getContentEditable(node) === 'false'; + }; + var isContentEditableTrueInCef = function (dom, node) { + return dom.getContentEditable(node) === 'true' && dom.getContentEditableParent(node.parentNode) === 'false'; + }; + var isHidden = function (dom, node) { + return !dom.isBlock(node) && has(dom.schema.getWhiteSpaceElements(), node.nodeName); + }; + var isBoundary = function (dom, node) { + return isSimpleBoundary(dom, node) || isContentEditableFalse(dom, node) || isHidden(dom, node) || isContentEditableTrueInCef(dom, node); + }; + var isText = function (node) { + return node.nodeType === 3; + }; + var nuSection = function () { + return { + sOffset: 0, + fOffset: 0, + elements: [] + }; + }; + var toLeaf = function (node, offset) { + return leaf(SugarElement.fromDom(node), offset); + }; + var walk = function (dom, walkerFn, startNode, callbacks, endNode, skipStart) { + if (skipStart === void 0) { + skipStart = true; + } + var next = skipStart ? walkerFn(false) : startNode; + while (next) { + var isCefNode = isContentEditableFalse(dom, next); + if (isCefNode || isHidden(dom, next)) { + var stopWalking = isCefNode ? callbacks.cef(next) : callbacks.boundary(next); + if (stopWalking) { + break; + } else { + next = walkerFn(true); + continue; + } + } else if (isSimpleBoundary(dom, next)) { + if (callbacks.boundary(next)) { + break; + } + } else if (isText(next)) { + callbacks.text(next); + } + if (next === endNode) { + break; + } else { + next = walkerFn(false); + } + } + }; + var collectTextToBoundary = function (dom, section, node, rootNode, forwards) { + if (isBoundary(dom, node)) { + return; + } + var rootBlock = dom.getParent(rootNode, dom.isBlock); + var walker = new global(node, rootBlock); + var walkerFn = forwards ? walker.next.bind(walker) : walker.prev.bind(walker); + walk(dom, walkerFn, node, { + boundary: always, + cef: always, + text: function (next) { + if (forwards) { + section.fOffset += next.length; + } else { + section.sOffset += next.length; + } + section.elements.push(SugarElement.fromDom(next)); + } + }); + }; + var collect = function (dom, rootNode, startNode, endNode, callbacks, skipStart) { + if (skipStart === void 0) { + skipStart = true; + } + var walker = new global(startNode, rootNode); + var sections = []; + var current = nuSection(); + collectTextToBoundary(dom, current, startNode, rootNode, false); + var finishSection = function () { + if (current.elements.length > 0) { + sections.push(current); + current = nuSection(); + } + return false; + }; + walk(dom, walker.next.bind(walker), startNode, { + boundary: finishSection, + cef: function (node) { + finishSection(); + if (callbacks) { + sections.push.apply(sections, callbacks.cef(node)); + } + return false; + }, + text: function (next) { + current.elements.push(SugarElement.fromDom(next)); + if (callbacks) { + callbacks.text(next, current); + } + } + }, endNode, skipStart); + if (endNode) { + collectTextToBoundary(dom, current, endNode, rootNode, true); + } + finishSection(); + return sections; + }; + var collectRangeSections = function (dom, rng) { + var start = toLeaf(rng.startContainer, rng.startOffset); + var startNode = start.element.dom; + var end = toLeaf(rng.endContainer, rng.endOffset); + var endNode = end.element.dom; + return collect(dom, rng.commonAncestorContainer, startNode, endNode, { + text: function (node, section) { + if (node === endNode) { + section.fOffset += node.length - end.offset; + } else if (node === startNode) { + section.sOffset += start.offset; + } + }, + cef: function (node) { + var sections = bind(descendants(SugarElement.fromDom(node), '*[contenteditable=true]'), function (e) { + var ceTrueNode = e.dom; + return collect(dom, ceTrueNode, ceTrueNode); + }); + return sort(sections, function (a, b) { + return documentPositionPreceding(a.elements[0].dom, b.elements[0].dom) ? 1 : -1; + }); + } + }, false); + }; + var fromRng = function (dom, rng) { + return rng.collapsed ? [] : collectRangeSections(dom, rng); + }; + var fromNode = function (dom, node) { + var rng = dom.createRng(); + rng.selectNode(node); + return fromRng(dom, rng); + }; + var fromNodes = function (dom, nodes) { + return bind(nodes, function (node) { + return fromNode(dom, node); + }); + }; + + var find$2 = function (text, pattern, start, finish) { + if (start === void 0) { + start = 0; + } + if (finish === void 0) { + finish = text.length; + } + var regex = pattern.regex; + regex.lastIndex = start; + var results = []; + var match; + while (match = regex.exec(text)) { + var matchedText = match[pattern.matchIndex]; + var matchStart = match.index + match[0].indexOf(matchedText); + var matchFinish = matchStart + matchedText.length; + if (matchFinish > finish) { + break; + } + results.push({ + start: matchStart, + finish: matchFinish + }); + regex.lastIndex = matchFinish; + } + return results; + }; + var extract = function (elements, matches) { + var nodePositions = foldl(elements, function (acc, element) { + var content = get$1(element); + var start = acc.last; + var finish = start + content.length; + var positions = bind(matches, function (match, matchIdx) { + if (match.start < finish && match.finish > start) { + return [{ + element: element, + start: Math.max(start, match.start) - start, + finish: Math.min(finish, match.finish) - start, + matchId: matchIdx + }]; + } else { + return []; + } + }); + return { + results: acc.results.concat(positions), + last: finish + }; + }, { + results: [], + last: 0 + }).results; + return groupBy(nodePositions, function (position) { + return position.matchId; + }); + }; + + var find$1 = function (pattern, sections) { + return bind(sections, function (section) { + var elements = section.elements; + var content = map(elements, get$1).join(''); + var positions = find$2(content, pattern, section.sOffset, content.length - section.fOffset); + return extract(elements, positions); + }); + }; + var mark = function (matches, replacementNode) { + eachr(matches, function (match, idx) { + eachr(match, function (pos) { + var wrapper = SugarElement.fromDom(replacementNode.cloneNode(false)); + set(wrapper, 'data-mce-index', idx); + var textNode = pos.element.dom; + if (textNode.length === pos.finish && pos.start === 0) { + wrap(pos.element, wrapper); + } else { + if (textNode.length !== pos.finish) { + textNode.splitText(pos.finish); + } + var matchNode = textNode.splitText(pos.start); + wrap(SugarElement.fromDom(matchNode), wrapper); + } + }); + }); + }; + var findAndMark = function (dom, pattern, node, replacementNode) { + var textSections = fromNode(dom, node); + var matches = find$1(pattern, textSections); + mark(matches, replacementNode); + return matches.length; + }; + var findAndMarkInSelection = function (dom, pattern, selection, replacementNode) { + var bookmark = selection.getBookmark(); + var nodes = dom.select('td[data-mce-selected],th[data-mce-selected]'); + var textSections = nodes.length > 0 ? fromNodes(dom, nodes) : fromRng(dom, selection.getRng()); + var matches = find$1(pattern, textSections); + mark(matches, replacementNode); + selection.moveToBookmark(bookmark); + return matches.length; + }; + + var getElmIndex = function (elm) { + var value = elm.getAttribute('data-mce-index'); + if (typeof value === 'number') { + return '' + value; + } + return value; + }; + var markAllMatches = function (editor, currentSearchState, pattern, inSelection) { + var marker = editor.dom.create('span', { 'data-mce-bogus': 1 }); + marker.className = 'mce-match-marker'; + var node = editor.getBody(); + done(editor, currentSearchState, false); + if (inSelection) { + return findAndMarkInSelection(editor.dom, pattern, editor.selection, marker); + } else { + return findAndMark(editor.dom, pattern, node, marker); + } + }; + var unwrap = function (node) { + var parentNode = node.parentNode; + if (node.firstChild) { + parentNode.insertBefore(node.firstChild, node); + } + node.parentNode.removeChild(node); + }; + var findSpansByIndex = function (editor, index) { + var spans = []; + var nodes = global$1.toArray(editor.getBody().getElementsByTagName('span')); + if (nodes.length) { + for (var i = 0; i < nodes.length; i++) { + var nodeIndex = getElmIndex(nodes[i]); + if (nodeIndex === null || !nodeIndex.length) { + continue; + } + if (nodeIndex === index.toString()) { + spans.push(nodes[i]); + } + } + } + return spans; + }; + var moveSelection = function (editor, currentSearchState, forward) { + var searchState = currentSearchState.get(); + var testIndex = searchState.index; + var dom = editor.dom; + forward = forward !== false; + if (forward) { + if (testIndex + 1 === searchState.count) { + testIndex = 0; + } else { + testIndex++; + } + } else { + if (testIndex - 1 === -1) { + testIndex = searchState.count - 1; + } else { + testIndex--; + } + } + dom.removeClass(findSpansByIndex(editor, searchState.index), 'mce-match-marker-selected'); + var spans = findSpansByIndex(editor, testIndex); + if (spans.length) { + dom.addClass(findSpansByIndex(editor, testIndex), 'mce-match-marker-selected'); + editor.selection.scrollIntoView(spans[0]); + return testIndex; + } + return -1; + }; + var removeNode = function (dom, node) { + var parent = node.parentNode; + dom.remove(node); + if (dom.isEmpty(parent)) { + dom.remove(parent); + } + }; + var escapeSearchText = function (text, wholeWord) { + var escapedText = text.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&').replace(/\s/g, '[^\\S\\r\\n\\uFEFF]'); + var wordRegex = '(' + escapedText + ')'; + return wholeWord ? '(?:^|\\s|' + punctuation() + ')' + wordRegex + ('(?=$|\\s|' + punctuation() + ')') : wordRegex; + }; + var find = function (editor, currentSearchState, text, matchCase, wholeWord, inSelection) { + var selection = editor.selection; + var escapedText = escapeSearchText(text, wholeWord); + var isForwardSelection = selection.isForward(); + var pattern = { + regex: new RegExp(escapedText, matchCase ? 'g' : 'gi'), + matchIndex: 1 + }; + var count = markAllMatches(editor, currentSearchState, pattern, inSelection); + if (global$2.browser.isSafari()) { + selection.setRng(selection.getRng(), isForwardSelection); + } + if (count) { + var newIndex = moveSelection(editor, currentSearchState, true); + currentSearchState.set({ + index: newIndex, + count: count, + text: text, + matchCase: matchCase, + wholeWord: wholeWord, + inSelection: inSelection + }); + } + return count; + }; + var next = function (editor, currentSearchState) { + var index = moveSelection(editor, currentSearchState, true); + currentSearchState.set(__assign(__assign({}, currentSearchState.get()), { index: index })); + }; + var prev = function (editor, currentSearchState) { + var index = moveSelection(editor, currentSearchState, false); + currentSearchState.set(__assign(__assign({}, currentSearchState.get()), { index: index })); + }; + var isMatchSpan = function (node) { + var matchIndex = getElmIndex(node); + return matchIndex !== null && matchIndex.length > 0; + }; + var replace = function (editor, currentSearchState, text, forward, all) { + var searchState = currentSearchState.get(); + var currentIndex = searchState.index; + var currentMatchIndex, nextIndex = currentIndex; + forward = forward !== false; + var node = editor.getBody(); + var nodes = global$1.grep(global$1.toArray(node.getElementsByTagName('span')), isMatchSpan); + for (var i = 0; i < nodes.length; i++) { + var nodeIndex = getElmIndex(nodes[i]); + var matchIndex = currentMatchIndex = parseInt(nodeIndex, 10); + if (all || matchIndex === searchState.index) { + if (text.length) { + nodes[i].firstChild.nodeValue = text; + unwrap(nodes[i]); + } else { + removeNode(editor.dom, nodes[i]); + } + while (nodes[++i]) { + matchIndex = parseInt(getElmIndex(nodes[i]), 10); + if (matchIndex === currentMatchIndex) { + removeNode(editor.dom, nodes[i]); + } else { + i--; + break; + } + } + if (forward) { + nextIndex--; + } + } else if (currentMatchIndex > currentIndex) { + nodes[i].setAttribute('data-mce-index', String(currentMatchIndex - 1)); + } + } + currentSearchState.set(__assign(__assign({}, searchState), { + count: all ? 0 : searchState.count - 1, + index: nextIndex + })); + if (forward) { + next(editor, currentSearchState); + } else { + prev(editor, currentSearchState); + } + return !all && currentSearchState.get().count > 0; + }; + var done = function (editor, currentSearchState, keepEditorSelection) { + var startContainer, endContainer; + var searchState = currentSearchState.get(); + var nodes = global$1.toArray(editor.getBody().getElementsByTagName('span')); + for (var i = 0; i < nodes.length; i++) { + var nodeIndex = getElmIndex(nodes[i]); + if (nodeIndex !== null && nodeIndex.length) { + if (nodeIndex === searchState.index.toString()) { + if (!startContainer) { + startContainer = nodes[i].firstChild; + } + endContainer = nodes[i].firstChild; + } + unwrap(nodes[i]); + } + } + currentSearchState.set(__assign(__assign({}, searchState), { + index: -1, + count: 0, + text: '' + })); + if (startContainer && endContainer) { + var rng = editor.dom.createRng(); + rng.setStart(startContainer, 0); + rng.setEnd(endContainer, endContainer.data.length); + if (keepEditorSelection !== false) { + editor.selection.setRng(rng); + } + return rng; + } + }; + var hasNext = function (editor, currentSearchState) { + return currentSearchState.get().count > 1; + }; + var hasPrev = function (editor, currentSearchState) { + return currentSearchState.get().count > 1; + }; + + var get = function (editor, currentState) { + var done$1 = function (keepEditorSelection) { + return done(editor, currentState, keepEditorSelection); + }; + var find$1 = function (text, matchCase, wholeWord, inSelection) { + if (inSelection === void 0) { + inSelection = false; + } + return find(editor, currentState, text, matchCase, wholeWord, inSelection); + }; + var next$1 = function () { + return next(editor, currentState); + }; + var prev$1 = function () { + return prev(editor, currentState); + }; + var replace$1 = function (text, forward, all) { + return replace(editor, currentState, text, forward, all); + }; + return { + done: done$1, + find: find$1, + next: next$1, + prev: prev$1, + replace: replace$1 + }; + }; + + var singleton = function (doRevoke) { + var subject = Cell(Optional.none()); + var revoke = function () { + return subject.get().each(doRevoke); + }; + var clear = function () { + revoke(); + subject.set(Optional.none()); + }; + var isSet = function () { + return subject.get().isSome(); + }; + var get = function () { + return subject.get(); + }; + var set = function (s) { + revoke(); + subject.set(Optional.some(s)); + }; + return { + clear: clear, + isSet: isSet, + get: get, + set: set + }; + }; + var value = function () { + var subject = singleton(noop); + var on = function (f) { + return subject.get().each(f); + }; + return __assign(__assign({}, subject), { on: on }); + }; + + var open = function (editor, currentSearchState) { + var dialogApi = value(); + editor.undoManager.add(); + var selectedText = global$1.trim(editor.selection.getContent({ format: 'text' })); + var updateButtonStates = function (api) { + var updateNext = hasNext(editor, currentSearchState) ? api.enable : api.disable; + updateNext('next'); + var updatePrev = hasPrev(editor, currentSearchState) ? api.enable : api.disable; + updatePrev('prev'); + }; + var updateSearchState = function (api) { + var data = api.getData(); + var current = currentSearchState.get(); + currentSearchState.set(__assign(__assign({}, current), { + matchCase: data.matchcase, + wholeWord: data.wholewords, + inSelection: data.inselection + })); + }; + var disableAll = function (api, disable) { + var buttons = [ + 'replace', + 'replaceall', + 'prev', + 'next' + ]; + var toggle = disable ? api.disable : api.enable; + each(buttons, toggle); + }; + var notFoundAlert = function (api) { + editor.windowManager.alert('Could not find the specified string.', function () { + api.focus('findtext'); + }); + }; + var focusButtonIfRequired = function (api, name) { + if (global$2.browser.isSafari() && global$2.deviceType.isTouch() && (name === 'find' || name === 'replace' || name === 'replaceall')) { + api.focus(name); + } + }; + var reset = function (api) { + done(editor, currentSearchState, false); + disableAll(api, true); + updateButtonStates(api); + }; + var doFind = function (api) { + var data = api.getData(); + var last = currentSearchState.get(); + if (!data.findtext.length) { + reset(api); + return; + } + if (last.text === data.findtext && last.matchCase === data.matchcase && last.wholeWord === data.wholewords) { + next(editor, currentSearchState); + } else { + var count = find(editor, currentSearchState, data.findtext, data.matchcase, data.wholewords, data.inselection); + if (count <= 0) { + notFoundAlert(api); + } + disableAll(api, count === 0); + } + updateButtonStates(api); + }; + var initialState = currentSearchState.get(); + var initialData = { + findtext: selectedText, + replacetext: '', + wholewords: initialState.wholeWord, + matchcase: initialState.matchCase, + inselection: initialState.inSelection + }; + var spec = { + title: 'Find and Replace', + size: 'normal', + body: { + type: 'panel', + items: [ + { + type: 'bar', + items: [ + { + type: 'input', + name: 'findtext', + placeholder: 'Find', + maximized: true, + inputMode: 'search' + }, + { + type: 'button', + name: 'prev', + text: 'Previous', + icon: 'action-prev', + disabled: true, + borderless: true + }, + { + type: 'button', + name: 'next', + text: 'Next', + icon: 'action-next', + disabled: true, + borderless: true + } + ] + }, + { + type: 'input', + name: 'replacetext', + placeholder: 'Replace with', + inputMode: 'search' + } + ] + }, + buttons: [ + { + type: 'menu', + name: 'options', + icon: 'preferences', + tooltip: 'Preferences', + align: 'start', + items: [ + { + type: 'togglemenuitem', + name: 'matchcase', + text: 'Match case' + }, + { + type: 'togglemenuitem', + name: 'wholewords', + text: 'Find whole words only' + }, + { + type: 'togglemenuitem', + name: 'inselection', + text: 'Find in selection' + } + ] + }, + { + type: 'custom', + name: 'find', + text: 'Find', + primary: true + }, + { + type: 'custom', + name: 'replace', + text: 'Replace', + disabled: true + }, + { + type: 'custom', + name: 'replaceall', + text: 'Replace all', + disabled: true + } + ], + initialData: initialData, + onChange: function (api, details) { + if (details.name === 'findtext' && currentSearchState.get().count > 0) { + reset(api); + } + }, + onAction: function (api, details) { + var data = api.getData(); + switch (details.name) { + case 'find': + doFind(api); + break; + case 'replace': + if (!replace(editor, currentSearchState, data.replacetext)) { + reset(api); + } else { + updateButtonStates(api); + } + break; + case 'replaceall': + replace(editor, currentSearchState, data.replacetext, true, true); + reset(api); + break; + case 'prev': + prev(editor, currentSearchState); + updateButtonStates(api); + break; + case 'next': + next(editor, currentSearchState); + updateButtonStates(api); + break; + case 'matchcase': + case 'wholewords': + case 'inselection': + updateSearchState(api); + reset(api); + break; + } + focusButtonIfRequired(api, details.name); + }, + onSubmit: function (api) { + doFind(api); + focusButtonIfRequired(api, 'find'); + }, + onClose: function () { + editor.focus(); + done(editor, currentSearchState); + editor.undoManager.add(); + } + }; + dialogApi.set(editor.windowManager.open(spec, { inline: 'toolbar' })); + }; + + var register$1 = function (editor, currentSearchState) { + editor.addCommand('SearchReplace', function () { + open(editor, currentSearchState); + }); + }; + + var showDialog = function (editor, currentSearchState) { + return function () { + open(editor, currentSearchState); + }; + }; + var register = function (editor, currentSearchState) { + editor.ui.registry.addMenuItem('searchreplace', { + text: 'Find and replace...', + shortcut: 'Meta+F', + onAction: showDialog(editor, currentSearchState), + icon: 'search' + }); + editor.ui.registry.addButton('searchreplace', { + tooltip: 'Find and replace', + onAction: showDialog(editor, currentSearchState), + icon: 'search' + }); + editor.shortcuts.add('Meta+F', '', showDialog(editor, currentSearchState)); + }; + + function Plugin () { + global$3.add('searchreplace', function (editor) { + var currentSearchState = Cell({ + index: -1, + count: 0, + text: '', + matchCase: false, + wholeWord: false, + inSelection: false + }); + register$1(editor, currentSearchState); + register(editor, currentSearchState); + return get(editor, currentSearchState); + }); + } + + Plugin(); + +}()); + +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.6 (2022-10-19) + */ +(function () { + 'use strict'; + + var Cell = function (initial) { + var value = initial; + var get = function () { + return value; + }; + var set = function (v) { + value = v; + }; + return { + get: get, + set: set + }; + }; + + var global$3 = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var hasProPlugin = function (editor) { + if (editor.hasPlugin('tinymcespellchecker', true)) { + if (typeof window.console !== 'undefined' && window.console.log) { + window.console.log('Spell Checker Pro is incompatible with Spell Checker plugin! ' + 'Remove \'spellchecker\' from the \'plugins\' option.'); + } + return true; + } else { + return false; + } + }; + + var hasOwnProperty = Object.hasOwnProperty; + var isEmpty = function (r) { + for (var x in r) { + if (hasOwnProperty.call(r, x)) { + return false; + } + } + return true; + }; + + var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools'); + + var global$1 = tinymce.util.Tools.resolve('tinymce.util.URI'); + + var global = tinymce.util.Tools.resolve('tinymce.util.XHR'); + + var fireSpellcheckStart = function (editor) { + return editor.fire('SpellcheckStart'); + }; + var fireSpellcheckEnd = function (editor) { + return editor.fire('SpellcheckEnd'); + }; + + var getLanguages = function (editor) { + var defaultLanguages = 'English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr_FR,German=de,Italian=it,Polish=pl,Portuguese=pt_BR,Spanish=es,Swedish=sv'; + return editor.getParam('spellchecker_languages', defaultLanguages); + }; + var getLanguage = function (editor) { + var defaultLanguage = editor.getParam('language', 'en'); + return editor.getParam('spellchecker_language', defaultLanguage); + }; + var getRpcUrl = function (editor) { + return editor.getParam('spellchecker_rpc_url'); + }; + var getSpellcheckerCallback = function (editor) { + return editor.getParam('spellchecker_callback'); + }; + var getSpellcheckerWordcharPattern = function (editor) { + var defaultPattern = new RegExp('[^' + '\\s!"#$%&()*+,-./:;<=>?@[\\]^_{|}`' + '\xA7\xA9\xAB\xAE\xB1\xB6\xB7\xB8\xBB' + '\xBC\xBD\xBE\xBF\xD7\xF7\xA4\u201D\u201C\u201E\xA0\u2002\u2003\u2009' + ']+', 'g'); + return editor.getParam('spellchecker_wordchar_pattern', defaultPattern); + }; + + var isContentEditableFalse = function (node) { + return node && node.nodeType === 1 && node.contentEditable === 'false'; + }; + var DomTextMatcher = function (node, editor) { + var m, matches = []; + var dom = editor.dom; + var blockElementsMap = editor.schema.getBlockElements(); + var hiddenTextElementsMap = editor.schema.getWhiteSpaceElements(); + var shortEndedElementsMap = editor.schema.getShortEndedElements(); + var createMatch = function (m, data) { + if (!m[0]) { + throw new Error('findAndReplaceDOMText cannot handle zero-length matches'); + } + return { + start: m.index, + end: m.index + m[0].length, + text: m[0], + data: data + }; + }; + var getText = function (node) { + if (node.nodeType === 3) { + return node.data; + } + if (hiddenTextElementsMap[node.nodeName] && !blockElementsMap[node.nodeName]) { + return ''; + } + if (isContentEditableFalse(node)) { + return '\n'; + } + var txt = ''; + if (blockElementsMap[node.nodeName] || shortEndedElementsMap[node.nodeName]) { + txt += '\n'; + } + if (node = node.firstChild) { + do { + txt += getText(node); + } while (node = node.nextSibling); + } + return txt; + }; + var stepThroughMatches = function (node, matches, replaceFn) { + var startNode, endNode, startNodeIndex, endNodeIndex, innerNodes = [], atIndex = 0, curNode = node, matchLocation, matchIndex = 0; + matches = matches.slice(0); + matches.sort(function (a, b) { + return a.start - b.start; + }); + matchLocation = matches.shift(); + out: + while (true) { + if (blockElementsMap[curNode.nodeName] || shortEndedElementsMap[curNode.nodeName] || isContentEditableFalse(curNode)) { + atIndex++; + } + if (curNode.nodeType === 3) { + if (!endNode && curNode.length + atIndex >= matchLocation.end) { + endNode = curNode; + endNodeIndex = matchLocation.end - atIndex; + } else if (startNode) { + innerNodes.push(curNode); + } + if (!startNode && curNode.length + atIndex > matchLocation.start) { + startNode = curNode; + startNodeIndex = matchLocation.start - atIndex; + } + atIndex += curNode.length; + } + if (startNode && endNode) { + curNode = replaceFn({ + startNode: startNode, + startNodeIndex: startNodeIndex, + endNode: endNode, + endNodeIndex: endNodeIndex, + innerNodes: innerNodes, + match: matchLocation.text, + matchIndex: matchIndex + }); + atIndex -= endNode.length - endNodeIndex; + startNode = null; + endNode = null; + innerNodes = []; + matchLocation = matches.shift(); + matchIndex++; + if (!matchLocation) { + break; + } + } else if ((!hiddenTextElementsMap[curNode.nodeName] || blockElementsMap[curNode.nodeName]) && curNode.firstChild) { + if (!isContentEditableFalse(curNode)) { + curNode = curNode.firstChild; + continue; + } + } else if (curNode.nextSibling) { + curNode = curNode.nextSibling; + continue; + } + while (true) { + if (curNode.nextSibling) { + curNode = curNode.nextSibling; + break; + } else if (curNode.parentNode !== node) { + curNode = curNode.parentNode; + } else { + break out; + } + } + } + }; + var genReplacer = function (callback) { + var makeReplacementNode = function (fill, matchIndex) { + var match = matches[matchIndex]; + if (!match.stencil) { + match.stencil = callback(match); + } + var clone = match.stencil.cloneNode(false); + clone.setAttribute('data-mce-index', '' + matchIndex); + if (fill) { + clone.appendChild(dom.doc.createTextNode(fill)); + } + return clone; + }; + return function (range) { + var before; + var after; + var parentNode; + var startNode = range.startNode; + var endNode = range.endNode; + var matchIndex = range.matchIndex; + var doc = dom.doc; + if (startNode === endNode) { + var node_1 = startNode; + parentNode = node_1.parentNode; + if (range.startNodeIndex > 0) { + before = doc.createTextNode(node_1.data.substring(0, range.startNodeIndex)); + parentNode.insertBefore(before, node_1); + } + var el = makeReplacementNode(range.match, matchIndex); + parentNode.insertBefore(el, node_1); + if (range.endNodeIndex < node_1.length) { + after = doc.createTextNode(node_1.data.substring(range.endNodeIndex)); + parentNode.insertBefore(after, node_1); + } + node_1.parentNode.removeChild(node_1); + return el; + } + before = doc.createTextNode(startNode.data.substring(0, range.startNodeIndex)); + after = doc.createTextNode(endNode.data.substring(range.endNodeIndex)); + var elA = makeReplacementNode(startNode.data.substring(range.startNodeIndex), matchIndex); + for (var i = 0, l = range.innerNodes.length; i < l; ++i) { + var innerNode = range.innerNodes[i]; + var innerEl = makeReplacementNode(innerNode.data, matchIndex); + innerNode.parentNode.replaceChild(innerEl, innerNode); + } + var elB = makeReplacementNode(endNode.data.substring(0, range.endNodeIndex), matchIndex); + parentNode = startNode.parentNode; + parentNode.insertBefore(before, startNode); + parentNode.insertBefore(elA, startNode); + parentNode.removeChild(startNode); + parentNode = endNode.parentNode; + parentNode.insertBefore(elB, endNode); + parentNode.insertBefore(after, endNode); + parentNode.removeChild(endNode); + return elB; + }; + }; + var unwrapElement = function (element) { + var parentNode = element.parentNode; + while (element.childNodes.length > 0) { + parentNode.insertBefore(element.childNodes[0], element); + } + parentNode.removeChild(element); + }; + var hasClass = function (elm) { + return elm.className.indexOf('mce-spellchecker-word') !== -1; + }; + var getWrappersByIndex = function (index) { + var elements = node.getElementsByTagName('*'), wrappers = []; + index = typeof index === 'number' ? '' + index : null; + for (var i = 0; i < elements.length; i++) { + var element = elements[i], dataIndex = element.getAttribute('data-mce-index'); + if (dataIndex !== null && dataIndex.length && hasClass(element)) { + if (dataIndex === index || index === null) { + wrappers.push(element); + } + } + } + return wrappers; + }; + var indexOf = function (match) { + var i = matches.length; + while (i--) { + if (matches[i] === match) { + return i; + } + } + return -1; + }; + function filter(callback) { + var filteredMatches = []; + each(function (match, i) { + if (callback(match, i)) { + filteredMatches.push(match); + } + }); + matches = filteredMatches; + return this; + } + function each(callback) { + for (var i = 0, l = matches.length; i < l; i++) { + if (callback(matches[i], i) === false) { + break; + } + } + return this; + } + function wrap(callback) { + if (matches.length) { + stepThroughMatches(node, matches, genReplacer(callback)); + } + return this; + } + function find(regex, data) { + if (text && regex.global) { + while (m = regex.exec(text)) { + matches.push(createMatch(m, data)); + } + } + return this; + } + function unwrap(match) { + var i; + var elements = getWrappersByIndex(match ? indexOf(match) : null); + i = elements.length; + while (i--) { + unwrapElement(elements[i]); + } + return this; + } + var matchFromElement = function (element) { + return matches[element.getAttribute('data-mce-index')]; + }; + var elementFromMatch = function (match) { + return getWrappersByIndex(indexOf(match))[0]; + }; + function add(start, length, data) { + matches.push({ + start: start, + end: start + length, + text: text.substr(start, length), + data: data + }); + return this; + } + var rangeFromMatch = function (match) { + var wrappers = getWrappersByIndex(indexOf(match)); + var rng = editor.dom.createRng(); + rng.setStartBefore(wrappers[0]); + rng.setEndAfter(wrappers[wrappers.length - 1]); + return rng; + }; + var replace = function (match, text) { + var rng = rangeFromMatch(match); + rng.deleteContents(); + if (text.length > 0) { + rng.insertNode(editor.dom.doc.createTextNode(text)); + } + return rng; + }; + function reset() { + matches.splice(0, matches.length); + unwrap(); + return this; + } + var text = getText(node); + return { + text: text, + matches: matches, + each: each, + filter: filter, + reset: reset, + matchFromElement: matchFromElement, + elementFromMatch: elementFromMatch, + find: find, + add: add, + wrap: wrap, + unwrap: unwrap, + replace: replace, + rangeFromMatch: rangeFromMatch, + indexOf: indexOf + }; + }; + + var getTextMatcher = function (editor, textMatcherState) { + if (!textMatcherState.get()) { + var textMatcher = DomTextMatcher(editor.getBody(), editor); + textMatcherState.set(textMatcher); + } + return textMatcherState.get(); + }; + var defaultSpellcheckCallback = function (editor, pluginUrl, currentLanguageState) { + return function (method, text, doneCallback, errorCallback) { + var data = { + method: method, + lang: currentLanguageState.get() + }; + var postData = ''; + data[method === 'addToDictionary' ? 'word' : 'text'] = text; + global$2.each(data, function (value, key) { + if (postData) { + postData += '&'; + } + postData += key + '=' + encodeURIComponent(value); + }); + global.send({ + url: new global$1(pluginUrl).toAbsolute(getRpcUrl(editor)), + type: 'post', + content_type: 'application/x-www-form-urlencoded', + data: postData, + success: function (result) { + var parseResult = JSON.parse(result); + if (!parseResult) { + var message = editor.translate('Server response wasn\'t proper JSON.'); + errorCallback(message); + } else if (parseResult.error) { + errorCallback(parseResult.error); + } else { + doneCallback(parseResult); + } + }, + error: function () { + var message = editor.translate('The spelling service was not found: (') + getRpcUrl(editor) + editor.translate(')'); + errorCallback(message); + } + }); + }; + }; + var sendRpcCall = function (editor, pluginUrl, currentLanguageState, name, data, successCallback, errorCallback) { + var userSpellcheckCallback = getSpellcheckerCallback(editor); + var spellCheckCallback = userSpellcheckCallback ? userSpellcheckCallback : defaultSpellcheckCallback(editor, pluginUrl, currentLanguageState); + spellCheckCallback.call(editor.plugins.spellchecker, name, data, successCallback, errorCallback); + }; + var spellcheck = function (editor, pluginUrl, startedState, textMatcherState, lastSuggestionsState, currentLanguageState) { + if (finish(editor, startedState, textMatcherState)) { + return; + } + var errorCallback = function (message) { + editor.notificationManager.open({ + text: message, + type: 'error' + }); + editor.setProgressState(false); + finish(editor, startedState, textMatcherState); + }; + var successCallback = function (data) { + markErrors(editor, startedState, textMatcherState, lastSuggestionsState, data); + }; + editor.setProgressState(true); + sendRpcCall(editor, pluginUrl, currentLanguageState, 'spellcheck', getTextMatcher(editor, textMatcherState).text, successCallback, errorCallback); + editor.focus(); + }; + var checkIfFinished = function (editor, startedState, textMatcherState) { + if (!editor.dom.select('span.mce-spellchecker-word').length) { + finish(editor, startedState, textMatcherState); + } + }; + var addToDictionary = function (editor, pluginUrl, startedState, textMatcherState, currentLanguageState, word, spans) { + editor.setProgressState(true); + sendRpcCall(editor, pluginUrl, currentLanguageState, 'addToDictionary', word, function () { + editor.setProgressState(false); + editor.dom.remove(spans, true); + checkIfFinished(editor, startedState, textMatcherState); + }, function (message) { + editor.notificationManager.open({ + text: message, + type: 'error' + }); + editor.setProgressState(false); + }); + }; + var ignoreWord = function (editor, startedState, textMatcherState, word, spans, all) { + editor.selection.collapse(); + if (all) { + global$2.each(editor.dom.select('span.mce-spellchecker-word'), function (span) { + if (span.getAttribute('data-mce-word') === word) { + editor.dom.remove(span, true); + } + }); + } else { + editor.dom.remove(spans, true); + } + checkIfFinished(editor, startedState, textMatcherState); + }; + var finish = function (editor, startedState, textMatcherState) { + var bookmark = editor.selection.getBookmark(); + getTextMatcher(editor, textMatcherState).reset(); + editor.selection.moveToBookmark(bookmark); + textMatcherState.set(null); + if (startedState.get()) { + startedState.set(false); + fireSpellcheckEnd(editor); + return true; + } + }; + var getElmIndex = function (elm) { + var value = elm.getAttribute('data-mce-index'); + if (typeof value === 'number') { + return '' + value; + } + return value; + }; + var findSpansByIndex = function (editor, index) { + var spans = []; + var nodes = global$2.toArray(editor.getBody().getElementsByTagName('span')); + if (nodes.length) { + for (var i = 0; i < nodes.length; i++) { + var nodeIndex = getElmIndex(nodes[i]); + if (nodeIndex === null || !nodeIndex.length) { + continue; + } + if (nodeIndex === index.toString()) { + spans.push(nodes[i]); + } + } + } + return spans; + }; + var markErrors = function (editor, startedState, textMatcherState, lastSuggestionsState, data) { + var hasDictionarySupport = !!data.dictionary; + var suggestions = data.words; + editor.setProgressState(false); + if (isEmpty(suggestions)) { + var message = editor.translate('No misspellings found.'); + editor.notificationManager.open({ + text: message, + type: 'info' + }); + startedState.set(false); + return; + } + lastSuggestionsState.set({ + suggestions: suggestions, + hasDictionarySupport: hasDictionarySupport + }); + var bookmark = editor.selection.getBookmark(); + getTextMatcher(editor, textMatcherState).find(getSpellcheckerWordcharPattern(editor)).filter(function (match) { + return !!suggestions[match.text]; + }).wrap(function (match) { + return editor.dom.create('span', { + 'class': 'mce-spellchecker-word', + 'aria-invalid': 'spelling', + 'data-mce-bogus': 1, + 'data-mce-word': match.text + }); + }); + editor.selection.moveToBookmark(bookmark); + startedState.set(true); + fireSpellcheckStart(editor); + }; + + var get = function (editor, startedState, lastSuggestionsState, textMatcherState, currentLanguageState) { + var getWordCharPattern = function () { + return getSpellcheckerWordcharPattern(editor); + }; + var markErrors$1 = function (data) { + markErrors(editor, startedState, textMatcherState, lastSuggestionsState, data); + }; + return { + getTextMatcher: textMatcherState.get, + getWordCharPattern: getWordCharPattern, + markErrors: markErrors$1, + getLanguage: currentLanguageState.get + }; + }; + + var register$1 = function (editor, pluginUrl, startedState, textMatcherState, lastSuggestionsState, currentLanguageState) { + editor.addCommand('mceSpellCheck', function () { + spellcheck(editor, pluginUrl, startedState, textMatcherState, lastSuggestionsState, currentLanguageState); + }); + }; + + var __assign = function () { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + var spellcheckerEvents = 'SpellcheckStart SpellcheckEnd'; + var buildMenuItems = function (listName, languageValues) { + var items = []; + global$2.each(languageValues, function (languageValue) { + items.push({ + selectable: true, + text: languageValue.name, + data: languageValue.value + }); + }); + return items; + }; + var getItems = function (editor) { + return global$2.map(getLanguages(editor).split(','), function (langPair) { + var langPairs = langPair.split('='); + return { + name: langPairs[0], + value: langPairs[1] + }; + }); + }; + var register = function (editor, pluginUrl, startedState, textMatcherState, currentLanguageState, lastSuggestionsState) { + var languageMenuItems = buildMenuItems('Language', getItems(editor)); + var startSpellchecking = function () { + spellcheck(editor, pluginUrl, startedState, textMatcherState, lastSuggestionsState, currentLanguageState); + }; + var buttonArgs = { + tooltip: 'Spellcheck', + onAction: startSpellchecking, + icon: 'spell-check', + onSetup: function (buttonApi) { + var setButtonState = function () { + buttonApi.setActive(startedState.get()); + }; + editor.on(spellcheckerEvents, setButtonState); + return function () { + editor.off(spellcheckerEvents, setButtonState); + }; + } + }; + var splitButtonArgs = __assign(__assign({}, buttonArgs), { + type: 'splitbutton', + select: function (value) { + return value === currentLanguageState.get(); + }, + fetch: function (callback) { + var items = global$2.map(languageMenuItems, function (languageItem) { + return { + type: 'choiceitem', + value: languageItem.data, + text: languageItem.text + }; + }); + callback(items); + }, + onItemAction: function (splitButtonApi, value) { + currentLanguageState.set(value); + } + }); + if (languageMenuItems.length > 1) { + editor.ui.registry.addSplitButton('spellchecker', splitButtonArgs); + } else { + editor.ui.registry.addToggleButton('spellchecker', buttonArgs); + } + editor.ui.registry.addToggleMenuItem('spellchecker', { + text: 'Spellcheck', + icon: 'spell-check', + onSetup: function (menuApi) { + menuApi.setActive(startedState.get()); + var setMenuItemCheck = function () { + menuApi.setActive(startedState.get()); + }; + editor.on(spellcheckerEvents, setMenuItemCheck); + return function () { + editor.off(spellcheckerEvents, setMenuItemCheck); + }; + }, + onAction: startSpellchecking + }); + }; + + var ignoreAll = true; + var getSuggestions = function (editor, pluginUrl, lastSuggestionsState, startedState, textMatcherState, currentLanguageState, word, spans) { + var items = []; + var suggestions = lastSuggestionsState.get().suggestions[word]; + global$2.each(suggestions, function (suggestion) { + items.push({ + text: suggestion, + onAction: function () { + editor.insertContent(editor.dom.encode(suggestion)); + editor.dom.remove(spans); + checkIfFinished(editor, startedState, textMatcherState); + } + }); + }); + var hasDictionarySupport = lastSuggestionsState.get().hasDictionarySupport; + if (hasDictionarySupport) { + items.push({ type: 'separator' }); + items.push({ + text: 'Add to dictionary', + onAction: function () { + addToDictionary(editor, pluginUrl, startedState, textMatcherState, currentLanguageState, word, spans); + } + }); + } + items.push.apply(items, [ + { type: 'separator' }, + { + text: 'Ignore', + onAction: function () { + ignoreWord(editor, startedState, textMatcherState, word, spans); + } + }, + { + text: 'Ignore all', + onAction: function () { + ignoreWord(editor, startedState, textMatcherState, word, spans, ignoreAll); + } + } + ]); + return items; + }; + var setup = function (editor, pluginUrl, lastSuggestionsState, startedState, textMatcherState, currentLanguageState) { + var update = function (element) { + var target = element; + if (target.className === 'mce-spellchecker-word') { + var spans = findSpansByIndex(editor, getElmIndex(target)); + if (spans.length > 0) { + var rng = editor.dom.createRng(); + rng.setStartBefore(spans[0]); + rng.setEndAfter(spans[spans.length - 1]); + editor.selection.setRng(rng); + return getSuggestions(editor, pluginUrl, lastSuggestionsState, startedState, textMatcherState, currentLanguageState, target.getAttribute('data-mce-word'), spans); + } + } else { + return []; + } + }; + editor.ui.registry.addContextMenu('spellchecker', { update: update }); + }; + + function Plugin () { + global$3.add('spellchecker', function (editor, pluginUrl) { + if (hasProPlugin(editor) === false) { + var startedState = Cell(false); + var currentLanguageState = Cell(getLanguage(editor)); + var textMatcherState = Cell(null); + var lastSuggestionsState = Cell(null); + register(editor, pluginUrl, startedState, textMatcherState, currentLanguageState, lastSuggestionsState); + setup(editor, pluginUrl, lastSuggestionsState, startedState, textMatcherState, currentLanguageState); + register$1(editor, pluginUrl, startedState, textMatcherState, lastSuggestionsState, currentLanguageState); + return get(editor, startedState, lastSuggestionsState, textMatcherState, currentLanguageState); + } + }); + } + + Plugin(); + +}()); + +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.6 (2022-10-19) + */ +(function () { + 'use strict'; + + var global$6 = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var global$5 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); + + var global$4 = tinymce.util.Tools.resolve('tinymce.EditorManager'); + + var global$3 = tinymce.util.Tools.resolve('tinymce.Env'); + + var global$2 = tinymce.util.Tools.resolve('tinymce.util.Delay'); + + var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools'); + + var global = tinymce.util.Tools.resolve('tinymce.util.VK'); + + var getTabFocusElements = function (editor) { + return editor.getParam('tabfocus_elements', ':prev,:next'); + }; + var getTabFocus = function (editor) { + return editor.getParam('tab_focus', getTabFocusElements(editor)); + }; + + var DOM = global$5.DOM; + var tabCancel = function (e) { + if (e.keyCode === global.TAB && !e.ctrlKey && !e.altKey && !e.metaKey) { + e.preventDefault(); + } + }; + var setup = function (editor) { + var tabHandler = function (e) { + var x; + if (e.keyCode !== global.TAB || e.ctrlKey || e.altKey || e.metaKey || e.isDefaultPrevented()) { + return; + } + var find = function (direction) { + var el = DOM.select(':input:enabled,*[tabindex]:not(iframe)'); + var canSelectRecursive = function (e) { + var castElem = e; + return e.nodeName === 'BODY' || castElem.type !== 'hidden' && castElem.style.display !== 'none' && castElem.style.visibility !== 'hidden' && canSelectRecursive(e.parentNode); + }; + var canSelect = function (el) { + return /INPUT|TEXTAREA|BUTTON/.test(el.tagName) && global$4.get(e.id) && el.tabIndex !== -1 && canSelectRecursive(el); + }; + global$1.each(el, function (e, i) { + if (e.id === editor.id) { + x = i; + return false; + } + }); + if (direction > 0) { + for (var i = x + 1; i < el.length; i++) { + if (canSelect(el[i])) { + return el[i]; + } + } + } else { + for (var i = x - 1; i >= 0; i--) { + if (canSelect(el[i])) { + return el[i]; + } + } + } + return null; + }; + var v = global$1.explode(getTabFocus(editor)); + if (v.length === 1) { + v[1] = v[0]; + v[0] = ':prev'; + } + var el; + if (e.shiftKey) { + if (v[0] === ':prev') { + el = find(-1); + } else { + el = DOM.get(v[0]); + } + } else { + if (v[1] === ':next') { + el = find(1); + } else { + el = DOM.get(v[1]); + } + } + if (el) { + var focusEditor = global$4.get(el.id || el.name); + if (el.id && focusEditor) { + focusEditor.focus(); + } else { + global$2.setTimeout(function () { + if (!global$3.webkit) { + window.focus(); + } + el.focus(); + }, 10); + } + e.preventDefault(); + } + }; + editor.on('init', function () { + if (editor.inline) { + DOM.setAttrib(editor.getBody(), 'tabIndex', null); + } + editor.on('keyup', tabCancel); + if (global$3.gecko) { + editor.on('keypress keydown', tabHandler); + } else { + editor.on('keydown', tabHandler); + } + }); + }; + + function Plugin () { + global$6.add('tabfocus', function (editor) { + setup(editor); + }); + } + + Plugin(); + +}()); + +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.6 (2022-10-19) + */ +(function () { + 'use strict'; + + var typeOf = function (x) { + var t = typeof x; + if (x === null) { + return 'null'; + } else if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) { + return 'array'; + } else if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) { + return 'string'; + } else { + return t; + } + }; + var isType$1 = function (type) { + return function (value) { + return typeOf(value) === type; + }; + }; + var isSimpleType = function (type) { + return function (value) { + return typeof value === type; + }; + }; + var eq$2 = function (t) { + return function (a) { + return t === a; + }; + }; + var isString = isType$1('string'); + var isObject = isType$1('object'); + var isArray = isType$1('array'); + var isNull = eq$2(null); + var isBoolean = isSimpleType('boolean'); + var isUndefined = eq$2(undefined); + var isNullable = function (a) { + return a === null || a === undefined; + }; + var isNonNullable = function (a) { + return !isNullable(a); + }; + var isFunction = isSimpleType('function'); + var isNumber = isSimpleType('number'); + + var noop = function () { + }; + var compose = function (fa, fb) { + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return fa(fb.apply(null, args)); + }; + }; + var compose1 = function (fbc, fab) { + return function (a) { + return fbc(fab(a)); + }; + }; + var constant = function (value) { + return function () { + return value; + }; + }; + var identity = function (x) { + return x; + }; + var tripleEquals = function (a, b) { + return a === b; + }; + function curry(fn) { + var initialArgs = []; + for (var _i = 1; _i < arguments.length; _i++) { + initialArgs[_i - 1] = arguments[_i]; + } + return function () { + var restArgs = []; + for (var _i = 0; _i < arguments.length; _i++) { + restArgs[_i] = arguments[_i]; + } + var all = initialArgs.concat(restArgs); + return fn.apply(null, all); + }; + } + var not = function (f) { + return function (t) { + return !f(t); + }; + }; + var die = function (msg) { + return function () { + throw new Error(msg); + }; + }; + var never = constant(false); + var always = constant(true); + + var none$2 = function () { + return NONE; + }; + var NONE = function () { + var call = function (thunk) { + return thunk(); + }; + var id = identity; + var me = { + fold: function (n, _s) { + return n(); + }, + isSome: never, + isNone: always, + getOr: id, + getOrThunk: call, + getOrDie: function (msg) { + throw new Error(msg || 'error: getOrDie called on none.'); + }, + getOrNull: constant(null), + getOrUndefined: constant(undefined), + or: id, + orThunk: call, + map: none$2, + each: noop, + bind: none$2, + exists: never, + forall: always, + filter: function () { + return none$2(); + }, + toArray: function () { + return []; + }, + toString: constant('none()') + }; + return me; + }(); + var some = function (a) { + var constant_a = constant(a); + var self = function () { + return me; + }; + var bind = function (f) { + return f(a); + }; + var me = { + fold: function (n, s) { + return s(a); + }, + isSome: always, + isNone: never, + getOr: constant_a, + getOrThunk: constant_a, + getOrDie: constant_a, + getOrNull: constant_a, + getOrUndefined: constant_a, + or: self, + orThunk: self, + map: function (f) { + return some(f(a)); + }, + each: function (f) { + f(a); + }, + bind: bind, + exists: bind, + forall: bind, + filter: function (f) { + return f(a) ? me : NONE; + }, + toArray: function () { + return [a]; + }, + toString: function () { + return 'some(' + a + ')'; + } + }; + return me; + }; + var from$1 = function (value) { + return value === null || value === undefined ? NONE : some(value); + }; + var Optional = { + some: some, + none: none$2, + from: from$1 + }; + + var nativeSlice = Array.prototype.slice; + var nativeIndexOf = Array.prototype.indexOf; + var nativePush = Array.prototype.push; + var rawIndexOf = function (ts, t) { + return nativeIndexOf.call(ts, t); + }; + var contains$2 = function (xs, x) { + return rawIndexOf(xs, x) > -1; + }; + var exists = function (xs, pred) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i)) { + return true; + } + } + return false; + }; + var range$1 = function (num, f) { + var r = []; + for (var i = 0; i < num; i++) { + r.push(f(i)); + } + return r; + }; + var map$1 = function (xs, f) { + var len = xs.length; + var r = new Array(len); + for (var i = 0; i < len; i++) { + var x = xs[i]; + r[i] = f(x, i); + } + return r; + }; + var each$2 = function (xs, f) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + f(x, i); + } + }; + var eachr = function (xs, f) { + for (var i = xs.length - 1; i >= 0; i--) { + var x = xs[i]; + f(x, i); + } + }; + var partition = function (xs, pred) { + var pass = []; + var fail = []; + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + var arr = pred(x, i) ? pass : fail; + arr.push(x); + } + return { + pass: pass, + fail: fail + }; + }; + var filter$2 = function (xs, pred) { + var r = []; + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i)) { + r.push(x); + } + } + return r; + }; + var foldr = function (xs, f, acc) { + eachr(xs, function (x, i) { + acc = f(acc, x, i); + }); + return acc; + }; + var foldl = function (xs, f, acc) { + each$2(xs, function (x, i) { + acc = f(acc, x, i); + }); + return acc; + }; + var findUntil = function (xs, pred, until) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i)) { + return Optional.some(x); + } else if (until(x, i)) { + break; + } + } + return Optional.none(); + }; + var find$1 = function (xs, pred) { + return findUntil(xs, pred, never); + }; + var findIndex = function (xs, pred) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i)) { + return Optional.some(i); + } + } + return Optional.none(); + }; + var flatten$1 = function (xs) { + var r = []; + for (var i = 0, len = xs.length; i < len; ++i) { + if (!isArray(xs[i])) { + throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs); + } + nativePush.apply(r, xs[i]); + } + return r; + }; + var bind$2 = function (xs, f) { + return flatten$1(map$1(xs, f)); + }; + var forall = function (xs, pred) { + for (var i = 0, len = xs.length; i < len; ++i) { + var x = xs[i]; + if (pred(x, i) !== true) { + return false; + } + } + return true; + }; + var reverse = function (xs) { + var r = nativeSlice.call(xs, 0); + r.reverse(); + return r; + }; + var mapToObject = function (xs, f) { + var r = {}; + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + r[String(x)] = f(x, i); + } + return r; + }; + var pure = function (x) { + return [x]; + }; + var sort$1 = function (xs, comparator) { + var copy = nativeSlice.call(xs, 0); + copy.sort(comparator); + return copy; + }; + var get$d = function (xs, i) { + return i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none(); + }; + var head = function (xs) { + return get$d(xs, 0); + }; + var last$2 = function (xs) { + return get$d(xs, xs.length - 1); + }; + var findMap = function (arr, f) { + for (var i = 0; i < arr.length; i++) { + var r = f(arr[i], i); + if (r.isSome()) { + return r; + } + } + return Optional.none(); + }; + + var __assign = function () { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + function __spreadArray(to, from, pack) { + if (pack || arguments.length === 2) + for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) + ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); + } + + var cached = function (f) { + var called = false; + var r; + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + if (!called) { + called = true; + r = f.apply(null, args); + } + return r; + }; + }; + + var DeviceType = function (os, browser, userAgent, mediaMatch) { + var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true; + var isiPhone = os.isiOS() && !isiPad; + var isMobile = os.isiOS() || os.isAndroid(); + var isTouch = isMobile || mediaMatch('(pointer:coarse)'); + var isTablet = isiPad || !isiPhone && isMobile && mediaMatch('(min-device-width:768px)'); + var isPhone = isiPhone || isMobile && !isTablet; + var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false; + var isDesktop = !isPhone && !isTablet && !iOSwebview; + return { + isiPad: constant(isiPad), + isiPhone: constant(isiPhone), + isTablet: constant(isTablet), + isPhone: constant(isPhone), + isTouch: constant(isTouch), + isAndroid: os.isAndroid, + isiOS: os.isiOS, + isWebView: constant(iOSwebview), + isDesktop: constant(isDesktop) + }; + }; + + var firstMatch = function (regexes, s) { + for (var i = 0; i < regexes.length; i++) { + var x = regexes[i]; + if (x.test(s)) { + return x; + } + } + return undefined; + }; + var find = function (regexes, agent) { + var r = firstMatch(regexes, agent); + if (!r) { + return { + major: 0, + minor: 0 + }; + } + var group = function (i) { + return Number(agent.replace(r, '$' + i)); + }; + return nu$2(group(1), group(2)); + }; + var detect$6 = function (versionRegexes, agent) { + var cleanedAgent = String(agent).toLowerCase(); + if (versionRegexes.length === 0) { + return unknown$2(); + } + return find(versionRegexes, cleanedAgent); + }; + var unknown$2 = function () { + return nu$2(0, 0); + }; + var nu$2 = function (major, minor) { + return { + major: major, + minor: minor + }; + }; + var Version = { + nu: nu$2, + detect: detect$6, + unknown: unknown$2 + }; + + var detectBrowser$1 = function (browsers, userAgentData) { + return findMap(userAgentData.brands, function (uaBrand) { + var lcBrand = uaBrand.brand.toLowerCase(); + return find$1(browsers, function (browser) { + var _a; + return lcBrand === ((_a = browser.brand) === null || _a === void 0 ? void 0 : _a.toLowerCase()); + }).map(function (info) { + return { + current: info.name, + version: Version.nu(parseInt(uaBrand.version, 10), 0) + }; + }); + }); + }; + + var detect$5 = function (candidates, userAgent) { + var agent = String(userAgent).toLowerCase(); + return find$1(candidates, function (candidate) { + return candidate.search(agent); + }); + }; + var detectBrowser = function (browsers, userAgent) { + return detect$5(browsers, userAgent).map(function (browser) { + var version = Version.detect(browser.versionRegexes, userAgent); + return { + current: browser.name, + version: version + }; + }); + }; + var detectOs = function (oses, userAgent) { + return detect$5(oses, userAgent).map(function (os) { + var version = Version.detect(os.versionRegexes, userAgent); + return { + current: os.name, + version: version + }; + }); + }; + + var removeFromStart = function (str, numChars) { + return str.substring(numChars); + }; + + var checkRange = function (str, substr, start) { + return substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr; + }; + var removeLeading = function (str, prefix) { + return startsWith(str, prefix) ? removeFromStart(str, prefix.length) : str; + }; + var contains$1 = function (str, substr) { + return str.indexOf(substr) !== -1; + }; + var startsWith = function (str, prefix) { + return checkRange(str, prefix, 0); + }; + var endsWith = function (str, suffix) { + return checkRange(str, suffix, str.length - suffix.length); + }; + var blank = function (r) { + return function (s) { + return s.replace(r, ''); + }; + }; + var trim = blank(/^\s+|\s+$/g); + var isNotEmpty = function (s) { + return s.length > 0; + }; + var isEmpty$1 = function (s) { + return !isNotEmpty(s); + }; + var toFloat = function (value) { + var num = parseFloat(value); + return isNaN(num) ? Optional.none() : Optional.some(num); + }; + + var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/; + var checkContains = function (target) { + return function (uastring) { + return contains$1(uastring, target); + }; + }; + var browsers = [ + { + name: 'Edge', + versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/], + search: function (uastring) { + return contains$1(uastring, 'edge/') && contains$1(uastring, 'chrome') && contains$1(uastring, 'safari') && contains$1(uastring, 'applewebkit'); + } + }, + { + name: 'Chrome', + brand: 'Chromium', + versionRegexes: [ + /.*?chrome\/([0-9]+)\.([0-9]+).*/, + normalVersionRegex + ], + search: function (uastring) { + return contains$1(uastring, 'chrome') && !contains$1(uastring, 'chromeframe'); + } + }, + { + name: 'IE', + versionRegexes: [ + /.*?msie\ ?([0-9]+)\.([0-9]+).*/, + /.*?rv:([0-9]+)\.([0-9]+).*/ + ], + search: function (uastring) { + return contains$1(uastring, 'msie') || contains$1(uastring, 'trident'); + } + }, + { + name: 'Opera', + versionRegexes: [ + normalVersionRegex, + /.*?opera\/([0-9]+)\.([0-9]+).*/ + ], + search: checkContains('opera') + }, + { + name: 'Firefox', + versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/], + search: checkContains('firefox') + }, + { + name: 'Safari', + versionRegexes: [ + normalVersionRegex, + /.*?cpu os ([0-9]+)_([0-9]+).*/ + ], + search: function (uastring) { + return (contains$1(uastring, 'safari') || contains$1(uastring, 'mobile/')) && contains$1(uastring, 'applewebkit'); + } + } + ]; + var oses = [ + { + name: 'Windows', + search: checkContains('win'), + versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/] + }, + { + name: 'iOS', + search: function (uastring) { + return contains$1(uastring, 'iphone') || contains$1(uastring, 'ipad'); + }, + versionRegexes: [ + /.*?version\/\ ?([0-9]+)\.([0-9]+).*/, + /.*cpu os ([0-9]+)_([0-9]+).*/, + /.*cpu iphone os ([0-9]+)_([0-9]+).*/ + ] + }, + { + name: 'Android', + search: checkContains('android'), + versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/] + }, + { + name: 'OSX', + search: checkContains('mac os x'), + versionRegexes: [/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/] + }, + { + name: 'Linux', + search: checkContains('linux'), + versionRegexes: [] + }, + { + name: 'Solaris', + search: checkContains('sunos'), + versionRegexes: [] + }, + { + name: 'FreeBSD', + search: checkContains('freebsd'), + versionRegexes: [] + }, + { + name: 'ChromeOS', + search: checkContains('cros'), + versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/] + } + ]; + var PlatformInfo = { + browsers: constant(browsers), + oses: constant(oses) + }; + + var edge = 'Edge'; + var chrome = 'Chrome'; + var ie = 'IE'; + var opera = 'Opera'; + var firefox = 'Firefox'; + var safari = 'Safari'; + var unknown$1 = function () { + return nu$1({ + current: undefined, + version: Version.unknown() + }); + }; + var nu$1 = function (info) { + var current = info.current; + var version = info.version; + var isBrowser = function (name) { + return function () { + return current === name; + }; + }; + return { + current: current, + version: version, + isEdge: isBrowser(edge), + isChrome: isBrowser(chrome), + isIE: isBrowser(ie), + isOpera: isBrowser(opera), + isFirefox: isBrowser(firefox), + isSafari: isBrowser(safari) + }; + }; + var Browser = { + unknown: unknown$1, + nu: nu$1, + edge: constant(edge), + chrome: constant(chrome), + ie: constant(ie), + opera: constant(opera), + firefox: constant(firefox), + safari: constant(safari) + }; + + var windows = 'Windows'; + var ios = 'iOS'; + var android = 'Android'; + var linux = 'Linux'; + var osx = 'OSX'; + var solaris = 'Solaris'; + var freebsd = 'FreeBSD'; + var chromeos = 'ChromeOS'; + var unknown = function () { + return nu({ + current: undefined, + version: Version.unknown() + }); + }; + var nu = function (info) { + var current = info.current; + var version = info.version; + var isOS = function (name) { + return function () { + return current === name; + }; + }; + return { + current: current, + version: version, + isWindows: isOS(windows), + isiOS: isOS(ios), + isAndroid: isOS(android), + isOSX: isOS(osx), + isLinux: isOS(linux), + isSolaris: isOS(solaris), + isFreeBSD: isOS(freebsd), + isChromeOS: isOS(chromeos) + }; + }; + var OperatingSystem = { + unknown: unknown, + nu: nu, + windows: constant(windows), + ios: constant(ios), + android: constant(android), + linux: constant(linux), + osx: constant(osx), + solaris: constant(solaris), + freebsd: constant(freebsd), + chromeos: constant(chromeos) + }; + + var detect$4 = function (userAgent, userAgentDataOpt, mediaMatch) { + var browsers = PlatformInfo.browsers(); + var oses = PlatformInfo.oses(); + var browser = userAgentDataOpt.bind(function (userAgentData) { + return detectBrowser$1(browsers, userAgentData); + }).orThunk(function () { + return detectBrowser(browsers, userAgent); + }).fold(Browser.unknown, Browser.nu); + var os = detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu); + var deviceType = DeviceType(os, browser, userAgent, mediaMatch); + return { + browser: browser, + os: os, + deviceType: deviceType + }; + }; + var PlatformDetection = { detect: detect$4 }; + + var mediaMatch = function (query) { + return window.matchMedia(query).matches; + }; + var platform = cached(function () { + return PlatformDetection.detect(navigator.userAgent, Optional.from(navigator.userAgentData), mediaMatch); + }); + var detect$3 = function () { + return platform(); + }; + + var compareDocumentPosition = function (a, b, match) { + return (a.compareDocumentPosition(b) & match) !== 0; + }; + var documentPositionContainedBy = function (a, b) { + return compareDocumentPosition(a, b, Node.DOCUMENT_POSITION_CONTAINED_BY); + }; + + var COMMENT = 8; + var DOCUMENT = 9; + var DOCUMENT_FRAGMENT = 11; + var ELEMENT = 1; + var TEXT = 3; + + var fromHtml$1 = function (html, scope) { + var doc = scope || document; + var div = doc.createElement('div'); + div.innerHTML = html; + if (!div.hasChildNodes() || div.childNodes.length > 1) { + console.error('HTML does not have a single root node', html); + throw new Error('HTML must have a single root node'); + } + return fromDom$1(div.childNodes[0]); + }; + var fromTag = function (tag, scope) { + var doc = scope || document; + var node = doc.createElement(tag); + return fromDom$1(node); + }; + var fromText = function (text, scope) { + var doc = scope || document; + var node = doc.createTextNode(text); + return fromDom$1(node); + }; + var fromDom$1 = function (node) { + if (node === null || node === undefined) { + throw new Error('Node cannot be null or undefined'); + } + return { dom: node }; + }; + var fromPoint$1 = function (docElm, x, y) { + return Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom$1); + }; + var SugarElement = { + fromHtml: fromHtml$1, + fromTag: fromTag, + fromText: fromText, + fromDom: fromDom$1, + fromPoint: fromPoint$1 + }; + + var is$2 = function (element, selector) { + var dom = element.dom; + if (dom.nodeType !== ELEMENT) { + return false; + } else { + var elem = dom; + if (elem.matches !== undefined) { + return elem.matches(selector); + } else if (elem.msMatchesSelector !== undefined) { + return elem.msMatchesSelector(selector); + } else if (elem.webkitMatchesSelector !== undefined) { + return elem.webkitMatchesSelector(selector); + } else if (elem.mozMatchesSelector !== undefined) { + return elem.mozMatchesSelector(selector); + } else { + throw new Error('Browser lacks native selectors'); + } + } + }; + var bypassSelector = function (dom) { + return dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT && dom.nodeType !== DOCUMENT_FRAGMENT || dom.childElementCount === 0; + }; + var all$1 = function (selector, scope) { + var base = scope === undefined ? document : scope.dom; + return bypassSelector(base) ? [] : map$1(base.querySelectorAll(selector), SugarElement.fromDom); + }; + var one = function (selector, scope) { + var base = scope === undefined ? document : scope.dom; + return bypassSelector(base) ? Optional.none() : Optional.from(base.querySelector(selector)).map(SugarElement.fromDom); + }; + + var eq$1 = function (e1, e2) { + return e1.dom === e2.dom; + }; + var regularContains = function (e1, e2) { + var d1 = e1.dom; + var d2 = e2.dom; + return d1 === d2 ? false : d1.contains(d2); + }; + var ieContains = function (e1, e2) { + return documentPositionContainedBy(e1.dom, e2.dom); + }; + var contains = function (e1, e2) { + return detect$3().browser.isIE() ? ieContains(e1, e2) : regularContains(e1, e2); + }; + var is$1 = is$2; + + var keys = Object.keys; + var hasOwnProperty = Object.hasOwnProperty; + var each$1 = function (obj, f) { + var props = keys(obj); + for (var k = 0, len = props.length; k < len; k++) { + var i = props[k]; + var x = obj[i]; + f(x, i); + } + }; + var map = function (obj, f) { + return tupleMap(obj, function (x, i) { + return { + k: i, + v: f(x, i) + }; + }); + }; + var tupleMap = function (obj, f) { + var r = {}; + each$1(obj, function (x, i) { + var tuple = f(x, i); + r[tuple.k] = tuple.v; + }); + return r; + }; + var objAcc = function (r) { + return function (x, i) { + r[i] = x; + }; + }; + var internalFilter = function (obj, pred, onTrue, onFalse) { + var r = {}; + each$1(obj, function (x, i) { + (pred(x, i) ? onTrue : onFalse)(x, i); + }); + return r; + }; + var filter$1 = function (obj, pred) { + var t = {}; + internalFilter(obj, pred, objAcc(t), noop); + return t; + }; + var mapToArray = function (obj, f) { + var r = []; + each$1(obj, function (value, name) { + r.push(f(value, name)); + }); + return r; + }; + var values = function (obj) { + return mapToArray(obj, identity); + }; + var size = function (obj) { + return keys(obj).length; + }; + var get$c = function (obj, key) { + return has$1(obj, key) ? Optional.from(obj[key]) : Optional.none(); + }; + var has$1 = function (obj, key) { + return hasOwnProperty.call(obj, key); + }; + var hasNonNullableKey = function (obj, key) { + return has$1(obj, key) && obj[key] !== undefined && obj[key] !== null; + }; + var isEmpty = function (r) { + for (var x in r) { + if (hasOwnProperty.call(r, x)) { + return false; + } + } + return true; + }; + + var validSectionList = [ + 'tfoot', + 'thead', + 'tbody', + 'colgroup' + ]; + var isValidSection = function (parentName) { + return contains$2(validSectionList, parentName); + }; + var grid = function (rows, columns) { + return { + rows: rows, + columns: columns + }; + }; + var address = function (row, column) { + return { + row: row, + column: column + }; + }; + var detail = function (element, rowspan, colspan) { + return { + element: element, + rowspan: rowspan, + colspan: colspan + }; + }; + var detailnew = function (element, rowspan, colspan, isNew) { + return { + element: element, + rowspan: rowspan, + colspan: colspan, + isNew: isNew + }; + }; + var extended = function (element, rowspan, colspan, row, column, isLocked) { + return { + element: element, + rowspan: rowspan, + colspan: colspan, + row: row, + column: column, + isLocked: isLocked + }; + }; + var rowdetail = function (element, cells, section) { + return { + element: element, + cells: cells, + section: section + }; + }; + var rowdetailnew = function (element, cells, section, isNew) { + return { + element: element, + cells: cells, + section: section, + isNew: isNew + }; + }; + var elementnew = function (element, isNew, isLocked) { + return { + element: element, + isNew: isNew, + isLocked: isLocked + }; + }; + var rowcells = function (element, cells, section, isNew) { + return { + element: element, + cells: cells, + section: section, + isNew: isNew + }; + }; + var bounds = function (startRow, startCol, finishRow, finishCol) { + return { + startRow: startRow, + startCol: startCol, + finishRow: finishRow, + finishCol: finishCol + }; + }; + var columnext = function (element, colspan, column) { + return { + element: element, + colspan: colspan, + column: column + }; + }; + var colgroup = function (element, columns) { + return { + element: element, + columns: columns + }; + }; + + typeof window !== 'undefined' ? window : Function('return this;')(); + + var name = function (element) { + var r = element.dom.nodeName; + return r.toLowerCase(); + }; + var type$1 = function (element) { + return element.dom.nodeType; + }; + var isType = function (t) { + return function (element) { + return type$1(element) === t; + }; + }; + var isComment = function (element) { + return type$1(element) === COMMENT || name(element) === '#comment'; + }; + var isElement = isType(ELEMENT); + var isText = isType(TEXT); + var isDocument = isType(DOCUMENT); + var isDocumentFragment = isType(DOCUMENT_FRAGMENT); + var isTag = function (tag) { + return function (e) { + return isElement(e) && name(e) === tag; + }; + }; + + var owner = function (element) { + return SugarElement.fromDom(element.dom.ownerDocument); + }; + var documentOrOwner = function (dos) { + return isDocument(dos) ? dos : owner(dos); + }; + var defaultView = function (element) { + return SugarElement.fromDom(documentOrOwner(element).dom.defaultView); + }; + var parent = function (element) { + return Optional.from(element.dom.parentNode).map(SugarElement.fromDom); + }; + var parentElement = function (element) { + return Optional.from(element.dom.parentElement).map(SugarElement.fromDom); + }; + var parents = function (element, isRoot) { + var stop = isFunction(isRoot) ? isRoot : never; + var dom = element.dom; + var ret = []; + while (dom.parentNode !== null && dom.parentNode !== undefined) { + var rawParent = dom.parentNode; + var p = SugarElement.fromDom(rawParent); + ret.push(p); + if (stop(p) === true) { + break; + } else { + dom = rawParent; + } + } + return ret; + }; + var prevSibling = function (element) { + return Optional.from(element.dom.previousSibling).map(SugarElement.fromDom); + }; + var nextSibling = function (element) { + return Optional.from(element.dom.nextSibling).map(SugarElement.fromDom); + }; + var children$3 = function (element) { + return map$1(element.dom.childNodes, SugarElement.fromDom); + }; + var child$3 = function (element, index) { + var cs = element.dom.childNodes; + return Optional.from(cs[index]).map(SugarElement.fromDom); + }; + var firstChild = function (element) { + return child$3(element, 0); + }; + + var isShadowRoot = function (dos) { + return isDocumentFragment(dos) && isNonNullable(dos.dom.host); + }; + var supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode); + var isSupported$1 = constant(supported); + var getRootNode = supported ? function (e) { + return SugarElement.fromDom(e.dom.getRootNode()); + } : documentOrOwner; + var getShadowRoot = function (e) { + var r = getRootNode(e); + return isShadowRoot(r) ? Optional.some(r) : Optional.none(); + }; + var getShadowHost = function (e) { + return SugarElement.fromDom(e.dom.host); + }; + var getOriginalEventTarget = function (event) { + if (isSupported$1() && isNonNullable(event.target)) { + var el = SugarElement.fromDom(event.target); + if (isElement(el) && isOpenShadowHost(el)) { + if (event.composed && event.composedPath) { + var composedPath = event.composedPath(); + if (composedPath) { + return head(composedPath); + } + } + } + } + return Optional.from(event.target); + }; + var isOpenShadowHost = function (element) { + return isNonNullable(element.dom.shadowRoot); + }; + + var inBody = function (element) { + var dom = isText(element) ? element.dom.parentNode : element.dom; + if (dom === undefined || dom === null || dom.ownerDocument === null) { + return false; + } + var doc = dom.ownerDocument; + return getShadowRoot(SugarElement.fromDom(dom)).fold(function () { + return doc.body.contains(dom); + }, compose1(inBody, getShadowHost)); + }; + var body$1 = function () { + return getBody$1(SugarElement.fromDom(document)); + }; + var getBody$1 = function (doc) { + var b = doc.dom.body; + if (b === null || b === undefined) { + throw new Error('Body is not available yet'); + } + return SugarElement.fromDom(b); + }; + + var ancestors$4 = function (scope, predicate, isRoot) { + return filter$2(parents(scope, isRoot), predicate); + }; + var children$2 = function (scope, predicate) { + return filter$2(children$3(scope), predicate); + }; + var descendants$1 = function (scope, predicate) { + var result = []; + each$2(children$3(scope), function (x) { + if (predicate(x)) { + result = result.concat([x]); + } + result = result.concat(descendants$1(x, predicate)); + }); + return result; + }; + + var ancestors$3 = function (scope, selector, isRoot) { + return ancestors$4(scope, function (e) { + return is$2(e, selector); + }, isRoot); + }; + var children$1 = function (scope, selector) { + return children$2(scope, function (e) { + return is$2(e, selector); + }); + }; + var descendants = function (scope, selector) { + return all$1(selector, scope); + }; + + function ClosestOrAncestor (is, ancestor, scope, a, isRoot) { + if (is(scope, a)) { + return Optional.some(scope); + } else if (isFunction(isRoot) && isRoot(scope)) { + return Optional.none(); + } else { + return ancestor(scope, a, isRoot); + } + } + + var ancestor$2 = function (scope, predicate, isRoot) { + var element = scope.dom; + var stop = isFunction(isRoot) ? isRoot : never; + while (element.parentNode) { + element = element.parentNode; + var el = SugarElement.fromDom(element); + if (predicate(el)) { + return Optional.some(el); + } else if (stop(el)) { + break; + } + } + return Optional.none(); + }; + var closest$2 = function (scope, predicate, isRoot) { + var is = function (s, test) { + return test(s); + }; + return ClosestOrAncestor(is, ancestor$2, scope, predicate, isRoot); + }; + var child$2 = function (scope, predicate) { + var pred = function (node) { + return predicate(SugarElement.fromDom(node)); + }; + var result = find$1(scope.dom.childNodes, pred); + return result.map(SugarElement.fromDom); + }; + var descendant$1 = function (scope, predicate) { + var descend = function (node) { + for (var i = 0; i < node.childNodes.length; i++) { + var child_1 = SugarElement.fromDom(node.childNodes[i]); + if (predicate(child_1)) { + return Optional.some(child_1); + } + var res = descend(node.childNodes[i]); + if (res.isSome()) { + return res; + } + } + return Optional.none(); + }; + return descend(scope.dom); + }; + + var ancestor$1 = function (scope, selector, isRoot) { + return ancestor$2(scope, function (e) { + return is$2(e, selector); + }, isRoot); + }; + var child$1 = function (scope, selector) { + return child$2(scope, function (e) { + return is$2(e, selector); + }); + }; + var descendant = function (scope, selector) { + return one(selector, scope); + }; + var closest$1 = function (scope, selector, isRoot) { + var is = function (element, selector) { + return is$2(element, selector); + }; + return ClosestOrAncestor(is, ancestor$1, scope, selector, isRoot); + }; + + var rawSet = function (dom, key, value) { + if (isString(value) || isBoolean(value) || isNumber(value)) { + dom.setAttribute(key, value + ''); + } else { + console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom); + throw new Error('Attribute value was not simple'); + } + }; + var set$2 = function (element, key, value) { + rawSet(element.dom, key, value); + }; + var setAll$1 = function (element, attrs) { + var dom = element.dom; + each$1(attrs, function (v, k) { + rawSet(dom, k, v); + }); + }; + var setOptions = function (element, attrs) { + each$1(attrs, function (v, k) { + v.fold(function () { + remove$7(element, k); + }, function (value) { + rawSet(element.dom, k, value); + }); + }); + }; + var get$b = function (element, key) { + var v = element.dom.getAttribute(key); + return v === null ? undefined : v; + }; + var getOpt = function (element, key) { + return Optional.from(get$b(element, key)); + }; + var remove$7 = function (element, key) { + element.dom.removeAttribute(key); + }; + var clone$2 = function (element) { + return foldl(element.dom.attributes, function (acc, attr) { + acc[attr.name] = attr.value; + return acc; + }, {}); + }; + + var is = function (lhs, rhs, comparator) { + if (comparator === void 0) { + comparator = tripleEquals; + } + return lhs.exists(function (left) { + return comparator(left, rhs); + }); + }; + var cat = function (arr) { + var r = []; + var push = function (x) { + r.push(x); + }; + for (var i = 0; i < arr.length; i++) { + arr[i].each(push); + } + return r; + }; + var lift2 = function (oa, ob, f) { + return oa.isSome() && ob.isSome() ? Optional.some(f(oa.getOrDie(), ob.getOrDie())) : Optional.none(); + }; + var bindFrom = function (a, f) { + return a !== undefined && a !== null ? f(a) : Optional.none(); + }; + var flatten = function (oot) { + return oot.bind(identity); + }; + var someIf = function (b, a) { + return b ? Optional.some(a) : Optional.none(); + }; + + var isSupported = function (dom) { + return dom.style !== undefined && isFunction(dom.style.getPropertyValue); + }; + + var internalSet = function (dom, property, value) { + if (!isString(value)) { + console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom); + throw new Error('CSS value must be a string: ' + value); + } + if (isSupported(dom)) { + dom.style.setProperty(property, value); + } + }; + var internalRemove = function (dom, property) { + if (isSupported(dom)) { + dom.style.removeProperty(property); + } + }; + var set$1 = function (element, property, value) { + var dom = element.dom; + internalSet(dom, property, value); + }; + var setAll = function (element, css) { + var dom = element.dom; + each$1(css, function (v, k) { + internalSet(dom, k, v); + }); + }; + var get$a = function (element, property) { + var dom = element.dom; + var styles = window.getComputedStyle(dom); + var r = styles.getPropertyValue(property); + return r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r; + }; + var getUnsafeProperty = function (dom, property) { + return isSupported(dom) ? dom.style.getPropertyValue(property) : ''; + }; + var getRaw$2 = function (element, property) { + var dom = element.dom; + var raw = getUnsafeProperty(dom, property); + return Optional.from(raw).filter(function (r) { + return r.length > 0; + }); + }; + var remove$6 = function (element, property) { + var dom = element.dom; + internalRemove(dom, property); + if (is(getOpt(element, 'style').map(trim), '')) { + remove$7(element, 'style'); + } + }; + var copy$2 = function (source, target) { + var sourceDom = source.dom; + var targetDom = target.dom; + if (isSupported(sourceDom) && isSupported(targetDom)) { + targetDom.style.cssText = sourceDom.style.cssText; + } + }; + + var getAttrValue = function (cell, name, fallback) { + if (fallback === void 0) { + fallback = 0; + } + return getOpt(cell, name).map(function (value) { + return parseInt(value, 10); + }).getOr(fallback); + }; + var getSpan = function (cell, type) { + return getAttrValue(cell, type, 1); + }; + var hasColspan = function (cellOrCol) { + if (isTag('col')(cellOrCol)) { + return getAttrValue(cellOrCol, 'span', 1) > 1; + } else { + return getSpan(cellOrCol, 'colspan') > 1; + } + }; + var hasRowspan = function (cell) { + return getSpan(cell, 'rowspan') > 1; + }; + var getCssValue = function (element, property) { + return parseInt(get$a(element, property), 10); + }; + var minWidth = constant(10); + var minHeight = constant(10); + + var firstLayer = function (scope, selector) { + return filterFirstLayer(scope, selector, always); + }; + var filterFirstLayer = function (scope, selector, predicate) { + return bind$2(children$3(scope), function (x) { + if (is$2(x, selector)) { + return predicate(x) ? [x] : []; + } else { + return filterFirstLayer(x, selector, predicate); + } + }); + }; + + var lookup = function (tags, element, isRoot) { + if (isRoot === void 0) { + isRoot = never; + } + if (isRoot(element)) { + return Optional.none(); + } + if (contains$2(tags, name(element))) { + return Optional.some(element); + } + var isRootOrUpperTable = function (elm) { + return is$2(elm, 'table') || isRoot(elm); + }; + return ancestor$1(element, tags.join(','), isRootOrUpperTable); + }; + var cell = function (element, isRoot) { + return lookup([ + 'td', + 'th' + ], element, isRoot); + }; + var cells$1 = function (ancestor) { + return firstLayer(ancestor, 'th,td'); + }; + var columns$1 = function (ancestor) { + if (is$2(ancestor, 'colgroup')) { + return children$1(ancestor, 'col'); + } else { + return bind$2(columnGroups(ancestor), function (columnGroup) { + return children$1(columnGroup, 'col'); + }); + } + }; + var table = function (element, isRoot) { + return closest$1(element, 'table', isRoot); + }; + var rows$1 = function (ancestor) { + return firstLayer(ancestor, 'tr'); + }; + var columnGroups = function (ancestor) { + return table(ancestor).fold(constant([]), function (table) { + return children$1(table, 'colgroup'); + }); + }; + + var fromRowsOrColGroups = function (elems, getSection) { + return map$1(elems, function (row) { + if (name(row) === 'colgroup') { + var cells = map$1(columns$1(row), function (column) { + var colspan = getAttrValue(column, 'span', 1); + return detail(column, 1, colspan); + }); + return rowdetail(row, cells, 'colgroup'); + } else { + var cells = map$1(cells$1(row), function (cell) { + var rowspan = getAttrValue(cell, 'rowspan', 1); + var colspan = getAttrValue(cell, 'colspan', 1); + return detail(cell, rowspan, colspan); + }); + return rowdetail(row, cells, getSection(row)); + } + }); + }; + var getParentSection = function (group) { + return parent(group).map(function (parent) { + var parentName = name(parent); + return isValidSection(parentName) ? parentName : 'tbody'; + }).getOr('tbody'); + }; + var fromTable$1 = function (table) { + var rows = rows$1(table); + var columnGroups$1 = columnGroups(table); + var elems = __spreadArray(__spreadArray([], columnGroups$1, true), rows, true); + return fromRowsOrColGroups(elems, getParentSection); + }; + var fromPastedRows = function (elems, section) { + return fromRowsOrColGroups(elems, function () { + return section; + }); + }; + + var addCells = function (gridRow, index, cells) { + var existingCells = gridRow.cells; + var before = existingCells.slice(0, index); + var after = existingCells.slice(index); + var newCells = before.concat(cells).concat(after); + return setCells(gridRow, newCells); + }; + var addCell = function (gridRow, index, cell) { + return addCells(gridRow, index, [cell]); + }; + var mutateCell = function (gridRow, index, cell) { + var cells = gridRow.cells; + cells[index] = cell; + }; + var setCells = function (gridRow, cells) { + return rowcells(gridRow.element, cells, gridRow.section, gridRow.isNew); + }; + var mapCells = function (gridRow, f) { + var cells = gridRow.cells; + var r = map$1(cells, f); + return rowcells(gridRow.element, r, gridRow.section, gridRow.isNew); + }; + var getCell = function (gridRow, index) { + return gridRow.cells[index]; + }; + var getCellElement = function (gridRow, index) { + return getCell(gridRow, index).element; + }; + var cellLength = function (gridRow) { + return gridRow.cells.length; + }; + var extractGridDetails = function (grid) { + var result = partition(grid, function (row) { + return row.section === 'colgroup'; + }); + return { + rows: result.fail, + cols: result.pass + }; + }; + var clone$1 = function (gridRow, cloneRow, cloneCell) { + var newCells = map$1(gridRow.cells, cloneCell); + return rowcells(cloneRow(gridRow.element), newCells, gridRow.section, true); + }; + + var LOCKED_COL_ATTR = 'data-snooker-locked-cols'; + var getLockedColumnsFromTable = function (table) { + return getOpt(table, LOCKED_COL_ATTR).bind(function (lockedColStr) { + return Optional.from(lockedColStr.match(/\d+/g)); + }).map(function (lockedCols) { + return mapToObject(lockedCols, always); + }); + }; + var getLockedColumnsFromGrid = function (grid) { + var locked = foldl(extractGridDetails(grid).rows, function (acc, row) { + each$2(row.cells, function (cell, idx) { + if (cell.isLocked) { + acc[idx] = true; + } + }); + return acc; + }, {}); + var lockedArr = mapToArray(locked, function (_val, key) { + return parseInt(key, 10); + }); + return sort$1(lockedArr); + }; + + var key = function (row, column) { + return row + ',' + column; + }; + var getAt = function (warehouse, row, column) { + return Optional.from(warehouse.access[key(row, column)]); + }; + var findItem = function (warehouse, item, comparator) { + var filtered = filterItems(warehouse, function (detail) { + return comparator(item, detail.element); + }); + return filtered.length > 0 ? Optional.some(filtered[0]) : Optional.none(); + }; + var filterItems = function (warehouse, predicate) { + var all = bind$2(warehouse.all, function (r) { + return r.cells; + }); + return filter$2(all, predicate); + }; + var generateColumns = function (rowData) { + var columnsGroup = {}; + var index = 0; + each$2(rowData.cells, function (column) { + var colspan = column.colspan; + range$1(colspan, function (columnIndex) { + var colIndex = index + columnIndex; + columnsGroup[colIndex] = columnext(column.element, colspan, colIndex); + }); + index += colspan; + }); + return columnsGroup; + }; + var generate$1 = function (list) { + var access = {}; + var cells = []; + var tableOpt = head(list).map(function (rowData) { + return rowData.element; + }).bind(table); + var lockedColumns = tableOpt.bind(getLockedColumnsFromTable).getOr({}); + var maxRows = 0; + var maxColumns = 0; + var rowCount = 0; + var _a = partition(list, function (rowData) { + return rowData.section === 'colgroup'; + }), colgroupRows = _a.pass, rows = _a.fail; + each$2(rows, function (rowData) { + var currentRow = []; + each$2(rowData.cells, function (rowCell) { + var start = 0; + while (access[key(rowCount, start)] !== undefined) { + start++; + } + var isLocked = hasNonNullableKey(lockedColumns, start.toString()); + var current = extended(rowCell.element, rowCell.rowspan, rowCell.colspan, rowCount, start, isLocked); + for (var occupiedColumnPosition = 0; occupiedColumnPosition < rowCell.colspan; occupiedColumnPosition++) { + for (var occupiedRowPosition = 0; occupiedRowPosition < rowCell.rowspan; occupiedRowPosition++) { + var rowPosition = rowCount + occupiedRowPosition; + var columnPosition = start + occupiedColumnPosition; + var newpos = key(rowPosition, columnPosition); + access[newpos] = current; + maxColumns = Math.max(maxColumns, columnPosition + 1); + } + } + currentRow.push(current); + }); + maxRows++; + cells.push(rowdetail(rowData.element, currentRow, rowData.section)); + rowCount++; + }); + var _b = last$2(colgroupRows).map(function (rowData) { + var columns = generateColumns(rowData); + var colgroup$1 = colgroup(rowData.element, values(columns)); + return { + colgroups: [colgroup$1], + columns: columns + }; + }).getOrThunk(function () { + return { + colgroups: [], + columns: {} + }; + }), columns = _b.columns, colgroups = _b.colgroups; + var grid$1 = grid(maxRows, maxColumns); + return { + grid: grid$1, + access: access, + all: cells, + columns: columns, + colgroups: colgroups + }; + }; + var fromTable = function (table) { + var list = fromTable$1(table); + return generate$1(list); + }; + var justCells = function (warehouse) { + return bind$2(warehouse.all, function (w) { + return w.cells; + }); + }; + var justColumns = function (warehouse) { + return values(warehouse.columns); + }; + var hasColumns = function (warehouse) { + return keys(warehouse.columns).length > 0; + }; + var getColumnAt = function (warehouse, columnIndex) { + return Optional.from(warehouse.columns[columnIndex]); + }; + var Warehouse = { + fromTable: fromTable, + generate: generate$1, + getAt: getAt, + findItem: findItem, + filterItems: filterItems, + justCells: justCells, + justColumns: justColumns, + hasColumns: hasColumns, + getColumnAt: getColumnAt + }; + + var inSelection = function (bounds, detail) { + var leftEdge = detail.column; + var rightEdge = detail.column + detail.colspan - 1; + var topEdge = detail.row; + var bottomEdge = detail.row + detail.rowspan - 1; + return leftEdge <= bounds.finishCol && rightEdge >= bounds.startCol && (topEdge <= bounds.finishRow && bottomEdge >= bounds.startRow); + }; + var isWithin = function (bounds, detail) { + return detail.column >= bounds.startCol && detail.column + detail.colspan - 1 <= bounds.finishCol && detail.row >= bounds.startRow && detail.row + detail.rowspan - 1 <= bounds.finishRow; + }; + var isRectangular = function (warehouse, bounds) { + var isRect = true; + var detailIsWithin = curry(isWithin, bounds); + for (var i = bounds.startRow; i <= bounds.finishRow; i++) { + for (var j = bounds.startCol; j <= bounds.finishCol; j++) { + isRect = isRect && Warehouse.getAt(warehouse, i, j).exists(detailIsWithin); + } + } + return isRect ? Optional.some(bounds) : Optional.none(); + }; + + var getBounds = function (detailA, detailB) { + return bounds(Math.min(detailA.row, detailB.row), Math.min(detailA.column, detailB.column), Math.max(detailA.row + detailA.rowspan - 1, detailB.row + detailB.rowspan - 1), Math.max(detailA.column + detailA.colspan - 1, detailB.column + detailB.colspan - 1)); + }; + var getAnyBox = function (warehouse, startCell, finishCell) { + var startCoords = Warehouse.findItem(warehouse, startCell, eq$1); + var finishCoords = Warehouse.findItem(warehouse, finishCell, eq$1); + return startCoords.bind(function (sc) { + return finishCoords.map(function (fc) { + return getBounds(sc, fc); + }); + }); + }; + var getBox$1 = function (warehouse, startCell, finishCell) { + return getAnyBox(warehouse, startCell, finishCell).bind(function (bounds) { + return isRectangular(warehouse, bounds); + }); + }; + + var moveBy$1 = function (warehouse, cell, row, column) { + return Warehouse.findItem(warehouse, cell, eq$1).bind(function (detail) { + var startRow = row > 0 ? detail.row + detail.rowspan - 1 : detail.row; + var startCol = column > 0 ? detail.column + detail.colspan - 1 : detail.column; + var dest = Warehouse.getAt(warehouse, startRow + row, startCol + column); + return dest.map(function (d) { + return d.element; + }); + }); + }; + var intercepts$1 = function (warehouse, start, finish) { + return getAnyBox(warehouse, start, finish).map(function (bounds) { + var inside = Warehouse.filterItems(warehouse, curry(inSelection, bounds)); + return map$1(inside, function (detail) { + return detail.element; + }); + }); + }; + var parentCell = function (warehouse, innerCell) { + var isContainedBy = function (c1, c2) { + return contains(c2, c1); + }; + return Warehouse.findItem(warehouse, innerCell, isContainedBy).map(function (detail) { + return detail.element; + }); + }; + + var moveBy = function (cell, deltaRow, deltaColumn) { + return table(cell).bind(function (table) { + var warehouse = getWarehouse(table); + return moveBy$1(warehouse, cell, deltaRow, deltaColumn); + }); + }; + var intercepts = function (table, first, last) { + var warehouse = getWarehouse(table); + return intercepts$1(warehouse, first, last); + }; + var nestedIntercepts = function (table, first, firstTable, last, lastTable) { + var warehouse = getWarehouse(table); + var optStartCell = eq$1(table, firstTable) ? Optional.some(first) : parentCell(warehouse, first); + var optLastCell = eq$1(table, lastTable) ? Optional.some(last) : parentCell(warehouse, last); + return optStartCell.bind(function (startCell) { + return optLastCell.bind(function (lastCell) { + return intercepts$1(warehouse, startCell, lastCell); + }); + }); + }; + var getBox = function (table, first, last) { + var warehouse = getWarehouse(table); + return getBox$1(warehouse, first, last); + }; + var getWarehouse = Warehouse.fromTable; + + var before$4 = function (marker, element) { + var parent$1 = parent(marker); + parent$1.each(function (v) { + v.dom.insertBefore(element.dom, marker.dom); + }); + }; + var after$5 = function (marker, element) { + var sibling = nextSibling(marker); + sibling.fold(function () { + var parent$1 = parent(marker); + parent$1.each(function (v) { + append$1(v, element); + }); + }, function (v) { + before$4(v, element); + }); + }; + var prepend = function (parent, element) { + var firstChild$1 = firstChild(parent); + firstChild$1.fold(function () { + append$1(parent, element); + }, function (v) { + parent.dom.insertBefore(element.dom, v.dom); + }); + }; + var append$1 = function (parent, element) { + parent.dom.appendChild(element.dom); + }; + var appendAt = function (parent, element, index) { + child$3(parent, index).fold(function () { + append$1(parent, element); + }, function (v) { + before$4(v, element); + }); + }; + var wrap = function (element, wrapper) { + before$4(element, wrapper); + append$1(wrapper, element); + }; + + var before$3 = function (marker, elements) { + each$2(elements, function (x) { + before$4(marker, x); + }); + }; + var after$4 = function (marker, elements) { + each$2(elements, function (x, i) { + var e = i === 0 ? marker : elements[i - 1]; + after$5(e, x); + }); + }; + var append = function (parent, elements) { + each$2(elements, function (x) { + append$1(parent, x); + }); + }; + + var empty = function (element) { + element.dom.textContent = ''; + each$2(children$3(element), function (rogue) { + remove$5(rogue); + }); + }; + var remove$5 = function (element) { + var dom = element.dom; + if (dom.parentNode !== null) { + dom.parentNode.removeChild(dom); + } + }; + var unwrap = function (wrapper) { + var children = children$3(wrapper); + if (children.length > 0) { + before$3(wrapper, children); + } + remove$5(wrapper); + }; + + var NodeValue = function (is, name) { + var get = function (element) { + if (!is(element)) { + throw new Error('Can only get ' + name + ' value of a ' + name + ' node'); + } + return getOption(element).getOr(''); + }; + var getOption = function (element) { + return is(element) ? Optional.from(element.dom.nodeValue) : Optional.none(); + }; + var set = function (element, value) { + if (!is(element)) { + throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node'); + } + element.dom.nodeValue = value; + }; + return { + get: get, + getOption: getOption, + set: set + }; + }; + + var api$2 = NodeValue(isText, 'text'); + var get$9 = function (element) { + return api$2.get(element); + }; + var getOption = function (element) { + return api$2.getOption(element); + }; + var set = function (element, value) { + return api$2.set(element, value); + }; + + var TagBoundaries = [ + 'body', + 'p', + 'div', + 'article', + 'aside', + 'figcaption', + 'figure', + 'footer', + 'header', + 'nav', + 'section', + 'ol', + 'ul', + 'li', + 'table', + 'thead', + 'tbody', + 'tfoot', + 'caption', + 'tr', + 'td', + 'th', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'blockquote', + 'pre', + 'address' + ]; + + function DomUniverse () { + var clone = function (element) { + return SugarElement.fromDom(element.dom.cloneNode(false)); + }; + var document = function (element) { + return documentOrOwner(element).dom; + }; + var isBoundary = function (element) { + if (!isElement(element)) { + return false; + } + if (name(element) === 'body') { + return true; + } + return contains$2(TagBoundaries, name(element)); + }; + var isEmptyTag = function (element) { + if (!isElement(element)) { + return false; + } + return contains$2([ + 'br', + 'img', + 'hr', + 'input' + ], name(element)); + }; + var isNonEditable = function (element) { + return isElement(element) && get$b(element, 'contenteditable') === 'false'; + }; + var comparePosition = function (element, other) { + return element.dom.compareDocumentPosition(other.dom); + }; + var copyAttributesTo = function (source, destination) { + var as = clone$2(source); + setAll$1(destination, as); + }; + var isSpecial = function (element) { + var tag = name(element); + return contains$2([ + 'script', + 'noscript', + 'iframe', + 'noframes', + 'noembed', + 'title', + 'style', + 'textarea', + 'xmp' + ], tag); + }; + var getLanguage = function (element) { + return isElement(element) ? getOpt(element, 'lang') : Optional.none(); + }; + return { + up: constant({ + selector: ancestor$1, + closest: closest$1, + predicate: ancestor$2, + all: parents + }), + down: constant({ + selector: descendants, + predicate: descendants$1 + }), + styles: constant({ + get: get$a, + getRaw: getRaw$2, + set: set$1, + remove: remove$6 + }), + attrs: constant({ + get: get$b, + set: set$2, + remove: remove$7, + copyTo: copyAttributesTo + }), + insert: constant({ + before: before$4, + after: after$5, + afterAll: after$4, + append: append$1, + appendAll: append, + prepend: prepend, + wrap: wrap + }), + remove: constant({ + unwrap: unwrap, + remove: remove$5 + }), + create: constant({ + nu: SugarElement.fromTag, + clone: clone, + text: SugarElement.fromText + }), + query: constant({ + comparePosition: comparePosition, + prevSibling: prevSibling, + nextSibling: nextSibling + }), + property: constant({ + children: children$3, + name: name, + parent: parent, + document: document, + isText: isText, + isComment: isComment, + isElement: isElement, + isSpecial: isSpecial, + getLanguage: getLanguage, + getText: get$9, + setText: set, + isBoundary: isBoundary, + isEmptyTag: isEmptyTag, + isNonEditable: isNonEditable + }), + eq: eq$1, + is: is$1 + }; + } + + var all = function (universe, look, elements, f) { + var head = elements[0]; + var tail = elements.slice(1); + return f(universe, look, head, tail); + }; + var oneAll = function (universe, look, elements) { + return elements.length > 0 ? all(universe, look, elements, unsafeOne) : Optional.none(); + }; + var unsafeOne = function (universe, look, head, tail) { + var start = look(universe, head); + return foldr(tail, function (b, a) { + var current = look(universe, a); + return commonElement(universe, b, current); + }, start); + }; + var commonElement = function (universe, start, end) { + return start.bind(function (s) { + return end.filter(curry(universe.eq, s)); + }); + }; + + var eq = function (universe, item) { + return curry(universe.eq, item); + }; + var ancestors$2 = function (universe, start, end, isRoot) { + if (isRoot === void 0) { + isRoot = never; + } + var ps1 = [start].concat(universe.up().all(start)); + var ps2 = [end].concat(universe.up().all(end)); + var prune = function (path) { + var index = findIndex(path, isRoot); + return index.fold(function () { + return path; + }, function (ind) { + return path.slice(0, ind + 1); + }); + }; + var pruned1 = prune(ps1); + var pruned2 = prune(ps2); + var shared = find$1(pruned1, function (x) { + return exists(pruned2, eq(universe, x)); + }); + return { + firstpath: pruned1, + secondpath: pruned2, + shared: shared + }; + }; + + var sharedOne$1 = oneAll; + var ancestors$1 = ancestors$2; + + var universe$3 = DomUniverse(); + var sharedOne = function (look, elements) { + return sharedOne$1(universe$3, function (_universe, element) { + return look(element); + }, elements); + }; + var ancestors = function (start, finish, isRoot) { + return ancestors$1(universe$3, start, finish, isRoot); + }; + + var lookupTable = function (container) { + return ancestor$1(container, 'table'); + }; + var identify = function (start, finish, isRoot) { + var getIsRoot = function (rootTable) { + return function (element) { + return isRoot !== undefined && isRoot(element) || eq$1(element, rootTable); + }; + }; + if (eq$1(start, finish)) { + return Optional.some({ + boxes: Optional.some([start]), + start: start, + finish: finish + }); + } else { + return lookupTable(start).bind(function (startTable) { + return lookupTable(finish).bind(function (finishTable) { + if (eq$1(startTable, finishTable)) { + return Optional.some({ + boxes: intercepts(startTable, start, finish), + start: start, + finish: finish + }); + } else if (contains(startTable, finishTable)) { + var ancestorCells = ancestors$3(finish, 'td,th', getIsRoot(startTable)); + var finishCell = ancestorCells.length > 0 ? ancestorCells[ancestorCells.length - 1] : finish; + return Optional.some({ + boxes: nestedIntercepts(startTable, start, startTable, finish, finishTable), + start: start, + finish: finishCell + }); + } else if (contains(finishTable, startTable)) { + var ancestorCells = ancestors$3(start, 'td,th', getIsRoot(finishTable)); + var startCell = ancestorCells.length > 0 ? ancestorCells[ancestorCells.length - 1] : start; + return Optional.some({ + boxes: nestedIntercepts(finishTable, start, startTable, finish, finishTable), + start: start, + finish: startCell + }); + } else { + return ancestors(start, finish).shared.bind(function (lca) { + return closest$1(lca, 'table', isRoot).bind(function (lcaTable) { + var finishAncestorCells = ancestors$3(finish, 'td,th', getIsRoot(lcaTable)); + var finishCell = finishAncestorCells.length > 0 ? finishAncestorCells[finishAncestorCells.length - 1] : finish; + var startAncestorCells = ancestors$3(start, 'td,th', getIsRoot(lcaTable)); + var startCell = startAncestorCells.length > 0 ? startAncestorCells[startAncestorCells.length - 1] : start; + return Optional.some({ + boxes: nestedIntercepts(lcaTable, start, startTable, finish, finishTable), + start: startCell, + finish: finishCell + }); + }); + }); + } + }); + }); + } + }; + var retrieve$1 = function (container, selector) { + var sels = descendants(container, selector); + return sels.length > 0 ? Optional.some(sels) : Optional.none(); + }; + var getLast = function (boxes, lastSelectedSelector) { + return find$1(boxes, function (box) { + return is$2(box, lastSelectedSelector); + }); + }; + var getEdges = function (container, firstSelectedSelector, lastSelectedSelector) { + return descendant(container, firstSelectedSelector).bind(function (first) { + return descendant(container, lastSelectedSelector).bind(function (last) { + return sharedOne(lookupTable, [ + first, + last + ]).map(function (table) { + return { + first: first, + last: last, + table: table + }; + }); + }); + }); + }; + var expandTo = function (finish, firstSelectedSelector) { + return ancestor$1(finish, 'table').bind(function (table) { + return descendant(table, firstSelectedSelector).bind(function (start) { + return identify(start, finish).bind(function (identified) { + return identified.boxes.map(function (boxes) { + return { + boxes: boxes, + start: identified.start, + finish: identified.finish + }; + }); + }); + }); + }); + }; + var shiftSelection = function (boxes, deltaRow, deltaColumn, firstSelectedSelector, lastSelectedSelector) { + return getLast(boxes, lastSelectedSelector).bind(function (last) { + return moveBy(last, deltaRow, deltaColumn).bind(function (finish) { + return expandTo(finish, firstSelectedSelector); + }); + }); + }; + + var retrieve = function (container, selector) { + return retrieve$1(container, selector); + }; + var retrieveBox = function (container, firstSelectedSelector, lastSelectedSelector) { + return getEdges(container, firstSelectedSelector, lastSelectedSelector).bind(function (edges) { + var isRoot = function (ancestor) { + return eq$1(container, ancestor); + }; + var sectionSelector = 'thead,tfoot,tbody,table'; + var firstAncestor = ancestor$1(edges.first, sectionSelector, isRoot); + var lastAncestor = ancestor$1(edges.last, sectionSelector, isRoot); + return firstAncestor.bind(function (fA) { + return lastAncestor.bind(function (lA) { + return eq$1(fA, lA) ? getBox(edges.table, edges.first, edges.last) : Optional.none(); + }); + }); + }); + }; + + var generate = function (cases) { + if (!isArray(cases)) { + throw new Error('cases must be an array'); + } + if (cases.length === 0) { + throw new Error('there must be at least one case'); + } + var constructors = []; + var adt = {}; + each$2(cases, function (acase, count) { + var keys$1 = keys(acase); + if (keys$1.length !== 1) { + throw new Error('one and only one name per case'); + } + var key = keys$1[0]; + var value = acase[key]; + if (adt[key] !== undefined) { + throw new Error('duplicate key detected:' + key); + } else if (key === 'cata') { + throw new Error('cannot have a case named cata (sorry)'); + } else if (!isArray(value)) { + throw new Error('case arguments must be an array'); + } + constructors.push(key); + adt[key] = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var argLength = args.length; + if (argLength !== value.length) { + throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength); + } + var match = function (branches) { + var branchKeys = keys(branches); + if (constructors.length !== branchKeys.length) { + throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\nActual: ' + branchKeys.join(',')); + } + var allReqd = forall(constructors, function (reqKey) { + return contains$2(branchKeys, reqKey); + }); + if (!allReqd) { + throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\nRequired: ' + constructors.join(', ')); + } + return branches[key].apply(null, args); + }; + return { + fold: function () { + var foldArgs = []; + for (var _i = 0; _i < arguments.length; _i++) { + foldArgs[_i] = arguments[_i]; + } + if (foldArgs.length !== cases.length) { + throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + foldArgs.length); + } + var target = foldArgs[count]; + return target.apply(null, args); + }, + match: match, + log: function (label) { + console.log(label, { + constructors: constructors, + constructor: key, + params: args + }); + } + }; + }; + }); + return adt; + }; + var Adt = { generate: generate }; + + var type = Adt.generate([ + { none: [] }, + { multiple: ['elements'] }, + { single: ['element'] } + ]); + var cata$2 = function (subject, onNone, onMultiple, onSingle) { + return subject.fold(onNone, onMultiple, onSingle); + }; + var none$1 = type.none; + var multiple = type.multiple; + var single = type.single; + + var Selections = function (lazyRoot, getStart, selectedSelector) { + var get = function () { + return retrieve(lazyRoot(), selectedSelector).fold(function () { + return getStart().fold(none$1, single); + }, function (cells) { + return multiple(cells); + }); + }; + return { get: get }; + }; + + var global$3 = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var clone = function (original, isDeep) { + return SugarElement.fromDom(original.dom.cloneNode(isDeep)); + }; + var shallow = function (original) { + return clone(original, false); + }; + var deep = function (original) { + return clone(original, true); + }; + var shallowAs = function (original, tag) { + var nu = SugarElement.fromTag(tag); + var attributes = clone$2(original); + setAll$1(nu, attributes); + return nu; + }; + var copy$1 = function (original, tag) { + var nu = shallowAs(original, tag); + var cloneChildren = children$3(deep(original)); + append(nu, cloneChildren); + return nu; + }; + var mutate$1 = function (original, tag) { + var nu = shallowAs(original, tag); + before$4(original, nu); + var children = children$3(original); + append(nu, children); + remove$5(original); + return nu; + }; + + var Dimension = function (name, getOffset) { + var set = function (element, h) { + if (!isNumber(h) && !h.match(/^[0-9]+$/)) { + throw new Error(name + '.set accepts only positive integer values. Value was ' + h); + } + var dom = element.dom; + if (isSupported(dom)) { + dom.style[name] = h + 'px'; + } + }; + var get = function (element) { + var r = getOffset(element); + if (r <= 0 || r === null) { + var css = get$a(element, name); + return parseFloat(css) || 0; + } + return r; + }; + var getOuter = get; + var aggregate = function (element, properties) { + return foldl(properties, function (acc, property) { + var val = get$a(element, property); + var value = val === undefined ? 0 : parseInt(val, 10); + return isNaN(value) ? acc : acc + value; + }, 0); + }; + var max = function (element, value, properties) { + var cumulativeInclusions = aggregate(element, properties); + var absoluteMax = value > cumulativeInclusions ? value - cumulativeInclusions : 0; + return absoluteMax; + }; + return { + set: set, + get: get, + getOuter: getOuter, + aggregate: aggregate, + max: max + }; + }; + + var needManualCalc = function () { + var browser = detect$3().browser; + return browser.isIE() || browser.isEdge(); + }; + var toNumber = function (px, fallback) { + return toFloat(px).getOr(fallback); + }; + var getProp = function (element, name, fallback) { + return toNumber(get$a(element, name), fallback); + }; + var getBoxSizing = function (element) { + return get$a(element, 'box-sizing'); + }; + var calcContentBoxSize = function (element, size, upper, lower) { + var paddingUpper = getProp(element, 'padding-' + upper, 0); + var paddingLower = getProp(element, 'padding-' + lower, 0); + var borderUpper = getProp(element, 'border-' + upper + '-width', 0); + var borderLower = getProp(element, 'border-' + lower + '-width', 0); + return size - paddingUpper - paddingLower - borderUpper - borderLower; + }; + var getCalculatedHeight = function (element, boxSizing) { + var dom = element.dom; + var height = dom.getBoundingClientRect().height || dom.offsetHeight; + return boxSizing === 'border-box' ? height : calcContentBoxSize(element, height, 'top', 'bottom'); + }; + var getCalculatedWidth = function (element, boxSizing) { + var dom = element.dom; + var width = dom.getBoundingClientRect().width || dom.offsetWidth; + return boxSizing === 'border-box' ? width : calcContentBoxSize(element, width, 'left', 'right'); + }; + var getHeight$1 = function (element) { + return needManualCalc() ? getCalculatedHeight(element, getBoxSizing(element)) : getProp(element, 'height', element.dom.offsetHeight); + }; + var getWidth = function (element) { + return needManualCalc() ? getCalculatedWidth(element, getBoxSizing(element)) : getProp(element, 'width', element.dom.offsetWidth); + }; + var getInnerWidth = function (element) { + return getCalculatedWidth(element, 'content-box'); + }; + + var api$1 = Dimension('width', function (element) { + return element.dom.offsetWidth; + }); + var get$8 = function (element) { + return api$1.get(element); + }; + var getOuter$2 = function (element) { + return api$1.getOuter(element); + }; + var getInner = getInnerWidth; + var getRuntime$1 = getWidth; + + var columns = function (warehouse, isValidCell) { + if (isValidCell === void 0) { + isValidCell = always; + } + var grid = warehouse.grid; + var cols = range$1(grid.columns, identity); + var rowsArr = range$1(grid.rows, identity); + return map$1(cols, function (col) { + var getBlock = function () { + return bind$2(rowsArr, function (r) { + return Warehouse.getAt(warehouse, r, col).filter(function (detail) { + return detail.column === col; + }).toArray(); + }); + }; + var isValid = function (detail) { + return detail.colspan === 1 && isValidCell(detail.element); + }; + var getFallback = function () { + return Warehouse.getAt(warehouse, 0, col); + }; + return decide(getBlock, isValid, getFallback); + }); + }; + var decide = function (getBlock, isValid, getFallback) { + var inBlock = getBlock(); + var validInBlock = find$1(inBlock, isValid); + var detailOption = validInBlock.orThunk(function () { + return Optional.from(inBlock[0]).orThunk(getFallback); + }); + return detailOption.map(function (detail) { + return detail.element; + }); + }; + var rows = function (warehouse) { + var grid = warehouse.grid; + var rowsArr = range$1(grid.rows, identity); + var cols = range$1(grid.columns, identity); + return map$1(rowsArr, function (row) { + var getBlock = function () { + return bind$2(cols, function (c) { + return Warehouse.getAt(warehouse, row, c).filter(function (detail) { + return detail.row === row; + }).fold(constant([]), function (detail) { + return [detail]; + }); + }); + }; + var isSingle = function (detail) { + return detail.rowspan === 1; + }; + var getFallback = function () { + return Warehouse.getAt(warehouse, row, 0); + }; + return decide(getBlock, isSingle, getFallback); + }); + }; + + var deduce = function (xs, index) { + if (index < 0 || index >= xs.length - 1) { + return Optional.none(); + } + var current = xs[index].fold(function () { + var rest = reverse(xs.slice(0, index)); + return findMap(rest, function (a, i) { + return a.map(function (aa) { + return { + value: aa, + delta: i + 1 + }; + }); + }); + }, function (c) { + return Optional.some({ + value: c, + delta: 0 + }); + }); + var next = xs[index + 1].fold(function () { + var rest = xs.slice(index + 1); + return findMap(rest, function (a, i) { + return a.map(function (aa) { + return { + value: aa, + delta: i + 1 + }; + }); + }); + }, function (n) { + return Optional.some({ + value: n, + delta: 1 + }); + }); + return current.bind(function (c) { + return next.map(function (n) { + var extras = n.delta + c.delta; + return Math.abs(n.value - c.value) / extras; + }); + }); + }; + + var onDirection = function (isLtr, isRtl) { + return function (element) { + return getDirection(element) === 'rtl' ? isRtl : isLtr; + }; + }; + var getDirection = function (element) { + return get$a(element, 'direction') === 'rtl' ? 'rtl' : 'ltr'; + }; + + var api = Dimension('height', function (element) { + var dom = element.dom; + return inBody(element) ? dom.getBoundingClientRect().height : dom.offsetHeight; + }); + var get$7 = function (element) { + return api.get(element); + }; + var getOuter$1 = function (element) { + return api.getOuter(element); + }; + var getRuntime = getHeight$1; + + var r = function (left, top) { + var translate = function (x, y) { + return r(left + x, top + y); + }; + return { + left: left, + top: top, + translate: translate + }; + }; + var SugarPosition = r; + + var boxPosition = function (dom) { + var box = dom.getBoundingClientRect(); + return SugarPosition(box.left, box.top); + }; + var firstDefinedOrZero = function (a, b) { + if (a !== undefined) { + return a; + } else { + return b !== undefined ? b : 0; + } + }; + var absolute = function (element) { + var doc = element.dom.ownerDocument; + var body = doc.body; + var win = doc.defaultView; + var html = doc.documentElement; + if (body === element.dom) { + return SugarPosition(body.offsetLeft, body.offsetTop); + } + var scrollTop = firstDefinedOrZero(win === null || win === void 0 ? void 0 : win.pageYOffset, html.scrollTop); + var scrollLeft = firstDefinedOrZero(win === null || win === void 0 ? void 0 : win.pageXOffset, html.scrollLeft); + var clientTop = firstDefinedOrZero(html.clientTop, body.clientTop); + var clientLeft = firstDefinedOrZero(html.clientLeft, body.clientLeft); + return viewport(element).translate(scrollLeft - clientLeft, scrollTop - clientTop); + }; + var viewport = function (element) { + var dom = element.dom; + var doc = dom.ownerDocument; + var body = doc.body; + if (body === dom) { + return SugarPosition(body.offsetLeft, body.offsetTop); + } + if (!inBody(element)) { + return SugarPosition(0, 0); + } + return boxPosition(dom); + }; + + var rowInfo = function (row, y) { + return { + row: row, + y: y + }; + }; + var colInfo = function (col, x) { + return { + col: col, + x: x + }; + }; + var rtlEdge = function (cell) { + var pos = absolute(cell); + return pos.left + getOuter$2(cell); + }; + var ltrEdge = function (cell) { + return absolute(cell).left; + }; + var getLeftEdge = function (index, cell) { + return colInfo(index, ltrEdge(cell)); + }; + var getRightEdge = function (index, cell) { + return colInfo(index, rtlEdge(cell)); + }; + var getTop$1 = function (cell) { + return absolute(cell).top; + }; + var getTopEdge = function (index, cell) { + return rowInfo(index, getTop$1(cell)); + }; + var getBottomEdge = function (index, cell) { + return rowInfo(index, getTop$1(cell) + getOuter$1(cell)); + }; + var findPositions = function (getInnerEdge, getOuterEdge, array) { + if (array.length === 0) { + return []; + } + var lines = map$1(array.slice(1), function (cellOption, index) { + return cellOption.map(function (cell) { + return getInnerEdge(index, cell); + }); + }); + var lastLine = array[array.length - 1].map(function (cell) { + return getOuterEdge(array.length - 1, cell); + }); + return lines.concat([lastLine]); + }; + var negate = function (step) { + return -step; + }; + var height = { + delta: identity, + positions: function (optElements) { + return findPositions(getTopEdge, getBottomEdge, optElements); + }, + edge: getTop$1 + }; + var ltr$1 = { + delta: identity, + edge: ltrEdge, + positions: function (optElements) { + return findPositions(getLeftEdge, getRightEdge, optElements); + } + }; + var rtl$1 = { + delta: negate, + edge: rtlEdge, + positions: function (optElements) { + return findPositions(getRightEdge, getLeftEdge, optElements); + } + }; + var detect$2 = onDirection(ltr$1, rtl$1); + var width = { + delta: function (amount, table) { + return detect$2(table).delta(amount, table); + }, + positions: function (cols, table) { + return detect$2(table).positions(cols, table); + }, + edge: function (cell) { + return detect$2(cell).edge(cell); + } + }; + + var units = { + unsupportedLength: [ + 'em', + 'ex', + 'cap', + 'ch', + 'ic', + 'rem', + 'lh', + 'rlh', + 'vw', + 'vh', + 'vi', + 'vb', + 'vmin', + 'vmax', + 'cm', + 'mm', + 'Q', + 'in', + 'pc', + 'pt', + 'px' + ], + fixed: [ + 'px', + 'pt' + ], + relative: ['%'], + empty: [''] + }; + var pattern = function () { + var decimalDigits = '[0-9]+'; + var signedInteger = '[+-]?' + decimalDigits; + var exponentPart = '[eE]' + signedInteger; + var dot = '\\.'; + var opt = function (input) { + return '(?:' + input + ')?'; + }; + var unsignedDecimalLiteral = [ + 'Infinity', + decimalDigits + dot + opt(decimalDigits) + opt(exponentPart), + dot + decimalDigits + opt(exponentPart), + decimalDigits + opt(exponentPart) + ].join('|'); + var float = '[+-]?(?:' + unsignedDecimalLiteral + ')'; + return new RegExp('^(' + float + ')(.*)$'); + }(); + var isUnit = function (unit, accepted) { + return exists(accepted, function (acc) { + return exists(units[acc], function (check) { + return unit === check; + }); + }); + }; + var parse = function (input, accepted) { + var match = Optional.from(pattern.exec(input)); + return match.bind(function (array) { + var value = Number(array[1]); + var unitRaw = array[2]; + if (isUnit(unitRaw, accepted)) { + return Optional.some({ + value: value, + unit: unitRaw + }); + } else { + return Optional.none(); + } + }); + }; + + var rPercentageBasedSizeRegex = /(\d+(\.\d+)?)%/; + var rPixelBasedSizeRegex = /(\d+(\.\d+)?)px|em/; + var isCol$2 = isTag('col'); + var getPercentSize = function (elm, outerGetter, innerGetter) { + var relativeParent = parentElement(elm).getOrThunk(function () { + return getBody$1(owner(elm)); + }); + return outerGetter(elm) / innerGetter(relativeParent) * 100; + }; + var setPixelWidth = function (cell, amount) { + set$1(cell, 'width', amount + 'px'); + }; + var setPercentageWidth = function (cell, amount) { + set$1(cell, 'width', amount + '%'); + }; + var setHeight = function (cell, amount) { + set$1(cell, 'height', amount + 'px'); + }; + var getHeightValue = function (cell) { + return getRuntime(cell) + 'px'; + }; + var convert = function (cell, number, getter, setter) { + var newSize = table(cell).map(function (table) { + var total = getter(table); + return Math.floor(number / 100 * total); + }).getOr(number); + setter(cell, newSize); + return newSize; + }; + var normalizePixelSize = function (value, cell, getter, setter) { + var number = parseFloat(value); + return endsWith(value, '%') && name(cell) !== 'table' ? convert(cell, number, getter, setter) : number; + }; + var getTotalHeight = function (cell) { + var value = getHeightValue(cell); + if (!value) { + return get$7(cell); + } + return normalizePixelSize(value, cell, get$7, setHeight); + }; + var get$6 = function (cell, type, f) { + var v = f(cell); + var span = getSpan(cell, type); + return v / span; + }; + var getRaw$1 = function (element, prop) { + return getRaw$2(element, prop).orThunk(function () { + return getOpt(element, prop).map(function (val) { + return val + 'px'; + }); + }); + }; + var getRawWidth$1 = function (element) { + return getRaw$1(element, 'width'); + }; + var getRawHeight = function (element) { + return getRaw$1(element, 'height'); + }; + var getPercentageWidth = function (cell) { + return getPercentSize(cell, get$8, getInner); + }; + var getPixelWidth$1 = function (cell) { + return isCol$2(cell) ? get$8(cell) : getRuntime$1(cell); + }; + var getHeight = function (cell) { + return get$6(cell, 'rowspan', getTotalHeight); + }; + var getGenericWidth = function (cell) { + var width = getRawWidth$1(cell); + return width.bind(function (w) { + return parse(w, [ + 'fixed', + 'relative', + 'empty' + ]); + }); + }; + var setGenericWidth = function (cell, amount, unit) { + set$1(cell, 'width', amount + unit); + }; + var getPixelTableWidth = function (table) { + return get$8(table) + 'px'; + }; + var getPercentTableWidth = function (table) { + return getPercentSize(table, get$8, getInner) + '%'; + }; + var isPercentSizing$1 = function (table) { + return getRawWidth$1(table).exists(function (size) { + return rPercentageBasedSizeRegex.test(size); + }); + }; + var isPixelSizing$1 = function (table) { + return getRawWidth$1(table).exists(function (size) { + return rPixelBasedSizeRegex.test(size); + }); + }; + var isNoneSizing$1 = function (table) { + return getRawWidth$1(table).isNone(); + }; + var percentageBasedSizeRegex = constant(rPercentageBasedSizeRegex); + + var isCol$1 = isTag('col'); + var getRawW = function (cell) { + return getRawWidth$1(cell).getOrThunk(function () { + return getPixelWidth$1(cell) + 'px'; + }); + }; + var getRawH = function (cell) { + return getRawHeight(cell).getOrThunk(function () { + return getHeight(cell) + 'px'; + }); + }; + var justCols = function (warehouse) { + return map$1(Warehouse.justColumns(warehouse), function (column) { + return Optional.from(column.element); + }); + }; + var isValidColumn = function (cell) { + var browser = detect$3().browser; + var supportsColWidths = browser.isChrome() || browser.isFirefox(); + return isCol$1(cell) ? supportsColWidths : true; + }; + var getDimension = function (cellOpt, index, backups, filter, getter, fallback) { + return cellOpt.filter(filter).fold(function () { + return fallback(deduce(backups, index)); + }, function (cell) { + return getter(cell); + }); + }; + var getWidthFrom = function (warehouse, table, getWidth, fallback) { + var columnCells = columns(warehouse); + var columns$1 = Warehouse.hasColumns(warehouse) ? justCols(warehouse) : columnCells; + var backups = [Optional.some(width.edge(table))].concat(map$1(width.positions(columnCells, table), function (pos) { + return pos.map(function (p) { + return p.x; + }); + })); + var colFilter = not(hasColspan); + return map$1(columns$1, function (cellOption, c) { + return getDimension(cellOption, c, backups, colFilter, function (column) { + if (isValidColumn(column)) { + return getWidth(column); + } else { + var cell = bindFrom(columnCells[c], identity); + return getDimension(cell, c, backups, colFilter, function (cell) { + return fallback(Optional.some(get$8(cell))); + }, fallback); + } + }, fallback); + }); + }; + var getDeduced = function (deduced) { + return deduced.map(function (d) { + return d + 'px'; + }).getOr(''); + }; + var getRawWidths = function (warehouse, table) { + return getWidthFrom(warehouse, table, getRawW, getDeduced); + }; + var getPercentageWidths = function (warehouse, table, tableSize) { + return getWidthFrom(warehouse, table, getPercentageWidth, function (deduced) { + return deduced.fold(function () { + return tableSize.minCellWidth(); + }, function (cellWidth) { + return cellWidth / tableSize.pixelWidth() * 100; + }); + }); + }; + var getPixelWidths = function (warehouse, table, tableSize) { + return getWidthFrom(warehouse, table, getPixelWidth$1, function (deduced) { + return deduced.getOrThunk(tableSize.minCellWidth); + }); + }; + var getHeightFrom = function (warehouse, table, direction, getHeight, fallback) { + var rows$1 = rows(warehouse); + var backups = [Optional.some(direction.edge(table))].concat(map$1(direction.positions(rows$1, table), function (pos) { + return pos.map(function (p) { + return p.y; + }); + })); + return map$1(rows$1, function (cellOption, c) { + return getDimension(cellOption, c, backups, not(hasRowspan), getHeight, fallback); + }); + }; + var getPixelHeights = function (warehouse, table, direction) { + return getHeightFrom(warehouse, table, direction, getHeight, function (deduced) { + return deduced.getOrThunk(minHeight); + }); + }; + var getRawHeights = function (warehouse, table, direction) { + return getHeightFrom(warehouse, table, direction, getRawH, getDeduced); + }; + + var widthLookup = function (table, getter) { + return function () { + if (inBody(table)) { + return getter(table); + } else { + return parseFloat(getRaw$2(table, 'width').getOr('0')); + } + }; + }; + var noneSize = function (table) { + var getWidth = widthLookup(table, get$8); + var zero = constant(0); + var getWidths = function (warehouse, tableSize) { + return getPixelWidths(warehouse, table, tableSize); + }; + return { + width: getWidth, + pixelWidth: getWidth, + getWidths: getWidths, + getCellDelta: zero, + singleColumnWidth: constant([0]), + minCellWidth: zero, + setElementWidth: noop, + adjustTableWidth: noop, + isRelative: true, + label: 'none' + }; + }; + var percentageSize = function (table) { + var getFloatWidth = widthLookup(table, function (elem) { + return parseFloat(getPercentTableWidth(elem)); + }); + var getWidth = widthLookup(table, get$8); + var getCellDelta = function (delta) { + return delta / getWidth() * 100; + }; + var singleColumnWidth = function (w, _delta) { + return [100 - w]; + }; + var minCellWidth = function () { + return minWidth() / getWidth() * 100; + }; + var adjustTableWidth = function (delta) { + var currentWidth = getFloatWidth(); + var change = delta / 100 * currentWidth; + var newWidth = currentWidth + change; + setPercentageWidth(table, newWidth); + }; + var getWidths = function (warehouse, tableSize) { + return getPercentageWidths(warehouse, table, tableSize); + }; + return { + width: getFloatWidth, + pixelWidth: getWidth, + getWidths: getWidths, + getCellDelta: getCellDelta, + singleColumnWidth: singleColumnWidth, + minCellWidth: minCellWidth, + setElementWidth: setPercentageWidth, + adjustTableWidth: adjustTableWidth, + isRelative: true, + label: 'percent' + }; + }; + var pixelSize = function (table) { + var getWidth = widthLookup(table, get$8); + var getCellDelta = identity; + var singleColumnWidth = function (w, delta) { + var newNext = Math.max(minWidth(), w + delta); + return [newNext - w]; + }; + var adjustTableWidth = function (delta) { + var newWidth = getWidth() + delta; + setPixelWidth(table, newWidth); + }; + var getWidths = function (warehouse, tableSize) { + return getPixelWidths(warehouse, table, tableSize); + }; + return { + width: getWidth, + pixelWidth: getWidth, + getWidths: getWidths, + getCellDelta: getCellDelta, + singleColumnWidth: singleColumnWidth, + minCellWidth: minWidth, + setElementWidth: setPixelWidth, + adjustTableWidth: adjustTableWidth, + isRelative: false, + label: 'pixel' + }; + }; + var chooseSize = function (element, width) { + var percentMatch = percentageBasedSizeRegex().exec(width); + if (percentMatch !== null) { + return percentageSize(element); + } else { + return pixelSize(element); + } + }; + var getTableSize = function (table) { + var width = getRawWidth$1(table); + return width.fold(function () { + return noneSize(table); + }, function (w) { + return chooseSize(table, w); + }); + }; + var TableSize = { + getTableSize: getTableSize, + pixelSize: pixelSize, + percentageSize: percentageSize, + noneSize: noneSize + }; + + var statsStruct = function (minRow, minCol, maxRow, maxCol, allCells, selectedCells) { + return { + minRow: minRow, + minCol: minCol, + maxRow: maxRow, + maxCol: maxCol, + allCells: allCells, + selectedCells: selectedCells + }; + }; + var findSelectedStats = function (house, isSelected) { + var totalColumns = house.grid.columns; + var totalRows = house.grid.rows; + var minRow = totalRows; + var minCol = totalColumns; + var maxRow = 0; + var maxCol = 0; + var allCells = []; + var selectedCells = []; + each$1(house.access, function (detail) { + allCells.push(detail); + if (isSelected(detail)) { + selectedCells.push(detail); + var startRow = detail.row; + var endRow = startRow + detail.rowspan - 1; + var startCol = detail.column; + var endCol = startCol + detail.colspan - 1; + if (startRow < minRow) { + minRow = startRow; + } else if (endRow > maxRow) { + maxRow = endRow; + } + if (startCol < minCol) { + minCol = startCol; + } else if (endCol > maxCol) { + maxCol = endCol; + } + } + }); + return statsStruct(minRow, minCol, maxRow, maxCol, allCells, selectedCells); + }; + var makeCell = function (list, seenSelected, rowIndex) { + var row = list[rowIndex].element; + var td = SugarElement.fromTag('td'); + append$1(td, SugarElement.fromTag('br')); + var f = seenSelected ? append$1 : prepend; + f(row, td); + }; + var fillInGaps = function (list, house, stats, isSelected) { + var totalColumns = house.grid.columns; + var totalRows = house.grid.rows; + for (var i = 0; i < totalRows; i++) { + var seenSelected = false; + for (var j = 0; j < totalColumns; j++) { + if (!(i < stats.minRow || i > stats.maxRow || j < stats.minCol || j > stats.maxCol)) { + var needCell = Warehouse.getAt(house, i, j).filter(isSelected).isNone(); + if (needCell) { + makeCell(list, seenSelected, i); + } else { + seenSelected = true; + } + } + } + } + }; + var clean = function (replica, stats, house, widthDelta) { + each$1(house.columns, function (col) { + if (col.column < stats.minCol || col.column > stats.maxCol) { + remove$5(col.element); + } + }); + var emptyRows = filter$2(firstLayer(replica, 'tr'), function (row) { + return row.dom.childElementCount === 0; + }); + each$2(emptyRows, remove$5); + if (stats.minCol === stats.maxCol || stats.minRow === stats.maxRow) { + each$2(firstLayer(replica, 'th,td'), function (cell) { + remove$7(cell, 'rowspan'); + remove$7(cell, 'colspan'); + }); + } + remove$7(replica, LOCKED_COL_ATTR); + remove$7(replica, 'data-snooker-col-series'); + var tableSize = TableSize.getTableSize(replica); + tableSize.adjustTableWidth(widthDelta); + }; + var getTableWidthDelta = function (table, warehouse, tableSize, stats) { + if (stats.minCol === 0 && warehouse.grid.columns === stats.maxCol + 1) { + return 0; + } + var colWidths = getPixelWidths(warehouse, table, tableSize); + var allColsWidth = foldl(colWidths, function (acc, width) { + return acc + width; + }, 0); + var selectedColsWidth = foldl(colWidths.slice(stats.minCol, stats.maxCol + 1), function (acc, width) { + return acc + width; + }, 0); + var newWidth = selectedColsWidth / allColsWidth * tableSize.pixelWidth(); + var delta = newWidth - tableSize.pixelWidth(); + return tableSize.getCellDelta(delta); + }; + var extract$1 = function (table, selectedSelector) { + var isSelected = function (detail) { + return is$2(detail.element, selectedSelector); + }; + var replica = deep(table); + var list = fromTable$1(replica); + var tableSize = TableSize.getTableSize(table); + var replicaHouse = Warehouse.generate(list); + var replicaStats = findSelectedStats(replicaHouse, isSelected); + var selector = 'th:not(' + selectedSelector + ')' + ',td:not(' + selectedSelector + ')'; + var unselectedCells = filterFirstLayer(replica, 'th,td', function (cell) { + return is$2(cell, selector); + }); + each$2(unselectedCells, remove$5); + fillInGaps(list, replicaHouse, replicaStats, isSelected); + var house = Warehouse.fromTable(table); + var widthDelta = getTableWidthDelta(table, house, tableSize, replicaStats); + clean(replica, replicaStats, replicaHouse, widthDelta); + return replica; + }; + + var nbsp = '\xA0'; + + var getEnd = function (element) { + return name(element) === 'img' ? 1 : getOption(element).fold(function () { + return children$3(element).length; + }, function (v) { + return v.length; + }); + }; + var isTextNodeWithCursorPosition = function (el) { + return getOption(el).filter(function (text) { + return text.trim().length !== 0 || text.indexOf(nbsp) > -1; + }).isSome(); + }; + var elementsWithCursorPosition = [ + 'img', + 'br' + ]; + var isCursorPosition = function (elem) { + var hasCursorPosition = isTextNodeWithCursorPosition(elem); + return hasCursorPosition || contains$2(elementsWithCursorPosition, name(elem)); + }; + + var first = function (element) { + return descendant$1(element, isCursorPosition); + }; + var last$1 = function (element) { + return descendantRtl(element, isCursorPosition); + }; + var descendantRtl = function (scope, predicate) { + var descend = function (element) { + var children = children$3(element); + for (var i = children.length - 1; i >= 0; i--) { + var child = children[i]; + if (predicate(child)) { + return Optional.some(child); + } + var res = descend(child); + if (res.isSome()) { + return res; + } + } + return Optional.none(); + }; + return descend(scope); + }; + + var transferableAttributes = { + scope: [ + 'row', + 'col' + ] + }; + var createCell = function (doc) { + return function () { + var td = SugarElement.fromTag('td', doc.dom); + append$1(td, SugarElement.fromTag('br', doc.dom)); + return td; + }; + }; + var createCol = function (doc) { + return function () { + return SugarElement.fromTag('col', doc.dom); + }; + }; + var createColgroup = function (doc) { + return function () { + return SugarElement.fromTag('colgroup', doc.dom); + }; + }; + var createRow$1 = function (doc) { + return function () { + return SugarElement.fromTag('tr', doc.dom); + }; + }; + var replace$1 = function (cell, tag, attrs) { + var replica = copy$1(cell, tag); + each$1(attrs, function (v, k) { + if (v === null) { + remove$7(replica, k); + } else { + set$2(replica, k, v); + } + }); + return replica; + }; + var pasteReplace = function (cell) { + return cell; + }; + var cloneFormats = function (oldCell, newCell, formats) { + var first$1 = first(oldCell); + return first$1.map(function (firstText) { + var formatSelector = formats.join(','); + var parents = ancestors$3(firstText, formatSelector, function (element) { + return eq$1(element, oldCell); + }); + return foldr(parents, function (last, parent) { + var clonedFormat = shallow(parent); + remove$7(clonedFormat, 'contenteditable'); + append$1(last, clonedFormat); + return clonedFormat; + }, newCell); + }).getOr(newCell); + }; + var cloneAppropriateAttributes = function (original, clone) { + each$1(transferableAttributes, function (validAttributes, attributeName) { + return getOpt(original, attributeName).filter(function (attribute) { + return contains$2(validAttributes, attribute); + }).each(function (attribute) { + return set$2(clone, attributeName, attribute); + }); + }); + }; + var cellOperations = function (mutate, doc, formatsToClone) { + var cloneCss = function (prev, clone) { + copy$2(prev.element, clone); + remove$6(clone, 'height'); + if (prev.colspan !== 1) { + remove$6(clone, 'width'); + } + }; + var newCell = function (prev) { + var td = SugarElement.fromTag(name(prev.element), doc.dom); + var formats = formatsToClone.getOr([ + 'strong', + 'em', + 'b', + 'i', + 'span', + 'font', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'p', + 'div' + ]); + var lastNode = formats.length > 0 ? cloneFormats(prev.element, td, formats) : td; + append$1(lastNode, SugarElement.fromTag('br')); + cloneCss(prev, td); + cloneAppropriateAttributes(prev.element, td); + mutate(prev.element, td); + return td; + }; + var newCol = function (prev) { + var col = SugarElement.fromTag(name(prev.element), doc.dom); + cloneCss(prev, col); + mutate(prev.element, col); + return col; + }; + return { + col: newCol, + colgroup: createColgroup(doc), + row: createRow$1(doc), + cell: newCell, + replace: replace$1, + colGap: createCol(doc), + gap: createCell(doc) + }; + }; + var paste$1 = function (doc) { + return { + col: createCol(doc), + colgroup: createColgroup(doc), + row: createRow$1(doc), + cell: createCell(doc), + replace: pasteReplace, + colGap: createCol(doc), + gap: createCell(doc) + }; + }; + + var fromHtml = function (html, scope) { + var doc = scope || document; + var div = doc.createElement('div'); + div.innerHTML = html; + return children$3(SugarElement.fromDom(div)); + }; + var fromDom = function (nodes) { + return map$1(nodes, SugarElement.fromDom); + }; + + var getNodeName = function (elm) { + return elm.nodeName.toLowerCase(); + }; + var getBody = function (editor) { + return SugarElement.fromDom(editor.getBody()); + }; + var getPixelWidth = function (elm) { + return elm.getBoundingClientRect().width; + }; + var getPixelHeight = function (elm) { + return elm.getBoundingClientRect().height; + }; + var getIsRoot = function (editor) { + return function (element) { + return eq$1(element, getBody(editor)); + }; + }; + var removePxSuffix = function (size) { + return size ? size.replace(/px$/, '') : ''; + }; + var addPxSuffix = function (size) { + return /^\d+(\.\d+)?$/.test(size) ? size + 'px' : size; + }; + var removeDataStyle = function (table) { + remove$7(table, 'data-mce-style'); + var removeStyleAttribute = function (element) { + return remove$7(element, 'data-mce-style'); + }; + each$2(cells$1(table), removeStyleAttribute); + each$2(columns$1(table), removeStyleAttribute); + each$2(rows$1(table), removeStyleAttribute); + }; + var getRawWidth = function (editor, elm) { + var raw = editor.dom.getStyle(elm, 'width') || editor.dom.getAttrib(elm, 'width'); + return Optional.from(raw).filter(isNotEmpty); + }; + var isPercentage$1 = function (value) { + return /^(\d+(\.\d+)?)%$/.test(value); + }; + var isPixel = function (value) { + return /^(\d+(\.\d+)?)px$/.test(value); + }; + var getSelectionStart = function (editor) { + return SugarElement.fromDom(editor.selection.getStart()); + }; + var getSelectionEnd = function (editor) { + return SugarElement.fromDom(editor.selection.getEnd()); + }; + + var selection = function (selections) { + return cata$2(selections.get(), constant([]), identity, pure); + }; + var unmergable = function (selections) { + var hasSpan = function (elem, type) { + return getOpt(elem, type).exists(function (span) { + return parseInt(span, 10) > 1; + }); + }; + var hasRowOrColSpan = function (elem) { + return hasSpan(elem, 'rowspan') || hasSpan(elem, 'colspan'); + }; + var candidates = selection(selections); + return candidates.length > 0 && forall(candidates, hasRowOrColSpan) ? Optional.some(candidates) : Optional.none(); + }; + var mergable = function (table, selections, ephemera) { + return cata$2(selections.get(), Optional.none, function (cells) { + if (cells.length <= 1) { + return Optional.none(); + } else { + return retrieveBox(table, ephemera.firstSelectedSelector, ephemera.lastSelectedSelector).map(function (bounds) { + return { + bounds: bounds, + cells: cells + }; + }); + } + }, Optional.none); + }; + + var strSelected = 'data-mce-selected'; + var strSelectedSelector = 'td[' + strSelected + '],th[' + strSelected + ']'; + var strAttributeSelector = '[' + strSelected + ']'; + var strFirstSelected = 'data-mce-first-selected'; + var strFirstSelectedSelector = 'td[' + strFirstSelected + '],th[' + strFirstSelected + ']'; + var strLastSelected = 'data-mce-last-selected'; + var strLastSelectedSelector = 'td[' + strLastSelected + '],th[' + strLastSelected + ']'; + var attributeSelector = strAttributeSelector; + var ephemera = { + selected: strSelected, + selectedSelector: strSelectedSelector, + firstSelected: strFirstSelected, + firstSelectedSelector: strFirstSelectedSelector, + lastSelected: strLastSelected, + lastSelectedSelector: strLastSelectedSelector + }; + + var noMenu = function (cell) { + return { + element: cell, + mergable: Optional.none(), + unmergable: Optional.none(), + selection: [cell] + }; + }; + var forMenu = function (selections, table, cell) { + return { + element: cell, + mergable: mergable(table, selections, ephemera), + unmergable: unmergable(selections), + selection: selection(selections) + }; + }; + var paste = function (element, clipboard, generators) { + return { + element: element, + clipboard: clipboard, + generators: generators + }; + }; + var pasteRows = function (selections, cell, clipboard, generators) { + return { + selection: selection(selections), + clipboard: clipboard, + generators: generators + }; + }; + + var getSelectionCellFallback = function (element) { + return table(element).bind(function (table) { + return retrieve(table, ephemera.firstSelectedSelector); + }).fold(constant(element), function (cells) { + return cells[0]; + }); + }; + var getSelectionFromSelector = function (selector) { + return function (initCell, isRoot) { + var cellName = name(initCell); + var cell = cellName === 'col' || cellName === 'colgroup' ? getSelectionCellFallback(initCell) : initCell; + return closest$1(cell, selector, isRoot); + }; + }; + var getSelectionCellOrCaption = getSelectionFromSelector('th,td,caption'); + var getSelectionCell = getSelectionFromSelector('th,td'); + var getCellsFromSelection = function (selections) { + return selection(selections); + }; + var getRowsFromSelection = function (selected, selector) { + var cellOpt = getSelectionCell(selected); + var rowsOpt = cellOpt.bind(function (cell) { + return table(cell); + }).map(function (table) { + return rows$1(table); + }); + return lift2(cellOpt, rowsOpt, function (cell, rows) { + return filter$2(rows, function (row) { + return exists(fromDom(row.dom.cells), function (rowCell) { + return get$b(rowCell, selector) === '1' || eq$1(rowCell, cell); + }); + }); + }).getOr([]); + }; + + var extractSelected = function (cells) { + return table(cells[0]).map(function (table) { + var replica = extract$1(table, attributeSelector); + removeDataStyle(replica); + return [replica]; + }); + }; + var serializeElements = function (editor, elements) { + return map$1(elements, function (elm) { + return editor.selection.serializer.serialize(elm.dom, {}); + }).join(''); + }; + var getTextContent = function (elements) { + return map$1(elements, function (element) { + return element.dom.innerText; + }).join(''); + }; + var registerEvents = function (editor, selections, actions) { + editor.on('BeforeGetContent', function (e) { + var multiCellContext = function (cells) { + e.preventDefault(); + extractSelected(cells).each(function (elements) { + e.content = e.format === 'text' ? getTextContent(elements) : serializeElements(editor, elements); + }); + }; + if (e.selection === true) { + cata$2(selections.get(), noop, multiCellContext, noop); + } + }); + editor.on('BeforeSetContent', function (e) { + if (e.selection === true && e.paste === true) { + var selectedCells = getCellsFromSelection(selections); + head(selectedCells).each(function (cell) { + table(cell).each(function (table) { + var elements = filter$2(fromHtml(e.content), function (content) { + return name(content) !== 'meta'; + }); + var isTable = isTag('table'); + if (elements.length === 1 && isTable(elements[0])) { + e.preventDefault(); + var doc = SugarElement.fromDom(editor.getDoc()); + var generators = paste$1(doc); + var targets = paste(cell, elements[0], generators); + actions.pasteCells(table, targets).each(function () { + editor.focus(); + }); + } + }); + }); + } + }); + }; + + var adt$7 = Adt.generate([ + { none: [] }, + { only: ['index'] }, + { + left: [ + 'index', + 'next' + ] + }, + { + middle: [ + 'prev', + 'index', + 'next' + ] + }, + { + right: [ + 'prev', + 'index' + ] + } + ]); + var ColumnContext = __assign({}, adt$7); + + var neighbours = function (input, index) { + if (input.length === 0) { + return ColumnContext.none(); + } + if (input.length === 1) { + return ColumnContext.only(0); + } + if (index === 0) { + return ColumnContext.left(0, 1); + } + if (index === input.length - 1) { + return ColumnContext.right(index - 1, index); + } + if (index > 0 && index < input.length - 1) { + return ColumnContext.middle(index - 1, index, index + 1); + } + return ColumnContext.none(); + }; + var determine = function (input, column, step, tableSize, resize) { + var result = input.slice(0); + var context = neighbours(input, column); + var onNone = constant(map$1(result, constant(0))); + var onOnly = function (index) { + return tableSize.singleColumnWidth(result[index], step); + }; + var onLeft = function (index, next) { + return resize.calcLeftEdgeDeltas(result, index, next, step, tableSize.minCellWidth(), tableSize.isRelative); + }; + var onMiddle = function (prev, index, next) { + return resize.calcMiddleDeltas(result, prev, index, next, step, tableSize.minCellWidth(), tableSize.isRelative); + }; + var onRight = function (prev, index) { + return resize.calcRightEdgeDeltas(result, prev, index, step, tableSize.minCellWidth(), tableSize.isRelative); + }; + return context.fold(onNone, onOnly, onLeft, onMiddle, onRight); + }; + + var total = function (start, end, measures) { + var r = 0; + for (var i = start; i < end; i++) { + r += measures[i] !== undefined ? measures[i] : 0; + } + return r; + }; + var recalculateWidthForCells = function (warehouse, widths) { + var all = Warehouse.justCells(warehouse); + return map$1(all, function (cell) { + var width = total(cell.column, cell.column + cell.colspan, widths); + return { + element: cell.element, + width: width, + colspan: cell.colspan + }; + }); + }; + var recalculateWidthForColumns = function (warehouse, widths) { + var groups = Warehouse.justColumns(warehouse); + return map$1(groups, function (column, index) { + return { + element: column.element, + width: widths[index], + colspan: column.colspan + }; + }); + }; + var recalculateHeightForCells = function (warehouse, heights) { + var all = Warehouse.justCells(warehouse); + return map$1(all, function (cell) { + var height = total(cell.row, cell.row + cell.rowspan, heights); + return { + element: cell.element, + height: height, + rowspan: cell.rowspan + }; + }); + }; + var matchRowHeight = function (warehouse, heights) { + return map$1(warehouse.all, function (row, i) { + return { + element: row.element, + height: heights[i] + }; + }); + }; + + var sumUp = function (newSize) { + return foldr(newSize, function (b, a) { + return b + a; + }, 0); + }; + var recalculate = function (warehouse, widths) { + if (Warehouse.hasColumns(warehouse)) { + return recalculateWidthForColumns(warehouse, widths); + } else { + return recalculateWidthForCells(warehouse, widths); + } + }; + var recalculateAndApply = function (warehouse, widths, tableSize) { + var newSizes = recalculate(warehouse, widths); + each$2(newSizes, function (cell) { + tableSize.setElementWidth(cell.element, cell.width); + }); + }; + var adjustWidth = function (table, delta, index, resizing, tableSize) { + var warehouse = Warehouse.fromTable(table); + var step = tableSize.getCellDelta(delta); + var widths = tableSize.getWidths(warehouse, tableSize); + var isLastColumn = index === warehouse.grid.columns - 1; + var clampedStep = resizing.clampTableDelta(widths, index, step, tableSize.minCellWidth(), isLastColumn); + var deltas = determine(widths, index, clampedStep, tableSize, resizing); + var newWidths = map$1(deltas, function (dx, i) { + return dx + widths[i]; + }); + recalculateAndApply(warehouse, newWidths, tableSize); + resizing.resizeTable(tableSize.adjustTableWidth, clampedStep, isLastColumn); + }; + var adjustHeight = function (table, delta, index, direction) { + var warehouse = Warehouse.fromTable(table); + var heights = getPixelHeights(warehouse, table, direction); + var newHeights = map$1(heights, function (dy, i) { + return index === i ? Math.max(delta + dy, minHeight()) : dy; + }); + var newCellSizes = recalculateHeightForCells(warehouse, newHeights); + var newRowSizes = matchRowHeight(warehouse, newHeights); + each$2(newRowSizes, function (row) { + setHeight(row.element, row.height); + }); + each$2(newCellSizes, function (cell) { + setHeight(cell.element, cell.height); + }); + var total = sumUp(newHeights); + setHeight(table, total); + }; + var adjustAndRedistributeWidths$1 = function (_table, list, details, tableSize, resizeBehaviour) { + var warehouse = Warehouse.generate(list); + var sizes = tableSize.getWidths(warehouse, tableSize); + var tablePixelWidth = tableSize.pixelWidth(); + var _a = resizeBehaviour.calcRedestributedWidths(sizes, tablePixelWidth, details.pixelDelta, tableSize.isRelative), newSizes = _a.newSizes, delta = _a.delta; + recalculateAndApply(warehouse, newSizes, tableSize); + tableSize.adjustTableWidth(delta); + }; + var adjustWidthTo = function (_table, list, _info, tableSize) { + var warehouse = Warehouse.generate(list); + var widths = tableSize.getWidths(warehouse, tableSize); + recalculateAndApply(warehouse, widths, tableSize); + }; + + var zero = function (array) { + return map$1(array, constant(0)); + }; + var surround = function (sizes, startIndex, endIndex, results, f) { + return f(sizes.slice(0, startIndex)).concat(results).concat(f(sizes.slice(endIndex))); + }; + var clampDeltaHelper = function (predicate) { + return function (sizes, index, delta, minCellSize) { + if (!predicate(delta)) { + return delta; + } else { + var newSize = Math.max(minCellSize, sizes[index] - Math.abs(delta)); + var diff = Math.abs(newSize - sizes[index]); + return delta >= 0 ? diff : -diff; + } + }; + }; + var clampNegativeDelta = clampDeltaHelper(function (delta) { + return delta < 0; + }); + var clampDelta = clampDeltaHelper(always); + var resizeTable = function () { + var calcFixedDeltas = function (sizes, index, next, delta, minCellSize) { + var clampedDelta = clampNegativeDelta(sizes, index, delta, minCellSize); + return surround(sizes, index, next + 1, [ + clampedDelta, + 0 + ], zero); + }; + var calcRelativeDeltas = function (sizes, index, delta, minCellSize) { + var ratio = (100 + delta) / 100; + var newThis = Math.max(minCellSize, (sizes[index] + delta) / ratio); + return map$1(sizes, function (size, idx) { + var newSize = idx === index ? newThis : size / ratio; + return newSize - size; + }); + }; + var calcLeftEdgeDeltas = function (sizes, index, next, delta, minCellSize, isRelative) { + if (isRelative) { + return calcRelativeDeltas(sizes, index, delta, minCellSize); + } else { + return calcFixedDeltas(sizes, index, next, delta, minCellSize); + } + }; + var calcMiddleDeltas = function (sizes, _prev, index, next, delta, minCellSize, isRelative) { + return calcLeftEdgeDeltas(sizes, index, next, delta, minCellSize, isRelative); + }; + var resizeTable = function (resizer, delta) { + return resizer(delta); + }; + var calcRightEdgeDeltas = function (sizes, _prev, index, delta, minCellSize, isRelative) { + if (isRelative) { + return calcRelativeDeltas(sizes, index, delta, minCellSize); + } else { + var clampedDelta = clampNegativeDelta(sizes, index, delta, minCellSize); + return zero(sizes.slice(0, index)).concat([clampedDelta]); + } + }; + var calcRedestributedWidths = function (sizes, totalWidth, pixelDelta, isRelative) { + if (isRelative) { + var tableWidth = totalWidth + pixelDelta; + var ratio_1 = tableWidth / totalWidth; + var newSizes = map$1(sizes, function (size) { + return size / ratio_1; + }); + return { + delta: ratio_1 * 100 - 100, + newSizes: newSizes + }; + } else { + return { + delta: pixelDelta, + newSizes: sizes + }; + } + }; + return { + resizeTable: resizeTable, + clampTableDelta: clampNegativeDelta, + calcLeftEdgeDeltas: calcLeftEdgeDeltas, + calcMiddleDeltas: calcMiddleDeltas, + calcRightEdgeDeltas: calcRightEdgeDeltas, + calcRedestributedWidths: calcRedestributedWidths + }; + }; + var preserveTable = function () { + var calcLeftEdgeDeltas = function (sizes, index, next, delta, minCellSize) { + var idx = delta >= 0 ? next : index; + var clampedDelta = clampDelta(sizes, idx, delta, minCellSize); + return surround(sizes, index, next + 1, [ + clampedDelta, + -clampedDelta + ], zero); + }; + var calcMiddleDeltas = function (sizes, _prev, index, next, delta, minCellSize) { + return calcLeftEdgeDeltas(sizes, index, next, delta, minCellSize); + }; + var resizeTable = function (resizer, delta, isLastColumn) { + if (isLastColumn) { + resizer(delta); + } + }; + var calcRightEdgeDeltas = function (sizes, _prev, _index, delta, _minCellSize, isRelative) { + if (isRelative) { + return zero(sizes); + } else { + var diff = delta / sizes.length; + return map$1(sizes, constant(diff)); + } + }; + var clampTableDelta = function (sizes, index, delta, minCellSize, isLastColumn) { + if (isLastColumn) { + if (delta >= 0) { + return delta; + } else { + var maxDelta = foldl(sizes, function (a, b) { + return a + b - minCellSize; + }, 0); + return Math.max(-maxDelta, delta); + } + } else { + return clampNegativeDelta(sizes, index, delta, minCellSize); + } + }; + var calcRedestributedWidths = function (sizes, _totalWidth, _pixelDelta, _isRelative) { + return { + delta: 0, + newSizes: sizes + }; + }; + return { + resizeTable: resizeTable, + clampTableDelta: clampTableDelta, + calcLeftEdgeDeltas: calcLeftEdgeDeltas, + calcMiddleDeltas: calcMiddleDeltas, + calcRightEdgeDeltas: calcRightEdgeDeltas, + calcRedestributedWidths: calcRedestributedWidths + }; + }; + + var only = function (element, isResizable) { + var parent = Optional.from(element.dom.documentElement).map(SugarElement.fromDom).getOr(element); + return { + parent: constant(parent), + view: constant(element), + origin: constant(SugarPosition(0, 0)), + isResizable: isResizable + }; + }; + var detached = function (editable, chrome, isResizable) { + var origin = function () { + return absolute(chrome); + }; + return { + parent: constant(chrome), + view: constant(editable), + origin: origin, + isResizable: isResizable + }; + }; + var body = function (editable, chrome, isResizable) { + return { + parent: constant(chrome), + view: constant(editable), + origin: constant(SugarPosition(0, 0)), + isResizable: isResizable + }; + }; + var ResizeWire = { + only: only, + detached: detached, + body: body + }; + + var adt$6 = Adt.generate([ + { invalid: ['raw'] }, + { pixels: ['value'] }, + { percent: ['value'] } + ]); + var validateFor = function (suffix, type, value) { + var rawAmount = value.substring(0, value.length - suffix.length); + var amount = parseFloat(rawAmount); + return rawAmount === amount.toString() ? type(amount) : adt$6.invalid(value); + }; + var from = function (value) { + if (endsWith(value, '%')) { + return validateFor('%', adt$6.percent, value); + } + if (endsWith(value, 'px')) { + return validateFor('px', adt$6.pixels, value); + } + return adt$6.invalid(value); + }; + var Size = __assign(__assign({}, adt$6), { from: from }); + + var redistributeToPercent = function (widths, totalWidth) { + return map$1(widths, function (w) { + var colType = Size.from(w); + return colType.fold(function () { + return w; + }, function (px) { + var ratio = px / totalWidth * 100; + return ratio + '%'; + }, function (pc) { + return pc + '%'; + }); + }); + }; + var redistributeToPx = function (widths, totalWidth, newTotalWidth) { + var scale = newTotalWidth / totalWidth; + return map$1(widths, function (w) { + var colType = Size.from(w); + return colType.fold(function () { + return w; + }, function (px) { + return px * scale + 'px'; + }, function (pc) { + return pc / 100 * newTotalWidth + 'px'; + }); + }); + }; + var redistributeEmpty = function (newWidthType, columns) { + var f = newWidthType.fold(function () { + return constant(''); + }, function (pixels) { + var num = pixels / columns; + return constant(num + 'px'); + }, function () { + var num = 100 / columns; + return constant(num + '%'); + }); + return range$1(columns, f); + }; + var redistributeValues = function (newWidthType, widths, totalWidth) { + return newWidthType.fold(function () { + return widths; + }, function (px) { + return redistributeToPx(widths, totalWidth, px); + }, function (_pc) { + return redistributeToPercent(widths, totalWidth); + }); + }; + var redistribute$1 = function (widths, totalWidth, newWidth) { + var newType = Size.from(newWidth); + var floats = forall(widths, function (s) { + return s === '0px'; + }) ? redistributeEmpty(newType, widths.length) : redistributeValues(newType, widths, totalWidth); + return normalize(floats); + }; + var sum = function (values, fallback) { + if (values.length === 0) { + return fallback; + } + return foldr(values, function (rest, v) { + return Size.from(v).fold(constant(0), identity, identity) + rest; + }, 0); + }; + var roundDown = function (num, unit) { + var floored = Math.floor(num); + return { + value: floored + unit, + remainder: num - floored + }; + }; + var add$3 = function (value, amount) { + return Size.from(value).fold(constant(value), function (px) { + return px + amount + 'px'; + }, function (pc) { + return pc + amount + '%'; + }); + }; + var normalize = function (values) { + if (values.length === 0) { + return values; + } + var scan = foldr(values, function (rest, value) { + var info = Size.from(value).fold(function () { + return { + value: value, + remainder: 0 + }; + }, function (num) { + return roundDown(num, 'px'); + }, function (num) { + return { + value: num + '%', + remainder: 0 + }; + }); + return { + output: [info.value].concat(rest.output), + remainder: rest.remainder + info.remainder + }; + }, { + output: [], + remainder: 0 + }); + var r = scan.output; + return r.slice(0, r.length - 1).concat([add$3(r[r.length - 1], Math.round(scan.remainder))]); + }; + var validate = Size.from; + + var redistributeToW = function (newWidths, cells, unit) { + each$2(cells, function (cell) { + var widths = newWidths.slice(cell.column, cell.colspan + cell.column); + var w = sum(widths, minWidth()); + set$1(cell.element, 'width', w + unit); + }); + }; + var redistributeToColumns = function (newWidths, columns, unit) { + each$2(columns, function (column, index) { + var width = sum([newWidths[index]], minWidth()); + set$1(column.element, 'width', width + unit); + }); + }; + var redistributeToH = function (newHeights, rows, cells, unit) { + each$2(cells, function (cell) { + var heights = newHeights.slice(cell.row, cell.rowspan + cell.row); + var h = sum(heights, minHeight()); + set$1(cell.element, 'height', h + unit); + }); + each$2(rows, function (row, i) { + set$1(row.element, 'height', newHeights[i]); + }); + }; + var getUnit = function (newSize) { + return validate(newSize).fold(constant('px'), constant('px'), constant('%')); + }; + var redistribute = function (table, optWidth, optHeight) { + var warehouse = Warehouse.fromTable(table); + var rows = warehouse.all; + var cells = Warehouse.justCells(warehouse); + var columns = Warehouse.justColumns(warehouse); + optWidth.each(function (newWidth) { + var widthUnit = getUnit(newWidth); + var totalWidth = get$8(table); + var oldWidths = getRawWidths(warehouse, table); + var nuWidths = redistribute$1(oldWidths, totalWidth, newWidth); + if (Warehouse.hasColumns(warehouse)) { + redistributeToColumns(nuWidths, columns, widthUnit); + } else { + redistributeToW(nuWidths, cells, widthUnit); + } + set$1(table, 'width', newWidth); + }); + optHeight.each(function (newHeight) { + var hUnit = getUnit(newHeight); + var totalHeight = get$7(table); + var oldHeights = getRawHeights(warehouse, table, height); + var nuHeights = redistribute$1(oldHeights, totalHeight, newHeight); + redistributeToH(nuHeights, rows, cells, hUnit); + set$1(table, 'height', newHeight); + }); + }; + var isPercentSizing = isPercentSizing$1; + var isPixelSizing = isPixelSizing$1; + var isNoneSizing = isNoneSizing$1; + + var getGridSize = function (table) { + var warehouse = Warehouse.fromTable(table); + return warehouse.grid; + }; + + var Event = function (fields) { + var handlers = []; + var bind = function (handler) { + if (handler === undefined) { + throw new Error('Event bind error: undefined handler'); + } + handlers.push(handler); + }; + var unbind = function (handler) { + handlers = filter$2(handlers, function (h) { + return h !== handler; + }); + }; + var trigger = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var event = {}; + each$2(fields, function (name, i) { + event[name] = args[i]; + }); + each$2(handlers, function (handler) { + handler(event); + }); + }; + return { + bind: bind, + unbind: unbind, + trigger: trigger + }; + }; + + var create$4 = function (typeDefs) { + var registry = map(typeDefs, function (event) { + return { + bind: event.bind, + unbind: event.unbind + }; + }); + var trigger = map(typeDefs, function (event) { + return event.trigger; + }); + return { + registry: registry, + trigger: trigger + }; + }; + + var last = function (fn, rate) { + var timer = null; + var cancel = function () { + if (!isNull(timer)) { + clearTimeout(timer); + timer = null; + } + }; + var throttle = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + cancel(); + timer = setTimeout(function () { + timer = null; + fn.apply(null, args); + }, rate); + }; + return { + cancel: cancel, + throttle: throttle + }; + }; + + var sort = function (arr) { + return arr.slice(0).sort(); + }; + var reqMessage = function (required, keys) { + throw new Error('All required keys (' + sort(required).join(', ') + ') were not specified. Specified keys were: ' + sort(keys).join(', ') + '.'); + }; + var unsuppMessage = function (unsupported) { + throw new Error('Unsupported keys for object: ' + sort(unsupported).join(', ')); + }; + var validateStrArr = function (label, array) { + if (!isArray(array)) { + throw new Error('The ' + label + ' fields must be an array. Was: ' + array + '.'); + } + each$2(array, function (a) { + if (!isString(a)) { + throw new Error('The value ' + a + ' in the ' + label + ' fields was not a string.'); + } + }); + }; + var invalidTypeMessage = function (incorrect, type) { + throw new Error('All values need to be of type: ' + type + '. Keys (' + sort(incorrect).join(', ') + ') were not.'); + }; + var checkDupes = function (everything) { + var sorted = sort(everything); + var dupe = find$1(sorted, function (s, i) { + return i < sorted.length - 1 && s === sorted[i + 1]; + }); + dupe.each(function (d) { + throw new Error('The field: ' + d + ' occurs more than once in the combined fields: [' + sorted.join(', ') + '].'); + }); + }; + + var base = function (handleUnsupported, required) { + return baseWith(handleUnsupported, required, { + validate: isFunction, + label: 'function' + }); + }; + var baseWith = function (handleUnsupported, required, pred) { + if (required.length === 0) { + throw new Error('You must specify at least one required field.'); + } + validateStrArr('required', required); + checkDupes(required); + return function (obj) { + var keys$1 = keys(obj); + var allReqd = forall(required, function (req) { + return contains$2(keys$1, req); + }); + if (!allReqd) { + reqMessage(required, keys$1); + } + handleUnsupported(required, keys$1); + var invalidKeys = filter$2(required, function (key) { + return !pred.validate(obj[key], key); + }); + if (invalidKeys.length > 0) { + invalidTypeMessage(invalidKeys, pred.label); + } + return obj; + }; + }; + var handleExact = function (required, keys) { + var unsupported = filter$2(keys, function (key) { + return !contains$2(required, key); + }); + if (unsupported.length > 0) { + unsuppMessage(unsupported); + } + }; + var exactly = function (required) { + return base(handleExact, required); + }; + + var DragMode = exactly([ + 'compare', + 'extract', + 'mutate', + 'sink' + ]); + var DragSink = exactly([ + 'element', + 'start', + 'stop', + 'destroy' + ]); + var DragApi = exactly([ + 'forceDrop', + 'drop', + 'move', + 'delayDrop' + ]); + + var InDrag = function () { + var previous = Optional.none(); + var reset = function () { + previous = Optional.none(); + }; + var update = function (mode, nu) { + var result = previous.map(function (old) { + return mode.compare(old, nu); + }); + previous = Optional.some(nu); + return result; + }; + var onEvent = function (event, mode) { + var dataOption = mode.extract(event); + dataOption.each(function (data) { + var offset = update(mode, data); + offset.each(function (d) { + events.trigger.move(d); + }); + }); + }; + var events = create$4({ move: Event(['info']) }); + return { + onEvent: onEvent, + reset: reset, + events: events.registry + }; + }; + + var NoDrag = function () { + var events = create$4({ move: Event(['info']) }); + return { + onEvent: noop, + reset: noop, + events: events.registry + }; + }; + + var Movement = function () { + var noDragState = NoDrag(); + var inDragState = InDrag(); + var dragState = noDragState; + var on = function () { + dragState.reset(); + dragState = inDragState; + }; + var off = function () { + dragState.reset(); + dragState = noDragState; + }; + var onEvent = function (event, mode) { + dragState.onEvent(event, mode); + }; + var isOn = function () { + return dragState === inDragState; + }; + return { + on: on, + off: off, + isOn: isOn, + onEvent: onEvent, + events: inDragState.events + }; + }; + + var setup = function (mutation, mode, settings) { + var active = false; + var events = create$4({ + start: Event([]), + stop: Event([]) + }); + var movement = Movement(); + var drop = function () { + sink.stop(); + if (movement.isOn()) { + movement.off(); + events.trigger.stop(); + } + }; + var throttledDrop = last(drop, 200); + var go = function (parent) { + sink.start(parent); + movement.on(); + events.trigger.start(); + }; + var mousemove = function (event) { + throttledDrop.cancel(); + movement.onEvent(event, mode); + }; + movement.events.move.bind(function (event) { + mode.mutate(mutation, event.info); + }); + var on = function () { + active = true; + }; + var off = function () { + active = false; + }; + var runIfActive = function (f) { + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + if (active) { + f.apply(null, args); + } + }; + }; + var sink = mode.sink(DragApi({ + forceDrop: drop, + drop: runIfActive(drop), + move: runIfActive(mousemove), + delayDrop: runIfActive(throttledDrop.throttle) + }), settings); + var destroy = function () { + sink.destroy(); + }; + return { + element: sink.element, + go: go, + on: on, + off: off, + destroy: destroy, + events: events.registry + }; + }; + + var mkEvent = function (target, x, y, stop, prevent, kill, raw) { + return { + target: target, + x: x, + y: y, + stop: stop, + prevent: prevent, + kill: kill, + raw: raw + }; + }; + var fromRawEvent$1 = function (rawEvent) { + var target = SugarElement.fromDom(getOriginalEventTarget(rawEvent).getOr(rawEvent.target)); + var stop = function () { + return rawEvent.stopPropagation(); + }; + var prevent = function () { + return rawEvent.preventDefault(); + }; + var kill = compose(prevent, stop); + return mkEvent(target, rawEvent.clientX, rawEvent.clientY, stop, prevent, kill, rawEvent); + }; + var handle$2 = function (filter, handler) { + return function (rawEvent) { + if (filter(rawEvent)) { + handler(fromRawEvent$1(rawEvent)); + } + }; + }; + var binder = function (element, event, filter, handler, useCapture) { + var wrapped = handle$2(filter, handler); + element.dom.addEventListener(event, wrapped, useCapture); + return { unbind: curry(unbind, element, event, wrapped, useCapture) }; + }; + var bind$1 = function (element, event, filter, handler) { + return binder(element, event, filter, handler, false); + }; + var unbind = function (element, event, handler, useCapture) { + element.dom.removeEventListener(event, handler, useCapture); + }; + + var filter = always; + var bind = function (element, event, handler) { + return bind$1(element, event, filter, handler); + }; + var fromRawEvent = fromRawEvent$1; + + var read = function (element, attr) { + var value = get$b(element, attr); + return value === undefined || value === '' ? [] : value.split(' '); + }; + var add$2 = function (element, attr, id) { + var old = read(element, attr); + var nu = old.concat([id]); + set$2(element, attr, nu.join(' ')); + return true; + }; + var remove$4 = function (element, attr, id) { + var nu = filter$2(read(element, attr), function (v) { + return v !== id; + }); + if (nu.length > 0) { + set$2(element, attr, nu.join(' ')); + } else { + remove$7(element, attr); + } + return false; + }; + + var supports = function (element) { + return element.dom.classList !== undefined; + }; + var get$5 = function (element) { + return read(element, 'class'); + }; + var add$1 = function (element, clazz) { + return add$2(element, 'class', clazz); + }; + var remove$3 = function (element, clazz) { + return remove$4(element, 'class', clazz); + }; + + var add = function (element, clazz) { + if (supports(element)) { + element.dom.classList.add(clazz); + } else { + add$1(element, clazz); + } + }; + var cleanClass = function (element) { + var classList = supports(element) ? element.dom.classList : get$5(element); + if (classList.length === 0) { + remove$7(element, 'class'); + } + }; + var remove$2 = function (element, clazz) { + if (supports(element)) { + var classList = element.dom.classList; + classList.remove(clazz); + } else { + remove$3(element, clazz); + } + cleanClass(element); + }; + var has = function (element, clazz) { + return supports(element) && element.dom.classList.contains(clazz); + }; + + var css = function (namespace) { + var dashNamespace = namespace.replace(/\./g, '-'); + var resolve = function (str) { + return dashNamespace + '-' + str; + }; + return { resolve: resolve }; + }; + + var styles$1 = css('ephox-dragster'); + var resolve$1 = styles$1.resolve; + + var Blocker = function (options) { + var settings = __assign({ layerClass: resolve$1('blocker') }, options); + var div = SugarElement.fromTag('div'); + set$2(div, 'role', 'presentation'); + setAll(div, { + position: 'fixed', + left: '0px', + top: '0px', + width: '100%', + height: '100%' + }); + add(div, resolve$1('blocker')); + add(div, settings.layerClass); + var element = constant(div); + var destroy = function () { + remove$5(div); + }; + return { + element: element, + destroy: destroy + }; + }; + + var compare = function (old, nu) { + return SugarPosition(nu.left - old.left, nu.top - old.top); + }; + var extract = function (event) { + return Optional.some(SugarPosition(event.x, event.y)); + }; + var mutate = function (mutation, info) { + mutation.mutate(info.left, info.top); + }; + var sink = function (dragApi, settings) { + var blocker = Blocker(settings); + var mdown = bind(blocker.element(), 'mousedown', dragApi.forceDrop); + var mup = bind(blocker.element(), 'mouseup', dragApi.drop); + var mmove = bind(blocker.element(), 'mousemove', dragApi.move); + var mout = bind(blocker.element(), 'mouseout', dragApi.delayDrop); + var destroy = function () { + blocker.destroy(); + mup.unbind(); + mmove.unbind(); + mout.unbind(); + mdown.unbind(); + }; + var start = function (parent) { + append$1(parent, blocker.element()); + }; + var stop = function () { + remove$5(blocker.element()); + }; + return DragSink({ + element: blocker.element, + start: start, + stop: stop, + destroy: destroy + }); + }; + var MouseDrag = DragMode({ + compare: compare, + extract: extract, + sink: sink, + mutate: mutate + }); + + var transform$1 = function (mutation, settings) { + if (settings === void 0) { + settings = {}; + } + var mode = settings.mode !== undefined ? settings.mode : MouseDrag; + return setup(mutation, mode, settings); + }; + + var closest = function (target) { + return closest$1(target, '[contenteditable]'); + }; + var isEditable$1 = function (element, assumeEditable) { + if (assumeEditable === void 0) { + assumeEditable = false; + } + if (!detect$3().browser.isIE() && inBody(element)) { + return element.dom.isContentEditable; + } else { + return closest(element).fold(constant(assumeEditable), function (editable) { + return getRaw(editable) === 'true'; + }); + } + }; + var getRaw = function (element) { + return element.dom.contentEditable; + }; + + var styles = css('ephox-snooker'); + var resolve = styles.resolve; + + var Mutation = function () { + var events = create$4({ + drag: Event([ + 'xDelta', + 'yDelta' + ]) + }); + var mutate = function (x, y) { + events.trigger.drag(x, y); + }; + return { + mutate: mutate, + events: events.registry + }; + }; + + var BarMutation = function () { + var events = create$4({ + drag: Event([ + 'xDelta', + 'yDelta', + 'target' + ]) + }); + var target = Optional.none(); + var delegate = Mutation(); + delegate.events.drag.bind(function (event) { + target.each(function (t) { + events.trigger.drag(event.xDelta, event.yDelta, t); + }); + }); + var assign = function (t) { + target = Optional.some(t); + }; + var get = function () { + return target; + }; + return { + assign: assign, + get: get, + mutate: delegate.mutate, + events: events.registry + }; + }; + + var col = function (column, x, y, w, h) { + var bar = SugarElement.fromTag('div'); + setAll(bar, { + position: 'absolute', + left: x - w / 2 + 'px', + top: y + 'px', + height: h + 'px', + width: w + 'px' + }); + setAll$1(bar, { + 'data-column': column, + 'role': 'presentation' + }); + return bar; + }; + var row = function (r, x, y, w, h) { + var bar = SugarElement.fromTag('div'); + setAll(bar, { + position: 'absolute', + left: x + 'px', + top: y - h / 2 + 'px', + height: h + 'px', + width: w + 'px' + }); + setAll$1(bar, { + 'data-row': r, + 'role': 'presentation' + }); + return bar; + }; + + var resizeBar = resolve('resizer-bar'); + var resizeRowBar = resolve('resizer-rows'); + var resizeColBar = resolve('resizer-cols'); + var BAR_THICKNESS = 7; + var resizableRows = function (warehouse, isResizable) { + return bind$2(warehouse.all, function (row, i) { + return isResizable(row.element) ? [i] : []; + }); + }; + var resizableColumns = function (warehouse, isResizable) { + var resizableCols = []; + range$1(warehouse.grid.columns, function (index) { + var colElmOpt = Warehouse.getColumnAt(warehouse, index).map(function (col) { + return col.element; + }); + if (colElmOpt.forall(isResizable)) { + resizableCols.push(index); + } + }); + return filter$2(resizableCols, function (colIndex) { + var columnCells = Warehouse.filterItems(warehouse, function (cell) { + return cell.column === colIndex; + }); + return forall(columnCells, function (cell) { + return isResizable(cell.element); + }); + }); + }; + var destroy = function (wire) { + var previous = descendants(wire.parent(), '.' + resizeBar); + each$2(previous, remove$5); + }; + var drawBar = function (wire, positions, create) { + var origin = wire.origin(); + each$2(positions, function (cpOption) { + cpOption.each(function (cp) { + var bar = create(origin, cp); + add(bar, resizeBar); + append$1(wire.parent(), bar); + }); + }); + }; + var refreshCol = function (wire, colPositions, position, tableHeight) { + drawBar(wire, colPositions, function (origin, cp) { + var colBar = col(cp.col, cp.x - origin.left, position.top - origin.top, BAR_THICKNESS, tableHeight); + add(colBar, resizeColBar); + return colBar; + }); + }; + var refreshRow = function (wire, rowPositions, position, tableWidth) { + drawBar(wire, rowPositions, function (origin, cp) { + var rowBar = row(cp.row, position.left - origin.left, cp.y - origin.top, tableWidth, BAR_THICKNESS); + add(rowBar, resizeRowBar); + return rowBar; + }); + }; + var refreshGrid = function (warhouse, wire, table, rows, cols) { + var position = absolute(table); + var isResizable = wire.isResizable; + var rowPositions = rows.length > 0 ? height.positions(rows, table) : []; + var resizableRowBars = rowPositions.length > 0 ? resizableRows(warhouse, isResizable) : []; + var resizableRowPositions = filter$2(rowPositions, function (_pos, i) { + return exists(resizableRowBars, function (barIndex) { + return i === barIndex; + }); + }); + refreshRow(wire, resizableRowPositions, position, getOuter$2(table)); + var colPositions = cols.length > 0 ? width.positions(cols, table) : []; + var resizableColBars = colPositions.length > 0 ? resizableColumns(warhouse, isResizable) : []; + var resizableColPositions = filter$2(colPositions, function (_pos, i) { + return exists(resizableColBars, function (barIndex) { + return i === barIndex; + }); + }); + refreshCol(wire, resizableColPositions, position, getOuter$1(table)); + }; + var refresh = function (wire, table) { + destroy(wire); + if (wire.isResizable(table)) { + var warehouse = Warehouse.fromTable(table); + var rows$1 = rows(warehouse); + var cols = columns(warehouse); + refreshGrid(warehouse, wire, table, rows$1, cols); + } + }; + var each = function (wire, f) { + var bars = descendants(wire.parent(), '.' + resizeBar); + each$2(bars, f); + }; + var hide = function (wire) { + each(wire, function (bar) { + set$1(bar, 'display', 'none'); + }); + }; + var show = function (wire) { + each(wire, function (bar) { + set$1(bar, 'display', 'block'); + }); + }; + var isRowBar = function (element) { + return has(element, resizeRowBar); + }; + var isColBar = function (element) { + return has(element, resizeColBar); + }; + + var resizeBarDragging = resolve('resizer-bar-dragging'); + var BarManager = function (wire) { + var mutation = BarMutation(); + var resizing = transform$1(mutation, {}); + var hoverTable = Optional.none(); + var getResizer = function (element, type) { + return Optional.from(get$b(element, type)); + }; + mutation.events.drag.bind(function (event) { + getResizer(event.target, 'data-row').each(function (_dataRow) { + var currentRow = getCssValue(event.target, 'top'); + set$1(event.target, 'top', currentRow + event.yDelta + 'px'); + }); + getResizer(event.target, 'data-column').each(function (_dataCol) { + var currentCol = getCssValue(event.target, 'left'); + set$1(event.target, 'left', currentCol + event.xDelta + 'px'); + }); + }); + var getDelta = function (target, dir) { + var newX = getCssValue(target, dir); + var oldX = getAttrValue(target, 'data-initial-' + dir, 0); + return newX - oldX; + }; + resizing.events.stop.bind(function () { + mutation.get().each(function (target) { + hoverTable.each(function (table) { + getResizer(target, 'data-row').each(function (row) { + var delta = getDelta(target, 'top'); + remove$7(target, 'data-initial-top'); + events.trigger.adjustHeight(table, delta, parseInt(row, 10)); + }); + getResizer(target, 'data-column').each(function (column) { + var delta = getDelta(target, 'left'); + remove$7(target, 'data-initial-left'); + events.trigger.adjustWidth(table, delta, parseInt(column, 10)); + }); + refresh(wire, table); + }); + }); + }); + var handler = function (target, dir) { + events.trigger.startAdjust(); + mutation.assign(target); + set$2(target, 'data-initial-' + dir, getCssValue(target, dir)); + add(target, resizeBarDragging); + set$1(target, 'opacity', '0.2'); + resizing.go(wire.parent()); + }; + var mousedown = bind(wire.parent(), 'mousedown', function (event) { + if (isRowBar(event.target)) { + handler(event.target, 'top'); + } + if (isColBar(event.target)) { + handler(event.target, 'left'); + } + }); + var isRoot = function (e) { + return eq$1(e, wire.view()); + }; + var findClosestEditableTable = function (target) { + return closest$1(target, 'table', isRoot).filter(isEditable$1); + }; + var mouseover = bind(wire.view(), 'mouseover', function (event) { + findClosestEditableTable(event.target).fold(function () { + if (inBody(event.target)) { + destroy(wire); + } + }, function (table) { + hoverTable = Optional.some(table); + refresh(wire, table); + }); + }); + var destroy$1 = function () { + mousedown.unbind(); + mouseover.unbind(); + resizing.destroy(); + destroy(wire); + }; + var refresh$1 = function (tbl) { + refresh(wire, tbl); + }; + var events = create$4({ + adjustHeight: Event([ + 'table', + 'delta', + 'row' + ]), + adjustWidth: Event([ + 'table', + 'delta', + 'column' + ]), + startAdjust: Event([]) + }); + return { + destroy: destroy$1, + refresh: refresh$1, + on: resizing.on, + off: resizing.off, + hideBars: curry(hide, wire), + showBars: curry(show, wire), + events: events.registry + }; + }; + + var create$3 = function (wire, resizing, lazySizing) { + var hdirection = height; + var vdirection = width; + var manager = BarManager(wire); + var events = create$4({ + beforeResize: Event([ + 'table', + 'type' + ]), + afterResize: Event([ + 'table', + 'type' + ]), + startDrag: Event([]) + }); + manager.events.adjustHeight.bind(function (event) { + var table = event.table; + events.trigger.beforeResize(table, 'row'); + var delta = hdirection.delta(event.delta, table); + adjustHeight(table, delta, event.row, hdirection); + events.trigger.afterResize(table, 'row'); + }); + manager.events.startAdjust.bind(function (_event) { + events.trigger.startDrag(); + }); + manager.events.adjustWidth.bind(function (event) { + var table = event.table; + events.trigger.beforeResize(table, 'col'); + var delta = vdirection.delta(event.delta, table); + var tableSize = lazySizing(table); + adjustWidth(table, delta, event.column, resizing, tableSize); + events.trigger.afterResize(table, 'col'); + }); + return { + on: manager.on, + off: manager.off, + hideBars: manager.hideBars, + showBars: manager.showBars, + destroy: manager.destroy, + events: events.registry + }; + }; + var TableResize = { create: create$3 }; + + var fireNewRow = function (editor, row) { + return editor.fire('newrow', { node: row }); + }; + var fireNewCell = function (editor, cell) { + return editor.fire('newcell', { node: cell }); + }; + var fireObjectResizeStart = function (editor, target, width, height, origin) { + editor.fire('ObjectResizeStart', { + target: target, + width: width, + height: height, + origin: origin + }); + }; + var fireObjectResized = function (editor, target, width, height, origin) { + editor.fire('ObjectResized', { + target: target, + width: width, + height: height, + origin: origin + }); + }; + var fireTableSelectionChange = function (editor, cells, start, finish, otherCells) { + editor.fire('TableSelectionChange', { + cells: cells, + start: start, + finish: finish, + otherCells: otherCells + }); + }; + var fireTableSelectionClear = function (editor) { + editor.fire('TableSelectionClear'); + }; + var fireTableModified = function (editor, table, data) { + editor.fire('TableModified', __assign(__assign({}, data), { table: table })); + }; + var styleModified = { + structure: false, + style: true + }; + var structureModified = { + structure: true, + style: false + }; + var styleAndStructureModified = { + structure: true, + style: true + }; + + var defaultTableToolbar = 'tableprops tabledelete | tableinsertrowbefore tableinsertrowafter tabledeleterow | tableinsertcolbefore tableinsertcolafter tabledeletecol'; + var defaultStyles = { + 'border-collapse': 'collapse', + 'width': '100%' + }; + var defaultCellBorderWidths = range$1(5, function (i) { + var size = i + 1 + 'px'; + return { + title: size, + value: size + }; + }); + var defaultCellBorderStyles = map$1([ + 'Solid', + 'Dotted', + 'Dashed', + 'Double', + 'Groove', + 'Ridge', + 'Inset', + 'Outset', + 'None', + 'Hidden' + ], function (type) { + return { + title: type, + value: type.toLowerCase() + }; + }); + var determineDefaultStyles = function (editor) { + var _a; + if (isPixelsForced(editor)) { + var dom = editor.dom; + var parentBlock = (_a = dom.getParent(editor.selection.getStart(), dom.isBlock)) !== null && _a !== void 0 ? _a : editor.getBody(); + var contentWidth = getInner(SugarElement.fromDom(parentBlock)); + return __assign(__assign({}, defaultStyles), { width: contentWidth + 'px' }); + } else if (isResponsiveForced(editor)) { + return filter$1(defaultStyles, function (_value, key) { + return key !== 'width'; + }); + } else { + return defaultStyles; + } + }; + var defaultAttributes = { border: '1' }; + var defaultColumnResizingBehaviour = 'preservetable'; + var getTableSizingMode = function (editor) { + return editor.getParam('table_sizing_mode', 'auto'); + }; + var getTableResponseWidth = function (editor) { + return editor.getParam('table_responsive_width'); + }; + var getTableBorderWidths = function (editor) { + return editor.getParam('table_border_widths', defaultCellBorderWidths, 'array'); + }; + var getTableBorderStyles = function (editor) { + return editor.getParam('table_border_styles', defaultCellBorderStyles, 'array'); + }; + var getDefaultAttributes = function (editor) { + return editor.getParam('table_default_attributes', defaultAttributes, 'object'); + }; + var getDefaultStyles = function (editor) { + return editor.getParam('table_default_styles', determineDefaultStyles(editor), 'object'); + }; + var hasTableResizeBars = function (editor) { + return editor.getParam('table_resize_bars', true, 'boolean'); + }; + var hasTabNavigation = function (editor) { + return editor.getParam('table_tab_navigation', true, 'boolean'); + }; + var hasAdvancedCellTab = function (editor) { + return editor.getParam('table_cell_advtab', true, 'boolean'); + }; + var hasAdvancedRowTab = function (editor) { + return editor.getParam('table_row_advtab', true, 'boolean'); + }; + var hasAdvancedTableTab = function (editor) { + return editor.getParam('table_advtab', true, 'boolean'); + }; + var hasAppearanceOptions = function (editor) { + return editor.getParam('table_appearance_options', true, 'boolean'); + }; + var hasTableGrid = function (editor) { + return editor.getParam('table_grid', true, 'boolean'); + }; + var shouldStyleWithCss = function (editor) { + return editor.getParam('table_style_by_css', false, 'boolean'); + }; + var getCellClassList = function (editor) { + return editor.getParam('table_cell_class_list', [], 'array'); + }; + var getRowClassList = function (editor) { + return editor.getParam('table_row_class_list', [], 'array'); + }; + var getTableClassList = function (editor) { + return editor.getParam('table_class_list', [], 'array'); + }; + var isPercentagesForced = function (editor) { + return getTableSizingMode(editor) === 'relative' || getTableResponseWidth(editor) === true; + }; + var isPixelsForced = function (editor) { + return getTableSizingMode(editor) === 'fixed' || getTableResponseWidth(editor) === false; + }; + var isResponsiveForced = function (editor) { + return getTableSizingMode(editor) === 'responsive'; + }; + var getToolbar = function (editor) { + return editor.getParam('table_toolbar', defaultTableToolbar); + }; + var useColumnGroup = function (editor) { + return editor.getParam('table_use_colgroups', false, 'boolean'); + }; + var getTableHeaderType = function (editor) { + var defaultValue = 'section'; + var value = editor.getParam('table_header_type', defaultValue, 'string'); + var validValues = [ + 'section', + 'cells', + 'sectionCells', + 'auto' + ]; + if (!contains$2(validValues, value)) { + return defaultValue; + } else { + return value; + } + }; + var getColumnResizingBehaviour = function (editor) { + var validModes = [ + 'preservetable', + 'resizetable' + ]; + var givenMode = editor.getParam('table_column_resizing', defaultColumnResizingBehaviour, 'string'); + return find$1(validModes, function (mode) { + return mode === givenMode; + }).getOr(defaultColumnResizingBehaviour); + }; + var isPreserveTableColumnResizing = function (editor) { + return getColumnResizingBehaviour(editor) === 'preservetable'; + }; + var isResizeTableColumnResizing = function (editor) { + return getColumnResizingBehaviour(editor) === 'resizetable'; + }; + var getCloneElements = function (editor) { + var cloneElements = editor.getParam('table_clone_elements'); + if (isString(cloneElements)) { + return Optional.some(cloneElements.split(/[ ,]/)); + } else if (Array.isArray(cloneElements)) { + return Optional.some(cloneElements); + } else { + return Optional.none(); + } + }; + var hasObjectResizing = function (editor) { + var objectResizing = editor.getParam('object_resizing', true); + return isString(objectResizing) ? objectResizing === 'table' : objectResizing; + }; + var getTableBackgroundColorMap = function (editor) { + return editor.getParam('table_background_color_map', [], 'array'); + }; + var getTableBorderColorMap = function (editor) { + return editor.getParam('table_border_color_map', [], 'array'); + }; + + var get$4 = function (editor, table) { + if (isPercentagesForced(editor)) { + return TableSize.percentageSize(table); + } else if (isPixelsForced(editor)) { + return TableSize.pixelSize(table); + } else { + return TableSize.getTableSize(table); + } + }; + + var cleanupLegacyAttributes = function (element) { + remove$7(element, 'width'); + }; + var convertToPercentSize = function (table) { + var newWidth = getPercentTableWidth(table); + redistribute(table, Optional.some(newWidth), Optional.none()); + cleanupLegacyAttributes(table); + }; + var convertToPixelSize = function (table) { + var newWidth = getPixelTableWidth(table); + redistribute(table, Optional.some(newWidth), Optional.none()); + cleanupLegacyAttributes(table); + }; + var convertToNoneSize = function (table) { + remove$6(table, 'width'); + var columns = columns$1(table); + var rowElements = columns.length > 0 ? columns : cells$1(table); + each$2(rowElements, function (cell) { + remove$6(cell, 'width'); + cleanupLegacyAttributes(cell); + }); + cleanupLegacyAttributes(table); + }; + + var enforcePercentage = convertToPercentSize; + var enforcePixels = convertToPixelSize; + var enforceNone = convertToNoneSize; + var syncPixels = function (table) { + var warehouse = Warehouse.fromTable(table); + if (!Warehouse.hasColumns(warehouse)) { + each$2(cells$1(table), function (cell) { + var computedWidth = get$a(cell, 'width'); + set$1(cell, 'width', computedWidth); + remove$7(cell, 'width'); + }); + } + }; + + var createContainer = function () { + var container = SugarElement.fromTag('div'); + setAll(container, { + position: 'static', + height: '0', + width: '0', + padding: '0', + margin: '0', + border: '0' + }); + append$1(body$1(), container); + return container; + }; + var get$3 = function (editor, isResizable) { + return editor.inline ? ResizeWire.body(getBody(editor), createContainer(), isResizable) : ResizeWire.only(SugarElement.fromDom(editor.getDoc()), isResizable); + }; + var remove$1 = function (editor, wire) { + if (editor.inline) { + remove$5(wire.parent()); + } + }; + + var barResizerPrefix = 'bar-'; + var isResizable = function (elm) { + return get$b(elm, 'data-mce-resize') !== 'false'; + }; + var getResizeHandler = function (editor) { + var selectionRng = Optional.none(); + var resize = Optional.none(); + var wire = Optional.none(); + var startW; + var startRawW; + var isTable = function (elm) { + return elm.nodeName === 'TABLE'; + }; + var lazyResize = function () { + return resize; + }; + var lazyWire = function () { + return wire.getOr(ResizeWire.only(SugarElement.fromDom(editor.getBody()), isResizable)); + }; + var lazySizing = function (table) { + return get$4(editor, table); + }; + var lazyResizingBehaviour = function () { + return isPreserveTableColumnResizing(editor) ? preserveTable() : resizeTable(); + }; + var getNumColumns = function (table) { + return getGridSize(table).columns; + }; + var afterCornerResize = function (table, origin, width) { + var isRightEdgeResize = endsWith(origin, 'e'); + if (startRawW === '') { + enforcePercentage(table); + } + if (width !== startW && startRawW !== '') { + set$1(table, 'width', startRawW); + var resizing = lazyResizingBehaviour(); + var tableSize = lazySizing(table); + var col = isPreserveTableColumnResizing(editor) || isRightEdgeResize ? getNumColumns(table) - 1 : 0; + adjustWidth(table, width - startW, col, resizing, tableSize); + } else if (isPercentage$1(startRawW)) { + var percentW = parseFloat(startRawW.replace('%', '')); + var targetPercentW = width * percentW / startW; + set$1(table, 'width', targetPercentW + '%'); + } + if (isPixel(startRawW)) { + syncPixels(table); + } + }; + var destroy = function () { + resize.each(function (sz) { + sz.destroy(); + }); + wire.each(function (w) { + remove$1(editor, w); + }); + }; + editor.on('init', function () { + var rawWire = get$3(editor, isResizable); + wire = Optional.some(rawWire); + if (hasObjectResizing(editor) && hasTableResizeBars(editor)) { + var resizing = lazyResizingBehaviour(); + var sz = TableResize.create(rawWire, resizing, lazySizing); + sz.on(); + sz.events.startDrag.bind(function (_event) { + selectionRng = Optional.some(editor.selection.getRng()); + }); + sz.events.beforeResize.bind(function (event) { + var rawTable = event.table.dom; + fireObjectResizeStart(editor, rawTable, getPixelWidth(rawTable), getPixelHeight(rawTable), barResizerPrefix + event.type); + }); + sz.events.afterResize.bind(function (event) { + var table = event.table; + var rawTable = table.dom; + removeDataStyle(table); + selectionRng.each(function (rng) { + editor.selection.setRng(rng); + editor.focus(); + }); + fireObjectResized(editor, rawTable, getPixelWidth(rawTable), getPixelHeight(rawTable), barResizerPrefix + event.type); + editor.undoManager.add(); + }); + resize = Optional.some(sz); + } + }); + editor.on('ObjectResizeStart', function (e) { + var targetElm = e.target; + if (isTable(targetElm)) { + var table = SugarElement.fromDom(targetElm); + each$2(editor.dom.select('.mce-clonedresizable'), function (clone) { + editor.dom.addClass(clone, 'mce-' + getColumnResizingBehaviour(editor) + '-columns'); + }); + if (!isPixelSizing(table) && isPixelsForced(editor)) { + enforcePixels(table); + } else if (!isPercentSizing(table) && isPercentagesForced(editor)) { + enforcePercentage(table); + } + if (isNoneSizing(table) && startsWith(e.origin, barResizerPrefix)) { + enforcePercentage(table); + } + startW = e.width; + startRawW = isResponsiveForced(editor) ? '' : getRawWidth(editor, targetElm).getOr(''); + } + }); + editor.on('ObjectResized', function (e) { + var targetElm = e.target; + if (isTable(targetElm)) { + var table = SugarElement.fromDom(targetElm); + var origin_1 = e.origin; + if (startsWith(origin_1, 'corner-')) { + afterCornerResize(table, origin_1, e.width); + } + removeDataStyle(table); + fireTableModified(editor, table.dom, styleModified); + } + }); + editor.on('SwitchMode', function () { + lazyResize().each(function (resize) { + if (editor.mode.isReadOnly()) { + resize.hideBars(); + } else { + resize.showBars(); + } + }); + }); + return { + lazyResize: lazyResize, + lazyWire: lazyWire, + destroy: destroy + }; + }; + + var point = function (element, offset) { + return { + element: element, + offset: offset + }; + }; + + var scan$1 = function (universe, element, direction) { + if (universe.property().isText(element) && universe.property().getText(element).trim().length === 0 || universe.property().isComment(element)) { + return direction(element).bind(function (elem) { + return scan$1(universe, elem, direction).orThunk(function () { + return Optional.some(elem); + }); + }); + } else { + return Optional.none(); + } + }; + var toEnd = function (universe, element) { + if (universe.property().isText(element)) { + return universe.property().getText(element).length; + } + var children = universe.property().children(element); + return children.length; + }; + var freefallRtl$2 = function (universe, element) { + var candidate = scan$1(universe, element, universe.query().prevSibling).getOr(element); + if (universe.property().isText(candidate)) { + return point(candidate, toEnd(universe, candidate)); + } + var children = universe.property().children(candidate); + return children.length > 0 ? freefallRtl$2(universe, children[children.length - 1]) : point(candidate, toEnd(universe, candidate)); + }; + + var freefallRtl$1 = freefallRtl$2; + + var universe$2 = DomUniverse(); + var freefallRtl = function (element) { + return freefallRtl$1(universe$2, element); + }; + + var halve = function (main, other) { + var colspan = getSpan(main, 'colspan'); + if (colspan === 1) { + var width = getGenericWidth(main); + width.each(function (w) { + var newWidth = w.value / 2; + setGenericWidth(main, newWidth, w.unit); + setGenericWidth(other, newWidth, w.unit); + }); + } + }; + + var isHeaderCell = isTag('th'); + var isHeaderCells = function (cells) { + return forall(cells, function (cell) { + return isHeaderCell(cell.element); + }); + }; + var getRowHeaderType = function (isHeaderRow, isHeaderCells) { + if (isHeaderRow && isHeaderCells) { + return 'sectionCells'; + } else if (isHeaderRow) { + return 'section'; + } else { + return 'cells'; + } + }; + var getRowType$1 = function (row) { + var isHeaderRow = row.section === 'thead'; + var isHeaderCells = is(findCommonCellType(row.cells), 'th'); + if (isHeaderRow || isHeaderCells) { + return { + type: 'header', + subType: getRowHeaderType(isHeaderRow, isHeaderCells) + }; + } else if (row.section === 'tfoot') { + return { type: 'footer' }; + } else { + return { type: 'body' }; + } + }; + var findCommonCellType = function (cells) { + var headerCells = filter$2(cells, function (cell) { + return isHeaderCell(cell.element); + }); + if (headerCells.length === 0) { + return Optional.some('td'); + } else if (headerCells.length === cells.length) { + return Optional.some('th'); + } else { + return Optional.none(); + } + }; + var findCommonRowType = function (rows) { + var rowTypes = map$1(rows, function (row) { + return getRowType$1(row).type; + }); + var hasHeader = contains$2(rowTypes, 'header'); + var hasFooter = contains$2(rowTypes, 'footer'); + if (!hasHeader && !hasFooter) { + return Optional.some('body'); + } else { + var hasBody = contains$2(rowTypes, 'body'); + if (hasHeader && !hasBody && !hasFooter) { + return Optional.some('header'); + } else if (!hasHeader && !hasBody && hasFooter) { + return Optional.some('footer'); + } else { + return Optional.none(); + } + } + }; + var findTableRowHeaderType = function (warehouse) { + return findMap(warehouse.all, function (row) { + var rowType = getRowType$1(row); + return rowType.type === 'header' ? Optional.from(rowType.subType) : Optional.none(); + }); + }; + + var transformCell = function (cell, comparator, substitution) { + return elementnew(substitution(cell.element, comparator), true, cell.isLocked); + }; + var transformRow = function (row, section) { + return row.section !== section ? rowcells(row.element, row.cells, section, row.isNew) : row; + }; + var section = function () { + return { + transformRow: transformRow, + transformCell: function (cell, comparator, substitution) { + var newCell = substitution(cell.element, comparator); + var fixedCell = name(newCell) !== 'td' ? mutate$1(newCell, 'td') : newCell; + return elementnew(fixedCell, cell.isNew, cell.isLocked); + } + }; + }; + var sectionCells = function () { + return { + transformRow: transformRow, + transformCell: transformCell + }; + }; + var cells = function () { + return { + transformRow: function (row, section) { + var newSection = section === 'thead' ? 'tbody' : section; + return transformRow(row, newSection); + }, + transformCell: transformCell + }; + }; + var fallback = function () { + return { + transformRow: identity, + transformCell: transformCell + }; + }; + var getTableSectionType = function (table, fallback) { + var warehouse = Warehouse.fromTable(table); + var type = findTableRowHeaderType(warehouse).getOr(fallback); + switch (type) { + case 'section': + return section(); + case 'sectionCells': + return sectionCells(); + case 'cells': + return cells(); + } + }; + var TableSection = { + getTableSectionType: getTableSectionType, + section: section, + sectionCells: sectionCells, + cells: cells, + fallback: fallback + }; + + var setIfNot = function (element, property, value, ignore) { + if (value === ignore) { + remove$7(element, property); + } else { + set$2(element, property, value); + } + }; + var insert$1 = function (table, selector, element) { + last$2(children$1(table, selector)).fold(function () { + return prepend(table, element); + }, function (child) { + return after$5(child, element); + }); + }; + var generateSection = function (table, sectionName) { + var section = child$1(table, sectionName).getOrThunk(function () { + var newSection = SugarElement.fromTag(sectionName, owner(table).dom); + if (sectionName === 'thead') { + insert$1(table, 'caption,colgroup', newSection); + } else if (sectionName === 'colgroup') { + insert$1(table, 'caption', newSection); + } else { + append$1(table, newSection); + } + return newSection; + }); + empty(section); + return section; + }; + var render$1 = function (table, grid) { + var newRows = []; + var newCells = []; + var syncRows = function (gridSection) { + return map$1(gridSection, function (row) { + if (row.isNew) { + newRows.push(row.element); + } + var tr = row.element; + empty(tr); + each$2(row.cells, function (cell) { + if (cell.isNew) { + newCells.push(cell.element); + } + setIfNot(cell.element, 'colspan', cell.colspan, 1); + setIfNot(cell.element, 'rowspan', cell.rowspan, 1); + append$1(tr, cell.element); + }); + return tr; + }); + }; + var syncColGroup = function (gridSection) { + return bind$2(gridSection, function (colGroup) { + return map$1(colGroup.cells, function (col) { + setIfNot(col.element, 'span', col.colspan, 1); + return col.element; + }); + }); + }; + var renderSection = function (gridSection, sectionName) { + var section = generateSection(table, sectionName); + var sync = sectionName === 'colgroup' ? syncColGroup : syncRows; + var sectionElems = sync(gridSection); + append(section, sectionElems); + }; + var removeSection = function (sectionName) { + child$1(table, sectionName).each(remove$5); + }; + var renderOrRemoveSection = function (gridSection, sectionName) { + if (gridSection.length > 0) { + renderSection(gridSection, sectionName); + } else { + removeSection(sectionName); + } + }; + var headSection = []; + var bodySection = []; + var footSection = []; + var columnGroupsSection = []; + each$2(grid, function (row) { + switch (row.section) { + case 'thead': + headSection.push(row); + break; + case 'tbody': + bodySection.push(row); + break; + case 'tfoot': + footSection.push(row); + break; + case 'colgroup': + columnGroupsSection.push(row); + break; + } + }); + renderOrRemoveSection(columnGroupsSection, 'colgroup'); + renderOrRemoveSection(headSection, 'thead'); + renderOrRemoveSection(bodySection, 'tbody'); + renderOrRemoveSection(footSection, 'tfoot'); + return { + newRows: newRows, + newCells: newCells + }; + }; + var copy = function (grid) { + return map$1(grid, function (row) { + var tr = shallow(row.element); + each$2(row.cells, function (cell) { + var clonedCell = deep(cell.element); + setIfNot(clonedCell, 'colspan', cell.colspan, 1); + setIfNot(clonedCell, 'rowspan', cell.rowspan, 1); + append$1(tr, clonedCell); + }); + return tr; + }); + }; + + var getColumn = function (grid, index) { + return map$1(grid, function (row) { + return getCell(row, index); + }); + }; + var getRow = function (grid, index) { + return grid[index]; + }; + var findDiff = function (xs, comp) { + if (xs.length === 0) { + return 0; + } + var first = xs[0]; + var index = findIndex(xs, function (x) { + return !comp(first.element, x.element); + }); + return index.getOr(xs.length); + }; + var subgrid = function (grid, row, column, comparator) { + var gridRow = getRow(grid, row); + var isColRow = gridRow.section === 'colgroup'; + var colspan = findDiff(gridRow.cells.slice(column), comparator); + var rowspan = isColRow ? 1 : findDiff(getColumn(grid.slice(row), column), comparator); + return { + colspan: colspan, + rowspan: rowspan + }; + }; + + var toDetails = function (grid, comparator) { + var seen = map$1(grid, function (row) { + return map$1(row.cells, never); + }); + var updateSeen = function (rowIndex, columnIndex, rowspan, colspan) { + for (var row = rowIndex; row < rowIndex + rowspan; row++) { + for (var column = columnIndex; column < columnIndex + colspan; column++) { + seen[row][column] = true; + } + } + }; + return map$1(grid, function (row, rowIndex) { + var details = bind$2(row.cells, function (cell, columnIndex) { + if (seen[rowIndex][columnIndex] === false) { + var result = subgrid(grid, rowIndex, columnIndex, comparator); + updateSeen(rowIndex, columnIndex, result.rowspan, result.colspan); + return [detailnew(cell.element, result.rowspan, result.colspan, cell.isNew)]; + } else { + return []; + } + }); + return rowdetailnew(row.element, details, row.section, row.isNew); + }); + }; + var toGrid = function (warehouse, generators, isNew) { + var grid = []; + each$2(warehouse.colgroups, function (colgroup) { + var colgroupCols = []; + for (var columnIndex = 0; columnIndex < warehouse.grid.columns; columnIndex++) { + var element = Warehouse.getColumnAt(warehouse, columnIndex).map(function (column) { + return elementnew(column.element, isNew, false); + }).getOrThunk(function () { + return elementnew(generators.colGap(), true, false); + }); + colgroupCols.push(element); + } + grid.push(rowcells(colgroup.element, colgroupCols, 'colgroup', isNew)); + }); + for (var rowIndex = 0; rowIndex < warehouse.grid.rows; rowIndex++) { + var rowCells = []; + for (var columnIndex = 0; columnIndex < warehouse.grid.columns; columnIndex++) { + var element = Warehouse.getAt(warehouse, rowIndex, columnIndex).map(function (item) { + return elementnew(item.element, isNew, item.isLocked); + }).getOrThunk(function () { + return elementnew(generators.gap(), true, false); + }); + rowCells.push(element); + } + var rowDetail = warehouse.all[rowIndex]; + var row = rowcells(rowDetail.element, rowCells, rowDetail.section, isNew); + grid.push(row); + } + return grid; + }; + + var fromWarehouse = function (warehouse, generators) { + return toGrid(warehouse, generators, false); + }; + var toDetailList = function (grid) { + return toDetails(grid, eq$1); + }; + var findInWarehouse = function (warehouse, element) { + return findMap(warehouse.all, function (r) { + return find$1(r.cells, function (e) { + return eq$1(element, e.element); + }); + }); + }; + var extractCells = function (warehouse, target, predicate) { + var details = map$1(target.selection, function (cell$1) { + return cell(cell$1).bind(function (lc) { + return findInWarehouse(warehouse, lc); + }).filter(predicate); + }); + var cells = cat(details); + return someIf(cells.length > 0, cells); + }; + var run = function (operation, extract, adjustment, postAction, genWrappers) { + return function (wire, table, target, generators, behaviours) { + var warehouse = Warehouse.fromTable(table); + var tableSection = Optional.from(behaviours === null || behaviours === void 0 ? void 0 : behaviours.section).getOrThunk(TableSection.fallback); + var output = extract(warehouse, target).map(function (info) { + var model = fromWarehouse(warehouse, generators); + var result = operation(model, info, eq$1, genWrappers(generators), tableSection); + var lockedColumns = getLockedColumnsFromGrid(result.grid); + var grid = toDetailList(result.grid); + return { + info: info, + grid: grid, + cursor: result.cursor, + lockedColumns: lockedColumns + }; + }); + return output.bind(function (out) { + var newElements = render$1(table, out.grid); + var tableSizing = Optional.from(behaviours === null || behaviours === void 0 ? void 0 : behaviours.sizing).getOrThunk(function () { + return TableSize.getTableSize(table); + }); + var resizing = Optional.from(behaviours === null || behaviours === void 0 ? void 0 : behaviours.resize).getOrThunk(preserveTable); + adjustment(table, out.grid, out.info, { + sizing: tableSizing, + resize: resizing, + section: tableSection + }); + postAction(table); + refresh(wire, table); + remove$7(table, LOCKED_COL_ATTR); + if (out.lockedColumns.length > 0) { + set$2(table, LOCKED_COL_ATTR, out.lockedColumns.join(',')); + } + return Optional.some({ + cursor: out.cursor, + newRows: newElements.newRows, + newCells: newElements.newCells + }); + }); + }; + }; + var onPaste = function (warehouse, target) { + return cell(target.element).bind(function (cell) { + return findInWarehouse(warehouse, cell).map(function (details) { + var value = __assign(__assign({}, details), { + generators: target.generators, + clipboard: target.clipboard + }); + return value; + }); + }); + }; + var onPasteByEditor = function (warehouse, target) { + return extractCells(warehouse, target, always).map(function (cells) { + return { + cells: cells, + generators: target.generators, + clipboard: target.clipboard + }; + }); + }; + var onMergable = function (_warehouse, target) { + return target.mergable; + }; + var onUnmergable = function (_warehouse, target) { + return target.unmergable; + }; + var onCells = function (warehouse, target) { + return extractCells(warehouse, target, always); + }; + var onUnlockedCells = function (warehouse, target) { + return extractCells(warehouse, target, function (detail) { + return !detail.isLocked; + }); + }; + var isUnlockedTableCell = function (warehouse, cell) { + return findInWarehouse(warehouse, cell).exists(function (detail) { + return !detail.isLocked; + }); + }; + var allUnlocked = function (warehouse, cells) { + return forall(cells, function (cell) { + return isUnlockedTableCell(warehouse, cell); + }); + }; + var onUnlockedMergable = function (warehouse, target) { + return onMergable(warehouse, target).filter(function (mergeable) { + return allUnlocked(warehouse, mergeable.cells); + }); + }; + var onUnlockedUnmergable = function (warehouse, target) { + return onUnmergable(warehouse, target).filter(function (cells) { + return allUnlocked(warehouse, cells); + }); + }; + + var merge$2 = function (grid, bounds, comparator, substitution) { + var rows = extractGridDetails(grid).rows; + if (rows.length === 0) { + return grid; + } + for (var i = bounds.startRow; i <= bounds.finishRow; i++) { + for (var j = bounds.startCol; j <= bounds.finishCol; j++) { + var row = rows[i]; + var isLocked = getCell(row, j).isLocked; + mutateCell(row, j, elementnew(substitution(), false, isLocked)); + } + } + return grid; + }; + var unmerge = function (grid, target, comparator, substitution) { + var rows = extractGridDetails(grid).rows; + var first = true; + for (var i = 0; i < rows.length; i++) { + for (var j = 0; j < cellLength(rows[0]); j++) { + var row = rows[i]; + var currentCell = getCell(row, j); + var currentCellElm = currentCell.element; + var isToReplace = comparator(currentCellElm, target); + if (isToReplace === true && first === false) { + mutateCell(row, j, elementnew(substitution(), true, currentCell.isLocked)); + } else if (isToReplace === true) { + first = false; + } + } + } + return grid; + }; + var uniqueCells = function (row, comparator) { + return foldl(row, function (rest, cell) { + return exists(rest, function (currentCell) { + return comparator(currentCell.element, cell.element); + }) ? rest : rest.concat([cell]); + }, []); + }; + var splitCols = function (grid, index, comparator, substitution) { + if (index > 0 && index < grid[0].cells.length) { + each$2(grid, function (row) { + var prevCell = row.cells[index - 1]; + var current = row.cells[index]; + var isToReplace = comparator(current.element, prevCell.element); + if (isToReplace) { + mutateCell(row, index, elementnew(substitution(), true, current.isLocked)); + } + }); + } + return grid; + }; + var splitRows = function (grid, index, comparator, substitution) { + var rows = extractGridDetails(grid).rows; + if (index > 0 && index < rows.length) { + var rowPrevCells = rows[index - 1].cells; + var cells = uniqueCells(rowPrevCells, comparator); + each$2(cells, function (cell) { + var replacement = Optional.none(); + for (var i = index; i < rows.length; i++) { + var _loop_1 = function (j) { + var row = rows[i]; + var current = getCell(row, j); + var isToReplace = comparator(current.element, cell.element); + if (isToReplace) { + if (replacement.isNone()) { + replacement = Optional.some(substitution()); + } + replacement.each(function (sub) { + mutateCell(row, j, elementnew(sub, true, current.isLocked)); + }); + } + }; + for (var j = 0; j < cellLength(rows[0]); j++) { + _loop_1(j); + } + } + }); + } + return grid; + }; + + var value$1 = function (o) { + var or = function (_opt) { + return value$1(o); + }; + var orThunk = function (_f) { + return value$1(o); + }; + var map = function (f) { + return value$1(f(o)); + }; + var mapError = function (_f) { + return value$1(o); + }; + var each = function (f) { + f(o); + }; + var bind = function (f) { + return f(o); + }; + var fold = function (_, onValue) { + return onValue(o); + }; + var exists = function (f) { + return f(o); + }; + var forall = function (f) { + return f(o); + }; + var toOptional = function () { + return Optional.some(o); + }; + return { + isValue: always, + isError: never, + getOr: constant(o), + getOrThunk: constant(o), + getOrDie: constant(o), + or: or, + orThunk: orThunk, + fold: fold, + map: map, + mapError: mapError, + each: each, + bind: bind, + exists: exists, + forall: forall, + toOptional: toOptional + }; + }; + var error = function (message) { + var getOrThunk = function (f) { + return f(); + }; + var getOrDie = function () { + return die(String(message))(); + }; + var or = identity; + var orThunk = function (f) { + return f(); + }; + var map = function (_f) { + return error(message); + }; + var mapError = function (f) { + return error(f(message)); + }; + var bind = function (_f) { + return error(message); + }; + var fold = function (onError, _) { + return onError(message); + }; + return { + isValue: never, + isError: always, + getOr: identity, + getOrThunk: getOrThunk, + getOrDie: getOrDie, + or: or, + orThunk: orThunk, + fold: fold, + map: map, + mapError: mapError, + each: noop, + bind: bind, + exists: never, + forall: always, + toOptional: Optional.none + }; + }; + var fromOption = function (opt, err) { + return opt.fold(function () { + return error(err); + }, value$1); + }; + var Result = { + value: value$1, + error: error, + fromOption: fromOption + }; + + var measure = function (startAddress, gridA, gridB) { + if (startAddress.row >= gridA.length || startAddress.column > cellLength(gridA[0])) { + return Result.error('invalid start address out of table bounds, row: ' + startAddress.row + ', column: ' + startAddress.column); + } + var rowRemainder = gridA.slice(startAddress.row); + var colRemainder = rowRemainder[0].cells.slice(startAddress.column); + var colRequired = cellLength(gridB[0]); + var rowRequired = gridB.length; + return Result.value({ + rowDelta: rowRemainder.length - rowRequired, + colDelta: colRemainder.length - colRequired + }); + }; + var measureWidth = function (gridA, gridB) { + var colLengthA = cellLength(gridA[0]); + var colLengthB = cellLength(gridB[0]); + return { + rowDelta: 0, + colDelta: colLengthA - colLengthB + }; + }; + var measureHeight = function (gridA, gridB) { + var rowLengthA = gridA.length; + var rowLengthB = gridB.length; + return { + rowDelta: rowLengthA - rowLengthB, + colDelta: 0 + }; + }; + var generateElements = function (amount, row, generators, isLocked) { + var generator = row.section === 'colgroup' ? generators.col : generators.cell; + return range$1(amount, function (idx) { + return elementnew(generator(), true, isLocked(idx)); + }); + }; + var rowFill = function (grid, amount, generators, lockedColumns) { + var exampleRow = grid[grid.length - 1]; + return grid.concat(range$1(amount, function () { + var generator = exampleRow.section === 'colgroup' ? generators.colgroup : generators.row; + var row = clone$1(exampleRow, generator, identity); + var elements = generateElements(row.cells.length, row, generators, function (idx) { + return has$1(lockedColumns, idx.toString()); + }); + return setCells(row, elements); + })); + }; + var colFill = function (grid, amount, generators, startIndex) { + return map$1(grid, function (row) { + var newChildren = generateElements(amount, row, generators, never); + return addCells(row, startIndex, newChildren); + }); + }; + var lockedColFill = function (grid, generators, lockedColumns) { + return map$1(grid, function (row) { + return foldl(lockedColumns, function (acc, colNum) { + var newChild = generateElements(1, row, generators, always)[0]; + return addCell(acc, colNum, newChild); + }, row); + }); + }; + var tailor = function (gridA, delta, generators) { + var fillCols = delta.colDelta < 0 ? colFill : identity; + var fillRows = delta.rowDelta < 0 ? rowFill : identity; + var lockedColumns = getLockedColumnsFromGrid(gridA); + var gridWidth = cellLength(gridA[0]); + var isLastColLocked = exists(lockedColumns, function (locked) { + return locked === gridWidth - 1; + }); + var modifiedCols = fillCols(gridA, Math.abs(delta.colDelta), generators, isLastColLocked ? gridWidth - 1 : gridWidth); + var newLockedColumns = getLockedColumnsFromGrid(modifiedCols); + return fillRows(modifiedCols, Math.abs(delta.rowDelta), generators, mapToObject(newLockedColumns, always)); + }; + + var isSpanning = function (grid, row, col, comparator) { + var candidate = getCell(grid[row], col); + var matching = curry(comparator, candidate.element); + var currentRow = grid[row]; + return grid.length > 1 && cellLength(currentRow) > 1 && (col > 0 && matching(getCellElement(currentRow, col - 1)) || col < currentRow.cells.length - 1 && matching(getCellElement(currentRow, col + 1)) || row > 0 && matching(getCellElement(grid[row - 1], col)) || row < grid.length - 1 && matching(getCellElement(grid[row + 1], col))); + }; + var mergeTables = function (startAddress, gridA, gridB, generator, comparator, lockedColumns) { + var startRow = startAddress.row; + var startCol = startAddress.column; + var mergeHeight = gridB.length; + var mergeWidth = cellLength(gridB[0]); + var endRow = startRow + mergeHeight; + var endCol = startCol + mergeWidth + lockedColumns.length; + var lockedColumnObj = mapToObject(lockedColumns, always); + for (var r = startRow; r < endRow; r++) { + var skippedCol = 0; + for (var c = startCol; c < endCol; c++) { + if (lockedColumnObj[c]) { + skippedCol++; + continue; + } + if (isSpanning(gridA, r, c, comparator)) { + unmerge(gridA, getCellElement(gridA[r], c), comparator, generator.cell); + } + var gridBColIndex = c - startCol - skippedCol; + var newCell = getCell(gridB[r - startRow], gridBColIndex); + var newCellElm = newCell.element; + var replacement = generator.replace(newCellElm); + mutateCell(gridA[r], c, elementnew(replacement, true, newCell.isLocked)); + } + } + return gridA; + }; + var getValidStartAddress = function (currentStartAddress, grid, lockedColumns) { + var gridColLength = cellLength(grid[0]); + var adjustedRowAddress = extractGridDetails(grid).cols.length + currentStartAddress.row; + var possibleColAddresses = range$1(gridColLength - currentStartAddress.column, function (num) { + return num + currentStartAddress.column; + }); + var validColAddress = find$1(possibleColAddresses, function (num) { + return forall(lockedColumns, function (col) { + return col !== num; + }); + }).getOr(gridColLength - 1); + return { + row: adjustedRowAddress, + column: validColAddress + }; + }; + var getLockedColumnsWithinBounds = function (startAddress, grid, lockedColumns) { + return filter$2(lockedColumns, function (colNum) { + return colNum >= startAddress.column && colNum <= cellLength(grid[0]) + startAddress.column; + }); + }; + var merge$1 = function (startAddress, gridA, gridB, generator, comparator) { + var lockedColumns = getLockedColumnsFromGrid(gridA); + var validStartAddress = getValidStartAddress(startAddress, gridA, lockedColumns); + var gridBRows = extractGridDetails(gridB).rows; + var lockedColumnsWithinBounds = getLockedColumnsWithinBounds(validStartAddress, gridBRows, lockedColumns); + var result = measure(validStartAddress, gridA, gridBRows); + return result.map(function (diff) { + var delta = __assign(__assign({}, diff), { colDelta: diff.colDelta - lockedColumnsWithinBounds.length }); + var fittedGrid = tailor(gridA, delta, generator); + var newLockedColumns = getLockedColumnsFromGrid(fittedGrid); + var newLockedColumnsWithinBounds = getLockedColumnsWithinBounds(validStartAddress, gridBRows, newLockedColumns); + return mergeTables(validStartAddress, fittedGrid, gridBRows, generator, comparator, newLockedColumnsWithinBounds); + }); + }; + var insertCols = function (index, gridA, gridB, generator, comparator) { + splitCols(gridA, index, comparator, generator.cell); + var delta = measureHeight(gridB, gridA); + var fittedNewGrid = tailor(gridB, delta, generator); + var secondDelta = measureHeight(gridA, fittedNewGrid); + var fittedOldGrid = tailor(gridA, secondDelta, generator); + return map$1(fittedOldGrid, function (gridRow, i) { + return addCells(gridRow, index, fittedNewGrid[i].cells); + }); + }; + var insertRows = function (index, gridA, gridB, generator, comparator) { + splitRows(gridA, index, comparator, generator.cell); + var locked = getLockedColumnsFromGrid(gridA); + var diff = measureWidth(gridA, gridB); + var delta = __assign(__assign({}, diff), { colDelta: diff.colDelta - locked.length }); + var fittedOldGrid = tailor(gridA, delta, generator); + var _a = extractGridDetails(fittedOldGrid), oldCols = _a.cols, oldRows = _a.rows; + var newLocked = getLockedColumnsFromGrid(fittedOldGrid); + var secondDiff = measureWidth(gridB, gridA); + var secondDelta = __assign(__assign({}, secondDiff), { colDelta: secondDiff.colDelta + newLocked.length }); + var fittedGridB = lockedColFill(gridB, generator, newLocked); + var fittedNewGrid = tailor(fittedGridB, secondDelta, generator); + return oldCols.concat(oldRows.slice(0, index)).concat(fittedNewGrid).concat(oldRows.slice(index, oldRows.length)); + }; + + var cloneRow = function (row, cloneCell, comparator, substitution) { + return clone$1(row, function (elem) { + return substitution(elem, comparator); + }, cloneCell); + }; + var insertRowAt = function (grid, index, example, comparator, substitution) { + var _a = extractGridDetails(grid), rows = _a.rows, cols = _a.cols; + var before = rows.slice(0, index); + var after = rows.slice(index); + var newRow = cloneRow(rows[example], function (ex, c) { + var withinSpan = index > 0 && index < rows.length && comparator(getCellElement(rows[index - 1], c), getCellElement(rows[index], c)); + var ret = withinSpan ? getCell(rows[index], c) : elementnew(substitution(ex.element, comparator), true, ex.isLocked); + return ret; + }, comparator, substitution); + return cols.concat(before).concat([newRow]).concat(after); + }; + var getElementFor = function (row, column, section, withinSpan, example, comparator, substitution) { + if (section === 'colgroup' || !withinSpan) { + var cell = getCell(row, example); + return elementnew(substitution(cell.element, comparator), true, false); + } else { + return getCell(row, column); + } + }; + var insertColumnAt = function (grid, index, example, comparator, substitution) { + return map$1(grid, function (row) { + var withinSpan = index > 0 && index < cellLength(row) && comparator(getCellElement(row, index - 1), getCellElement(row, index)); + var sub = getElementFor(row, index, row.section, withinSpan, example, comparator, substitution); + return addCell(row, index, sub); + }); + }; + var deleteColumnsAt = function (grid, columns) { + return bind$2(grid, function (row) { + var existingCells = row.cells; + var cells = foldr(columns, function (acc, column) { + return column >= 0 && column < acc.length ? acc.slice(0, column).concat(acc.slice(column + 1)) : acc; + }, existingCells); + return cells.length > 0 ? [rowcells(row.element, cells, row.section, row.isNew)] : []; + }); + }; + var deleteRowsAt = function (grid, start, finish) { + var _a = extractGridDetails(grid), rows = _a.rows, cols = _a.cols; + return cols.concat(rows.slice(0, start)).concat(rows.slice(finish + 1)); + }; + + var notInStartRow = function (grid, rowIndex, colIndex, comparator) { + return getCellElement(grid[rowIndex], colIndex) !== undefined && (rowIndex > 0 && comparator(getCellElement(grid[rowIndex - 1], colIndex), getCellElement(grid[rowIndex], colIndex))); + }; + var notInStartColumn = function (row, index, comparator) { + return index > 0 && comparator(getCellElement(row, index - 1), getCellElement(row, index)); + }; + var isDuplicatedCell = function (grid, rowIndex, colIndex, comparator) { + return notInStartRow(grid, rowIndex, colIndex, comparator) || notInStartColumn(grid[rowIndex], colIndex, comparator); + }; + var rowReplacerPredicate = function (targetRow, columnHeaders) { + var entireTableIsHeader = forall(columnHeaders, identity) && isHeaderCells(targetRow.cells); + return entireTableIsHeader ? always : function (cell, _rowIndex, colIndex) { + var type = name(cell.element); + return !(type === 'th' && columnHeaders[colIndex]); + }; + }; + var columnReplacePredicate = function (targetColumn, rowHeaders) { + var entireTableIsHeader = forall(rowHeaders, identity) && isHeaderCells(targetColumn); + return entireTableIsHeader ? always : function (cell, rowIndex, _colIndex) { + var type = name(cell.element); + return !(type === 'th' && rowHeaders[rowIndex]); + }; + }; + var determineScope = function (applyScope, element, newScope, isInHeader) { + var hasSpan = function (scope) { + return scope === 'row' ? hasRowspan(element) : hasColspan(element); + }; + var getScope = function (scope) { + return hasSpan(scope) ? scope + 'group' : scope; + }; + if (applyScope) { + return isHeaderCell(element) ? getScope(newScope) : null; + } else if (isInHeader && isHeaderCell(element)) { + var oppositeScope = newScope === 'row' ? 'col' : 'row'; + return getScope(oppositeScope); + } else { + return null; + } + }; + var rowScopeGenerator = function (applyScope, columnHeaders) { + return function (cell, rowIndex, columnIndex) { + return Optional.some(determineScope(applyScope, cell.element, 'col', columnHeaders[columnIndex])); + }; + }; + var columnScopeGenerator = function (applyScope, rowHeaders) { + return function (cell, rowIndex) { + return Optional.some(determineScope(applyScope, cell.element, 'row', rowHeaders[rowIndex])); + }; + }; + var replace = function (cell, comparator, substitute) { + return elementnew(substitute(cell.element, comparator), true, cell.isLocked); + }; + var replaceIn = function (grid, targets, comparator, substitute, replacer, genScope, shouldReplace) { + var isTarget = function (cell) { + return exists(targets, function (target) { + return comparator(cell.element, target.element); + }); + }; + return map$1(grid, function (row, rowIndex) { + return mapCells(row, function (cell, colIndex) { + if (isTarget(cell)) { + var newCell_1 = shouldReplace(cell, rowIndex, colIndex) ? replacer(cell, comparator, substitute) : cell; + genScope(newCell_1, rowIndex, colIndex).each(function (scope) { + setOptions(newCell_1.element, { scope: Optional.from(scope) }); + }); + return newCell_1; + } else { + return cell; + } + }); + }); + }; + var getColumnCells = function (rows, columnIndex, comparator) { + return bind$2(rows, function (row, i) { + return isDuplicatedCell(rows, i, columnIndex, comparator) ? [] : [getCell(row, columnIndex)]; + }); + }; + var getRowCells = function (rows, rowIndex, comparator) { + var targetRow = rows[rowIndex]; + return bind$2(targetRow.cells, function (item, i) { + return isDuplicatedCell(rows, rowIndex, i, comparator) ? [] : [item]; + }); + }; + var replaceColumns = function (grid, indexes, applyScope, comparator, substitution) { + var rows = extractGridDetails(grid).rows; + var targets = bind$2(indexes, function (index) { + return getColumnCells(rows, index, comparator); + }); + var rowHeaders = map$1(grid, function (row) { + return isHeaderCells(row.cells); + }); + var shouldReplaceCell = columnReplacePredicate(targets, rowHeaders); + var scopeGenerator = columnScopeGenerator(applyScope, rowHeaders); + return replaceIn(grid, targets, comparator, substitution, replace, scopeGenerator, shouldReplaceCell); + }; + var replaceRows = function (grid, indexes, section, applyScope, comparator, substitution, tableSection) { + var _a = extractGridDetails(grid), cols = _a.cols, rows = _a.rows; + var targetRow = rows[indexes[0]]; + var targets = bind$2(indexes, function (index) { + return getRowCells(rows, index, comparator); + }); + var columnHeaders = map$1(targetRow.cells, function (_cell, index) { + return isHeaderCells(getColumnCells(rows, index, comparator)); + }); + var newRows = __spreadArray([], rows, true); + each$2(indexes, function (index) { + newRows[index] = tableSection.transformRow(rows[index], section); + }); + var newGrid = cols.concat(newRows); + var shouldReplaceCell = rowReplacerPredicate(targetRow, columnHeaders); + var scopeGenerator = rowScopeGenerator(applyScope, columnHeaders); + return replaceIn(newGrid, targets, comparator, substitution, tableSection.transformCell, scopeGenerator, shouldReplaceCell); + }; + var replaceCells = function (grid, details, comparator, substitution) { + var rows = extractGridDetails(grid).rows; + var targetCells = map$1(details, function (detail) { + return getCell(rows[detail.row], detail.column); + }); + return replaceIn(grid, targetCells, comparator, substitution, replace, Optional.none, always); + }; + + var uniqueColumns = function (details) { + var uniqueCheck = function (rest, detail) { + var columnExists = exists(rest, function (currentDetail) { + return currentDetail.column === detail.column; + }); + return columnExists ? rest : rest.concat([detail]); + }; + return foldl(details, uniqueCheck, []).sort(function (detailA, detailB) { + return detailA.column - detailB.column; + }); + }; + + var isCol = isTag('col'); + var isColgroup = isTag('colgroup'); + var isRow$1 = function (element) { + return name(element) === 'tr' || isColgroup(element); + }; + var elementToData = function (element) { + var colspan = getAttrValue(element, 'colspan', 1); + var rowspan = getAttrValue(element, 'rowspan', 1); + return { + element: element, + colspan: colspan, + rowspan: rowspan + }; + }; + var modification = function (generators, toData) { + if (toData === void 0) { + toData = elementToData; + } + var nuCell = function (data) { + return isCol(data.element) ? generators.col(data) : generators.cell(data); + }; + var nuRow = function (data) { + return isColgroup(data.element) ? generators.colgroup(data) : generators.row(data); + }; + var add = function (element) { + if (isRow$1(element)) { + return nuRow({ element: element }); + } else { + var replacement = nuCell(toData(element)); + recent = Optional.some({ + item: element, + replacement: replacement + }); + return replacement; + } + }; + var recent = Optional.none(); + var getOrInit = function (element, comparator) { + return recent.fold(function () { + return add(element); + }, function (p) { + return comparator(element, p.item) ? p.replacement : add(element); + }); + }; + return { getOrInit: getOrInit }; + }; + var transform = function (tag) { + return function (generators) { + var list = []; + var find = function (element, comparator) { + return find$1(list, function (x) { + return comparator(x.item, element); + }); + }; + var makeNew = function (element) { + var attrs = tag === 'td' ? { scope: null } : {}; + var cell = generators.replace(element, tag, attrs); + list.push({ + item: element, + sub: cell + }); + return cell; + }; + var replaceOrInit = function (element, comparator) { + if (isRow$1(element) || isCol(element)) { + return element; + } else { + return find(element, comparator).fold(function () { + return makeNew(element); + }, function (p) { + return comparator(element, p.item) ? p.sub : makeNew(element); + }); + } + }; + return { replaceOrInit: replaceOrInit }; + }; + }; + var getScopeAttribute = function (cell) { + return getOpt(cell, 'scope').map(function (attribute) { + return attribute.substr(0, 3); + }); + }; + var merging = function (generators) { + var unmerge = function (cell) { + var scope = getScopeAttribute(cell); + scope.each(function (attribute) { + return set$2(cell, 'scope', attribute); + }); + return function () { + var raw = generators.cell({ + element: cell, + colspan: 1, + rowspan: 1 + }); + remove$6(raw, 'width'); + remove$6(cell, 'width'); + scope.each(function (attribute) { + return set$2(raw, 'scope', attribute); + }); + return raw; + }; + }; + var merge = function (cells) { + var getScopeProperty = function () { + var stringAttributes = cat(map$1(cells, getScopeAttribute)); + if (stringAttributes.length === 0) { + return Optional.none(); + } else { + var baseScope_1 = stringAttributes[0]; + var scopes_1 = [ + 'row', + 'col' + ]; + var isMixed = exists(stringAttributes, function (attribute) { + return attribute !== baseScope_1 && contains$2(scopes_1, attribute); + }); + return isMixed ? Optional.none() : Optional.from(baseScope_1); + } + }; + remove$6(cells[0], 'width'); + getScopeProperty().fold(function () { + return remove$7(cells[0], 'scope'); + }, function (attribute) { + return set$2(cells[0], 'scope', attribute + 'group'); + }); + return constant(cells[0]); + }; + return { + unmerge: unmerge, + merge: merge + }; + }; + var Generators = { + modification: modification, + transform: transform, + merging: merging + }; + + var blockList = [ + 'body', + 'p', + 'div', + 'article', + 'aside', + 'figcaption', + 'figure', + 'footer', + 'header', + 'nav', + 'section', + 'ol', + 'ul', + 'table', + 'thead', + 'tfoot', + 'tbody', + 'caption', + 'tr', + 'td', + 'th', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'blockquote', + 'pre', + 'address' + ]; + var isList$1 = function (universe, item) { + var tagName = universe.property().name(item); + return contains$2([ + 'ol', + 'ul' + ], tagName); + }; + var isBlock$1 = function (universe, item) { + var tagName = universe.property().name(item); + return contains$2(blockList, tagName); + }; + var isEmptyTag$1 = function (universe, item) { + return contains$2([ + 'br', + 'img', + 'hr', + 'input' + ], universe.property().name(item)); + }; + + var universe$1 = DomUniverse(); + var isBlock = function (element) { + return isBlock$1(universe$1, element); + }; + var isList = function (element) { + return isList$1(universe$1, element); + }; + var isEmptyTag = function (element) { + return isEmptyTag$1(universe$1, element); + }; + + var merge = function (cells) { + var isBr = function (el) { + return name(el) === 'br'; + }; + var advancedBr = function (children) { + return forall(children, function (c) { + return isBr(c) || isText(c) && get$9(c).trim().length === 0; + }); + }; + var isListItem = function (el) { + return name(el) === 'li' || ancestor$2(el, isList).isSome(); + }; + var siblingIsBlock = function (el) { + return nextSibling(el).map(function (rightSibling) { + if (isBlock(rightSibling)) { + return true; + } + if (isEmptyTag(rightSibling)) { + return name(rightSibling) === 'img' ? false : true; + } + return false; + }).getOr(false); + }; + var markCell = function (cell) { + return last$1(cell).bind(function (rightEdge) { + var rightSiblingIsBlock = siblingIsBlock(rightEdge); + return parent(rightEdge).map(function (parent) { + return rightSiblingIsBlock === true || isListItem(parent) || isBr(rightEdge) || isBlock(parent) && !eq$1(cell, parent) ? [] : [SugarElement.fromTag('br')]; + }); + }).getOr([]); + }; + var markContent = function () { + var content = bind$2(cells, function (cell) { + var children = children$3(cell); + return advancedBr(children) ? [] : children.concat(markCell(cell)); + }); + return content.length === 0 ? [SugarElement.fromTag('br')] : content; + }; + var contents = markContent(); + empty(cells[0]); + append(cells[0], contents); + }; + + var isEditable = function (elem) { + return isEditable$1(elem, true); + }; + var prune = function (table) { + var cells = cells$1(table); + if (cells.length === 0) { + remove$5(table); + } + }; + var outcome = function (grid, cursor) { + return { + grid: grid, + cursor: cursor + }; + }; + var findEditableCursorPosition = function (rows) { + return findMap(rows, function (row) { + return findMap(row.cells, function (cell) { + var elem = cell.element; + return someIf(isEditable(elem), elem); + }); + }); + }; + var elementFromGrid = function (grid, row, column) { + var _a, _b; + var rows = extractGridDetails(grid).rows; + return Optional.from((_b = (_a = rows[row]) === null || _a === void 0 ? void 0 : _a.cells[column]) === null || _b === void 0 ? void 0 : _b.element).filter(isEditable).orThunk(function () { + return findEditableCursorPosition(rows); + }); + }; + var bundle = function (grid, row, column) { + var cursorElement = elementFromGrid(grid, row, column); + return outcome(grid, cursorElement); + }; + var uniqueRows = function (details) { + var rowCompilation = function (rest, detail) { + var rowExists = exists(rest, function (currentDetail) { + return currentDetail.row === detail.row; + }); + return rowExists ? rest : rest.concat([detail]); + }; + return foldl(details, rowCompilation, []).sort(function (detailA, detailB) { + return detailA.row - detailB.row; + }); + }; + var opInsertRowsBefore = function (grid, details, comparator, genWrappers) { + var targetIndex = details[0].row; + var rows = uniqueRows(details); + var newGrid = foldr(rows, function (acc, row) { + var newG = insertRowAt(acc.grid, targetIndex, row.row + acc.delta, comparator, genWrappers.getOrInit); + return { + grid: newG, + delta: acc.delta + 1 + }; + }, { + grid: grid, + delta: 0 + }).grid; + return bundle(newGrid, targetIndex, details[0].column); + }; + var opInsertRowsAfter = function (grid, details, comparator, genWrappers) { + var rows = uniqueRows(details); + var target = rows[rows.length - 1]; + var targetIndex = target.row + target.rowspan; + var newGrid = foldr(rows, function (newG, row) { + return insertRowAt(newG, targetIndex, row.row, comparator, genWrappers.getOrInit); + }, grid); + return bundle(newGrid, targetIndex, details[0].column); + }; + var opInsertColumnsBefore = function (grid, extractDetail, comparator, genWrappers) { + var details = extractDetail.details; + var columns = uniqueColumns(details); + var targetIndex = columns[0].column; + var newGrid = foldr(columns, function (acc, col) { + var newG = insertColumnAt(acc.grid, targetIndex, col.column + acc.delta, comparator, genWrappers.getOrInit); + return { + grid: newG, + delta: acc.delta + 1 + }; + }, { + grid: grid, + delta: 0 + }).grid; + return bundle(newGrid, details[0].row, targetIndex); + }; + var opInsertColumnsAfter = function (grid, extractDetail, comparator, genWrappers) { + var details = extractDetail.details; + var target = details[details.length - 1]; + var targetIndex = target.column + target.colspan; + var columns = uniqueColumns(details); + var newGrid = foldr(columns, function (newG, col) { + return insertColumnAt(newG, targetIndex, col.column, comparator, genWrappers.getOrInit); + }, grid); + return bundle(newGrid, details[0].row, targetIndex); + }; + var opMakeColumnsHeader = function (initialGrid, details, comparator, genWrappers) { + var columns = uniqueColumns(details); + var columnIndexes = map$1(columns, function (detail) { + return detail.column; + }); + var newGrid = replaceColumns(initialGrid, columnIndexes, true, comparator, genWrappers.replaceOrInit); + return bundle(newGrid, details[0].row, details[0].column); + }; + var opMakeCellsHeader = function (initialGrid, details, comparator, genWrappers) { + var newGrid = replaceCells(initialGrid, details, comparator, genWrappers.replaceOrInit); + return bundle(newGrid, details[0].row, details[0].column); + }; + var opUnmakeColumnsHeader = function (initialGrid, details, comparator, genWrappers) { + var columns = uniqueColumns(details); + var columnIndexes = map$1(columns, function (detail) { + return detail.column; + }); + var newGrid = replaceColumns(initialGrid, columnIndexes, false, comparator, genWrappers.replaceOrInit); + return bundle(newGrid, details[0].row, details[0].column); + }; + var opUnmakeCellsHeader = function (initialGrid, details, comparator, genWrappers) { + var newGrid = replaceCells(initialGrid, details, comparator, genWrappers.replaceOrInit); + return bundle(newGrid, details[0].row, details[0].column); + }; + var makeRowsSection = function (section, applyScope) { + return function (initialGrid, details, comparator, genWrappers, tableSection) { + var rows = uniqueRows(details); + var rowIndexes = map$1(rows, function (detail) { + return detail.row; + }); + var newGrid = replaceRows(initialGrid, rowIndexes, section, applyScope, comparator, genWrappers.replaceOrInit, tableSection); + return bundle(newGrid, details[0].row, details[0].column); + }; + }; + var opMakeRowsHeader = makeRowsSection('thead', true); + var opMakeRowsBody = makeRowsSection('tbody', false); + var opMakeRowsFooter = makeRowsSection('tfoot', false); + var opEraseColumns = function (grid, extractDetail, _comparator, _genWrappers) { + var columns = uniqueColumns(extractDetail.details); + var newGrid = deleteColumnsAt(grid, map$1(columns, function (column) { + return column.column; + })); + var maxColIndex = newGrid.length > 0 ? newGrid[0].cells.length - 1 : 0; + return bundle(newGrid, columns[0].row, Math.min(columns[0].column, maxColIndex)); + }; + var opEraseRows = function (grid, details, _comparator, _genWrappers) { + var rows = uniqueRows(details); + var newGrid = deleteRowsAt(grid, rows[0].row, rows[rows.length - 1].row); + var maxRowIndex = newGrid.length > 0 ? newGrid.length - 1 : 0; + return bundle(newGrid, Math.min(details[0].row, maxRowIndex), details[0].column); + }; + var opMergeCells = function (grid, mergable, comparator, genWrappers) { + var cells = mergable.cells; + merge(cells); + var newGrid = merge$2(grid, mergable.bounds, comparator, genWrappers.merge(cells)); + return outcome(newGrid, Optional.from(cells[0])); + }; + var opUnmergeCells = function (grid, unmergable, comparator, genWrappers) { + var unmerge$1 = function (b, cell) { + return unmerge(b, cell, comparator, genWrappers.unmerge(cell)); + }; + var newGrid = foldr(unmergable, unmerge$1, grid); + return outcome(newGrid, Optional.from(unmergable[0])); + }; + var opPasteCells = function (grid, pasteDetails, comparator, _genWrappers) { + var gridify = function (table, generators) { + var wh = Warehouse.fromTable(table); + return toGrid(wh, generators, true); + }; + var gridB = gridify(pasteDetails.clipboard, pasteDetails.generators); + var startAddress = address(pasteDetails.row, pasteDetails.column); + var mergedGrid = merge$1(startAddress, grid, gridB, pasteDetails.generators, comparator); + return mergedGrid.fold(function () { + return outcome(grid, Optional.some(pasteDetails.element)); + }, function (newGrid) { + return bundle(newGrid, pasteDetails.row, pasteDetails.column); + }); + }; + var gridifyRows = function (rows, generators, context) { + var pasteDetails = fromPastedRows(rows, context.section); + var wh = Warehouse.generate(pasteDetails); + return toGrid(wh, generators, true); + }; + var opPasteColsBefore = function (grid, pasteDetails, comparator, _genWrappers) { + var rows = extractGridDetails(grid).rows; + var index = pasteDetails.cells[0].column; + var context = rows[pasteDetails.cells[0].row]; + var gridB = gridifyRows(pasteDetails.clipboard, pasteDetails.generators, context); + var mergedGrid = insertCols(index, grid, gridB, pasteDetails.generators, comparator); + return bundle(mergedGrid, pasteDetails.cells[0].row, pasteDetails.cells[0].column); + }; + var opPasteColsAfter = function (grid, pasteDetails, comparator, _genWrappers) { + var rows = extractGridDetails(grid).rows; + var index = pasteDetails.cells[pasteDetails.cells.length - 1].column + pasteDetails.cells[pasteDetails.cells.length - 1].colspan; + var context = rows[pasteDetails.cells[0].row]; + var gridB = gridifyRows(pasteDetails.clipboard, pasteDetails.generators, context); + var mergedGrid = insertCols(index, grid, gridB, pasteDetails.generators, comparator); + return bundle(mergedGrid, pasteDetails.cells[0].row, pasteDetails.cells[0].column); + }; + var opPasteRowsBefore = function (grid, pasteDetails, comparator, _genWrappers) { + var rows = extractGridDetails(grid).rows; + var index = pasteDetails.cells[0].row; + var context = rows[index]; + var gridB = gridifyRows(pasteDetails.clipboard, pasteDetails.generators, context); + var mergedGrid = insertRows(index, grid, gridB, pasteDetails.generators, comparator); + return bundle(mergedGrid, pasteDetails.cells[0].row, pasteDetails.cells[0].column); + }; + var opPasteRowsAfter = function (grid, pasteDetails, comparator, _genWrappers) { + var rows = extractGridDetails(grid).rows; + var index = pasteDetails.cells[pasteDetails.cells.length - 1].row + pasteDetails.cells[pasteDetails.cells.length - 1].rowspan; + var context = rows[pasteDetails.cells[0].row]; + var gridB = gridifyRows(pasteDetails.clipboard, pasteDetails.generators, context); + var mergedGrid = insertRows(index, grid, gridB, pasteDetails.generators, comparator); + return bundle(mergedGrid, pasteDetails.cells[0].row, pasteDetails.cells[0].column); + }; + var opGetColumnsType = function (table, target) { + var house = Warehouse.fromTable(table); + var details = onCells(house, target); + return details.bind(function (selectedCells) { + var lastSelectedCell = selectedCells[selectedCells.length - 1]; + var minColRange = selectedCells[0].column; + var maxColRange = lastSelectedCell.column + lastSelectedCell.colspan; + var selectedColumnCells = flatten$1(map$1(house.all, function (row) { + return filter$2(row.cells, function (cell) { + return cell.column >= minColRange && cell.column < maxColRange; + }); + })); + return findCommonCellType(selectedColumnCells); + }).getOr(''); + }; + var opGetCellsType = function (table, target) { + var house = Warehouse.fromTable(table); + var details = onCells(house, target); + return details.bind(findCommonCellType).getOr(''); + }; + var opGetRowsType = function (table, target) { + var house = Warehouse.fromTable(table); + var details = onCells(house, target); + return details.bind(function (selectedCells) { + var lastSelectedCell = selectedCells[selectedCells.length - 1]; + var minRowRange = selectedCells[0].row; + var maxRowRange = lastSelectedCell.row + lastSelectedCell.rowspan; + var selectedRows = house.all.slice(minRowRange, maxRowRange); + return findCommonRowType(selectedRows); + }).getOr(''); + }; + var resize = function (table, list, details, behaviours) { + return adjustWidthTo(table, list, details, behaviours.sizing); + }; + var adjustAndRedistributeWidths = function (table, list, details, behaviours) { + return adjustAndRedistributeWidths$1(table, list, details, behaviours.sizing, behaviours.resize); + }; + var firstColumnIsLocked = function (_warehouse, details) { + return exists(details, function (detail) { + return detail.column === 0 && detail.isLocked; + }); + }; + var lastColumnIsLocked = function (warehouse, details) { + return exists(details, function (detail) { + return detail.column + detail.colspan >= warehouse.grid.columns && detail.isLocked; + }); + }; + var getColumnsWidth = function (warehouse, details) { + var columns$1 = columns(warehouse); + var uniqueCols = uniqueColumns(details); + return foldl(uniqueCols, function (acc, detail) { + var column = columns$1[detail.column]; + var colWidth = column.map(getOuter$2).getOr(0); + return acc + colWidth; + }, 0); + }; + var insertColumnsExtractor = function (before) { + return function (warehouse, target) { + return onCells(warehouse, target).filter(function (details) { + var checkLocked = before ? firstColumnIsLocked : lastColumnIsLocked; + return !checkLocked(warehouse, details); + }).map(function (details) { + return { + details: details, + pixelDelta: getColumnsWidth(warehouse, details) + }; + }); + }; + }; + var eraseColumnsExtractor = function (warehouse, target) { + return onUnlockedCells(warehouse, target).map(function (details) { + return { + details: details, + pixelDelta: -getColumnsWidth(warehouse, details) + }; + }); + }; + var pasteColumnsExtractor = function (before) { + return function (warehouse, target) { + return onPasteByEditor(warehouse, target).filter(function (details) { + var checkLocked = before ? firstColumnIsLocked : lastColumnIsLocked; + return !checkLocked(warehouse, details.cells); + }); + }; + }; + var headerCellGenerator = Generators.transform('th'); + var bodyCellGenerator = Generators.transform('td'); + var insertRowsBefore = run(opInsertRowsBefore, onCells, noop, noop, Generators.modification); + var insertRowsAfter = run(opInsertRowsAfter, onCells, noop, noop, Generators.modification); + var insertColumnsBefore = run(opInsertColumnsBefore, insertColumnsExtractor(true), adjustAndRedistributeWidths, noop, Generators.modification); + var insertColumnsAfter = run(opInsertColumnsAfter, insertColumnsExtractor(false), adjustAndRedistributeWidths, noop, Generators.modification); + var eraseColumns = run(opEraseColumns, eraseColumnsExtractor, adjustAndRedistributeWidths, prune, Generators.modification); + var eraseRows = run(opEraseRows, onCells, noop, prune, Generators.modification); + var makeColumnsHeader = run(opMakeColumnsHeader, onUnlockedCells, noop, noop, headerCellGenerator); + var unmakeColumnsHeader = run(opUnmakeColumnsHeader, onUnlockedCells, noop, noop, bodyCellGenerator); + var makeRowsHeader = run(opMakeRowsHeader, onUnlockedCells, noop, noop, headerCellGenerator); + var makeRowsBody = run(opMakeRowsBody, onUnlockedCells, noop, noop, bodyCellGenerator); + var makeRowsFooter = run(opMakeRowsFooter, onUnlockedCells, noop, noop, bodyCellGenerator); + var makeCellsHeader = run(opMakeCellsHeader, onUnlockedCells, noop, noop, headerCellGenerator); + var unmakeCellsHeader = run(opUnmakeCellsHeader, onUnlockedCells, noop, noop, bodyCellGenerator); + var mergeCells = run(opMergeCells, onUnlockedMergable, resize, noop, Generators.merging); + var unmergeCells = run(opUnmergeCells, onUnlockedUnmergable, resize, noop, Generators.merging); + var pasteCells = run(opPasteCells, onPaste, resize, noop, Generators.modification); + var pasteColsBefore = run(opPasteColsBefore, pasteColumnsExtractor(true), noop, noop, Generators.modification); + var pasteColsAfter = run(opPasteColsAfter, pasteColumnsExtractor(false), noop, noop, Generators.modification); + var pasteRowsBefore = run(opPasteRowsBefore, onPasteByEditor, noop, noop, Generators.modification); + var pasteRowsAfter = run(opPasteRowsAfter, onPasteByEditor, noop, noop, Generators.modification); + var getColumnsType = opGetColumnsType; + var getCellsType = opGetCellsType; + var getRowsType = opGetRowsType; + + var TableActions = function (editor, cellSelection, lazyWire) { + var isTableBody = function (editor) { + return name(getBody(editor)) === 'table'; + }; + var lastRowGuard = function (table) { + return isTableBody(editor) === false || getGridSize(table).rows > 1; + }; + var lastColumnGuard = function (table) { + return isTableBody(editor) === false || getGridSize(table).columns > 1; + }; + var cloneFormats = getCloneElements(editor); + var colMutationOp = isResizeTableColumnResizing(editor) ? noop : halve; + var getTableSectionType = function (table) { + switch (getTableHeaderType(editor)) { + case 'section': + return TableSection.section(); + case 'sectionCells': + return TableSection.sectionCells(); + case 'cells': + return TableSection.cells(); + default: + return TableSection.getTableSectionType(table, 'section'); + } + }; + var setSelectionFromAction = function (table, result) { + return result.cursor.fold(function () { + var cells = cells$1(table); + return head(cells).filter(inBody).map(function (firstCell) { + cellSelection.clear(table); + var rng = editor.dom.createRng(); + rng.selectNode(firstCell.dom); + editor.selection.setRng(rng); + set$2(firstCell, 'data-mce-selected', '1'); + return rng; + }); + }, function (cell) { + var des = freefallRtl(cell); + var rng = editor.dom.createRng(); + rng.setStart(des.element.dom, des.offset); + rng.setEnd(des.element.dom, des.offset); + editor.selection.setRng(rng); + cellSelection.clear(table); + return Optional.some(rng); + }); + }; + var execute = function (operation, guard, mutate, lazyWire, effect) { + return function (table, target, noEvents) { + if (noEvents === void 0) { + noEvents = false; + } + removeDataStyle(table); + var wire = lazyWire(); + var doc = SugarElement.fromDom(editor.getDoc()); + var generators = cellOperations(mutate, doc, cloneFormats); + var behaviours = { + sizing: get$4(editor, table), + resize: isResizeTableColumnResizing(editor) ? resizeTable() : preserveTable(), + section: getTableSectionType(table) + }; + return guard(table) ? operation(wire, table, target, generators, behaviours).bind(function (result) { + each$2(result.newRows, function (row) { + fireNewRow(editor, row.dom); + }); + each$2(result.newCells, function (cell) { + fireNewCell(editor, cell.dom); + }); + var range = setSelectionFromAction(table, result); + if (inBody(table)) { + removeDataStyle(table); + if (!noEvents) { + fireTableModified(editor, table.dom, effect); + } + } + return range.map(function (rng) { + return { + rng: rng, + effect: effect + }; + }); + }) : Optional.none(); + }; + }; + var deleteRow = execute(eraseRows, lastRowGuard, noop, lazyWire, structureModified); + var deleteColumn = execute(eraseColumns, lastColumnGuard, noop, lazyWire, structureModified); + var insertRowsBefore$1 = execute(insertRowsBefore, always, noop, lazyWire, structureModified); + var insertRowsAfter$1 = execute(insertRowsAfter, always, noop, lazyWire, structureModified); + var insertColumnsBefore$1 = execute(insertColumnsBefore, always, colMutationOp, lazyWire, structureModified); + var insertColumnsAfter$1 = execute(insertColumnsAfter, always, colMutationOp, lazyWire, structureModified); + var mergeCells$1 = execute(mergeCells, always, noop, lazyWire, structureModified); + var unmergeCells$1 = execute(unmergeCells, always, noop, lazyWire, structureModified); + var pasteColsBefore$1 = execute(pasteColsBefore, always, noop, lazyWire, structureModified); + var pasteColsAfter$1 = execute(pasteColsAfter, always, noop, lazyWire, structureModified); + var pasteRowsBefore$1 = execute(pasteRowsBefore, always, noop, lazyWire, structureModified); + var pasteRowsAfter$1 = execute(pasteRowsAfter, always, noop, lazyWire, structureModified); + var pasteCells$1 = execute(pasteCells, always, noop, lazyWire, styleAndStructureModified); + var makeCellsHeader$1 = execute(makeCellsHeader, always, noop, lazyWire, structureModified); + var unmakeCellsHeader$1 = execute(unmakeCellsHeader, always, noop, lazyWire, structureModified); + var makeColumnsHeader$1 = execute(makeColumnsHeader, always, noop, lazyWire, structureModified); + var unmakeColumnsHeader$1 = execute(unmakeColumnsHeader, always, noop, lazyWire, structureModified); + var makeRowsHeader$1 = execute(makeRowsHeader, always, noop, lazyWire, structureModified); + var makeRowsBody$1 = execute(makeRowsBody, always, noop, lazyWire, structureModified); + var makeRowsFooter$1 = execute(makeRowsFooter, always, noop, lazyWire, structureModified); + var getTableCellType = getCellsType; + var getTableColType = getColumnsType; + var getTableRowType = getRowsType; + return { + deleteRow: deleteRow, + deleteColumn: deleteColumn, + insertRowsBefore: insertRowsBefore$1, + insertRowsAfter: insertRowsAfter$1, + insertColumnsBefore: insertColumnsBefore$1, + insertColumnsAfter: insertColumnsAfter$1, + mergeCells: mergeCells$1, + unmergeCells: unmergeCells$1, + pasteColsBefore: pasteColsBefore$1, + pasteColsAfter: pasteColsAfter$1, + pasteRowsBefore: pasteRowsBefore$1, + pasteRowsAfter: pasteRowsAfter$1, + pasteCells: pasteCells$1, + makeCellsHeader: makeCellsHeader$1, + unmakeCellsHeader: unmakeCellsHeader$1, + makeColumnsHeader: makeColumnsHeader$1, + unmakeColumnsHeader: unmakeColumnsHeader$1, + makeRowsHeader: makeRowsHeader$1, + makeRowsBody: makeRowsBody$1, + makeRowsFooter: makeRowsFooter$1, + getTableRowType: getTableRowType, + getTableCellType: getTableCellType, + getTableColType: getTableColType + }; + }; + + var DefaultRenderOptions = { + styles: { + 'border-collapse': 'collapse', + 'width': '100%' + }, + attributes: { border: '1' }, + colGroups: false + }; + var tableHeaderCell = function () { + return SugarElement.fromTag('th'); + }; + var tableCell = function () { + return SugarElement.fromTag('td'); + }; + var tableColumn = function () { + return SugarElement.fromTag('col'); + }; + var createRow = function (columns, rowHeaders, columnHeaders, rowIndex) { + var tr = SugarElement.fromTag('tr'); + for (var j = 0; j < columns; j++) { + var td = rowIndex < rowHeaders || j < columnHeaders ? tableHeaderCell() : tableCell(); + if (j < columnHeaders) { + set$2(td, 'scope', 'row'); + } + if (rowIndex < rowHeaders) { + set$2(td, 'scope', 'col'); + } + append$1(td, SugarElement.fromTag('br')); + append$1(tr, td); + } + return tr; + }; + var createGroupRow = function (columns) { + var columnGroup = SugarElement.fromTag('colgroup'); + range$1(columns, function () { + return append$1(columnGroup, tableColumn()); + }); + return columnGroup; + }; + var createRows = function (rows, columns, rowHeaders, columnHeaders) { + return range$1(rows, function (r) { + return createRow(columns, rowHeaders, columnHeaders, r); + }); + }; + var render = function (rows, columns, rowHeaders, columnHeaders, headerType, renderOpts) { + if (renderOpts === void 0) { + renderOpts = DefaultRenderOptions; + } + var table = SugarElement.fromTag('table'); + var rowHeadersGoInThead = headerType !== 'cells'; + setAll(table, renderOpts.styles); + setAll$1(table, renderOpts.attributes); + if (renderOpts.colGroups) { + append$1(table, createGroupRow(columns)); + } + var actualRowHeaders = Math.min(rows, rowHeaders); + if (rowHeadersGoInThead && rowHeaders > 0) { + var thead = SugarElement.fromTag('thead'); + append$1(table, thead); + var theadRowHeaders = headerType === 'sectionCells' ? actualRowHeaders : 0; + var theadRows = createRows(rowHeaders, columns, theadRowHeaders, columnHeaders); + append(thead, theadRows); + } + var tbody = SugarElement.fromTag('tbody'); + append$1(table, tbody); + var numRows = rowHeadersGoInThead ? rows - actualRowHeaders : rows; + var numRowHeaders = rowHeadersGoInThead ? 0 : rowHeaders; + var tbodyRows = createRows(numRows, columns, numRowHeaders, columnHeaders); + append(tbody, tbodyRows); + return table; + }; + + var get$2 = function (element) { + return element.dom.innerHTML; + }; + var getOuter = function (element) { + var container = SugarElement.fromTag('div'); + var clone = SugarElement.fromDom(element.dom.cloneNode(true)); + append$1(container, clone); + return get$2(container); + }; + + var placeCaretInCell = function (editor, cell) { + editor.selection.select(cell.dom, true); + editor.selection.collapse(true); + }; + var selectFirstCellInTable = function (editor, tableElm) { + descendant(tableElm, 'td,th').each(curry(placeCaretInCell, editor)); + }; + var fireEvents = function (editor, table) { + each$2(descendants(table, 'tr'), function (row) { + fireNewRow(editor, row.dom); + each$2(descendants(row, 'th,td'), function (cell) { + fireNewCell(editor, cell.dom); + }); + }); + }; + var isPercentage = function (width) { + return isString(width) && width.indexOf('%') !== -1; + }; + var insert = function (editor, columns, rows, colHeaders, rowHeaders) { + var defaultStyles = getDefaultStyles(editor); + var options = { + styles: defaultStyles, + attributes: getDefaultAttributes(editor), + colGroups: useColumnGroup(editor) + }; + editor.undoManager.ignore(function () { + var table = render(rows, columns, rowHeaders, colHeaders, getTableHeaderType(editor), options); + set$2(table, 'data-mce-id', '__mce'); + var html = getOuter(table); + editor.insertContent(html); + editor.addVisual(); + }); + return descendant(getBody(editor), 'table[data-mce-id="__mce"]').map(function (table) { + if (isPixelsForced(editor)) { + enforcePixels(table); + } else if (isResponsiveForced(editor)) { + enforceNone(table); + } else if (isPercentagesForced(editor) || isPercentage(defaultStyles.width)) { + enforcePercentage(table); + } + removeDataStyle(table); + remove$7(table, 'data-mce-id'); + fireEvents(editor, table); + selectFirstCellInTable(editor, table); + return table.dom; + }).getOr(null); + }; + var insertTableWithDataValidation = function (editor, rows, columns, options, errorMsg) { + if (options === void 0) { + options = {}; + } + var checkInput = function (val) { + return isNumber(val) && val > 0; + }; + if (checkInput(rows) && checkInput(columns)) { + var headerRows = options.headerRows || 0; + var headerColumns = options.headerColumns || 0; + return insert(editor, columns, rows, headerColumns, headerRows); + } else { + console.error(errorMsg); + return null; + } + }; + + var getClipboardElements = function (getClipboard) { + return function () { + return getClipboard().fold(function () { + return []; + }, function (elems) { + return map$1(elems, function (e) { + return e.dom; + }); + }); + }; + }; + var setClipboardElements = function (setClipboard) { + return function (elems) { + var elmsOpt = elems.length > 0 ? Optional.some(fromDom(elems)) : Optional.none(); + setClipboard(elmsOpt); + }; + }; + var insertTable = function (editor) { + return function (columns, rows, options) { + if (options === void 0) { + options = {}; + } + var table = insertTableWithDataValidation(editor, rows, columns, options, 'Invalid values for insertTable - rows and columns values are required to insert a table.'); + editor.undoManager.add(); + return table; + }; + }; + var getApi = function (editor, clipboard, resizeHandler, selectionTargets) { + return { + insertTable: insertTable(editor), + setClipboardRows: setClipboardElements(clipboard.setRows), + getClipboardRows: getClipboardElements(clipboard.getRows), + setClipboardCols: setClipboardElements(clipboard.setColumns), + getClipboardCols: getClipboardElements(clipboard.getColumns), + resizeHandler: resizeHandler, + selectionTargets: selectionTargets + }; + }; + + var constrainSpan = function (element, property, value) { + var currentColspan = getAttrValue(element, property, 1); + if (value === 1 || currentColspan <= 1) { + remove$7(element, property); + } else { + set$2(element, property, Math.min(value, currentColspan)); + } + }; + var generateColGroup = function (house, minColRange, maxColRange) { + if (Warehouse.hasColumns(house)) { + var colsToCopy = filter$2(Warehouse.justColumns(house), function (col) { + return col.column >= minColRange && col.column < maxColRange; + }); + var copiedCols = map$1(colsToCopy, function (c) { + var clonedCol = deep(c.element); + constrainSpan(clonedCol, 'span', maxColRange - minColRange); + return clonedCol; + }); + var fakeColgroup = SugarElement.fromTag('colgroup'); + append(fakeColgroup, copiedCols); + return [fakeColgroup]; + } else { + return []; + } + }; + var generateRows = function (house, minColRange, maxColRange) { + return map$1(house.all, function (row) { + var cellsToCopy = filter$2(row.cells, function (cell) { + return cell.column >= minColRange && cell.column < maxColRange; + }); + var copiedCells = map$1(cellsToCopy, function (cell) { + var clonedCell = deep(cell.element); + constrainSpan(clonedCell, 'colspan', maxColRange - minColRange); + return clonedCell; + }); + var fakeTR = SugarElement.fromTag('tr'); + append(fakeTR, copiedCells); + return fakeTR; + }); + }; + var copyCols = function (table, target) { + var house = Warehouse.fromTable(table); + var details = onUnlockedCells(house, target); + return details.map(function (selectedCells) { + var lastSelectedCell = selectedCells[selectedCells.length - 1]; + var minColRange = selectedCells[0].column; + var maxColRange = lastSelectedCell.column + lastSelectedCell.colspan; + var fakeColGroups = generateColGroup(house, minColRange, maxColRange); + var fakeRows = generateRows(house, minColRange, maxColRange); + return __spreadArray(__spreadArray([], fakeColGroups, true), fakeRows, true); + }); + }; + + var copyRows = function (table, target, generators) { + var warehouse = Warehouse.fromTable(table); + var details = onCells(warehouse, target); + return details.bind(function (selectedCells) { + var grid = toGrid(warehouse, generators, false); + var rows = extractGridDetails(grid).rows; + var slicedGrid = rows.slice(selectedCells[0].row, selectedCells[selectedCells.length - 1].row + selectedCells[selectedCells.length - 1].rowspan); + var filteredGrid = bind$2(slicedGrid, function (row) { + var newCells = filter$2(row.cells, function (cell) { + return !cell.isLocked; + }); + return newCells.length > 0 ? [__assign(__assign({}, row), { cells: newCells })] : []; + }); + var slicedDetails = toDetailList(filteredGrid); + return someIf(slicedDetails.length > 0, slicedDetails); + }).map(function (slicedDetails) { + return copy(slicedDetails); + }); + }; + + var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools'); + + var getTDTHOverallStyle = function (dom, elm, name) { + var cells = dom.select('td,th', elm); + var firstChildStyle; + var checkChildren = function (firstChildStyle, elms) { + for (var i = 0; i < elms.length; i++) { + var currentStyle = dom.getStyle(elms[i], name); + if (typeof firstChildStyle === 'undefined') { + firstChildStyle = currentStyle; + } + if (firstChildStyle !== currentStyle) { + return ''; + } + } + return firstChildStyle; + }; + return checkChildren(firstChildStyle, cells); + }; + var applyAlign = function (editor, elm, name) { + if (name) { + editor.formatter.apply('align' + name, {}, elm); + } + }; + var applyVAlign = function (editor, elm, name) { + if (name) { + editor.formatter.apply('valign' + name, {}, elm); + } + }; + var unApplyAlign = function (editor, elm) { + global$2.each('left center right'.split(' '), function (name) { + editor.formatter.remove('align' + name, {}, elm); + }); + }; + var unApplyVAlign = function (editor, elm) { + global$2.each('top middle bottom'.split(' '), function (name) { + editor.formatter.remove('valign' + name, {}, elm); + }); + }; + + var verticalAlignValues = [ + { + text: 'None', + value: '' + }, + { + text: 'Top', + value: 'top' + }, + { + text: 'Middle', + value: 'middle' + }, + { + text: 'Bottom', + value: 'bottom' + } + ]; + + var hexColour = function (value) { + return { value: value }; + }; + var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; + var longformRegex = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i; + var isHexString = function (hex) { + return shorthandRegex.test(hex) || longformRegex.test(hex); + }; + var normalizeHex = function (hex) { + return removeLeading(hex, '#').toUpperCase(); + }; + var fromString$1 = function (hex) { + return isHexString(hex) ? Optional.some({ value: normalizeHex(hex) }) : Optional.none(); + }; + var toHex = function (component) { + var hex = component.toString(16); + return (hex.length === 1 ? '0' + hex : hex).toUpperCase(); + }; + var fromRgba = function (rgbaColour) { + var value = toHex(rgbaColour.red) + toHex(rgbaColour.green) + toHex(rgbaColour.blue); + return hexColour(value); + }; + + var rgbRegex = /^rgb\((\d+),\s*(\d+),\s*(\d+)\)/; + var rgbaRegex = /^rgba\((\d+),\s*(\d+),\s*(\d+),\s*(\d?(?:\.\d+)?)\)/; + var rgbaColour = function (red, green, blue, alpha) { + return { + red: red, + green: green, + blue: blue, + alpha: alpha + }; + }; + var fromStringValues = function (red, green, blue, alpha) { + var r = parseInt(red, 10); + var g = parseInt(green, 10); + var b = parseInt(blue, 10); + var a = parseFloat(alpha); + return rgbaColour(r, g, b, a); + }; + var fromString = function (rgbaString) { + if (rgbaString === 'transparent') { + return Optional.some(rgbaColour(0, 0, 0, 0)); + } + var rgbMatch = rgbRegex.exec(rgbaString); + if (rgbMatch !== null) { + return Optional.some(fromStringValues(rgbMatch[1], rgbMatch[2], rgbMatch[3], '1')); + } + var rgbaMatch = rgbaRegex.exec(rgbaString); + if (rgbaMatch !== null) { + return Optional.some(fromStringValues(rgbaMatch[1], rgbaMatch[2], rgbaMatch[3], rgbaMatch[4])); + } + return Optional.none(); + }; + + var anyToHex = function (color) { + return fromString$1(color).orThunk(function () { + return fromString(color).map(fromRgba); + }).getOrThunk(function () { + var canvas = document.createElement('canvas'); + canvas.height = 1; + canvas.width = 1; + var canvasContext = canvas.getContext('2d'); + canvasContext.clearRect(0, 0, canvas.width, canvas.height); + canvasContext.fillStyle = '#FFFFFF'; + canvasContext.fillStyle = color; + canvasContext.fillRect(0, 0, 1, 1); + var rgba = canvasContext.getImageData(0, 0, 1, 1).data; + var r = rgba[0]; + var g = rgba[1]; + var b = rgba[2]; + var a = rgba[3]; + return fromRgba(rgbaColour(r, g, b, a)); + }); + }; + + var Cell = function (initial) { + var value = initial; + var get = function () { + return value; + }; + var set = function (v) { + value = v; + }; + return { + get: get, + set: set + }; + }; + + var singleton = function (doRevoke) { + var subject = Cell(Optional.none()); + var revoke = function () { + return subject.get().each(doRevoke); + }; + var clear = function () { + revoke(); + subject.set(Optional.none()); + }; + var isSet = function () { + return subject.get().isSome(); + }; + var get = function () { + return subject.get(); + }; + var set = function (s) { + revoke(); + subject.set(Optional.some(s)); + }; + return { + clear: clear, + isSet: isSet, + get: get, + set: set + }; + }; + var unbindable = function () { + return singleton(function (s) { + return s.unbind(); + }); + }; + var value = function () { + var subject = singleton(noop); + var on = function (f) { + return subject.get().each(f); + }; + return __assign(__assign({}, subject), { on: on }); + }; + + var onSetupToggle = function (editor, selections, formatName, formatValue) { + return function (api) { + var boundCallback = unbindable(); + var isNone = isEmpty$1(formatValue); + var init = function () { + var selectedCells = getCellsFromSelection(selections); + var checkNode = function (cell) { + return editor.formatter.match(formatName, { value: formatValue }, cell.dom, isNone); + }; + if (isNone) { + api.setActive(!exists(selectedCells, checkNode)); + boundCallback.set(editor.formatter.formatChanged(formatName, function (match) { + return api.setActive(!match); + }, true)); + } else { + api.setActive(forall(selectedCells, checkNode)); + boundCallback.set(editor.formatter.formatChanged(formatName, api.setActive, false, { value: formatValue })); + } + }; + editor.initialized ? init() : editor.on('init', init); + return boundCallback.clear; + }; + }; + var isListGroup = function (item) { + return hasNonNullableKey(item, 'menu'); + }; + var buildListItems = function (items) { + return map$1(items, function (item) { + var text = item.text || item.title; + if (isListGroup(item)) { + return { + text: text, + items: buildListItems(item.menu) + }; + } else { + return { + text: text, + value: item.value + }; + } + }); + }; + var buildMenuItems = function (editor, selections, items, format, onAction) { + return map$1(items, function (item) { + var text = item.text || item.title; + if (isListGroup(item)) { + return { + type: 'nestedmenuitem', + text: text, + getSubmenuItems: function () { + return buildMenuItems(editor, selections, item.menu, format, onAction); + } + }; + } else { + return { + text: text, + type: 'togglemenuitem', + onAction: function () { + return onAction(item.value); + }, + onSetup: onSetupToggle(editor, selections, format, item.value) + }; + } + }); + }; + var applyTableCellStyle = function (editor, style) { + return function (value) { + var _a; + editor.execCommand('mceTableApplyCellStyle', false, (_a = {}, _a[style] = value, _a)); + }; + }; + var filterNoneItem = function (list) { + return bind$2(list, function (item) { + if (isListGroup(item)) { + return [__assign(__assign({}, item), { menu: filterNoneItem(item.menu) })]; + } else { + return isNotEmpty(item.value) ? [item] : []; + } + }); + }; + var generateMenuItemsCallback = function (editor, selections, items, format, onAction) { + return function (callback) { + return callback(buildMenuItems(editor, selections, items, format, onAction)); + }; + }; + var buildColorMenu = function (editor, colorList, style) { + var colorMap = map$1(colorList, function (entry) { + return { + text: entry.title, + value: '#' + anyToHex(entry.value).value, + type: 'choiceitem' + }; + }); + return [{ + type: 'fancymenuitem', + fancytype: 'colorswatch', + initData: { + colors: colorMap.length > 0 ? colorMap : undefined, + allowCustomColors: false + }, + onAction: function (data) { + var _a; + var value = data.value === 'remove' ? '' : data.value; + editor.execCommand('mceTableApplyCellStyle', false, (_a = {}, _a[style] = value, _a)); + } + }]; + }; + var changeRowHeader = function (editor) { + return function () { + var currentType = editor.queryCommandValue('mceTableRowType'); + var newType = currentType === 'header' ? 'body' : 'header'; + editor.execCommand('mceTableRowType', false, { type: newType }); + }; + }; + var changeColumnHeader = function (editor) { + return function () { + var currentType = editor.queryCommandValue('mceTableColType'); + var newType = currentType === 'th' ? 'td' : 'th'; + editor.execCommand('mceTableColType', false, { type: newType }); + }; + }; + + var getClassList$1 = function (editor) { + var classes = buildListItems(getCellClassList(editor)); + if (classes.length > 0) { + return Optional.some({ + name: 'class', + type: 'listbox', + label: 'Class', + items: classes + }); + } + return Optional.none(); + }; + var children = [ + { + name: 'width', + type: 'input', + label: 'Width' + }, + { + name: 'height', + type: 'input', + label: 'Height' + }, + { + name: 'celltype', + type: 'listbox', + label: 'Cell type', + items: [ + { + text: 'Cell', + value: 'td' + }, + { + text: 'Header cell', + value: 'th' + } + ] + }, + { + name: 'scope', + type: 'listbox', + label: 'Scope', + items: [ + { + text: 'None', + value: '' + }, + { + text: 'Row', + value: 'row' + }, + { + text: 'Column', + value: 'col' + }, + { + text: 'Row group', + value: 'rowgroup' + }, + { + text: 'Column group', + value: 'colgroup' + } + ] + }, + { + name: 'halign', + type: 'listbox', + label: 'Horizontal align', + items: [ + { + text: 'None', + value: '' + }, + { + text: 'Left', + value: 'left' + }, + { + text: 'Center', + value: 'center' + }, + { + text: 'Right', + value: 'right' + } + ] + }, + { + name: 'valign', + type: 'listbox', + label: 'Vertical align', + items: verticalAlignValues + } + ]; + var getItems$2 = function (editor) { + return children.concat(getClassList$1(editor).toArray()); + }; + + var getAdvancedTab = function (editor, dialogName) { + var emptyBorderStyle = [{ + text: 'Select...', + value: '' + }]; + var advTabItems = [ + { + name: 'borderstyle', + type: 'listbox', + label: 'Border style', + items: emptyBorderStyle.concat(buildListItems(getTableBorderStyles(editor))) + }, + { + name: 'bordercolor', + type: 'colorinput', + label: 'Border color' + }, + { + name: 'backgroundcolor', + type: 'colorinput', + label: 'Background color' + } + ]; + var borderWidth = { + name: 'borderwidth', + type: 'input', + label: 'Border width' + }; + var items = dialogName === 'cell' ? [borderWidth].concat(advTabItems) : advTabItems; + return { + title: 'Advanced', + name: 'advanced', + items: items + }; + }; + + var modifiers = function (testTruthy) { + return function (editor, node) { + var dom = editor.dom; + var setAttrib = function (attr, value) { + if (!testTruthy || value) { + dom.setAttrib(node, attr, value); + } + }; + var setStyle = function (prop, value) { + if (!testTruthy || value) { + dom.setStyle(node, prop, value); + } + }; + var setFormat = function (formatName, value) { + if (!testTruthy || value) { + if (value === '') { + editor.formatter.remove(formatName, { value: null }, node, true); + } else { + editor.formatter.apply(formatName, { value: value }, node); + } + } + }; + return { + setAttrib: setAttrib, + setStyle: setStyle, + setFormat: setFormat + }; + }; + }; + var DomModifier = { + normal: modifiers(false), + ifTruthy: modifiers(true) + }; + + var rgbToHex = function (dom) { + return function (value) { + return startsWith(value, 'rgb') ? dom.toHex(value) : value; + }; + }; + var extractAdvancedStyles = function (dom, elm) { + var element = SugarElement.fromDom(elm); + return { + borderwidth: getRaw$2(element, 'border-width').getOr(''), + borderstyle: getRaw$2(element, 'border-style').getOr(''), + bordercolor: getRaw$2(element, 'border-color').map(rgbToHex(dom)).getOr(''), + backgroundcolor: getRaw$2(element, 'background-color').map(rgbToHex(dom)).getOr('') + }; + }; + var getSharedValues = function (data) { + var baseData = data[0]; + var comparisonData = data.slice(1); + each$2(comparisonData, function (items) { + each$2(keys(baseData), function (key) { + each$1(items, function (itemValue, itemKey) { + var comparisonValue = baseData[key]; + if (comparisonValue !== '' && key === itemKey) { + if (comparisonValue !== itemValue) { + baseData[key] = ''; + } + } + }); + }); + }); + return baseData; + }; + var getAlignment = function (formats, formatName, editor, elm) { + return find$1(formats, function (name) { + return !isUndefined(editor.formatter.matchNode(elm, formatName + name)); + }).getOr(''); + }; + var getHAlignment = curry(getAlignment, [ + 'left', + 'center', + 'right' + ], 'align'); + var getVAlignment = curry(getAlignment, [ + 'top', + 'middle', + 'bottom' + ], 'valign'); + var extractDataFromSettings = function (editor, hasAdvTableTab) { + var style = getDefaultStyles(editor); + var attrs = getDefaultAttributes(editor); + var extractAdvancedStyleData = function (dom) { + return { + borderstyle: get$c(style, 'border-style').getOr(''), + bordercolor: rgbToHex(dom)(get$c(style, 'border-color').getOr('')), + backgroundcolor: rgbToHex(dom)(get$c(style, 'background-color').getOr('')) + }; + }; + var defaultData = { + height: '', + width: '100%', + cellspacing: '', + cellpadding: '', + caption: false, + class: '', + align: '', + border: '' + }; + var getBorder = function () { + var borderWidth = style['border-width']; + if (shouldStyleWithCss(editor) && borderWidth) { + return { border: borderWidth }; + } + return get$c(attrs, 'border').fold(function () { + return {}; + }, function (border) { + return { border: border }; + }); + }; + var advStyle = hasAdvTableTab ? extractAdvancedStyleData(editor.dom) : {}; + var getCellPaddingCellSpacing = function () { + var spacing = get$c(style, 'border-spacing').or(get$c(attrs, 'cellspacing')).fold(function () { + return {}; + }, function (cellspacing) { + return { cellspacing: cellspacing }; + }); + var padding = get$c(style, 'border-padding').or(get$c(attrs, 'cellpadding')).fold(function () { + return {}; + }, function (cellpadding) { + return { cellpadding: cellpadding }; + }); + return __assign(__assign({}, spacing), padding); + }; + var data = __assign(__assign(__assign(__assign(__assign(__assign({}, defaultData), style), attrs), advStyle), getBorder()), getCellPaddingCellSpacing()); + return data; + }; + var getRowType = function (elm) { + return table(SugarElement.fromDom(elm)).map(function (table) { + var target = { selection: fromDom(elm.cells) }; + return getRowsType(table, target); + }).getOr(''); + }; + var extractDataFromTableElement = function (editor, elm, hasAdvTableTab) { + var getBorder = function (dom, elm) { + var optBorderWidth = getRaw$2(SugarElement.fromDom(elm), 'border-width'); + if (shouldStyleWithCss(editor) && optBorderWidth.isSome()) { + return optBorderWidth.getOr(''); + } + return dom.getAttrib(elm, 'border') || getTDTHOverallStyle(editor.dom, elm, 'border-width') || getTDTHOverallStyle(editor.dom, elm, 'border'); + }; + var dom = editor.dom; + var cellspacing = shouldStyleWithCss(editor) ? dom.getStyle(elm, 'border-spacing') || dom.getAttrib(elm, 'cellspacing') : dom.getAttrib(elm, 'cellspacing') || dom.getStyle(elm, 'border-spacing'); + var cellpadding = shouldStyleWithCss(editor) ? getTDTHOverallStyle(dom, elm, 'padding') || dom.getAttrib(elm, 'cellpadding') : dom.getAttrib(elm, 'cellpadding') || getTDTHOverallStyle(dom, elm, 'padding'); + return __assign({ + width: dom.getStyle(elm, 'width') || dom.getAttrib(elm, 'width'), + height: dom.getStyle(elm, 'height') || dom.getAttrib(elm, 'height'), + cellspacing: cellspacing, + cellpadding: cellpadding, + border: getBorder(dom, elm), + caption: !!dom.select('caption', elm)[0], + class: dom.getAttrib(elm, 'class', ''), + align: getHAlignment(editor, elm) + }, hasAdvTableTab ? extractAdvancedStyles(dom, elm) : {}); + }; + var extractDataFromRowElement = function (editor, elm, hasAdvancedRowTab) { + var dom = editor.dom; + return __assign({ + height: dom.getStyle(elm, 'height') || dom.getAttrib(elm, 'height'), + class: dom.getAttrib(elm, 'class', ''), + type: getRowType(elm), + align: getHAlignment(editor, elm) + }, hasAdvancedRowTab ? extractAdvancedStyles(dom, elm) : {}); + }; + var extractDataFromCellElement = function (editor, cell, hasAdvancedCellTab, column) { + var dom = editor.dom; + var colElm = column.getOr(cell); + var getStyle = function (element, style) { + return dom.getStyle(element, style) || dom.getAttrib(element, style); + }; + return __assign({ + width: getStyle(colElm, 'width'), + height: getStyle(cell, 'height'), + scope: dom.getAttrib(cell, 'scope'), + celltype: getNodeName(cell), + class: dom.getAttrib(cell, 'class', ''), + halign: getHAlignment(editor, cell), + valign: getVAlignment(editor, cell) + }, hasAdvancedCellTab ? extractAdvancedStyles(dom, cell) : {}); + }; + + var getSelectedCells = function (table, cells) { + var warehouse = Warehouse.fromTable(table); + var allCells = Warehouse.justCells(warehouse); + var filtered = filter$2(allCells, function (cellA) { + return exists(cells, function (cellB) { + return eq$1(cellA.element, cellB); + }); + }); + return map$1(filtered, function (cell) { + return { + element: cell.element.dom, + column: Warehouse.getColumnAt(warehouse, cell.column).map(function (col) { + return col.element.dom; + }) + }; + }); + }; + var updateSimpleProps$1 = function (modifier, colModifier, data) { + modifier.setAttrib('scope', data.scope); + modifier.setAttrib('class', data.class); + modifier.setStyle('height', addPxSuffix(data.height)); + colModifier.setStyle('width', addPxSuffix(data.width)); + }; + var updateAdvancedProps$1 = function (modifier, data) { + modifier.setFormat('tablecellbackgroundcolor', data.backgroundcolor); + modifier.setFormat('tablecellbordercolor', data.bordercolor); + modifier.setFormat('tablecellborderstyle', data.borderstyle); + modifier.setFormat('tablecellborderwidth', addPxSuffix(data.borderwidth)); + }; + var applyStyleData$1 = function (editor, cells, data) { + var isSingleCell = cells.length === 1; + each$2(cells, function (item) { + var cellElm = item.element; + var modifier = isSingleCell ? DomModifier.normal(editor, cellElm) : DomModifier.ifTruthy(editor, cellElm); + var colModifier = item.column.map(function (col) { + return isSingleCell ? DomModifier.normal(editor, col) : DomModifier.ifTruthy(editor, col); + }).getOr(modifier); + updateSimpleProps$1(modifier, colModifier, data); + if (hasAdvancedCellTab(editor)) { + updateAdvancedProps$1(modifier, data); + } + if (isSingleCell) { + unApplyAlign(editor, cellElm); + unApplyVAlign(editor, cellElm); + } + if (data.halign) { + applyAlign(editor, cellElm, data.halign); + } + if (data.valign) { + applyVAlign(editor, cellElm, data.valign); + } + }); + }; + var applyStructureData$1 = function (editor, data) { + editor.execCommand('mceTableCellType', false, { + type: data.celltype, + no_events: true + }); + }; + var applyCellData = function (editor, cells, oldData, data) { + var modifiedData = filter$1(data, function (value, key) { + return oldData[key] !== value; + }); + if (size(modifiedData) > 0 && cells.length >= 1) { + table(cells[0]).each(function (table) { + var selectedCells = getSelectedCells(table, cells); + var styleModified = size(filter$1(modifiedData, function (_value, key) { + return key !== 'scope' && key !== 'celltype'; + })) > 0; + var structureModified = has$1(modifiedData, 'celltype'); + if (styleModified || has$1(modifiedData, 'scope')) { + applyStyleData$1(editor, selectedCells, data); + } + if (structureModified) { + applyStructureData$1(editor, data); + } + fireTableModified(editor, table.dom, { + structure: structureModified, + style: styleModified + }); + }); + } + }; + var onSubmitCellForm = function (editor, cells, oldData, api) { + var data = api.getData(); + api.close(); + editor.undoManager.transact(function () { + applyCellData(editor, cells, oldData, data); + editor.focus(); + }); + }; + var getData = function (editor, cells) { + var cellsData = table(cells[0]).map(function (table) { + return map$1(getSelectedCells(table, cells), function (item) { + return extractDataFromCellElement(editor, item.element, hasAdvancedCellTab(editor), item.column); + }); + }); + return getSharedValues(cellsData.getOrDie()); + }; + var open$2 = function (editor, selections) { + var cells = getCellsFromSelection(selections); + if (cells.length === 0) { + return; + } + var data = getData(editor, cells); + var dialogTabPanel = { + type: 'tabpanel', + tabs: [ + { + title: 'General', + name: 'general', + items: getItems$2(editor) + }, + getAdvancedTab(editor, 'cell') + ] + }; + var dialogPanel = { + type: 'panel', + items: [{ + type: 'grid', + columns: 2, + items: getItems$2(editor) + }] + }; + editor.windowManager.open({ + title: 'Cell Properties', + size: 'normal', + body: hasAdvancedCellTab(editor) ? dialogTabPanel : dialogPanel, + buttons: [ + { + type: 'cancel', + name: 'cancel', + text: 'Cancel' + }, + { + type: 'submit', + name: 'save', + text: 'Save', + primary: true + } + ], + initialData: data, + onSubmit: curry(onSubmitCellForm, editor, cells, data) + }); + }; + + var getClassList = function (editor) { + var classes = buildListItems(getRowClassList(editor)); + if (classes.length > 0) { + return Optional.some({ + name: 'class', + type: 'listbox', + label: 'Class', + items: classes + }); + } + return Optional.none(); + }; + var formChildren = [ + { + type: 'listbox', + name: 'type', + label: 'Row type', + items: [ + { + text: 'Header', + value: 'header' + }, + { + text: 'Body', + value: 'body' + }, + { + text: 'Footer', + value: 'footer' + } + ] + }, + { + type: 'listbox', + name: 'align', + label: 'Alignment', + items: [ + { + text: 'None', + value: '' + }, + { + text: 'Left', + value: 'left' + }, + { + text: 'Center', + value: 'center' + }, + { + text: 'Right', + value: 'right' + } + ] + }, + { + label: 'Height', + name: 'height', + type: 'input' + } + ]; + var getItems$1 = function (editor) { + return formChildren.concat(getClassList(editor).toArray()); + }; + + var updateSimpleProps = function (modifier, data) { + modifier.setAttrib('class', data.class); + modifier.setStyle('height', addPxSuffix(data.height)); + }; + var updateAdvancedProps = function (modifier, data) { + modifier.setStyle('background-color', data.backgroundcolor); + modifier.setStyle('border-color', data.bordercolor); + modifier.setStyle('border-style', data.borderstyle); + }; + var applyStyleData = function (editor, rows, data, oldData) { + var isSingleRow = rows.length === 1; + each$2(rows, function (rowElm) { + var modifier = isSingleRow ? DomModifier.normal(editor, rowElm) : DomModifier.ifTruthy(editor, rowElm); + updateSimpleProps(modifier, data); + if (hasAdvancedRowTab(editor)) { + updateAdvancedProps(modifier, data); + } + if (data.align !== oldData.align) { + unApplyAlign(editor, rowElm); + applyAlign(editor, rowElm, data.align); + } + }); + }; + var applyStructureData = function (editor, data) { + editor.execCommand('mceTableRowType', false, { + type: data.type, + no_events: true + }); + }; + var applyRowData = function (editor, rows, oldData, data) { + var modifiedData = filter$1(data, function (value, key) { + return oldData[key] !== value; + }); + if (size(modifiedData) > 0) { + var typeModified_1 = has$1(modifiedData, 'type'); + var styleModified_1 = typeModified_1 ? size(modifiedData) > 1 : true; + if (styleModified_1) { + applyStyleData(editor, rows, data, oldData); + } + if (typeModified_1) { + applyStructureData(editor, data); + } + table(SugarElement.fromDom(rows[0])).each(function (table) { + return fireTableModified(editor, table.dom, { + structure: typeModified_1, + style: styleModified_1 + }); + }); + } + }; + var onSubmitRowForm = function (editor, rows, oldData, api) { + var data = api.getData(); + api.close(); + editor.undoManager.transact(function () { + applyRowData(editor, rows, oldData, data); + editor.focus(); + }); + }; + var open$1 = function (editor) { + var rows = getRowsFromSelection(getSelectionStart(editor), ephemera.selected); + if (rows.length === 0) { + return; + } + var rowsData = map$1(rows, function (rowElm) { + return extractDataFromRowElement(editor, rowElm.dom, hasAdvancedRowTab(editor)); + }); + var data = getSharedValues(rowsData); + var dialogTabPanel = { + type: 'tabpanel', + tabs: [ + { + title: 'General', + name: 'general', + items: getItems$1(editor) + }, + getAdvancedTab(editor, 'row') + ] + }; + var dialogPanel = { + type: 'panel', + items: [{ + type: 'grid', + columns: 2, + items: getItems$1(editor) + }] + }; + editor.windowManager.open({ + title: 'Row Properties', + size: 'normal', + body: hasAdvancedRowTab(editor) ? dialogTabPanel : dialogPanel, + buttons: [ + { + type: 'cancel', + name: 'cancel', + text: 'Cancel' + }, + { + type: 'submit', + name: 'save', + text: 'Save', + primary: true + } + ], + initialData: data, + onSubmit: curry(onSubmitRowForm, editor, map$1(rows, function (r) { + return r.dom; + }), data) + }); + }; + + var getItems = function (editor, classes, insertNewTable) { + var rowColCountItems = !insertNewTable ? [] : [ + { + type: 'input', + name: 'cols', + label: 'Cols', + inputMode: 'numeric' + }, + { + type: 'input', + name: 'rows', + label: 'Rows', + inputMode: 'numeric' + } + ]; + var alwaysItems = [ + { + type: 'input', + name: 'width', + label: 'Width' + }, + { + type: 'input', + name: 'height', + label: 'Height' + } + ]; + var appearanceItems = hasAppearanceOptions(editor) ? [ + { + type: 'input', + name: 'cellspacing', + label: 'Cell spacing', + inputMode: 'numeric' + }, + { + type: 'input', + name: 'cellpadding', + label: 'Cell padding', + inputMode: 'numeric' + }, + { + type: 'input', + name: 'border', + label: 'Border width' + }, + { + type: 'label', + label: 'Caption', + items: [{ + type: 'checkbox', + name: 'caption', + label: 'Show caption' + }] + } + ] : []; + var alignmentItem = [{ + type: 'listbox', + name: 'align', + label: 'Alignment', + items: [ + { + text: 'None', + value: '' + }, + { + text: 'Left', + value: 'left' + }, + { + text: 'Center', + value: 'center' + }, + { + text: 'Right', + value: 'right' + } + ] + }]; + var classListItem = classes.length > 0 ? [{ + type: 'listbox', + name: 'class', + label: 'Class', + items: classes + }] : []; + return rowColCountItems.concat(alwaysItems).concat(appearanceItems).concat(alignmentItem).concat(classListItem); + }; + + var styleTDTH = function (dom, elm, name, value) { + if (elm.tagName === 'TD' || elm.tagName === 'TH') { + if (isString(name)) { + dom.setStyle(elm, name, value); + } else { + dom.setStyle(elm, name); + } + } else { + if (elm.children) { + for (var i = 0; i < elm.children.length; i++) { + styleTDTH(dom, elm.children[i], name, value); + } + } + } + }; + var applyDataToElement = function (editor, tableElm, data) { + var dom = editor.dom; + var attrs = {}; + var styles = {}; + attrs.class = data.class; + styles.height = addPxSuffix(data.height); + if (dom.getAttrib(tableElm, 'width') && !shouldStyleWithCss(editor)) { + attrs.width = removePxSuffix(data.width); + } else { + styles.width = addPxSuffix(data.width); + } + if (shouldStyleWithCss(editor)) { + styles['border-width'] = addPxSuffix(data.border); + styles['border-spacing'] = addPxSuffix(data.cellspacing); + } else { + attrs.border = data.border; + attrs.cellpadding = data.cellpadding; + attrs.cellspacing = data.cellspacing; + } + if (shouldStyleWithCss(editor) && tableElm.children) { + for (var i = 0; i < tableElm.children.length; i++) { + styleTDTH(dom, tableElm.children[i], { + 'border-width': addPxSuffix(data.border), + 'padding': addPxSuffix(data.cellpadding) + }); + if (hasAdvancedTableTab(editor)) { + styleTDTH(dom, tableElm.children[i], { 'border-color': data.bordercolor }); + } + } + } + if (hasAdvancedTableTab(editor)) { + styles['background-color'] = data.backgroundcolor; + styles['border-color'] = data.bordercolor; + styles['border-style'] = data.borderstyle; + } + attrs.style = dom.serializeStyle(__assign(__assign({}, getDefaultStyles(editor)), styles)); + dom.setAttribs(tableElm, __assign(__assign({}, getDefaultAttributes(editor)), attrs)); + }; + var onSubmitTableForm = function (editor, tableElm, oldData, api) { + var dom = editor.dom; + var data = api.getData(); + var modifiedData = filter$1(data, function (value, key) { + return oldData[key] !== value; + }); + api.close(); + if (data.class === '') { + delete data.class; + } + editor.undoManager.transact(function () { + if (!tableElm) { + var cols = parseInt(data.cols, 10) || 1; + var rows = parseInt(data.rows, 10) || 1; + tableElm = insert(editor, cols, rows, 0, 0); + } + if (size(modifiedData) > 0) { + applyDataToElement(editor, tableElm, data); + var captionElm = dom.select('caption', tableElm)[0]; + if (captionElm && !data.caption || !captionElm && data.caption) { + editor.execCommand('mceTableToggleCaption'); + } + if (data.align === '') { + unApplyAlign(editor, tableElm); + } else { + applyAlign(editor, tableElm, data.align); + } + } + editor.focus(); + editor.addVisual(); + if (size(modifiedData) > 0) { + var captionModified = has$1(modifiedData, 'caption'); + var styleModified = captionModified ? size(modifiedData) > 1 : true; + fireTableModified(editor, tableElm, { + structure: captionModified, + style: styleModified + }); + } + }); + }; + var open = function (editor, insertNewTable) { + var dom = editor.dom; + var tableElm; + var data = extractDataFromSettings(editor, hasAdvancedTableTab(editor)); + if (insertNewTable === false) { + tableElm = dom.getParent(editor.selection.getStart(), 'table', editor.getBody()); + if (tableElm) { + data = extractDataFromTableElement(editor, tableElm, hasAdvancedTableTab(editor)); + } else { + if (hasAdvancedTableTab(editor)) { + data.borderstyle = ''; + data.bordercolor = ''; + data.backgroundcolor = ''; + } + } + } else { + data.cols = '1'; + data.rows = '1'; + if (hasAdvancedTableTab(editor)) { + data.borderstyle = ''; + data.bordercolor = ''; + data.backgroundcolor = ''; + } + } + var classes = buildListItems(getTableClassList(editor)); + if (classes.length > 0) { + if (data.class) { + data.class = data.class.replace(/\s*mce\-item\-table\s*/g, ''); + } + } + var generalPanel = { + type: 'grid', + columns: 2, + items: getItems(editor, classes, insertNewTable) + }; + var nonAdvancedForm = function () { + return { + type: 'panel', + items: [generalPanel] + }; + }; + var advancedForm = function () { + return { + type: 'tabpanel', + tabs: [ + { + title: 'General', + name: 'general', + items: [generalPanel] + }, + getAdvancedTab(editor, 'table') + ] + }; + }; + var dialogBody = hasAdvancedTableTab(editor) ? advancedForm() : nonAdvancedForm(); + editor.windowManager.open({ + title: 'Table Properties', + size: 'normal', + body: dialogBody, + onSubmit: curry(onSubmitTableForm, editor, tableElm, data), + buttons: [ + { + type: 'cancel', + name: 'cancel', + text: 'Cancel' + }, + { + type: 'submit', + name: 'save', + text: 'Save', + primary: true + } + ], + initialData: data + }); + }; + + var getSelectionStartCellOrCaption = function (editor) { + return getSelectionCellOrCaption(getSelectionStart(editor), getIsRoot(editor)); + }; + var getSelectionStartCell = function (editor) { + return getSelectionCell(getSelectionStart(editor), getIsRoot(editor)); + }; + var registerCommands = function (editor, actions, cellSelection, selections, clipboard) { + var isRoot = getIsRoot(editor); + var eraseTable = function () { + return getSelectionStartCellOrCaption(editor).each(function (cellOrCaption) { + table(cellOrCaption, isRoot).filter(not(isRoot)).each(function (table) { + var cursor = SugarElement.fromText(''); + after$5(table, cursor); + remove$5(table); + if (editor.dom.isEmpty(editor.getBody())) { + editor.setContent(''); + editor.selection.setCursorLocation(); + } else { + var rng = editor.dom.createRng(); + rng.setStart(cursor.dom, 0); + rng.setEnd(cursor.dom, 0); + editor.selection.setRng(rng); + editor.nodeChanged(); + } + }); + }); + }; + var setSizingMode = function (sizing) { + return getSelectionStartCellOrCaption(editor).each(function (cellOrCaption) { + var isForcedSizing = isResponsiveForced(editor) || isPixelsForced(editor) || isPercentagesForced(editor); + if (!isForcedSizing) { + table(cellOrCaption, isRoot).each(function (table) { + if (sizing === 'relative' && !isPercentSizing(table)) { + enforcePercentage(table); + } else if (sizing === 'fixed' && !isPixelSizing(table)) { + enforcePixels(table); + } else if (sizing === 'responsive' && !isNoneSizing(table)) { + enforceNone(table); + } + removeDataStyle(table); + fireTableModified(editor, table.dom, structureModified); + }); + } + }); + }; + var getTableFromCell = function (cell) { + return table(cell, isRoot); + }; + var performActionOnSelection = function (action) { + return getSelectionStartCell(editor).bind(function (cell) { + return getTableFromCell(cell).map(function (table) { + return action(table, cell); + }); + }); + }; + var toggleTableClass = function (_ui, clazz) { + performActionOnSelection(function (table) { + editor.formatter.toggle('tableclass', { value: clazz }, table.dom); + fireTableModified(editor, table.dom, styleModified); + }); + }; + var toggleTableCellClass = function (_ui, clazz) { + performActionOnSelection(function (table) { + var selectedCells = getCellsFromSelection(selections); + var allHaveClass = forall(selectedCells, function (cell) { + return editor.formatter.match('tablecellclass', { value: clazz }, cell.dom); + }); + var formatterAction = allHaveClass ? editor.formatter.remove : editor.formatter.apply; + each$2(selectedCells, function (cell) { + return formatterAction('tablecellclass', { value: clazz }, cell.dom); + }); + fireTableModified(editor, table.dom, styleModified); + }); + }; + var toggleCaption = function () { + getSelectionStartCellOrCaption(editor).each(function (cellOrCaption) { + table(cellOrCaption, isRoot).each(function (table) { + child$1(table, 'caption').fold(function () { + var caption = SugarElement.fromTag('caption'); + append$1(caption, SugarElement.fromText('Caption')); + appendAt(table, caption, 0); + editor.selection.setCursorLocation(caption.dom, 0); + }, function (caption) { + if (isTag('caption')(cellOrCaption)) { + one('td', table).each(function (td) { + return editor.selection.setCursorLocation(td.dom, 0); + }); + } + remove$5(caption); + }); + fireTableModified(editor, table.dom, structureModified); + }); + }); + }; + var postExecute = function (_data) { + editor.focus(); + }; + var actOnSelection = function (execute, noEvents) { + if (noEvents === void 0) { + noEvents = false; + } + return performActionOnSelection(function (table, startCell) { + var targets = forMenu(selections, table, startCell); + execute(table, targets, noEvents).each(postExecute); + }); + }; + var copyRowSelection = function () { + return performActionOnSelection(function (table, startCell) { + var targets = forMenu(selections, table, startCell); + var generators = cellOperations(noop, SugarElement.fromDom(editor.getDoc()), Optional.none()); + return copyRows(table, targets, generators); + }); + }; + var copyColSelection = function () { + return performActionOnSelection(function (table, startCell) { + var targets = forMenu(selections, table, startCell); + return copyCols(table, targets); + }); + }; + var pasteOnSelection = function (execute, getRows) { + return getRows().each(function (rows) { + var clonedRows = map$1(rows, function (row) { + return deep(row); + }); + performActionOnSelection(function (table, startCell) { + var generators = paste$1(SugarElement.fromDom(editor.getDoc())); + var targets = pasteRows(selections, startCell, clonedRows, generators); + execute(table, targets).each(postExecute); + }); + }); + }; + var actOnType = function (getAction) { + return function (_ui, args) { + return get$c(args, 'type').each(function (type) { + actOnSelection(getAction(type), args.no_events); + }); + }; + }; + each$1({ + mceTableSplitCells: function () { + return actOnSelection(actions.unmergeCells); + }, + mceTableMergeCells: function () { + return actOnSelection(actions.mergeCells); + }, + mceTableInsertRowBefore: function () { + return actOnSelection(actions.insertRowsBefore); + }, + mceTableInsertRowAfter: function () { + return actOnSelection(actions.insertRowsAfter); + }, + mceTableInsertColBefore: function () { + return actOnSelection(actions.insertColumnsBefore); + }, + mceTableInsertColAfter: function () { + return actOnSelection(actions.insertColumnsAfter); + }, + mceTableDeleteCol: function () { + return actOnSelection(actions.deleteColumn); + }, + mceTableDeleteRow: function () { + return actOnSelection(actions.deleteRow); + }, + mceTableCutCol: function () { + return copyColSelection().each(function (selection) { + clipboard.setColumns(selection); + actOnSelection(actions.deleteColumn); + }); + }, + mceTableCutRow: function () { + return copyRowSelection().each(function (selection) { + clipboard.setRows(selection); + actOnSelection(actions.deleteRow); + }); + }, + mceTableCopyCol: function () { + return copyColSelection().each(function (selection) { + return clipboard.setColumns(selection); + }); + }, + mceTableCopyRow: function () { + return copyRowSelection().each(function (selection) { + return clipboard.setRows(selection); + }); + }, + mceTablePasteColBefore: function () { + return pasteOnSelection(actions.pasteColsBefore, clipboard.getColumns); + }, + mceTablePasteColAfter: function () { + return pasteOnSelection(actions.pasteColsAfter, clipboard.getColumns); + }, + mceTablePasteRowBefore: function () { + return pasteOnSelection(actions.pasteRowsBefore, clipboard.getRows); + }, + mceTablePasteRowAfter: function () { + return pasteOnSelection(actions.pasteRowsAfter, clipboard.getRows); + }, + mceTableDelete: eraseTable, + mceTableCellToggleClass: toggleTableCellClass, + mceTableToggleClass: toggleTableClass, + mceTableToggleCaption: toggleCaption, + mceTableSizingMode: function (_ui, sizing) { + return setSizingMode(sizing); + }, + mceTableCellType: actOnType(function (type) { + return type === 'th' ? actions.makeCellsHeader : actions.unmakeCellsHeader; + }), + mceTableColType: actOnType(function (type) { + return type === 'th' ? actions.makeColumnsHeader : actions.unmakeColumnsHeader; + }), + mceTableRowType: actOnType(function (type) { + switch (type) { + case 'header': + return actions.makeRowsHeader; + case 'footer': + return actions.makeRowsFooter; + default: + return actions.makeRowsBody; + } + }) + }, function (func, name) { + return editor.addCommand(name, func); + }); + each$1({ + mceTableProps: curry(open, editor, false), + mceTableRowProps: curry(open$1, editor), + mceTableCellProps: curry(open$2, editor, selections) + }, function (func, name) { + return editor.addCommand(name, function () { + return func(); + }); + }); + editor.addCommand('mceInsertTable', function (_ui, args) { + if (isObject(args) && keys(args).length > 0) { + insertTableWithDataValidation(editor, args.rows, args.columns, args.options, 'Invalid values for mceInsertTable - rows and columns values are required to insert a table.'); + } else { + open(editor, true); + } + }); + editor.addCommand('mceTableApplyCellStyle', function (_ui, args) { + var getFormatName = function (style) { + return 'tablecell' + style.toLowerCase().replace('-', ''); + }; + if (!isObject(args)) { + return; + } + var cells = getCellsFromSelection(selections); + if (cells.length === 0) { + return; + } + var validArgs = filter$1(args, function (value, style) { + return editor.formatter.has(getFormatName(style)) && isString(value); + }); + if (isEmpty(validArgs)) { + return; + } + each$1(validArgs, function (value, style) { + each$2(cells, function (cell) { + DomModifier.normal(editor, cell.dom).setFormat(getFormatName(style), value); + }); + }); + getTableFromCell(cells[0]).each(function (table) { + return fireTableModified(editor, table.dom, styleModified); + }); + }); + }; + + var registerQueryCommands = function (editor, actions, selections) { + var isRoot = getIsRoot(editor); + var lookupOnSelection = function (action) { + return getSelectionCell(getSelectionStart(editor)).bind(function (cell) { + return table(cell, isRoot).map(function (table) { + var targets = forMenu(selections, table, cell); + return action(table, targets); + }); + }).getOr(''); + }; + each$1({ + mceTableRowType: function () { + return lookupOnSelection(actions.getTableRowType); + }, + mceTableCellType: function () { + return lookupOnSelection(actions.getTableCellType); + }, + mceTableColType: function () { + return lookupOnSelection(actions.getTableColType); + } + }, function (func, name) { + return editor.addQueryValueHandler(name, func); + }); + }; + + var Clipboard = function () { + var rows = value(); + var cols = value(); + return { + getRows: rows.get, + setRows: function (r) { + r.fold(rows.clear, rows.set); + cols.clear(); + }, + clearRows: rows.clear, + getColumns: cols.get, + setColumns: function (c) { + c.fold(cols.clear, cols.set); + rows.clear(); + }, + clearColumns: cols.clear + }; + }; + + var genericBase = { + remove_similar: true, + inherit: false + }; + var cellBase = __assign({ selector: 'td,th' }, genericBase); + var cellFormats = { + tablecellbackgroundcolor: __assign({ styles: { backgroundColor: '%value' } }, cellBase), + tablecellverticalalign: __assign({ styles: { 'vertical-align': '%value' } }, cellBase), + tablecellbordercolor: __assign({ styles: { borderColor: '%value' } }, cellBase), + tablecellclass: __assign({ classes: ['%value'] }, cellBase), + tableclass: __assign({ + selector: 'table', + classes: ['%value'] + }, genericBase), + tablecellborderstyle: __assign({ styles: { borderStyle: '%value' } }, cellBase), + tablecellborderwidth: __assign({ styles: { borderWidth: '%value' } }, cellBase) + }; + var registerFormats = function (editor) { + editor.formatter.register(cellFormats); + }; + + var adt$5 = Adt.generate([ + { none: ['current'] }, + { first: ['current'] }, + { + middle: [ + 'current', + 'target' + ] + }, + { last: ['current'] } + ]); + var none = function (current) { + if (current === void 0) { + current = undefined; + } + return adt$5.none(current); + }; + var CellLocation = __assign(__assign({}, adt$5), { none: none }); + + var walk = function (all, current, index, direction, isEligible) { + if (isEligible === void 0) { + isEligible = always; + } + var forwards = direction === 1; + if (!forwards && index <= 0) { + return CellLocation.first(all[0]); + } else if (forwards && index >= all.length - 1) { + return CellLocation.last(all[all.length - 1]); + } else { + var newIndex = index + direction; + var elem = all[newIndex]; + return isEligible(elem) ? CellLocation.middle(current, elem) : walk(all, current, newIndex, direction, isEligible); + } + }; + var detect$1 = function (current, isRoot) { + return table(current, isRoot).bind(function (table) { + var all = cells$1(table); + var index = findIndex(all, function (x) { + return eq$1(current, x); + }); + return index.map(function (index) { + return { + index: index, + all: all + }; + }); + }); + }; + var next = function (current, isEligible, isRoot) { + var detection = detect$1(current, isRoot); + return detection.fold(function () { + return CellLocation.none(current); + }, function (info) { + return walk(info.all, current, info.index, 1, isEligible); + }); + }; + var prev = function (current, isEligible, isRoot) { + var detection = detect$1(current, isRoot); + return detection.fold(function () { + return CellLocation.none(); + }, function (info) { + return walk(info.all, current, info.index, -1, isEligible); + }); + }; + + var create$2 = function (start, soffset, finish, foffset) { + return { + start: start, + soffset: soffset, + finish: finish, + foffset: foffset + }; + }; + var SimRange = { create: create$2 }; + + var adt$4 = Adt.generate([ + { before: ['element'] }, + { + on: [ + 'element', + 'offset' + ] + }, + { after: ['element'] } + ]); + var cata$1 = function (subject, onBefore, onOn, onAfter) { + return subject.fold(onBefore, onOn, onAfter); + }; + var getStart$1 = function (situ) { + return situ.fold(identity, identity, identity); + }; + var before$2 = adt$4.before; + var on = adt$4.on; + var after$3 = adt$4.after; + var Situ = { + before: before$2, + on: on, + after: after$3, + cata: cata$1, + getStart: getStart$1 + }; + + var adt$3 = Adt.generate([ + { domRange: ['rng'] }, + { + relative: [ + 'startSitu', + 'finishSitu' + ] + }, + { + exact: [ + 'start', + 'soffset', + 'finish', + 'foffset' + ] + } + ]); + var exactFromRange = function (simRange) { + return adt$3.exact(simRange.start, simRange.soffset, simRange.finish, simRange.foffset); + }; + var getStart = function (selection) { + return selection.match({ + domRange: function (rng) { + return SugarElement.fromDom(rng.startContainer); + }, + relative: function (startSitu, _finishSitu) { + return Situ.getStart(startSitu); + }, + exact: function (start, _soffset, _finish, _foffset) { + return start; + } + }); + }; + var domRange = adt$3.domRange; + var relative = adt$3.relative; + var exact = adt$3.exact; + var getWin = function (selection) { + var start = getStart(selection); + return defaultView(start); + }; + var range = SimRange.create; + var SimSelection = { + domRange: domRange, + relative: relative, + exact: exact, + exactFromRange: exactFromRange, + getWin: getWin, + range: range + }; + + var selectNode = function (win, element) { + var rng = win.document.createRange(); + rng.selectNode(element.dom); + return rng; + }; + var selectNodeContents = function (win, element) { + var rng = win.document.createRange(); + selectNodeContentsUsing(rng, element); + return rng; + }; + var selectNodeContentsUsing = function (rng, element) { + return rng.selectNodeContents(element.dom); + }; + var setStart = function (rng, situ) { + situ.fold(function (e) { + rng.setStartBefore(e.dom); + }, function (e, o) { + rng.setStart(e.dom, o); + }, function (e) { + rng.setStartAfter(e.dom); + }); + }; + var setFinish = function (rng, situ) { + situ.fold(function (e) { + rng.setEndBefore(e.dom); + }, function (e, o) { + rng.setEnd(e.dom, o); + }, function (e) { + rng.setEndAfter(e.dom); + }); + }; + var relativeToNative = function (win, startSitu, finishSitu) { + var range = win.document.createRange(); + setStart(range, startSitu); + setFinish(range, finishSitu); + return range; + }; + var exactToNative = function (win, start, soffset, finish, foffset) { + var rng = win.document.createRange(); + rng.setStart(start.dom, soffset); + rng.setEnd(finish.dom, foffset); + return rng; + }; + var toRect = function (rect) { + return { + left: rect.left, + top: rect.top, + right: rect.right, + bottom: rect.bottom, + width: rect.width, + height: rect.height + }; + }; + var getFirstRect$1 = function (rng) { + var rects = rng.getClientRects(); + var rect = rects.length > 0 ? rects[0] : rng.getBoundingClientRect(); + return rect.width > 0 || rect.height > 0 ? Optional.some(rect).map(toRect) : Optional.none(); + }; + + var adt$2 = Adt.generate([ + { + ltr: [ + 'start', + 'soffset', + 'finish', + 'foffset' + ] + }, + { + rtl: [ + 'start', + 'soffset', + 'finish', + 'foffset' + ] + } + ]); + var fromRange = function (win, type, range) { + return type(SugarElement.fromDom(range.startContainer), range.startOffset, SugarElement.fromDom(range.endContainer), range.endOffset); + }; + var getRanges = function (win, selection) { + return selection.match({ + domRange: function (rng) { + return { + ltr: constant(rng), + rtl: Optional.none + }; + }, + relative: function (startSitu, finishSitu) { + return { + ltr: cached(function () { + return relativeToNative(win, startSitu, finishSitu); + }), + rtl: cached(function () { + return Optional.some(relativeToNative(win, finishSitu, startSitu)); + }) + }; + }, + exact: function (start, soffset, finish, foffset) { + return { + ltr: cached(function () { + return exactToNative(win, start, soffset, finish, foffset); + }), + rtl: cached(function () { + return Optional.some(exactToNative(win, finish, foffset, start, soffset)); + }) + }; + } + }); + }; + var doDiagnose = function (win, ranges) { + var rng = ranges.ltr(); + if (rng.collapsed) { + var reversed = ranges.rtl().filter(function (rev) { + return rev.collapsed === false; + }); + return reversed.map(function (rev) { + return adt$2.rtl(SugarElement.fromDom(rev.endContainer), rev.endOffset, SugarElement.fromDom(rev.startContainer), rev.startOffset); + }).getOrThunk(function () { + return fromRange(win, adt$2.ltr, rng); + }); + } else { + return fromRange(win, adt$2.ltr, rng); + } + }; + var diagnose = function (win, selection) { + var ranges = getRanges(win, selection); + return doDiagnose(win, ranges); + }; + var asLtrRange = function (win, selection) { + var diagnosis = diagnose(win, selection); + return diagnosis.match({ + ltr: function (start, soffset, finish, foffset) { + var rng = win.document.createRange(); + rng.setStart(start.dom, soffset); + rng.setEnd(finish.dom, foffset); + return rng; + }, + rtl: function (start, soffset, finish, foffset) { + var rng = win.document.createRange(); + rng.setStart(finish.dom, foffset); + rng.setEnd(start.dom, soffset); + return rng; + } + }); + }; + adt$2.ltr; + adt$2.rtl; + + var searchForPoint = function (rectForOffset, x, y, maxX, length) { + if (length === 0) { + return 0; + } else if (x === maxX) { + return length - 1; + } + var xDelta = maxX; + for (var i = 1; i < length; i++) { + var rect = rectForOffset(i); + var curDeltaX = Math.abs(x - rect.left); + if (y <= rect.bottom) { + if (y < rect.top || curDeltaX > xDelta) { + return i - 1; + } else { + xDelta = curDeltaX; + } + } + } + return 0; + }; + var inRect = function (rect, x, y) { + return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom; + }; + + var locateOffset = function (doc, textnode, x, y, rect) { + var rangeForOffset = function (o) { + var r = doc.dom.createRange(); + r.setStart(textnode.dom, o); + r.collapse(true); + return r; + }; + var rectForOffset = function (o) { + var r = rangeForOffset(o); + return r.getBoundingClientRect(); + }; + var length = get$9(textnode).length; + var offset = searchForPoint(rectForOffset, x, y, rect.right, length); + return rangeForOffset(offset); + }; + var locate$1 = function (doc, node, x, y) { + var r = doc.dom.createRange(); + r.selectNode(node.dom); + var rects = r.getClientRects(); + var foundRect = findMap(rects, function (rect) { + return inRect(rect, x, y) ? Optional.some(rect) : Optional.none(); + }); + return foundRect.map(function (rect) { + return locateOffset(doc, node, x, y, rect); + }); + }; + + var searchInChildren = function (doc, node, x, y) { + var r = doc.dom.createRange(); + var nodes = children$3(node); + return findMap(nodes, function (n) { + r.selectNode(n.dom); + return inRect(r.getBoundingClientRect(), x, y) ? locateNode(doc, n, x, y) : Optional.none(); + }); + }; + var locateNode = function (doc, node, x, y) { + return isText(node) ? locate$1(doc, node, x, y) : searchInChildren(doc, node, x, y); + }; + var locate = function (doc, node, x, y) { + var r = doc.dom.createRange(); + r.selectNode(node.dom); + var rect = r.getBoundingClientRect(); + var boundedX = Math.max(rect.left, Math.min(rect.right, x)); + var boundedY = Math.max(rect.top, Math.min(rect.bottom, y)); + return locateNode(doc, node, boundedX, boundedY); + }; + + var COLLAPSE_TO_LEFT = true; + var COLLAPSE_TO_RIGHT = false; + var getCollapseDirection = function (rect, x) { + return x - rect.left < rect.right - x ? COLLAPSE_TO_LEFT : COLLAPSE_TO_RIGHT; + }; + var createCollapsedNode = function (doc, target, collapseDirection) { + var r = doc.dom.createRange(); + r.selectNode(target.dom); + r.collapse(collapseDirection); + return r; + }; + var locateInElement = function (doc, node, x) { + var cursorRange = doc.dom.createRange(); + cursorRange.selectNode(node.dom); + var rect = cursorRange.getBoundingClientRect(); + var collapseDirection = getCollapseDirection(rect, x); + var f = collapseDirection === COLLAPSE_TO_LEFT ? first : last$1; + return f(node).map(function (target) { + return createCollapsedNode(doc, target, collapseDirection); + }); + }; + var locateInEmpty = function (doc, node, x) { + var rect = node.dom.getBoundingClientRect(); + var collapseDirection = getCollapseDirection(rect, x); + return Optional.some(createCollapsedNode(doc, node, collapseDirection)); + }; + var search = function (doc, node, x) { + var f = children$3(node).length === 0 ? locateInEmpty : locateInElement; + return f(doc, node, x); + }; + + var caretPositionFromPoint = function (doc, x, y) { + var _a, _b; + return Optional.from((_b = (_a = doc.dom).caretPositionFromPoint) === null || _b === void 0 ? void 0 : _b.call(_a, x, y)).bind(function (pos) { + if (pos.offsetNode === null) { + return Optional.none(); + } + var r = doc.dom.createRange(); + r.setStart(pos.offsetNode, pos.offset); + r.collapse(); + return Optional.some(r); + }); + }; + var caretRangeFromPoint = function (doc, x, y) { + var _a, _b; + return Optional.from((_b = (_a = doc.dom).caretRangeFromPoint) === null || _b === void 0 ? void 0 : _b.call(_a, x, y)); + }; + var searchTextNodes = function (doc, node, x, y) { + var r = doc.dom.createRange(); + r.selectNode(node.dom); + var rect = r.getBoundingClientRect(); + var boundedX = Math.max(rect.left, Math.min(rect.right, x)); + var boundedY = Math.max(rect.top, Math.min(rect.bottom, y)); + return locate(doc, node, boundedX, boundedY); + }; + var searchFromPoint = function (doc, x, y) { + return SugarElement.fromPoint(doc, x, y).bind(function (elem) { + var fallback = function () { + return search(doc, elem, x); + }; + return children$3(elem).length === 0 ? fallback() : searchTextNodes(doc, elem, x, y).orThunk(fallback); + }); + }; + var availableSearch = function () { + if (document.caretPositionFromPoint) { + return caretPositionFromPoint; + } else if (document.caretRangeFromPoint) { + return caretRangeFromPoint; + } else { + return searchFromPoint; + } + }(); + var fromPoint = function (win, x, y) { + var doc = SugarElement.fromDom(win.document); + return availableSearch(doc, x, y).map(function (rng) { + return SimRange.create(SugarElement.fromDom(rng.startContainer), rng.startOffset, SugarElement.fromDom(rng.endContainer), rng.endOffset); + }); + }; + + var beforeSpecial = function (element, offset) { + var name$1 = name(element); + if ('input' === name$1) { + return Situ.after(element); + } else if (!contains$2([ + 'br', + 'img' + ], name$1)) { + return Situ.on(element, offset); + } else { + return offset === 0 ? Situ.before(element) : Situ.after(element); + } + }; + var preprocessRelative = function (startSitu, finishSitu) { + var start = startSitu.fold(Situ.before, beforeSpecial, Situ.after); + var finish = finishSitu.fold(Situ.before, beforeSpecial, Situ.after); + return SimSelection.relative(start, finish); + }; + var preprocessExact = function (start, soffset, finish, foffset) { + var startSitu = beforeSpecial(start, soffset); + var finishSitu = beforeSpecial(finish, foffset); + return SimSelection.relative(startSitu, finishSitu); + }; + var preprocess = function (selection) { + return selection.match({ + domRange: function (rng) { + var start = SugarElement.fromDom(rng.startContainer); + var finish = SugarElement.fromDom(rng.endContainer); + return preprocessExact(start, rng.startOffset, finish, rng.endOffset); + }, + relative: preprocessRelative, + exact: preprocessExact + }); + }; + + var makeRange = function (start, soffset, finish, foffset) { + var doc = owner(start); + var rng = doc.dom.createRange(); + rng.setStart(start.dom, soffset); + rng.setEnd(finish.dom, foffset); + return rng; + }; + var after$2 = function (start, soffset, finish, foffset) { + var r = makeRange(start, soffset, finish, foffset); + var same = eq$1(start, finish) && soffset === foffset; + return r.collapsed && !same; + }; + + var getNativeSelection = function (win) { + return Optional.from(win.getSelection()); + }; + var doSetNativeRange = function (win, rng) { + getNativeSelection(win).each(function (selection) { + selection.removeAllRanges(); + selection.addRange(rng); + }); + }; + var doSetRange = function (win, start, soffset, finish, foffset) { + var rng = exactToNative(win, start, soffset, finish, foffset); + doSetNativeRange(win, rng); + }; + var setLegacyRtlRange = function (win, selection, start, soffset, finish, foffset) { + selection.collapse(start.dom, soffset); + selection.extend(finish.dom, foffset); + }; + var setRangeFromRelative = function (win, relative) { + return diagnose(win, relative).match({ + ltr: function (start, soffset, finish, foffset) { + doSetRange(win, start, soffset, finish, foffset); + }, + rtl: function (start, soffset, finish, foffset) { + getNativeSelection(win).each(function (selection) { + if (selection.setBaseAndExtent) { + selection.setBaseAndExtent(start.dom, soffset, finish.dom, foffset); + } else if (selection.extend) { + try { + setLegacyRtlRange(win, selection, start, soffset, finish, foffset); + } catch (e) { + doSetRange(win, finish, foffset, start, soffset); + } + } else { + doSetRange(win, finish, foffset, start, soffset); + } + }); + } + }); + }; + var setExact = function (win, start, soffset, finish, foffset) { + var relative = preprocessExact(start, soffset, finish, foffset); + setRangeFromRelative(win, relative); + }; + var setRelative = function (win, startSitu, finishSitu) { + var relative = preprocessRelative(startSitu, finishSitu); + setRangeFromRelative(win, relative); + }; + var toNative = function (selection) { + var win = SimSelection.getWin(selection).dom; + var getDomRange = function (start, soffset, finish, foffset) { + return exactToNative(win, start, soffset, finish, foffset); + }; + var filtered = preprocess(selection); + return diagnose(win, filtered).match({ + ltr: getDomRange, + rtl: getDomRange + }); + }; + var readRange = function (selection) { + if (selection.rangeCount > 0) { + var firstRng = selection.getRangeAt(0); + var lastRng = selection.getRangeAt(selection.rangeCount - 1); + return Optional.some(SimRange.create(SugarElement.fromDom(firstRng.startContainer), firstRng.startOffset, SugarElement.fromDom(lastRng.endContainer), lastRng.endOffset)); + } else { + return Optional.none(); + } + }; + var doGetExact = function (selection) { + if (selection.anchorNode === null || selection.focusNode === null) { + return readRange(selection); + } else { + var anchor = SugarElement.fromDom(selection.anchorNode); + var focus_1 = SugarElement.fromDom(selection.focusNode); + return after$2(anchor, selection.anchorOffset, focus_1, selection.focusOffset) ? Optional.some(SimRange.create(anchor, selection.anchorOffset, focus_1, selection.focusOffset)) : readRange(selection); + } + }; + var setToElement = function (win, element, selectNodeContents$1) { + if (selectNodeContents$1 === void 0) { + selectNodeContents$1 = true; + } + var rngGetter = selectNodeContents$1 ? selectNodeContents : selectNode; + var rng = rngGetter(win, element); + doSetNativeRange(win, rng); + }; + var getExact = function (win) { + return getNativeSelection(win).filter(function (sel) { + return sel.rangeCount > 0; + }).bind(doGetExact); + }; + var get$1 = function (win) { + return getExact(win).map(function (range) { + return SimSelection.exact(range.start, range.soffset, range.finish, range.foffset); + }); + }; + var getFirstRect = function (win, selection) { + var rng = asLtrRange(win, selection); + return getFirstRect$1(rng); + }; + var getAtPoint = function (win, x, y) { + return fromPoint(win, x, y); + }; + var clear = function (win) { + getNativeSelection(win).each(function (selection) { + return selection.removeAllRanges(); + }); + }; + + var global$1 = tinymce.util.Tools.resolve('tinymce.util.VK'); + + var forward = function (editor, isRoot, cell) { + return go$1(editor, isRoot, next(cell, isEditable$1)); + }; + var backward = function (editor, isRoot, cell) { + return go$1(editor, isRoot, prev(cell, isEditable$1)); + }; + var getCellFirstCursorPosition = function (editor, cell) { + var selection = SimSelection.exact(cell, 0, cell, 0); + return toNative(selection); + }; + var go$1 = function (editor, isRoot, cell) { + return cell.fold(Optional.none, Optional.none, function (current, next) { + return first(next).map(function (cell) { + return getCellFirstCursorPosition(editor, cell); + }); + }, function (current) { + editor.execCommand('mceTableInsertRowAfter'); + return forward(editor, isRoot, current); + }); + }; + var rootElements = [ + 'table', + 'li', + 'dl' + ]; + var handle$1 = function (event, editor, cellSelection) { + if (event.keyCode === global$1.TAB) { + var body_1 = getBody(editor); + var isRoot_1 = function (element) { + var name$1 = name(element); + return eq$1(element, body_1) || contains$2(rootElements, name$1); + }; + var rng = editor.selection.getRng(); + var container = SugarElement.fromDom(event.shiftKey ? rng.startContainer : rng.endContainer); + cell(container, isRoot_1).each(function (cell) { + event.preventDefault(); + table(cell, isRoot_1).each(cellSelection.clear); + editor.selection.collapse(event.shiftKey); + var navigation = event.shiftKey ? backward : forward; + var rng = navigation(editor, isRoot_1, cell); + rng.each(function (range) { + editor.selection.setRng(range); + }); + }); + } + }; + + var create$1 = function (selection, kill) { + return { + selection: selection, + kill: kill + }; + }; + var Response = { create: create$1 }; + + var create = function (start, soffset, finish, foffset) { + return { + start: Situ.on(start, soffset), + finish: Situ.on(finish, foffset) + }; + }; + var Situs = { create: create }; + + var convertToRange = function (win, selection) { + var rng = asLtrRange(win, selection); + return SimRange.create(SugarElement.fromDom(rng.startContainer), rng.startOffset, SugarElement.fromDom(rng.endContainer), rng.endOffset); + }; + var makeSitus = Situs.create; + + var sync = function (container, isRoot, start, soffset, finish, foffset, selectRange) { + if (!(eq$1(start, finish) && soffset === foffset)) { + return closest$1(start, 'td,th', isRoot).bind(function (s) { + return closest$1(finish, 'td,th', isRoot).bind(function (f) { + return detect(container, isRoot, s, f, selectRange); + }); + }); + } else { + return Optional.none(); + } + }; + var detect = function (container, isRoot, start, finish, selectRange) { + if (!eq$1(start, finish)) { + return identify(start, finish, isRoot).bind(function (cellSel) { + var boxes = cellSel.boxes.getOr([]); + if (boxes.length > 1) { + selectRange(container, boxes, cellSel.start, cellSel.finish); + return Optional.some(Response.create(Optional.some(makeSitus(start, 0, start, getEnd(start))), true)); + } else { + return Optional.none(); + } + }); + } else { + return Optional.none(); + } + }; + var update = function (rows, columns, container, selected, annotations) { + var updateSelection = function (newSels) { + annotations.clearBeforeUpdate(container); + annotations.selectRange(container, newSels.boxes, newSels.start, newSels.finish); + return newSels.boxes; + }; + return shiftSelection(selected, rows, columns, annotations.firstSelectedSelector, annotations.lastSelectedSelector).map(updateSelection); + }; + + var traverse = function (item, mode) { + return { + item: item, + mode: mode + }; + }; + var backtrack = function (universe, item, _direction, transition) { + if (transition === void 0) { + transition = sidestep; + } + return universe.property().parent(item).map(function (p) { + return traverse(p, transition); + }); + }; + var sidestep = function (universe, item, direction, transition) { + if (transition === void 0) { + transition = advance; + } + return direction.sibling(universe, item).map(function (p) { + return traverse(p, transition); + }); + }; + var advance = function (universe, item, direction, transition) { + if (transition === void 0) { + transition = advance; + } + var children = universe.property().children(item); + var result = direction.first(children); + return result.map(function (r) { + return traverse(r, transition); + }); + }; + var successors = [ + { + current: backtrack, + next: sidestep, + fallback: Optional.none() + }, + { + current: sidestep, + next: advance, + fallback: Optional.some(backtrack) + }, + { + current: advance, + next: advance, + fallback: Optional.some(sidestep) + } + ]; + var go = function (universe, item, mode, direction, rules) { + if (rules === void 0) { + rules = successors; + } + var ruleOpt = find$1(rules, function (succ) { + return succ.current === mode; + }); + return ruleOpt.bind(function (rule) { + return rule.current(universe, item, direction, rule.next).orThunk(function () { + return rule.fallback.bind(function (fb) { + return go(universe, item, fb, direction); + }); + }); + }); + }; + + var left$1 = function () { + var sibling = function (universe, item) { + return universe.query().prevSibling(item); + }; + var first = function (children) { + return children.length > 0 ? Optional.some(children[children.length - 1]) : Optional.none(); + }; + return { + sibling: sibling, + first: first + }; + }; + var right$1 = function () { + var sibling = function (universe, item) { + return universe.query().nextSibling(item); + }; + var first = function (children) { + return children.length > 0 ? Optional.some(children[0]) : Optional.none(); + }; + return { + sibling: sibling, + first: first + }; + }; + var Walkers = { + left: left$1, + right: right$1 + }; + + var hone = function (universe, item, predicate, mode, direction, isRoot) { + var next = go(universe, item, mode, direction); + return next.bind(function (n) { + if (isRoot(n.item)) { + return Optional.none(); + } else { + return predicate(n.item) ? Optional.some(n.item) : hone(universe, n.item, predicate, n.mode, direction, isRoot); + } + }); + }; + var left = function (universe, item, predicate, isRoot) { + return hone(universe, item, predicate, sidestep, Walkers.left(), isRoot); + }; + var right = function (universe, item, predicate, isRoot) { + return hone(universe, item, predicate, sidestep, Walkers.right(), isRoot); + }; + + var isLeaf = function (universe) { + return function (element) { + return universe.property().children(element).length === 0; + }; + }; + var before$1 = function (universe, item, isRoot) { + return seekLeft$1(universe, item, isLeaf(universe), isRoot); + }; + var after$1 = function (universe, item, isRoot) { + return seekRight$1(universe, item, isLeaf(universe), isRoot); + }; + var seekLeft$1 = left; + var seekRight$1 = right; + + var universe = DomUniverse(); + var before = function (element, isRoot) { + return before$1(universe, element, isRoot); + }; + var after = function (element, isRoot) { + return after$1(universe, element, isRoot); + }; + var seekLeft = function (element, predicate, isRoot) { + return seekLeft$1(universe, element, predicate, isRoot); + }; + var seekRight = function (element, predicate, isRoot) { + return seekRight$1(universe, element, predicate, isRoot); + }; + + var ancestor = function (scope, predicate, isRoot) { + return ancestor$2(scope, predicate, isRoot).isSome(); + }; + + var adt$1 = Adt.generate([ + { none: ['message'] }, + { success: [] }, + { failedUp: ['cell'] }, + { failedDown: ['cell'] } + ]); + var isOverlapping = function (bridge, before, after) { + var beforeBounds = bridge.getRect(before); + var afterBounds = bridge.getRect(after); + return afterBounds.right > beforeBounds.left && afterBounds.left < beforeBounds.right; + }; + var isRow = function (elem) { + return closest$1(elem, 'tr'); + }; + var verify = function (bridge, before, beforeOffset, after, afterOffset, failure, isRoot) { + return closest$1(after, 'td,th', isRoot).bind(function (afterCell) { + return closest$1(before, 'td,th', isRoot).map(function (beforeCell) { + if (!eq$1(afterCell, beforeCell)) { + return sharedOne(isRow, [ + afterCell, + beforeCell + ]).fold(function () { + return isOverlapping(bridge, beforeCell, afterCell) ? adt$1.success() : failure(beforeCell); + }, function (_sharedRow) { + return failure(beforeCell); + }); + } else { + return eq$1(after, afterCell) && getEnd(afterCell) === afterOffset ? failure(beforeCell) : adt$1.none('in same cell'); + } + }); + }).getOr(adt$1.none('default')); + }; + var cata = function (subject, onNone, onSuccess, onFailedUp, onFailedDown) { + return subject.fold(onNone, onSuccess, onFailedUp, onFailedDown); + }; + var BeforeAfter = __assign(__assign({}, adt$1), { + verify: verify, + cata: cata + }); + + var inParent = function (parent, children, element, index) { + return { + parent: parent, + children: children, + element: element, + index: index + }; + }; + var indexInParent = function (element) { + return parent(element).bind(function (parent) { + var children = children$3(parent); + return indexOf(children, element).map(function (index) { + return inParent(parent, children, element, index); + }); + }); + }; + var indexOf = function (elements, element) { + return findIndex(elements, curry(eq$1, element)); + }; + + var isBr = function (elem) { + return name(elem) === 'br'; + }; + var gatherer = function (cand, gather, isRoot) { + return gather(cand, isRoot).bind(function (target) { + return isText(target) && get$9(target).trim().length === 0 ? gatherer(target, gather, isRoot) : Optional.some(target); + }); + }; + var handleBr = function (isRoot, element, direction) { + return direction.traverse(element).orThunk(function () { + return gatherer(element, direction.gather, isRoot); + }).map(direction.relative); + }; + var findBr = function (element, offset) { + return child$3(element, offset).filter(isBr).orThunk(function () { + return child$3(element, offset - 1).filter(isBr); + }); + }; + var handleParent = function (isRoot, element, offset, direction) { + return findBr(element, offset).bind(function (br) { + return direction.traverse(br).fold(function () { + return gatherer(br, direction.gather, isRoot).map(direction.relative); + }, function (adjacent) { + return indexInParent(adjacent).map(function (info) { + return Situ.on(info.parent, info.index); + }); + }); + }); + }; + var tryBr = function (isRoot, element, offset, direction) { + var target = isBr(element) ? handleBr(isRoot, element, direction) : handleParent(isRoot, element, offset, direction); + return target.map(function (tgt) { + return { + start: tgt, + finish: tgt + }; + }); + }; + var process = function (analysis) { + return BeforeAfter.cata(analysis, function (_message) { + return Optional.none(); + }, function () { + return Optional.none(); + }, function (cell) { + return Optional.some(point(cell, 0)); + }, function (cell) { + return Optional.some(point(cell, getEnd(cell))); + }); + }; + + var moveDown = function (caret, amount) { + return { + left: caret.left, + top: caret.top + amount, + right: caret.right, + bottom: caret.bottom + amount + }; + }; + var moveUp = function (caret, amount) { + return { + left: caret.left, + top: caret.top - amount, + right: caret.right, + bottom: caret.bottom - amount + }; + }; + var translate = function (caret, xDelta, yDelta) { + return { + left: caret.left + xDelta, + top: caret.top + yDelta, + right: caret.right + xDelta, + bottom: caret.bottom + yDelta + }; + }; + var getTop = function (caret) { + return caret.top; + }; + var getBottom = function (caret) { + return caret.bottom; + }; + + var getPartialBox = function (bridge, element, offset) { + if (offset >= 0 && offset < getEnd(element)) { + return bridge.getRangedRect(element, offset, element, offset + 1); + } else if (offset > 0) { + return bridge.getRangedRect(element, offset - 1, element, offset); + } + return Optional.none(); + }; + var toCaret = function (rect) { + return { + left: rect.left, + top: rect.top, + right: rect.right, + bottom: rect.bottom + }; + }; + var getElemBox = function (bridge, element) { + return Optional.some(bridge.getRect(element)); + }; + var getBoxAt = function (bridge, element, offset) { + if (isElement(element)) { + return getElemBox(bridge, element).map(toCaret); + } else if (isText(element)) { + return getPartialBox(bridge, element, offset).map(toCaret); + } else { + return Optional.none(); + } + }; + var getEntireBox = function (bridge, element) { + if (isElement(element)) { + return getElemBox(bridge, element).map(toCaret); + } else if (isText(element)) { + return bridge.getRangedRect(element, 0, element, getEnd(element)).map(toCaret); + } else { + return Optional.none(); + } + }; + + var JUMP_SIZE = 5; + var NUM_RETRIES = 100; + var adt = Adt.generate([ + { none: [] }, + { retry: ['caret'] } + ]); + var isOutside = function (caret, box) { + return caret.left < box.left || Math.abs(box.right - caret.left) < 1 || caret.left > box.right; + }; + var inOutsideBlock = function (bridge, element, caret) { + return closest$2(element, isBlock).fold(never, function (cell) { + return getEntireBox(bridge, cell).exists(function (box) { + return isOutside(caret, box); + }); + }); + }; + var adjustDown = function (bridge, element, guessBox, original, caret) { + var lowerCaret = moveDown(caret, JUMP_SIZE); + if (Math.abs(guessBox.bottom - original.bottom) < 1) { + return adt.retry(lowerCaret); + } else if (guessBox.top > caret.bottom) { + return adt.retry(lowerCaret); + } else if (guessBox.top === caret.bottom) { + return adt.retry(moveDown(caret, 1)); + } else { + return inOutsideBlock(bridge, element, caret) ? adt.retry(translate(lowerCaret, JUMP_SIZE, 0)) : adt.none(); + } + }; + var adjustUp = function (bridge, element, guessBox, original, caret) { + var higherCaret = moveUp(caret, JUMP_SIZE); + if (Math.abs(guessBox.top - original.top) < 1) { + return adt.retry(higherCaret); + } else if (guessBox.bottom < caret.top) { + return adt.retry(higherCaret); + } else if (guessBox.bottom === caret.top) { + return adt.retry(moveUp(caret, 1)); + } else { + return inOutsideBlock(bridge, element, caret) ? adt.retry(translate(higherCaret, JUMP_SIZE, 0)) : adt.none(); + } + }; + var upMovement = { + point: getTop, + adjuster: adjustUp, + move: moveUp, + gather: before + }; + var downMovement = { + point: getBottom, + adjuster: adjustDown, + move: moveDown, + gather: after + }; + var isAtTable = function (bridge, x, y) { + return bridge.elementFromPoint(x, y).filter(function (elm) { + return name(elm) === 'table'; + }).isSome(); + }; + var adjustForTable = function (bridge, movement, original, caret, numRetries) { + return adjustTil(bridge, movement, original, movement.move(caret, JUMP_SIZE), numRetries); + }; + var adjustTil = function (bridge, movement, original, caret, numRetries) { + if (numRetries === 0) { + return Optional.some(caret); + } + if (isAtTable(bridge, caret.left, movement.point(caret))) { + return adjustForTable(bridge, movement, original, caret, numRetries - 1); + } + return bridge.situsFromPoint(caret.left, movement.point(caret)).bind(function (guess) { + return guess.start.fold(Optional.none, function (element) { + return getEntireBox(bridge, element).bind(function (guessBox) { + return movement.adjuster(bridge, element, guessBox, original, caret).fold(Optional.none, function (newCaret) { + return adjustTil(bridge, movement, original, newCaret, numRetries - 1); + }); + }).orThunk(function () { + return Optional.some(caret); + }); + }, Optional.none); + }); + }; + var ieTryDown = function (bridge, caret) { + return bridge.situsFromPoint(caret.left, caret.bottom + JUMP_SIZE); + }; + var ieTryUp = function (bridge, caret) { + return bridge.situsFromPoint(caret.left, caret.top - JUMP_SIZE); + }; + var checkScroll = function (movement, adjusted, bridge) { + if (movement.point(adjusted) > bridge.getInnerHeight()) { + return Optional.some(movement.point(adjusted) - bridge.getInnerHeight()); + } else if (movement.point(adjusted) < 0) { + return Optional.some(-movement.point(adjusted)); + } else { + return Optional.none(); + } + }; + var retry = function (movement, bridge, caret) { + var moved = movement.move(caret, JUMP_SIZE); + var adjusted = adjustTil(bridge, movement, caret, moved, NUM_RETRIES).getOr(moved); + return checkScroll(movement, adjusted, bridge).fold(function () { + return bridge.situsFromPoint(adjusted.left, movement.point(adjusted)); + }, function (delta) { + bridge.scrollBy(0, delta); + return bridge.situsFromPoint(adjusted.left, movement.point(adjusted) - delta); + }); + }; + var Retries = { + tryUp: curry(retry, upMovement), + tryDown: curry(retry, downMovement), + ieTryUp: ieTryUp, + ieTryDown: ieTryDown, + getJumpSize: constant(JUMP_SIZE) + }; + + var MAX_RETRIES = 20; + var findSpot = function (bridge, isRoot, direction) { + return bridge.getSelection().bind(function (sel) { + return tryBr(isRoot, sel.finish, sel.foffset, direction).fold(function () { + return Optional.some(point(sel.finish, sel.foffset)); + }, function (brNeighbour) { + var range = bridge.fromSitus(brNeighbour); + var analysis = BeforeAfter.verify(bridge, sel.finish, sel.foffset, range.finish, range.foffset, direction.failure, isRoot); + return process(analysis); + }); + }); + }; + var scan = function (bridge, isRoot, element, offset, direction, numRetries) { + if (numRetries === 0) { + return Optional.none(); + } + return tryCursor(bridge, isRoot, element, offset, direction).bind(function (situs) { + var range = bridge.fromSitus(situs); + var analysis = BeforeAfter.verify(bridge, element, offset, range.finish, range.foffset, direction.failure, isRoot); + return BeforeAfter.cata(analysis, function () { + return Optional.none(); + }, function () { + return Optional.some(situs); + }, function (cell) { + if (eq$1(element, cell) && offset === 0) { + return tryAgain(bridge, element, offset, moveUp, direction); + } else { + return scan(bridge, isRoot, cell, 0, direction, numRetries - 1); + } + }, function (cell) { + if (eq$1(element, cell) && offset === getEnd(cell)) { + return tryAgain(bridge, element, offset, moveDown, direction); + } else { + return scan(bridge, isRoot, cell, getEnd(cell), direction, numRetries - 1); + } + }); + }); + }; + var tryAgain = function (bridge, element, offset, move, direction) { + return getBoxAt(bridge, element, offset).bind(function (box) { + return tryAt(bridge, direction, move(box, Retries.getJumpSize())); + }); + }; + var tryAt = function (bridge, direction, box) { + var browser = detect$3().browser; + if (browser.isChrome() || browser.isSafari() || browser.isFirefox() || browser.isEdge()) { + return direction.otherRetry(bridge, box); + } else if (browser.isIE()) { + return direction.ieRetry(bridge, box); + } else { + return Optional.none(); + } + }; + var tryCursor = function (bridge, isRoot, element, offset, direction) { + return getBoxAt(bridge, element, offset).bind(function (box) { + return tryAt(bridge, direction, box); + }); + }; + var handle = function (bridge, isRoot, direction) { + return findSpot(bridge, isRoot, direction).bind(function (spot) { + return scan(bridge, isRoot, spot.element, spot.offset, direction, MAX_RETRIES).map(bridge.fromSitus); + }); + }; + + var inSameTable = function (elem, table) { + return ancestor(elem, function (e) { + return parent(e).exists(function (p) { + return eq$1(p, table); + }); + }); + }; + var simulate = function (bridge, isRoot, direction, initial, anchor) { + return closest$1(initial, 'td,th', isRoot).bind(function (start) { + return closest$1(start, 'table', isRoot).bind(function (table) { + if (!inSameTable(anchor, table)) { + return Optional.none(); + } + return handle(bridge, isRoot, direction).bind(function (range) { + return closest$1(range.finish, 'td,th', isRoot).map(function (finish) { + return { + start: start, + finish: finish, + range: range + }; + }); + }); + }); + }); + }; + var navigate = function (bridge, isRoot, direction, initial, anchor, precheck) { + if (detect$3().browser.isIE()) { + return Optional.none(); + } else { + return precheck(initial, isRoot).orThunk(function () { + return simulate(bridge, isRoot, direction, initial, anchor).map(function (info) { + var range = info.range; + return Response.create(Optional.some(makeSitus(range.start, range.soffset, range.finish, range.foffset)), true); + }); + }); + } + }; + var firstUpCheck = function (initial, isRoot) { + return closest$1(initial, 'tr', isRoot).bind(function (startRow) { + return closest$1(startRow, 'table', isRoot).bind(function (table) { + var rows = descendants(table, 'tr'); + if (eq$1(startRow, rows[0])) { + return seekLeft(table, function (element) { + return last$1(element).isSome(); + }, isRoot).map(function (last) { + var lastOffset = getEnd(last); + return Response.create(Optional.some(makeSitus(last, lastOffset, last, lastOffset)), true); + }); + } else { + return Optional.none(); + } + }); + }); + }; + var lastDownCheck = function (initial, isRoot) { + return closest$1(initial, 'tr', isRoot).bind(function (startRow) { + return closest$1(startRow, 'table', isRoot).bind(function (table) { + var rows = descendants(table, 'tr'); + if (eq$1(startRow, rows[rows.length - 1])) { + return seekRight(table, function (element) { + return first(element).isSome(); + }, isRoot).map(function (first) { + return Response.create(Optional.some(makeSitus(first, 0, first, 0)), true); + }); + } else { + return Optional.none(); + } + }); + }); + }; + var select = function (bridge, container, isRoot, direction, initial, anchor, selectRange) { + return simulate(bridge, isRoot, direction, initial, anchor).bind(function (info) { + return detect(container, isRoot, info.start, info.finish, selectRange); + }); + }; + + var findCell = function (target, isRoot) { + return closest$1(target, 'td,th', isRoot); + }; + var MouseSelection = function (bridge, container, isRoot, annotations) { + var cursor = value(); + var clearstate = cursor.clear; + var applySelection = function (event) { + cursor.on(function (start) { + annotations.clearBeforeUpdate(container); + findCell(event.target, isRoot).each(function (finish) { + identify(start, finish, isRoot).each(function (cellSel) { + var boxes = cellSel.boxes.getOr([]); + if (boxes.length === 1) { + var singleCell = boxes[0]; + var isNonEditableCell = getRaw(singleCell) === 'false'; + var isCellClosestContentEditable = is(closest(event.target), singleCell, eq$1); + if (isNonEditableCell && isCellClosestContentEditable) { + annotations.selectRange(container, boxes, singleCell, singleCell); + bridge.selectContents(singleCell); + } + } else if (boxes.length > 1) { + annotations.selectRange(container, boxes, cellSel.start, cellSel.finish); + bridge.selectContents(finish); + } + }); + }); + }); + }; + var mousedown = function (event) { + annotations.clear(container); + findCell(event.target, isRoot).each(cursor.set); + }; + var mouseover = function (event) { + applySelection(event); + }; + var mouseup = function (event) { + applySelection(event); + clearstate(); + }; + return { + clearstate: clearstate, + mousedown: mousedown, + mouseover: mouseover, + mouseup: mouseup + }; + }; + + var down = { + traverse: nextSibling, + gather: after, + relative: Situ.before, + otherRetry: Retries.tryDown, + ieRetry: Retries.ieTryDown, + failure: BeforeAfter.failedDown + }; + var up = { + traverse: prevSibling, + gather: before, + relative: Situ.before, + otherRetry: Retries.tryUp, + ieRetry: Retries.ieTryUp, + failure: BeforeAfter.failedUp + }; + + var isKey = function (key) { + return function (keycode) { + return keycode === key; + }; + }; + var isUp = isKey(38); + var isDown = isKey(40); + var isNavigation = function (keycode) { + return keycode >= 37 && keycode <= 40; + }; + var ltr = { + isBackward: isKey(37), + isForward: isKey(39) + }; + var rtl = { + isBackward: isKey(39), + isForward: isKey(37) + }; + + var get = function (_DOC) { + var doc = _DOC !== undefined ? _DOC.dom : document; + var x = doc.body.scrollLeft || doc.documentElement.scrollLeft; + var y = doc.body.scrollTop || doc.documentElement.scrollTop; + return SugarPosition(x, y); + }; + var by = function (x, y, _DOC) { + var doc = _DOC !== undefined ? _DOC.dom : document; + var win = doc.defaultView; + if (win) { + win.scrollBy(x, y); + } + }; + + var WindowBridge = function (win) { + var elementFromPoint = function (x, y) { + return SugarElement.fromPoint(SugarElement.fromDom(win.document), x, y); + }; + var getRect = function (element) { + return element.dom.getBoundingClientRect(); + }; + var getRangedRect = function (start, soffset, finish, foffset) { + var sel = SimSelection.exact(start, soffset, finish, foffset); + return getFirstRect(win, sel); + }; + var getSelection = function () { + return get$1(win).map(function (exactAdt) { + return convertToRange(win, exactAdt); + }); + }; + var fromSitus = function (situs) { + var relative = SimSelection.relative(situs.start, situs.finish); + return convertToRange(win, relative); + }; + var situsFromPoint = function (x, y) { + return getAtPoint(win, x, y).map(function (exact) { + return Situs.create(exact.start, exact.soffset, exact.finish, exact.foffset); + }); + }; + var clearSelection = function () { + clear(win); + }; + var collapseSelection = function (toStart) { + if (toStart === void 0) { + toStart = false; + } + get$1(win).each(function (sel) { + return sel.fold(function (rng) { + return rng.collapse(toStart); + }, function (startSitu, finishSitu) { + var situ = toStart ? startSitu : finishSitu; + setRelative(win, situ, situ); + }, function (start, soffset, finish, foffset) { + var node = toStart ? start : finish; + var offset = toStart ? soffset : foffset; + setExact(win, node, offset, node, offset); + }); + }); + }; + var selectNode = function (element) { + setToElement(win, element, false); + }; + var selectContents = function (element) { + setToElement(win, element); + }; + var setSelection = function (sel) { + setExact(win, sel.start, sel.soffset, sel.finish, sel.foffset); + }; + var setRelativeSelection = function (start, finish) { + setRelative(win, start, finish); + }; + var getInnerHeight = function () { + return win.innerHeight; + }; + var getScrollY = function () { + var pos = get(SugarElement.fromDom(win.document)); + return pos.top; + }; + var scrollBy = function (x, y) { + by(x, y, SugarElement.fromDom(win.document)); + }; + return { + elementFromPoint: elementFromPoint, + getRect: getRect, + getRangedRect: getRangedRect, + getSelection: getSelection, + fromSitus: fromSitus, + situsFromPoint: situsFromPoint, + clearSelection: clearSelection, + collapseSelection: collapseSelection, + setSelection: setSelection, + setRelativeSelection: setRelativeSelection, + selectNode: selectNode, + selectContents: selectContents, + getInnerHeight: getInnerHeight, + getScrollY: getScrollY, + scrollBy: scrollBy + }; + }; + + var rc = function (rows, cols) { + return { + rows: rows, + cols: cols + }; + }; + var mouse = function (win, container, isRoot, annotations) { + var bridge = WindowBridge(win); + var handlers = MouseSelection(bridge, container, isRoot, annotations); + return { + clearstate: handlers.clearstate, + mousedown: handlers.mousedown, + mouseover: handlers.mouseover, + mouseup: handlers.mouseup + }; + }; + var keyboard = function (win, container, isRoot, annotations) { + var bridge = WindowBridge(win); + var clearToNavigate = function () { + annotations.clear(container); + return Optional.none(); + }; + var keydown = function (event, start, soffset, finish, foffset, direction) { + var realEvent = event.raw; + var keycode = realEvent.which; + var shiftKey = realEvent.shiftKey === true; + var handler = retrieve$1(container, annotations.selectedSelector).fold(function () { + if (isNavigation(keycode) && !shiftKey) { + annotations.clearBeforeUpdate(container); + } + if (isDown(keycode) && shiftKey) { + return curry(select, bridge, container, isRoot, down, finish, start, annotations.selectRange); + } else if (isUp(keycode) && shiftKey) { + return curry(select, bridge, container, isRoot, up, finish, start, annotations.selectRange); + } else if (isDown(keycode)) { + return curry(navigate, bridge, isRoot, down, finish, start, lastDownCheck); + } else if (isUp(keycode)) { + return curry(navigate, bridge, isRoot, up, finish, start, firstUpCheck); + } else { + return Optional.none; + } + }, function (selected) { + var update$1 = function (attempts) { + return function () { + var navigation = findMap(attempts, function (delta) { + return update(delta.rows, delta.cols, container, selected, annotations); + }); + return navigation.fold(function () { + return getEdges(container, annotations.firstSelectedSelector, annotations.lastSelectedSelector).map(function (edges) { + var relative = isDown(keycode) || direction.isForward(keycode) ? Situ.after : Situ.before; + bridge.setRelativeSelection(Situ.on(edges.first, 0), relative(edges.table)); + annotations.clear(container); + return Response.create(Optional.none(), true); + }); + }, function (_) { + return Optional.some(Response.create(Optional.none(), true)); + }); + }; + }; + if (isDown(keycode) && shiftKey) { + return update$1([rc(+1, 0)]); + } else if (isUp(keycode) && shiftKey) { + return update$1([rc(-1, 0)]); + } else if (direction.isBackward(keycode) && shiftKey) { + return update$1([ + rc(0, -1), + rc(-1, 0) + ]); + } else if (direction.isForward(keycode) && shiftKey) { + return update$1([ + rc(0, +1), + rc(+1, 0) + ]); + } else if (isNavigation(keycode) && !shiftKey) { + return clearToNavigate; + } else { + return Optional.none; + } + }); + return handler(); + }; + var keyup = function (event, start, soffset, finish, foffset) { + return retrieve$1(container, annotations.selectedSelector).fold(function () { + var realEvent = event.raw; + var keycode = realEvent.which; + var shiftKey = realEvent.shiftKey === true; + if (!shiftKey) { + return Optional.none(); + } + if (isNavigation(keycode)) { + return sync(container, isRoot, start, soffset, finish, foffset, annotations.selectRange); + } else { + return Optional.none(); + } + }, Optional.none); + }; + return { + keydown: keydown, + keyup: keyup + }; + }; + var external = function (win, container, isRoot, annotations) { + var bridge = WindowBridge(win); + return function (start, finish) { + annotations.clearBeforeUpdate(container); + identify(start, finish, isRoot).each(function (cellSel) { + var boxes = cellSel.boxes.getOr([]); + annotations.selectRange(container, boxes, cellSel.start, cellSel.finish); + bridge.selectContents(finish); + bridge.collapseSelection(); + }); + }; + }; + + var remove = function (element, classes) { + each$2(classes, function (x) { + remove$2(element, x); + }); + }; + + var addClass = function (clazz) { + return function (element) { + add(element, clazz); + }; + }; + var removeClasses = function (classes) { + return function (element) { + remove(element, classes); + }; + }; + + var byClass = function (ephemera) { + var addSelectionClass = addClass(ephemera.selected); + var removeSelectionClasses = removeClasses([ + ephemera.selected, + ephemera.lastSelected, + ephemera.firstSelected + ]); + var clear = function (container) { + var sels = descendants(container, ephemera.selectedSelector); + each$2(sels, removeSelectionClasses); + }; + var selectRange = function (container, cells, start, finish) { + clear(container); + each$2(cells, addSelectionClass); + add(start, ephemera.firstSelected); + add(finish, ephemera.lastSelected); + }; + return { + clearBeforeUpdate: clear, + clear: clear, + selectRange: selectRange, + selectedSelector: ephemera.selectedSelector, + firstSelectedSelector: ephemera.firstSelectedSelector, + lastSelectedSelector: ephemera.lastSelectedSelector + }; + }; + var byAttr = function (ephemera, onSelection, onClear) { + var removeSelectionAttributes = function (element) { + remove$7(element, ephemera.selected); + remove$7(element, ephemera.firstSelected); + remove$7(element, ephemera.lastSelected); + }; + var addSelectionAttribute = function (element) { + set$2(element, ephemera.selected, '1'); + }; + var clear = function (container) { + clearBeforeUpdate(container); + onClear(); + }; + var clearBeforeUpdate = function (container) { + var sels = descendants(container, ephemera.selectedSelector + ',' + ephemera.firstSelectedSelector + ',' + ephemera.lastSelectedSelector); + each$2(sels, removeSelectionAttributes); + }; + var selectRange = function (container, cells, start, finish) { + clear(container); + each$2(cells, addSelectionAttribute); + set$2(start, ephemera.firstSelected, '1'); + set$2(finish, ephemera.lastSelected, '1'); + onSelection(cells, start, finish); + }; + return { + clearBeforeUpdate: clearBeforeUpdate, + clear: clear, + selectRange: selectRange, + selectedSelector: ephemera.selectedSelector, + firstSelectedSelector: ephemera.firstSelectedSelector, + lastSelectedSelector: ephemera.lastSelectedSelector + }; + }; + var SelectionAnnotation = { + byClass: byClass, + byAttr: byAttr + }; + + var getUpOrLeftCells = function (grid, selectedCells) { + var upGrid = grid.slice(0, selectedCells[selectedCells.length - 1].row + 1); + var upDetails = toDetailList(upGrid); + return bind$2(upDetails, function (detail) { + var slicedCells = detail.cells.slice(0, selectedCells[selectedCells.length - 1].column + 1); + return map$1(slicedCells, function (cell) { + return cell.element; + }); + }); + }; + var getDownOrRightCells = function (grid, selectedCells) { + var downGrid = grid.slice(selectedCells[0].row + selectedCells[0].rowspan - 1, grid.length); + var downDetails = toDetailList(downGrid); + return bind$2(downDetails, function (detail) { + var slicedCells = detail.cells.slice(selectedCells[0].column + selectedCells[0].colspan - 1, detail.cells.length); + return map$1(slicedCells, function (cell) { + return cell.element; + }); + }); + }; + var getOtherCells = function (table, target, generators) { + var warehouse = Warehouse.fromTable(table); + var details = onCells(warehouse, target); + return details.map(function (selectedCells) { + var grid = toGrid(warehouse, generators, false); + var upOrLeftCells = getUpOrLeftCells(grid, selectedCells); + var downOrRightCells = getDownOrRightCells(grid, selectedCells); + return { + upOrLeftCells: upOrLeftCells, + downOrRightCells: downOrRightCells + }; + }); + }; + + var global = tinymce.util.Tools.resolve('tinymce.Env'); + + var hasInternalTarget = function (e) { + return has(SugarElement.fromDom(e.target), 'ephox-snooker-resizer-bar') === false; + }; + function CellSelection (editor, lazyResize, selectionTargets) { + var onSelection = function (cells, start, finish) { + selectionTargets.targets().each(function (targets) { + var tableOpt = table(start); + tableOpt.each(function (table) { + var cloneFormats = getCloneElements(editor); + var generators = cellOperations(noop, SugarElement.fromDom(editor.getDoc()), cloneFormats); + var otherCells = getOtherCells(table, targets, generators); + fireTableSelectionChange(editor, cells, start, finish, otherCells); + }); + }); + }; + var onClear = function () { + return fireTableSelectionClear(editor); + }; + var annotations = SelectionAnnotation.byAttr(ephemera, onSelection, onClear); + editor.on('init', function (_e) { + var win = editor.getWin(); + var body = getBody(editor); + var isRoot = getIsRoot(editor); + var syncSelection = function () { + var sel = editor.selection; + var start = SugarElement.fromDom(sel.getStart()); + var end = SugarElement.fromDom(sel.getEnd()); + var shared = sharedOne(table, [ + start, + end + ]); + shared.fold(function () { + return annotations.clear(body); + }, noop); + }; + var mouseHandlers = mouse(win, body, isRoot, annotations); + var keyHandlers = keyboard(win, body, isRoot, annotations); + var external$1 = external(win, body, isRoot, annotations); + var hasShiftKey = function (event) { + return event.raw.shiftKey === true; + }; + editor.on('TableSelectorChange', function (e) { + return external$1(e.start, e.finish); + }); + var handleResponse = function (event, response) { + if (!hasShiftKey(event)) { + return; + } + if (response.kill) { + event.kill(); + } + response.selection.each(function (ns) { + var relative = SimSelection.relative(ns.start, ns.finish); + var rng = asLtrRange(win, relative); + editor.selection.setRng(rng); + }); + }; + var keyup = function (event) { + var wrappedEvent = fromRawEvent(event); + if (wrappedEvent.raw.shiftKey && isNavigation(wrappedEvent.raw.which)) { + var rng = editor.selection.getRng(); + var start = SugarElement.fromDom(rng.startContainer); + var end = SugarElement.fromDom(rng.endContainer); + keyHandlers.keyup(wrappedEvent, start, rng.startOffset, end, rng.endOffset).each(function (response) { + handleResponse(wrappedEvent, response); + }); + } + }; + var keydown = function (event) { + var wrappedEvent = fromRawEvent(event); + lazyResize().each(function (resize) { + return resize.hideBars(); + }); + var rng = editor.selection.getRng(); + var start = SugarElement.fromDom(rng.startContainer); + var end = SugarElement.fromDom(rng.endContainer); + var direction = onDirection(ltr, rtl)(SugarElement.fromDom(editor.selection.getStart())); + keyHandlers.keydown(wrappedEvent, start, rng.startOffset, end, rng.endOffset, direction).each(function (response) { + handleResponse(wrappedEvent, response); + }); + lazyResize().each(function (resize) { + return resize.showBars(); + }); + }; + var isLeftMouse = function (raw) { + return raw.button === 0; + }; + var isLeftButtonPressed = function (raw) { + if (raw.buttons === undefined) { + return true; + } + if (global.browser.isEdge() && raw.buttons === 0) { + return true; + } + return (raw.buttons & 1) !== 0; + }; + var dragStart = function (_e) { + mouseHandlers.clearstate(); + }; + var mouseDown = function (e) { + if (isLeftMouse(e) && hasInternalTarget(e)) { + mouseHandlers.mousedown(fromRawEvent(e)); + } + }; + var mouseOver = function (e) { + if (isLeftButtonPressed(e) && hasInternalTarget(e)) { + mouseHandlers.mouseover(fromRawEvent(e)); + } + }; + var mouseUp = function (e) { + if (isLeftMouse(e) && hasInternalTarget(e)) { + mouseHandlers.mouseup(fromRawEvent(e)); + } + }; + var getDoubleTap = function () { + var lastTarget = Cell(SugarElement.fromDom(body)); + var lastTimeStamp = Cell(0); + var touchEnd = function (t) { + var target = SugarElement.fromDom(t.target); + if (name(target) === 'td' || name(target) === 'th') { + var lT = lastTarget.get(); + var lTS = lastTimeStamp.get(); + if (eq$1(lT, target) && t.timeStamp - lTS < 300) { + t.preventDefault(); + external$1(target, target); + } + } + lastTarget.set(target); + lastTimeStamp.set(t.timeStamp); + }; + return { touchEnd: touchEnd }; + }; + var doubleTap = getDoubleTap(); + editor.on('dragstart', dragStart); + editor.on('mousedown', mouseDown); + editor.on('mouseover', mouseOver); + editor.on('mouseup', mouseUp); + editor.on('touchend', doubleTap.touchEnd); + editor.on('keyup', keyup); + editor.on('keydown', keydown); + editor.on('NodeChange', syncSelection); + }); + return { clear: annotations.clear }; + } + + var child = function (scope, selector) { + return child$1(scope, selector).isSome(); + }; + + var getSelectionTargets = function (editor, selections) { + var targets = Cell(Optional.none()); + var changeHandlers = Cell([]); + var selectionDetails = Optional.none(); + var isCaption = isTag('caption'); + var isDisabledForSelection = function (key) { + return selectionDetails.forall(function (details) { + return !details[key]; + }); + }; + var getStart = function () { + return getSelectionCellOrCaption(getSelectionStart(editor), getIsRoot(editor)); + }; + var getEnd = function () { + return getSelectionCellOrCaption(getSelectionEnd(editor), getIsRoot(editor)); + }; + var findTargets = function () { + return getStart().bind(function (startCellOrCaption) { + return flatten(lift2(table(startCellOrCaption), getEnd().bind(table), function (startTable, endTable) { + if (eq$1(startTable, endTable)) { + if (isCaption(startCellOrCaption)) { + return Optional.some(noMenu(startCellOrCaption)); + } else { + return Optional.some(forMenu(selections, startTable, startCellOrCaption)); + } + } + return Optional.none(); + })); + }); + }; + var getExtractedDetails = function (targets) { + var tableOpt = table(targets.element); + return tableOpt.map(function (table) { + var warehouse = Warehouse.fromTable(table); + var selectedCells = onCells(warehouse, targets).getOr([]); + var locked = foldl(selectedCells, function (acc, cell) { + if (cell.isLocked) { + acc.onAny = true; + if (cell.column === 0) { + acc.onFirst = true; + } else if (cell.column + cell.colspan >= warehouse.grid.columns) { + acc.onLast = true; + } + } + return acc; + }, { + onAny: false, + onFirst: false, + onLast: false + }); + return { + mergeable: onUnlockedMergable(warehouse, targets).isSome(), + unmergeable: onUnlockedUnmergable(warehouse, targets).isSome(), + locked: locked + }; + }); + }; + var resetTargets = function () { + targets.set(cached(findTargets)()); + selectionDetails = targets.get().bind(getExtractedDetails); + each$2(changeHandlers.get(), function (handler) { + return handler(); + }); + }; + var setupHandler = function (handler) { + handler(); + changeHandlers.set(changeHandlers.get().concat([handler])); + return function () { + changeHandlers.set(filter$2(changeHandlers.get(), function (h) { + return h !== handler; + })); + }; + }; + var onSetup = function (api, isDisabled) { + return setupHandler(function () { + return targets.get().fold(function () { + api.setDisabled(true); + }, function (targets) { + api.setDisabled(isDisabled(targets)); + }); + }); + }; + var onSetupWithToggle = function (api, isDisabled, isActive) { + return setupHandler(function () { + return targets.get().fold(function () { + api.setDisabled(true); + api.setActive(false); + }, function (targets) { + api.setDisabled(isDisabled(targets)); + api.setActive(isActive(targets)); + }); + }); + }; + var isDisabledFromLocked = function (lockedDisable) { + return selectionDetails.exists(function (details) { + return details.locked[lockedDisable]; + }); + }; + var onSetupTable = function (api) { + return onSetup(api, function (_) { + return false; + }); + }; + var onSetupCellOrRow = function (api) { + return onSetup(api, function (targets) { + return isCaption(targets.element); + }); + }; + var onSetupColumn = function (lockedDisable) { + return function (api) { + return onSetup(api, function (targets) { + return isCaption(targets.element) || isDisabledFromLocked(lockedDisable); + }); + }; + }; + var onSetupPasteable = function (getClipboardData) { + return function (api) { + return onSetup(api, function (targets) { + return isCaption(targets.element) || getClipboardData().isNone(); + }); + }; + }; + var onSetupPasteableColumn = function (getClipboardData, lockedDisable) { + return function (api) { + return onSetup(api, function (targets) { + return isCaption(targets.element) || getClipboardData().isNone() || isDisabledFromLocked(lockedDisable); + }); + }; + }; + var onSetupMergeable = function (api) { + return onSetup(api, function (_targets) { + return isDisabledForSelection('mergeable'); + }); + }; + var onSetupUnmergeable = function (api) { + return onSetup(api, function (_targets) { + return isDisabledForSelection('unmergeable'); + }); + }; + var onSetupTableWithCaption = function (api) { + return onSetupWithToggle(api, never, function (targets) { + var tableOpt = table(targets.element, getIsRoot(editor)); + return tableOpt.exists(function (table) { + return child(table, 'caption'); + }); + }); + }; + var onSetupTableHeaders = function (command, headerType) { + return function (api) { + return onSetupWithToggle(api, function (targets) { + return isCaption(targets.element); + }, function () { + return editor.queryCommandValue(command) === headerType; + }); + }; + }; + var onSetupTableRowHeaders = onSetupTableHeaders('mceTableRowType', 'header'); + var onSetupTableColumnHeaders = onSetupTableHeaders('mceTableColType', 'th'); + editor.on('NodeChange ExecCommand TableSelectorChange', resetTargets); + return { + onSetupTable: onSetupTable, + onSetupCellOrRow: onSetupCellOrRow, + onSetupColumn: onSetupColumn, + onSetupPasteable: onSetupPasteable, + onSetupPasteableColumn: onSetupPasteableColumn, + onSetupMergeable: onSetupMergeable, + onSetupUnmergeable: onSetupUnmergeable, + resetTargets: resetTargets, + onSetupTableWithCaption: onSetupTableWithCaption, + onSetupTableRowHeaders: onSetupTableRowHeaders, + onSetupTableColumnHeaders: onSetupTableColumnHeaders, + targets: targets.get + }; + }; + + var addButtons = function (editor, selections, selectionTargets, clipboard) { + editor.ui.registry.addMenuButton('table', { + tooltip: 'Table', + icon: 'table', + fetch: function (callback) { + return callback('inserttable | cell row column | advtablesort | tableprops deletetable'); + } + }); + var cmd = function (command) { + return function () { + return editor.execCommand(command); + }; + }; + editor.ui.registry.addButton('tableprops', { + tooltip: 'Table properties', + onAction: cmd('mceTableProps'), + icon: 'table', + onSetup: selectionTargets.onSetupTable + }); + editor.ui.registry.addButton('tabledelete', { + tooltip: 'Delete table', + onAction: cmd('mceTableDelete'), + icon: 'table-delete-table', + onSetup: selectionTargets.onSetupTable + }); + editor.ui.registry.addButton('tablecellprops', { + tooltip: 'Cell properties', + onAction: cmd('mceTableCellProps'), + icon: 'table-cell-properties', + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addButton('tablemergecells', { + tooltip: 'Merge cells', + onAction: cmd('mceTableMergeCells'), + icon: 'table-merge-cells', + onSetup: selectionTargets.onSetupMergeable + }); + editor.ui.registry.addButton('tablesplitcells', { + tooltip: 'Split cell', + onAction: cmd('mceTableSplitCells'), + icon: 'table-split-cells', + onSetup: selectionTargets.onSetupUnmergeable + }); + editor.ui.registry.addButton('tableinsertrowbefore', { + tooltip: 'Insert row before', + onAction: cmd('mceTableInsertRowBefore'), + icon: 'table-insert-row-above', + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addButton('tableinsertrowafter', { + tooltip: 'Insert row after', + onAction: cmd('mceTableInsertRowAfter'), + icon: 'table-insert-row-after', + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addButton('tabledeleterow', { + tooltip: 'Delete row', + onAction: cmd('mceTableDeleteRow'), + icon: 'table-delete-row', + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addButton('tablerowprops', { + tooltip: 'Row properties', + onAction: cmd('mceTableRowProps'), + icon: 'table-row-properties', + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addButton('tableinsertcolbefore', { + tooltip: 'Insert column before', + onAction: cmd('mceTableInsertColBefore'), + icon: 'table-insert-column-before', + onSetup: selectionTargets.onSetupColumn('onFirst') + }); + editor.ui.registry.addButton('tableinsertcolafter', { + tooltip: 'Insert column after', + onAction: cmd('mceTableInsertColAfter'), + icon: 'table-insert-column-after', + onSetup: selectionTargets.onSetupColumn('onLast') + }); + editor.ui.registry.addButton('tabledeletecol', { + tooltip: 'Delete column', + onAction: cmd('mceTableDeleteCol'), + icon: 'table-delete-column', + onSetup: selectionTargets.onSetupColumn('onAny') + }); + editor.ui.registry.addButton('tablecutrow', { + tooltip: 'Cut row', + icon: 'cut-row', + onAction: cmd('mceTableCutRow'), + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addButton('tablecopyrow', { + tooltip: 'Copy row', + icon: 'duplicate-row', + onAction: cmd('mceTableCopyRow'), + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addButton('tablepasterowbefore', { + tooltip: 'Paste row before', + icon: 'paste-row-before', + onAction: cmd('mceTablePasteRowBefore'), + onSetup: selectionTargets.onSetupPasteable(clipboard.getRows) + }); + editor.ui.registry.addButton('tablepasterowafter', { + tooltip: 'Paste row after', + icon: 'paste-row-after', + onAction: cmd('mceTablePasteRowAfter'), + onSetup: selectionTargets.onSetupPasteable(clipboard.getRows) + }); + editor.ui.registry.addButton('tablecutcol', { + tooltip: 'Cut column', + icon: 'cut-column', + onAction: cmd('mceTableCutCol'), + onSetup: selectionTargets.onSetupColumn('onAny') + }); + editor.ui.registry.addButton('tablecopycol', { + tooltip: 'Copy column', + icon: 'duplicate-column', + onAction: cmd('mceTableCopyCol'), + onSetup: selectionTargets.onSetupColumn('onAny') + }); + editor.ui.registry.addButton('tablepastecolbefore', { + tooltip: 'Paste column before', + icon: 'paste-column-before', + onAction: cmd('mceTablePasteColBefore'), + onSetup: selectionTargets.onSetupPasteableColumn(clipboard.getColumns, 'onFirst') + }); + editor.ui.registry.addButton('tablepastecolafter', { + tooltip: 'Paste column after', + icon: 'paste-column-after', + onAction: cmd('mceTablePasteColAfter'), + onSetup: selectionTargets.onSetupPasteableColumn(clipboard.getColumns, 'onLast') + }); + editor.ui.registry.addButton('tableinsertdialog', { + tooltip: 'Insert table', + onAction: cmd('mceInsertTable'), + icon: 'table' + }); + var tableClassList = filterNoneItem(getTableClassList(editor)); + if (tableClassList.length !== 0) { + editor.ui.registry.addMenuButton('tableclass', { + icon: 'table-classes', + tooltip: 'Table styles', + fetch: generateMenuItemsCallback(editor, selections, tableClassList, 'tableclass', function (value) { + return editor.execCommand('mceTableToggleClass', false, value); + }), + onSetup: selectionTargets.onSetupTable + }); + } + var tableCellClassList = filterNoneItem(getCellClassList(editor)); + if (tableCellClassList.length !== 0) { + editor.ui.registry.addMenuButton('tablecellclass', { + icon: 'table-cell-classes', + tooltip: 'Cell styles', + fetch: generateMenuItemsCallback(editor, selections, tableCellClassList, 'tablecellclass', function (value) { + return editor.execCommand('mceTableCellToggleClass', false, value); + }), + onSetup: selectionTargets.onSetupCellOrRow + }); + } + editor.ui.registry.addMenuButton('tablecellvalign', { + icon: 'vertical-align', + tooltip: 'Vertical align', + fetch: generateMenuItemsCallback(editor, selections, verticalAlignValues, 'tablecellverticalalign', applyTableCellStyle(editor, 'vertical-align')), + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addMenuButton('tablecellborderwidth', { + icon: 'border-width', + tooltip: 'Border width', + fetch: generateMenuItemsCallback(editor, selections, getTableBorderWidths(editor), 'tablecellborderwidth', applyTableCellStyle(editor, 'border-width')), + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addMenuButton('tablecellborderstyle', { + icon: 'border-style', + tooltip: 'Border style', + fetch: generateMenuItemsCallback(editor, selections, getTableBorderStyles(editor), 'tablecellborderstyle', applyTableCellStyle(editor, 'border-style')), + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addToggleButton('tablecaption', { + tooltip: 'Table caption', + onAction: cmd('mceTableToggleCaption'), + icon: 'table-caption', + onSetup: selectionTargets.onSetupTableWithCaption + }); + editor.ui.registry.addMenuButton('tablecellbackgroundcolor', { + icon: 'cell-background-color', + tooltip: 'Background color', + fetch: function (callback) { + return callback(buildColorMenu(editor, getTableBackgroundColorMap(editor), 'background-color')); + }, + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addMenuButton('tablecellbordercolor', { + icon: 'cell-border-color', + tooltip: 'Border color', + fetch: function (callback) { + return callback(buildColorMenu(editor, getTableBorderColorMap(editor), 'border-color')); + }, + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addToggleButton('tablerowheader', { + tooltip: 'Row header', + icon: 'table-top-header', + onAction: changeRowHeader(editor), + onSetup: selectionTargets.onSetupTableRowHeaders + }); + editor.ui.registry.addToggleButton('tablecolheader', { + tooltip: 'Column header', + icon: 'table-left-header', + onAction: changeColumnHeader(editor), + onSetup: selectionTargets.onSetupTableColumnHeaders + }); + }; + var addToolbars = function (editor) { + var isTable = function (table) { + return editor.dom.is(table, 'table') && editor.getBody().contains(table); + }; + var toolbar = getToolbar(editor); + if (toolbar.length > 0) { + editor.ui.registry.addContextToolbar('table', { + predicate: isTable, + items: toolbar, + scope: 'node', + position: 'node' + }); + } + }; + + var addMenuItems = function (editor, selections, selectionTargets, clipboard) { + var cmd = function (command) { + return function () { + return editor.execCommand(command); + }; + }; + var insertTableAction = function (data) { + editor.execCommand('mceInsertTable', false, { + rows: data.numRows, + columns: data.numColumns + }); + }; + var tableProperties = { + text: 'Table properties', + onSetup: selectionTargets.onSetupTable, + onAction: cmd('mceTableProps') + }; + var deleteTable = { + text: 'Delete table', + icon: 'table-delete-table', + onSetup: selectionTargets.onSetupTable, + onAction: cmd('mceTableDelete') + }; + editor.ui.registry.addMenuItem('tableinsertrowbefore', { + text: 'Insert row before', + icon: 'table-insert-row-above', + onAction: cmd('mceTableInsertRowBefore'), + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addMenuItem('tableinsertrowafter', { + text: 'Insert row after', + icon: 'table-insert-row-after', + onAction: cmd('mceTableInsertRowAfter'), + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addMenuItem('tabledeleterow', { + text: 'Delete row', + icon: 'table-delete-row', + onAction: cmd('mceTableDeleteRow'), + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addMenuItem('tablerowprops', { + text: 'Row properties', + icon: 'table-row-properties', + onAction: cmd('mceTableRowProps'), + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addMenuItem('tablecutrow', { + text: 'Cut row', + icon: 'cut-row', + onAction: cmd('mceTableCutRow'), + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addMenuItem('tablecopyrow', { + text: 'Copy row', + icon: 'duplicate-row', + onAction: cmd('mceTableCopyRow'), + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addMenuItem('tablepasterowbefore', { + text: 'Paste row before', + icon: 'paste-row-before', + onAction: cmd('mceTablePasteRowBefore'), + onSetup: selectionTargets.onSetupPasteable(clipboard.getRows) + }); + editor.ui.registry.addMenuItem('tablepasterowafter', { + text: 'Paste row after', + icon: 'paste-row-after', + onAction: cmd('mceTablePasteRowAfter'), + onSetup: selectionTargets.onSetupPasteable(clipboard.getRows) + }); + var row = { + type: 'nestedmenuitem', + text: 'Row', + getSubmenuItems: constant('tableinsertrowbefore tableinsertrowafter tabledeleterow tablerowprops | tablecutrow tablecopyrow tablepasterowbefore tablepasterowafter') + }; + editor.ui.registry.addMenuItem('tableinsertcolumnbefore', { + text: 'Insert column before', + icon: 'table-insert-column-before', + onAction: cmd('mceTableInsertColBefore'), + onSetup: selectionTargets.onSetupColumn('onFirst') + }); + editor.ui.registry.addMenuItem('tableinsertcolumnafter', { + text: 'Insert column after', + icon: 'table-insert-column-after', + onAction: cmd('mceTableInsertColAfter'), + onSetup: selectionTargets.onSetupColumn('onLast') + }); + editor.ui.registry.addMenuItem('tabledeletecolumn', { + text: 'Delete column', + icon: 'table-delete-column', + onAction: cmd('mceTableDeleteCol'), + onSetup: selectionTargets.onSetupColumn('onAny') + }); + editor.ui.registry.addMenuItem('tablecutcolumn', { + text: 'Cut column', + icon: 'cut-column', + onAction: cmd('mceTableCutCol'), + onSetup: selectionTargets.onSetupColumn('onAny') + }); + editor.ui.registry.addMenuItem('tablecopycolumn', { + text: 'Copy column', + icon: 'duplicate-column', + onAction: cmd('mceTableCopyCol'), + onSetup: selectionTargets.onSetupColumn('onAny') + }); + editor.ui.registry.addMenuItem('tablepastecolumnbefore', { + text: 'Paste column before', + icon: 'paste-column-before', + onAction: cmd('mceTablePasteColBefore'), + onSetup: selectionTargets.onSetupPasteableColumn(clipboard.getColumns, 'onFirst') + }); + editor.ui.registry.addMenuItem('tablepastecolumnafter', { + text: 'Paste column after', + icon: 'paste-column-after', + onAction: cmd('mceTablePasteColAfter'), + onSetup: selectionTargets.onSetupPasteableColumn(clipboard.getColumns, 'onLast') + }); + var column = { + type: 'nestedmenuitem', + text: 'Column', + getSubmenuItems: constant('tableinsertcolumnbefore tableinsertcolumnafter tabledeletecolumn | tablecutcolumn tablecopycolumn tablepastecolumnbefore tablepastecolumnafter') + }; + editor.ui.registry.addMenuItem('tablecellprops', { + text: 'Cell properties', + icon: 'table-cell-properties', + onAction: cmd('mceTableCellProps'), + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addMenuItem('tablemergecells', { + text: 'Merge cells', + icon: 'table-merge-cells', + onAction: cmd('mceTableMergeCells'), + onSetup: selectionTargets.onSetupMergeable + }); + editor.ui.registry.addMenuItem('tablesplitcells', { + text: 'Split cell', + icon: 'table-split-cells', + onAction: cmd('mceTableSplitCells'), + onSetup: selectionTargets.onSetupUnmergeable + }); + var cell = { + type: 'nestedmenuitem', + text: 'Cell', + getSubmenuItems: constant('tablecellprops tablemergecells tablesplitcells') + }; + if (hasTableGrid(editor) === false) { + editor.ui.registry.addMenuItem('inserttable', { + text: 'Table', + icon: 'table', + onAction: cmd('mceInsertTable') + }); + } else { + editor.ui.registry.addNestedMenuItem('inserttable', { + text: 'Table', + icon: 'table', + getSubmenuItems: function () { + return [{ + type: 'fancymenuitem', + fancytype: 'inserttable', + onAction: insertTableAction + }]; + } + }); + } + editor.ui.registry.addMenuItem('inserttabledialog', { + text: 'Insert table', + icon: 'table', + onAction: cmd('mceInsertTable') + }); + editor.ui.registry.addMenuItem('tableprops', tableProperties); + editor.ui.registry.addMenuItem('deletetable', deleteTable); + editor.ui.registry.addNestedMenuItem('row', row); + editor.ui.registry.addNestedMenuItem('column', column); + editor.ui.registry.addNestedMenuItem('cell', cell); + editor.ui.registry.addContextMenu('table', { + update: function () { + selectionTargets.resetTargets(); + return selectionTargets.targets().fold(constant(''), function (targets) { + if (name(targets.element) === 'caption') { + return 'tableprops deletetable'; + } else { + return 'cell row column | advtablesort | tableprops deletetable'; + } + }); + } + }); + var tableClassList = filterNoneItem(getTableClassList(editor)); + if (tableClassList.length !== 0) { + editor.ui.registry.addNestedMenuItem('tableclass', { + icon: 'table-classes', + text: 'Table styles', + getSubmenuItems: function () { + return buildMenuItems(editor, selections, tableClassList, 'tableclass', function (value) { + return editor.execCommand('mceTableToggleClass', false, value); + }); + }, + onSetup: selectionTargets.onSetupTable + }); + } + var tableCellClassList = filterNoneItem(getCellClassList(editor)); + if (tableCellClassList.length !== 0) { + editor.ui.registry.addNestedMenuItem('tablecellclass', { + icon: 'table-cell-classes', + text: 'Cell styles', + getSubmenuItems: function () { + return buildMenuItems(editor, selections, tableCellClassList, 'tablecellclass', function (value) { + return editor.execCommand('mceTableCellToggleClass', false, value); + }); + }, + onSetup: selectionTargets.onSetupCellOrRow + }); + } + editor.ui.registry.addNestedMenuItem('tablecellvalign', { + icon: 'vertical-align', + text: 'Vertical align', + getSubmenuItems: function () { + return buildMenuItems(editor, selections, verticalAlignValues, 'tablecellverticalalign', applyTableCellStyle(editor, 'vertical-align')); + }, + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addNestedMenuItem('tablecellborderwidth', { + icon: 'border-width', + text: 'Border width', + getSubmenuItems: function () { + return buildMenuItems(editor, selections, getTableBorderWidths(editor), 'tablecellborderwidth', applyTableCellStyle(editor, 'border-width')); + }, + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addNestedMenuItem('tablecellborderstyle', { + icon: 'border-style', + text: 'Border style', + getSubmenuItems: function () { + return buildMenuItems(editor, selections, getTableBorderStyles(editor), 'tablecellborderstyle', applyTableCellStyle(editor, 'border-style')); + }, + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addToggleMenuItem('tablecaption', { + icon: 'table-caption', + text: 'Table caption', + onAction: cmd('mceTableToggleCaption'), + onSetup: selectionTargets.onSetupTableWithCaption + }); + editor.ui.registry.addNestedMenuItem('tablecellbackgroundcolor', { + icon: 'cell-background-color', + text: 'Background color', + getSubmenuItems: function () { + return buildColorMenu(editor, getTableBackgroundColorMap(editor), 'background-color'); + }, + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addNestedMenuItem('tablecellbordercolor', { + icon: 'cell-border-color', + text: 'Border color', + getSubmenuItems: function () { + return buildColorMenu(editor, getTableBorderColorMap(editor), 'border-color'); + }, + onSetup: selectionTargets.onSetupCellOrRow + }); + editor.ui.registry.addToggleMenuItem('tablerowheader', { + text: 'Row header', + icon: 'table-top-header', + onAction: changeRowHeader(editor), + onSetup: selectionTargets.onSetupTableRowHeaders + }); + editor.ui.registry.addToggleMenuItem('tablecolheader', { + text: 'Column header', + icon: 'table-left-header', + onAction: changeColumnHeader(editor), + onSetup: selectionTargets.onSetupTableColumnHeaders + }); + }; + + var Plugin = function (editor) { + var selections = Selections(function () { + return getBody(editor); + }, function () { + return getSelectionCell(getSelectionStart(editor), getIsRoot(editor)); + }, ephemera.selectedSelector); + var selectionTargets = getSelectionTargets(editor, selections); + var resizeHandler = getResizeHandler(editor); + var cellSelection = CellSelection(editor, resizeHandler.lazyResize, selectionTargets); + var actions = TableActions(editor, cellSelection, resizeHandler.lazyWire); + var clipboard = Clipboard(); + registerCommands(editor, actions, cellSelection, selections, clipboard); + registerQueryCommands(editor, actions, selections); + registerEvents(editor, selections, actions); + addMenuItems(editor, selections, selectionTargets, clipboard); + addButtons(editor, selections, selectionTargets, clipboard); + addToolbars(editor); + editor.on('PreInit', function () { + editor.serializer.addTempAttr(ephemera.firstSelected); + editor.serializer.addTempAttr(ephemera.lastSelected); + registerFormats(editor); + }); + if (hasTabNavigation(editor)) { + editor.on('keydown', function (e) { + handle$1(e, editor, cellSelection); + }); + } + editor.on('remove', function () { + resizeHandler.destroy(); + }); + return getApi(editor, clipboard, resizeHandler, selectionTargets); + }; + function Plugin$1 () { + global$3.add('table', Plugin); + } + + Plugin$1(); + +}()); + +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.6 (2022-10-19) + */ +(function () { + 'use strict'; + + var global$4 = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var typeOf = function (x) { + var t = typeof x; + if (x === null) { + return 'null'; + } else if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) { + return 'array'; + } else if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) { + return 'string'; + } else { + return t; + } + }; + var isType = function (type) { + return function (value) { + return typeOf(value) === type; + }; + }; + var isSimpleType = function (type) { + return function (value) { + return typeof value === type; + }; + }; + var isString = isType('string'); + var isFunction = isSimpleType('function'); + + var noop = function () { + }; + var constant = function (value) { + return function () { + return value; + }; + }; + var identity = function (x) { + return x; + }; + function curry(fn) { + var initialArgs = []; + for (var _i = 1; _i < arguments.length; _i++) { + initialArgs[_i - 1] = arguments[_i]; + } + return function () { + var restArgs = []; + for (var _i = 0; _i < arguments.length; _i++) { + restArgs[_i] = arguments[_i]; + } + var all = initialArgs.concat(restArgs); + return fn.apply(null, all); + }; + } + var never = constant(false); + var always = constant(true); + + var global$3 = tinymce.util.Tools.resolve('tinymce.util.Tools'); + + var global$2 = tinymce.util.Tools.resolve('tinymce.util.XHR'); + + var getCreationDateClasses = function (editor) { + return editor.getParam('template_cdate_classes', 'cdate'); + }; + var getModificationDateClasses = function (editor) { + return editor.getParam('template_mdate_classes', 'mdate'); + }; + var getSelectedContentClasses = function (editor) { + return editor.getParam('template_selected_content_classes', 'selcontent'); + }; + var getPreviewReplaceValues = function (editor) { + return editor.getParam('template_preview_replace_values'); + }; + var getContentStyle = function (editor) { + return editor.getParam('content_style', '', 'string'); + }; + var shouldUseContentCssCors = function (editor) { + return editor.getParam('content_css_cors', false, 'boolean'); + }; + var getTemplateReplaceValues = function (editor) { + return editor.getParam('template_replace_values'); + }; + var getTemplates = function (editor) { + return editor.getParam('templates'); + }; + var getCdateFormat = function (editor) { + return editor.getParam('template_cdate_format', editor.translate('%Y-%m-%d')); + }; + var getMdateFormat = function (editor) { + return editor.getParam('template_mdate_format', editor.translate('%Y-%m-%d')); + }; + var getBodyClassFromHash = function (editor) { + var bodyClass = editor.getParam('body_class', '', 'hash'); + return bodyClass[editor.id] || ''; + }; + var getBodyClass = function (editor) { + var bodyClass = editor.getParam('body_class', '', 'string'); + if (bodyClass.indexOf('=') === -1) { + return bodyClass; + } else { + return getBodyClassFromHash(editor); + } + }; + + var addZeros = function (value, len) { + value = '' + value; + if (value.length < len) { + for (var i = 0; i < len - value.length; i++) { + value = '0' + value; + } + } + return value; + }; + var getDateTime = function (editor, fmt, date) { + if (date === void 0) { + date = new Date(); + } + var daysShort = 'Sun Mon Tue Wed Thu Fri Sat Sun'.split(' '); + var daysLong = 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday'.split(' '); + var monthsShort = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' '); + var monthsLong = 'January February March April May June July August September October November December'.split(' '); + fmt = fmt.replace('%D', '%m/%d/%Y'); + fmt = fmt.replace('%r', '%I:%M:%S %p'); + fmt = fmt.replace('%Y', '' + date.getFullYear()); + fmt = fmt.replace('%y', '' + date.getYear()); + fmt = fmt.replace('%m', addZeros(date.getMonth() + 1, 2)); + fmt = fmt.replace('%d', addZeros(date.getDate(), 2)); + fmt = fmt.replace('%H', '' + addZeros(date.getHours(), 2)); + fmt = fmt.replace('%M', '' + addZeros(date.getMinutes(), 2)); + fmt = fmt.replace('%S', '' + addZeros(date.getSeconds(), 2)); + fmt = fmt.replace('%I', '' + ((date.getHours() + 11) % 12 + 1)); + fmt = fmt.replace('%p', '' + (date.getHours() < 12 ? 'AM' : 'PM')); + fmt = fmt.replace('%B', '' + editor.translate(monthsLong[date.getMonth()])); + fmt = fmt.replace('%b', '' + editor.translate(monthsShort[date.getMonth()])); + fmt = fmt.replace('%A', '' + editor.translate(daysLong[date.getDay()])); + fmt = fmt.replace('%a', '' + editor.translate(daysShort[date.getDay()])); + fmt = fmt.replace('%%', '%'); + return fmt; + }; + + var createTemplateList = function (editor, callback) { + return function () { + var templateList = getTemplates(editor); + if (isFunction(templateList)) { + templateList(callback); + } else if (isString(templateList)) { + global$2.send({ + url: templateList, + success: function (text) { + callback(JSON.parse(text)); + } + }); + } else { + callback(templateList); + } + }; + }; + var replaceTemplateValues = function (html, templateValues) { + global$3.each(templateValues, function (v, k) { + if (isFunction(v)) { + v = v(k); + } + html = html.replace(new RegExp('\\{\\$' + k + '\\}', 'g'), v); + }); + return html; + }; + var replaceVals = function (editor, scope) { + var dom = editor.dom, vl = getTemplateReplaceValues(editor); + global$3.each(dom.select('*', scope), function (e) { + global$3.each(vl, function (v, k) { + if (dom.hasClass(e, k)) { + if (isFunction(v)) { + v(e); + } + } + }); + }); + }; + var hasClass = function (n, c) { + return new RegExp('\\b' + c + '\\b', 'g').test(n.className); + }; + var insertTemplate = function (editor, _ui, html) { + var dom = editor.dom; + var sel = editor.selection.getContent(); + html = replaceTemplateValues(html, getTemplateReplaceValues(editor)); + var el = dom.create('div', null, html); + var n = dom.select('.mceTmpl', el); + if (n && n.length > 0) { + el = dom.create('div', null); + el.appendChild(n[0].cloneNode(true)); + } + global$3.each(dom.select('*', el), function (n) { + if (hasClass(n, getCreationDateClasses(editor).replace(/\s+/g, '|'))) { + n.innerHTML = getDateTime(editor, getCdateFormat(editor)); + } + if (hasClass(n, getModificationDateClasses(editor).replace(/\s+/g, '|'))) { + n.innerHTML = getDateTime(editor, getMdateFormat(editor)); + } + if (hasClass(n, getSelectedContentClasses(editor).replace(/\s+/g, '|'))) { + n.innerHTML = sel; + } + }); + replaceVals(editor, el); + editor.execCommand('mceInsertContent', false, el.innerHTML); + editor.addVisual(); + }; + + var none = function () { + return NONE; + }; + var NONE = function () { + var call = function (thunk) { + return thunk(); + }; + var id = identity; + var me = { + fold: function (n, _s) { + return n(); + }, + isSome: never, + isNone: always, + getOr: id, + getOrThunk: call, + getOrDie: function (msg) { + throw new Error(msg || 'error: getOrDie called on none.'); + }, + getOrNull: constant(null), + getOrUndefined: constant(undefined), + or: id, + orThunk: call, + map: none, + each: noop, + bind: none, + exists: never, + forall: always, + filter: function () { + return none(); + }, + toArray: function () { + return []; + }, + toString: constant('none()') + }; + return me; + }(); + var some = function (a) { + var constant_a = constant(a); + var self = function () { + return me; + }; + var bind = function (f) { + return f(a); + }; + var me = { + fold: function (n, s) { + return s(a); + }, + isSome: always, + isNone: never, + getOr: constant_a, + getOrThunk: constant_a, + getOrDie: constant_a, + getOrNull: constant_a, + getOrUndefined: constant_a, + or: self, + orThunk: self, + map: function (f) { + return some(f(a)); + }, + each: function (f) { + f(a); + }, + bind: bind, + exists: bind, + forall: bind, + filter: function (f) { + return f(a) ? me : NONE; + }, + toArray: function () { + return [a]; + }, + toString: function () { + return 'some(' + a + ')'; + } + }; + return me; + }; + var from = function (value) { + return value === null || value === undefined ? NONE : some(value); + }; + var Optional = { + some: some, + none: none, + from: from + }; + + var map = function (xs, f) { + var len = xs.length; + var r = new Array(len); + for (var i = 0; i < len; i++) { + var x = xs[i]; + r[i] = f(x, i); + } + return r; + }; + var findUntil = function (xs, pred, until) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i)) { + return Optional.some(x); + } else if (until(x, i)) { + break; + } + } + return Optional.none(); + }; + var find = function (xs, pred) { + return findUntil(xs, pred, never); + }; + + var global$1 = tinymce.util.Tools.resolve('tinymce.Env'); + + var global = tinymce.util.Tools.resolve('tinymce.util.Promise'); + + var hasOwnProperty = Object.hasOwnProperty; + var get = function (obj, key) { + return has(obj, key) ? Optional.from(obj[key]) : Optional.none(); + }; + var has = function (obj, key) { + return hasOwnProperty.call(obj, key); + }; + + var entitiesAttr = { + '"': '"', + '<': '<', + '>': '>', + '&': '&', + '\'': ''' + }; + var htmlEscape = function (html) { + return html.replace(/["'<>&]/g, function (match) { + return get(entitiesAttr, match).getOr(match); + }); + }; + + var getPreviewContent = function (editor, html) { + if (html.indexOf('') === -1) { + var contentCssEntries_1 = ''; + var contentStyle = getContentStyle(editor); + var cors_1 = shouldUseContentCssCors(editor) ? ' crossorigin="anonymous"' : ''; + global$3.each(editor.contentCSS, function (url) { + contentCssEntries_1 += ''; + }); + if (contentStyle) { + contentCssEntries_1 += ''; + } + var bodyClass = getBodyClass(editor); + var encode = editor.dom.encode; + var isMetaKeyPressed = global$1.mac ? 'e.metaKey' : 'e.ctrlKey && !e.altKey'; + var preventClicksOnLinksScript = ' '; + var directionality = editor.getBody().dir; + var dirAttr = directionality ? ' dir="' + encode(directionality) + '"' : ''; + html = '' + '' + '' + '' + contentCssEntries_1 + preventClicksOnLinksScript + '' + '' + html + '' + ''; + } + return replaceTemplateValues(html, getPreviewReplaceValues(editor)); + }; + var open = function (editor, templateList) { + var createTemplates = function () { + if (!templateList || templateList.length === 0) { + var message = editor.translate('No templates defined.'); + editor.notificationManager.open({ + text: message, + type: 'info' + }); + return Optional.none(); + } + return Optional.from(global$3.map(templateList, function (template, index) { + var isUrlTemplate = function (t) { + return t.url !== undefined; + }; + return { + selected: index === 0, + text: template.title, + value: { + url: isUrlTemplate(template) ? Optional.from(template.url) : Optional.none(), + content: !isUrlTemplate(template) ? Optional.from(template.content) : Optional.none(), + description: template.description + } + }; + })); + }; + var createSelectBoxItems = function (templates) { + return map(templates, function (t) { + return { + text: t.text, + value: t.text + }; + }); + }; + var findTemplate = function (templates, templateTitle) { + return find(templates, function (t) { + return t.text === templateTitle; + }); + }; + var loadFailedAlert = function (api) { + editor.windowManager.alert('Could not load the specified template.', function () { + return api.focus('template'); + }); + }; + var getTemplateContent = function (t) { + return new global(function (resolve, reject) { + t.value.url.fold(function () { + return resolve(t.value.content.getOr('')); + }, function (url) { + return global$2.send({ + url: url, + success: function (html) { + resolve(html); + }, + error: function (e) { + reject(e); + } + }); + }); + }); + }; + var onChange = function (templates, updateDialog) { + return function (api, change) { + if (change.name === 'template') { + var newTemplateTitle = api.getData().template; + findTemplate(templates, newTemplateTitle).each(function (t) { + api.block('Loading...'); + getTemplateContent(t).then(function (previewHtml) { + updateDialog(api, t, previewHtml); + }).catch(function () { + updateDialog(api, t, ''); + api.disable('save'); + loadFailedAlert(api); + }); + }); + } + }; + }; + var onSubmit = function (templates) { + return function (api) { + var data = api.getData(); + findTemplate(templates, data.template).each(function (t) { + getTemplateContent(t).then(function (previewHtml) { + editor.execCommand('mceInsertTemplate', false, previewHtml); + api.close(); + }).catch(function () { + api.disable('save'); + loadFailedAlert(api); + }); + }); + }; + }; + var openDialog = function (templates) { + var selectBoxItems = createSelectBoxItems(templates); + var buildDialogSpec = function (bodyItems, initialData) { + return { + title: 'Insert Template', + size: 'large', + body: { + type: 'panel', + items: bodyItems + }, + initialData: initialData, + buttons: [ + { + type: 'cancel', + name: 'cancel', + text: 'Cancel' + }, + { + type: 'submit', + name: 'save', + text: 'Save', + primary: true + } + ], + onSubmit: onSubmit(templates), + onChange: onChange(templates, updateDialog) + }; + }; + var updateDialog = function (dialogApi, template, previewHtml) { + var content = getPreviewContent(editor, previewHtml); + var bodyItems = [ + { + type: 'selectbox', + name: 'template', + label: 'Templates', + items: selectBoxItems + }, + { + type: 'htmlpanel', + html: '

' + htmlEscape(template.value.description) + '

' + }, + { + label: 'Preview', + type: 'iframe', + name: 'preview', + sandboxed: false + } + ]; + var initialData = { + template: template.text, + preview: content + }; + dialogApi.unblock(); + dialogApi.redial(buildDialogSpec(bodyItems, initialData)); + dialogApi.focus('template'); + }; + var dialogApi = editor.windowManager.open(buildDialogSpec([], { + template: '', + preview: '' + })); + dialogApi.block('Loading...'); + getTemplateContent(templates[0]).then(function (previewHtml) { + updateDialog(dialogApi, templates[0], previewHtml); + }).catch(function () { + updateDialog(dialogApi, templates[0], ''); + dialogApi.disable('save'); + loadFailedAlert(dialogApi); + }); + }; + var optTemplates = createTemplates(); + optTemplates.each(openDialog); + }; + + var showDialog = function (editor) { + return function (templates) { + open(editor, templates); + }; + }; + var register$1 = function (editor) { + editor.addCommand('mceInsertTemplate', curry(insertTemplate, editor)); + editor.addCommand('mceTemplate', createTemplateList(editor, showDialog(editor))); + }; + + var setup = function (editor) { + editor.on('PreProcess', function (o) { + var dom = editor.dom, dateFormat = getMdateFormat(editor); + global$3.each(dom.select('div', o.node), function (e) { + if (dom.hasClass(e, 'mceTmpl')) { + global$3.each(dom.select('*', e), function (e) { + if (dom.hasClass(e, getModificationDateClasses(editor).replace(/\s+/g, '|'))) { + e.innerHTML = getDateTime(editor, dateFormat); + } + }); + replaceVals(editor, e); + } + }); + }); + }; + + var register = function (editor) { + var onAction = function () { + return editor.execCommand('mceTemplate'); + }; + editor.ui.registry.addButton('template', { + icon: 'template', + tooltip: 'Insert template', + onAction: onAction + }); + editor.ui.registry.addMenuItem('template', { + icon: 'template', + text: 'Insert template...', + onAction: onAction + }); + }; + + function Plugin () { + global$4.add('template', function (editor) { + register(editor); + register$1(editor); + setup(editor); + }); + } + + Plugin(); + +}()); + +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.6 (2022-10-19) + */ +(function () { + 'use strict'; + + var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + function Plugin () { + global.add('textcolor', function () { + }); + } + + Plugin(); + +}()); + +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.6 (2022-10-19) + */ +(function () { + 'use strict'; + + var global$3 = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var global$2 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); + + var global$1 = tinymce.util.Tools.resolve('tinymce.util.I18n'); + + var global = tinymce.util.Tools.resolve('tinymce.util.Tools'); + + var getTocClass = function (editor) { + return editor.getParam('toc_class', 'mce-toc'); + }; + var getTocHeader = function (editor) { + var tagName = editor.getParam('toc_header', 'h2'); + return /^h[1-6]$/.test(tagName) ? tagName : 'h2'; + }; + var getTocDepth = function (editor) { + var depth = parseInt(editor.getParam('toc_depth', '3'), 10); + return depth >= 1 && depth <= 9 ? depth : 3; + }; + + var create = function (prefix) { + var counter = 0; + return function () { + var guid = new Date().getTime().toString(32); + return prefix + guid + (counter++).toString(32); + }; + }; + + var tocId = create('mcetoc_'); + var generateSelector = function (depth) { + var i; + var selector = []; + for (i = 1; i <= depth; i++) { + selector.push('h' + i); + } + return selector.join(','); + }; + var hasHeaders = function (editor) { + return readHeaders(editor).length > 0; + }; + var readHeaders = function (editor) { + var tocClass = getTocClass(editor); + var headerTag = getTocHeader(editor); + var selector = generateSelector(getTocDepth(editor)); + var headers = editor.$(selector); + if (headers.length && /^h[1-9]$/i.test(headerTag)) { + headers = headers.filter(function (i, el) { + return !editor.dom.hasClass(el.parentNode, tocClass); + }); + } + return global.map(headers, function (h) { + var id = h.id; + return { + id: id ? id : tocId(), + level: parseInt(h.nodeName.replace(/^H/i, ''), 10), + title: editor.$.text(h), + element: h + }; + }); + }; + var getMinLevel = function (headers) { + var minLevel = 9; + for (var i = 0; i < headers.length; i++) { + if (headers[i].level < minLevel) { + minLevel = headers[i].level; + } + if (minLevel === 1) { + return minLevel; + } + } + return minLevel; + }; + var generateTitle = function (tag, title) { + var openTag = '<' + tag + ' contenteditable="true">'; + var closeTag = ''; + return openTag + global$2.DOM.encode(title) + closeTag; + }; + var generateTocHtml = function (editor) { + var html = generateTocContentHtml(editor); + return '
' + html + '
'; + }; + var generateTocContentHtml = function (editor) { + var html = ''; + var headers = readHeaders(editor); + var prevLevel = getMinLevel(headers) - 1; + if (!headers.length) { + return ''; + } + html += generateTitle(getTocHeader(editor), global$1.translate('Table of Contents')); + for (var i = 0; i < headers.length; i++) { + var h = headers[i]; + h.element.id = h.id; + var nextLevel = headers[i + 1] && headers[i + 1].level; + if (prevLevel === h.level) { + html += '
  • '; + } else { + for (var ii = prevLevel; ii < h.level; ii++) { + html += '
    • '; + } + } + html += '' + h.title + ''; + if (nextLevel === h.level || !nextLevel) { + html += '
    • '; + if (!nextLevel) { + html += '
    '; + } + } else { + for (var ii = h.level; ii > nextLevel; ii--) { + if (ii === nextLevel + 1) { + html += '
  • '; + } else { + html += '
  • '; + } + } + } + prevLevel = h.level; + } + return html; + }; + var isEmptyOrOffscreen = function (editor, nodes) { + return !nodes.length || editor.dom.getParents(nodes[0], '.mce-offscreen-selection').length > 0; + }; + var insertToc = function (editor) { + var tocClass = getTocClass(editor); + var $tocElm = editor.$('.' + tocClass); + if (isEmptyOrOffscreen(editor, $tocElm)) { + editor.insertContent(generateTocHtml(editor)); + } else { + updateToc(editor); + } + }; + var updateToc = function (editor) { + var tocClass = getTocClass(editor); + var $tocElm = editor.$('.' + tocClass); + if ($tocElm.length) { + editor.undoManager.transact(function () { + $tocElm.html(generateTocContentHtml(editor)); + }); + } + }; + + var register$1 = function (editor) { + editor.addCommand('mceInsertToc', function () { + insertToc(editor); + }); + editor.addCommand('mceUpdateToc', function () { + updateToc(editor); + }); + }; + + var setup = function (editor) { + var $ = editor.$, tocClass = getTocClass(editor); + editor.on('PreProcess', function (e) { + var $tocElm = $('.' + tocClass, e.node); + if ($tocElm.length) { + $tocElm.removeAttr('contentEditable'); + $tocElm.find('[contenteditable]').removeAttr('contentEditable'); + } + }); + editor.on('SetContent', function () { + var $tocElm = $('.' + tocClass); + if ($tocElm.length) { + $tocElm.attr('contentEditable', false); + $tocElm.children(':first-child').attr('contentEditable', true); + } + }); + }; + + var toggleState = function (editor) { + return function (api) { + var toggleDisabledState = function () { + return api.setDisabled(editor.mode.isReadOnly() || !hasHeaders(editor)); + }; + toggleDisabledState(); + editor.on('LoadContent SetContent change', toggleDisabledState); + return function () { + return editor.on('LoadContent SetContent change', toggleDisabledState); + }; + }; + }; + var isToc = function (editor) { + return function (elm) { + return elm && editor.dom.is(elm, '.' + getTocClass(editor)) && editor.getBody().contains(elm); + }; + }; + var register = function (editor) { + var insertTocAction = function () { + return editor.execCommand('mceInsertToc'); + }; + editor.ui.registry.addButton('toc', { + icon: 'toc', + tooltip: 'Table of contents', + onAction: insertTocAction, + onSetup: toggleState(editor) + }); + editor.ui.registry.addButton('tocupdate', { + icon: 'reload', + tooltip: 'Update', + onAction: function () { + return editor.execCommand('mceUpdateToc'); + } + }); + editor.ui.registry.addMenuItem('toc', { + icon: 'toc', + text: 'Table of contents', + onAction: insertTocAction, + onSetup: toggleState(editor) + }); + editor.ui.registry.addContextToolbar('toc', { + items: 'tocupdate', + predicate: isToc(editor), + scope: 'node', + position: 'node' + }); + }; + + function Plugin () { + global$3.add('toc', function (editor) { + register$1(editor); + register(editor); + setup(editor); + }); + } + + Plugin(); + +}()); + +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.6 (2022-10-19) + */ +(function () { + 'use strict'; + + var Cell = function (initial) { + var value = initial; + var get = function () { + return value; + }; + var set = function (v) { + value = v; + }; + return { + get: get, + set: set + }; + }; + + var global$5 = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var __assign = function () { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + function __spreadArray(to, from, pack) { + if (pack || arguments.length === 2) + for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) + ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); + } + + var typeOf = function (x) { + var t = typeof x; + if (x === null) { + return 'null'; + } else if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) { + return 'array'; + } else if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) { + return 'string'; + } else { + return t; + } + }; + var isType = function (type) { + return function (value) { + return typeOf(value) === type; + }; + }; + var isString = isType('string'); + var isObject = isType('object'); + var isArray = isType('array'); + + var noop = function () { + }; + var constant = function (value) { + return function () { + return value; + }; + }; + var identity = function (x) { + return x; + }; + var die = function (msg) { + return function () { + throw new Error(msg); + }; + }; + var never = constant(false); + var always = constant(true); + + var none = function () { + return NONE; + }; + var NONE = function () { + var call = function (thunk) { + return thunk(); + }; + var id = identity; + var me = { + fold: function (n, _s) { + return n(); + }, + isSome: never, + isNone: always, + getOr: id, + getOrThunk: call, + getOrDie: function (msg) { + throw new Error(msg || 'error: getOrDie called on none.'); + }, + getOrNull: constant(null), + getOrUndefined: constant(undefined), + or: id, + orThunk: call, + map: none, + each: noop, + bind: none, + exists: never, + forall: always, + filter: function () { + return none(); + }, + toArray: function () { + return []; + }, + toString: constant('none()') + }; + return me; + }(); + var some = function (a) { + var constant_a = constant(a); + var self = function () { + return me; + }; + var bind = function (f) { + return f(a); + }; + var me = { + fold: function (n, s) { + return s(a); + }, + isSome: always, + isNone: never, + getOr: constant_a, + getOrThunk: constant_a, + getOrDie: constant_a, + getOrNull: constant_a, + getOrUndefined: constant_a, + or: self, + orThunk: self, + map: function (f) { + return some(f(a)); + }, + each: function (f) { + f(a); + }, + bind: bind, + exists: bind, + forall: bind, + filter: function (f) { + return f(a) ? me : NONE; + }, + toArray: function () { + return [a]; + }, + toString: function () { + return 'some(' + a + ')'; + } + }; + return me; + }; + var from = function (value) { + return value === null || value === undefined ? NONE : some(value); + }; + var Optional = { + some: some, + none: none, + from: from + }; + + var nativeSlice = Array.prototype.slice; + var nativeIndexOf = Array.prototype.indexOf; + var rawIndexOf = function (ts, t) { + return nativeIndexOf.call(ts, t); + }; + var contains = function (xs, x) { + return rawIndexOf(xs, x) > -1; + }; + var map = function (xs, f) { + var len = xs.length; + var r = new Array(len); + for (var i = 0; i < len; i++) { + var x = xs[i]; + r[i] = f(x, i); + } + return r; + }; + var each = function (xs, f) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + f(x, i); + } + }; + var eachr = function (xs, f) { + for (var i = xs.length - 1; i >= 0; i--) { + var x = xs[i]; + f(x, i); + } + }; + var filter = function (xs, pred) { + var r = []; + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i)) { + r.push(x); + } + } + return r; + }; + var foldr = function (xs, f, acc) { + eachr(xs, function (x, i) { + acc = f(acc, x, i); + }); + return acc; + }; + var foldl = function (xs, f, acc) { + each(xs, function (x, i) { + acc = f(acc, x, i); + }); + return acc; + }; + var findUntil = function (xs, pred, until) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i)) { + return Optional.some(x); + } else if (until(x, i)) { + break; + } + } + return Optional.none(); + }; + var find = function (xs, pred) { + return findUntil(xs, pred, never); + }; + var forall = function (xs, pred) { + for (var i = 0, len = xs.length; i < len; ++i) { + var x = xs[i]; + if (pred(x, i) !== true) { + return false; + } + } + return true; + }; + var sort = function (xs, comparator) { + var copy = nativeSlice.call(xs, 0); + copy.sort(comparator); + return copy; + }; + var get$1 = function (xs, i) { + return i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none(); + }; + var head = function (xs) { + return get$1(xs, 0); + }; + + var keys = Object.keys; + var hasOwnProperty = Object.hasOwnProperty; + var has = function (obj, key) { + return hasOwnProperty.call(obj, key); + }; + + var generate$1 = function (cases) { + if (!isArray(cases)) { + throw new Error('cases must be an array'); + } + if (cases.length === 0) { + throw new Error('there must be at least one case'); + } + var constructors = []; + var adt = {}; + each(cases, function (acase, count) { + var keys$1 = keys(acase); + if (keys$1.length !== 1) { + throw new Error('one and only one name per case'); + } + var key = keys$1[0]; + var value = acase[key]; + if (adt[key] !== undefined) { + throw new Error('duplicate key detected:' + key); + } else if (key === 'cata') { + throw new Error('cannot have a case named cata (sorry)'); + } else if (!isArray(value)) { + throw new Error('case arguments must be an array'); + } + constructors.push(key); + adt[key] = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var argLength = args.length; + if (argLength !== value.length) { + throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength); + } + var match = function (branches) { + var branchKeys = keys(branches); + if (constructors.length !== branchKeys.length) { + throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\nActual: ' + branchKeys.join(',')); + } + var allReqd = forall(constructors, function (reqKey) { + return contains(branchKeys, reqKey); + }); + if (!allReqd) { + throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\nRequired: ' + constructors.join(', ')); + } + return branches[key].apply(null, args); + }; + return { + fold: function () { + var foldArgs = []; + for (var _i = 0; _i < arguments.length; _i++) { + foldArgs[_i] = arguments[_i]; + } + if (foldArgs.length !== cases.length) { + throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + foldArgs.length); + } + var target = foldArgs[count]; + return target.apply(null, args); + }, + match: match, + log: function (label) { + console.log(label, { + constructors: constructors, + constructor: key, + params: args + }); + } + }; + }; + }); + return adt; + }; + var Adt = { generate: generate$1 }; + + Adt.generate([ + { + bothErrors: [ + 'error1', + 'error2' + ] + }, + { + firstError: [ + 'error1', + 'value2' + ] + }, + { + secondError: [ + 'value1', + 'error2' + ] + }, + { + bothValues: [ + 'value1', + 'value2' + ] + } + ]); + var partition = function (results) { + var errors = []; + var values = []; + each(results, function (result) { + result.fold(function (err) { + errors.push(err); + }, function (value) { + values.push(value); + }); + }); + return { + errors: errors, + values: values + }; + }; + + var value = function (o) { + var or = function (_opt) { + return value(o); + }; + var orThunk = function (_f) { + return value(o); + }; + var map = function (f) { + return value(f(o)); + }; + var mapError = function (_f) { + return value(o); + }; + var each = function (f) { + f(o); + }; + var bind = function (f) { + return f(o); + }; + var fold = function (_, onValue) { + return onValue(o); + }; + var exists = function (f) { + return f(o); + }; + var forall = function (f) { + return f(o); + }; + var toOptional = function () { + return Optional.some(o); + }; + return { + isValue: always, + isError: never, + getOr: constant(o), + getOrThunk: constant(o), + getOrDie: constant(o), + or: or, + orThunk: orThunk, + fold: fold, + map: map, + mapError: mapError, + each: each, + bind: bind, + exists: exists, + forall: forall, + toOptional: toOptional + }; + }; + var error$1 = function (message) { + var getOrThunk = function (f) { + return f(); + }; + var getOrDie = function () { + return die(String(message))(); + }; + var or = identity; + var orThunk = function (f) { + return f(); + }; + var map = function (_f) { + return error$1(message); + }; + var mapError = function (f) { + return error$1(f(message)); + }; + var bind = function (_f) { + return error$1(message); + }; + var fold = function (onError, _) { + return onError(message); + }; + return { + isValue: never, + isError: always, + getOr: identity, + getOrThunk: getOrThunk, + getOrDie: getOrDie, + or: or, + orThunk: orThunk, + fold: fold, + map: map, + mapError: mapError, + each: noop, + bind: bind, + exists: never, + forall: always, + toOptional: Optional.none + }; + }; + var fromOption = function (opt, err) { + return opt.fold(function () { + return error$1(err); + }, value); + }; + var Result = { + value: value, + error: error$1, + fromOption: fromOption + }; + + var isInlinePattern = function (pattern) { + return pattern.type === 'inline-command' || pattern.type === 'inline-format'; + }; + var isBlockPattern = function (pattern) { + return pattern.type === 'block-command' || pattern.type === 'block-format'; + }; + var sortPatterns = function (patterns) { + return sort(patterns, function (a, b) { + if (a.start.length === b.start.length) { + return 0; + } + return a.start.length > b.start.length ? -1 : 1; + }); + }; + var normalizePattern = function (pattern) { + var err = function (message) { + return Result.error({ + message: message, + pattern: pattern + }); + }; + var formatOrCmd = function (name, onFormat, onCommand) { + if (pattern.format !== undefined) { + var formats = void 0; + if (isArray(pattern.format)) { + if (!forall(pattern.format, isString)) { + return err(name + ' pattern has non-string items in the `format` array'); + } + formats = pattern.format; + } else if (isString(pattern.format)) { + formats = [pattern.format]; + } else { + return err(name + ' pattern has non-string `format` parameter'); + } + return Result.value(onFormat(formats)); + } else if (pattern.cmd !== undefined) { + if (!isString(pattern.cmd)) { + return err(name + ' pattern has non-string `cmd` parameter'); + } + return Result.value(onCommand(pattern.cmd, pattern.value)); + } else { + return err(name + ' pattern is missing both `format` and `cmd` parameters'); + } + }; + if (!isObject(pattern)) { + return err('Raw pattern is not an object'); + } + if (!isString(pattern.start)) { + return err('Raw pattern is missing `start` parameter'); + } + if (pattern.end !== undefined) { + if (!isString(pattern.end)) { + return err('Inline pattern has non-string `end` parameter'); + } + if (pattern.start.length === 0 && pattern.end.length === 0) { + return err('Inline pattern has empty `start` and `end` parameters'); + } + var start_1 = pattern.start; + var end_1 = pattern.end; + if (end_1.length === 0) { + end_1 = start_1; + start_1 = ''; + } + return formatOrCmd('Inline', function (format) { + return { + type: 'inline-format', + start: start_1, + end: end_1, + format: format + }; + }, function (cmd, value) { + return { + type: 'inline-command', + start: start_1, + end: end_1, + cmd: cmd, + value: value + }; + }); + } else if (pattern.replacement !== undefined) { + if (!isString(pattern.replacement)) { + return err('Replacement pattern has non-string `replacement` parameter'); + } + if (pattern.start.length === 0) { + return err('Replacement pattern has empty `start` parameter'); + } + return Result.value({ + type: 'inline-command', + start: '', + end: pattern.start, + cmd: 'mceInsertContent', + value: pattern.replacement + }); + } else { + if (pattern.start.length === 0) { + return err('Block pattern has empty `start` parameter'); + } + return formatOrCmd('Block', function (formats) { + return { + type: 'block-format', + start: pattern.start, + format: formats[0] + }; + }, function (command, commandValue) { + return { + type: 'block-command', + start: pattern.start, + cmd: command, + value: commandValue + }; + }); + } + }; + var denormalizePattern = function (pattern) { + if (pattern.type === 'block-command') { + return { + start: pattern.start, + cmd: pattern.cmd, + value: pattern.value + }; + } else if (pattern.type === 'block-format') { + return { + start: pattern.start, + format: pattern.format + }; + } else if (pattern.type === 'inline-command') { + if (pattern.cmd === 'mceInsertContent' && pattern.start === '') { + return { + start: pattern.end, + replacement: pattern.value + }; + } else { + return { + start: pattern.start, + end: pattern.end, + cmd: pattern.cmd, + value: pattern.value + }; + } + } else if (pattern.type === 'inline-format') { + return { + start: pattern.start, + end: pattern.end, + format: pattern.format.length === 1 ? pattern.format[0] : pattern.format + }; + } + }; + var createPatternSet = function (patterns) { + return { + inlinePatterns: filter(patterns, isInlinePattern), + blockPatterns: sortPatterns(filter(patterns, isBlockPattern)) + }; + }; + + var get = function (patternsState) { + var setPatterns = function (newPatterns) { + var normalized = partition(map(newPatterns, normalizePattern)); + if (normalized.errors.length > 0) { + var firstError = normalized.errors[0]; + throw new Error(firstError.message + ':\n' + JSON.stringify(firstError.pattern, null, 2)); + } + patternsState.set(createPatternSet(normalized.values)); + }; + var getPatterns = function () { + return __spreadArray(__spreadArray([], map(patternsState.get().inlinePatterns, denormalizePattern), true), map(patternsState.get().blockPatterns, denormalizePattern), true); + }; + return { + setPatterns: setPatterns, + getPatterns: getPatterns + }; + }; + + var Global = typeof window !== 'undefined' ? window : Function('return this;')(); + + var error = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var console = Global.console; + if (console) { + if (console.error) { + console.error.apply(console, args); + } else { + console.log.apply(console, args); + } + } + }; + var defaultPatterns = [ + { + start: '*', + end: '*', + format: 'italic' + }, + { + start: '**', + end: '**', + format: 'bold' + }, + { + start: '#', + format: 'h1' + }, + { + start: '##', + format: 'h2' + }, + { + start: '###', + format: 'h3' + }, + { + start: '####', + format: 'h4' + }, + { + start: '#####', + format: 'h5' + }, + { + start: '######', + format: 'h6' + }, + { + start: '1. ', + cmd: 'InsertOrderedList' + }, + { + start: '* ', + cmd: 'InsertUnorderedList' + }, + { + start: '- ', + cmd: 'InsertUnorderedList' + } + ]; + var getPatternSet = function (editor) { + var patterns = editor.getParam('textpattern_patterns', defaultPatterns, 'array'); + if (!isArray(patterns)) { + error('The setting textpattern_patterns should be an array'); + return { + inlinePatterns: [], + blockPatterns: [] + }; + } + var normalized = partition(map(patterns, normalizePattern)); + each(normalized.errors, function (err) { + return error(err.message, err.pattern); + }); + return createPatternSet(normalized.values); + }; + var getForcedRootBlock = function (editor) { + var block = editor.getParam('forced_root_block', 'p'); + if (block === false) { + return ''; + } else if (block === true) { + return 'p'; + } else { + return block; + } + }; + + var global$4 = tinymce.util.Tools.resolve('tinymce.util.Delay'); + + var global$3 = tinymce.util.Tools.resolve('tinymce.util.VK'); + + var zeroWidth = '\uFEFF'; + var nbsp = '\xA0'; + + var global$2 = tinymce.util.Tools.resolve('tinymce.util.Tools'); + + var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); + + var global = tinymce.util.Tools.resolve('tinymce.dom.TextSeeker'); + + var point = function (container, offset) { + return { + container: container, + offset: offset + }; + }; + + var isText = function (node) { + return node.nodeType === Node.TEXT_NODE; + }; + var cleanEmptyNodes = function (dom, node, isRoot) { + if (node && dom.isEmpty(node) && !isRoot(node)) { + var parent_1 = node.parentNode; + dom.remove(node); + cleanEmptyNodes(dom, parent_1, isRoot); + } + }; + var deleteRng = function (dom, rng, isRoot, clean) { + if (clean === void 0) { + clean = true; + } + var startParent = rng.startContainer.parentNode; + var endParent = rng.endContainer.parentNode; + rng.deleteContents(); + if (clean && !isRoot(rng.startContainer)) { + if (isText(rng.startContainer) && rng.startContainer.data.length === 0) { + dom.remove(rng.startContainer); + } + if (isText(rng.endContainer) && rng.endContainer.data.length === 0) { + dom.remove(rng.endContainer); + } + cleanEmptyNodes(dom, startParent, isRoot); + if (startParent !== endParent) { + cleanEmptyNodes(dom, endParent, isRoot); + } + } + }; + var isBlockFormatName = function (name, formatter) { + var formatSet = formatter.get(name); + return isArray(formatSet) && head(formatSet).exists(function (format) { + return has(format, 'block'); + }); + }; + var isReplacementPattern = function (pattern) { + return pattern.start.length === 0; + }; + var getParentBlock = function (editor, rng) { + var parentBlockOpt = Optional.from(editor.dom.getParent(rng.startContainer, editor.dom.isBlock)); + if (getForcedRootBlock(editor) === '') { + return parentBlockOpt.orThunk(function () { + return Optional.some(editor.getBody()); + }); + } else { + return parentBlockOpt; + } + }; + + var DOM = global$1.DOM; + var alwaysNext = function (startNode) { + return function (node) { + return startNode === node ? -1 : 0; + }; + }; + var isBoundary = function (dom) { + return function (node) { + return dom.isBlock(node) || contains([ + 'BR', + 'IMG', + 'HR', + 'INPUT' + ], node.nodeName) || dom.getContentEditable(node) === 'false'; + }; + }; + var textBefore = function (node, offset, rootNode) { + if (isText(node) && offset >= 0) { + return Optional.some(point(node, offset)); + } else { + var textSeeker = global(DOM); + return Optional.from(textSeeker.backwards(node, offset, alwaysNext(node), rootNode)).map(function (prev) { + return point(prev.container, prev.container.data.length); + }); + } + }; + var textAfter = function (node, offset, rootNode) { + if (isText(node) && offset >= node.length) { + return Optional.some(point(node, offset)); + } else { + var textSeeker = global(DOM); + return Optional.from(textSeeker.forwards(node, offset, alwaysNext(node), rootNode)).map(function (prev) { + return point(prev.container, 0); + }); + } + }; + var scanLeft = function (node, offset, rootNode) { + if (!isText(node)) { + return Optional.none(); + } + var text = node.textContent; + if (offset >= 0 && offset <= text.length) { + return Optional.some(point(node, offset)); + } else { + var textSeeker = global(DOM); + return Optional.from(textSeeker.backwards(node, offset, alwaysNext(node), rootNode)).bind(function (prev) { + var prevText = prev.container.data; + return scanLeft(prev.container, offset + prevText.length, rootNode); + }); + } + }; + var scanRight = function (node, offset, rootNode) { + if (!isText(node)) { + return Optional.none(); + } + var text = node.textContent; + if (offset <= text.length) { + return Optional.some(point(node, offset)); + } else { + var textSeeker = global(DOM); + return Optional.from(textSeeker.forwards(node, offset, alwaysNext(node), rootNode)).bind(function (next) { + return scanRight(next.container, offset - text.length, rootNode); + }); + } + }; + var repeatLeft = function (dom, node, offset, process, rootNode) { + var search = global(dom, isBoundary(dom)); + return Optional.from(search.backwards(node, offset, process, rootNode)); + }; + + var generatePath = function (root, node, offset) { + if (isText(node) && (offset < 0 || offset > node.data.length)) { + return []; + } + var p = [offset]; + var current = node; + while (current !== root && current.parentNode) { + var parent_1 = current.parentNode; + for (var i = 0; i < parent_1.childNodes.length; i++) { + if (parent_1.childNodes[i] === current) { + p.push(i); + break; + } + } + current = parent_1; + } + return current === root ? p.reverse() : []; + }; + var generatePathRange = function (root, startNode, startOffset, endNode, endOffset) { + var start = generatePath(root, startNode, startOffset); + var end = generatePath(root, endNode, endOffset); + return { + start: start, + end: end + }; + }; + var resolvePath = function (root, path) { + var nodePath = path.slice(); + var offset = nodePath.pop(); + var resolvedNode = foldl(nodePath, function (optNode, index) { + return optNode.bind(function (node) { + return Optional.from(node.childNodes[index]); + }); + }, Optional.some(root)); + return resolvedNode.bind(function (node) { + if (isText(node) && (offset < 0 || offset > node.data.length)) { + return Optional.none(); + } else { + return Optional.some({ + node: node, + offset: offset + }); + } + }); + }; + var resolvePathRange = function (root, range) { + return resolvePath(root, range.start).bind(function (_a) { + var startNode = _a.node, startOffset = _a.offset; + return resolvePath(root, range.end).map(function (_a) { + var endNode = _a.node, endOffset = _a.offset; + var rng = document.createRange(); + rng.setStart(startNode, startOffset); + rng.setEnd(endNode, endOffset); + return rng; + }); + }); + }; + var generatePathRangeFromRange = function (root, range) { + return generatePathRange(root, range.startContainer, range.startOffset, range.endContainer, range.endOffset); + }; + + var stripPattern = function (dom, block, pattern) { + var firstTextNode = textAfter(block, 0, block); + firstTextNode.each(function (spot) { + var node = spot.container; + scanRight(node, pattern.start.length, block).each(function (end) { + var rng = dom.createRng(); + rng.setStart(node, 0); + rng.setEnd(end.container, end.offset); + deleteRng(dom, rng, function (e) { + return e === block; + }); + }); + }); + }; + var applyPattern$1 = function (editor, match) { + var dom = editor.dom; + var pattern = match.pattern; + var rng = resolvePathRange(dom.getRoot(), match.range).getOrDie('Unable to resolve path range'); + getParentBlock(editor, rng).each(function (block) { + if (pattern.type === 'block-format') { + if (isBlockFormatName(pattern.format, editor.formatter)) { + editor.undoManager.transact(function () { + stripPattern(editor.dom, block, pattern); + editor.formatter.apply(pattern.format); + }); + } + } else if (pattern.type === 'block-command') { + editor.undoManager.transact(function () { + stripPattern(editor.dom, block, pattern); + editor.execCommand(pattern.cmd, false, pattern.value); + }); + } + }); + return true; + }; + var findPattern$1 = function (patterns, text) { + var nuText = text.replace(nbsp, ' '); + return find(patterns, function (pattern) { + return text.indexOf(pattern.start) === 0 || nuText.indexOf(pattern.start) === 0; + }); + }; + var findPatterns$1 = function (editor, patterns) { + var dom = editor.dom; + var rng = editor.selection.getRng(); + return getParentBlock(editor, rng).filter(function (block) { + var forcedRootBlock = getForcedRootBlock(editor); + var matchesForcedRootBlock = forcedRootBlock === '' && dom.is(block, 'body') || dom.is(block, forcedRootBlock); + return block !== null && matchesForcedRootBlock; + }).bind(function (block) { + var blockText = block.textContent; + var matchedPattern = findPattern$1(patterns, blockText); + return matchedPattern.map(function (pattern) { + if (global$2.trim(blockText).length === pattern.start.length) { + return []; + } + return [{ + pattern: pattern, + range: generatePathRange(dom.getRoot(), block, 0, block, 0) + }]; + }); + }).getOr([]); + }; + var applyMatches$1 = function (editor, matches) { + if (matches.length === 0) { + return; + } + var bookmark = editor.selection.getBookmark(); + each(matches, function (match) { + return applyPattern$1(editor, match); + }); + editor.selection.moveToBookmark(bookmark); + }; + + var unique = 0; + var generate = function (prefix) { + var date = new Date(); + var time = date.getTime(); + var random = Math.floor(Math.random() * 1000000000); + unique++; + return prefix + '_' + random + unique + String(time); + }; + + var checkRange = function (str, substr, start) { + return substr === '' || str.length >= substr.length && str.substr(start, start + substr.length) === substr; + }; + var endsWith = function (str, suffix) { + return checkRange(str, suffix, str.length - suffix.length); + }; + + var newMarker = function (dom, id) { + return dom.create('span', { + 'data-mce-type': 'bookmark', + id: id + }); + }; + var rangeFromMarker = function (dom, marker) { + var rng = dom.createRng(); + rng.setStartAfter(marker.start); + rng.setEndBefore(marker.end); + return rng; + }; + var createMarker = function (dom, markerPrefix, pathRange) { + var rng = resolvePathRange(dom.getRoot(), pathRange).getOrDie('Unable to resolve path range'); + var startNode = rng.startContainer; + var endNode = rng.endContainer; + var textEnd = rng.endOffset === 0 ? endNode : endNode.splitText(rng.endOffset); + var textStart = rng.startOffset === 0 ? startNode : startNode.splitText(rng.startOffset); + return { + prefix: markerPrefix, + end: textEnd.parentNode.insertBefore(newMarker(dom, markerPrefix + '-end'), textEnd), + start: textStart.parentNode.insertBefore(newMarker(dom, markerPrefix + '-start'), textStart) + }; + }; + var removeMarker = function (dom, marker, isRoot) { + cleanEmptyNodes(dom, dom.get(marker.prefix + '-end'), isRoot); + cleanEmptyNodes(dom, dom.get(marker.prefix + '-start'), isRoot); + }; + + var matchesPattern = function (dom, block, patternContent) { + return function (element, offset) { + var text = element.data; + var searchText = text.substring(0, offset); + var startEndIndex = searchText.lastIndexOf(patternContent.charAt(patternContent.length - 1)); + var startIndex = searchText.lastIndexOf(patternContent); + if (startIndex !== -1) { + return startIndex + patternContent.length; + } else if (startEndIndex !== -1) { + return startEndIndex + 1; + } else { + return -1; + } + }; + }; + var findPatternStartFromSpot = function (dom, pattern, block, spot) { + var startPattern = pattern.start; + var startSpot = repeatLeft(dom, spot.container, spot.offset, matchesPattern(dom, block, startPattern), block); + return startSpot.bind(function (spot) { + if (spot.offset >= startPattern.length) { + var rng = dom.createRng(); + rng.setStart(spot.container, spot.offset - startPattern.length); + rng.setEnd(spot.container, spot.offset); + return Optional.some(rng); + } else { + var offset = spot.offset - startPattern.length; + return scanLeft(spot.container, offset, block).map(function (nextSpot) { + var rng = dom.createRng(); + rng.setStart(nextSpot.container, nextSpot.offset); + rng.setEnd(spot.container, spot.offset); + return rng; + }).filter(function (rng) { + return rng.toString() === startPattern; + }).orThunk(function () { + return findPatternStartFromSpot(dom, pattern, block, point(spot.container, 0)); + }); + } + }); + }; + var findPatternStart = function (dom, pattern, node, offset, block, requireGap) { + if (requireGap === void 0) { + requireGap = false; + } + if (pattern.start.length === 0 && !requireGap) { + var rng = dom.createRng(); + rng.setStart(node, offset); + rng.setEnd(node, offset); + return Optional.some(rng); + } + return textBefore(node, offset, block).bind(function (spot) { + var start = findPatternStartFromSpot(dom, pattern, block, spot); + return start.bind(function (startRange) { + if (requireGap) { + if (startRange.endContainer === spot.container && startRange.endOffset === spot.offset) { + return Optional.none(); + } else if (spot.offset === 0 && startRange.endContainer.textContent.length === startRange.endOffset) { + return Optional.none(); + } + } + return Optional.some(startRange); + }); + }); + }; + var findPattern = function (editor, block, details) { + var dom = editor.dom; + var root = dom.getRoot(); + var pattern = details.pattern; + var endNode = details.position.container; + var endOffset = details.position.offset; + return scanLeft(endNode, endOffset - details.pattern.end.length, block).bind(function (spot) { + var endPathRng = generatePathRange(root, spot.container, spot.offset, endNode, endOffset); + if (isReplacementPattern(pattern)) { + return Optional.some({ + matches: [{ + pattern: pattern, + startRng: endPathRng, + endRng: endPathRng + }], + position: spot + }); + } else { + var resultsOpt = findPatternsRec(editor, details.remainingPatterns, spot.container, spot.offset, block); + var results_1 = resultsOpt.getOr({ + matches: [], + position: spot + }); + var pos = results_1.position; + var start = findPatternStart(dom, pattern, pos.container, pos.offset, block, resultsOpt.isNone()); + return start.map(function (startRng) { + var startPathRng = generatePathRangeFromRange(root, startRng); + return { + matches: results_1.matches.concat([{ + pattern: pattern, + startRng: startPathRng, + endRng: endPathRng + }]), + position: point(startRng.startContainer, startRng.startOffset) + }; + }); + } + }); + }; + var findPatternsRec = function (editor, patterns, node, offset, block) { + var dom = editor.dom; + return textBefore(node, offset, dom.getRoot()).bind(function (endSpot) { + var rng = dom.createRng(); + rng.setStart(block, 0); + rng.setEnd(node, offset); + var text = rng.toString(); + for (var i = 0; i < patterns.length; i++) { + var pattern = patterns[i]; + if (!endsWith(text, pattern.end)) { + continue; + } + var patternsWithoutCurrent = patterns.slice(); + patternsWithoutCurrent.splice(i, 1); + var result = findPattern(editor, block, { + pattern: pattern, + remainingPatterns: patternsWithoutCurrent, + position: endSpot + }); + if (result.isSome()) { + return result; + } + } + return Optional.none(); + }); + }; + var applyPattern = function (editor, pattern, patternRange) { + editor.selection.setRng(patternRange); + if (pattern.type === 'inline-format') { + each(pattern.format, function (format) { + editor.formatter.apply(format); + }); + } else { + editor.execCommand(pattern.cmd, false, pattern.value); + } + }; + var applyReplacementPattern = function (editor, pattern, marker, isRoot) { + var markerRange = rangeFromMarker(editor.dom, marker); + deleteRng(editor.dom, markerRange, isRoot); + applyPattern(editor, pattern, markerRange); + }; + var applyPatternWithContent = function (editor, pattern, startMarker, endMarker, isRoot) { + var dom = editor.dom; + var markerEndRange = rangeFromMarker(dom, endMarker); + var markerStartRange = rangeFromMarker(dom, startMarker); + deleteRng(dom, markerStartRange, isRoot); + deleteRng(dom, markerEndRange, isRoot); + var patternMarker = { + prefix: startMarker.prefix, + start: startMarker.end, + end: endMarker.start + }; + var patternRange = rangeFromMarker(dom, patternMarker); + applyPattern(editor, pattern, patternRange); + }; + var addMarkers = function (dom, matches) { + var markerPrefix = generate('mce_textpattern'); + var matchesWithEnds = foldr(matches, function (acc, match) { + var endMarker = createMarker(dom, markerPrefix + ('_end' + acc.length), match.endRng); + return acc.concat([__assign(__assign({}, match), { endMarker: endMarker })]); + }, []); + return foldr(matchesWithEnds, function (acc, match) { + var idx = matchesWithEnds.length - acc.length - 1; + var startMarker = isReplacementPattern(match.pattern) ? match.endMarker : createMarker(dom, markerPrefix + ('_start' + idx), match.startRng); + return acc.concat([__assign(__assign({}, match), { startMarker: startMarker })]); + }, []); + }; + var findPatterns = function (editor, patterns, space) { + var rng = editor.selection.getRng(); + if (rng.collapsed === false) { + return []; + } + return getParentBlock(editor, rng).bind(function (block) { + var offset = rng.startOffset - (space ? 1 : 0); + return findPatternsRec(editor, patterns, rng.startContainer, offset, block); + }).fold(function () { + return []; + }, function (result) { + return result.matches; + }); + }; + var applyMatches = function (editor, matches) { + if (matches.length === 0) { + return; + } + var dom = editor.dom; + var bookmark = editor.selection.getBookmark(); + var matchesWithMarkers = addMarkers(dom, matches); + each(matchesWithMarkers, function (match) { + var block = dom.getParent(match.startMarker.start, dom.isBlock); + var isRoot = function (node) { + return node === block; + }; + if (isReplacementPattern(match.pattern)) { + applyReplacementPattern(editor, match.pattern, match.endMarker, isRoot); + } else { + applyPatternWithContent(editor, match.pattern, match.startMarker, match.endMarker, isRoot); + } + removeMarker(dom, match.endMarker, isRoot); + removeMarker(dom, match.startMarker, isRoot); + }); + editor.selection.moveToBookmark(bookmark); + }; + + var handleEnter = function (editor, patternSet) { + if (!editor.selection.isCollapsed()) { + return false; + } + var inlineMatches = findPatterns(editor, patternSet.inlinePatterns, false); + var blockMatches = findPatterns$1(editor, patternSet.blockPatterns); + if (blockMatches.length > 0 || inlineMatches.length > 0) { + editor.undoManager.add(); + editor.undoManager.extra(function () { + editor.execCommand('mceInsertNewLine'); + }, function () { + editor.insertContent(zeroWidth); + applyMatches(editor, inlineMatches); + applyMatches$1(editor, blockMatches); + var range = editor.selection.getRng(); + var spot = textBefore(range.startContainer, range.startOffset, editor.dom.getRoot()); + editor.execCommand('mceInsertNewLine'); + spot.each(function (s) { + var node = s.container; + if (node.data.charAt(s.offset - 1) === zeroWidth) { + node.deleteData(s.offset - 1, 1); + cleanEmptyNodes(editor.dom, node.parentNode, function (e) { + return e === editor.dom.getRoot(); + }); + } + }); + }); + return true; + } + return false; + }; + var handleInlineKey = function (editor, patternSet) { + var inlineMatches = findPatterns(editor, patternSet.inlinePatterns, true); + if (inlineMatches.length > 0) { + editor.undoManager.transact(function () { + applyMatches(editor, inlineMatches); + }); + } + }; + var checkKeyEvent = function (codes, event, predicate) { + for (var i = 0; i < codes.length; i++) { + if (predicate(codes[i], event)) { + return true; + } + } + return false; + }; + var checkKeyCode = function (codes, event) { + return checkKeyEvent(codes, event, function (code, event) { + return code === event.keyCode && global$3.modifierPressed(event) === false; + }); + }; + var checkCharCode = function (chars, event) { + return checkKeyEvent(chars, event, function (chr, event) { + return chr.charCodeAt(0) === event.charCode; + }); + }; + + var setup = function (editor, patternsState) { + var charCodes = [ + ',', + '.', + ';', + ':', + '!', + '?' + ]; + var keyCodes = [32]; + editor.on('keydown', function (e) { + if (e.keyCode === 13 && !global$3.modifierPressed(e)) { + if (handleEnter(editor, patternsState.get())) { + e.preventDefault(); + } + } + }, true); + editor.on('keyup', function (e) { + if (checkKeyCode(keyCodes, e)) { + handleInlineKey(editor, patternsState.get()); + } + }); + editor.on('keypress', function (e) { + if (checkCharCode(charCodes, e)) { + global$4.setEditorTimeout(editor, function () { + handleInlineKey(editor, patternsState.get()); + }); + } + }); + }; + + function Plugin () { + global$5.add('textpattern', function (editor) { + var patternsState = Cell(getPatternSet(editor)); + setup(editor, patternsState); + return get(patternsState); + }); + } + + Plugin(); + +}()); + +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.6 (2022-10-19) + */ +(function () { + 'use strict'; + + var Cell = function (initial) { + var value = initial; + var get = function () { + return value; + }; + var set = function (v) { + value = v; + }; + return { + get: get, + set: set + }; + }; + + var global$1 = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var get$2 = function (toggleState) { + var isEnabled = function () { + return toggleState.get(); + }; + return { isEnabled: isEnabled }; + }; + + var fireVisualChars = function (editor, state) { + return editor.fire('VisualChars', { state: state }); + }; + + var typeOf = function (x) { + var t = typeof x; + if (x === null) { + return 'null'; + } else if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) { + return 'array'; + } else if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) { + return 'string'; + } else { + return t; + } + }; + var isType$1 = function (type) { + return function (value) { + return typeOf(value) === type; + }; + }; + var isSimpleType = function (type) { + return function (value) { + return typeof value === type; + }; + }; + var isString = isType$1('string'); + var isBoolean = isSimpleType('boolean'); + var isNumber = isSimpleType('number'); + + var noop = function () { + }; + var constant = function (value) { + return function () { + return value; + }; + }; + var identity = function (x) { + return x; + }; + var never = constant(false); + var always = constant(true); + + var none = function () { + return NONE; + }; + var NONE = function () { + var call = function (thunk) { + return thunk(); + }; + var id = identity; + var me = { + fold: function (n, _s) { + return n(); + }, + isSome: never, + isNone: always, + getOr: id, + getOrThunk: call, + getOrDie: function (msg) { + throw new Error(msg || 'error: getOrDie called on none.'); + }, + getOrNull: constant(null), + getOrUndefined: constant(undefined), + or: id, + orThunk: call, + map: none, + each: noop, + bind: none, + exists: never, + forall: always, + filter: function () { + return none(); + }, + toArray: function () { + return []; + }, + toString: constant('none()') + }; + return me; + }(); + var some = function (a) { + var constant_a = constant(a); + var self = function () { + return me; + }; + var bind = function (f) { + return f(a); + }; + var me = { + fold: function (n, s) { + return s(a); + }, + isSome: always, + isNone: never, + getOr: constant_a, + getOrThunk: constant_a, + getOrDie: constant_a, + getOrNull: constant_a, + getOrUndefined: constant_a, + or: self, + orThunk: self, + map: function (f) { + return some(f(a)); + }, + each: function (f) { + f(a); + }, + bind: bind, + exists: bind, + forall: bind, + filter: function (f) { + return f(a) ? me : NONE; + }, + toArray: function () { + return [a]; + }, + toString: function () { + return 'some(' + a + ')'; + } + }; + return me; + }; + var from = function (value) { + return value === null || value === undefined ? NONE : some(value); + }; + var Optional = { + some: some, + none: none, + from: from + }; + + var map = function (xs, f) { + var len = xs.length; + var r = new Array(len); + for (var i = 0; i < len; i++) { + var x = xs[i]; + r[i] = f(x, i); + } + return r; + }; + var each$1 = function (xs, f) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + f(x, i); + } + }; + var filter = function (xs, pred) { + var r = []; + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i)) { + r.push(x); + } + } + return r; + }; + + var keys = Object.keys; + var each = function (obj, f) { + var props = keys(obj); + for (var k = 0, len = props.length; k < len; k++) { + var i = props[k]; + var x = obj[i]; + f(x, i); + } + }; + + typeof window !== 'undefined' ? window : Function('return this;')(); + + var TEXT = 3; + + var type = function (element) { + return element.dom.nodeType; + }; + var value = function (element) { + return element.dom.nodeValue; + }; + var isType = function (t) { + return function (element) { + return type(element) === t; + }; + }; + var isText = isType(TEXT); + + var rawSet = function (dom, key, value) { + if (isString(value) || isBoolean(value) || isNumber(value)) { + dom.setAttribute(key, value + ''); + } else { + console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom); + throw new Error('Attribute value was not simple'); + } + }; + var set = function (element, key, value) { + rawSet(element.dom, key, value); + }; + var get$1 = function (element, key) { + var v = element.dom.getAttribute(key); + return v === null ? undefined : v; + }; + var remove$3 = function (element, key) { + element.dom.removeAttribute(key); + }; + + var read = function (element, attr) { + var value = get$1(element, attr); + return value === undefined || value === '' ? [] : value.split(' '); + }; + var add$2 = function (element, attr, id) { + var old = read(element, attr); + var nu = old.concat([id]); + set(element, attr, nu.join(' ')); + return true; + }; + var remove$2 = function (element, attr, id) { + var nu = filter(read(element, attr), function (v) { + return v !== id; + }); + if (nu.length > 0) { + set(element, attr, nu.join(' ')); + } else { + remove$3(element, attr); + } + return false; + }; + + var supports = function (element) { + return element.dom.classList !== undefined; + }; + var get = function (element) { + return read(element, 'class'); + }; + var add$1 = function (element, clazz) { + return add$2(element, 'class', clazz); + }; + var remove$1 = function (element, clazz) { + return remove$2(element, 'class', clazz); + }; + + var add = function (element, clazz) { + if (supports(element)) { + element.dom.classList.add(clazz); + } else { + add$1(element, clazz); + } + }; + var cleanClass = function (element) { + var classList = supports(element) ? element.dom.classList : get(element); + if (classList.length === 0) { + remove$3(element, 'class'); + } + }; + var remove = function (element, clazz) { + if (supports(element)) { + var classList = element.dom.classList; + classList.remove(clazz); + } else { + remove$1(element, clazz); + } + cleanClass(element); + }; + + var fromHtml = function (html, scope) { + var doc = scope || document; + var div = doc.createElement('div'); + div.innerHTML = html; + if (!div.hasChildNodes() || div.childNodes.length > 1) { + console.error('HTML does not have a single root node', html); + throw new Error('HTML must have a single root node'); + } + return fromDom(div.childNodes[0]); + }; + var fromTag = function (tag, scope) { + var doc = scope || document; + var node = doc.createElement(tag); + return fromDom(node); + }; + var fromText = function (text, scope) { + var doc = scope || document; + var node = doc.createTextNode(text); + return fromDom(node); + }; + var fromDom = function (node) { + if (node === null || node === undefined) { + throw new Error('Node cannot be null or undefined'); + } + return { dom: node }; + }; + var fromPoint = function (docElm, x, y) { + return Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom); + }; + var SugarElement = { + fromHtml: fromHtml, + fromTag: fromTag, + fromText: fromText, + fromDom: fromDom, + fromPoint: fromPoint + }; + + var charMap = { + '\xA0': 'nbsp', + '\xAD': 'shy' + }; + var charMapToRegExp = function (charMap, global) { + var regExp = ''; + each(charMap, function (_value, key) { + regExp += key; + }); + return new RegExp('[' + regExp + ']', global ? 'g' : ''); + }; + var charMapToSelector = function (charMap) { + var selector = ''; + each(charMap, function (value) { + if (selector) { + selector += ','; + } + selector += 'span.mce-' + value; + }); + return selector; + }; + var regExp = charMapToRegExp(charMap); + var regExpGlobal = charMapToRegExp(charMap, true); + var selector = charMapToSelector(charMap); + var nbspClass = 'mce-nbsp'; + + var wrapCharWithSpan = function (value) { + return '' + value + ''; + }; + + var isMatch = function (n) { + var value$1 = value(n); + return isText(n) && value$1 !== undefined && regExp.test(value$1); + }; + var filterDescendants = function (scope, predicate) { + var result = []; + var dom = scope.dom; + var children = map(dom.childNodes, SugarElement.fromDom); + each$1(children, function (x) { + if (predicate(x)) { + result = result.concat([x]); + } + result = result.concat(filterDescendants(x, predicate)); + }); + return result; + }; + var findParentElm = function (elm, rootElm) { + while (elm.parentNode) { + if (elm.parentNode === rootElm) { + return elm; + } + elm = elm.parentNode; + } + }; + var replaceWithSpans = function (text) { + return text.replace(regExpGlobal, wrapCharWithSpan); + }; + + var isWrappedNbsp = function (node) { + return node.nodeName.toLowerCase() === 'span' && node.classList.contains('mce-nbsp-wrap'); + }; + var show = function (editor, rootElm) { + var nodeList = filterDescendants(SugarElement.fromDom(rootElm), isMatch); + each$1(nodeList, function (n) { + var parent = n.dom.parentNode; + if (isWrappedNbsp(parent)) { + add(SugarElement.fromDom(parent), nbspClass); + } else { + var withSpans = replaceWithSpans(editor.dom.encode(value(n))); + var div = editor.dom.create('div', null, withSpans); + var node = void 0; + while (node = div.lastChild) { + editor.dom.insertAfter(node, n.dom); + } + editor.dom.remove(n.dom); + } + }); + }; + var hide = function (editor, rootElm) { + var nodeList = editor.dom.select(selector, rootElm); + each$1(nodeList, function (node) { + if (isWrappedNbsp(node)) { + remove(SugarElement.fromDom(node), nbspClass); + } else { + editor.dom.remove(node, true); + } + }); + }; + var toggle = function (editor) { + var body = editor.getBody(); + var bookmark = editor.selection.getBookmark(); + var parentNode = findParentElm(editor.selection.getNode(), body); + parentNode = parentNode !== undefined ? parentNode : body; + hide(editor, parentNode); + show(editor, parentNode); + editor.selection.moveToBookmark(bookmark); + }; + + var applyVisualChars = function (editor, toggleState) { + fireVisualChars(editor, toggleState.get()); + var body = editor.getBody(); + if (toggleState.get() === true) { + show(editor, body); + } else { + hide(editor, body); + } + }; + var toggleVisualChars = function (editor, toggleState) { + toggleState.set(!toggleState.get()); + var bookmark = editor.selection.getBookmark(); + applyVisualChars(editor, toggleState); + editor.selection.moveToBookmark(bookmark); + }; + + var register$1 = function (editor, toggleState) { + editor.addCommand('mceVisualChars', function () { + toggleVisualChars(editor, toggleState); + }); + }; + + var isEnabledByDefault = function (editor) { + return editor.getParam('visualchars_default_state', false); + }; + var hasForcedRootBlock = function (editor) { + return editor.getParam('forced_root_block') !== false; + }; + + var setup$1 = function (editor, toggleState) { + editor.on('init', function () { + applyVisualChars(editor, toggleState); + }); + }; + + var global = tinymce.util.Tools.resolve('tinymce.util.Delay'); + + var setup = function (editor, toggleState) { + var debouncedToggle = global.debounce(function () { + toggle(editor); + }, 300); + if (hasForcedRootBlock(editor)) { + editor.on('keydown', function (e) { + if (toggleState.get() === true) { + e.keyCode === 13 ? toggle(editor) : debouncedToggle(); + } + }); + } + editor.on('remove', debouncedToggle.stop); + }; + + var toggleActiveState = function (editor, enabledStated) { + return function (api) { + api.setActive(enabledStated.get()); + var editorEventCallback = function (e) { + return api.setActive(e.state); + }; + editor.on('VisualChars', editorEventCallback); + return function () { + return editor.off('VisualChars', editorEventCallback); + }; + }; + }; + var register = function (editor, toggleState) { + var onAction = function () { + return editor.execCommand('mceVisualChars'); + }; + editor.ui.registry.addToggleButton('visualchars', { + tooltip: 'Show invisible characters', + icon: 'visualchars', + onAction: onAction, + onSetup: toggleActiveState(editor, toggleState) + }); + editor.ui.registry.addToggleMenuItem('visualchars', { + text: 'Show invisible characters', + icon: 'visualchars', + onAction: onAction, + onSetup: toggleActiveState(editor, toggleState) + }); + }; + + function Plugin () { + global$1.add('visualchars', function (editor) { + var toggleState = Cell(isEnabledByDefault(editor)); + register$1(editor, toggleState); + register(editor, toggleState); + setup(editor, toggleState); + setup$1(editor, toggleState); + return get$2(toggleState); + }); + } + + Plugin(); + +}()); + +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.6 (2022-10-19) + */ +(function () { + 'use strict'; + + var Cell = function (initial) { + var value = initial; + var get = function () { + return value; + }; + var set = function (v) { + value = v; + }; + return { + get: get, + set: set + }; + }; + + var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var fireVisualBlocks = function (editor, state) { + editor.fire('VisualBlocks', { state: state }); + }; + + var toggleVisualBlocks = function (editor, pluginUrl, enabledState) { + var dom = editor.dom; + dom.toggleClass(editor.getBody(), 'mce-visualblocks'); + enabledState.set(!enabledState.get()); + fireVisualBlocks(editor, enabledState.get()); + }; + + var register$1 = function (editor, pluginUrl, enabledState) { + editor.addCommand('mceVisualBlocks', function () { + toggleVisualBlocks(editor, pluginUrl, enabledState); + }); + }; + + var isEnabledByDefault = function (editor) { + return editor.getParam('visualblocks_default_state', false, 'boolean'); + }; + + var setup = function (editor, pluginUrl, enabledState) { + editor.on('PreviewFormats AfterPreviewFormats', function (e) { + if (enabledState.get()) { + editor.dom.toggleClass(editor.getBody(), 'mce-visualblocks', e.type === 'afterpreviewformats'); + } + }); + editor.on('init', function () { + if (isEnabledByDefault(editor)) { + toggleVisualBlocks(editor, pluginUrl, enabledState); + } + }); + }; + + var toggleActiveState = function (editor, enabledState) { + return function (api) { + api.setActive(enabledState.get()); + var editorEventCallback = function (e) { + return api.setActive(e.state); + }; + editor.on('VisualBlocks', editorEventCallback); + return function () { + return editor.off('VisualBlocks', editorEventCallback); + }; + }; + }; + var register = function (editor, enabledState) { + var onAction = function () { + return editor.execCommand('mceVisualBlocks'); + }; + editor.ui.registry.addToggleButton('visualblocks', { + icon: 'visualblocks', + tooltip: 'Show blocks', + onAction: onAction, + onSetup: toggleActiveState(editor, enabledState) + }); + editor.ui.registry.addToggleMenuItem('visualblocks', { + text: 'Show blocks', + icon: 'visualblocks', + onAction: onAction, + onSetup: toggleActiveState(editor, enabledState) + }); + }; + + function Plugin () { + global.add('visualblocks', function (editor, pluginUrl) { + var enabledState = Cell(false); + register$1(editor, pluginUrl, enabledState); + register(editor, enabledState); + setup(editor, pluginUrl, enabledState); + }); + } + + Plugin(); + +}()); + +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + * + * Version: 5.10.6 (2022-10-19) + */ +(function () { + 'use strict'; + + var global$2 = tinymce.util.Tools.resolve('tinymce.PluginManager'); + + var identity = function (x) { + return x; + }; + + var __assign = function () { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) + if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + var zeroWidth = '\uFEFF'; + var removeZwsp$1 = function (s) { + return s.replace(/\uFEFF/g, ''); + }; + + var map = function (xs, f) { + var len = xs.length; + var r = new Array(len); + for (var i = 0; i < len; i++) { + var x = xs[i]; + r[i] = f(x, i); + } + return r; + }; + + var punctuationStr = '[!-#%-*,-\\/:;?@\\[-\\]_{}\xA1\xAB\xB7\xBB\xBF;\xB7\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1361-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u3008\u3009\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30\u2E31\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uff3f\uFF5B\uFF5D\uFF5F-\uFF65]'; + var regExps = { + aletter: '[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05F3\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u10a0-\u10c5\u10d0-\u10fa\u10fc\u1100-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1a00-\u1a16\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bc0-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u24B6-\u24E9\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2d00-\u2d25\u2d30-\u2d65\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005\u303b\u303c\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790\ua791\ua7a0-\ua7a9\ua7fa-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uffa0-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]', + midnumlet: '[-\'\\.\u2018\u2019\u2024\uFE52\uFF07\uFF0E]', + midletter: '[:\xB7\xB7\u05F4\u2027\uFE13\uFE55\uFF1A]', + midnum: '[\xB1+*/,;;\u0589\u060C\u060D\u066C\u07F8\u2044\uFE10\uFE14\uFE50\uFE54\uFF0C\uFF1B]', + numeric: '[0-9\u0660-\u0669\u066B\u06f0-\u06f9\u07c0-\u07c9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be6-\u0bef\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f29\u1040-\u1049\u1090-\u1099\u17e0-\u17e9\u1810-\u1819\u1946-\u194f\u19d0-\u19d9\u1a80-\u1a89\u1a90-\u1a99\u1b50-\u1b59\u1bb0-\u1bb9\u1c40-\u1c49\u1c50-\u1c59\ua620-\ua629\ua8d0-\ua8d9\ua900-\ua909\ua9d0-\ua9d9\uaa50-\uaa59\uabf0-\uabf9]', + cr: '\\r', + lf: '\\n', + newline: '[\x0B\f\x85\u2028\u2029]', + extend: '[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0c01-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d02\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f\u109a-\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b6-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u192b\u1930-\u193b\u19b0-\u19c0\u19c8\u19c9\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f\u1b00-\u1b04\u1b34-\u1b44\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1baa\u1be6-\u1bf3\u1c24-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2\u1dc0-\u1de6\u1dfc-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\uA672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa7b\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe3-\uabea\uabec\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]', + format: '[\xAD\u0600-\u0603\u06DD\u070F\u17b4\u17b5\u200E\u200F\u202A-\u202E\u2060-\u2064\u206A-\u206F\uFEFF\uFFF9-\uFFFB]', + katakana: '[\u3031-\u3035\u309B\u309C\u30A0-\u30fa\u30fc-\u30ff\u31f0-\u31ff\u32D0-\u32FE\u3300-\u3357\uff66-\uff9d]', + extendnumlet: '[=_\u203f\u2040\u2054\ufe33\ufe34\ufe4d-\ufe4f\uff3f\u2200-\u22FF<>]', + punctuation: punctuationStr + }; + var characterIndices = { + ALETTER: 0, + MIDNUMLET: 1, + MIDLETTER: 2, + MIDNUM: 3, + NUMERIC: 4, + CR: 5, + LF: 6, + NEWLINE: 7, + EXTEND: 8, + FORMAT: 9, + KATAKANA: 10, + EXTENDNUMLET: 11, + AT: 12, + OTHER: 13 + }; + var SETS$1 = [ + new RegExp(regExps.aletter), + new RegExp(regExps.midnumlet), + new RegExp(regExps.midletter), + new RegExp(regExps.midnum), + new RegExp(regExps.numeric), + new RegExp(regExps.cr), + new RegExp(regExps.lf), + new RegExp(regExps.newline), + new RegExp(regExps.extend), + new RegExp(regExps.format), + new RegExp(regExps.katakana), + new RegExp(regExps.extendnumlet), + new RegExp('@') + ]; + var EMPTY_STRING$1 = ''; + var PUNCTUATION$1 = new RegExp('^' + regExps.punctuation + '$'); + var WHITESPACE$1 = /^\s+$/; + + var SETS = SETS$1; + var OTHER = characterIndices.OTHER; + var getType = function (char) { + var type = OTHER; + var setsLength = SETS.length; + for (var j = 0; j < setsLength; ++j) { + var set = SETS[j]; + if (set && set.test(char)) { + type = j; + break; + } + } + return type; + }; + var memoize = function (func) { + var cache = {}; + return function (char) { + if (cache[char]) { + return cache[char]; + } else { + var result = func(char); + cache[char] = result; + return result; + } + }; + }; + var classify = function (characters) { + var memoized = memoize(getType); + return map(characters, memoized); + }; + + var isWordBoundary = function (map, index) { + var type = map[index]; + var nextType = map[index + 1]; + if (index < 0 || index > map.length - 1 && index !== 0) { + return false; + } + if (type === characterIndices.ALETTER && nextType === characterIndices.ALETTER) { + return false; + } + var nextNextType = map[index + 2]; + if (type === characterIndices.ALETTER && (nextType === characterIndices.MIDLETTER || nextType === characterIndices.MIDNUMLET || nextType === characterIndices.AT) && nextNextType === characterIndices.ALETTER) { + return false; + } + var prevType = map[index - 1]; + if ((type === characterIndices.MIDLETTER || type === characterIndices.MIDNUMLET || nextType === characterIndices.AT) && nextType === characterIndices.ALETTER && prevType === characterIndices.ALETTER) { + return false; + } + if ((type === characterIndices.NUMERIC || type === characterIndices.ALETTER) && (nextType === characterIndices.NUMERIC || nextType === characterIndices.ALETTER)) { + return false; + } + if ((type === characterIndices.MIDNUM || type === characterIndices.MIDNUMLET) && nextType === characterIndices.NUMERIC && prevType === characterIndices.NUMERIC) { + return false; + } + if (type === characterIndices.NUMERIC && (nextType === characterIndices.MIDNUM || nextType === characterIndices.MIDNUMLET) && nextNextType === characterIndices.NUMERIC) { + return false; + } + if (type === characterIndices.EXTEND || type === characterIndices.FORMAT || prevType === characterIndices.EXTEND || prevType === characterIndices.FORMAT || nextType === characterIndices.EXTEND || nextType === characterIndices.FORMAT) { + return false; + } + if (type === characterIndices.CR && nextType === characterIndices.LF) { + return false; + } + if (type === characterIndices.NEWLINE || type === characterIndices.CR || type === characterIndices.LF) { + return true; + } + if (nextType === characterIndices.NEWLINE || nextType === characterIndices.CR || nextType === characterIndices.LF) { + return true; + } + if (type === characterIndices.KATAKANA && nextType === characterIndices.KATAKANA) { + return false; + } + if (nextType === characterIndices.EXTENDNUMLET && (type === characterIndices.ALETTER || type === characterIndices.NUMERIC || type === characterIndices.KATAKANA || type === characterIndices.EXTENDNUMLET)) { + return false; + } + if (type === characterIndices.EXTENDNUMLET && (nextType === characterIndices.ALETTER || nextType === characterIndices.NUMERIC || nextType === characterIndices.KATAKANA)) { + return false; + } + if (type === characterIndices.AT) { + return false; + } + return true; + }; + + var EMPTY_STRING = EMPTY_STRING$1; + var WHITESPACE = WHITESPACE$1; + var PUNCTUATION = PUNCTUATION$1; + var isProtocol = function (str) { + return str === 'http' || str === 'https'; + }; + var findWordEnd = function (characters, startIndex) { + var i; + for (i = startIndex; i < characters.length; i++) { + if (WHITESPACE.test(characters[i])) { + break; + } + } + return i; + }; + var findUrlEnd = function (characters, startIndex) { + var endIndex = findWordEnd(characters, startIndex + 1); + var peakedWord = characters.slice(startIndex + 1, endIndex).join(EMPTY_STRING); + return peakedWord.substr(0, 3) === '://' ? endIndex : startIndex; + }; + var findWords = function (chars, sChars, characterMap, options) { + var words = []; + var word = []; + for (var i = 0; i < characterMap.length; ++i) { + word.push(chars[i]); + if (isWordBoundary(characterMap, i)) { + var ch = sChars[i]; + if ((options.includeWhitespace || !WHITESPACE.test(ch)) && (options.includePunctuation || !PUNCTUATION.test(ch))) { + var startOfWord = i - word.length + 1; + var endOfWord = i + 1; + var str = sChars.slice(startOfWord, endOfWord).join(EMPTY_STRING); + if (isProtocol(str)) { + var endOfUrl = findUrlEnd(sChars, i); + var url = chars.slice(endOfWord, endOfUrl); + Array.prototype.push.apply(word, url); + i = endOfUrl; + } + words.push(word); + } + word = []; + } + } + return words; + }; + var getDefaultOptions = function () { + return { + includeWhitespace: false, + includePunctuation: false + }; + }; + var getWords$1 = function (chars, extract, options) { + options = __assign(__assign({}, getDefaultOptions()), options); + var filteredChars = []; + var extractedChars = []; + for (var i = 0; i < chars.length; i++) { + var ch = extract(chars[i]); + if (ch !== zeroWidth) { + filteredChars.push(chars[i]); + extractedChars.push(ch); + } + } + var characterMap = classify(extractedChars); + return findWords(filteredChars, extractedChars, characterMap, options); + }; + + var getWords = getWords$1; + + var global$1 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker'); + + var getText = function (node, schema) { + var blockElements = schema.getBlockElements(); + var shortEndedElements = schema.getShortEndedElements(); + var isNewline = function (node) { + return blockElements[node.nodeName] || shortEndedElements[node.nodeName]; + }; + var textBlocks = []; + var txt = ''; + var treeWalker = new global$1(node, node); + while (node = treeWalker.next()) { + if (node.nodeType === 3) { + txt += removeZwsp$1(node.data); + } else if (isNewline(node) && txt.length) { + textBlocks.push(txt); + txt = ''; + } + } + if (txt.length) { + textBlocks.push(txt); + } + return textBlocks; + }; + + var removeZwsp = function (text) { + return text.replace(/\u200B/g, ''); + }; + var strLen = function (str) { + return str.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, '_').length; + }; + var countWords = function (node, schema) { + var text = removeZwsp(getText(node, schema).join('\n')); + return getWords(text.split(''), identity).length; + }; + var countCharacters = function (node, schema) { + var text = getText(node, schema).join(''); + return strLen(text); + }; + var countCharactersWithoutSpaces = function (node, schema) { + var text = getText(node, schema).join('').replace(/\s/g, ''); + return strLen(text); + }; + + var createBodyCounter = function (editor, count) { + return function () { + return count(editor.getBody(), editor.schema); + }; + }; + var createSelectionCounter = function (editor, count) { + return function () { + return count(editor.selection.getRng().cloneContents(), editor.schema); + }; + }; + var createBodyWordCounter = function (editor) { + return createBodyCounter(editor, countWords); + }; + var get = function (editor) { + return { + body: { + getWordCount: createBodyWordCounter(editor), + getCharacterCount: createBodyCounter(editor, countCharacters), + getCharacterCountWithoutSpaces: createBodyCounter(editor, countCharactersWithoutSpaces) + }, + selection: { + getWordCount: createSelectionCounter(editor, countWords), + getCharacterCount: createSelectionCounter(editor, countCharacters), + getCharacterCountWithoutSpaces: createSelectionCounter(editor, countCharactersWithoutSpaces) + }, + getCount: createBodyWordCounter(editor) + }; + }; + + var open = function (editor, api) { + editor.windowManager.open({ + title: 'Word Count', + body: { + type: 'panel', + items: [{ + type: 'table', + header: [ + 'Count', + 'Document', + 'Selection' + ], + cells: [ + [ + 'Words', + String(api.body.getWordCount()), + String(api.selection.getWordCount()) + ], + [ + 'Characters (no spaces)', + String(api.body.getCharacterCountWithoutSpaces()), + String(api.selection.getCharacterCountWithoutSpaces()) + ], + [ + 'Characters', + String(api.body.getCharacterCount()), + String(api.selection.getCharacterCount()) + ] + ] + }] + }, + buttons: [{ + type: 'cancel', + name: 'close', + text: 'Close', + primary: true + }] + }); + }; + + var register$1 = function (editor, api) { + editor.addCommand('mceWordCount', function () { + return open(editor, api); + }); + }; + + var global = tinymce.util.Tools.resolve('tinymce.util.Delay'); + + var fireWordCountUpdate = function (editor, api) { + editor.fire('wordCountUpdate', { + wordCount: { + words: api.body.getWordCount(), + characters: api.body.getCharacterCount(), + charactersWithoutSpaces: api.body.getCharacterCountWithoutSpaces() + } + }); + }; + + var updateCount = function (editor, api) { + fireWordCountUpdate(editor, api); + }; + var setup = function (editor, api, delay) { + var debouncedUpdate = global.debounce(function () { + return updateCount(editor, api); + }, delay); + editor.on('init', function () { + updateCount(editor, api); + global.setEditorTimeout(editor, function () { + editor.on('SetContent BeforeAddUndo Undo Redo ViewUpdate keyup', debouncedUpdate); + }, 0); + }); + }; + + var register = function (editor) { + var onAction = function () { + return editor.execCommand('mceWordCount'); + }; + editor.ui.registry.addButton('wordcount', { + tooltip: 'Word count', + icon: 'character-count', + onAction: onAction + }); + editor.ui.registry.addMenuItem('wordcount', { + text: 'Word count', + icon: 'character-count', + onAction: onAction + }); + }; + + function Plugin (delay) { + if (delay === void 0) { + delay = 300; + } + global$2.add('wordcount', function (editor) { + var api = get(editor); + register$1(editor, api); + register(editor); + setup(editor, api, delay); + return api; + }); + } + + Plugin(); + +}()); diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/custom/typedjs/typedjs.bundle.js b/think-backend.greaterchiangmai.com/public/assets/plugins/custom/typedjs/typedjs.bundle.js new file mode 100644 index 0000000..0992dc5 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/plugins/custom/typedjs/typedjs.bundle.js @@ -0,0 +1,1052 @@ +/*! + * + * typed.js - A JavaScript Typing Animation Library + * Author: Matt Boldt + * Version: v2.0.12 + * Url: https://github.com/mattboldt/typed.js + * License(s): MIT + * + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["Typed"] = factory(); + else + root["Typed"] = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; +/******/ +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.loaded = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, '__esModule', { + value: true + }); + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _initializerJs = __webpack_require__(1); + + var _htmlParserJs = __webpack_require__(3); + + /** + * Welcome to Typed.js! + * @param {string} elementId HTML element ID _OR_ HTML element + * @param {object} options options object + * @returns {object} a new Typed object + */ + + var Typed = (function () { + function Typed(elementId, options) { + _classCallCheck(this, Typed); + + // Initialize it up + _initializerJs.initializer.load(this, options, elementId); + // All systems go! + this.begin(); + } + + /** + * Toggle start() and stop() of the Typed instance + * @public + */ + + _createClass(Typed, [{ + key: 'toggle', + value: function toggle() { + this.pause.status ? this.start() : this.stop(); + } + + /** + * Stop typing / backspacing and enable cursor blinking + * @public + */ + }, { + key: 'stop', + value: function stop() { + if (this.typingComplete) return; + if (this.pause.status) return; + this.toggleBlinking(true); + this.pause.status = true; + this.options.onStop(this.arrayPos, this); + } + + /** + * Start typing / backspacing after being stopped + * @public + */ + }, { + key: 'start', + value: function start() { + if (this.typingComplete) return; + if (!this.pause.status) return; + this.pause.status = false; + if (this.pause.typewrite) { + this.typewrite(this.pause.curString, this.pause.curStrPos); + } else { + this.backspace(this.pause.curString, this.pause.curStrPos); + } + this.options.onStart(this.arrayPos, this); + } + + /** + * Destroy this instance of Typed + * @public + */ + }, { + key: 'destroy', + value: function destroy() { + this.reset(false); + this.options.onDestroy(this); + } + + /** + * Reset Typed and optionally restarts + * @param {boolean} restart + * @public + */ + }, { + key: 'reset', + value: function reset() { + var restart = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0]; + + clearInterval(this.timeout); + this.replaceText(''); + if (this.cursor && this.cursor.parentNode) { + this.cursor.parentNode.removeChild(this.cursor); + this.cursor = null; + } + this.strPos = 0; + this.arrayPos = 0; + this.curLoop = 0; + if (restart) { + this.insertCursor(); + this.options.onReset(this); + this.begin(); + } + } + + /** + * Begins the typing animation + * @private + */ + }, { + key: 'begin', + value: function begin() { + var _this = this; + + this.options.onBegin(this); + this.typingComplete = false; + this.shuffleStringsIfNeeded(this); + this.insertCursor(); + if (this.bindInputFocusEvents) this.bindFocusEvents(); + this.timeout = setTimeout(function () { + // Check if there is some text in the element, if yes start by backspacing the default message + if (!_this.currentElContent || _this.currentElContent.length === 0) { + _this.typewrite(_this.strings[_this.sequence[_this.arrayPos]], _this.strPos); + } else { + // Start typing + _this.backspace(_this.currentElContent, _this.currentElContent.length); + } + }, this.startDelay); + } + + /** + * Called for each character typed + * @param {string} curString the current string in the strings array + * @param {number} curStrPos the current position in the curString + * @private + */ + }, { + key: 'typewrite', + value: function typewrite(curString, curStrPos) { + var _this2 = this; + + if (this.fadeOut && this.el.classList.contains(this.fadeOutClass)) { + this.el.classList.remove(this.fadeOutClass); + if (this.cursor) this.cursor.classList.remove(this.fadeOutClass); + } + + var humanize = this.humanizer(this.typeSpeed); + var numChars = 1; + + if (this.pause.status === true) { + this.setPauseStatus(curString, curStrPos, true); + return; + } + + // contain typing function in a timeout humanize'd delay + this.timeout = setTimeout(function () { + // skip over any HTML chars + curStrPos = _htmlParserJs.htmlParser.typeHtmlChars(curString, curStrPos, _this2); + + var pauseTime = 0; + var substr = curString.substr(curStrPos); + // check for an escape character before a pause value + // format: \^\d+ .. eg: ^1000 .. should be able to print the ^ too using ^^ + // single ^ are removed from string + if (substr.charAt(0) === '^') { + if (/^\^\d+/.test(substr)) { + var skip = 1; // skip at least 1 + substr = /\d+/.exec(substr)[0]; + skip += substr.length; + pauseTime = parseInt(substr); + _this2.temporaryPause = true; + _this2.options.onTypingPaused(_this2.arrayPos, _this2); + // strip out the escape character and pause value so they're not printed + curString = curString.substring(0, curStrPos) + curString.substring(curStrPos + skip); + _this2.toggleBlinking(true); + } + } + + // check for skip characters formatted as + // "this is a `string to print NOW` ..." + if (substr.charAt(0) === '`') { + while (curString.substr(curStrPos + numChars).charAt(0) !== '`') { + numChars++; + if (curStrPos + numChars > curString.length) break; + } + // strip out the escape characters and append all the string in between + var stringBeforeSkip = curString.substring(0, curStrPos); + var stringSkipped = curString.substring(stringBeforeSkip.length + 1, curStrPos + numChars); + var stringAfterSkip = curString.substring(curStrPos + numChars + 1); + curString = stringBeforeSkip + stringSkipped + stringAfterSkip; + numChars--; + } + + // timeout for any pause after a character + _this2.timeout = setTimeout(function () { + // Accounts for blinking while paused + _this2.toggleBlinking(false); + + // We're done with this sentence! + if (curStrPos >= curString.length) { + _this2.doneTyping(curString, curStrPos); + } else { + _this2.keepTyping(curString, curStrPos, numChars); + } + // end of character pause + if (_this2.temporaryPause) { + _this2.temporaryPause = false; + _this2.options.onTypingResumed(_this2.arrayPos, _this2); + } + }, pauseTime); + + // humanized value for typing + }, humanize); + } + + /** + * Continue to the next string & begin typing + * @param {string} curString the current string in the strings array + * @param {number} curStrPos the current position in the curString + * @private + */ + }, { + key: 'keepTyping', + value: function keepTyping(curString, curStrPos, numChars) { + // call before functions if applicable + if (curStrPos === 0) { + this.toggleBlinking(false); + this.options.preStringTyped(this.arrayPos, this); + } + // start typing each new char into existing string + // curString: arg, this.el.html: original text inside element + curStrPos += numChars; + var nextString = curString.substr(0, curStrPos); + this.replaceText(nextString); + // loop the function + this.typewrite(curString, curStrPos); + } + + /** + * We're done typing the current string + * @param {string} curString the current string in the strings array + * @param {number} curStrPos the current position in the curString + * @private + */ + }, { + key: 'doneTyping', + value: function doneTyping(curString, curStrPos) { + var _this3 = this; + + // fires callback function + this.options.onStringTyped(this.arrayPos, this); + this.toggleBlinking(true); + // is this the final string + if (this.arrayPos === this.strings.length - 1) { + // callback that occurs on the last typed string + this.complete(); + // quit if we wont loop back + if (this.loop === false || this.curLoop === this.loopCount) { + return; + } + } + this.timeout = setTimeout(function () { + _this3.backspace(curString, curStrPos); + }, this.backDelay); + } + + /** + * Backspaces 1 character at a time + * @param {string} curString the current string in the strings array + * @param {number} curStrPos the current position in the curString + * @private + */ + }, { + key: 'backspace', + value: function backspace(curString, curStrPos) { + var _this4 = this; + + if (this.pause.status === true) { + this.setPauseStatus(curString, curStrPos, false); + return; + } + if (this.fadeOut) return this.initFadeOut(); + + this.toggleBlinking(false); + var humanize = this.humanizer(this.backSpeed); + + this.timeout = setTimeout(function () { + curStrPos = _htmlParserJs.htmlParser.backSpaceHtmlChars(curString, curStrPos, _this4); + // replace text with base text + typed characters + var curStringAtPosition = curString.substr(0, curStrPos); + _this4.replaceText(curStringAtPosition); + + // if smartBack is enabled + if (_this4.smartBackspace) { + // the remaining part of the current string is equal of the same part of the new string + var nextString = _this4.strings[_this4.arrayPos + 1]; + if (nextString && curStringAtPosition === nextString.substr(0, curStrPos)) { + _this4.stopNum = curStrPos; + } else { + _this4.stopNum = 0; + } + } + + // if the number (id of character in current string) is + // less than the stop number, keep going + if (curStrPos > _this4.stopNum) { + // subtract characters one by one + curStrPos--; + // loop the function + _this4.backspace(curString, curStrPos); + } else if (curStrPos <= _this4.stopNum) { + // if the stop number has been reached, increase + // array position to next string + _this4.arrayPos++; + // When looping, begin at the beginning after backspace complete + if (_this4.arrayPos === _this4.strings.length) { + _this4.arrayPos = 0; + _this4.options.onLastStringBackspaced(); + _this4.shuffleStringsIfNeeded(); + _this4.begin(); + } else { + _this4.typewrite(_this4.strings[_this4.sequence[_this4.arrayPos]], curStrPos); + } + } + // humanized value for typing + }, humanize); + } + + /** + * Full animation is complete + * @private + */ + }, { + key: 'complete', + value: function complete() { + this.options.onComplete(this); + if (this.loop) { + this.curLoop++; + } else { + this.typingComplete = true; + } + } + + /** + * Has the typing been stopped + * @param {string} curString the current string in the strings array + * @param {number} curStrPos the current position in the curString + * @param {boolean} isTyping + * @private + */ + }, { + key: 'setPauseStatus', + value: function setPauseStatus(curString, curStrPos, isTyping) { + this.pause.typewrite = isTyping; + this.pause.curString = curString; + this.pause.curStrPos = curStrPos; + } + + /** + * Toggle the blinking cursor + * @param {boolean} isBlinking + * @private + */ + }, { + key: 'toggleBlinking', + value: function toggleBlinking(isBlinking) { + if (!this.cursor) return; + // if in paused state, don't toggle blinking a 2nd time + if (this.pause.status) return; + if (this.cursorBlinking === isBlinking) return; + this.cursorBlinking = isBlinking; + if (isBlinking) { + this.cursor.classList.add('typed-cursor--blink'); + } else { + this.cursor.classList.remove('typed-cursor--blink'); + } + } + + /** + * Speed in MS to type + * @param {number} speed + * @private + */ + }, { + key: 'humanizer', + value: function humanizer(speed) { + return Math.round(Math.random() * speed / 2) + speed; + } + + /** + * Shuffle the sequence of the strings array + * @private + */ + }, { + key: 'shuffleStringsIfNeeded', + value: function shuffleStringsIfNeeded() { + if (!this.shuffle) return; + this.sequence = this.sequence.sort(function () { + return Math.random() - 0.5; + }); + } + + /** + * Adds a CSS class to fade out current string + * @private + */ + }, { + key: 'initFadeOut', + value: function initFadeOut() { + var _this5 = this; + + this.el.className += ' ' + this.fadeOutClass; + if (this.cursor) this.cursor.className += ' ' + this.fadeOutClass; + return setTimeout(function () { + _this5.arrayPos++; + _this5.replaceText(''); + + // Resets current string if end of loop reached + if (_this5.strings.length > _this5.arrayPos) { + _this5.typewrite(_this5.strings[_this5.sequence[_this5.arrayPos]], 0); + } else { + _this5.typewrite(_this5.strings[0], 0); + _this5.arrayPos = 0; + } + }, this.fadeOutDelay); + } + + /** + * Replaces current text in the HTML element + * depending on element type + * @param {string} str + * @private + */ + }, { + key: 'replaceText', + value: function replaceText(str) { + if (this.attr) { + this.el.setAttribute(this.attr, str); + } else { + if (this.isInput) { + this.el.value = str; + } else if (this.contentType === 'html') { + this.el.innerHTML = str; + } else { + this.el.textContent = str; + } + } + } + + /** + * If using input elements, bind focus in order to + * start and stop the animation + * @private + */ + }, { + key: 'bindFocusEvents', + value: function bindFocusEvents() { + var _this6 = this; + + if (!this.isInput) return; + this.el.addEventListener('focus', function (e) { + _this6.stop(); + }); + this.el.addEventListener('blur', function (e) { + if (_this6.el.value && _this6.el.value.length !== 0) { + return; + } + _this6.start(); + }); + } + + /** + * On init, insert the cursor element + * @private + */ + }, { + key: 'insertCursor', + value: function insertCursor() { + if (!this.showCursor) return; + if (this.cursor) return; + this.cursor = document.createElement('span'); + this.cursor.className = 'typed-cursor'; + this.cursor.setAttribute('aria-hidden', true); + this.cursor.innerHTML = this.cursorChar; + this.el.parentNode && this.el.parentNode.insertBefore(this.cursor, this.el.nextSibling); + } + }]); + + return Typed; + })(); + + exports['default'] = Typed; + module.exports = exports['default']; + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + + 'use strict'; + + Object.defineProperty(exports, '__esModule', { + value: true + }); + + var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var _defaultsJs = __webpack_require__(2); + + var _defaultsJs2 = _interopRequireDefault(_defaultsJs); + + /** + * Initialize the Typed object + */ + + var Initializer = (function () { + function Initializer() { + _classCallCheck(this, Initializer); + } + + _createClass(Initializer, [{ + key: 'load', + + /** + * Load up defaults & options on the Typed instance + * @param {Typed} self instance of Typed + * @param {object} options options object + * @param {string} elementId HTML element ID _OR_ instance of HTML element + * @private + */ + + value: function load(self, options, elementId) { + // chosen element to manipulate text + if (typeof elementId === 'string') { + self.el = document.querySelector(elementId); + } else { + self.el = elementId; + } + + self.options = _extends({}, _defaultsJs2['default'], options); + + // attribute to type into + self.isInput = self.el.tagName.toLowerCase() === 'input'; + self.attr = self.options.attr; + self.bindInputFocusEvents = self.options.bindInputFocusEvents; + + // show cursor + self.showCursor = self.isInput ? false : self.options.showCursor; + + // custom cursor + self.cursorChar = self.options.cursorChar; + + // Is the cursor blinking + self.cursorBlinking = true; + + // text content of element + self.elContent = self.attr ? self.el.getAttribute(self.attr) : self.el.textContent; + + // html or plain text + self.contentType = self.options.contentType; + + // typing speed + self.typeSpeed = self.options.typeSpeed; + + // add a delay before typing starts + self.startDelay = self.options.startDelay; + + // backspacing speed + self.backSpeed = self.options.backSpeed; + + // only backspace what doesn't match the previous string + self.smartBackspace = self.options.smartBackspace; + + // amount of time to wait before backspacing + self.backDelay = self.options.backDelay; + + // Fade out instead of backspace + self.fadeOut = self.options.fadeOut; + self.fadeOutClass = self.options.fadeOutClass; + self.fadeOutDelay = self.options.fadeOutDelay; + + // variable to check whether typing is currently paused + self.isPaused = false; + + // input strings of text + self.strings = self.options.strings.map(function (s) { + return s.trim(); + }); + + // div containing strings + if (typeof self.options.stringsElement === 'string') { + self.stringsElement = document.querySelector(self.options.stringsElement); + } else { + self.stringsElement = self.options.stringsElement; + } + + if (self.stringsElement) { + self.strings = []; + self.stringsElement.style.display = 'none'; + var strings = Array.prototype.slice.apply(self.stringsElement.children); + var stringsLength = strings.length; + + if (stringsLength) { + for (var i = 0; i < stringsLength; i += 1) { + var stringEl = strings[i]; + self.strings.push(stringEl.innerHTML.trim()); + } + } + } + + // character number position of current string + self.strPos = 0; + + // current array position + self.arrayPos = 0; + + // index of string to stop backspacing on + self.stopNum = 0; + + // Looping logic + self.loop = self.options.loop; + self.loopCount = self.options.loopCount; + self.curLoop = 0; + + // shuffle the strings + self.shuffle = self.options.shuffle; + // the order of strings + self.sequence = []; + + self.pause = { + status: false, + typewrite: true, + curString: '', + curStrPos: 0 + }; + + // When the typing is complete (when not looped) + self.typingComplete = false; + + // Set the order in which the strings are typed + for (var i in self.strings) { + self.sequence[i] = i; + } + + // If there is some text in the element + self.currentElContent = this.getCurrentElContent(self); + + self.autoInsertCss = self.options.autoInsertCss; + + this.appendAnimationCss(self); + } + }, { + key: 'getCurrentElContent', + value: function getCurrentElContent(self) { + var elContent = ''; + if (self.attr) { + elContent = self.el.getAttribute(self.attr); + } else if (self.isInput) { + elContent = self.el.value; + } else if (self.contentType === 'html') { + elContent = self.el.innerHTML; + } else { + elContent = self.el.textContent; + } + return elContent; + } + }, { + key: 'appendAnimationCss', + value: function appendAnimationCss(self) { + var cssDataName = 'data-typed-js-css'; + if (!self.autoInsertCss) { + return; + } + if (!self.showCursor && !self.fadeOut) { + return; + } + if (document.querySelector('[' + cssDataName + ']')) { + return; + } + + var css = document.createElement('style'); + css.type = 'text/css'; + css.setAttribute(cssDataName, true); + + var innerCss = ''; + if (self.showCursor) { + innerCss += '\n .typed-cursor{\n opacity: 1;\n }\n .typed-cursor.typed-cursor--blink{\n animation: typedjsBlink 0.7s infinite;\n -webkit-animation: typedjsBlink 0.7s infinite;\n animation: typedjsBlink 0.7s infinite;\n }\n @keyframes typedjsBlink{\n 50% { opacity: 0.0; }\n }\n @-webkit-keyframes typedjsBlink{\n 0% { opacity: 1; }\n 50% { opacity: 0.0; }\n 100% { opacity: 1; }\n }\n '; + } + if (self.fadeOut) { + innerCss += '\n .typed-fade-out{\n opacity: 0;\n transition: opacity .25s;\n }\n .typed-cursor.typed-cursor--blink.typed-fade-out{\n -webkit-animation: 0;\n animation: 0;\n }\n '; + } + if (css.length === 0) { + return; + } + css.innerHTML = innerCss; + document.body.appendChild(css); + } + }]); + + return Initializer; + })(); + + exports['default'] = Initializer; + var initializer = new Initializer(); + exports.initializer = initializer; + +/***/ }), +/* 2 */ +/***/ (function(module, exports) { + + /** + * Defaults & options + * @returns {object} Typed defaults & options + * @public + */ + + 'use strict'; + + Object.defineProperty(exports, '__esModule', { + value: true + }); + var defaults = { + /** + * @property {array} strings strings to be typed + * @property {string} stringsElement ID of element containing string children + */ + strings: ['These are the default values...', 'You know what you should do?', 'Use your own!', 'Have a great day!'], + stringsElement: null, + + /** + * @property {number} typeSpeed type speed in milliseconds + */ + typeSpeed: 0, + + /** + * @property {number} startDelay time before typing starts in milliseconds + */ + startDelay: 0, + + /** + * @property {number} backSpeed backspacing speed in milliseconds + */ + backSpeed: 0, + + /** + * @property {boolean} smartBackspace only backspace what doesn't match the previous string + */ + smartBackspace: true, + + /** + * @property {boolean} shuffle shuffle the strings + */ + shuffle: false, + + /** + * @property {number} backDelay time before backspacing in milliseconds + */ + backDelay: 700, + + /** + * @property {boolean} fadeOut Fade out instead of backspace + * @property {string} fadeOutClass css class for fade animation + * @property {boolean} fadeOutDelay Fade out delay in milliseconds + */ + fadeOut: false, + fadeOutClass: 'typed-fade-out', + fadeOutDelay: 500, + + /** + * @property {boolean} loop loop strings + * @property {number} loopCount amount of loops + */ + loop: false, + loopCount: Infinity, + + /** + * @property {boolean} showCursor show cursor + * @property {string} cursorChar character for cursor + * @property {boolean} autoInsertCss insert CSS for cursor and fadeOut into HTML + */ + showCursor: true, + cursorChar: '|', + autoInsertCss: true, + + /** + * @property {string} attr attribute for typing + * Ex: input placeholder, value, or just HTML text + */ + attr: null, + + /** + * @property {boolean} bindInputFocusEvents bind to focus and blur if el is text input + */ + bindInputFocusEvents: false, + + /** + * @property {string} contentType 'html' or 'null' for plaintext + */ + contentType: 'html', + + /** + * Before it begins typing + * @param {Typed} self + */ + onBegin: function onBegin(self) {}, + + /** + * All typing is complete + * @param {Typed} self + */ + onComplete: function onComplete(self) {}, + + /** + * Before each string is typed + * @param {number} arrayPos + * @param {Typed} self + */ + preStringTyped: function preStringTyped(arrayPos, self) {}, + + /** + * After each string is typed + * @param {number} arrayPos + * @param {Typed} self + */ + onStringTyped: function onStringTyped(arrayPos, self) {}, + + /** + * During looping, after last string is typed + * @param {Typed} self + */ + onLastStringBackspaced: function onLastStringBackspaced(self) {}, + + /** + * Typing has been stopped + * @param {number} arrayPos + * @param {Typed} self + */ + onTypingPaused: function onTypingPaused(arrayPos, self) {}, + + /** + * Typing has been started after being stopped + * @param {number} arrayPos + * @param {Typed} self + */ + onTypingResumed: function onTypingResumed(arrayPos, self) {}, + + /** + * After reset + * @param {Typed} self + */ + onReset: function onReset(self) {}, + + /** + * After stop + * @param {number} arrayPos + * @param {Typed} self + */ + onStop: function onStop(arrayPos, self) {}, + + /** + * After start + * @param {number} arrayPos + * @param {Typed} self + */ + onStart: function onStart(arrayPos, self) {}, + + /** + * After destroy + * @param {Typed} self + */ + onDestroy: function onDestroy(self) {} + }; + + exports['default'] = defaults; + module.exports = exports['default']; + +/***/ }), +/* 3 */ +/***/ (function(module, exports) { + + /** + * TODO: These methods can probably be combined somehow + * Parse HTML tags & HTML Characters + */ + + 'use strict'; + + Object.defineProperty(exports, '__esModule', { + value: true + }); + + var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + + var HTMLParser = (function () { + function HTMLParser() { + _classCallCheck(this, HTMLParser); + } + + _createClass(HTMLParser, [{ + key: 'typeHtmlChars', + + /** + * Type HTML tags & HTML Characters + * @param {string} curString Current string + * @param {number} curStrPos Position in current string + * @param {Typed} self instance of Typed + * @returns {number} a new string position + * @private + */ + + value: function typeHtmlChars(curString, curStrPos, self) { + if (self.contentType !== 'html') return curStrPos; + var curChar = curString.substr(curStrPos).charAt(0); + if (curChar === '<' || curChar === '&') { + var endTag = ''; + if (curChar === '<') { + endTag = '>'; + } else { + endTag = ';'; + } + while (curString.substr(curStrPos + 1).charAt(0) !== endTag) { + curStrPos++; + if (curStrPos + 1 > curString.length) { + break; + } + } + curStrPos++; + } + return curStrPos; + } + + /** + * Backspace HTML tags and HTML Characters + * @param {string} curString Current string + * @param {number} curStrPos Position in current string + * @param {Typed} self instance of Typed + * @returns {number} a new string position + * @private + */ + }, { + key: 'backSpaceHtmlChars', + value: function backSpaceHtmlChars(curString, curStrPos, self) { + if (self.contentType !== 'html') return curStrPos; + var curChar = curString.substr(curStrPos).charAt(0); + if (curChar === '>' || curChar === ';') { + var endTag = ''; + if (curChar === '>') { + endTag = '<'; + } else { + endTag = '&'; + } + while (curString.substr(curStrPos - 1).charAt(0) !== endTag) { + curStrPos--; + if (curStrPos < 0) { + break; + } + } + curStrPos--; + } + return curStrPos; + } + }]); + + return HTMLParser; + })(); + + exports['default'] = HTMLParser; + var htmlParser = new HTMLParser(); + exports.htmlParser = htmlParser; + +/***/ }) +/******/ ]) +}); +; \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/custom/vis-timeline/vis-timeline.bundle.css b/think-backend.greaterchiangmai.com/public/assets/plugins/custom/vis-timeline/vis-timeline.bundle.css new file mode 100644 index 0000000..4b3e981 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/plugins/custom/vis-timeline/vis-timeline.bundle.css @@ -0,0 +1,1240 @@ +@charset "UTF-8"; +/* override some bootstrap styles screwing up the timelines css */ +.vis [class*=span] { + min-height: 0; + width: auto; +} + +.vis-current-time { + background-color: #FF7F6E; + width: 2px; + z-index: 1; + pointer-events: none; +} + +.vis-rolling-mode-btn { + height: 40px; + width: 40px; + position: absolute; + top: 7px; + right: 20px; + border-radius: 50%; + font-size: 28px; + cursor: pointer; + opacity: 0.8; + color: white; + font-weight: bold; + text-align: center; + background: #3876c2; +} + +.vis-rolling-mode-btn:before { + content: "⛶"; +} + +.vis-rolling-mode-btn:hover { + opacity: 1; +} + +.vis-timeline { + /* + -webkit-transition: height .4s ease-in-out; + transition: height .4s ease-in-out; + */ +} + +.vis-panel { + /* + -webkit-transition: height .4s ease-in-out, top .4s ease-in-out; + transition: height .4s ease-in-out, top .4s ease-in-out; + */ +} + +.vis-axis { + /* + -webkit-transition: top .4s ease-in-out; + transition: top .4s ease-in-out; + */ +} + +/* TODO: get animation working nicely + +.vis-item { + -webkit-transition: top .4s ease-in-out; + transition: top .4s ease-in-out; +} + +.vis-item.line { + -webkit-transition: height .4s ease-in-out, top .4s ease-in-out; + transition: height .4s ease-in-out, top .4s ease-in-out; +} +/**/ +.vis-panel { + position: absolute; + padding: 0; + margin: 0; + box-sizing: border-box; +} + +.vis-panel.vis-center, +.vis-panel.vis-left, +.vis-panel.vis-right, +.vis-panel.vis-top, +.vis-panel.vis-bottom { + border: 1px #bfbfbf; +} + +.vis-panel.vis-center, +.vis-panel.vis-left, +.vis-panel.vis-right { + border-top-style: solid; + border-bottom-style: solid; + overflow: hidden; +} + +.vis-left.vis-panel.vis-vertical-scroll, .vis-right.vis-panel.vis-vertical-scroll { + height: 100%; + overflow-x: hidden; + overflow-y: scroll; +} + +.vis-left.vis-panel.vis-vertical-scroll { + direction: rtl; +} + +.vis-left.vis-panel.vis-vertical-scroll .vis-content { + direction: ltr; +} + +.vis-right.vis-panel.vis-vertical-scroll { + direction: ltr; +} + +.vis-right.vis-panel.vis-vertical-scroll .vis-content { + direction: rtl; +} + +.vis-panel.vis-center, +.vis-panel.vis-top, +.vis-panel.vis-bottom { + border-left-style: solid; + border-right-style: solid; +} + +.vis-background { + overflow: hidden; +} + +.vis-panel > .vis-content { + position: relative; +} + +.vis-panel .vis-shadow { + position: absolute; + width: 100%; + height: 1px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.8); + /* TODO: find a nice way to ensure vis-shadows are drawn on top of items + z-index: 1; + */ +} + +.vis-panel .vis-shadow.vis-top { + top: -1px; + left: 0; +} + +.vis-panel .vis-shadow.vis-bottom { + bottom: -1px; + left: 0; +} + +.vis-graph-group0 { + fill: #4f81bd; + fill-opacity: 0; + stroke-width: 2px; + stroke: #4f81bd; +} + +.vis-graph-group1 { + fill: #f79646; + fill-opacity: 0; + stroke-width: 2px; + stroke: #f79646; +} + +.vis-graph-group2 { + fill: #8c51cf; + fill-opacity: 0; + stroke-width: 2px; + stroke: #8c51cf; +} + +.vis-graph-group3 { + fill: #75c841; + fill-opacity: 0; + stroke-width: 2px; + stroke: #75c841; +} + +.vis-graph-group4 { + fill: #ff0100; + fill-opacity: 0; + stroke-width: 2px; + stroke: #ff0100; +} + +.vis-graph-group5 { + fill: #37d8e6; + fill-opacity: 0; + stroke-width: 2px; + stroke: #37d8e6; +} + +.vis-graph-group6 { + fill: #042662; + fill-opacity: 0; + stroke-width: 2px; + stroke: #042662; +} + +.vis-graph-group7 { + fill: #00ff26; + fill-opacity: 0; + stroke-width: 2px; + stroke: #00ff26; +} + +.vis-graph-group8 { + fill: #ff00ff; + fill-opacity: 0; + stroke-width: 2px; + stroke: #ff00ff; +} + +.vis-graph-group9 { + fill: #8f3938; + fill-opacity: 0; + stroke-width: 2px; + stroke: #8f3938; +} + +.vis-timeline .vis-fill { + fill-opacity: 0.1; + stroke: none; +} + +.vis-timeline .vis-bar { + fill-opacity: 0.5; + stroke-width: 1px; +} + +.vis-timeline .vis-point { + stroke-width: 2px; + fill-opacity: 1; +} + +.vis-timeline .vis-legend-background { + stroke-width: 1px; + fill-opacity: 0.9; + fill: #ffffff; + stroke: #c2c2c2; +} + +.vis-timeline .vis-outline { + stroke-width: 1px; + fill-opacity: 1; + fill: #ffffff; + stroke: #e5e5e5; +} + +.vis-timeline .vis-icon-fill { + fill-opacity: 0.3; + stroke: none; +} + +.vis-timeline { + position: relative; + border: 1px solid #bfbfbf; + overflow: hidden; + padding: 0; + margin: 0; + box-sizing: border-box; +} + +.vis-loading-screen { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; +} + +.vis-custom-time { + background-color: #6E94FF; + width: 2px; + cursor: move; + z-index: 1; +} + +.vis-custom-time > .vis-custom-time-marker { + background-color: inherit; + color: white; + font-size: 12px; + white-space: nowrap; + padding: 3px 5px; + top: 0px; + cursor: initial; + z-index: inherit; +} + +.vis-panel.vis-background.vis-horizontal .vis-grid.vis-horizontal { + position: absolute; + width: 100%; + height: 0; + border-bottom: 1px solid; +} + +.vis-panel.vis-background.vis-horizontal .vis-grid.vis-minor { + border-color: #e5e5e5; +} + +.vis-panel.vis-background.vis-horizontal .vis-grid.vis-major { + border-color: #bfbfbf; +} + +.vis-data-axis .vis-y-axis.vis-major { + width: 100%; + position: absolute; + color: #4d4d4d; + white-space: nowrap; +} + +.vis-data-axis .vis-y-axis.vis-major.vis-measure { + padding: 0; + margin: 0; + border: 0; + visibility: hidden; + width: auto; +} + +.vis-data-axis .vis-y-axis.vis-minor { + position: absolute; + width: 100%; + color: #bebebe; + white-space: nowrap; +} + +.vis-data-axis .vis-y-axis.vis-minor.vis-measure { + padding: 0; + margin: 0; + border: 0; + visibility: hidden; + width: auto; +} + +.vis-data-axis .vis-y-axis.vis-title { + position: absolute; + color: #4d4d4d; + white-space: nowrap; + bottom: 20px; + text-align: center; +} + +.vis-data-axis .vis-y-axis.vis-title.vis-measure { + padding: 0; + margin: 0; + visibility: hidden; + width: auto; +} + +.vis-data-axis .vis-y-axis.vis-title.vis-left { + bottom: 0; + -webkit-transform-origin: left top; + -moz-transform-origin: left top; + -ms-transform-origin: left top; + -o-transform-origin: left top; + transform-origin: left bottom; + -webkit-transform: rotate(-90deg); + -moz-transform: rotate(-90deg); + -ms-transform: rotate(-90deg); + -o-transform: rotate(-90deg); + transform: rotate(-90deg); +} + +.vis-data-axis .vis-y-axis.vis-title.vis-right { + bottom: 0; + -webkit-transform-origin: right bottom; + -moz-transform-origin: right bottom; + -ms-transform-origin: right bottom; + -o-transform-origin: right bottom; + transform-origin: right bottom; + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); +} + +.vis-legend { + background-color: rgba(247, 252, 255, 0.65); + padding: 5px; + border: 1px solid #b3b3b3; + box-shadow: 2px 2px 10px rgba(154, 154, 154, 0.55); +} + +.vis-legend-text { + /*font-size: 10px;*/ + white-space: nowrap; + display: inline-block; +} + +.vis-labelset { + position: relative; + overflow: hidden; + box-sizing: border-box; +} + +.vis-labelset .vis-label { + position: relative; + left: 0; + top: 0; + width: 100%; + color: #4d4d4d; + box-sizing: border-box; +} + +.vis-labelset .vis-label { + border-bottom: 1px solid #bfbfbf; +} + +.vis-labelset .vis-label.draggable { + cursor: pointer; +} + +.vis-group-is-dragging { + background: rgba(0, 0, 0, 0.1); +} + +.vis-labelset .vis-label:last-child { + border-bottom: none; +} + +.vis-labelset .vis-label .vis-inner { + display: inline-block; + padding: 5px; +} + +.vis-labelset .vis-label .vis-inner.vis-hidden { + padding: 0; +} + +.vis-itemset { + position: relative; + padding: 0; + margin: 0; + box-sizing: border-box; +} + +.vis-itemset .vis-background, +.vis-itemset .vis-foreground { + position: absolute; + width: 100%; + height: 100%; + overflow: visible; +} + +.vis-axis { + position: absolute; + width: 100%; + height: 0; + left: 0; + z-index: 1; +} + +.vis-foreground .vis-group { + position: relative; + box-sizing: border-box; + border-bottom: 1px solid #bfbfbf; +} + +.vis-foreground .vis-group:last-child { + border-bottom: none; +} + +.vis-nesting-group { + cursor: pointer; +} + +.vis-label.vis-nested-group.vis-group-level-unknown-but-gte1 { + background: #f5f5f5; +} + +.vis-label.vis-nested-group.vis-group-level-0 { + background-color: #ffffff; +} + +.vis-ltr .vis-label.vis-nested-group.vis-group-level-0 .vis-inner { + padding-left: 0; +} + +.vis-rtl .vis-label.vis-nested-group.vis-group-level-0 .vis-inner { + padding-right: 0; +} + +.vis-label.vis-nested-group.vis-group-level-1 { + background-color: rgba(0, 0, 0, 0.05); +} + +.vis-ltr .vis-label.vis-nested-group.vis-group-level-1 .vis-inner { + padding-left: 15px; +} + +.vis-rtl .vis-label.vis-nested-group.vis-group-level-1 .vis-inner { + padding-right: 15px; +} + +.vis-label.vis-nested-group.vis-group-level-2 { + background-color: rgba(0, 0, 0, 0.1); +} + +.vis-ltr .vis-label.vis-nested-group.vis-group-level-2 .vis-inner { + padding-left: 30px; +} + +.vis-rtl .vis-label.vis-nested-group.vis-group-level-2 .vis-inner { + padding-right: 30px; +} + +.vis-label.vis-nested-group.vis-group-level-3 { + background-color: rgba(0, 0, 0, 0.15); +} + +.vis-ltr .vis-label.vis-nested-group.vis-group-level-3 .vis-inner { + padding-left: 45px; +} + +.vis-rtl .vis-label.vis-nested-group.vis-group-level-3 .vis-inner { + padding-right: 45px; +} + +.vis-label.vis-nested-group.vis-group-level-4 { + background-color: rgba(0, 0, 0, 0.2); +} + +.vis-ltr .vis-label.vis-nested-group.vis-group-level-4 .vis-inner { + padding-left: 60px; +} + +.vis-rtl .vis-label.vis-nested-group.vis-group-level-4 .vis-inner { + padding-right: 60px; +} + +.vis-label.vis-nested-group.vis-group-level-5 { + background-color: rgba(0, 0, 0, 0.25); +} + +.vis-ltr .vis-label.vis-nested-group.vis-group-level-5 .vis-inner { + padding-left: 75px; +} + +.vis-rtl .vis-label.vis-nested-group.vis-group-level-5 .vis-inner { + padding-right: 75px; +} + +.vis-label.vis-nested-group.vis-group-level-6 { + background-color: rgba(0, 0, 0, 0.3); +} + +.vis-ltr .vis-label.vis-nested-group.vis-group-level-6 .vis-inner { + padding-left: 90px; +} + +.vis-rtl .vis-label.vis-nested-group.vis-group-level-6 .vis-inner { + padding-right: 90px; +} + +.vis-label.vis-nested-group.vis-group-level-7 { + background-color: rgba(0, 0, 0, 0.35); +} + +.vis-ltr .vis-label.vis-nested-group.vis-group-level-7 .vis-inner { + padding-left: 105px; +} + +.vis-rtl .vis-label.vis-nested-group.vis-group-level-7 .vis-inner { + padding-right: 105px; +} + +.vis-label.vis-nested-group.vis-group-level-8 { + background-color: rgba(0, 0, 0, 0.4); +} + +.vis-ltr .vis-label.vis-nested-group.vis-group-level-8 .vis-inner { + padding-left: 120px; +} + +.vis-rtl .vis-label.vis-nested-group.vis-group-level-8 .vis-inner { + padding-right: 120px; +} + +.vis-label.vis-nested-group.vis-group-level-9 { + background-color: rgba(0, 0, 0, 0.45); +} + +.vis-ltr .vis-label.vis-nested-group.vis-group-level-9 .vis-inner { + padding-left: 135px; +} + +.vis-rtl .vis-label.vis-nested-group.vis-group-level-9 .vis-inner { + padding-right: 135px; +} + +/* default takes over beginning with level-10 (thats why we add .vis-nested-group + to the selectors above, to have higher specifity than these rules for the defaults) */ +.vis-label.vis-nested-group { + background-color: rgba(0, 0, 0, 0.5); +} + +.vis-ltr .vis-label.vis-nested-group .vis-inner { + padding-left: 150px; +} + +.vis-rtl .vis-label.vis-nested-group .vis-inner { + padding-right: 150px; +} + +.vis-group-level-unknown-but-gte1 { + border: 1px solid red; +} + +/* expanded/collapsed indicators */ +.vis-label.vis-nesting-group:before, +.vis-label.vis-nesting-group:before { + display: inline-block; + width: 15px; +} + +.vis-label.vis-nesting-group.expanded:before { + content: "▼"; +} + +.vis-label.vis-nesting-group.collapsed:before { + content: "▶"; +} + +.vis-rtl .vis-label.vis-nesting-group.collapsed:before { + content: "◀"; +} + +/* compensate missing expanded/collapsed indicator, but only at levels > 0 */ +.vis-ltr .vis-label:not(.vis-nesting-group):not(.vis-group-level-0) { + padding-left: 15px; +} + +.vis-rtl .vis-label:not(.vis-nesting-group):not(.vis-group-level-0) { + padding-right: 15px; +} + +.vis-overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 10; +} + +.vis-time-axis { + position: relative; + overflow: hidden; +} + +.vis-time-axis.vis-foreground { + top: 0; + left: 0; + width: 100%; +} + +.vis-time-axis.vis-background { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.vis-time-axis .vis-text { + position: absolute; + color: #4d4d4d; + padding: 3px; + overflow: hidden; + box-sizing: border-box; + white-space: nowrap; +} + +.vis-time-axis .vis-text.vis-measure { + position: absolute; + padding-left: 0; + padding-right: 0; + margin-left: 0; + margin-right: 0; + visibility: hidden; +} + +.vis-time-axis .vis-grid.vis-vertical { + position: absolute; + border-left: 1px solid; +} + +.vis-time-axis .vis-grid.vis-vertical-rtl { + position: absolute; + border-right: 1px solid; +} + +.vis-time-axis .vis-grid.vis-minor { + border-color: #e5e5e5; +} + +.vis-time-axis .vis-grid.vis-major { + border-color: #bfbfbf; +} + +.vis-item { + position: absolute; + color: #1A1A1A; + border-color: #97B0F8; + border-width: 1px; + background-color: #D5DDF6; + display: inline-block; + z-index: 1; + /*overflow: hidden;*/ +} + +.vis-item.vis-selected { + border-color: #FFC200; + background-color: #FFF785; + /* z-index must be higher than the z-index of custom time bar and current time bar */ + z-index: 2; +} + +.vis-editable.vis-selected { + cursor: move; +} + +.vis-item.vis-point.vis-selected { + background-color: #FFF785; +} + +.vis-item.vis-box { + text-align: center; + border-style: solid; + border-radius: 2px; +} + +.vis-item.vis-point { + background: none; +} + +.vis-item.vis-dot { + position: absolute; + padding: 0; + border-width: 4px; + border-style: solid; + border-radius: 4px; +} + +.vis-item.vis-range { + border-style: solid; + border-radius: 2px; + box-sizing: border-box; +} + +.vis-item.vis-background { + border: none; + background-color: rgba(213, 221, 246, 0.4); + box-sizing: border-box; + padding: 0; + margin: 0; +} + +.vis-item .vis-item-overflow { + position: relative; + width: 100%; + height: 100%; + padding: 0; + margin: 0; + overflow: hidden; +} + +.vis-item-visible-frame { + white-space: nowrap; +} + +.vis-item.vis-range .vis-item-content { + position: relative; + display: inline-block; +} + +.vis-item.vis-background .vis-item-content { + position: absolute; + display: inline-block; +} + +.vis-item.vis-line { + padding: 0; + position: absolute; + width: 0; + border-left-width: 1px; + border-left-style: solid; +} + +.vis-item .vis-item-content { + white-space: nowrap; + box-sizing: border-box; + padding: 5px; +} + +.vis-item .vis-onUpdateTime-tooltip { + position: absolute; + background: #4f81bd; + color: white; + width: 200px; + text-align: center; + white-space: nowrap; + padding: 5px; + border-radius: 1px; + transition: 0.4s; + -o-transition: 0.4s; + -moz-transition: 0.4s; + -webkit-transition: 0.4s; +} + +.vis-item .vis-delete, .vis-item .vis-delete-rtl { + position: absolute; + top: 0px; + width: 24px; + height: 24px; + box-sizing: border-box; + padding: 0px 5px; + cursor: pointer; + -webkit-transition: background 0.2s linear; + -moz-transition: background 0.2s linear; + -ms-transition: background 0.2s linear; + -o-transition: background 0.2s linear; + transition: background 0.2s linear; +} + +.vis-item .vis-delete { + right: -24px; +} + +.vis-item .vis-delete-rtl { + left: -24px; +} + +.vis-item .vis-delete:after, .vis-item .vis-delete-rtl:after { + content: "×"; /* MULTIPLICATION SIGN */ + color: red; + font-family: arial, sans-serif; + font-size: 22px; + font-weight: bold; + -webkit-transition: color 0.2s linear; + -moz-transition: color 0.2s linear; + -ms-transition: color 0.2s linear; + -o-transition: color 0.2s linear; + transition: color 0.2s linear; +} + +.vis-item .vis-delete:hover, .vis-item .vis-delete-rtl:hover { + background: red; +} + +.vis-item .vis-delete:hover:after, .vis-item .vis-delete-rtl:hover:after { + color: white; +} + +.vis-item .vis-drag-center { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0px; + cursor: move; +} + +.vis-item.vis-range .vis-drag-left { + position: absolute; + width: 24px; + max-width: 20%; + min-width: 2px; + height: 100%; + top: 0; + left: -4px; + cursor: w-resize; +} + +.vis-item.vis-range .vis-drag-right { + position: absolute; + width: 24px; + max-width: 20%; + min-width: 2px; + height: 100%; + top: 0; + right: -4px; + cursor: e-resize; +} + +.vis-range.vis-item.vis-readonly .vis-drag-left, +.vis-range.vis-item.vis-readonly .vis-drag-right { + cursor: auto; +} + +.vis-item.vis-cluster { + vertical-align: center; + text-align: center; + border-style: solid; + border-radius: 2px; +} + +.vis-item.vis-cluster-line { + padding: 0; + position: absolute; + width: 0; + border-left-width: 1px; + border-left-style: solid; +} + +.vis-item.vis-cluster-dot { + position: absolute; + padding: 0; + border-width: 4px; + border-style: solid; + border-radius: 4px; +} + +div.vis-configuration { + position: relative; + display: block; + float: left; + font-size: 12px; +} + +div.vis-configuration-wrapper { + display: block; + width: 700px; +} + +div.vis-configuration-wrapper::after { + clear: both; + content: ""; + display: block; +} + +div.vis-configuration.vis-config-option-container { + display: block; + width: 495px; + background-color: #ffffff; + border: 2px solid #f7f8fa; + border-radius: 4px; + margin-top: 20px; + left: 10px; + padding-left: 5px; +} + +div.vis-configuration.vis-config-button { + display: block; + width: 495px; + height: 25px; + vertical-align: middle; + line-height: 25px; + background-color: #f7f8fa; + border: 2px solid #ceced0; + border-radius: 4px; + margin-top: 20px; + left: 10px; + padding-left: 5px; + cursor: pointer; + margin-bottom: 30px; +} + +div.vis-configuration.vis-config-button.hover { + background-color: #4588e6; + border: 2px solid #214373; + color: #ffffff; +} + +div.vis-configuration.vis-config-item { + display: block; + float: left; + width: 495px; + height: 25px; + vertical-align: middle; + line-height: 25px; +} + +div.vis-configuration.vis-config-item.vis-config-s2 { + left: 10px; + background-color: #f7f8fa; + padding-left: 5px; + border-radius: 3px; +} + +div.vis-configuration.vis-config-item.vis-config-s3 { + left: 20px; + background-color: #e4e9f0; + padding-left: 5px; + border-radius: 3px; +} + +div.vis-configuration.vis-config-item.vis-config-s4 { + left: 30px; + background-color: #cfd8e6; + padding-left: 5px; + border-radius: 3px; +} + +div.vis-configuration.vis-config-header { + font-size: 18px; + font-weight: bold; +} + +div.vis-configuration.vis-config-label { + width: 120px; + height: 25px; + line-height: 25px; +} + +div.vis-configuration.vis-config-label.vis-config-s3 { + width: 110px; +} + +div.vis-configuration.vis-config-label.vis-config-s4 { + width: 100px; +} + +div.vis-configuration.vis-config-colorBlock { + top: 1px; + width: 30px; + height: 19px; + border: 1px solid #444444; + border-radius: 2px; + padding: 0px; + margin: 0px; + cursor: pointer; +} + +input.vis-configuration.vis-config-checkbox { + left: -5px; +} + +input.vis-configuration.vis-config-rangeinput { + position: relative; + top: -5px; + width: 60px; + /*height:13px;*/ + padding: 1px; + margin: 0; + pointer-events: none; +} + +input.vis-configuration.vis-config-range { + /*removes default webkit styles*/ + -webkit-appearance: none; + /*fix for FF unable to apply focus style bug */ + border: 0px solid white; + background-color: rgba(0, 0, 0, 0); + /*required for proper track sizing in FF*/ + width: 300px; + height: 20px; +} + +input.vis-configuration.vis-config-range::-webkit-slider-runnable-track { + width: 300px; + height: 5px; + background: #dedede; /* Old browsers */ + background: -moz-linear-gradient(top, #dedede 0%, #c8c8c8 99%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #dedede), color-stop(99%, #c8c8c8)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #dedede 0%, #c8c8c8 99%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #dedede 0%, #c8c8c8 99%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #dedede 0%, #c8c8c8 99%); /* IE10+ */ + background: linear-gradient(to bottom, #dedede 0%, #c8c8c8 99%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#dedede", endColorstr="#c8c8c8",GradientType=0 ); /* IE6-9 */ + border: 1px solid #999999; + box-shadow: #aaaaaa 0px 0px 3px 0px; + border-radius: 3px; +} + +input.vis-configuration.vis-config-range::-webkit-slider-thumb { + -webkit-appearance: none; + border: 1px solid #14334b; + height: 17px; + width: 17px; + border-radius: 50%; + background: #3876c2; /* Old browsers */ + background: -moz-linear-gradient(top, #3876c2 0%, #385380 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #3876c2), color-stop(100%, #385380)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #3876c2 0%, #385380 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #3876c2 0%, #385380 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #3876c2 0%, #385380 100%); /* IE10+ */ + background: linear-gradient(to bottom, #3876c2 0%, #385380 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#3876c2", endColorstr="#385380",GradientType=0 ); /* IE6-9 */ + box-shadow: #111927 0px 0px 1px 0px; + margin-top: -7px; +} + +input.vis-configuration.vis-config-range:focus { + outline: none; +} + +input.vis-configuration.vis-config-range:focus::-webkit-slider-runnable-track { + background: #9d9d9d; /* Old browsers */ + background: -moz-linear-gradient(top, #9d9d9d 0%, #c8c8c8 99%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #9d9d9d), color-stop(99%, #c8c8c8)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #9d9d9d 0%, #c8c8c8 99%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #9d9d9d 0%, #c8c8c8 99%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #9d9d9d 0%, #c8c8c8 99%); /* IE10+ */ + background: linear-gradient(to bottom, #9d9d9d 0%, #c8c8c8 99%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#9d9d9d", endColorstr="#c8c8c8",GradientType=0 ); /* IE6-9 */ +} + +input.vis-configuration.vis-config-range::-moz-range-track { + width: 300px; + height: 10px; + background: #dedede; /* Old browsers */ + background: -moz-linear-gradient(top, #dedede 0%, #c8c8c8 99%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #dedede), color-stop(99%, #c8c8c8)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #dedede 0%, #c8c8c8 99%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #dedede 0%, #c8c8c8 99%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #dedede 0%, #c8c8c8 99%); /* IE10+ */ + background: linear-gradient(to bottom, #dedede 0%, #c8c8c8 99%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#dedede", endColorstr="#c8c8c8",GradientType=0 ); /* IE6-9 */ + border: 1px solid #999999; + box-shadow: #aaaaaa 0px 0px 3px 0px; + border-radius: 3px; +} + +input.vis-configuration.vis-config-range::-moz-range-thumb { + border: none; + height: 16px; + width: 16px; + border-radius: 50%; + background: #385380; +} + +/*hide the outline behind the border*/ +input.vis-configuration.vis-config-range:-moz-focusring { + outline: 1px solid white; + outline-offset: -1px; +} + +input.vis-configuration.vis-config-range::-ms-track { + width: 300px; + height: 5px; + /*remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead */ + background: transparent; + /*leave room for the larger thumb to overflow with a transparent border */ + border-color: transparent; + border-width: 6px 0; + /*remove default tick marks*/ + color: transparent; +} + +input.vis-configuration.vis-config-range::-ms-fill-lower { + background: #777; + border-radius: 10px; +} + +input.vis-configuration.vis-config-range::-ms-fill-upper { + background: #ddd; + border-radius: 10px; +} + +input.vis-configuration.vis-config-range::-ms-thumb { + border: none; + height: 16px; + width: 16px; + border-radius: 50%; + background: #385380; +} + +input.vis-configuration.vis-config-range:focus::-ms-fill-lower { + background: #888; +} + +input.vis-configuration.vis-config-range:focus::-ms-fill-upper { + background: #ccc; +} + +.vis-configuration-popup { + position: absolute; + background: rgba(57, 76, 89, 0.85); + border: 2px solid #f2faff; + line-height: 30px; + height: 30px; + width: 150px; + text-align: center; + color: #ffffff; + font-size: 14px; + border-radius: 4px; + -webkit-transition: opacity 0.3s ease-in-out; + -moz-transition: opacity 0.3s ease-in-out; + transition: opacity 0.3s ease-in-out; +} + +.vis-configuration-popup:after, .vis-configuration-popup:before { + left: 100%; + top: 50%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; +} + +.vis-configuration-popup:after { + border-color: rgba(136, 183, 213, 0); + border-left-color: rgba(57, 76, 89, 0.85); + border-width: 8px; + margin-top: -8px; +} + +.vis-configuration-popup:before { + border-color: rgba(194, 225, 245, 0); + border-left-color: #f2faff; + border-width: 12px; + margin-top: -12px; +} + +.vis .overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + /* Must be displayed above for example selected Timeline items */ + z-index: 10; +} + +.vis-active { + box-shadow: 0 0 10px #86d5f8; +} + +div.vis-tooltip { + position: absolute; + visibility: hidden; + padding: 5px; + white-space: nowrap; + font-family: verdana; + font-size: 14px; + color: #000000; + background-color: #f5f4ed; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + border: 1px solid #808074; + box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.2); + pointer-events: none; + z-index: 5; +} \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/custom/vis-timeline/vis-timeline.bundle.js b/think-backend.greaterchiangmai.com/public/assets/plugins/custom/vis-timeline/vis-timeline.bundle.js new file mode 100644 index 0000000..d6be1bd --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/plugins/custom/vis-timeline/vis-timeline.bundle.js @@ -0,0 +1,66 @@ +/** + * vis-timeline and vis-graph2d + * https://visjs.github.io/vis-timeline/ + * + * Create a fully customizable, interactive timeline with items and ranges. + * + * @version 7.7.0 + * @date 2022-07-10T21:34:08.601Z + * + * @copyright (c) 2011-2017 Almende B.V, http://almende.com + * @copyright (c) 2017-2019 visjs contributors, https://github.com/visjs + * + * @license + * vis.js is dual licensed under both + * + * 1. The Apache 2.0 License + * http://www.apache.org/licenses/LICENSE-2.0 + * + * and + * + * 2. The MIT License + * http://opensource.org/licenses/MIT + * + * vis.js may be distributed under either license. + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).vis=t.vis||{})}(this,(function(t){var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function o(t){throw new Error('Could not dynamically require "'+t+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var r,s={exports:{}};function a(){return r||(r=1,function(t,e){t.exports=function(){var e,i;function n(){return e.apply(null,arguments)}function r(t){e=t}function s(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function a(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function l(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function h(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;var e;for(e in t)if(l(t,e))return!1;return!0}function u(t){return void 0===t}function d(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function c(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function p(t,e){var i,n=[],o=t.length;for(i=0;i>>0;for(e=0;e0)for(i=0;i=0?i?"+":"":"-")+Math.pow(10,Math.max(0,o)).toString().substr(1)+n}var R=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,j=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Y={},H={};function z(t,e,i,n){var o=n;"string"==typeof n&&(o=function(){return this[n]()}),t&&(H[t]=o),e&&(H[e[0]]=function(){return F(o.apply(this,arguments),e[1],e[2])}),i&&(H[i]=function(){return this.localeData().ordinal(o.apply(this,arguments),t)})}function B(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function G(t){var e,i,n=t.match(R);for(e=0,i=n.length;e=0&&j.test(t);)t=t.replace(j,n),j.lastIndex=0,i-=1;return t}var U={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function X(t){var e=this._longDateFormat[t],i=this._longDateFormat[t.toUpperCase()];return e||!i?e:(this._longDateFormat[t]=i.match(R).map((function(t){return"MMMM"===t||"MM"===t||"DD"===t||"dddd"===t?t.slice(1):t})).join(""),this._longDateFormat[t])}var q="Invalid date";function $(){return this._invalidDate}var Z="%d",K=/\d{1,2}/;function J(t){return this._ordinal.replace("%d",t)}var Q={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function tt(t,e,i,n){var o=this._relativeTime[i];return E(o)?o(t,e,i,n):o.replace(/%d/i,t)}function et(t,e){var i=this._relativeTime[t>0?"future":"past"];return E(i)?i(e):i.replace(/%s/i,e)}var it={};function nt(t,e){var i=t.toLowerCase();it[i]=it[i+"s"]=it[e]=t}function ot(t){return"string"==typeof t?it[t]||it[t.toLowerCase()]:void 0}function rt(t){var e,i,n={};for(i in t)l(t,i)&&(e=ot(i))&&(n[e]=t[i]);return n}var st={};function at(t,e){st[t]=e}function lt(t){var e,i=[];for(e in t)l(t,e)&&i.push({unit:e,priority:st[e]});return i.sort((function(t,e){return t.priority-e.priority})),i}function ht(t){return t%4==0&&t%100!=0||t%400==0}function ut(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function dt(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=ut(e)),i}function ct(t,e){return function(i){return null!=i?(ft(this,t,i),n.updateOffset(this,e),this):pt(this,t)}}function pt(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function ft(t,e,i){t.isValid()&&!isNaN(i)&&("FullYear"===e&&ht(t.year())&&1===t.month()&&29===t.date()?(i=dt(i),t._d["set"+(t._isUTC?"UTC":"")+e](i,t.month(),te(i,t.month()))):t._d["set"+(t._isUTC?"UTC":"")+e](i))}function mt(t){return E(this[t=ot(t)])?this[t]():this}function vt(t,e){if("object"==typeof t){var i,n=lt(t=rt(t)),o=n.length;for(i=0;i68?1900:2e3)};var ge=ct("FullYear",!0);function ye(){return ht(this.year())}function be(t,e,i,n,o,r,s){var a;return t<100&&t>=0?(a=new Date(t+400,e,i,n,o,r,s),isFinite(a.getFullYear())&&a.setFullYear(t)):a=new Date(t,e,i,n,o,r,s),a}function _e(t){var e,i;return t<100&&t>=0?((i=Array.prototype.slice.call(arguments))[0]=t+400,e=new Date(Date.UTC.apply(null,i)),isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t)):e=new Date(Date.UTC.apply(null,arguments)),e}function we(t,e,i){var n=7+e-i;return-(7+_e(t,0,n).getUTCDay()-e)%7+n-1}function ke(t,e,i,n,o){var r,s,a=1+7*(e-1)+(7+i-n)%7+we(t,n,o);return a<=0?s=ve(r=t-1)+a:a>ve(t)?(r=t+1,s=a-ve(t)):(r=t,s=a),{year:r,dayOfYear:s}}function xe(t,e,i){var n,o,r=we(t.year(),e,i),s=Math.floor((t.dayOfYear()-r-1)/7)+1;return s<1?n=s+De(o=t.year()-1,e,i):s>De(t.year(),e,i)?(n=s-De(t.year(),e,i),o=t.year()+1):(o=t.year(),n=s),{week:n,year:o}}function De(t,e,i){var n=we(t,e,i),o=we(t+1,e,i);return(ve(t)-n+o)/7}function Se(t){return xe(t,this._week.dow,this._week.doy).week}z("w",["ww",2],"wo","week"),z("W",["WW",2],"Wo","isoWeek"),nt("week","w"),nt("isoWeek","W"),at("week",5),at("isoWeek",5),Nt("w",xt),Nt("ww",xt,bt),Nt("W",xt),Nt("WW",xt,bt),zt(["w","ww","W","WW"],(function(t,e,i,n){e[n.substr(0,1)]=dt(t)}));var Ce={dow:0,doy:6};function Te(){return this._week.dow}function Me(){return this._week.doy}function Oe(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function Ee(t){var e=xe(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function Pe(t,e){return"string"!=typeof t?t:isNaN(t)?"number"==typeof(t=e.weekdaysParse(t))?t:null:parseInt(t,10)}function Ae(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}function Ie(t,e){return t.slice(e,7).concat(t.slice(0,e))}z("d",0,"do","day"),z("dd",0,0,(function(t){return this.localeData().weekdaysMin(this,t)})),z("ddd",0,0,(function(t){return this.localeData().weekdaysShort(this,t)})),z("dddd",0,0,(function(t){return this.localeData().weekdays(this,t)})),z("e",0,0,"weekday"),z("E",0,0,"isoWeekday"),nt("day","d"),nt("weekday","e"),nt("isoWeekday","E"),at("day",11),at("weekday",11),at("isoWeekday",11),Nt("d",xt),Nt("e",xt),Nt("E",xt),Nt("dd",(function(t,e){return e.weekdaysMinRegex(t)})),Nt("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),Nt("dddd",(function(t,e){return e.weekdaysRegex(t)})),zt(["dd","ddd","dddd"],(function(t,e,i,n){var o=i._locale.weekdaysParse(t,n,i._strict);null!=o?e.d=o:g(i).invalidWeekday=t})),zt(["d","e","E"],(function(t,e,i,n){e[n]=dt(t)}));var Le="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ne="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Fe="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Re=Lt,je=Lt,Ye=Lt;function He(t,e){var i=s(this._weekdays)?this._weekdays:this._weekdays[t&&!0!==t&&this._weekdays.isFormat.test(e)?"format":"standalone"];return!0===t?Ie(i,this._week.dow):t?i[t.day()]:i}function ze(t){return!0===t?Ie(this._weekdaysShort,this._week.dow):t?this._weekdaysShort[t.day()]:this._weekdaysShort}function Be(t){return!0===t?Ie(this._weekdaysMin,this._week.dow):t?this._weekdaysMin[t.day()]:this._weekdaysMin}function Ge(t,e,i){var n,o,r,s=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],n=0;n<7;++n)r=m([2e3,1]).day(n),this._minWeekdaysParse[n]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[n]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[n]=this.weekdays(r,"").toLocaleLowerCase();return i?"dddd"===e?-1!==(o=Gt.call(this._weekdaysParse,s))?o:null:"ddd"===e?-1!==(o=Gt.call(this._shortWeekdaysParse,s))?o:null:-1!==(o=Gt.call(this._minWeekdaysParse,s))?o:null:"dddd"===e?-1!==(o=Gt.call(this._weekdaysParse,s))||-1!==(o=Gt.call(this._shortWeekdaysParse,s))||-1!==(o=Gt.call(this._minWeekdaysParse,s))?o:null:"ddd"===e?-1!==(o=Gt.call(this._shortWeekdaysParse,s))||-1!==(o=Gt.call(this._weekdaysParse,s))||-1!==(o=Gt.call(this._minWeekdaysParse,s))?o:null:-1!==(o=Gt.call(this._minWeekdaysParse,s))||-1!==(o=Gt.call(this._weekdaysParse,s))||-1!==(o=Gt.call(this._shortWeekdaysParse,s))?o:null}function We(t,e,i){var n,o,r;if(this._weekdaysParseExact)return Ge.call(this,t,e,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),n=0;n<7;n++){if(o=m([2e3,1]).day(n),i&&!this._fullWeekdaysParse[n]&&(this._fullWeekdaysParse[n]=new RegExp("^"+this.weekdays(o,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[n]=new RegExp("^"+this.weekdaysShort(o,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[n]=new RegExp("^"+this.weekdaysMin(o,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[n]||(r="^"+this.weekdays(o,"")+"|^"+this.weekdaysShort(o,"")+"|^"+this.weekdaysMin(o,""),this._weekdaysParse[n]=new RegExp(r.replace(".",""),"i")),i&&"dddd"===e&&this._fullWeekdaysParse[n].test(t))return n;if(i&&"ddd"===e&&this._shortWeekdaysParse[n].test(t))return n;if(i&&"dd"===e&&this._minWeekdaysParse[n].test(t))return n;if(!i&&this._weekdaysParse[n].test(t))return n}}function Ve(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Pe(t,this.localeData()),this.add(t-e,"d")):e}function Ue(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Xe(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=Ae(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7}function qe(t){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Ke.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(l(this,"_weekdaysRegex")||(this._weekdaysRegex=Re),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)}function $e(t){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Ke.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(l(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=je),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Ze(t){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Ke.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(l(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ye),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Ke(){function t(t,e){return e.length-t.length}var e,i,n,o,r,s=[],a=[],l=[],h=[];for(e=0;e<7;e++)i=m([2e3,1]).day(e),n=jt(this.weekdaysMin(i,"")),o=jt(this.weekdaysShort(i,"")),r=jt(this.weekdays(i,"")),s.push(n),a.push(o),l.push(r),h.push(n),h.push(o),h.push(r);s.sort(t),a.sort(t),l.sort(t),h.sort(t),this._weekdaysRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Je(){return this.hours()%12||12}function Qe(){return this.hours()||24}function ti(t,e){z(t,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function ei(t,e){return e._meridiemParse}function ii(t){return"p"===(t+"").toLowerCase().charAt(0)}z("H",["HH",2],0,"hour"),z("h",["hh",2],0,Je),z("k",["kk",2],0,Qe),z("hmm",0,0,(function(){return""+Je.apply(this)+F(this.minutes(),2)})),z("hmmss",0,0,(function(){return""+Je.apply(this)+F(this.minutes(),2)+F(this.seconds(),2)})),z("Hmm",0,0,(function(){return""+this.hours()+F(this.minutes(),2)})),z("Hmmss",0,0,(function(){return""+this.hours()+F(this.minutes(),2)+F(this.seconds(),2)})),ti("a",!0),ti("A",!1),nt("hour","h"),at("hour",13),Nt("a",ei),Nt("A",ei),Nt("H",xt),Nt("h",xt),Nt("k",xt),Nt("HH",xt,bt),Nt("hh",xt,bt),Nt("kk",xt,bt),Nt("hmm",Dt),Nt("hmmss",St),Nt("Hmm",Dt),Nt("Hmmss",St),Ht(["H","HH"],Xt),Ht(["k","kk"],(function(t,e,i){var n=dt(t);e[Xt]=24===n?0:n})),Ht(["a","A"],(function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t})),Ht(["h","hh"],(function(t,e,i){e[Xt]=dt(t),g(i).bigHour=!0})),Ht("hmm",(function(t,e,i){var n=t.length-2;e[Xt]=dt(t.substr(0,n)),e[qt]=dt(t.substr(n)),g(i).bigHour=!0})),Ht("hmmss",(function(t,e,i){var n=t.length-4,o=t.length-2;e[Xt]=dt(t.substr(0,n)),e[qt]=dt(t.substr(n,2)),e[$t]=dt(t.substr(o)),g(i).bigHour=!0})),Ht("Hmm",(function(t,e,i){var n=t.length-2;e[Xt]=dt(t.substr(0,n)),e[qt]=dt(t.substr(n))})),Ht("Hmmss",(function(t,e,i){var n=t.length-4,o=t.length-2;e[Xt]=dt(t.substr(0,n)),e[qt]=dt(t.substr(n,2)),e[$t]=dt(t.substr(o))}));var ni=/[ap]\.?m?\.?/i,oi=ct("Hours",!0);function ri(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"}var si,ai={calendar:L,longDateFormat:U,invalidDate:q,ordinal:Z,dayOfMonthOrdinalParse:K,relativeTime:Q,months:ee,monthsShort:ie,week:Ce,weekdays:Le,weekdaysMin:Fe,weekdaysShort:Ne,meridiemParse:ni},li={},hi={};function ui(t,e){var i,n=Math.min(t.length,e.length);for(i=0;i0;){if(n=fi(o.slice(0,e).join("-")))return n;if(i&&i.length>=e&&ui(o,i)>=e-1)break;e--}r++}return si}function pi(t){return null!=t.match("^[^/\\\\]*$")}function fi(e){var i=null;if(void 0===li[e]&&t&&t.exports&&pi(e))try{i=si._abbr,o("./locale/"+e),mi(i)}catch(t){li[e]=null}return li[e]}function mi(t,e){var i;return t&&((i=u(e)?yi(t):vi(t,e))?si=i:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),si._abbr}function vi(t,e){if(null!==e){var i,n=ai;if(e.abbr=t,null!=li[t])O("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),n=li[t]._config;else if(null!=e.parentLocale)if(null!=li[e.parentLocale])n=li[e.parentLocale]._config;else{if(null==(i=fi(e.parentLocale)))return hi[e.parentLocale]||(hi[e.parentLocale]=[]),hi[e.parentLocale].push({name:t,config:e}),null;n=i._config}return li[t]=new I(A(n,e)),hi[t]&&hi[t].forEach((function(t){vi(t.name,t.config)})),mi(t),li[t]}return delete li[t],null}function gi(t,e){if(null!=e){var i,n,o=ai;null!=li[t]&&null!=li[t].parentLocale?li[t].set(A(li[t]._config,e)):(null!=(n=fi(t))&&(o=n._config),e=A(o,e),null==n&&(e.abbr=t),(i=new I(e)).parentLocale=li[t],li[t]=i),mi(t)}else null!=li[t]&&(null!=li[t].parentLocale?(li[t]=li[t].parentLocale,t===mi()&&mi(t)):null!=li[t]&&delete li[t]);return li[t]}function yi(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return si;if(!s(t)){if(e=fi(t))return e;t=[t]}return ci(t)}function bi(){return T(li)}function _i(t){var e,i=t._a;return i&&-2===g(t).overflow&&(e=i[Vt]<0||i[Vt]>11?Vt:i[Ut]<1||i[Ut]>te(i[Wt],i[Vt])?Ut:i[Xt]<0||i[Xt]>24||24===i[Xt]&&(0!==i[qt]||0!==i[$t]||0!==i[Zt])?Xt:i[qt]<0||i[qt]>59?qt:i[$t]<0||i[$t]>59?$t:i[Zt]<0||i[Zt]>999?Zt:-1,g(t)._overflowDayOfYear&&(eUt)&&(e=Ut),g(t)._overflowWeeks&&-1===e&&(e=Kt),g(t)._overflowWeekday&&-1===e&&(e=Jt),g(t).overflow=e),t}var wi=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ki=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,xi=/Z|[+-]\d\d(?::?\d\d)?/,Di=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Si=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Ci=/^\/?Date\((-?\d+)/i,Ti=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Mi={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Oi(t){var e,i,n,o,r,s,a=t._i,l=wi.exec(a)||ki.exec(a),h=Di.length,u=Si.length;if(l){for(g(t).iso=!0,e=0,i=h;eve(r)||0===t._dayOfYear)&&(g(t)._overflowDayOfYear=!0),i=_e(r,0,t._dayOfYear),t._a[Vt]=i.getUTCMonth(),t._a[Ut]=i.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=n[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Xt]&&0===t._a[qt]&&0===t._a[$t]&&0===t._a[Zt]&&(t._nextDay=!0,t._a[Xt]=0),t._d=(t._useUTC?_e:be).apply(null,s),o=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Xt]=24),t._w&&void 0!==t._w.d&&t._w.d!==o&&(g(t).weekdayMismatch=!0)}}function Hi(t){var e,i,n,o,r,s,a,l,h;null!=(e=t._w).GG||null!=e.W||null!=e.E?(r=1,s=4,i=Ri(e.GG,t._a[Wt],xe($i(),1,4).year),n=Ri(e.W,1),((o=Ri(e.E,1))<1||o>7)&&(l=!0)):(r=t._locale._week.dow,s=t._locale._week.doy,h=xe($i(),r,s),i=Ri(e.gg,t._a[Wt],h.year),n=Ri(e.w,h.week),null!=e.d?((o=e.d)<0||o>6)&&(l=!0):null!=e.e?(o=e.e+r,(e.e<0||e.e>6)&&(l=!0)):o=r),n<1||n>De(i,r,s)?g(t)._overflowWeeks=!0:null!=l?g(t)._overflowWeekday=!0:(a=ke(i,n,o,r,s),t._a[Wt]=a.year,t._dayOfYear=a.dayOfYear)}function zi(t){if(t._f!==n.ISO_8601)if(t._f!==n.RFC_2822){t._a=[],g(t).empty=!0;var e,i,o,r,s,a,l,h=""+t._i,u=h.length,d=0;for(l=(o=V(t._f,t._locale).match(R)||[]).length,e=0;e0&&g(t).unusedInput.push(s),h=h.slice(h.indexOf(i)+i.length),d+=i.length),H[r]?(i?g(t).empty=!1:g(t).unusedTokens.push(r),Bt(r,i,t)):t._strict&&!i&&g(t).unusedTokens.push(r);g(t).charsLeftOver=u-d,h.length>0&&g(t).unusedInput.push(h),t._a[Xt]<=12&&!0===g(t).bigHour&&t._a[Xt]>0&&(g(t).bigHour=void 0),g(t).parsedDateParts=t._a.slice(0),g(t).meridiem=t._meridiem,t._a[Xt]=Bi(t._locale,t._a[Xt],t._meridiem),null!==(a=g(t).era)&&(t._a[Wt]=t._locale.erasConvertYear(a,t._a[Wt])),Yi(t),_i(t)}else Ni(t);else Oi(t)}function Bi(t,e,i){var n;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?((n=t.isPM(i))&&e<12&&(e+=12),n||12!==e||(e=0),e):e}function Gi(t){var e,i,n,o,r,s,a=!1,l=t._f.length;if(0===l)return g(t).invalidFormat=!0,void(t._d=new Date(NaN));for(o=0;othis?this:t:b()}));function Ji(t,e){var i,n;if(1===e.length&&s(e[0])&&(e=e[0]),!e.length)return $i();for(i=e[0],n=1;nthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function xn(){if(!u(this._isDSTShifted))return this._isDSTShifted;var t,e={};return k(e,this),(e=Ui(e))._a?(t=e._isUTC?m(e._a):$i(e._a),this._isDSTShifted=this.isValid()&&un(e._a,t.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function Dn(){return!!this.isValid()&&!this._isUTC}function Sn(){return!!this.isValid()&&this._isUTC}function Cn(){return!!this.isValid()&&this._isUTC&&0===this._offset}n.updateOffset=function(){};var Tn=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Mn=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function On(t,e){var i,n,o,r=t,s=null;return ln(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:d(t)||!isNaN(+t)?(r={},e?r[e]=+t:r.milliseconds=+t):(s=Tn.exec(t))?(i="-"===s[1]?-1:1,r={y:0,d:dt(s[Ut])*i,h:dt(s[Xt])*i,m:dt(s[qt])*i,s:dt(s[$t])*i,ms:dt(hn(1e3*s[Zt]))*i}):(s=Mn.exec(t))?(i="-"===s[1]?-1:1,r={y:En(s[2],i),M:En(s[3],i),w:En(s[4],i),d:En(s[5],i),h:En(s[6],i),m:En(s[7],i),s:En(s[8],i)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(o=An($i(r.from),$i(r.to)),(r={}).ms=o.milliseconds,r.M=o.months),n=new an(r),ln(t)&&l(t,"_locale")&&(n._locale=t._locale),ln(t)&&l(t,"_isValid")&&(n._isValid=t._isValid),n}function En(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function Pn(t,e){var i={};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=+e-+t.clone().add(i.months,"M"),i}function An(t,e){var i;return t.isValid()&&e.isValid()?(e=fn(e,t),t.isBefore(e)?i=Pn(t,e):((i=Pn(e,t)).milliseconds=-i.milliseconds,i.months=-i.months),i):{milliseconds:0,months:0}}function In(t,e){return function(i,n){var o;return null===n||isNaN(+n)||(O(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),o=i,i=n,n=o),Ln(this,On(i,n),t),this}}function Ln(t,e,i,o){var r=e._milliseconds,s=hn(e._days),a=hn(e._months);t.isValid()&&(o=null==o||o,a&&ue(t,pt(t,"Month")+a*i),s&&ft(t,"Date",pt(t,"Date")+s*i),r&&t._d.setTime(t._d.valueOf()+r*i),o&&n.updateOffset(t,s||a))}On.fn=an.prototype,On.invalid=sn;var Nn=In(1,"add"),Fn=In(-1,"subtract");function Rn(t){return"string"==typeof t||t instanceof String}function jn(t){return D(t)||c(t)||Rn(t)||d(t)||Hn(t)||Yn(t)||null==t}function Yn(t){var e,i,n=a(t)&&!h(t),o=!1,r=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],s=r.length;for(e=0;ei.valueOf():i.valueOf()9999?W(i,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):E(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",W(i,"Z")):W(i,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function eo(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t,e,i,n,o="moment",r="";return this.isLocal()||(o=0===this.utcOffset()?"moment.utc":"moment.parseZone",r="Z"),t="["+o+'("]',e=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i="-MM-DD[T]HH:mm:ss.SSS",n=r+'[")]',this.format(t+e+i+n)}function io(t){t||(t=this.isUtc()?n.defaultFormatUtc:n.defaultFormat);var e=W(this,t);return this.localeData().postformat(e)}function no(t,e){return this.isValid()&&(D(t)&&t.isValid()||$i(t).isValid())?On({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()}function oo(t){return this.from($i(),t)}function ro(t,e){return this.isValid()&&(D(t)&&t.isValid()||$i(t).isValid())?On({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()}function so(t){return this.to($i(),t)}function ao(t){var e;return void 0===t?this._locale._abbr:(null!=(e=yi(t))&&(this._locale=e),this)}n.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",n.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var lo=C("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(t){return void 0===t?this.localeData():this.locale(t)}));function ho(){return this._locale}var uo=1e3,co=60*uo,po=60*co,fo=3506328*po;function mo(t,e){return(t%e+e)%e}function vo(t,e,i){return t<100&&t>=0?new Date(t+400,e,i)-fo:new Date(t,e,i).valueOf()}function go(t,e,i){return t<100&&t>=0?Date.UTC(t+400,e,i)-fo:Date.UTC(t,e,i)}function yo(t){var e,i;if(void 0===(t=ot(t))||"millisecond"===t||!this.isValid())return this;switch(i=this._isUTC?go:vo,t){case"year":e=i(this.year(),0,1);break;case"quarter":e=i(this.year(),this.month()-this.month()%3,1);break;case"month":e=i(this.year(),this.month(),1);break;case"week":e=i(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":e=i(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":e=i(this.year(),this.month(),this.date());break;case"hour":e=this._d.valueOf(),e-=mo(e+(this._isUTC?0:this.utcOffset()*co),po);break;case"minute":e=this._d.valueOf(),e-=mo(e,co);break;case"second":e=this._d.valueOf(),e-=mo(e,uo)}return this._d.setTime(e),n.updateOffset(this,!0),this}function bo(t){var e,i;if(void 0===(t=ot(t))||"millisecond"===t||!this.isValid())return this;switch(i=this._isUTC?go:vo,t){case"year":e=i(this.year()+1,0,1)-1;break;case"quarter":e=i(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":e=i(this.year(),this.month()+1,1)-1;break;case"week":e=i(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":e=i(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":e=i(this.year(),this.month(),this.date()+1)-1;break;case"hour":e=this._d.valueOf(),e+=po-mo(e+(this._isUTC?0:this.utcOffset()*co),po)-1;break;case"minute":e=this._d.valueOf(),e+=co-mo(e,co)-1;break;case"second":e=this._d.valueOf(),e+=uo-mo(e,uo)-1}return this._d.setTime(e),n.updateOffset(this,!0),this}function _o(){return this._d.valueOf()-6e4*(this._offset||0)}function wo(){return Math.floor(this.valueOf()/1e3)}function ko(){return new Date(this.valueOf())}function xo(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]}function Do(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}}function So(){return this.isValid()?this.toISOString():null}function Co(){return y(this)}function To(){return f({},g(this))}function Mo(){return g(this).overflow}function Oo(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Eo(t,e){var i,o,r,s=this._eras||yi("en")._eras;for(i=0,o=s.length;i=0)return l[n]}function Ao(t,e){var i=t.since<=t.until?1:-1;return void 0===e?n(t.since).year():n(t.since).year()+(e-t.offset)*i}function Io(){var t,e,i,n=this.localeData().eras();for(t=0,e=n.length;t(r=De(t,n,o))&&(e=r),Qo.call(this,t,e,i,n,o))}function Qo(t,e,i,n,o){var r=ke(t,e,i,n,o),s=_e(r.year,0,r.dayOfYear);return this.year(s.getUTCFullYear()),this.month(s.getUTCMonth()),this.date(s.getUTCDate()),this}function tr(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)}z("N",0,0,"eraAbbr"),z("NN",0,0,"eraAbbr"),z("NNN",0,0,"eraAbbr"),z("NNNN",0,0,"eraName"),z("NNNNN",0,0,"eraNarrow"),z("y",["y",1],"yo","eraYear"),z("y",["yy",2],0,"eraYear"),z("y",["yyy",3],0,"eraYear"),z("y",["yyyy",4],0,"eraYear"),Nt("N",Ho),Nt("NN",Ho),Nt("NNN",Ho),Nt("NNNN",zo),Nt("NNNNN",Bo),Ht(["N","NN","NNN","NNNN","NNNNN"],(function(t,e,i,n){var o=i._locale.erasParse(t,n,i._strict);o?g(i).era=o:g(i).invalidEra=t})),Nt("y",Ot),Nt("yy",Ot),Nt("yyy",Ot),Nt("yyyy",Ot),Nt("yo",Go),Ht(["y","yy","yyy","yyyy"],Wt),Ht(["yo"],(function(t,e,i,n){var o;i._locale._eraYearOrdinalRegex&&(o=t.match(i._locale._eraYearOrdinalRegex)),i._locale.eraYearOrdinalParse?e[Wt]=i._locale.eraYearOrdinalParse(t,o):e[Wt]=parseInt(t,10)})),z(0,["gg",2],0,(function(){return this.weekYear()%100})),z(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),Vo("gggg","weekYear"),Vo("ggggg","weekYear"),Vo("GGGG","isoWeekYear"),Vo("GGGGG","isoWeekYear"),nt("weekYear","gg"),nt("isoWeekYear","GG"),at("weekYear",1),at("isoWeekYear",1),Nt("G",Et),Nt("g",Et),Nt("GG",xt,bt),Nt("gg",xt,bt),Nt("GGGG",Tt,wt),Nt("gggg",Tt,wt),Nt("GGGGG",Mt,kt),Nt("ggggg",Mt,kt),zt(["gggg","ggggg","GGGG","GGGGG"],(function(t,e,i,n){e[n.substr(0,2)]=dt(t)})),zt(["gg","GG"],(function(t,e,i,o){e[o]=n.parseTwoDigitYear(t)})),z("Q",0,"Qo","quarter"),nt("quarter","Q"),at("quarter",7),Nt("Q",yt),Ht("Q",(function(t,e){e[Vt]=3*(dt(t)-1)})),z("D",["DD",2],"Do","date"),nt("date","D"),at("date",9),Nt("D",xt),Nt("DD",xt,bt),Nt("Do",(function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient})),Ht(["D","DD"],Ut),Ht("Do",(function(t,e){e[Ut]=dt(t.match(xt)[0])}));var er=ct("Date",!0);function ir(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}z("DDD",["DDDD",3],"DDDo","dayOfYear"),nt("dayOfYear","DDD"),at("dayOfYear",4),Nt("DDD",Ct),Nt("DDDD",_t),Ht(["DDD","DDDD"],(function(t,e,i){i._dayOfYear=dt(t)})),z("m",["mm",2],0,"minute"),nt("minute","m"),at("minute",14),Nt("m",xt),Nt("mm",xt,bt),Ht(["m","mm"],qt);var nr=ct("Minutes",!1);z("s",["ss",2],0,"second"),nt("second","s"),at("second",15),Nt("s",xt),Nt("ss",xt,bt),Ht(["s","ss"],$t);var or,rr,sr=ct("Seconds",!1);for(z("S",0,0,(function(){return~~(this.millisecond()/100)})),z(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),z(0,["SSS",3],0,"millisecond"),z(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),z(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),z(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),z(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),z(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),z(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),nt("millisecond","ms"),at("millisecond",16),Nt("S",Ct,yt),Nt("SS",Ct,bt),Nt("SSS",Ct,_t),or="SSSS";or.length<=9;or+="S")Nt(or,Ot);function ar(t,e){e[Zt]=dt(1e3*("0."+t))}for(or="S";or.length<=9;or+="S")Ht(or,ar);function lr(){return this._isUTC?"UTC":""}function hr(){return this._isUTC?"Coordinated Universal Time":""}rr=ct("Milliseconds",!1),z("z",0,0,"zoneAbbr"),z("zz",0,0,"zoneName");var ur=x.prototype;function dr(t){return $i(1e3*t)}function cr(){return $i.apply(null,arguments).parseZone()}function pr(t){return t}ur.add=Nn,ur.calendar=Gn,ur.clone=Wn,ur.diff=Kn,ur.endOf=bo,ur.format=io,ur.from=no,ur.fromNow=oo,ur.to=ro,ur.toNow=so,ur.get=mt,ur.invalidAt=Mo,ur.isAfter=Vn,ur.isBefore=Un,ur.isBetween=Xn,ur.isSame=qn,ur.isSameOrAfter=$n,ur.isSameOrBefore=Zn,ur.isValid=Co,ur.lang=lo,ur.locale=ao,ur.localeData=ho,ur.max=Ki,ur.min=Zi,ur.parsingFlags=To,ur.set=vt,ur.startOf=yo,ur.subtract=Fn,ur.toArray=xo,ur.toObject=Do,ur.toDate=ko,ur.toISOString=to,ur.inspect=eo,"undefined"!=typeof Symbol&&null!=Symbol.for&&(ur[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),ur.toJSON=So,ur.toString=Qn,ur.unix=wo,ur.valueOf=_o,ur.creationData=Oo,ur.eraName=Io,ur.eraNarrow=Lo,ur.eraAbbr=No,ur.eraYear=Fo,ur.year=ge,ur.isLeapYear=ye,ur.weekYear=Uo,ur.isoWeekYear=Xo,ur.quarter=ur.quarters=tr,ur.month=de,ur.daysInMonth=ce,ur.week=ur.weeks=Oe,ur.isoWeek=ur.isoWeeks=Ee,ur.weeksInYear=Zo,ur.weeksInWeekYear=Ko,ur.isoWeeksInYear=qo,ur.isoWeeksInISOWeekYear=$o,ur.date=er,ur.day=ur.days=Ve,ur.weekday=Ue,ur.isoWeekday=Xe,ur.dayOfYear=ir,ur.hour=ur.hours=oi,ur.minute=ur.minutes=nr,ur.second=ur.seconds=sr,ur.millisecond=ur.milliseconds=rr,ur.utcOffset=vn,ur.utc=yn,ur.local=bn,ur.parseZone=_n,ur.hasAlignedHourOffset=wn,ur.isDST=kn,ur.isLocal=Dn,ur.isUtcOffset=Sn,ur.isUtc=Cn,ur.isUTC=Cn,ur.zoneAbbr=lr,ur.zoneName=hr,ur.dates=C("dates accessor is deprecated. Use date instead.",er),ur.months=C("months accessor is deprecated. Use month instead",de),ur.years=C("years accessor is deprecated. Use year instead",ge),ur.zone=C("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",gn),ur.isDSTShifted=C("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",xn);var fr=I.prototype;function mr(t,e,i,n){var o=yi(),r=m().set(n,e);return o[i](r,t)}function vr(t,e,i){if(d(t)&&(e=t,t=void 0),t=t||"",null!=e)return mr(t,e,i,"month");var n,o=[];for(n=0;n<12;n++)o[n]=mr(t,n,i,"month");return o}function gr(t,e,i,n){"boolean"==typeof t?(d(e)&&(i=e,e=void 0),e=e||""):(i=e=t,t=!1,d(e)&&(i=e,e=void 0),e=e||"");var o,r=yi(),s=t?r._week.dow:0,a=[];if(null!=i)return mr(e,(i+s)%7,n,"day");for(o=0;o<7;o++)a[o]=mr(e,(o+s)%7,n,"day");return a}function yr(t,e){return vr(t,e,"months")}function br(t,e){return vr(t,e,"monthsShort")}function _r(t,e,i){return gr(t,e,i,"weekdays")}function wr(t,e,i){return gr(t,e,i,"weekdaysShort")}function kr(t,e,i){return gr(t,e,i,"weekdaysMin")}fr.calendar=N,fr.longDateFormat=X,fr.invalidDate=$,fr.ordinal=J,fr.preparse=pr,fr.postformat=pr,fr.relativeTime=tt,fr.pastFuture=et,fr.set=P,fr.eras=Eo,fr.erasParse=Po,fr.erasConvertYear=Ao,fr.erasAbbrRegex=jo,fr.erasNameRegex=Ro,fr.erasNarrowRegex=Yo,fr.months=se,fr.monthsShort=ae,fr.monthsParse=he,fr.monthsRegex=fe,fr.monthsShortRegex=pe,fr.week=Se,fr.firstDayOfYear=Me,fr.firstDayOfWeek=Te,fr.weekdays=He,fr.weekdaysMin=Be,fr.weekdaysShort=ze,fr.weekdaysParse=We,fr.weekdaysRegex=qe,fr.weekdaysShortRegex=$e,fr.weekdaysMinRegex=Ze,fr.isPM=ii,fr.meridiem=ri,mi("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===dt(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),n.lang=C("moment.lang is deprecated. Use moment.locale instead.",mi),n.langData=C("moment.langData is deprecated. Use moment.localeData instead.",yi);var xr=Math.abs;function Dr(){var t=this._data;return this._milliseconds=xr(this._milliseconds),this._days=xr(this._days),this._months=xr(this._months),t.milliseconds=xr(t.milliseconds),t.seconds=xr(t.seconds),t.minutes=xr(t.minutes),t.hours=xr(t.hours),t.months=xr(t.months),t.years=xr(t.years),this}function Sr(t,e,i,n){var o=On(e,i);return t._milliseconds+=n*o._milliseconds,t._days+=n*o._days,t._months+=n*o._months,t._bubble()}function Cr(t,e){return Sr(this,t,e,1)}function Tr(t,e){return Sr(this,t,e,-1)}function Mr(t){return t<0?Math.floor(t):Math.ceil(t)}function Or(){var t,e,i,n,o,r=this._milliseconds,s=this._days,a=this._months,l=this._data;return r>=0&&s>=0&&a>=0||r<=0&&s<=0&&a<=0||(r+=864e5*Mr(Pr(a)+s),s=0,a=0),l.milliseconds=r%1e3,t=ut(r/1e3),l.seconds=t%60,e=ut(t/60),l.minutes=e%60,i=ut(e/60),l.hours=i%24,s+=ut(i/24),a+=o=ut(Er(s)),s-=Mr(Pr(o)),n=ut(a/12),a%=12,l.days=s,l.months=a,l.years=n,this}function Er(t){return 4800*t/146097}function Pr(t){return 146097*t/4800}function Ar(t){if(!this.isValid())return NaN;var e,i,n=this._milliseconds;if("month"===(t=ot(t))||"quarter"===t||"year"===t)switch(e=this._days+n/864e5,i=this._months+Er(e),t){case"month":return i;case"quarter":return i/3;case"year":return i/12}else switch(e=this._days+Math.round(Pr(this._months)),t){case"week":return e/7+n/6048e5;case"day":return e+n/864e5;case"hour":return 24*e+n/36e5;case"minute":return 1440*e+n/6e4;case"second":return 86400*e+n/1e3;case"millisecond":return Math.floor(864e5*e)+n;default:throw new Error("Unknown unit "+t)}}function Ir(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*dt(this._months/12):NaN}function Lr(t){return function(){return this.as(t)}}var Nr=Lr("ms"),Fr=Lr("s"),Rr=Lr("m"),jr=Lr("h"),Yr=Lr("d"),Hr=Lr("w"),zr=Lr("M"),Br=Lr("Q"),Gr=Lr("y");function Wr(){return On(this)}function Vr(t){return t=ot(t),this.isValid()?this[t+"s"]():NaN}function Ur(t){return function(){return this.isValid()?this._data[t]:NaN}}var Xr=Ur("milliseconds"),qr=Ur("seconds"),$r=Ur("minutes"),Zr=Ur("hours"),Kr=Ur("days"),Jr=Ur("months"),Qr=Ur("years");function ts(){return ut(this.days()/7)}var es=Math.round,is={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function ns(t,e,i,n,o){return o.relativeTime(e||1,!!i,t,n)}function os(t,e,i,n){var o=On(t).abs(),r=es(o.as("s")),s=es(o.as("m")),a=es(o.as("h")),l=es(o.as("d")),h=es(o.as("M")),u=es(o.as("w")),d=es(o.as("y")),c=r<=i.ss&&["s",r]||r0,c[4]=n,ns.apply(null,c)}function rs(t){return void 0===t?es:"function"==typeof t&&(es=t,!0)}function ss(t,e){return void 0!==is[t]&&(void 0===e?is[t]:(is[t]=e,"s"===t&&(is.ss=e-1),!0))}function as(t,e){if(!this.isValid())return this.localeData().invalidDate();var i,n,o=!1,r=is;return"object"==typeof t&&(e=t,t=!1),"boolean"==typeof t&&(o=t),"object"==typeof e&&(r=Object.assign({},is,e),null!=e.s&&null==e.ss&&(r.ss=e.s-1)),n=os(this,!o,r,i=this.localeData()),o&&(n=i.pastFuture(+this,n)),i.postformat(n)}var ls=Math.abs;function hs(t){return(t>0)-(t<0)||+t}function us(){if(!this.isValid())return this.localeData().invalidDate();var t,e,i,n,o,r,s,a,l=ls(this._milliseconds)/1e3,h=ls(this._days),u=ls(this._months),d=this.asSeconds();return d?(t=ut(l/60),e=ut(t/60),l%=60,t%=60,i=ut(u/12),u%=12,n=l?l.toFixed(3).replace(/\.?0+$/,""):"",o=d<0?"-":"",r=hs(this._months)!==hs(d)?"-":"",s=hs(this._days)!==hs(d)?"-":"",a=hs(this._milliseconds)!==hs(d)?"-":"",o+"P"+(i?r+i+"Y":"")+(u?r+u+"M":"")+(h?s+h+"D":"")+(e||t||l?"T":"")+(e?a+e+"H":"")+(t?a+t+"M":"")+(l?a+n+"S":"")):"P0D"}var ds=an.prototype;return ds.isValid=rn,ds.abs=Dr,ds.add=Cr,ds.subtract=Tr,ds.as=Ar,ds.asMilliseconds=Nr,ds.asSeconds=Fr,ds.asMinutes=Rr,ds.asHours=jr,ds.asDays=Yr,ds.asWeeks=Hr,ds.asMonths=zr,ds.asQuarters=Br,ds.asYears=Gr,ds.valueOf=Ir,ds._bubble=Or,ds.clone=Wr,ds.get=Vr,ds.milliseconds=Xr,ds.seconds=qr,ds.minutes=$r,ds.hours=Zr,ds.days=Kr,ds.weeks=ts,ds.months=Jr,ds.years=Qr,ds.humanize=as,ds.toISOString=us,ds.toString=us,ds.toJSON=us,ds.locale=ao,ds.localeData=ho,ds.toIsoString=C("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",us),ds.lang=lo,z("X",0,0,"unix"),z("x",0,0,"valueOf"),Nt("x",Et),Nt("X",It),Ht("X",(function(t,e,i){i._d=new Date(1e3*parseFloat(t))})),Ht("x",(function(t,e,i){i._d=new Date(dt(t))})),//! moment.js +n.version="2.29.4",r($i),n.fn=ur,n.min=Qi,n.max=tn,n.now=en,n.utc=m,n.unix=dr,n.months=yr,n.isDate=c,n.locale=mi,n.invalid=b,n.duration=On,n.isMoment=D,n.weekdays=_r,n.parseZone=cr,n.localeData=yi,n.isDuration=ln,n.monthsShort=br,n.weekdaysMin=kr,n.defineLocale=vi,n.updateLocale=gi,n.locales=bi,n.weekdaysShort=wr,n.normalizeUnits=ot,n.relativeTimeRounding=rs,n.relativeTimeThreshold=ss,n.calendarFormat=Bn,n.prototype=ur,n.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},n}()}(s)),s.exports}!function(t){function e(t,e,i,n){var o={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?o[i][0]:o[i][1]}t.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,w:e,ww:"%d Wochen",M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a()),function(t){var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),i="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],o=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;t.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,n){return t?/-MMM-/.test(n)?i[t.month()]:e[t.month()]:e},monthsRegex:o,monthsShortRegex:o,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4},invalidDate:"Fecha inválida"})}(a()),function(t){var e=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,i=[/^janv/i,/^févr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^août/i,/^sept/i,/^oct/i,/^nov/i,/^déc/i];t.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsRegex:e,monthsShortRegex:e,monthsStrictRegex:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,monthsShortStrictRegex:/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",w:"une semaine",ww:"%d semaines",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(t,e){switch(e){case"D":return t+(1===t?"er":"");default:case"M":case"Q":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}},week:{dow:1,doy:4}})}(a()),function(t){t.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",w:"una settimana",ww:"%d settimane",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(a()),function(t){t.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"令和",narrow:"㋿",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"平成",narrow:"㍻",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"昭和",narrow:"㍼",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"大正",narrow:"㍽",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"明治",narrow:"㍾",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"西暦",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"紀元前",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(元|\d+)年/,eraYearOrdinalParse:function(t,e){return"元"===e[1]?1:parseInt(e[1]||t,10)},months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(t){return"午後"===t},meridiem:function(t,e,i){return t<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(t){return t.week()!==this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(t){return this.week()!==t.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(t,e){switch(e){case"y":return 1===t?"元年":t+"年";case"d":case"D":case"DDD":return t+"日";default:return t}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}(a()),function(t){var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),i="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],o=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;t.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(t,n){return t?/-MMM-/.test(n)?i[t.month()]:e[t.month()]:e},monthsRegex:o,monthsShortRegex:o,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",w:"één week",ww:"%d weken",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})}(a()),function(t){var e="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),i="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),n=[/^sty/i,/^lut/i,/^mar/i,/^kwi/i,/^maj/i,/^cze/i,/^lip/i,/^sie/i,/^wrz/i,/^paź/i,/^lis/i,/^gru/i];function o(t){return t%10<5&&t%10>1&&~~(t/10)%10!=1}function r(t,e,i){var n=t+" ";switch(i){case"ss":return n+(o(t)?"sekundy":"sekund");case"m":return e?"minuta":"minutę";case"mm":return n+(o(t)?"minuty":"minut");case"h":return e?"godzina":"godzinę";case"hh":return n+(o(t)?"godziny":"godzin");case"ww":return n+(o(t)?"tygodnie":"tygodni");case"MM":return n+(o(t)?"miesiące":"miesięcy");case"yy":return n+(o(t)?"lata":"lat")}}t.defineLocale("pl",{months:function(t,n){return t?/D MMMM/.test(n)?i[t.month()]:e[t.month()]:e},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:r,m:r,mm:r,h:r,hh:r,d:"1 dzień",dd:"%d dni",w:"tydzień",ww:r,M:"miesiąc",MM:r,y:"rok",yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(a()),function(t){function e(t,e,i){var n,o;return"m"===i?e?"минута":"минуту":t+" "+(n=+t,o={ss:e?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:e?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",ww:"неделя_недели_недель",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[i].split("_"),n%10==1&&n%100!=11?o[0]:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?o[1]:o[2])}var i=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];t.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:i,longMonthsParse:i,shortMonthsParse:i,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(t){if(t.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(t){if(t.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:e,m:e,mm:e,h:"час",hh:e,d:"день",dd:e,w:"неделя",ww:e,M:"месяц",MM:e,y:"год",yy:e},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(t){return/^(дня|вечера)$/.test(t)},meridiem:function(t,e,i){return t<4?"ночи":t<12?"утра":t<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":return t+"-й";case"D":return t+"-го";case"w":case"W":return t+"-я";default:return t}},week:{dow:1,doy:4}})}(a()),function(t){function e(t,e,i){var n,o;return"m"===i?e?"хвилина":"хвилину":"h"===i?e?"година":"годину":t+" "+(n=+t,o={ss:e?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:e?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:e?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[i].split("_"),n%10==1&&n%100!=11?o[0]:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?o[1]:o[2])}function i(t){return function(){return t+"о"+(11===this.hours()?"б":"")+"] LT"}}t.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(t,e){var i={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===t?i.nominative.slice(1,7).concat(i.nominative.slice(0,1)):t?i[/(\[[ВвУу]\]) ?dddd/.test(e)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(e)?"genitive":"nominative"][t.day()]:i.nominative},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:i("[Сьогодні "),nextDay:i("[Завтра "),lastDay:i("[Вчора "),nextWeek:i("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return i("[Минулої] dddd [").call(this);case 1:case 2:case 4:return i("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:e,m:e,mm:e,h:"годину",hh:e,d:"день",dd:e,M:"місяць",MM:e,y:"рік",yy:e},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(t){return/^(дня|вечора)$/.test(t)},meridiem:function(t,e,i){return t<4?"ночі":t<12?"ранку":t<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":case"w":case"W":return t+"-й";case"D":return t+"-го";default:return t}},week:{dow:1,doy:7}})}(a());var l={exports:{}},h=function(t){try{return!!t()}catch(t){return!0}},u=!h((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")})),d=u,c=Function.prototype,p=c.bind,f=c.call,m=d&&p.bind(f,f),v=d?function(t){return t&&m(t)}:function(t){return t&&function(){return f.apply(t,arguments)}},g=Math.ceil,y=Math.floor,b=function(t){var e=+t;return e!=e||0===e?0:(e>0?y:g)(e)},_=function(t){return t&&t.Math==Math&&t},w=_("object"==typeof globalThis&&globalThis)||_("object"==typeof window&&window)||_("object"==typeof self&&self)||_("object"==typeof e&&e)||function(){return this}()||Function("return this")(),k={exports:{}},x=w,D=Object.defineProperty,S=function(t,e){try{D(x,t,{value:e,configurable:!0,writable:!0})}catch(i){x[t]=e}return e},C="__core-js_shared__",T=w[C]||S(C,{}),M=T;(k.exports=function(t,e){return M[t]||(M[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.21.1",mode:"pure",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.21.1/LICENSE",source:"https://github.com/zloirock/core-js"});var O,E,P=w.TypeError,A=function(t){if(null==t)throw P("Can't call method on "+t);return t},I=A,L=w.Object,N=function(t){return L(I(t))},F=N,R=v({}.hasOwnProperty),j=Object.hasOwn||function(t,e){return R(F(t),e)},Y=v,H=0,z=Math.random(),B=Y(1..toString),G=function(t){return"Symbol("+(void 0===t?"":t)+")_"+B(++H+z,36)},W={},V=function(t){return"function"==typeof t},U=W,X=w,q=V,$=function(t){return q(t)?t:void 0},Z=function(t,e){return arguments.length<2?$(U[t])||$(X[t]):U[t]&&U[t][e]||X[t]&&X[t][e]},K=Z("navigator","userAgent")||"",J=w,Q=K,tt=J.process,et=J.Deno,it=tt&&tt.versions||et&&et.version,nt=it&&it.v8;nt&&(E=(O=nt.split("."))[0]>0&&O[0]<4?1:+(O[0]+O[1])),!E&&Q&&(!(O=Q.match(/Edge\/(\d+)/))||O[1]>=74)&&(O=Q.match(/Chrome\/(\d+)/))&&(E=+O[1]);var ot=E,rt=ot,st=h,at=!!Object.getOwnPropertySymbols&&!st((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&rt&&rt<41})),lt=at&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,ht=w,ut=k.exports,dt=j,ct=G,pt=at,ft=lt,mt=ut("wks"),vt=ht.Symbol,gt=vt&&vt.for,yt=ft?vt:vt&&vt.withoutSetter||ct,bt=function(t){if(!dt(mt,t)||!pt&&"string"!=typeof mt[t]){var e="Symbol."+t;pt&&dt(vt,t)?mt[t]=vt[t]:mt[t]=ft&>?gt(e):yt(e)}return mt[t]},_t={};_t[bt("toStringTag")]="z";var wt="[object z]"===String(_t),kt=v,xt=kt({}.toString),Dt=kt("".slice),St=function(t){return Dt(xt(t),8,-1)},Ct=w,Tt=wt,Mt=V,Ot=St,Et=bt("toStringTag"),Pt=Ct.Object,At="Arguments"==Ot(function(){return arguments}()),It=Tt?Ot:function(t){var e,i,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(i=function(t,e){try{return t[e]}catch(t){}}(e=Pt(t),Et))?i:At?Ot(e):"Object"==(n=Ot(e))&&Mt(e.callee)?"Arguments":n},Lt=It,Nt=w.String,Ft=function(t){if("Symbol"===Lt(t))throw TypeError("Cannot convert a Symbol value to a string");return Nt(t)},Rt=v,jt=b,Yt=Ft,Ht=A,zt=Rt("".charAt),Bt=Rt("".charCodeAt),Gt=Rt("".slice),Wt=function(t){return function(e,i){var n,o,r=Yt(Ht(e)),s=jt(i),a=r.length;return s<0||s>=a?t?"":void 0:(n=Bt(r,s))<55296||n>56319||s+1===a||(o=Bt(r,s+1))<56320||o>57343?t?zt(r,s):n:t?Gt(r,s,s+2):o-56320+(n-55296<<10)+65536}},Vt={codeAt:Wt(!1),charAt:Wt(!0)},Ut=V,Xt=T,qt=v(Function.toString);Ut(Xt.inspectSource)||(Xt.inspectSource=function(t){return qt(t)});var $t=Xt.inspectSource,Zt=V,Kt=$t,Jt=w.WeakMap,Qt=Zt(Jt)&&/native code/.test(Kt(Jt)),te=V,ee=function(t){return"object"==typeof t?null!==t:te(t)},ie=!h((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),ne={},oe=ee,re=w.document,se=oe(re)&&oe(re.createElement),ae=function(t){return se?re.createElement(t):{}},le=ae,he=!ie&&!h((function(){return 7!=Object.defineProperty(le("div"),"a",{get:function(){return 7}}).a})),ue=ie&&h((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),de=w,ce=ee,pe=de.String,fe=de.TypeError,me=function(t){if(ce(t))return t;throw fe(pe(t)+" is not an object")},ve=u,ge=Function.prototype.call,ye=ve?ge.bind(ge):function(){return ge.apply(ge,arguments)},be=v({}.isPrototypeOf),_e=Z,we=V,ke=be,xe=lt,De=w.Object,Se=xe?function(t){return"symbol"==typeof t}:function(t){var e=_e("Symbol");return we(e)&&ke(e.prototype,De(t))},Ce=w.String,Te=function(t){try{return Ce(t)}catch(t){return"Object"}},Me=V,Oe=Te,Ee=w.TypeError,Pe=function(t){if(Me(t))return t;throw Ee(Oe(t)+" is not a function")},Ae=Pe,Ie=function(t,e){var i=t[e];return null==i?void 0:Ae(i)},Le=ye,Ne=V,Fe=ee,Re=w.TypeError,je=ye,Ye=ee,He=Se,ze=Ie,Be=function(t,e){var i,n;if("string"===e&&Ne(i=t.toString)&&!Fe(n=Le(i,t)))return n;if(Ne(i=t.valueOf)&&!Fe(n=Le(i,t)))return n;if("string"!==e&&Ne(i=t.toString)&&!Fe(n=Le(i,t)))return n;throw Re("Can't convert object to primitive value")},Ge=bt,We=w.TypeError,Ve=Ge("toPrimitive"),Ue=function(t,e){if(!Ye(t)||He(t))return t;var i,n=ze(t,Ve);if(n){if(void 0===e&&(e="default"),i=je(n,t,e),!Ye(i)||He(i))return i;throw We("Can't convert object to primitive value")}return void 0===e&&(e="number"),Be(t,e)},Xe=Se,qe=function(t){var e=Ue(t,"string");return Xe(e)?e:e+""},$e=ie,Ze=he,Ke=ue,Je=me,Qe=qe,ti=w.TypeError,ei=Object.defineProperty,ii=Object.getOwnPropertyDescriptor,ni="enumerable",oi="configurable",ri="writable";ne.f=$e?Ke?function(t,e,i){if(Je(t),e=Qe(e),Je(i),"function"==typeof t&&"prototype"===e&&"value"in i&&ri in i&&!i.writable){var n=ii(t,e);n&&n.writable&&(t[e]=i.value,i={configurable:oi in i?i.configurable:n.configurable,enumerable:ni in i?i.enumerable:n.enumerable,writable:!1})}return ei(t,e,i)}:ei:function(t,e,i){if(Je(t),e=Qe(e),Je(i),Ze)try{return ei(t,e,i)}catch(t){}if("get"in i||"set"in i)throw ti("Accessors not supported");return"value"in i&&(t[e]=i.value),t};var si,ai,li,hi=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},ui=ne,di=hi,ci=ie?function(t,e,i){return ui.f(t,e,di(1,i))}:function(t,e,i){return t[e]=i,t},pi=k.exports,fi=G,mi=pi("keys"),vi=function(t){return mi[t]||(mi[t]=fi(t))},gi={},yi=Qt,bi=w,_i=v,wi=ee,ki=ci,xi=j,Di=T,Si=vi,Ci=gi,Ti="Object already initialized",Mi=bi.TypeError,Oi=bi.WeakMap;if(yi||Di.state){var Ei=Di.state||(Di.state=new Oi),Pi=_i(Ei.get),Ai=_i(Ei.has),Ii=_i(Ei.set);si=function(t,e){if(Ai(Ei,t))throw new Mi(Ti);return e.facade=t,Ii(Ei,t,e),e},ai=function(t){return Pi(Ei,t)||{}},li=function(t){return Ai(Ei,t)}}else{var Li=Si("state");Ci[Li]=!0,si=function(t,e){if(xi(t,Li))throw new Mi(Ti);return e.facade=t,ki(t,Li,e),e},ai=function(t){return xi(t,Li)?t[Li]:{}},li=function(t){return xi(t,Li)}}var Ni={set:si,get:ai,has:li,enforce:function(t){return li(t)?ai(t):si(t,{})},getterFor:function(t){return function(e){var i;if(!wi(e)||(i=ai(e)).type!==t)throw Mi("Incompatible receiver, "+t+" required");return i}}},Fi=u,Ri=Function.prototype,ji=Ri.apply,Yi=Ri.call,Hi="object"==typeof Reflect&&Reflect.apply||(Fi?Yi.bind(ji):function(){return Yi.apply(ji,arguments)}),zi={},Bi={},Gi={}.propertyIsEnumerable,Wi=Object.getOwnPropertyDescriptor,Vi=Wi&&!Gi.call({1:2},1);Bi.f=Vi?function(t){var e=Wi(this,t);return!!e&&e.enumerable}:Gi;var Ui=v,Xi=h,qi=St,$i=w.Object,Zi=Ui("".split),Ki=Xi((function(){return!$i("z").propertyIsEnumerable(0)}))?function(t){return"String"==qi(t)?Zi(t,""):$i(t)}:$i,Ji=Ki,Qi=A,tn=function(t){return Ji(Qi(t))},en=ie,nn=ye,on=Bi,rn=hi,sn=tn,an=qe,ln=j,hn=he,un=Object.getOwnPropertyDescriptor;zi.f=en?un:function(t,e){if(t=sn(t),e=an(e),hn)try{return un(t,e)}catch(t){}if(ln(t,e))return rn(!nn(on.f,t,e),t[e])};var dn=h,cn=V,pn=/#|\.prototype\./,fn=function(t,e){var i=vn[mn(t)];return i==yn||i!=gn&&(cn(e)?dn(e):!!e)},mn=fn.normalize=function(t){return String(t).replace(pn,".").toLowerCase()},vn=fn.data={},gn=fn.NATIVE="N",yn=fn.POLYFILL="P",bn=fn,_n=Pe,wn=u,kn=v(v.bind),xn=function(t,e){return _n(t),void 0===e?t:wn?kn(t,e):function(){return t.apply(e,arguments)}},Dn=w,Sn=Hi,Cn=v,Tn=V,Mn=zi.f,On=bn,En=W,Pn=xn,An=ci,In=j,Ln=function(t){var e=function(i,n,o){if(this instanceof e){switch(arguments.length){case 0:return new t;case 1:return new t(i);case 2:return new t(i,n)}return new t(i,n,o)}return Sn(t,this,arguments)};return e.prototype=t.prototype,e},Nn=function(t,e){var i,n,o,r,s,a,l,h,u=t.target,d=t.global,c=t.stat,p=t.proto,f=d?Dn:c?Dn[u]:(Dn[u]||{}).prototype,m=d?En:En[u]||An(En,u,{})[u],v=m.prototype;for(o in e)i=!On(d?o:u+(c?".":"#")+o,t.forced)&&f&&In(f,o),s=m[o],i&&(a=t.noTargetGet?(h=Mn(f,o))&&h.value:f[o]),r=i&&a?a:e[o],i&&typeof s==typeof r||(l=t.bind&&i?Pn(r,Dn):t.wrap&&i?Ln(r):p&&Tn(r)?Cn(r):r,(t.sham||r&&r.sham||s&&s.sham)&&An(l,"sham",!0),An(m,o,l),p&&(In(En,n=u+"Prototype")||An(En,n,{}),An(En[n],o,r),t.real&&v&&!v[o]&&An(v,o,r)))},Fn=ie,Rn=j,jn=Function.prototype,Yn=Fn&&Object.getOwnPropertyDescriptor,Hn=Rn(jn,"name"),zn={EXISTS:Hn,PROPER:Hn&&"something"===function(){}.name,CONFIGURABLE:Hn&&(!Fn||Fn&&Yn(jn,"name").configurable)},Bn={},Gn=b,Wn=Math.max,Vn=Math.min,Un=function(t,e){var i=Gn(t);return i<0?Wn(i+e,0):Vn(i,e)},Xn=b,qn=Math.min,$n=function(t){return t>0?qn(Xn(t),9007199254740991):0},Zn=function(t){return $n(t.length)},Kn=tn,Jn=Un,Qn=Zn,to=function(t){return function(e,i,n){var o,r=Kn(e),s=Qn(r),a=Jn(n,s);if(t&&i!=i){for(;s>a;)if((o=r[a++])!=o)return!0}else for(;s>a;a++)if((t||a in r)&&r[a]===i)return t||a||0;return!t&&-1}},eo={includes:to(!0),indexOf:to(!1)},io=j,no=tn,oo=eo.indexOf,ro=gi,so=v([].push),ao=function(t,e){var i,n=no(t),o=0,r=[];for(i in n)!io(ro,i)&&io(n,i)&&so(r,i);for(;e.length>o;)io(n,i=e[o++])&&(~oo(r,i)||so(r,i));return r},lo=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],ho=ao,uo=lo,co=Object.keys||function(t){return ho(t,uo)},po=ie,fo=ue,mo=ne,vo=me,go=tn,yo=co;Bn.f=po&&!fo?Object.defineProperties:function(t,e){vo(t);for(var i,n=go(e),o=yo(e),r=o.length,s=0;r>s;)mo.f(t,i=o[s++],n[i]);return t};var bo,_o=Z("document","documentElement"),wo=me,ko=Bn,xo=lo,Do=gi,So=_o,Co=ae,To=vi("IE_PROTO"),Mo=function(){},Oo=function(t){return" + + + +
    + + +
    +
    +

    Fileuploader Documentation

    +  + +

    Welcome to Fileuploader's documentation.

    + +

    Fileuploader is a beautiful and powerful HTML5 file upload plugin. A jQuery, PHP and Node.js tool that transforms the standard file input into a revolutionary and fancy field on your page. The Fileuploader Javascript plugin works for servers based on ASP.NET, C#, Python and others that supports standard HTML form file uploads as well.

    + +

    The documentation describes all options and features so you will see that the Fileuploader can be easily implemented in many systems. In average, you need less than five minutes to link the plugin files into your HTML page to get your new file input working.

    + +

    What's included

    + +

    Checkout the files that you'll see upon downloading.

    + +
    +
      +
    • dist +
        +
      • font
      • +
      • jquery.fileuploader.min.css
      • +
      • jquery.fileuploader.min.js
      • +
      +
    • +
    • examples
    • +
    • src +
        +
      • php +
          +
        • class.fileuploader.php
        • +
        +
      • +
      • node +
          +
        • fileuploader.js
        • +
        • package.json
        • +
        +
      • +
      • thirdparty +
          +
        • s3
        • +
        +
      • +
      • jquery.fileuploader.sass
      • +
      • jquery.fileuploader.js
      • +
      +
    • +
    • documentation.html
    • +
    +
    + +

    Contact Us

    + +

    Please don't hesitate to contact us with any regarding questions or other business inquiries using live chat or write an email to contact@innostudio.de. We are looking forward to answer your questions within 24 hours.

    + +

    Getting started

    + +

    Get started with the installation instructions.

    +
    + +
    +

    Installation

    + +

    Get the plugin zip file on the download page. We have to install Fileuploader by linking in our document <head> the css and js files from dist folder. Also don't forget to load jQuery library.

    + +
    +<!-- font -->
    +<link href="dist/font/font-fileuploader.css" media="all" rel="stylesheet">
    +
    +<!-- css -->
    +<link href="dist/jquery.fileuploader.min.css" media="all" rel="stylesheet">
    +
    +<!-- js -->
    +<script src="//code.jquery.com/jquery-3.2.1.min.js" type="text/javascript"></script>
    +<script src="dist/jquery.fileuploader.min.js" type="text/javascript"></script>
    +  + +

    With the files in place we can now set up the Fileuploader instance.

    +
    + +
    +

    How to use

    + +

    Create a standard HTML form element. In this form we will have our file input and maybe other fields. We don't need to put the file input into a <form> element if we want to upload the files separately using Ajax.

    + +
    +<form action="submit.php" method="post" enctype="multipart/form-data">
    +    <!-- file input -->
    +    <input type="file" name="files">
    +
    +    <input type="submit">
    +</form>
    +  + +

    Select a file input element with a jQuery selector and call the fileuploader method.

    + +
    +<script type="text/javascript">
    +    $(document).ready(function() {
    +        $('input[name="files"]').fileuploader({
    +            // Options will go here
    +        });
    +    });
    +</script>
    + +

    While using a Node.js server or others besides PHP, consider to set the option inputNameBrackets: false.

    + +

    Now when we have the first view of Fileuploader working, we can configurate it using the examples or the options section.

    +
    + +
    +

    Examples

    + +

    In the following examples we collected different usages of the Fileuploader. Don't forget that some examples have subfolders for different modes and that you can combine examples together. Please check all .css, .js and .php files from the examples.

    + +

    Check also the Inspect Element tool (Network, Sources and Console tab) in your browser to understand the configuration much easier.

    +Modes: + + +
    +Themes: + + +
    +Preloaded files: + + +
    +Image editor: + + +
    +File sorter: + + +
    +Others: + + +
    + +
    +

    Options

    + +

    Available options are listed below. Remember! In all text options you can use Text Variables or functions which are returning text.

    + +

    Validations

    + +

    Note! to set the same validations on the backend.

    + +

    1. limit of the choosen and preloaded files {null, Number}

    + +
    +// if null - has no limits
    +// example: 3
    +limit: null
    + +

    2. maximal size in MB of the choosen and preloaded files together {null, Number}

    + +
    +// if null - has no limits
    +// example: 3
    +maxSize: null
    + +

    3. maximal size of each choosen file in MB {null, Number}

    + +
    +// if null - has no limits
    +// example: 3
    +fileMaxSize: null
    + +

    4. allowed extensions or file types {null, Array}

    + +
    +// if null - has no limits
    +// example: ['jpg', 'jpeg', 'png', 'text/plain', 'audio/*']
    +extensions: null
    + +

    5. disallowed extensions or file types {null, Array}

    + +
    +// if null - has no limits
    +// example: ['jpg', 'jpeg', 'png', 'text/plain', 'audio/*']
    +disallowedExtensions: null
    + +

    We can use the onFilesCheck callback from the callbacks section to add our own validation function.

    + +

    Templates

    + +

    1. add theme class name to fileuploader {null, String}

    + +
    +// the class name will be: fileuploader-theme-default
    +theme: 'default'
    + +

    2. change the file input {Boolean, String, Function, jQuery Object}

    + +
    +// example: true
    +// example: ' ' - no input
    +// example: '<div>Click me</div>'
    +// example: function(options) { return '<div>Click me</div>'; }
    +// example: $('.selector')
    +changeInput: true
    + +

    3. thumbnails for files {null, Object}

    + +
    thumbnails: {
    +    // thumbnails list HTML {String, Function}
    +    // example: '<ul></ul>'
    +    // example: function(options) { return '<ul></ul>'; }
    +    box: '<div class="fileuploader-items">' +
    +            '<ul class="fileuploader-items-list"></ul>' +
    +        '</div>',
    +
    +    // append thumbnails list to selector {null, String, jQuery Object}
    +    // example: 'body'
    +    boxAppendTo: null,
    +
    +    // thumbnails for the choosen files {String, Function}
    +    // example: '<li>${name}</li>'
    +    // example: function(item) { return '<li>' + item.name + '</li>'; }
    +    item: '<li class="fileuploader-item">' +
    +       '<div class="columns">' +
    +           '<div class="column-thumbnail">${image}<span class="fileuploader-action-popup"></span></div>' +
    +           '<div class="column-title">' +
    +               '<div title="${name}">${name}</div>' +
    +               '<span>${size2}</span>' +
    +           '</div>' +
    +           '<div class="column-actions">' +
    +               '<button class="fileuploader-action fileuploader-action-remove" title="${captions.remove}"><i class="fileuploader-icon-remove"></i></a>' +
    +           '</div>' +
    +       '</div>' +
    +       '<div class="progress-bar2">${progressBar}<span></span></div>' +
    +    '</li>',
    +
    +    // thumbnails for the preloaded files {String, Function}
    +    // example: '<li>${name}</li>'
    +    // example: function(item) { return '<li>' + item.name + '</li>'; }
    +    item2: '<li class="fileuploader-item">' +
    +        '<div class="columns">' +
    +            '<div class="column-thumbnail">${image}<span class="fileuploader-action-popup"></span></div>' +
    +            '<div class="column-title">' +
    +                '<a href="${file}" target="_blank">' +
    +                    '<div title="${name}">${name}</div>' +
    +                    '<span>${size2}</span>' +
    +                '</a>' +
    +            '</div>' +
    +            '<div class="column-actions">' +
    +                '<a href="${file}" class="fileuploader-action fileuploader-action-download" title="${captions.download}" download><i class="fileuploader-icon-download"></i></a>' +
    +                '<button class="fileuploader-action fileuploader-action-remove" title="${captions.remove}"><i class="fileuploader-icon-remove"></i></a>' +
    +            '</div>' +
    +        '</div>' +
    +    '</li>',
    +
    +    // thumbnails selectors
    +    _selectors: {
    +        list: '.fileuploader-items-list',
    +        item: '.fileuploader-item',
    +        start: '.fileuploader-action-start',
    +        retry: '.fileuploader-action-retry',
    +        remove: '.fileuploader-action-remove',
    +        sorter: '.fileuploader-action-sort',
    +        popup: '.fileuploader-popup-preview',
    +        popup_open: '.fileuploader-action-popup'
    +    },
    +
    +    // insert the thumbnail's item at the begining of the list? {Boolean}
    +    itemPrepend: false,
    +
    +    // show a confirmation dialog by removing a file? {Boolean}
    +    // it will not be shown in upload mode by canceling an upload
    +    // you can call your own dialog box using dialogs option
    +    removeConfirmation: true,
    +
    +    // render the image thumbnail? {Boolean}
    +    // if false, it will generate an icon(you can also hide it with css)
    +    // if false, you can use the API method item.renderThumbnail() to render it (check thumbnails example)
    +    startImageRenderer: true,
    +
    +    // render the images synchron {Boolean}
    +    // used to improve the browser speed
    +    synchronImages: true,
    +
    +    // read image using URL createObjectURL method {Boolean}
    +    // if false, it will use readAsDataURL
    +    useObjectUrl: false,
    +
    +    // render the image in a canvas element {Boolean, Object}
    +    // if true, it will generate an image with the css sizes from the parent element of ${image}
    +    // you can also set the width and the height in the object {width: 96, height: 96}
    +    canvasImage: true,
    +
    +    // render thumbnail for video files? {Boolean}
    +    videoThumbnail: false,
    +
    +    // fix exif orientation {Boolean}
    +    exif: true,
    +
    +    // Callback fired before adding the list element
    +    beforeShow: null,
    +
    +    // Callback fired after adding the item element
    +    onItemShow: null,
    +
    +    // Callback fired after removing the item element
    +    // by default we will animate the removing action
    +    onItemRemove: function(html) {
    +        html.children().animate({'opacity': 0}, 200, function() {
    +            setTimeout(function() {
    +                html.slideUp(200, function() {
    +                    html.remove();
    +                });
    +            }, 100);
    +        });
    +    },
    +
    +    // Callback fired after the item image was loaded or a image file is invalid
    +    // default - null
    +    onImageLoaded: function(item, listEl, parentEl, newInputEl, inputEl) {
    +        // invalid image?
    +        if (item.image.hasClass('fileuploader-no-thumbnail')) {
    +            // callback goes here
    +        }
    +
    +        // check image size and ratio?
    +        if (item.reader.node && item.reader.width > 1920 && item.reader.height > 1080 && item.reader.ratio != '16:9') {
    +            // callback goes here
    +        }
    +    },
    +
    +    // item popup preview {Object}
    +    popup: {
    +        // popup append to container {String, jQuery Object}
    +        container: 'body',
    +
    +        // enable arrows {Boolean}
    +        arrows: true,
    +
    +        // loop the arrows {Boolean}
    +        loop: true,
    +
    +        // popup HTML {String, Function}
    +        template: function(data) { return '<div class="fileuploader-popup-preview">' +
    +          '<button class="fileuploader-popup-move" data-action="prev"><i class="fileuploader-icon-arrow-left"></i></button>' +
    +          '<div class="fileuploader-popup-node ${format}">' +
    +              '${reader.node}' +
    +          '</div>' +
    +          '<div class="fileuploader-popup-content">' +
    +              '<div class="fileuploader-popup-footer">' +
    +                  '<ul class="fileuploader-popup-tools">' +
    +                      (data.format == 'image' && data.reader.node && data.editor ? (data.editor.cropper ? '<li>' +
    +                          '<button data-action="crop">' +
    +                              '<i class="fileuploader-icon-crop"></i> ${captions.crop}' +
    +                          '</button>' +
    +                      '</li>' : '') +
    +                      (data.editor.rotate ? '<li>' +
    +                          '<button data-action="rotate-cw">' +
    +                              '<i class="fileuploader-icon-rotate"></i> ${captions.rotate}' +
    +                          '</button>' +
    +                      '</li>' : '') : ''
    +                      ) +
    +                      (data.format == 'image' ?
    +                      '<li class="fileuploader-popup-zoomer">' +
    +                          '<button data-action="zoom-out">&minus;</button>' +
    +                          '<input type="range" min="0" max="100">' +
    +                          '<button data-action="zoom-in">&plus;</button>' +
    +                          '<span></span> ' +
    +                      '</li>' : ''
    +                      ) +
    +                      (data.data.url ? '<li>' +
    +                          '<a href="'+ data.file +'" data-action target="_blank">' +
    +                              '<i class="fileuploader-icon-external"></i> ${captions.open}' +
    +                          '</a>' +
    +                      '</li>' : ''
    +                      ) +
    +                      '<li>' +
    +                          '<button data-action="remove">' +
    +                              '<i class="fileuploader-icon-trash"></i> ${captions.remove}' +
    +                          '</button>' +
    +                      '</li>' +
    +                  '</ul>' +
    +              '</div>' +
    +              '<div class="fileuploader-popup-header">' +
    +                  '<ul class="fileuploader-popup-meta">' +
    +                      '<li>' +
    +                          '<span>${captions.name}:</span>' +
    +                          '<h5>${name}</h5>' +
    +                      '</li>' +
    +                      '<li>' +
    +                          '<span>${captions.type}:</span>' +
    +                          '<h5>${extension.toUpperCase()}</h5>' +
    +                      '</li>' +
    +                      '<li>' +
    +                          '<span>${captions.size}:</span>' +
    +                          '<h5>${size2}</h5>' +
    +                      '</li>' +
    +                      (data.reader && data.reader.width ? '<li>' +
    +                          '<span>${captions.dimensions}:</span>' +
    +                          '<h5>${reader.width}x${reader.height}px</h5>' +
    +                      '</li>' : ''
    +                      ) +
    +                      (data.reader && data.reader.duration ? '<li>' +
    +                          '<span>${captions.duration}:</span>' +
    +                          '<h5>${reader.duration2}</h5>' +
    +                      '</li>' : ''
    +                      ) +
    +                  '</ul>' +
    +                  '<div class="fileuploader-popup-info"></div>' +
    +                  '<ul class="fileuploader-popup-buttons">' +
    +                      '<li><button class="fileuploader-popup-button" data-action="cancel">${captions.cancel}</a></li>' +
    +                      (data.editor ? '<li><button class="fileuploader-popup-button button-success" data-action="save">${captions.confirm}</button></li>' : ''
    +                      ) +
    +                  '</ul>' +
    +              '</div>' +
    +          '</div>' +
    +          '<button class="fileuploader-popup-move" data-action="next"><i class="fileuploader-icon-arrow-right"></i></button>' +
    +      '</div>'; },
    +
    +        // Callback fired after creating the popup
    +        // we will trigger by default buttons with custom actions
    +        onShow: function(item) {
    +            item.popup.html.on('click', '[data-action="remove"]', function(e) {
    +                item.popup.close();
    +                item.remove();
    +            }).on('click', '[data-action="cancel"]', function(e) {
    +                item.popup.close();
    +            }).on('click', '[data-action="save"]', function(e) {
    +                if (item.editor)
    +                    item.editor.save();
    +                if (item.popup.close)
    +                    item.popup.close();
    +            });
    +        },
    +
    +        // Callback fired after closing the popup
    +        onHide: null
    +    }
    +}
    + +

    Drag&Drop

    + +

    1. enable the Drag&Drop feature {null, Object}
    +This feature is not available in all browser without using the Ajax mode or Drag&Drop with form submit example.

    + +
    +// by default - true
    +dragDrop: {
    +    // set the drop container {null, String, jQuery Object}
    +    // example: 'body'
    +    container: null,
    +
    +    // Callback fired on entering with dragging files the drop container
    +    onDragEnter: function(event, listEl, parentEl, newInputEl, inputEl) {
    +        // callback will go here
    +    },
    +
    +    // Callback fired on leaving with dragging files the drop container
    +    onDragLeave: function(event, listEl, parentEl, newInputEl, inputEl) {
    +        // callback will go here
    +    },
    +
    +    // Callback fired on dropping the files in the drop container
    +    onDrop: function(event, listEl, parentEl, newInputEl, inputEl) {
    +        // callback will go here
    +    }
    +}
    + +

    Ajax

    + +

    1. enable the ajax feature to upload files separately to server {null, Object}

    + +
    +// by default - null
    +upload: {
    +    // upload URL {String}
    +    url: 'upload.php',
    +
    +    // upload data {null, Object}
    +    // you can also change this Object in beforeSend callback
    +    // example: { option_1: '1', option_2: '2' }
    +    data: null,
    +
    +    // upload type {String}
    +    // for more details http://api.jquery.com/jquery.ajax/
    +    type: 'POST',
    +
    +    // upload enctype {String}
    +    // for more details http://api.jquery.com/jquery.ajax/
    +    enctype: 'multipart/form-data',
    +
    +    // auto-start file upload {Boolean}
    +    // if false, you can use the API methods - item.upload.send() to trigger upload for each file
    +    // if false, you can use the upload button - check custom file name example
    +    start: true,
    +
    +    // upload the files synchron {Boolean}
    +    synchron: true,
    +
    +    // upload large files in chunks {false, Number}
    +    // set file chunk size in MB as Number (ex: 4)
    +    chunk: false,
    +
    +    // Callback fired before uploading a file
    +    // by returning false, you can prevent the upload
    +    beforeSend: function(item, listEl, parentEl, newInputEl, inputEl) {
    +        // example:
    +        // here you can extend the upload data
    +        item.upload.data.new_data_attribute = 'nice';
    +
    +        // example:
    +        // here you can create upload headers
    +        item.upload.headers = {
    +            "Authorization": "Basic " + btoa(username + ":" + password)
    +        };
    +
    +        return true;
    +    },
    +
    +    // Callback fired if the upload succeeds
    +    // we will add by default a success icon and fadeOut the progressbar
    +    onSuccess: function(data, item, listEl, parentEl, newInputEl, inputEl, textStatus, jqXHR) {
    +        item.html.find('.fileuploader-action-remove').addClass('fileuploader-action-success');
    +
    +        setTimeout(function() {
    +            item.html.find('.progress-bar2').fadeOut(400);
    +        }, 400);
    +    },
    +
    +    // Callback fired if the upload failed
    +    // we will set by default the progressbar to 0% and if it wasn't cancelled, we will add a retry button
    +    onError: function(item, listEl, parentEl, newInputEl, inputEl, jqXHR, textStatus, errorThrown) {
    +        var progressBar = item.html.find('.progress-bar2');
    +
    +        if(progressBar.length > 0) {
    +            progressBar.find('span').html(0 + "%");
    +            progressBar.find('.fileuploader-progressbar .bar').width(0 + "%");
    +            item.html.find('.progress-bar2').fadeOut(400);
    +        }
    +
    +        item.upload.status != 'cancelled' && item.html.find('.fileuploader-action-retry').length == 0 ? item.html.find('.column-actions').prepend(
    +            '<a class="fileuploader-action fileuploader-action-retry" title="Retry"><i></i></a>'
    +        ) : null;
    +    },
    +
    +    // Callback fired while upload the file
    +    // we will set by default the progressbar width and percentage
    +    /* data = {
    +        loaded: ...,
    +        loadedInFormat: ...,
    +        total: ...,
    +        totalInFormat: ...,
    +        percentage: ...,
    +        secondsElapsed: ...,
    +        secondsElapsedInFormat:...,
    +        bytesPerSecond: ...,
    +        bytesPerSecondInFormat: ...,
    +        remainingBytes: ...,
    +        remainingBytesInFormat: ...,
    +        secondsRemaining: ...,
    +        secondsRemainingInFormat: ...
    +    } */
    +    onProgress: function(data, item, listEl, parentEl, newInputEl, inputEl) {
    +        var progressBar = item.html.find('.progress-bar2');
    +
    +        if(progressBar.length > 0) {
    +            progressBar.show();
    +            progressBar.find('span').html(data.percentage + "%");
    +            progressBar.find('.fileuploader-progressbar .bar').width(data.percentage + "%");
    +        }
    +    },
    +
    +    // Callback fired after all files were uploaded
    +    onComplete: function(listEl, parentEl, newInputEl, inputEl, jqXHR, textStatus) {
    +        // callback will go here
    +    }
    +}
    + +

    Image editor

    + +

    enable the image editor feature {Boolean, Object}

    + +
    +// by default - false
    +editor: {
    +    // editor cropper
    +    cropper: {
    +        // cropper ratio
    +        // example: null
    +        // example: '1:1'
    +        // example: '16:9'
    +        // you can also write your own
    +        ratio: null,
    +
    +        // cropper minWidth in pixels
    +        // size is adjusted with the image natural width
    +        minWidth: null,
    +
    +        // cropper minHeight in pixels
    +        // size is adjusted with the image natural height
    +        minHeight: null,
    +
    +        // cropper maxWidth in pixels
    +        // size is adjusted with the image natural width
    +        maxWidth: null,
    +
    +        // cropper maxHeight in pixels
    +        // size is adjusted with the image natural height
    +        maxHeight: null,
    +
    +        // show cropper grid
    +        showGrid: true
    +    },
    +
    +    // editor on save quality (0 - 100)
    +    // only for client-side resizing
    +    quality: null,
    +
    +    // editor on save maxWidth in pixels
    +    // only for client-side resizing
    +    maxWidth: null,
    +
    +    // editor on save maxHeight in pixels
    +    // only for client-size resizing
    +    maxHeight: null,
    +
    +    // Callback fired after saving the image in editor
    +    onSave: function(blobOrDataUrl, item, listEl, parentEl, newInputEl, inputEl) {
    +        // callback will go here
    +    }
    +}
    + +

    Sorter

    + +

    enable the sorting feature {Boolean, Object}

    + +
    +// see also thumbnails._selectors.sorter in the options
    +// by default - false
    +sorter: {
    +    // selector exclude on drag (ex: 'input, textarea')
    +    selectorExclude: null,
    +
    +    // placeholder html
    +    // null - will clone the item without content
    +    placeholder: null,
    +
    +    // scroll container on drag
    +    scrollContainer: window,
    +
    +    // callback fired after sorting, adding and removing a file
    +    onSort: function(list, listEl, parentEl, newInputEl, inputEl) {
    +        // your callback goes here
    +    }
    +}
    + +

    Preload files

    + +

    preload files to preview and edit them {null, Array}

    + +
    +/* [{
    +    name: 'filename1.txt', // file name
    +    size: 1024, // file size in bytes
    +    type: 'text/plain', // file MIME type
    +    file: 'uploads/filename1.txt', // file path
    +    local: '../uploads/filename1.txt', // file path in listInput (optional)
    +    data: {
    +        thumbnail: 'uploads/filename1_thumbnail.jpg', // item custom thumbnail (optional)
    +        readerCrossOrigin: 'anonymous', // fix image cross-origin issue (optional)
    +        readerForce: true, // prevent the browser cache of the image (optional)
    +        readerSkip: true, // skip file from reading by rendering a thumbnail (optional)
    +        popup: false, // remove the popup for this file (optional)
    +        listProps: {}, // custom key: value attributes in the fileuploader's list (optional)
    +
    +        your_own_attribute: 'your own value'
    +    }
    +}] */
    +files: null
    + +

    Callbacks

    + +
    +// Callback fired when fileuploader is not supported in your browser
    +onSupportError: function(parentEl, inputEl) {
    +    // callback will go here
    +},
    +
    +// Callback fired before rendering the fileuploader elements
    +// by returning false, you will prevent the rendering
    +beforeRender: function(parentEl, inputEl) {
    +    // callback will go here
    +
    +    return true;
    +},
    +
    +// Callback fired after rendering the fileuploader elements
    +afterRender: function(listEl, parentEl, newInputEl, inputEl) {
    +    // callback will go here
    +},
    +
    +// Callback fired after selecting the files from computer but only before processing them
    +// by returning false, you will prevent the processing of the files but they will remain in the input
    +beforeSelect: function(files, listEl, parentEl, newInputEl, inputEl) {
    +    // callback will go here
    +
    +    return true;
    +},
    +
    +// Callback fired on checking for warnings the choosed files
    +// by returning false, you will prevent the files from adding/upload
    +onFilesCheck: function(files, options, listEl, parentEl, newInputEl, inputEl) {
    +    // callback will go here
    +
    +    return true;
    +},
    +
    +// Callback fired on rendering a file
    +onFileRead: function(item, listEl, parentEl, newInputEl, inputEl) {
    +    // callback will go here
    +},
    +
    +// Callback fired on selecting and processing a file
    +onSelect: function(item, listEl, parentEl, newInputEl, inputEl) {
    +    // callback will go here
    +},
    +
    +// Callback fired after selecting and processing of all files
    +afterSelect: function(listEl, parentEl, newInputEl, inputEl) {
    +    // callback will go here
    +},
    +
    +// Callback fired after generating a list input. Needs to return an array!
    +onListInput: function(list, fileList, listInputEl, listEl, parentEl, newInputEl, inputEl) {
    +    // callback will go here
    +
    +    return list;
    +},
    +
    +// Callback fired after deleting a file
    +// by returning false, you can prevent a file from removing
    +onRemove: function(item, listEl, parentEl, newInputEl, inputEl) {
    +    // callback will go here
    +
    +    return true;
    +},
    +
    +// Callback fired when fileuploader has no files
    +onEmpty: function(listEl, parentEl, newInputEl, inputEl) {
    +    // callback will go here
    +}
    + +

    Languages

    +

    Use captions option to translate the text {String, Object}

    +

    Available languages are: cz, de, dk, en, es, fr, it, lv, nl, pl, pt, ro, ru, tr.

    +
    +captions: 'en'
    +
    + +

    Define your own texts. This is also the default option.

    +
    +captions: {
    +    button: function(options) {
    +        return 'Browse ' + (options.limit == 1 ? 'file' : 'files');
    +    },
    +    feedback: function(options) {
    +        return 'Choose ' + (options.limit == 1 ? 'file' : 'files') + ' to upload';
    +    },
    +    feedback2: function(options) {
    +        return options.length + ' ' + (options.length > 1 ? 'files were' : 'file was') + ' chosen';
    +    },
    +    confirm: 'Confirm',
    +    cancel: 'Cancel',
    +    name: 'Name',
    +    type: 'Type',
    +    size: 'Size',
    +    dimensions: 'Dimensions',
    +    duration: 'Duration',
    +    crop: 'Crop',
    +    rotate: 'Rotate',
    +    sort: 'Sort',
    +    download: 'Download',
    +    remove: 'Delete',
    +    drop: 'Drop the files here to Upload',
    +    paste: '<div class="fileuploader-pending-loader"></div> Pasting a file, click here to cancel.',
    +    removeConfirmation: 'Are you sure you want to remove this file?',
    +    errors: {
    +        filesLimit: function(options) {
    +            return 'Only ${limit} ' + (options.limit == 1 ? 'file' : 'files') + ' can be uploaded.'
    +        },
    +        filesType: 'Only ${extensions} files are allowed to be uploaded.',
    +        fileSize: '${name} is too large! Please choose a file up to ${fileMaxSize}MB.',
    +        filesSizeAll: 'The chosen files are too large! Please select files up to ${maxSize} MB.',
    +        fileName: 'A file with the same name ${name} is already selected.',
    +        remoteFile: 'Remote files are not allowed.',
    +        folderUpload: 'Folders are not allowed.'
    +    }
    +}
    + +

    Others

    + +

    enable addMore mode to add files from different folders {Boolean}

    + +
    +addMore: false
    + +

    add brackets at the end of the input name by multiple files {Boolean}

    + +
    +// specially for PHP, set false for ASP.NET, C#, Node.js and others
    +inputNameBrackets: true
    + +

    allow duplicated names of files {Object}

    + +
    +// this option is fixing iPhone `picture.jpg` issue
    +// this feature is available only in upload mode
    +// set on true only if are changing the file name after uploading
    +skipFileNameCheck: false
    + +

    upload image from clipboard {null, Number in ms}

    + +
    +// the input should be completely into view by pasting
    +// this feature is available only in upload mode
    +clipboardPaste: 2000
    + +

    input with the listed files {Boolean, String}

    + +
    +// this list is an input[type="hidden"]
    +// this list will be generated from each choosed/preloaded file name in a JSON format. You can use the onListInput callback to manipulate this list
    +// use item.data.listProps = {my_own_property: 'my own value'} to add your own attributes to the list
    +// files in this list that are obejcts like '{file: "0://file_name.ext"}' are showing to PHP that they are choosed and should be uploaded
    +// if you've preloaded some files on the server-side, PHP will check if each preloaded file is in this list, if not, PHP will set them as removed.
    +// example: true
    +// example: 'custom_listInput_name'
    +listInput: true
    + +

    enable Api methods {Boolean}

    + +
    +// after enable, use the code below to get Api methods
    +// var api = $.fileuploader.getInstance(input_element);
    +enableApi: false
    + +

    file reader timeout {Object}

    + +
    +reader: {
    +    // file reader timeout for the thumbnails {Number}
    +    thumbnailTimeout: 5000,
    +
    +    // file reader timeout for the popup preview {Number}
    +    timeout: 12000,
    +
    +    // file reader maxSize in Mb {Number}
    +    maxSize: 20
    +},
    + +

    dialogs {Object}

    + +
    +// made to let you customizing the standard Javascript dialogs
    +// this dialogs are used by showing a file warning or confirming a file remove
    +dialogs: {
    +
    +    // alert dialog
    +    alert: function(text) {
    +        return alert(text);
    +    },
    +
    +    // confirm dialog
    +    confirm: function(text, callback) {
    +        confirm(text) ? callback() : null;
    +    }
    +}
    +
    + +
    +

    Input attributes

    + +

    You can configurate the Fileuploader not only in Javascript but also setting some input attributes in HTML.
    +Example: <input type="file" name="files" data-fileuploader-limit="2">

    + +
    +<!-- limit option {Number} -->
    +data-fileuploader-limit="2"
    +
    +<!-- maxSize option {Number} -->
    +data-fileuploader-maxSize="3"
    +
    +<!-- fileMaxSize option {Number} -->
    +data-fileuploader-fileMaxSize="1"
    +
    +<!-- extensions option {Comma spliced String} -->
    +data-fileuploader-extensions="jpg, png, gif"
    +
    +<!-- theme option {String} -->
    +data-fileuploader-theme="default"
    +
    +<!-- listInput option {String} -->
    +data-fileuploader-listInput="myCustomName"
    +
    +<!-- files option {JSON String} -->
    +data-fileuploader-files='"[{"name":"filename1.txt","size":1024,"type":"text/plain","file":"uploads/filename1.txt"}]"'
    +
    + +
    +

    Text variables

    + +

    The inline text variables are available in each text option. Writin ${variable_name} to transform it.
    +Example: 'Only ${limit} files are allowed to be uploaded.'

    + +
    +<!-- limit option -->
    +<!-- always available -->
    +${limit}
    +
    +<!-- maxSize option -->
    +<!-- always available -->
    +${maxSize}
    +
    +<!-- fileMaxSize option -->
    +<!-- always available -->
    +${fileMaxSize}
    +
    +<!-- extensions option -->
    +<!-- always available -->
    +${extensions}
    +
    +<!-- number of choosed/preloaded files -->
    +<!-- only for captions.feedback and captions.feedback2 -->
    +${length}
    +
    +<!-- file name -->
    +<!-- only in thumbnails.item, thumbnails.item2, captions.removeConfirmation, captions.errors.fileSize and captions.errors.fileName -->
    +${name}
    +
    +<!-- file title (file name without extension) -->
    +<!-- only in thumbnails.item, thumbnails.item2, captions.removeConfirmation, captions.errors.fileSize and captions.errors.fileName -->
    +${title}
    +
    +<!-- file extension -->
    +<!-- only in thumbnails.item, thumbnails.item2, captions.removeConfirmation, captions.errors.fileSize and captions.errors.fileName -->
    +${extension}
    +
    +<!-- file size -->
    +<!-- only in thumbnails.item, thumbnails.item2, captions.removeConfirmation, captions.errors.fileSize and captions.errors.fileName -->
    +${size}
    +
    +<!-- file size (formatted in bytes, kbs, mbs...) -->
    +<!-- only in thumbnails.item, thumbnails.item2, captions.removeConfirmation, captions.errors.fileSize and captions.errors.fileName -->
    +${size2}
    +
    +<!-- file type (audio/mp3) -->
    +<!-- only in thumbnails.item, thumbnails.item2, captions.removeConfirmation, captions.errors.fileSize and captions.errors.fileName -->
    +${type}
    +
    +<!-- file format (audio) -->
    +<!-- only in thumbnails.item, thumbnails.item2, captions.removeConfirmation, captions.errors.fileSize and captions.errors.fileName -->
    +${format}
    +
    +<!-- file data -->
    +<!-- only in thumbnails.item, thumbnails.item2, captions.removeConfirmation, captions.errors.fileSize and captions.errors.fileName -->
    +${data.my_custom_data_key}
    +
    +<!-- file icon HTML element -->
    +<!-- remember that a file-like icon is also available, just remove the comments in css file from the line /* item icon like file */ -->
    +<!-- file icon HTML element -->
    +<!-- only in thumbnails.item and thumbnails.item2 -->
    +${icon}
    +
    +<!-- file thumbnail / file icon (for not image files) holder HTML element -->
    +<!-- only in thumbnails.item and thumbnails.item2 -->
    +${image}
    +
    + +
    +

    Api

    + +

    Available methods are listed below.
    +Don't forget that you will need to set enableApi: true to activate the Api methods.

    + +
    +var api = $.fileuploader.getInstance(file_input_element);
    +
    +// open browser file explorer to choosed files
    +api.open();
    +
    +// get Fileuploader options
    +api.getOptions();
    +
    +// get Fileuploader parent element
    +api.getParentEl();
    +
    +// get Fileuploader input element
    +api.getInputEl();
    +
    +// get Fileuploader new/generated input element
    +api.getNewInputEl();
    +
    +// get Fileuploader thumbnails list element
    +api.getListEl();
    +
    +// get Fileuploader listInput element
    +api.getListInputEl();
    +
    +// get Fileuploader file items
    +api.getFiles();
    +
    +// get Fileuploader choosed file items
    +api.getChoosedFiles();
    +
    +// get Fileuploader preloaded file items
    +api.getAppendedFiles();
    +
    +// get Fileuploader uploaded file items
    +api.getUploadedFiles();
    +
    +// get Fileuploader list of files using custom key
    +// @param toJSON {Boolean} - Parse the Array to JSON?
    +// @param customItemKey {String} - Generate a list with only a file attribute (ex: name, url)?
    +api.getFileList(toJSON, customItemKey);
    +
    +// update the Fileuploader list of files
    +api.updateFileList();
    +
    +// set Fileuploader option
    +api.setOption(key, value);
    +
    +// get an Fileuploader item data by giving an item HTML element
    +api.findFile(itemHtmlElement);
    +
    +// create a file from data or dataURI and add to the plugin (only in upload mode)
    +// @param data {String} - text or dataURI string
    +// @param type {String} - file type (ex: image/png)
    +// @param custom_name {null, String} - custom file name (ex: picture.png)
    +api.add(data, type, custom_name);
    +
    +// append file (Object) or files(Array with Objects)
    +api.append(file);
    +
    +// update file by giving the item Object and new data Object
    +api.update(item, data);
    +
    +// remove an item by giving an item Object or item HTML element
    +api.remove(item);
    +
    +// reset the Fileuploader input
    +api.reset();
    +
    +// start the upload of the files
    +api.uploadStart();
    +
    +// disable Fileuploader input
    +api.disable(also_lock_item_remove_startUpload_retry_action);
    +
    +// enable Fileuploader input
    +api.enable();
    +
    +// return true if there are no files
    +api.isEmpty();
    +
    +// return true if the input is disabled
    +api.isDisabled();
    +
    +// return true if the input is rendered
    +api.isRendered();
    +
    +// return the plugin mode ('default', 'addMore', 'upload')
    +api.getPluginMode();
    +
    +// generate a text with variables
    +api.assets.textParse(myText, myObjectWithVariables);
    +
    +// destroy Fileuploader
    +api.destroy();
    + +

    Item methods

    + +
    +// remove item
    +item.remove();
    +
    +// render thumbnail
    +item.renderThumbnail(custom_src_or_update?);
    +
    +// item upload - !only if upload is enabled
    +/* start upload */
    +item.upload.send();
    +
    +/* cancel upload */
    +item.upload.cancel();
    +
    +/* retry upload if failed */
    +item.upload.retry();
    +
    +/* resend upload */
    +item.upload.resend();
    +
    +// popup - !only if popup is enabled
    +/* open popup */
    +item.popup.open();
    +
    +/* close popup - !only if popup is openend */
    +item.popup.close();
    +
    +// item file reader
    +/* read file in browser
    +   @param callback {null, Function}
    +   @param type {null, String} - read type ['astext', 'image', 'audio', 'video']
    +   @param force {Boolean} - ignore reader cache */
    +item.reader.read(callback, type, force);
    +
    +// item image editor - !only if editor is enabled
    +/* rotate image */
    +item.editor.rotate();
    +
    +/* show cropping tools in the popup */
    +item.editor.cropper();
    +
    +/* save edited image
    +   @param callback {null, Function}
    +   @param toBlob {Boolean} - save canvas as Blob or just as dataURL?
    +   @param mimeType {null, String} - save image format 'image/jpeg' or 'image/png'
    +   @param preventThumbnailRender {Boolean} - do not render thumbnail in HTML after save? */
    +item.editor.save(callback, asBlob, mimeType, preventThumbnailRender);
    +
    + +
    +

    PHP

    + +

    Fileuploader includes also a PHP class that uploads, validates, removes, sorts, edits the images, creates thumbnails and uploads large files in chunks to server. All this stuff can be also done on the client-side but the server keeps everything safer.

    + +

    Our php file upload helper uses the following php-standard extensions:

    + + + +

    Installation

    + +
      +
    1. Copy class.fileuploader.php from src folder to your server.
    2. +
    3. Configurate in the php.ini file the following options according your needs: file_uploads, upload_max_filesize, max_file_uploads, post_max_size and memory_limit
    4. +
    + +

    How to use

    + +

    Include the class.fileuploader.php into your php file and initialize it by writing in arguments the file input's name (e.g. 'files') and the options in an array.

    + +
    +<?php
    +    include('class.fileuploader.php');
    +
    +    // initialize the FileUploader
    +    $FileUploader = new FileUploader('files', array(
    +        // Options will go here
    +    ));
    +
    +    // call to upload the files
    +    $upload = $FileUploader->upload();
    +
    +    if($upload['isSuccess']) {
    +        // get the uploaded files
    +        $files = $upload['files'];
    +    } else {
    +        // get the warnings
    +        $warnings = $upload['warnings'];
    +    }
    +?>
    + +

    Options

    + +

    All available options are listed below.

    + +
    +array (
    +    // limit of files {null, Number}
    +    // also with the preloaded files
    +    // if null - has no limits
    +    // example: 3
    +    'limit' => null,
    +
    +    // file's maximal size in MB {null, Number}
    +    // also with the preloaded files
    +    // if null - has no limits
    +    // example: 2
    +    'maxSize' => null,
    +
    +    // each file's maximal size in MB {null, Number}
    +    // if null - has no limits
    +    // example: 2
    +    'fileMaxSize' => null,
    +
    +    // allowed extensions or file types {null, Array}
    +    // if null - has no limits
    +    // example: ['jpg', 'jpeg', 'png', 'text/plain', 'audio/*']
    +    'extensions' => null,
    +
    +	// disallowed extensions or file types {null, Array}
    +    // if null - has no limits
    +    // example: ['php', 'application/*', 'text/plain']
    +    'disallowedExtensions' => ['htaccess', 'php', 'php3', 'php4', 'php5', 'phtml'],
    +
    +    // check if file input exists ($_FILES[ file_input_name ]) {Boolean}
    +    // check if files were choosed (minimum 1 file should be choosed)
    +    'required' => false,
    +
    +    // upload directory {String}
    +    // note that main directory is the directory where you are initializing the FileUploader class
    +    // example: '../uploads/'
    +    'uploadDir' => 'uploads/',
    +
    +    // file title {String, Array, Function}
    +    // example: 'name' - original file name
    +    // example: 'auto' - random text from 12 letters
    +    // example: 'my_custom_filename' - custom file name
    +    // example: 'my_custom_filename_{random}' - my_custom_filename_(+ random text from 12 letters)
    +    // '{random} {file_name} {file_size} {timestamp} {date} {format} {extension} {index}' - variables that can be used to generate a new file name
    +    // example: array('auto', 12, true) - [0] is a string as in the examples above [1] is the length of the random string [2] force extension change if in [0] founded
    +	// example: function($item) { return array('file_{random}', 12); }
    +    'title' => ['auto', 12],
    +
    +    // replace the file with the same name? {Boolean}
    +    // if it will be false - will automatically generate a new file name with (1,2,3...) at the end of the file name
    +    'replace' => false,
    +
    +    // image editor {null, Boolean, Array}
    +    // default: null
    +	// set null, true or Array and the Exif issue will be fixed
    +    // set false to disable
    +    'editor' => array(
    +        // image maxWidth in pixels {null, Number}
    +        'maxWidth' => null,
    +        // image maxHeight in pixels {null, Number}
    +        'maxHeight' => null,
    +        // crop image {Boolean}
    +        'crop' => false,
    +        // image quality after save {Number}
    +        'quality' => 90
    +    ),
    +
    +    // input with the listed files {Boolean, String}
    +    // this list is an input[type="hidden"]
    +    // this list is important to store your files with the attributes and to check which file shouldn't be uploaded or need to be removed
    +    // example: true
    +    // example: 'custom_listInput_name'
    +    'listInput' => true,
    +
    +    // preloaded files {null, Array with arrays}
    +    // it is important to declare them if you want to check the right limit and maxSize options; by preloaded files; by generating an input
    +    // please follow this structure for each file:
    +    /* array(
    +        "name" => 'filename1.txt',
    +        "type" => FileUploader::mime_content_type('../uploads/filename1.txt'),
    +        "size" => filesize('../uploads/filename1.txt'),
    +        "file" => '../uploads/filename1.txt', // should the same as on the front-end
    +        "relative_file" => '../uploads/filename1.txt', // use this file by editing
    +        "data" => array(
    +            "url" => 'http://localhost/example/uploads/filename1.txt',
    +            "my_own_attribute" => "my own value",
    +            "listProps" => array(
    +                "file_id" => 240 // property to be stored in the listInput
    +            )
    +        )
    +    ) */
    +    'files' => null,
    +
    +    // move_uploaded_file {function}
    +    // prevent default php upload method and use yours
    +    // @param $temp_name {String} PHP file temp_name
    +    // @param $destination {String} file upload destination
    +    // @return {Boolean}
    +    'move_uploaded_file' => function($temp_name, $destination, $item) {
    +        return move_uploaded_file($temp_name, $destination);
    +    },
    +
    +    // validate_file {function}
    +    // custom file validation function
    +    // @param $file {Array} Fileuploader file array
    +    // @param $options {Array} Fileuploader options
    +    // @return {Boolean or String}
    +    'validate_file' => function($file, $options) {
    +        $isValid = true;
    +
    +        if ($isValid) {
    +            return true;
    +        } else {
    +            return "Wrong file!";
    +        }
    +    }
    +)
    + +

    Methods

    + +

    All available methods are listed below.

    + +
    +// get removed list
    +// give a String parameter (ex: 'file' or 'name' or 'data.url') to get a file by a custom input attribute. Default is 'file'
    +// note that FileUploader will not remove your appended files that were removed on Front-End
    +// call this method before $FileUploader->upload();
    +// to remove them, please use this example:
    +// foreach($FileUploader->getRemovedFiles('file') as $key=>$value) {
    +//     unlink('../uploads/' . $value['name']);
    +// }
    +$FileUploader->getRemovedFiles();
    +
    +// call to upload the files
    +$upload = $FileUploader->upload();
    +
    +// get listInput value
    +$FileUploader->getListInput();
    +
    +// get the list of the files
    +// without parameter it will return an array with appended and uploaded files
    +// give a String parameter (ex: 'file' or 'name' or 'data.url') to generate a custom input list of the files
    +// example: you can store the files in the MySQL using this function
    +// $myFilesForSql = implode('|', $FileUploader->getFileList('name'));
    +// $myFilesForSql = json_encode($FileUploader->getFileList('name'));
    +$FileUploader->getFileList();
    +
    +// get the list of the preloaded files
    +$FileUploader->getPreloadedFiles();
    +
    +// get the list of the uploaded files
    +$FileUploader->getUploadedFiles();
    +
    +// resize image
    +// example replace image: FileUploader::resize($source, $width = 100);
    +// example create thumbnail: FileUploader::resize($source, $width = 100, $height = 100, $destination = 'my_custom_thumbnail_name.jpg', $crop = false, $quality = 90, $rotation = 0);
    +FileUploader::resize($source, $width = 100, $height = null, $destination = null);
    +
    +// remove old chunked files
    +FileUploader::clean_chunked_files($directory = '../uploads/', $time = '-1 hour');
    +
    +// get file mime content type
    +FileUploader::mime_content_type($file, $nativeFunction = false);
    +
    +// get the HTML generated input
    +$FileUploader->generateInput();
    +
    + +
    +

    Laravel

    +

    Laravel basic Contoller to upload files over the form or ajax. Upload files on your Laravel website using our helper.

    + +

    Installation

    +

    Fileuploader installation instructions:

    +
      +
    1. Create a new folder Library in your project's app/ folder
    2. +
    3. Copy class.fileuploader.php from src/php/ into app/Library/
    4. +
    5. Add Fileuploader to the composer +
      "autoload": {
      +	...
      +
      +	"files": [
      +		"app/Library/class.fileuploader.php"
      +	]
      +},
      +
    6. +
    7. Run composer install
    8. +
    9. Run php artisan storage:link to add the storage folder in public folder
    10. +
    + +

    How to use

    +

    The Controller, Blade Template and js files are in examples/thirdparty/laravel/ folder. Please copy themselves or their content to your project. The following instructions are just an example and you might skip some steps:

    +

    1.Create the ExampleController.php in app/Http/Controllers/

    +
    <?php
    +namespace App\Http\Controllers;
    +
    +use Illuminate\Http\Request;
    +use \FileUploader;
    +
    +class ExampleController extends Controller {
    +
    +	/**
    +	 * show the form
    +	 *
    +	 * @return \Illuminate\Contracts\Support\Renderable
    +	 */
    +	public function index() {
    +		return view('home');
    +	}
    +
    +	/**
    +	 * submit the form
    +	 *
    +	 * @return void
    +	 */
    +	public function submit(Request $request) {
    +		// initialize FileUploader
    +		$FileUploader = new FileUploader('files', array(
    +			// options
    +			'limit' => 4,
    +			'uploadDir' => storage_path('app/public/'),
    +			'title' => 'auto'
    +		));
    +
    +		// upload
    +		$upload = $FileUploader->upload();
    +	}
    +
    +	/**
    +	 * delete a file
    +	 *
    +	 * @return void
    +	 */
    +	public function removeFile(Request $request) {
    +		@unlink($_POST['file']);
    +		exit;
    +	}
    +}
    +
    +

    2. Create the home.blade.php in app/resources/views/

    +
    <form action="{{ route('example.upload') }}" method="post" enctype="multipart/form-data">
    +	{{ csrf_field() }}
    +
    +	<input type="file" name="files">
    +	<input type="submit">
    +</form>
    +
    +

    3. Add the route in routes/web.php

    +
    Route::get('/home', 'ExampleController@index');
    +Route::post('/upload', 'ExampleController@submit')->name('example.upload');
    +Route::post('/ajax_remove_file', 'ExampleController@removeFile');
    +
    + +
    +

    Node.js

    + +

    Fileuploader includes also a Node.js module that uploads, validates, removes, sorts, edits the images, creates thumbnails and uploads large files in chunks to server. All this stuff can be also done on the client-side but the server keeps everything safer.

    + +

    Our module uses some dependencies to provide the features of multipart/form-data upload, reading file's mime type and image editing.

    + + + +

    Installation

    + +
      +
    1. Copy fileuploader.js and it's package.json from src folder to your server.
    2. +
    3. Run npm install in node folder to install all dependencies.
    4. +
    5. (Optional) While using server-side image editing feature (editor option), you will have to download and install GraphicsMagick or in Mac OS X the Homebrew.
    6. +
    + +

    How to use

    + +

    Require the fileuploader.js into your app file and initialize it by writing in arguments the input file name, the options, request and response object. We will also use the popular Node.js framework Express. Don't forget to take a look at the /examples/nodejs/ folder.

    + +
    +const express = require('express')
    +const fileuploader = require('fileuploader')
    +
    +app.post('/upload', function(req, res) {
    +
    +    // initialize fileuploader
    +    var uploader = fileuploader('files', {
    +        // options will go here
    +    }, req, res)
    +
    +    // call to process the form (req.body) and to upload the files
    +    uploader.upload(function(data) {
    +
    +        if (data.isSuccess) {
    +            var files = data.files;
    +        } else {
    +            var warnings = data.warnings;
    +        }
    +
    +        res.end()
    +    })
    +
    +})
    +
    +// init server
    +app.listen(8000)
    + +

    Options

    + +

    All available options are listed below.

    + +
    +[
    +    // limit of files {null, Number}
    +    // also with the preloaded files
    +    // important to set 1 if file input has no multiple attribute
    +    // if null - has no limits
    +    // example: 3
    +    limit: null,
    +
    +    // file's maximal size in MB {null, Number}
    +    // also with the preloaded files
    +    // if null - has no limits
    +    // example: 2
    +    maxSize: null,
    +
    +    // each file's maximal size in MB {null, Number}
    +    // if null - has no limits
    +    // example: 2
    +    fileMaxSize: null,
    +
    +    // allowed extensions or file types {null, Array}
    +    // if null - has no limits
    +    // example: ['jpg', 'jpeg', 'png', 'text/plain', 'audio/*']
    +    extensions: null,
    +
    +    // disallowed extensions or file types {null, Array}
    +    // if null - has no limits
    +    // example: ['jpg', 'jpeg', 'png', 'text/plain', 'audio/*']
    +    disallowedExtensions: null,
    +
    +    // check if files were choosed (minimum 1 file should be choosed)
    +    required: false,
    +
    +    // upload directory {String}
    +    // note that main directory is the directory where you are initializing the fileuploader module
    +    // example: '../uploads/'
    +    uploadDir: 'uploads/',
    +
    +    // file title {String, Array}
    +    // example: 'name' - original file name
    +    // example: 'auto' - random text from 12 letters
    +    // example: 'my_custom_filename' - custom file name
    +    // example: 'my_custom_filename_{random}' - my_custom_filename_(+ random text from 12 letters)
    +    // '{random} {file_name} {file_size} {timestamp} {date} {extension}' - variables that can be used to generate a new file name
    +    // example: ['auto', 24] - [0] is a string as in the examples above, [1] is the length of the random string
    +    title: ['auto', 12],
    +
    +    // replace the file with the same name? {Boolean}
    +    // if it will be false - will automatically generate a new file name with (1,2,3...) at the end of the file name
    +    replace: false,
    +
    +    // image editor {null, Array}
    +    editor: {
    +        // image maxWidth in pixels {null, Number}
    +        maxWidth: null,
    +        // image maxHeight in pixels {null, Number}
    +        maxHeight: null,
    +        // crop image {Boolean}
    +        crop: false,
    +        // image quality after save {Number}
    +        quality: 90
    +    },
    +
    +    // input with the listed files {Boolean, String}
    +    // this list is an input[type="hidden"]
    +    // this list is important to store your files with the attributes and to check which file shouldn't be uploaded or need to be removed
    +    // example: true
    +    // example: 'custom_listInput_name'
    +    listInput: true,
    +
    +    // preloaded files {null, Array with Objects}
    +    // it is important to declare them if you want to check the right limit and maxSize options; by preloaded files; by generating an input
    +    // please follow this structure for each file:
    +    /* [{
    +        name: 'filename1.txt',
    +        type: null,
    +        size: fs.statSync('filename1.txt').size,
    +        file: 'uploads/filename1.txt', // should the same as on the front-end
    +        relative_file: 'uploads/filename1.txt', // (optional) use this file by editing
    +        data: {
    +            url: 'http://localhost/example/uploads/filename1.txt', // (optional)
    +            listProps: {
    +                file_id: 240 // property to be stored in the listInput
    +            }, // (optional)
    +            my_own_attribute: 'my own value'
    +        }
    +    }] */
    +    'files': null,
    +
    +    // move_uploaded_file {function}
    +    // prevent default upload method and use yours
    +    // fileuploader will delete at the end the file.tmp file
    +    // @return {Boolean}
    +    move_uploaded_file: function(file) {
    +        fs.renameSync(file.tmp, file.file);
    +
    +        return true;
    +    },
    +
    +    // validate_file {function}
    +    // custom file validation function
    +    // @param file {Object} Fileuploader file object
    +    // @param options {Object} Fileuploader options
    +    // @return {Boolean or String}
    +    validate_file: function(file, options) {
    +        var isValid = true;
    +
    +        return isValid ? true : 'Wrong file!';
    +    }
    +]
    + +

    Methods

    + +

    All available methods are listed below.

    + +
    +// get removed list
    +// give a String parameter (ex: 'file' or 'name' or 'data.url') to get a file by a custom input attribute. Default is 'file'
    +// note that FileUploader will not remove your preloaded files that were removed on front-end
    +// to remove them, please use this example:
    +// uploader.getRemovedFiles().forEach(function(item, index) {
    +//     fs.unlink(item.relative_path || item.file, function(err) {});
    +// })
    +uploader.getRemovedFiles();
    +
    +// call to process the form and to upload the files
    +uploader.upload();
    +
    +// get listInput value
    +uploader.getListInput();
    +
    +// get the list of the files
    +// without parameter it will return an array with appended and uploaded files
    +// give a String parameter (ex: 'file' or 'name' or 'data.url') to generate a custom input list of the files
    +// example: you can store the files in the DB using this function
    +// var myFilesInlineList = uploader.getFileList('name').join('|');
    +// var myFilesJSONList = JSON.stringify(uploader.getFileList('name'));
    +uploader.getFileList();
    +
    +// get the list of the preloaded files
    +uploader.getPreloadedFiles();
    +
    +// get the list of the uploaded files
    +uploader.getUploadedFiles();
    +
    +// resize an image
    +// thumbnail example item = data.files[0]: uploader.resize(item.file, 100, 100, '../uploads/thumbs/' + item.name, true)
    +// full example: uploader.resize(filename = 'uploads/file.jpg', width = 400, height = 400, destination = 'uploads/file.jpg', crop = true, quality = 90, rotation = 180, callback = function() {})
    +uploader.resize('uploads/file.jpg', 800);
    +
    +// remove the old unused chunked files
    +uploader.cleanChunkedFiles('uploads/', 3600000 /* -1 hour in milliseconds */);
    +
    +// get the HTML generated input
    +uploader.generateInput();
    +
    + +
    +

    Amazon S3

    + +

    PHP Amazon S3 file upload class is included. Upload Directly to Amazon S3 and manage objects in your buckets using our helper.

    + +

    Configuration

    + +
    +

    Basic Amazon S3 Bucket configuration instructions.

    + +
      +
    1. Create an IAM user +
        +
      1. Access Services menu > IAM > Users > Add user
      2. +
      3. Give an user name and select Programmatic access as Access type
      4. +
      5. Permissions > Attach existing policies directly > select AmazonS3FullAccess
      6. +
      7. Copy the User ARN
      8. +
      +
    2. +
    3. Create an access key +
        +
      1. Open the IAM user > Security credentials > Create access key
      2. +
      3. Copy Key ID and Secret
      4. +
      +
    4. +
    5. Create a bucket
    6. +
    7. Configurate the new bucket +
        +
      1. Permissions > Bucket policy (replace << >> with your values) +
        +{
        +    "Version": "2012-10-17",
        +    "Id": "Policy1488494182833",
        +    "Statement": [
        +        {
        +            "Sid": "MakeItPublic",
        +            "Effect": "Allow",
        +            "Principal": {
        +                "AWS": "<< Copied User ARN >>"
        +            },
        +            "Action": "s3:*",
        +            "Resource": [
        +                "arn:aws:s3:::<< Bucket name >>",
        +                "arn:aws:s3:::<< Bucket name >>/*"
        +            ]
        +        }
        +    ]
        +}
        +
      2. +
      3. CORS configuration +
        +<?xml version="1.0" encoding="UTF-8"?>
        +<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
        +    <CORSRule>
        +        <AllowedOrigin>*</AllowedOrigin>
        +        <AllowedMethod>GET</AllowedMethod>
        +        <AllowedMethod>POST</AllowedMethod>
        +        <AllowedMethod>PUT</AllowedMethod>
        +        <MaxAgeSeconds>3000</MaxAgeSeconds>
        +        <AllowedHeader>Authorization</AllowedHeader>
        +    </CORSRule>
        +</CORSConfiguration>
        +
      4. +
      +
    8. +
    + +

    PHP

    + +
    +

    Installation

    + +
      +
    1. Copy fileuploader.s3.php from src/thirdparty/s3/php/ folder to your server.
    2. +
    3. Install official AWS SDK (?) +
        +
      1. using composer require aws/aws-sdk-php
      2. +
      3. or download ZIP file
      4. +
      +
    4. +
    + +

    How to use

    + +

    Include the class.fileuploader.php, fileuploader.s3.php and aws autoloader into your php file and initialize it like basic Fileuploader by writing in arguments the input file name and the options.
    +This time you will have to create a Fileuploader::$S3 object and to add the auth array in the options.
    +Don't forget to take a look at the /examples/thirdparty/s3/ folder.

    + +
    +require 'vendor/autoload.php';
    +require 'class.fileuploader.php';
    +require 'fileuploader.s3.php';
    +
    +$FileUploader = new FileUploader::$S3('files', array(
    +    'uploadDir' => '../uploads/',
    +
    +    // S3 credentials
    +    'auth' => [
    +        'bucket' => 'my-bucket',
    +        'folder' => '/',
    +        'key' => 'ima_key',
    +        'secret' => 'ima_secret',
    +        'region' => 'eu-central-1',
    +        // 'version' => 'latest', # optional
    +        // 'endpoint' => 'http://localhost:8000', #optional
    +    ]
    +));
    +
    +// call to upload the files
    +$data = $FileUploader->upload();
    +
    +// if uploaded and success
    +if($data['isSuccess']) {
    +    echo '<pre>';
    +    print_r($FileUploader->getFileList());
    +    echo '</pre>';
    +}
    + +

    Or call it separately

    + +
    +require 'vendor/autoload.php';
    +require 'class.fileuploader.php';
    +require 'fileuploader.s3.php';
    +
    +$S3Client = new FileUploader_S3(array(
    +    'bucket' => 'my-bucket',
    +    'folder' => '/',
    +    'key' => 'ima_key',
    +    'secret' => 'ima_secret',
    +    'region' => 'eu-central-1'
    +));
    + +

    Methods

    + +

    All available methods are listed below.

    + +
    +// get S3 Client
    +$FileUploader->getClient();
    +
    +// create a bucket
    +$FileUploader->createBucket($bucket = 'bucket-name', $location = 'us-east-1', $acl = 'private');
    +
    +// set current bucket
    +$FileUploader->setBucket($bucket = 'bucket-name');
    +
    +// check if bucket exists
    +$FileUploader->bucketExists($bucket = 'bucket-name');
    +
    +// list the buckets' names
    +$FileUploader->listBuckets();
    +
    +// create a folder
    +$FileUploader->createFolder($path = 'new_folder/', $acl = 'public-read');
    +
    +// set current folder
    +$FileUploader->setFolder($path = 'my_folder/');
    +
    +// check if folder exists
    +$FileUploader->folderExists($path = 'my_folder/');
    +
    +// list the folders
    +$FileUploader->listFolders($path = null);
    +
    +// delete a folder
    +$FileUploader->deleteFolder($path = 'my_folder/');
    +
    +// upload a file
    +$FileUploader->uploadFile($tmp = 'path_to_file.jpg', $file = 'file_on_s3.jpg', $acl = 'public-read');
    +
    +// check if a file exists
    +$FileUploader->fileExists($file = 'file_on_s3.jpg');
    +
    +// get file public link
    +$FileUploader->getFileUrl($file = 'file_on_s3.jpg');
    +
    +// list the files
    +$FileUploader->listFiles($path = null);
    +
    +// download a file to path
    +$FileUploader->downloadFile($file = 'file_on_s3.jpg', $destination = 'path_to_file.jpg');
    +
    +// delete a file
    +$FileUploader->deleteFile($file = 'file_on_s3.jpg');
    +
    + +
    +

    License

    + +

    A regular license is required if you are using this plugin in one of your personal projects (including sites for your customers) and a commercial license for all commercial applications (including sites, themes and apps you plan to sell).

    + +

    Sharing the source code or selling it particullary is not allowed.

    + +

    Keep the license and copyright notice included in Fileuploader's CSS and JavaScript files when you use them in your projects.

    +
    + +
    +

    Changelog

    + +

    See the record of all changes made to the project.

    + +
    +

    v2.2

    + +
      +
    • Fixed the cropper for iOS devices
    • +
    • Fixed image orientaion flip issue
    • +
    • New popup template
    • +
    • Popup image zoomer
    • +
    • Improved popup for mobile devices
    • +
    • New box-after theme
    • +
    • New gallery theme
    • +
    • New avatar theme
    • +
    • Added thumbnails.popup.zoomer option
    • +
    • Added editor.cropper.maxWidth and editor.cropper.maxHeight option
    • +
    • Added item.data.readerForce attribute for the preloaded files to prevent the browser cache
    • +
    • Added reader.maxSize option to customize the performance of the browser
    • +
    • Added item.local attribute that will be come as file in listInput
    • +
    • Changed thumbnails.popup.onShow callback
    • +
    • Added disallowedExtensions option
    • +
    • Added dialogs option in the api.assets object
    • +
    • Set allowed/disallowed type using * like image/*
    • +
    • Fixed sorter function for itemPrepend option
    • +
    • Improved sorter's scrollContainer element
    • +
    • Fixed scrolling on sort for iOS devices
    • +
    • Fixed the checking of sorter changes
    • +
    • Continue the upload on chunks by retry
    • +
    • The example drag-drop-form is now for unlimited inputs
    • +
    • Added a MySQL example
    • +
    • Added Laravel example
    • +
    • PDF Viewer in the popup: native or mozilla/pdf.js
    • +
    • Now you can set the title option as a function
    • +
    • Improved file size calculation for validations
    • +
    • Check the file structure by preloading
    • +
    • Prevent empty file (file size = 0)
    • +
    • Escape HTML entities from the file name
    • +
    • Replaced <a> with <button> in the templates
    • +
    • FileUploader::resize function returns a information about the image size
    • +
    • Now you can set the input name new FileUploader(array('my_form', 'files')) for name="my_form[files]"
    • +
    + +

    v2.1

    + +
      +
    • Added node.js module
    • +
    • Added Amazon S3 class
    • +
    • Added size and position information by cropping an image
    • +
    • Fixed item.upload.data object
    • +
    • Fixed crop option for images smaller than maxWidth and maxHeight
    • +
    • Fixed limit 1 issue on the front-end
    • +
    • Improved synced image loading for large files
    • +
    • Added rotate action (without opening the editor)
    • +
    • Rounded button styles
    • +
    + +

    v2.0

    + +
      +
    • Redesign!
    • +
    • Added dropIn theme
    • +
    • Added jquery.fileuploader.sass
    • +
    • Improved documentation
    • +
    • Fix addMore mode with limit to one file
    • +
    • Improved editor in the PHP
    • +
    • listProps are now available in the items array in PHP
    • +
    • fileuploader font with icons
    • +
    • dist and src folder in the download zip
    • +
    + +

    v1.4

    + +
      +
    • Fixed Exif orientation issue for images (e.g. on iPhone and Samsung)
    • +
    • thumbnails.videoThumbnail option will allow you to choose if you want or not to load thumbnails for video files in browser
    • +
    • Added file.data.thumbnail - now you can load 2 different images for thumbnail and popup (now fileuploader is loading faster)
    • +
    • Added api.update(item, data) method - now you can update an item in the list with the new data
    • +
    • Some design changes for the popup - now you can also append the popup to the body
    • +
    • View all type of file in the popup (remove the file-has-popup class for an item to disable the preview)
    • +
    • Added arrows features for the popup
    • +
    • File reader improvements - now you can also set the reader timeout for a file
    • +
    • item.renderThumbnail(true) will now read again the item.file and will update the thumbnail and the popup
    • +
    • Drag&Drop feature in a form example
    • +
    + +

    v1.3

    + +
      +
    • Image editor feature on front-End. Now you can open a popup and edit the images (click on the thumbnail). +
        +
      • added editor option
      • +
      • item.editor.rotate(degrees) method is available
      • +
      • item.editor.rotation value is available, only after calling the method above
      • +
      • item.editor.cropper(data) method is available
      • +
      • item.editor.crop value is available, only after calling the method above
      • +
      • item.editor.save(callback, asBlob, mimeType, preventThumbnailRender) method is available
      • +
      +
    • +
    • Image editor feature on back-End (we use it to edit the images and to create thumbnails) +
        +
      • added editor option
      • +
      • FileUploader::resize method is now available
      • +
      +
    • +
    • File sorter feature. Now you can sort by drag&drop the files +
        +
      • add sorter option
      • +
      +
    • +
    • List input has now Array-Object format. Now you can send to Back-end your own file parameters (we are using now also for the editor). Add custom values in item.data.listProps to have them in the list input
    • +
    • item.upload.resend() method is now available to resend an ajax request
    • +
    • Improved the image resizer. Images that are resized for canvas in browser have a high quality now
    • +
    • Added upload.chunk option. Slice large files in chunks and upload them to server
    • +
    • Added api.add(data, type, custom_name) api method. Create a file from your string or dataURI and upload to server. Now you can upload WebCam photos or other file types converted into dataURI in browser
    • +
    • Popup redesign
    • +
    • Popup text files preview - set file format to astext to get it
    • +
    • item.reader.ratio - image and video ratio
    • +
    • assets.pxToRatio(width, height) helper function
    • +
    • assets.ratioToPx(width, height, ratio) helper function
    • +
    • item.renderImage - is now deprecated! Please use item.renderThumbnail instead
    • +
    • item.data.readerSkip = true to skip file from rendering
    • +
    • item.data.readerCrossOrigin = 'anonymous' to solve the cross-origin issue
    • +
    • captions.close - is now deprecated! Please use captions.cancel instead
    • +
    • thumbnails.onImageLoaded - the callback is triggered now also when the reading of an image failed. Now you can also validate the images
    • +
    • CSS - brighter main color
    • +
    • Added jquery.fileuploader.min.css file
    • +
    • Fixed validaiton check on the php side
    • +
    • Improvements and fixes
    • +
    + +

    v1.2

    + +
      +
    • Added Popup feature. Now you can open a popup for each item (click on the thumbnail). +
        +
      • Popup preview for photo, video and audio files
      • +
      • thumbnails.item and thumbnails.item2 the line was changed to <div class="column-thumbnail">${image}<span class="fileuploader-action-popup"></span></div>
      • +
      • added thumbnails.popup option
      • +
      • added thumbnails._selectors.popup and thumbnails._selectors.popup_open option
      • +
      • item.popup.open method is available. After calling this function, the following values are available:
      • +
      • item.popup.html - Popup HTML element
      • +
      • item.popup.close() - Popup close method
      • +
      +
    • +
    • Added Reader feature. Now you can read each type of file +
        +
      • item.reader.read(callback) method is now available. After calling this function, the following values are available:
      • +
      • iteam.reader.node - img, video and audio HTML node
      • +
      • item.reader.src - file reader result
      • +
      • item.reader.duration - video and audio duration
      • +
      • item.reader.duration2 - video and audio formatted duration
      • +
      • item.reader.width - img and video width
      • +
      • item.reader.height - img and video height
      • +
      • item.reader.frame - video thumbnail
      • +
      +
    • +
    • Improved captions for multilangual templates. +
        +
      • added captions.close
      • +
      • added captions.download
      • +
      • added captions.remove
      • +
      +
    • +
    • The thumbnails.item and thumbnails.item2 were some words like Download and Remove replaced with ${captions.download} and ${captions.remove}
    • +
    • Classname fileupload-no-thumbnail was renamed to fileuploader-no-thumbnail
    • +
    • Item thumbnail (canvas or img) are now aligned to the center of parent
    • +
    • Improved Ajax progress handling. Now the progressbar will stay to 99% until the success callback will come.
    • +
    • item.renderThumbnail(src) - now you can send a custom image src to render the thumbnail
    • +
    • Fixed iPhone issue: "File with the name image.jpg is already selected."
    • +
    • Improvements and fixes
    • +
    + +

    v1.0.0.5

    + +
      +
    • Colored icon in the Drag&drop example
    • +
    • Fixed validator issue for AddMore option (#10)
    • +
    • Fixed Clipboardpaste name issue
    • +
    • Added id key for file data (id is a timestamp that can be used in the templates)
    • +
    • Improved onListInput callback (now you don't need to create the list, it comes as a function property. Return the list to get the changes)
    • +
    • updateFileList in Api functions (trigger file list updating)
    • +
    • uploadStart in Api functions (trigger file upload for all files synchron/asynchron)
    • +
    + +

    v1.0.0.4

    + +
      +
    • Removed some commas in js script
    • +
    • Added Drag&Drop feature in Chrome also for non-upload inputs
    • +
    + +

    v1.0.0.3

    + +
      +
    • Fixed <!DOCTYPE> tag in all HTML documents
    • +
    • Fixed img styles for thumbnails example
    • +
    + +

    v1.0.0.2

    + +
      +
    • Fixed Safari issue (#2)
    • +
    + +

    v1.0

    + +
      +
    • Initial commit
    • +
    +
    +
    + + +
    +
    + + diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/jquery.fileuploader.js b/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/jquery.fileuploader.js new file mode 100644 index 0000000..3e25b53 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/jquery.fileuploader.js @@ -0,0 +1,4977 @@ +/** + * Fileuploader + * Copyright (c) 2019 Innostudio.de + * Website: https://innostudio.de/fileuploader/ + * Version: 2.2 (23-Nov-2019) + * License: https://innostudio.de/fileuploader/documentation/#license + */ +(function($) { + "use strict"; + + $.fn.fileuploader = function(q) { + return this.each(function(t, r) { + var s = $(r), // input element + p = null, // parent element + o = null, // new input element + l = null, // list element + sl = [], // input elements !important for addMore option + n = $.extend(true, {}, $.fn.fileuploader.defaults, q), // options + f = { + /** + * init + * initialize the plugin + * + * @void + */ + init: function() { + // create and set the parent element + if (!s.closest('.fileuploader').length) + s.wrap('
    '); + p = s.closest('.fileuploader'); + + // extend captions object + f.set('language'); + + // add, merge and apply input attributes with the options + // also define the defaults for some options + f.set('attrOpts'); + + // check if the plugin is supported in current browser + if (!f.isSupported()) { + n.onSupportError && $.isFunction(n.onSupportError) ? n.onSupportError(p, s) : null; + return false; + } + + // before render callback + if (n.beforeRender && $.isFunction(n.beforeRender) && n.beforeRender(p, s) === false) + return false; + + // redesign the new input + f.redesign(); + + // append files from options + if (n.files) + f.files.append(n.files); + + // after render callback + f.rendered = true; + n.afterRender && $.isFunction(n.afterRender) ? n.afterRender(l, p, o, s) : null; + + // bind events + if (!f.disabled) + f.bindUnbindEvents(true); + + if (!f._itFl.length) + f.reset(); + }, + + /** + * bindUnbindEvents + * bind or unbind events for input and new elements + * + * @param {bool} bind - bind the events? + * @void + */ + bindUnbindEvents: function(bind) { + // unbind events + if (bind) + f.bindUnbindEvents(false); + + // bind all input events + s[bind ? 'on' : 'off'](f._assets.getAllEvents(), f.onEvent); + + // bind click event for the new input + if (n.changeInput && o!==s) + o[bind ? 'on' : 'off']('click', f.clickHandler); + + // bind drag&drop events + if (n.dragDrop && n.dragDrop.container.length) { + n.dragDrop.container[bind ? 'on' : 'off']('drag dragstart dragend dragover dragenter dragleave drop', function(e) { e.preventDefault(); }); + n.dragDrop.container[bind ? 'on' : 'off']('drop', f.dragDrop.onDrop); + n.dragDrop.container[bind ? 'on' : 'off']('dragover', f.dragDrop.onDragEnter); + n.dragDrop.container[bind ? 'on' : 'off']('dragleave', f.dragDrop.onDragLeave); + } + + // bind the paste from clipboard event + if (f.isUploadMode() && n.clipboardPaste) + $(window)[bind ? 'on' : 'off']('paste', f.clipboard.paste); + + // bind sorter events + if (n.sorter && n.thumbnails && n.thumbnails._selectors.sorter) + f.sorter[bind ? 'init': 'destroy'](); + + // bind the form reset + s.closest('form')[bind ? 'on' : 'off']('reset', f.reset); + }, + + /** + * redesign + * create the new input and hide the standard one + * + * @void + */ + redesign: function() { + // set as default + o = s; + + // add a class name with theme + if (n.theme) + p.addClass('fileuploader-theme-' + n.theme); + + // set new input html + if (n.changeInput) { + switch ((typeof n.changeInput + "").toLowerCase()) { + case 'boolean': + o = $('
    ' + + '
    ' + f._assets.textParse(n.captions.feedback) + '
    ' + + '' + + '
    '); + break; + case 'string': + if (n.changeInput != ' ') + o = $(f._assets.textParse(n.changeInput, n)); + break; + case 'object': + o = $(n.changeInput); + break; + case 'function': + o = $(n.changeInput(s, p, n, f._assets.textParse)); + break; + } + + // add the new input after standard input + s.after(o); + + // hide the standard input + s.css({ + position: "absolute", + "z-index": "-9999", + height: '0', + width: '0', + padding: '0', + margin: '0', + "line-height": '0', + outline: '0', + border: '0', + opacity: '0' + }); + } + + + // create thumbnails list + if (n.thumbnails) + f.thumbnails.create(); + + // set drag&drop container + if (n.dragDrop) { + n.dragDrop = typeof(n.dragDrop) != 'object' ? {container: null} : n.dragDrop; + n.dragDrop.container = n.dragDrop.container ? $(n.dragDrop.container) : o; + } + }, + + /** + * clickHandler + * click event for new input + * + * @param {Event} e - jQuery event + * @void + */ + clickHandler: function(e) { + e.preventDefault(); + + // clear clipboard pending + if (f.clipboard._timer) { + f.clipboard.clean(); + return; + } + + // trigger input click + s.click(); + }, + + /** + * onEvent + * callbacks for each input event + * + * @param {Event} e - jQuery event + * @void + */ + onEvent: function(e) { + switch(e.type) { + case 'focus': + p ? p.addClass('fileuploader-focused') : null; + break; + case 'blur': + p ? p.removeClass('fileuploader-focused') : null; + break; + case 'change': + f.onChange.call(this); + break; + } + + // listeners callback + n.listeners && $.isFunction(n.listeners[e.type]) ? n.listeners[e.type].call(s, p) : null; + }, + + + /** + * set + * set properties + * + * @param {String} type - property type + * @param {null|String} value - property value + * @void + */ + set: function(type, value) { + switch(type) { + case 'attrOpts': + var d = ['limit', 'maxSize', 'fileMaxSize', 'extensions', 'changeInput', 'theme', 'addMore', 'listInput', 'files']; + for (var k = 0; k < d.length; k++) { + var j = 'data-fileuploader-' + d[k]; + if (f._assets.hasAttr(j)) { + switch (d[k]) { + case 'changeInput': + case 'addMore': + case 'listInput': + n[d[k]] = (['true', 'false'].indexOf(s.attr(j)) > -1 ? s.attr(j) == 'true' : s.attr(j)); + break; + case 'extensions': + n[d[k]] = s.attr(j) + .replace(/ /g, '') + .split(','); + break; + case 'files': + n[d[k]] = JSON.parse(s.attr(j)); + break; + default: + n[d[k]] = s.attr(j); + } + } + s.removeAttr(j); + } + + // set the plugin on disabled if the input has disabled attribute or limit is 0 + if (s.attr('disabled') != null || s.attr('readonly') != null || n.limit === 0) + f.disabled = true; + + // set multiple attribute to the input + if (!n.limit || (n.limit && n.limit >= 2)) { + s.attr('multiple', 'multiple'); + // set brackets at the end of input name + n.inputNameBrackets && s.attr('name').slice(-2) != '[]' ? s.attr('name', s.attr('name') + '[]') : null; + } + + // set list input element + if (n.listInput === true) { + n.listInput = $('').insertBefore(s); + } + if (typeof n.listInput == "string" && $(n.listInput).length == 0) { + n.listInput = $('').insertBefore(s); + } + + // apply some defined options to plugin + f.set('disabled', f.disabled); + if (!n.fileMaxSize && n.maxSize) + n.fileMaxSize = n.maxSize; + break; + // extend captions object + case 'language': + var languages = $.fn.fileuploader.languages; + + if (typeof n.captions == 'string') { + if (n.captions in languages) + n.captions = languages[n.captions]; + else + n.captions = $.extend(true, {}, $.fn.fileuploader.defaults.captions); + } + break; + // set and apply disable option to plugin + case 'disabled': + f.disabled = value; + p[f.disabled ? 'addClass' : 'removeClass']('fileuploader-disabled'); + s[f.disabled ? 'attr' : 'removeAttr']('disabled', 'disabled'); + + if (f.rendered) + f.bindUnbindEvents(!value); + break; + // set new input feedback html + case 'feedback': + if (!value) + value = f._assets.textParse(f._itFl.length > 0 ? n.captions.feedback2 : n.captions.feedback, {length: f._itFl.length}); + + $(!o.is(':file')) ? o.find('.fileuploader-input-caption span').html(value) : null; + break; + // set file input value to empty + case 'input': + var el = f._assets.copyAllAttributes($(''), s, true); + + f.bindUnbindEvents(false); + s.after(s = el).remove(); + f.bindUnbindEvents(true); + break; + // set previous input; only for addMore option + case 'prevInput': + if (sl.length > 0) { + f.bindUnbindEvents(false); + sl[value].remove(); + sl.splice(value, 1); + s = sl[sl.length - 1]; + f.bindUnbindEvents(true); + } + break; + // set next input; only for addMore option + case 'nextInput': + var el = f._assets.copyAllAttributes($(''), s); + + f.bindUnbindEvents(false); + if (sl.length > 0 && sl[sl.length - 1].get(0).files.length == 0) { + s = sl[sl.length - 1]; + } else { + sl.indexOf(s) == -1 ? sl.push(s) : null; + sl.push(el); + s.after(s = el); + } + f.bindUnbindEvents(true); + break; + // set list input with list of the files + case 'listInput': + if (n.listInput) + n.listInput.val(f.files.list(true, null, false, value)); + break; + } + }, + + /** + * onChange + * on input change event + * + * @param {Event} e - jQuery event + * @param {Array} fileList - FileList array, used only by drag&drop and clipboard paste + * @void + */ + onChange: function(e, fileList) { + var files = s.get(0).files; + + // drag&drop or clipboard paste + if (fileList) { + if (fileList.length) { + files = fileList; + } else { + f.set('input', ''); + f.files.clear(); + return false; + } + + } + + // clean clipboard timer + // made only for safety + if (f.clipboard._timer) + f.clipboard.clean(); + + // reset the input if default mode + if (f.isDefaultMode()) { + f.reset(); + + if (files.length == 0) + return; + } + + // beforeSelect callback + if (n.beforeSelect && $.isFunction(n.beforeSelect) && n.beforeSelect(files, l, p, o, s) == false) { + return false; + } + + // files + var t = 0; // total processed files + for (var i = 0; i < files.length; i++ ) { + var file = files[i], // file + item = f._itFl[f.files.add(file, 'choosed')], // item + status = f.files.check(item, files, i == 0); // ["type", "message", "do not show the warning message", "do not check the next files"] + + // process the warnings + if (status !== true) { + f.files.remove(item, true); + + if (!status[2]) { + if (f.isDefaultMode()) { + f.set('input', ''); + f.reset(); + status[3] = true; + } + + status[1] ? f._assets.dialogs.alert(status[1], item, l, p, o, s) : null; + } + + if (status[3]) { + break; + } + + continue; + } + + // file is valid + // create item html + if (n.thumbnails) + f.thumbnails.item(item); + + // create item ajax request + if (f.isUploadMode()) + f.upload.prepare(item); + + // onSelect callback + n.onSelect && $.isFunction(n.onSelect) ? n.onSelect(item, l, p, o, s) : null; + + t++; + } + + // clear the input in uploadMode + if (f.isUploadMode() && t > 0) + f.set('input', ''); + + // set feedback caption + f.set('feedback', null); + + // set nextInput for addMore option + if (f.isAddMoreMode() && t > 0) { + f.set('nextInput'); + } + + // set listInput value + f.set('listInput', null); + + // afterSelect callback + n.afterSelect && $.isFunction(n.afterSelect) ? n.afterSelect(l, p, o, s) : null; + }, + + /** + * @namespace thumbnails + */ + thumbnails: { + /** + * create + * create the thumbnails list + * + * @namespace thumbnails + * @void + */ + create: function() { + // thumbnails.beforeShow callback + n.thumbnails.beforeShow != null && $.isFunction(n.thumbnails.beforeShow) ? n.thumbnails.beforeShow(p, o, s) : null; + + // create item's list element + var box = $(f._assets.textParse(n.thumbnails.box)).appendTo(n.thumbnails.boxAppendTo ? n.thumbnails.boxAppendTo : p); + l = !box.is(n.thumbnails._selectors.list) ? box.find(n.thumbnails._selectors.list) : box; + + // bind item popup method to the selector + if (n.thumbnails._selectors.popup_open) { + l.on('click', n.thumbnails._selectors.popup_open, function(e) { + e.preventDefault(); + + var m = $(this).closest(n.thumbnails._selectors.item), + item = f.files.find(m); + + if (item && item.popup && item.html.hasClass('file-has-popup')) + f.thumbnails.popup(item); + }); + } + // bind item upload start method to the selector + if (f.isUploadMode() && n.thumbnails._selectors.start) { + l.on('click', n.thumbnails._selectors.start, function(e) { + e.preventDefault(); + + if (f.locked) + return false; + + var m = $(this).closest(n.thumbnails._selectors.item), + item = f.files.find(m); + + if (item) + f.upload.send(item, true); + }); + } + // bind item upload retry method to the selector + if (f.isUploadMode() && n.thumbnails._selectors.retry) { + l.on('click', n.thumbnails._selectors.retry, function(e) { + e.preventDefault(); + + if (f.locked) + return false; + + var m = $(this).closest(n.thumbnails._selectors.item), + item = f.files.find(m); + + if (item) + f.upload.retry(item); + }); + } + // bind item editor rotate method to the selector + if (n.thumbnails._selectors.rotate) { + l.on('click', n.thumbnails._selectors.rotate, function(e) { + e.preventDefault(); + + if (f.locked) + return false; + + var m = $(this).closest(n.thumbnails._selectors.item), + item = f.files.find(m); + + if (item && item.editor) { + item.editor.rotate(); + item.editor.save(); + } + }); + } + // bind item remove / upload.cancel method to the selector + if (n.thumbnails._selectors.remove) { + l.on('click', n.thumbnails._selectors.remove, function(e) { + e.preventDefault(); + + if (f.locked) + return false; + + var m = $(this).closest(n.thumbnails._selectors.item), + item = f.files.find(m), + c = function(a) { + f.files.remove(item); + }; + + if (item) { + if (item.upload && item.upload.status != 'successful') { + f.upload.cancel(item); + } else { + if (n.thumbnails.removeConfirmation && !item.choosed) { + f._assets.dialogs.confirm(f._assets.textParse(n.captions.removeConfirmation, item), c); + } else { + c(); + } + } + } + }); + } + }, + /** + * clear + * set the HTML content from items list to empty + * + * @namespace thumbnails + * @void + */ + clear: function() { + if (l) + l.html(''); + }, + /** + * item + * create the item.html and append it to the list + * + * @namespace thumbnails + * @param {Object} item + * @param {HTML} replaceHtml + * @void + */ + item: function(item, replaceHtml) { + item.icon = f.thumbnails.generateFileIcon(item.format, item.extension); + item.image = '
    '; + item.progressBar = f.isUploadMode() ? '
    ' : ''; + item.html = $(f._assets.textParse(item.appended && n.thumbnails.item2 ? n.thumbnails.item2 : n.thumbnails.item, item)); + item.progressBar = item.html.find('.fileuploader-progressbar'); + + // add class with file extension and file format to item html + item.html.addClass('file-type-' + (item.format ? item.format : 'no') + ' file-ext-' + (item.extension ? item.extension : 'no') + ''); + + // add item html to list element + if (replaceHtml) + replaceHtml.replaceWith(item.html); + else + item.html[n.thumbnails.itemPrepend ? 'prependTo' : 'appendTo'](l); + + // add popup option + if (n.thumbnails.popup && item.data.popup !== false) { + item.html.addClass('file-has-popup'); + item.popup = { + open: function() { f.thumbnails.popup(item); } + }; + } + + // render the image thumbnail + f.thumbnails.renderThumbnail(item); + item.renderThumbnail = function(src) { + if (src && item.popup && item.popup.close) { + item.popup.close(); + item.popup = { open: item.popup.open }; + } + f.thumbnails.renderThumbnail(item, true, src); + }; + + // thumbnails.onItemShow callback + n.thumbnails.onItemShow != null && $.isFunction(n.thumbnails.onItemShow) ? n.thumbnails.onItemShow(item, l, p, o, s) : null; + }, + /** + * generateFileIcon + * generate a file icon with custom background color + * + * @namespace thumbnails + * @param {String} form - file format + * @param {String} extension - file extension + * @return {String} html element + */ + generateFileIcon: function(format, extension) { + var el = '
    ' + (extension ? extension : '') + '
    '; + + // set generated color to icon background + var bgColor = f._assets.textToColor(extension); + if (bgColor) { + var isBgColorBright = f._assets.isBrightColor(bgColor); + if (isBgColorBright) + el = el.replace('${class}', ' is-bright-color'); + el = el.replace('${style}', 'background-color: ' + bgColor); + } + + return el.replace('${style}', '').replace('${class}', ''); + }, + /** + * renderThumbnail + * render image thumbnail and append to .fileuploader-item-image element + * it appends the generated icon if the file is not an image or not a valid image + * + * @namespace thumbnails + * @param {Object} item + * @param {bool} forceRender - skip the synchron functions and force the rendering + * @param {string} src - custom image source + * @void + */ + renderThumbnail: function(item, forceRender, src) { + var m = item.html.find('.fileuploader-item-image'), + readerSkip = item.data && item.data.readerSkip, + setImageThumb = function(img) { + var $img = $(img); + + // add $img to html + m.removeClass('fileuploader-no-thumbnail fileuploader-loading').html($img); + if (item.html.hasClass('file-will-popup')) item.html.removeClass('file-will-popup').addClass('file-has-popup'); + + // add onImageLoaded callback + if ($img.is('img')) + $img.attr('draggable', 'false').on('load error', function(e) { + if (e.type == 'error') + setIconThumb(); + renderNextItem(); + n.thumbnails.onImageLoaded != null && $.isFunction(n.thumbnails.onImageLoaded) ? n.thumbnails.onImageLoaded(item, l, p, o, s) : null; + }); + + if ($img.is('canvas')) + n.thumbnails.onImageLoaded != null && $.isFunction(n.thumbnails.onImageLoaded) ? n.thumbnails.onImageLoaded(item, l, p, o, s) : null; + }, + setIconThumb = function() { + m.addClass('fileuploader-no-thumbnail'); + m.removeClass('fileuploader-loading').html(item.icon); + if (item.html.hasClass('file-will-popup')) item.html.removeClass('file-will-popup').addClass('file-has-popup'); + + n.thumbnails.onImageLoaded != null && $.isFunction(n.thumbnails.onImageLoaded) ? n.thumbnails.onImageLoaded(item, l, p, o, s) : null; + }, + renderNextItem = function() { + var i = 0; + + if (item && f._pfrL.indexOf(item) > -1) { + f._pfrL.splice(f._pfrL.indexOf(item), 1); + while (i < f._pfrL.length) { + if (f._itFl.indexOf(f._pfrL[i]) > -1) { + setTimeout(function() { + f.thumbnails.renderThumbnail(f._pfrL[i], true); + }, item.format == 'image' && item.size/1000000 > 1.8 ? 200 : 0); + break; + } else { + f._pfrL.splice(i, 1); + } + i++; + } + } + }; + + // skip this function if there is no place for image + if (!m.length) { + renderNextItem(); + return; + } + + // set item.image to jQuery element + item.image = m.html('').addClass('fileuploader-loading'); + + // create an image thumbnail only if file is an image and if FileReader is supported + if ((['image', 'video', 'audio', 'astext'].indexOf(item.format) > -1 || item.data.thumbnail) && f.isFileReaderSupported() && !readerSkip && (item.appended || n.thumbnails.startImageRenderer || forceRender)) { + // prevent popup before loading + if (item.html.hasClass('file-has-popup')) + item.html.removeClass('file-has-popup').addClass('file-will-popup'); + + // check pending list + if (n.thumbnails.synchronImages) { + f._pfrL.indexOf(item) == -1 && !forceRender ? f._pfrL.push(item) : null; + if (f._pfrL.length > 1 && !forceRender) { + return; + } + } + + // create thumbnail + var load = function(data, fromReader) { + var srcIsImg = data.nodeName && data.nodeName.toLowerCase() == 'img', + src = !srcIsImg ? data : data.src; + + if (n.thumbnails.canvasImage) { + var canvas = document.createElement('canvas'), + img = srcIsImg ? data : new Image(), + onload = function() { + // resize canvas + f.editor.resize(this, canvas, n.thumbnails.canvasImage.width ? n.thumbnails.canvasImage.width : m.width(), n.thumbnails.canvasImage.height ? n.thumbnails.canvasImage.height : m.height(), false, true); + + // check if canvas is not blank + if (!f._assets.isBlankCanvas(canvas)) { + setImageThumb(canvas); + } else { + setIconThumb(); + } + + // render the next pending item + renderNextItem(); + }, + onerror = function(text) { + setIconThumb(); + renderNextItem(); + img = null; + }; + + // do not create another image element + if (item.format == 'image' && fromReader && item.reader.node) + return onload.call(item.reader.node); + + // do not create an empty image element + if(!src) + return onerror(); + + if (srcIsImg) + return onload.call(data); + + // create image element + img.onload = onload; + img.onerror = onerror; + if (item.data && item.data.readerCrossOrigin) + img.setAttribute('crossOrigin', item.data.readerCrossOrigin); + img.src = src; + } else { + setImageThumb(srcIsImg ? data : ''); + } + }; + + // choose thumbnail source + if (typeof src == 'string' || typeof src == 'object') + return load(src); + else + return f.files.read(item, function() { + if (item.reader.node && (item.reader.frame || item.reader.node.nodeName.toLowerCase() == 'img')) { + load(item.reader.frame || item.reader.src, true); + } else { + setIconThumb(); + renderNextItem(); + } + }, null, src, true); + } + + setIconThumb(); + }, + /** + * popup + * create and show a popup for an item + * appends the popup to parent element + * reset values for the editor + * + * @namespace thumbnails + * @param {Object} item + * @param {Boolean} isByAction - popup is called by prev/next buttons + * @void + */ + popup: function(item, isByActions) { + if (f.locked || !n.thumbnails.popup || !n.thumbnails._selectors.popup) + return; + + var container = $(n.thumbnails.popup.container), + box = container.find('.fileuploader-popup'), + hasArrowsClass = 'fileuploader-popup-has-arrows', + renderPopup = function() { + var template = item.popup.html || $(f._assets.textParse(n.thumbnails.popup.template, item)), + popupIsNew = item.popup.html !== template, + windowKeyEvent = function(e) { + var key = e.which || e.keyCode; + + if (key == 27 && item.popup && item.popup.close) + item.popup.close(); + + if ((key == 37 || key == 39) && n.thumbnails.popup.arrows) + item.popup.move(key == 37 ? 'prev' : 'next'); + }; + + box.removeClass('loading'); + + // remove all created popups + if (box.children(n.thumbnails._selectors.popup).length) { + $.each(f._itFl, function(i, a) { + if (a != item && a.popup && a.popup.close) { + a.popup.close(isByActions); + } + }); + box.find(n.thumbnails._selectors.popup).remove(); + } + + template.show().appendTo(box); + item.popup.html = template; + item.popup.move = function(to) { + var itemIndex = f._itFl.indexOf(item), + nextItem = null, + itL = false; + + to = n.thumbnails.itemPrepend ? to == 'prev' ? 'next' : 'prev' : to; + + if (to == 'prev') { + for (var i = itemIndex; i>=0; i--) { + var a = f._itFl[i]; + + if (a != item && a.popup && a.html.hasClass('file-has-popup')) { + nextItem = a; + break; + } + + if (i == 0 && !nextItem && !itL && n.thumbnails.popup.loop) { + i = f._itFl.length; + itL = true; + } + } + } else { + for (var i = itemIndex; i')).find('.reader-node').html(item.reader.node); + item.reader.node.controls = true; + item.reader.node.currentTime = 0; + item.reader.node.play ? item.reader.node.play() : null; + } else { + if (popupIsNew) + template.find('.fileuploader-popup-node').html('
    ' + item.icon + '
    '); + } + + // bind Window functions + $(window).on('keyup', windowKeyEvent); + + // freeze the container + container.css({ + overflow: 'hidden', + width: container.innerWidth() + }); + + // popup arrows + item.popup.html.find('[data-action="prev"], [data-action="next"]').removeAttr('style'); + item.popup.html[f._itFl.length == 1 || !n.thumbnails.popup.arrows ? 'removeClass' : 'addClass'](hasArrowsClass); + + if (!n.thumbnails.popup.loop) { + if (f._itFl.indexOf(item) == 0) + item.popup.html.find('[data-action="prev"]').hide(); + if (f._itFl.indexOf(item) == f._itFl.length-1) + item.popup.html.find('[data-action="next"]').hide(); + } + + // popup zoomer + f.editor.zoomer(item); + + // popup editor + if (item.editor) { + if (!item.popup.editor) + item.popup.editor = {}; + + // set saved rotation + f.editor.rotate(item, item.popup.editor.rotation || item.editor.rotation || 0, true); + + // set saved crop + if (item.popup.editor && item.popup.editor.cropper) { + item.popup.editor.cropper.hide(true); + setTimeout(function() { + f.editor.crop(item, item.editor.crop ? $.extend({}, item.editor.crop) : item.popup.editor.cropper.setDefaultData()); + }, 100); + } + } + + // bind actions + item.popup.html.on('click', '[data-action="prev"]', function(e) { + item.popup.move('prev'); + }).on('click', '[data-action="next"]', function(e) { + item.popup.move('next'); + }).on('click', '[data-action="crop"]', function(e) { + if (item.editor) + item.editor.cropper(); + }).on('click', '[data-action="rotate-cw"]', function(e) { + if (item.editor) + item.editor.rotate(); + }).on('click', '[data-action="zoom-in"]', function(e) { + if (item.popup.zoomer) + item.popup.zoomer.zoomIn(); + }).on('click', '[data-action="zoom-out"]', function(e) { + if (item.popup.zoomer) + item.popup.zoomer.zoomOut(); + }); + + // thumbnails.popup.onShow callback + n.thumbnails.popup.onShow && $.isFunction(n.thumbnails.popup.onShow) ? n.thumbnails.popup.onShow(item, l, p, o, s) : null; + }; + + if (box.length == 0) + box = $('
    ').appendTo(container); + + box.fadeIn(400).addClass('loading'); + + if ((['image', 'video', 'audio', 'astext'].indexOf(item.format) > -1 || ['application/pdf'].indexOf(item.type) > -1) && !item.popup.html) { + f.files.read(item, renderPopup); + } else { + renderPopup(); + } + } + }, + + /** + * @namespace editor + */ + editor: { + /** + * rotate + * rotate image action + * animate rotation in popup, only when popup is enabled + * + * @namespace editor + * @param {Object} item + * @param {Number} degrees - rotation degrees + * @param {Boolean} force - force rotation without animation to degrees + * @void + */ + rotate: function(item, degrees, force) { + var inPopup = item.popup && item.popup.html && $('html').find(item.popup.html).length; + + if (!inPopup) { + var rotation = item.editor.rotation || 0, + deg = degrees ? degrees : rotation + 90; + + if (deg >= 360) + deg = 0; + + if (item.popup.editor) + item.popup.editor.rotation = deg; + + return item.editor.rotation = deg; + } else if (item.reader.node) { + // prevent animation issues + if (item.popup.editor.isAnimating) + return; + item.popup.editor.isAnimating = true; + + var $popup = item.popup.html, + $node = $popup.find('.fileuploader-popup-node'), + $readerNode = $node.find('.reader-node'), + $imageEl = $readerNode.find('> img'), + rotation = item.popup.editor.rotation || 0, + scale = item.popup.editor.scale || 1, + animationObj = { + rotation: rotation, + scale: scale + }; + + // hide cropper + if (item.popup.editor.cropper) + item.popup.editor.cropper.$template.hide(); + + // change values + item.popup.editor.rotation = force ? degrees : rotation + 90; + item.popup.editor.scale = ($readerNode.height() / $imageEl[[90,270].indexOf(item.popup.editor.rotation) > -1 ? 'width' : 'height']()).toFixed(3); + if ($imageEl.height() * item.popup.editor.scale > $readerNode.width() && [90,270].indexOf(item.popup.editor.rotation) > -1) + item.popup.editor.scale = $readerNode.height() / $imageEl.width(); + if (item.popup.editor.scale > 1) + item.popup.editor.scale = 1; + + // animate + $(animationObj).stop().animate({ + rotation: item.popup.editor.rotation, + scale: item.popup.editor.scale + }, { + duration: force ? 2 : 300, + easing: 'swing', + step: function(now, fx) { + var matrix = $imageEl.css('-webkit-transform') || $imageEl.css('-moz-transform') || $imageEl.css('transform') || 'none', + rotation = 0, + scale = 1, + prop = fx.prop; + + // get css matrix + if (matrix !== 'none') { + var values = matrix.split('(')[1].split(')')[0].split(','), + a = values[0], + b = values[1]; + + rotation = prop == 'rotation' ? now : Math.round(Math.atan2(b, a) * (180/Math.PI)); + scale = prop == 'scale' ? now : Math.round(Math.sqrt(a*a + b*b) * 10) / 10; + } + + // set $imageEl css + $imageEl.css({ + '-webkit-transform': 'rotate('+ rotation +'deg) scale('+ scale +')', + '-moz-transform': 'rotate('+ rotation +'deg) scale('+ scale +')', + 'transform': 'rotate('+ rotation +'deg) scale('+ scale +')' + }); + }, + always: function() { + delete item.popup.editor.isAnimating; + + // re-draw the cropper if exists + if (item.popup.editor.cropper && !force) { + item.popup.editor.cropper.setDefaultData(); + item.popup.editor.cropper.init('rotation'); + } + } + }); + + // check if rotation no greater than 360 degrees + if (item.popup.editor.rotation >= 360) + item.popup.editor.rotation = 0; + + // register as change + if (item.popup.editor.rotation != item.editor.rotation) + item.popup.editor.hasChanges = true; + } + }, + + /** + * crop + * crop image action + * show cropping tools, only when popup is enabled + * + * @namespace editor + * @param {Object} item + * @param {Object} data - cropping data + * @void + */ + crop: function(item, data) { + var inPopup = item.popup && item.popup.html && $('html').find(item.popup.html).length; + + if (!inPopup) { + return item.editor.crop = data || item.editor.crop; + } else if (item.reader.node) { + if (!item.popup.editor.cropper) { + var template = '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ', + $popup = item.popup.html, + $imageEl = $popup.find('.fileuploader-popup-node .reader-node > img'), + $template = $(template), + $editor = $template.find('.fileuploader-cropper-area'); + + // define popup cropper tool + item.popup.editor.cropper = { + $imageEl: $imageEl, + $template: $template, + $editor: $editor, + isCropping: false, + crop: data || null, + init: function(data) { + var cropper = item.popup.editor.cropper, + position = cropper.$imageEl.position(), + width = cropper.$imageEl[0].getBoundingClientRect().width, + height = cropper.$imageEl[0].getBoundingClientRect().height, + isInverted = item.popup.editor.rotation && [90,270].indexOf(item.popup.editor.rotation) > -1, + scale = isInverted ? item.popup.editor.scale : 1; + + // unbind all events + cropper.hide(); + + // set default data + if (!cropper.crop) + cropper.setDefaultData(); + + // hide if image not visible + if (width == 0 || height == 0) + return cropper.hide(true); + + // prevent duplicates + if (!cropper.isCropping) { + cropper.$imageEl.clone().appendTo(cropper.$template.find('.area-image')); + cropper.$imageEl.parent().append($template); + } + + // animate cropping tool + cropper.$template.hide().css({ + left: position.left, + top: position.top, + width: width, + height: height + }).fadeIn(150); + cropper.$editor.hide(); + clearTimeout(cropper._editorAnimationTimeout); + cropper._editorAnimationTimeout = setTimeout(function() { + delete cropper._editorAnimationTimeout; + + cropper.$editor.fadeIn(250); + + // update data with cf and scale + if (item.editor.crop && $.isPlainObject(data)) { + cropper.resize(); + cropper.crop.left = cropper.crop.left * cropper.crop.cfWidth * scale; + cropper.crop.width = cropper.crop.width * cropper.crop.cfWidth * scale; + cropper.crop.top = cropper.crop.top * cropper.crop.cfHeight * scale; + cropper.crop.height = cropper.crop.height * cropper.crop.cfHeight * scale; + } + + // maxWidth on open + if (n.editor.cropper && (n.editor.cropper.maxWidth || n.editor.cropper.maxHeight)) { + if (n.editor.cropper.maxWidth) + cropper.crop.width = Math.min(n.editor.cropper.maxWidth * cropper.crop.cfWidth, cropper.crop.width); + if (n.editor.cropper.maxHeight) + cropper.crop.height = Math.min(n.editor.cropper.maxHeight * cropper.crop.cfHeight, cropper.crop.height); + + if ((!item.editor.crop || data == 'rotation') && data != 'resize') { + cropper.crop.left = (cropper.$template.width() - cropper.crop.width) / 2; + cropper.crop.top = (cropper.$template.height() - cropper.crop.height) / 2; + } + } + + // ratio on open + if ((!item.editor.crop || data == 'rotation') && (n.editor.cropper && n.editor.cropper.ratio && data != 'resize')) { + var ratio = n.editor.cropper.ratio, + ratioPx = f._assets.ratioToPx(cropper.crop.width, cropper.crop.height, ratio); + + if (ratioPx) { + cropper.crop.width = Math.min(cropper.crop.width, ratioPx[0]); + cropper.crop.left = (cropper.$template.width() - cropper.crop.width) / 2; + cropper.crop.height = Math.min(cropper.crop.height, ratioPx[1]); + cropper.crop.top = (cropper.$template.height() - cropper.crop.height) / 2; + } + } + + // draw editor + cropper.drawPlaceHolder(cropper.crop); + }, 400); + + // start and bind events + if (n.editor.cropper && n.editor.cropper.showGrid) + cropper.$editor.addClass('has-grid'); + cropper.$imageEl.attr('draggable', 'false'); + cropper.$template.on('mousedown touchstart', cropper.mousedown); + $(window).on('resize', cropper.resize); + + // register as changed + cropper.isCropping = true; + item.popup.editor.hasChanges = true; + }, + setDefaultData: function() { + var cropper = item.popup.editor.cropper, + $imageEl = cropper.$imageEl, + width = $imageEl.width(), + height = $imageEl.height(), + isInverted = item.popup.editor.rotation && [90,270].indexOf(item.popup.editor.rotation) > -1, + scale = item.popup.editor.scale || 1; + + // set default data + cropper.crop = { + left: 0, + top: 0, + width: isInverted ? height * scale : width, + height: isInverted ? width * scale : height, + cfWidth: width / item.reader.width, + cfHeight: height / item.reader.height + }; + + return null; + }, + hide: function(force) { + var cropper = item.popup.editor.cropper; + + // hide editor on force + if (force) { + cropper.$template.hide(); + cropper.$editor.hide(); + } + + // stop and unbind events + cropper.$imageEl.attr('draggable', ''); + cropper.$template.off('mousedown touchstart', cropper.mousedown); + $(window).off('resize', cropper.resize); + }, + resize: function(e) { + var cropper = item.popup.editor.cropper, + $imageEl = cropper.$imageEl; + + // only when image is visible + if ($imageEl.width() > 0) { + if (!e) { + // re-write cf + cropper.crop.cfWidth = $imageEl.width() / item.reader.width; + cropper.crop.cfHeight = $imageEl.height() / item.reader.height; + } else { + // resize $editor + cropper.$template.hide(); + clearTimeout(cropper._resizeTimeout); + cropper._resizeTimeout = setTimeout(function() { + delete cropper._resizeTimeout; + var cfWidth = $imageEl.width() / item.reader.width, + cfHeight = $imageEl.height() / item.reader.height; + + cropper.crop.left = cropper.crop.left / cropper.crop.cfWidth * cfWidth; + cropper.crop.width = cropper.crop.width / cropper.crop.cfWidth * cfWidth; + cropper.crop.top = cropper.crop.top / cropper.crop.cfHeight * cfHeight; + cropper.crop.height = cropper.crop.height / cropper.crop.cfHeight * cfHeight; + cropper.crop.cfWidth = cfWidth; + cropper.crop.cfHeight = cfHeight; + + cropper.init('resize'); + }, 500); + } + } + }, + drawPlaceHolder: function(css) { + var cropper = item.popup.editor.cropper, + rotation = item.popup.editor.rotation || 0, + scale = item.popup.editor.scale || 1, + translate = [0, 0]; + + if (!css) + return; + + // create new object + css = $.extend({}, css); + + // edit width, height and translate values by rotation + if (rotation) + translate = [rotation == 180 || rotation == 270 ? -100 : 0, rotation == 90 || rotation == 180 ? -100 : 0]; + + // draw cropping-area + cropper.$editor.css(css); + cropper.setAreaInfo(); + cropper.$editor.find('.area-image img').removeAttr('style').css({ + width: cropper.$imageEl.width(), + height: cropper.$imageEl.height(), + left: cropper.$editor.position().left * -1, + top: cropper.$editor.position().top * -1, + + '-webkit-transform': 'rotate('+ rotation +'deg) scale('+ scale +') translateX('+ translate[0] +'%) translateY('+ translate[1] +'%)', + '-moz-transform': 'rotate('+ rotation +'deg) scale('+ scale +') translateX('+ translate[0] +'%) translateY('+ translate[1] +'%)', + 'transform': 'rotate('+ rotation +'deg) scale('+ scale +') translateX('+ translate[0] +'%) translateY('+ translate[1] +'%)' + }); + }, + setAreaInfo: function(type) { + var cropper = item.popup.editor.cropper, + scale = item.popup.editor.scale || 1; + + cropper.$editor.find('.area-info').html((cropper.isResizing || type == 'size' ? [ + 'W: ' + Math.round(cropper.crop.width / cropper.crop.cfWidth / scale) + 'px', + ' ', + 'H: ' + Math.round(cropper.crop.height / cropper.crop.cfHeight / scale) + 'px'] : [ + 'X: ' + Math.round(cropper.crop.left / cropper.crop.cfWidth / scale) + 'px', + ' ', + 'Y: ' + Math.round(cropper.crop.top / cropper.crop.cfHeight / scale) + 'px']).join('')); + }, + mousedown: function(e) { + var eventType = e.originalEvent.touches && e.originalEvent.touches[0] ? 'touchstart' : 'mousedown', + $target = $(e.target), + cropper = item.popup.editor.cropper, + points = { + x: (eventType == 'mousedown' ? e.pageX : e.originalEvent.touches[0].pageX) - cropper.$template.offset().left, + y: (eventType == 'mousedown' ? e.pageY : e.originalEvent.touches[0].pageY) - cropper.$template.offset().top + }, + callback = function() { + // set current state + cropper.pointData = { + el: $target, + x: points.x, + y: points.y, + xEditor: points.x - cropper.crop.left, + yEditor: points.y - cropper.crop.top, + left: cropper.crop.left, + top: cropper.crop.top, + width: cropper.crop.width, + height: cropper.crop.height + }; + + // start cropping event + if (cropper.isMoving || cropper.isResizing) { + cropper.setAreaInfo('size'); + cropper.$editor.addClass('moving show-info'); + $('body').css({ + '-webkit-user-select': 'none', + '-moz-user-select': 'none', + '-ms-user-select': 'none', + 'user-select': 'none' + }); + + // bind window mousemove event + $(document).on('mousemove touchmove', cropper.mousemove); + } + }; + + if (item.popup.zoomer && item.popup.zoomer.hasSpacePressed) + return; + + // determinate cropping type + cropper.isMoving = $target.is('.area-move'); + cropper.isResizing = $target.is('.point'); + + // mousedown event + if (eventType == 'mousedown') { + // bind cropping start event + callback(); + } + + // touchstart event + if (eventType == 'touchstart' && e.originalEvent.touches.length == 1) { + if (cropper.isMoving || cropper.isResizing) + e.preventDefault(); + cropper.isTouchLongPress = true; + + // check if long press + setTimeout(function() { + if (!cropper.isTouchLongPress) + return; + delete cropper.isTouchLongPress; + callback(); + }, n.thumbnails.touchDelay ? n.thumbnails.touchDelay : 0); + } + + // bind window mouseup event + $(document).on('mouseup touchend', cropper.mouseup); + }, + mousemove: function(e) { + var eventType = e.originalEvent.touches && e.originalEvent.touches[0] ? 'touchstart' : 'mousedown', + $target = $(e.target), + cropper = item.popup.editor.cropper, + points = { + x: (eventType == 'mousedown' ? e.pageX : e.originalEvent.touches[0].pageX) - cropper.$template.offset().left, + y: (eventType == 'mousedown' ? e.pageY : e.originalEvent.touches[0].pageY) - cropper.$template.offset().top + }; + + if (e.originalEvent.touches && e.originalEvent.touches.length != 1) + return cropper.mouseup(e); + + // move + if (cropper.isMoving) { + var left = points.x - cropper.pointData.xEditor, + top = points.y - cropper.pointData.yEditor; + + // position + if (left + cropper.crop.width > cropper.$template.width()) + left = cropper.$template.width() - cropper.crop.width; + if (left < 0) + left = 0; + if (top + cropper.crop.height > cropper.$template.height()) + top = cropper.$template.height() - cropper.crop.height; + if (top < 0) + top = 0; + + // set position + cropper.crop.left = left; + cropper.crop.top = top; + } + + // resize + if (cropper.isResizing) { + var point = cropper.pointData.el.attr('class').substr("point point-".length), + lastWidth = cropper.crop.left + cropper.crop.width, + lastHeight = cropper.crop.top + cropper.crop.height, + minWidth = (n.editor.cropper && n.editor.cropper.minWidth || 0) * cropper.crop.cfWidth, + minHeight = (n.editor.cropper && n.editor.cropper.minHeight || 0) * cropper.crop.cfHeight, + maxWidth = (n.editor.cropper && n.editor.cropper.maxWidth) * cropper.crop.cfWidth, + maxHeight = (n.editor.cropper && n.editor.cropper.maxHeight) * cropper.crop.cfHeight, + ratio = n.editor.cropper ? n.editor.cropper.ratio : null, + ratioPx; + + // set minWidth if greater than image + if (minWidth > cropper.$template.width()) + minWidth = cropper.$template.width(); + if (minHeight > cropper.$template.height()) + minHeight = cropper.$template.height(); + + // set maxWidth if greater than image + if (maxWidth > cropper.$template.width()) + maxWidth = cropper.$template.width(); + if (maxHeight > cropper.$template.height()) + maxHeight = cropper.$template.height(); + + // points + if ((point == 'a' || point == 'b' || point == 'c') && !ratioPx) { + cropper.crop.top = points.y; + if (cropper.crop.top < 0) + cropper.crop.top = 0; + + cropper.crop.height = lastHeight - cropper.crop.top; + if (cropper.crop.top > cropper.crop.top + cropper.crop.height) { + cropper.crop.top = lastHeight; + cropper.crop.height = 0; + } + + // minHeight + if (cropper.crop.height < minHeight) { + cropper.crop.top = lastHeight - minHeight; + cropper.crop.height = minHeight; + } + // maxHeight + if (cropper.crop.height > maxHeight) { + cropper.crop.top = lastHeight - maxHeight; + cropper.crop.height = maxHeight; + } + + // ratio + ratioPx = ratio ? f._assets.ratioToPx(cropper.crop.width, cropper.crop.height, ratio) : null; + if (ratioPx) { + cropper.crop.width = ratioPx[0]; + + if (point == 'a' || point == 'b') + cropper.crop.left = Math.max(0, cropper.pointData.left + ((cropper.pointData.width - cropper.crop.width) / (point == 'b' ? 2 : 1))); + + // check + if (cropper.crop.left + cropper.crop.width > cropper.$template.width()) { + var newWidth = cropper.$template.width() - cropper.crop.left; + + cropper.crop.width = newWidth; + cropper.crop.height = newWidth / ratioPx[2] * ratioPx[3]; + cropper.crop.top = lastHeight - cropper.crop.height; + } + } + } + if ((point == 'e' || point == 'f' || point == 'g') && !ratioPx) { + cropper.crop.height = points.y - cropper.crop.top; + if (cropper.crop.height + cropper.crop.top > cropper.$template.height()) + cropper.crop.height = cropper.$template.height() - cropper.crop.top; + + // minHeight + if (cropper.crop.height < minHeight) + cropper.crop.height = minHeight; + // maxHeight + if (cropper.crop.height > maxHeight) + cropper.crop.height = maxHeight; + + // ratio + ratioPx = ratio ? f._assets.ratioToPx(cropper.crop.width, cropper.crop.height, ratio) : null; + if (ratioPx) { + cropper.crop.width = ratioPx[0]; + + if (point == 'f' || point == 'g') + cropper.crop.left = Math.max(0, cropper.pointData.left + ((cropper.pointData.width - cropper.crop.width) / (point == 'f' ? 2 : 1))); + + // check + if (cropper.crop.left + cropper.crop.width > cropper.$template.width()) { + var newWidth = cropper.$template.width() - cropper.crop.left; + + cropper.crop.width = newWidth; + cropper.crop.height = newWidth / ratioPx[2] * ratioPx[3]; + } + } + } + if ((point == 'c' || point == 'd' || point == 'e') && !ratioPx) { + cropper.crop.width = points.x - cropper.crop.left; + if (cropper.crop.width + cropper.crop.left > cropper.$template.width()) + cropper.crop.width = cropper.$template.width() - cropper.crop.left; + + // minWidth + if (cropper.crop.width < minWidth) + cropper.crop.width = minWidth; + // maxWidth + if (cropper.crop.width > maxWidth) + cropper.crop.width = maxWidth; + + // ratio + ratioPx = ratio ? f._assets.ratioToPx(cropper.crop.width, cropper.crop.height, ratio) : null; + if (ratioPx) { + cropper.crop.height = ratioPx[1]; + + if (point == 'c' || point == 'd') + cropper.crop.top = Math.max(0, cropper.pointData.top + ((cropper.pointData.height - cropper.crop.height) / (point == 'd' ? 2 : 1))); + + // check + if (cropper.crop.top + cropper.crop.height > cropper.$template.height()) { + var newHeight = cropper.$template.height() - cropper.crop.top; + + cropper.crop.height = newHeight; + cropper.crop.width = newHeight / ratioPx[3] * ratioPx[2]; + } + } + } + if ((point == 'a' || point == 'g' || point == 'h') && !ratioPx) { + cropper.crop.left = points.x; + if (cropper.crop.left > cropper.$template.width()) + cropper.crop.left = cropper.$template.width(); + if (cropper.crop.left < 0) + cropper.crop.left = 0; + + cropper.crop.width = lastWidth - cropper.crop.left; + if (cropper.crop.left > cropper.crop.left + cropper.crop.width) { + cropper.crop.left = lastWidth; + cropper.crop.width = 0; + } + + // minWidth + if (cropper.crop.width < minWidth) { + cropper.crop.left = lastWidth - minWidth; + cropper.crop.width = minWidth; + } + // maxWidth + if (cropper.crop.width > maxWidth) { + cropper.crop.left = lastWidth - maxWidth; + cropper.crop.width = maxWidth; + } + + // ratio + ratioPx = ratio ? f._assets.ratioToPx(cropper.crop.width, cropper.crop.height, ratio) : null; + if (ratioPx) { + cropper.crop.height = ratioPx[1]; + + if (point == 'a' || point == 'h') + cropper.crop.top = Math.max(0, cropper.pointData.top + ((cropper.pointData.height - cropper.crop.height) / (point == 'h' ? 2 : 1))); + + // check + if (cropper.crop.top + cropper.crop.height > cropper.$template.height()) { + var newHeight = cropper.$template.height() - cropper.crop.top; + + cropper.crop.height = newHeight; + cropper.crop.width = newHeight / ratioPx[3] * ratioPx[2]; + cropper.crop.left = lastWidth - cropper.crop.width; + } + } + } + } + + // draw cropping-area + cropper.drawPlaceHolder(cropper.crop); + }, + mouseup: function(e) { + var cropper = item.popup.editor.cropper; + + // check if empty area + if (cropper.$editor.width() == 0 || cropper.$editor.height() == 0) + cropper.init(cropper.setDefaultData()); + + // clear + delete cropper.isTouchLongPress; + delete cropper.isMoving; + delete cropper.isResizing; + cropper.$editor.removeClass('moving show-info'); + $('body').css({ + '-webkit-user-select': '', + '-moz-user-select': '', + '-ms-user-select': '', + 'user-select': '' + }); + + // unbind window events + $(document).off('mousemove touchmove', cropper.mousemove); + $(document).off('mouseup touchend', cropper.mouseup); + } + }; + + // init cropper tool + item.popup.editor.cropper.init(); + } else { + if (data) + item.popup.editor.cropper.crop = data; + item.popup.editor.cropper.init(data); + } + } + }, + + /** + * resize + * resize a canvas image + * + * @namespace editor + * @param {HTML} img + * @param {HTML} canvas + * @param {Number} width - new width + * @param {Number} height - new height + * @param {Boolean} alpha - enable transparency on resize (!not available on smooth resize) + * @param {Boolean} fixedSize - fixed canvas size + * @void + */ + resize: function(img, canvas, width, height, alpha, fixedSize) { + var context = canvas.getContext('2d'), + width = !width && height ? height * img.width / img.height : width, + height = !height && width ? width * img.height / img.width : height, + ratio = img.width / img.height, + optimalWidth = ratio >= 1 ? width : height * ratio, + optimalHeight = ratio < 1 ? height : width / ratio; + + if (fixedSize && optimalWidth < width) { + optimalHeight = optimalHeight * (width/optimalWidth); + optimalWidth = width; + } + if (fixedSize && optimalHeight < height) { + optimalWidth = optimalWidth * (height/optimalHeight); + optimalHeight = height; + } + + var steps = Math.min(Math.ceil(Math.log(img.width / optimalWidth) / Math.log(2)), 12); + canvas.width = optimalWidth; + canvas.height = optimalHeight; + + // if image is smaller than canvas or there are no resizing steps + if (img.width < canvas.width || img.height < canvas.height || steps < 2) { + // set canvas size as image size if size is not fixed + if (!fixedSize) { + canvas.width = Math.min(img.width, canvas.width); + canvas.height = Math.min(img.height, canvas.height); + } + + // alight image to center + var x = img.width < canvas.width ? (canvas.width - img.width)/2 : 0, + y = img.height < canvas.height ? (canvas.height - img.height)/2 : 0; + + // draw image + if (!alpha) { + context.fillStyle = "#fff"; + context.fillRect(0, 0, canvas.width, canvas.height); + } + context.drawImage(img, x, y, Math.min(img.width, canvas.width), Math.min(img.height, canvas.height)); + } else { + var oc = document.createElement('canvas'), + octx = oc.getContext('2d'), + factor = 2; + + // smooth resize + oc.width = img.width/factor; + oc.height = img.height/factor; + octx.fillStyle = "#fff"; + octx.fillRect(0, 0, oc.width, oc.height); + octx.drawImage(img, 0, 0, oc.width, oc.height); + while(steps > 2) { + var factor2 = factor + 2, + widthFactor = img.width/factor, + heightFactor = img.height/factor; + + if (widthFactor > oc.width) + widthFactor = oc.width; + if (heightFactor > oc.height) + heightFactor = oc.height; + + octx.drawImage(oc, 0, 0, widthFactor, heightFactor, 0, 0, img.width/factor2, img.height/factor2); + factor = factor2; + steps--; + } + + // draw image + var widthFactor = img.width/factor, + heightFactor = img.height/factor; + + if (widthFactor > oc.width) + widthFactor = oc.width; + if (heightFactor > oc.height) + heightFactor = oc.height; + + context.drawImage(oc, 0, 0, widthFactor, heightFactor, 0, 0, optimalWidth, optimalHeight); + + oc = octx = null; + } + + context = null; + }, + + zoomer: function(item) { + var inPopup = item.popup && item.popup.html && $('html').find(item.popup.html).length; + + if (!inPopup) + return; + + if (!item.popup.zoomer) { + var $popup = item.popup.html, + $node = $popup.find('.fileuploader-popup-node'), + $readerNode = $node.find('.reader-node'), + $imageEl = $readerNode.find('> img').attr('draggable', 'false').attr('ondragstart', 'return false;'); + + item.popup.zoomer = { + html: $popup.find('.fileuploader-popup-zoomer'), + isActive: item.format == 'image' && item.reader.node && n.thumbnails.popup.zoomer, + scale: 100, + zoom: 100, + + init: function() { + var zoomer = this; + + // disable plugin no images and IE + if (!zoomer.isActive || f._assets.isIE() || f._assets.isMobile()) + return zoomer.html.hide() && $node.addClass('has-node-centered'); + + // init + zoomer.hide(); + zoomer.resize(); + + $(window).on('resize', zoomer.resize); + $(window).on('keyup keydown', zoomer.keyPress); + zoomer.html.find('input').on('input change', zoomer.range); + $readerNode.on('mousedown touchstart', zoomer.mousedown); + $node.on('mousewheel DOMMouseScroll', zoomer.scroll); + }, + hide: function() { + var zoomer = this; + + $(window).off('resize', zoomer.resize); + $(window).off('keyup keydown', zoomer.keyPress); + zoomer.html.find('input').off('input change', zoomer.range); + $readerNode.off('mousedown', zoomer.mousedown); + $node.off('mousewheel DOMMouseScroll', zoomer.scroll); + }, + center: function(prevDimensions) { + var zoomer = this, + left = 0, + top = 0; + + if (!prevDimensions) { + left = Math.round(($node.width() - $readerNode.width()) / 2); + top = Math.round(($node.height() - $readerNode.height()) / 2); + } else { + left = zoomer.left; + top = zoomer.top; + + left -= (($node.width() / 2 - zoomer.left) * (($readerNode.width()/prevDimensions[0])-1)); + top -= (($node.height() / 2 - zoomer.top) * (($readerNode.height()/prevDimensions[1])-1)); + + if ($readerNode.width() <= $node.width()) + left = Math.round(($node.width() - $readerNode.width()) / 2); + if ($readerNode.height() <= $node.height()) + top = Math.round(($node.height() - $readerNode.height()) / 2); + + if ($readerNode.width() > $node.width()) { + if (left > 0) + left = 0; + else if (left + $readerNode.width() < $node.width()) + left = $node.width() - $readerNode.width(); + } + if ($readerNode.height() > $node.height()) { + if (top > 0) + top = 0; + else if (top + $readerNode.height() < $node.height()) + top = $node.height() - $readerNode.height(); + } + + top = Math.min(top, 0); + } + + // set styles + $readerNode.css({ + left: (zoomer.left = left) + 'px', + top: (zoomer.top = top) + 'px', + width: $readerNode.width(), + height: $readerNode.height() + }); + }, + resize: function() { + var zoomer = item.popup.zoomer; + + $node.removeClass('is-zoomed'); + $readerNode.removeAttr('style'); + zoomer.scale = zoomer.getImageScale(); + zoomer.updateView(); + }, + range: function(e) { + var zoomer = item.popup.zoomer, + $input = $(this), + val = parseFloat($input.val()); + + if (zoomer.scale >= 100) { + e.preventDefault(); + $input.val(zoomer.scale); + return; + } + + if (val < zoomer.scale) { + e.preventDefault(); + val = zoomer.scale; + $input.val(val); + } + + zoomer.updateView(val, true); + }, + scroll: function(e) { + var zoomer = item.popup.zoomer, + delta = -100; + + if (e.originalEvent) { + if (e.originalEvent.wheelDelta) + delta = e.originalEvent.wheelDelta / -40; + if (e.originalEvent.deltaY) + delta = e.originalEvent.deltaY; + if (e.originalEvent.detail) + delta = e.originalEvent.detail; + } + + zoomer[delta < 0 ? 'zoomIn' : 'zoomOut'](3); + }, + keyPress: function(e) { + var zoomer = item.popup.zoomer, + type = e.type, + key = e.keyCode || e.which; + + if (key != 32) + return; + + zoomer.hasSpacePressed = type == 'keydown'; + + if (zoomer.hasSpacePressed && zoomer.isZoomed()) + $readerNode.addClass('is-amoving'); + else + $readerNode.removeClass('is-amoving'); + }, + mousedown: function(e) { + var zoomer = item.popup.zoomer, + $target = $(e.target), + eventType = e.originalEvent.touches && e.originalEvent.touches[0] ? 'touchstart' : 'mousedown', + points = { + x: eventType == 'mousedown' ? e.pageX : e.originalEvent.touches[0].pageX, + y: eventType == 'mousedown' ? e.pageY : e.originalEvent.touches[0].pageY + }, + callback = function() { + // set current state + zoomer.pointData = { + x: points.x, + y: points.y, + xTarget: points.x - zoomer.left, + yTarget: points.y - zoomer.top, + }; + + $('body').css({ + '-webkit-user-select': 'none', + '-moz-user-select': 'none', + '-ms-user-select': 'none', + 'user-select': 'none' + }); + + $readerNode.addClass('is-moving'); + + // bind window mousemove event + $(document).on('mousemove', zoomer.mousemove); + }; + + if (e.which != 1) + return; + + if (zoomer.scale == 100 || zoomer.zoom == zoomer.scale) + return; + + // check e.target + if (!zoomer.hasSpacePressed && $target[0] != $imageEl[0] && !$target.is('.fileuploader-cropper')) + return; + + // mousedown event + if (eventType == 'mousedown') { + callback(); + } + + // touchstart event + if (eventType == 'touchstart') { + zoomer.isTouchLongPress = true; + + // check if long press + setTimeout(function() { + if (!zoomer.isTouchLongPress) + return; + delete zoomer.isTouchLongPress; + callback(); + }, n.thumbnails.touchDelay ? n.thumbnails.touchDelay : 0); + } + + // bind window mouseup event + $(document).on('mouseup touchend', zoomer.mouseup); + }, + mousemove: function(e) { + var zoomer = item.popup.zoomer, + eventType = e.originalEvent.touches && e.originalEvent.touches[0] ? 'touchstart' : 'mousedown', + points = { + x: eventType == 'mousedown' ? e.pageX : e.originalEvent.touches[0].pageX, + y: eventType == 'mousedown' ? e.pageY : e.originalEvent.touches[0].pageY + }, + left = points.x - zoomer.pointData.xTarget, + top = points.y - zoomer.pointData.yTarget; + + // fix the positon + if (top > 0) + top = 0; + if (top < $node.height() - $readerNode.height()) + top = $node.height() - $readerNode.height(); + if ($readerNode.height() < $node.height()) { + top = $node.height()/2 - $readerNode.height()/2; + } + if ($readerNode.width() > $node.width()) { + if (left > 0) + left = 0; + if (left < $node.width() - $readerNode.width()) + left = $node.width() - $readerNode.width(); + } else { + left = $node.width()/2 - $readerNode.width()/2; + } + + // set styles + $readerNode.css({ + left: (zoomer.left = left) + 'px', + top: (zoomer.top = top) + 'px' + }); + }, + mouseup: function(e) { + var zoomer = item.popup.zoomer; + + delete zoomer.pointData; + $('body').css({ + '-webkit-user-select': '', + '-moz-user-select': '', + '-ms-user-select': '', + 'user-select': '' + }); + + $readerNode.removeClass('is-moving'); + + $(document).off('mousemove', zoomer.mousemove); + $(document).off('mouseup', zoomer.mouseup); + + }, + zoomIn: function(val) { + var zoomer = item.popup.zoomer, + step = val || 20; + + if (zoomer.zoom >= 100) + return; + + zoomer.zoom = Math.min(100, zoomer.zoom + step); + zoomer.updateView(zoomer.zoom); + }, + zoomOut: function(val) { + var zoomer = item.popup.zoomer, + step = val || 20; + + if (zoomer.zoom <= zoomer.scale) + return; + + zoomer.zoom = Math.max(zoomer.scale, zoomer.zoom - step); + zoomer.updateView(zoomer.zoom); + }, + updateView: function(val, input) { + var zoomer = this, + width = zoomer.getImageSize().width / 100 * val, + height = zoomer.getImageSize().height / 100 * val, + curWidth = $readerNode.width(), + curHeight = $readerNode.height(), + valueChanged = val && val != zoomer.scale; + + if (!zoomer.isActive) + return zoomer.center(); + + if (valueChanged) { + $node.addClass('is-zoomed'); + $readerNode.addClass('is-movable').css({ + width: width + 'px', + height: height + 'px', + maxWidth: 'none', + maxHeight: 'none' + }); + } else { + $node.removeClass('is-zoomed'); + $readerNode.removeClass('is-movable is-amoving').removeAttr('style'); + } + + zoomer.zoom = val || zoomer.scale; + zoomer.center(valueChanged ? [curWidth, curHeight, zoomer.left, zoomer.top] : null); + + zoomer.html.find('span').html(zoomer.zoom + '%'); + + if (!input) + zoomer.html.find('input').val(zoomer.zoom); + + if (val && item.popup.editor && item.popup.editor.cropper) + item.popup.editor.cropper.resize(true); + }, + isZoomed: function() { + var zoomer = this; + + return zoomer.zoom > zoomer.scale; + }, + getImageSize: function() { + var zoomer = this; + + return { + width: $imageEl.prop('naturalWidth'), + height: $imageEl.prop('naturalHeight') + }; + }, + getImageScale: function() { + var zoomer = this; + + return Math.round(100 / ($imageEl.prop('naturalWidth') / $imageEl.width())); + } + }; + } + + item.popup.zoomer.init(); + }, + + /** + * save + * save edited image + * show cropping tools, only when popup is enabled + * + * @namespace editor + * @param {Object} item + * @void + */ + save: function(item, toBlob, mimeType, callback, preventThumbnailRender) { + var inPopup = item.popup && item.popup.html && $('html').find(item.popup.html).length, + image = new Image(), + onload = function() { + if (!item.reader.node) + return; + + // update thumbnail + var canvas = document.createElement('canvas'), + ctx = canvas.getContext('2d'), + image = this, + rotationCf = [0, 180]; + + // set canvas size and image + canvas.width = item.reader.width; + canvas.height = item.reader.height; + ctx.drawImage(image, 0, 0, item.reader.width, item.reader.height); + + // rotate image + if (typeof item.editor.rotation != 'undefined') { + item.editor.rotation = item.editor.rotation || 0; + + canvas.width = rotationCf.indexOf(item.editor.rotation) > -1 ? item.reader.width : item.reader.height; + canvas.height = rotationCf.indexOf(item.editor.rotation) > -1 ? item.reader.height : item.reader.width; + + var angle = item.editor.rotation*Math.PI/180, + cw = canvas.width * 0.5, + ch = canvas.height * 0.5; + + // clear context + ctx.clearRect(0, 0, canvas.width, canvas.height); + + // rotate context + ctx.translate(cw, ch); + ctx.rotate(angle); + ctx.translate(-item.reader.width * 0.5, -item.reader.height * 0.5); + + // draw image and reset transform + ctx.drawImage(image, 0, 0); + ctx.setTransform(1, 0, 0, 1, 0, 0); + } + + // crop image + if (item.editor.crop) { + var cut = ctx.getImageData(item.editor.crop.left, item.editor.crop.top, item.editor.crop.width, item.editor.crop.height); + + canvas.width = item.editor.crop.width; + canvas.height = item.editor.crop.height; + + // put image + ctx.putImageData(cut, 0, 0); + } + + // export image + var type = mimeType || item.type || 'image/jpeg', + quality = n.editor.quality || 90, + exportDataURI = canvas.toDataURL(type, quality/100), + nextStep = function(exportDataURI, img) { + var data = !toBlob ? exportDataURI : f._assets.dataURItoBlob(exportDataURI, type); + + !preventThumbnailRender ? f.thumbnails.renderThumbnail(item, true, img || exportDataURI) : null; + callback ? callback(data, item, l, p, o, s) : null; + n.editor.onSave != null && typeof n.editor.onSave == "function" ? n.editor.onSave(data, item, l, p, o, s) : null; + f.set('listInput', null); + }; + + // resize image if maxWidth + if (n.editor.maxWidth || n.editor.maxHeight) { + var img = new Image(); + + img.src = exportDataURI; + img.onload = function() { + var canvas2 = document.createElement('canvas'); + + // resize canvas + f.editor.resize(img, canvas2, n.editor.maxWidth, n.editor.maxHeight, true, false); + + exportDataURI = canvas2.toDataURL(type, quality/100); + nextStep(exportDataURI, img); + canvas = ctx = canvas2 = null; + }; + } else { + nextStep(exportDataURI); + canvas = ctx = null; + } + }; + + if (inPopup) { + if (!item.popup.editor.hasChanges) + return; + + var scale = item.popup.editor.scale || 1; + + item.editor.rotation = item.popup.editor.rotation || 0; + if (item.popup.editor.cropper) { + item.editor.crop = item.popup.editor.cropper.crop; + + item.editor.crop.width = item.editor.crop.width / item.popup.editor.cropper.crop.cfWidth / scale; + item.editor.crop.left = item.editor.crop.left / item.popup.editor.cropper.crop.cfWidth / scale; + item.editor.crop.height = item.editor.crop.height / item.popup.editor.cropper.crop.cfHeight / scale; + item.editor.crop.top = item.editor.crop.top / item.popup.editor.cropper.crop.cfHeight / scale; + } + } + + if (f._assets.isMobile()) { + image.onload = onload; + image.src = item.reader.src; + } else if(item.reader.node) { + onload.call(item.reader.node); + } else { + item.reader.read(function() { + onload.call(item.reader.node); + }); + } + } + }, + + /** + * @namespace sorter + */ + sorter: { + init: function() { + p.on('mousedown touchstart', n.thumbnails._selectors.sorter, f.sorter.mousedown); + }, + destroy: function() { + p.off('mousedown touchstart', n.thumbnails._selectors.sorter, f.sorter.mousedown); + }, + findItemAtPos: function(points) { + var sort = f.sorter.sort, + $list = sort.items.not(sort.item.html), + $item = null; + + $list.each(function(i, el) { + var $el = $(el); + + if (points.x > $el.offset().left && points.x < $el.offset().left + $el.outerWidth() && + points.y > $el.offset().top && points.y < $el.offset().top + $el.outerHeight()) { + $item = $el; + return false; + } + }); + + return $item; + }, + mousedown: function(e) { + var eventType = e.originalEvent.touches && e.originalEvent.touches[0] ? 'touchstart' : 'mousedown', + $target = $(e.target), + $item = $target.closest(n.thumbnails._selectors.item), + item = f.files.find($item), + points = { + x: eventType == 'mousedown' || !$item.length ? e.pageX : e.originalEvent.touches[0].pageX, + y: eventType == 'mousedown' || !$item.length ? e.pageY : e.originalEvent.touches[0].pageY + }, + callback = function() { + // set current state + f.sorter.sort = { + el: $target, + item: item, + items: l.find(n.thumbnails._selectors.item), + x: points.x, + y: points.y, + xItem: points.x - $item.offset().left, + yItem: points.y - $item.offset().top, + left: $item.position().left, + top: $item.position().top, + width: $item.outerWidth(), + height: $item.outerHeight(), + placeholder: n.sorter.placeholder ? $(n.sorter.placeholder) : item.html.clone().addClass('fileuploader-sorter-placeholder').html('') + }; + + // disable user-select + $('body').css({ + '-webkit-user-select': 'none', + '-moz-user-select': 'none', + '-ms-user-select': 'none', + 'user-select': 'none' + }); + + // bind window mousemove event + $(document).on('mousemove touchmove', f.sorter.mousemove); + }; + + e.preventDefault(); + + // off + if (f.sorter.sort) + f.sorter.mouseup(); + + // prevent if there is no item + if (!item) + return; + + // prevent if target is selectorExclude + if (n.sorter.selectorExclude && ($target.is(n.sorter.selectorExclude) || $target.closest(n.sorter.selectorExclude).length)) + return; + + // preventDefault(); + $(n.thumbnails._selectors.sorter).on('click drop dragend dragleave dragover dragenter dragstart touchstart touchmove touchend touchcancel', function(e){ e.preventDefault(); }); + + // mousedown event + if (eventType == 'mousedown') { + // bind cropping start event + callback(); + } + + // touchstart event + if (eventType == 'touchstart') { + f.sorter.isTouchLongPress = true; + + // check if long press + setTimeout(function() { + if (!f.sorter.isTouchLongPress) + return; + + delete f.sorter.isTouchLongPress; + callback(); + }, n.thumbnails.touchDelay ? n.thumbnails.touchDelay : 0); + } + + // bind window mouseup event + $(document).on('mouseup touchend', f.sorter.mouseup); + }, + mousemove: function(e) { + var eventType = e.originalEvent.touches && e.originalEvent.touches[0] ? 'touchstart' : 'mousedown', + sort = f.sorter.sort, + item = sort.item, + $list = l.find(n.thumbnails._selectors.item), + $container = $(n.sorter.scrollContainer || window), + scroll = { + left: $(document).scrollLeft(), + top: $(document).scrollTop(), + containerLeft: $container.scrollLeft(), + containerTop: $container.scrollTop() + }, + points = { + x: eventType == 'mousedown' ? e.clientX : e.originalEvent.touches[0].clientX, + y: eventType == 'mousedown' ? e.clientY : e.originalEvent.touches[0].clientY + }; + + e.preventDefault(); + + // drag + var left = points.x - sort.xItem, + top = points.y - sort.yItem, + leftContainer = points.x - ($container.prop('offsetLeft') || 0), + topContainer = points.y - ($container.prop('offsetTop') || 0); + + // fix position + if (left + sort.xItem > $container.width()) + left = $container.width() - sort.xItem; + if (left + sort.xItem < 0) + left = 0 - sort.xItem; + if (top + sort.yItem > $container.height()) + top = $container.height() - sort.yItem; + if (top + sort.yItem < 0) + top = 0 - sort.yItem; + + // scroll + if (topContainer <= 0) + $container.scrollTop(scroll.containerTop - 10); + if (topContainer > $container.height()) + $container.scrollTop(scroll.containerTop + 10); + if (leftContainer < 0) + $container.scrollLeft(scroll.containerLeft - 10); + if (leftContainer > $container.width()) + $container.scrollLeft(scroll.containerLeft + 10); + + // set style + item.html.addClass('sorting').css({ + position: 'fixed', + left: left, + top: top, + width: f.sorter.sort.width, + height: f.sorter.sort.height + }); + + // position placeholder + if (!l.find(sort.placeholder).length) + item.html.after(sort.placeholder); + sort.placeholder.css({ + width: f.sorter.sort.width, + height: f.sorter.sort.height, + }); + + // set new position + var $hoverEl = f.sorter.findItemAtPos({x: left + sort.xItem + scroll.left, y: top + sort.yItem + scroll.top}); + if ($hoverEl) { + // prevent drag issue + var directionX = sort.placeholder.offset().left != $hoverEl.offset().left, + directionY = sort.placeholder.offset().top != $hoverEl.offset().top; + if (f.sorter.sort.lastHover) { + if (f.sorter.sort.lastHover.el == $hoverEl[0]) { + if (directionY && f.sorter.sort.lastHover.direction == 'before' && points.y < f.sorter.sort.lastHover.y) + return; + if (directionY && f.sorter.sort.lastHover.direction == 'after' && points.y > f.sorter.sort.lastHover.y) + return; + + if (directionX && f.sorter.sort.lastHover.direction == 'before' && points.x < f.sorter.sort.lastHover.x) + return; + if (directionX && f.sorter.sort.lastHover.direction == 'after' && points.x > f.sorter.sort.lastHover.x) + return; + } + } + + // insert element before/after in HTML + var index = $list.index(item.html), + hoverIndex = $list.index($hoverEl), + direction = index > hoverIndex ? 'before' : 'after'; + + $hoverEl[direction](sort.placeholder); + $hoverEl[direction](item.html); + + // save last hover data + f.sorter.sort.lastHover = { + el: $hoverEl[0], + x: points.x, + y: points.y, + direction: direction + }; + } + }, + mouseup: function() { + var sort = f.sorter.sort, + item = sort.item; + + // clear + $('body').css({ + '-webkit-user-select': '', + '-moz-user-select': '', + '-ms-user-select': '', + 'user-select': '' + }); + + item.html.removeClass('sorting').css({ + position: '', + left: '', + top: '', + width: '', + height: '' + }); + + $(document).off('mousemove touchmove', f.sorter.mousemove); + $(document).off('mouseup touchend', f.sorter.mouseup); + + sort.placeholder.remove(); + delete f.sorter.sort; + f.sorter.save(); + }, + save: function(isFromList) { + var index = 0, + list = [], + cachedList = [], + items = isFromList ? f._itFl : (n.thumbnails.itemPrepend) ? l.children().get().reverse() : l.children(), + hasChanges; + + // set index for all files + $.each(items, function(i, el) { + var item = el.file ? el : f.files.find($(el)); + + if (item) { + // continue if not uploaded + if (item.upload && !item.uploaded) + return; + + // check for changes + if (f.rendered && item.index != index && ((f._itSl && f._itSl.indexOf(item.id) != index) || true)) + hasChanges = true; + + item.index = index; + list.push(item); + cachedList.push(item.id); + index++; + } + }); + + // check for changes + if (f._itSl && f._itSl.length != cachedList.length) + hasChanges = true; + f._itSl = cachedList; + + // replace list + if (hasChanges && list.length == f._itFl.length) + f._itFl = list; + + // update listInput + if (!isFromList) + f.set('listInput', 'ignoreSorter'); + + // onSort callback + hasChanges && n.sorter.onSort != null && typeof n.sorter.onSort == "function" ? n.sorter.onSort(list, l, p, o, s) : null; + } + }, + + /** + * @namespace upload + */ + upload: { + /** + * prepare + * prepare item ajax data and also item ajax methods + * + * @namespace upload + * @param {Object} item + * @param {bool} force_send - force ajax sending after prepare + * @void + */ + prepare: function(item, force_send) { + // create item upload object + item.upload = { + url: n.upload.url, + data: $.extend({}, n.upload.data), + formData: new FormData(), + type: n.upload.type || 'POST', + enctype: n.upload.enctype || 'multipart/form-data', + cache: false, + contentType: false, + processData: false, + chunk: item.upload ? item.upload.chunk : null, + + status: null, + send: function() { + f.upload.send(item, true); + }, + cancel: function(isFromRemove) { + f.upload.cancel(item, isFromRemove); + } + }; + + // add file to formData + item.upload.formData.append(s.attr('name'), item.file, (item.name ? item.name : false)); + + if (n.upload.start || force_send) + f.upload.send(item, force_send); + }, + /** + * send + * send item ajax + * + * @namespace upload + * @param {Object} item + * @param {bool} force_send - skip the synchron functions and force ajax sending + * @void + */ + send: function(item, force_send) { + // skip if upload settings were not prepared + // only made for safety + if (!item.upload) + return; + + var setItemUploadStatus = function(status) { + if (item.html) + item.html.removeClass('upload-pending upload-loading upload-cancelled upload-failed upload-successful').addClass('upload-' + (status || item.upload.status)); + }, + loadNextItem = function() { + var i = 0; + + if (f._pfuL.length > 0) { + f._pfuL.indexOf(item) > -1 ? f._pfuL.splice(f._pfuL.indexOf(item), 1) : null; + while (i < f._pfuL.length) { + if (f._itFl.indexOf(f._pfuL[i]) > -1 && f._pfuL[i].upload && !f._pfuL[i].upload.$ajax) { + f.upload.send(f._pfuL[i], true); + break; + } else { + f._pfuL.splice(i, 1); + } + i++; + } + } + }; + + // synchron upload + if (n.upload.synchron && !item.upload.chunk) { + // add pending status to item + item.upload.status = 'pending'; + if (item.html) + setItemUploadStatus(); + + // check pending list + if (force_send) { + f._pfuL.indexOf(item) > -1 ? f._pfuL.splice(f._pfuL.indexOf(item), 1) : null; + } else { + f._pfuL.indexOf(item) == -1 ? f._pfuL.push(item) : null; + if (f._pfuL.length > 1) { + return; + } + } + } + + // chunk upload + if (n.upload.chunk && item.file.slice) { + var chunkSize = f._assets.toBytes(n.upload.chunk), + chunks = Math.ceil(item.size/chunkSize, chunkSize); + + if (chunks > 1 && !item.upload.chunk) + item.upload.chunk = { + name: item.name, + size: item.file.size, + type: item.file.type, + chunkSize: chunkSize, + temp_name: item.name, + + loaded: 0, + total: chunks, + i: -1 + }; + + if (item.upload.chunk) { + item.upload.chunk.i++; + delete item.upload.chunk.isFirst; + delete item.upload.chunk.isLast; + if (item.upload.chunk.i == 0) + item.upload.chunk.isFirst = true; + if (item.upload.chunk.i == item.upload.chunk.total - 1) + item.upload.chunk.isLast = true; + + if (item.upload.chunk.i <= item.upload.chunk.total - 1) { + var offset = item.upload.chunk.i * item.upload.chunk.chunkSize, + filePart = item.file.slice(offset, offset + item.upload.chunk.chunkSize); + + item.upload.formData = new FormData(); + item.upload.formData.append(s.attr('name'), filePart); + item.upload.data._chunkedd = JSON.stringify(item.upload.chunk); + } else { + delete item.upload.chunk; + } + } + } + + // upload.beforeSend callback + if (n.upload.beforeSend && $.isFunction(n.upload.beforeSend) && n.upload.beforeSend(item, l, p, o, s) === false) { + delete item.upload.chunk; + setItemUploadStatus(); + loadNextItem(); + return; + } + + // add uploading class to parent element + p.addClass('fileuploader-is-uploading'); + + // add loading status to item + if (item.upload.$ajax) + item.upload.$ajax.abort(); + delete item.upload.$ajax; + delete item.upload.send; + item.upload.status = 'loading'; + if (item.html) { + if (n.thumbnails._selectors.start) + item.html.find(n.thumbnails._selectors.start).remove(); + setItemUploadStatus(); + } + + // add upload data to formData + if (item.upload.data) { + for (var k in item.upload.data) { + if (!item.upload.data.hasOwnProperty(k)) + continue; + item.upload.formData.append(k, item.upload.data[k]); + } + } + + item.upload.data = item.upload.formData; + item.upload.xhr = function() { + var xhr = $.ajaxSettings.xhr(), + xhrStartedAt = item.upload.chunk && item.upload.chunk.xhrStartedAt ? item.upload.chunk.xhrStartedAt : new Date(); + + if (xhr.upload) { + xhr.upload.addEventListener("progress", function(e) { + if (item.upload.$ajax) { + item.upload.$ajax.total = item.upload.chunk ? item.upload.chunk.size : e.total; + item.upload.$ajax.xhrStartedAt = xhrStartedAt; + } + f.upload.progressHandling(e, item, xhrStartedAt); + }, false); + } + return xhr; + }; + item.upload.complete = function(jqXHR, textStatus) { + if (item.upload.chunk && !item.upload.chunk.isLast && textStatus == 'success') + return f.upload.prepare(item, true); + loadNextItem(); + + var g = true; + $.each(f._itFl, function(i, a) { + if (a.upload && a.upload.$ajax) + g = false; + }); + if (g) { + p.removeClass('fileuploader-is-uploading'); + n.upload.onComplete != null && typeof n.upload.onComplete == "function" ? n.upload.onComplete(l, p, o, s, jqXHR, textStatus) : null; + } + }; + item.upload.success = function(data, textStatus, jqXHR) { + if (item.upload.chunk && !item.upload.chunk.isLast) { + try { + var json = JSON.parse(data); + + item.upload.chunk.temp_name = json.fileuploader.temp_name; + } catch (e) { } + return; + } + delete item.upload.chunk; + f.upload.progressHandling(null, item, item.upload.$ajax.xhrStartedAt, true); + item.uploaded = true; + delete item.upload; + item.upload = {status: 'successful', resend: function() { f.upload.retry(item); }}; + + if (item.html) + setItemUploadStatus(); + + n.upload.onSuccess != null && $.isFunction(n.upload.onSuccess) ? n.upload.onSuccess(data, item, l, p, o, s, textStatus, jqXHR) : null; + f.set('listInput', null); + }; + item.upload.error = function(jqXHR, textStatus, errorThrown) { + if (item.upload.chunk) + item.upload.chunk.i = Math.max(-1, item.upload.chunk.i - 1); + item.uploaded = false; + item.upload.status = item.upload.status == 'cancelled' ? item.upload.status : 'failed'; + item.upload.retry = function() { f.upload.retry(item); }; + delete item.upload.$ajax; + + if (item.html) + setItemUploadStatus(); + + n.upload.onError != null && $.isFunction(n.upload.onError) ? n.upload.onError(item, l, p, o, s, jqXHR, textStatus, errorThrown) : null; + }; + + // send + item.upload.$ajax = $.ajax(item.upload); + }, + /** + * cancel + * cancel item ajax request + * + * @namespace upload + * @param {Object} item + * @void + */ + cancel: function(item, isFromRemove) { + if (item && item.upload) { + item.upload.status = 'cancelled'; + delete item.upload.chunk; + item.upload.$ajax ? item.upload.$ajax.abort() : null; + delete item.upload.$ajax; + !isFromRemove ? f.files.remove(item) : null; + } + }, + /** + * retry + * retry item ajax upload + * + * @namespace upload + * @param {Object} item + * @void + */ + retry: function(item) { + if (item && item.upload) { + if (item.html && n.thumbnails._selectors.retry) + item.html.find(n.thumbnails._selectors.retry).remove(); + + f.upload.prepare(item, true); + } + }, + /** + * progressHandling + * item ajax progress function + * + * @namespace upload + * @param {Event} e - xhr event + * @param {Object} item + * @param {Date} xhrStartedAt - request started Date() + * @param {Boolean} isManual - check if function was manually called + * @void + */ + progressHandling: function(e, item, xhrStartedAt, isManual) { + if (!e && isManual && item.upload.$ajax) + e = {total: item.upload.$ajax.total, loaded: item.upload.$ajax.total, lengthComputable: true}; + + if (e.lengthComputable) { + var date = new Date(), + loaded = e.loaded + (item.upload.chunk ? item.upload.chunk.loaded : 0), + total = item.upload.chunk ? item.upload.chunk.size : e.total, + percentage = Math.round(loaded * 100 / total), + timeStarted = item.upload.chunk && item.upload.chunk.xhrStartedAt ? item.upload.chunk.xhrStartedAt : xhrStartedAt, + secondsElapsed = (date.getTime() - timeStarted.getTime()) / 1000, + bytesPerSecond = secondsElapsed ? loaded / secondsElapsed : 0, + remainingBytes = Math.max(0, total - loaded), + secondsRemaining = Math.max(0, secondsElapsed ? remainingBytes / bytesPerSecond : 0), + data = { + loaded: loaded, + loadedInFormat: f._assets.bytesToText(loaded), + total: total, + totalInFormat: f._assets.bytesToText(total), + percentage: percentage, + secondsElapsed: secondsElapsed, + secondsElapsedInFormat: f._assets.secondsToText(secondsElapsed, true), + bytesPerSecond: bytesPerSecond, + bytesPerSecondInFormat: f._assets.bytesToText(bytesPerSecond) + '/s', + remainingBytes: remainingBytes, + remainingBytesInFormat: f._assets.bytesToText(remainingBytes), + secondsRemaining: secondsRemaining, + secondsRemainingInFormat: f._assets.secondsToText(secondsRemaining, true) + }; + + if (item.upload.chunk) { + if (item.upload.chunk.isFirst) + item.upload.chunk.xhrStartedAt = xhrStartedAt; + if (e.loaded == e.total && !item.upload.chunk.isLast) + item.upload.chunk.loaded += Math.max(e.total, item.upload.chunk.total/item.upload.chunk.chunkSize); + } + + if (data.percentage > 99 && !isManual) + data.percentage = 99; + + // upload.onProgress callback + n.upload.onProgress && $.isFunction(n.upload.onProgress) ? n.upload.onProgress(data, item, l, p, o, s) : null; + } + } + }, + + /** + * @namespace dragDrop + */ + dragDrop: { + /** + * onDragEnter + * on dragging file on the drag container + * + * @namespace dragDrop + * @param {Event} e - jQuery event + * @void + */ + onDragEnter: function(e) { + clearTimeout(f.dragDrop._timer); + + // add dragging class to parent element + n.dragDrop.container.addClass('fileuploader-dragging'); + + // set feedback caption + f.set('feedback', f._assets.textParse(n.captions.drop)); + + // dragDrop.onDragEnter callback + n.dragDrop.onDragEnter != null && $.isFunction(n.dragDrop.onDragEnter) ? n.dragDrop.onDragEnter(e, l, p, o, s) : null; + }, + /** + * onDragLeave + * on dragging leave from the drag container + * + * @namespace dragDrop + * @param {Event} e - jQuery event + * @void + */ + onDragLeave: function(e) { + clearTimeout(f.dragDrop._timer); + + f.dragDrop._timer = setTimeout(function(e) { + // check if not the childNodes from dragging container are hovered + if (!f.dragDrop._dragLeaveCheck(e)) { + return false; + } + + // remove dragging class from parent element + n.dragDrop.container.removeClass('fileuploader-dragging'); + + // set feedback caption + f.set('feedback', null); + + // dragDrop.onDragLeave callback + n.dragDrop.onDragLeave != null && $.isFunction(n.dragDrop.onDragLeave) ? n.dragDrop.onDragLeave(e, l, p, o, s) : null; + }, 100, e); + }, + /** + * onDrop + * on drop files + * + * @namespace dragDrop + * @param {Event} e - jQuery event + * @void + */ + onDrop: function(e) { + clearTimeout(f.dragDrop._timer); + + // remove dragging class from parent element + n.dragDrop.container.removeClass('fileuploader-dragging'); + + // set feedback caption + f.set('feedback', null); + + // check if event has dropped files and use them + if (e && e.originalEvent && e.originalEvent.dataTransfer && e.originalEvent.dataTransfer.files && e.originalEvent.dataTransfer.files.length) { + if (f.isUploadMode()) { + f.onChange(e, e.originalEvent.dataTransfer.files); + } else { + s.prop('files', e.originalEvent.dataTransfer.files).trigger('change'); + } + } + + // dragDrop.onDrop callback + n.dragDrop.onDrop != null && $.isFunction(n.dragDrop.onDrop) ? n.dragDrop.onDrop(e, l, p, o, s) : null; + }, + /** + * _dragLeaveCheck + * check by the living from drag container if not the childNodes are hovered + * + * @namespace dragDrop + * @param {Event} e - jQuery event + * @return {bool} return the leaving statement + */ + _dragLeaveCheck: function(e) { + var related = $(e.currentTarget), + insideEls; + + if (!related.is(n.dragDrop.container)) { + insideEls = n.dragDrop.container.find(related); + + if (insideEls.length) { + return false; + } + } + + return true; + } + }, + + /** + * @namespace clipboard + */ + clipboard: { + /** + * paste + * on pasting a file from clipboard on page + * + * @namespace clipboard + * @param {Event} e - jQuery event + * @void + */ + paste: function(e) { + // check if the input is into view and if clipboard is supported and if there are files in the clipboard + if (!f._assets.isIntoView(o) || !e.originalEvent.clipboardData || !e.originalEvent.clipboardData.items || !e.originalEvent.clipboardData.items.length) + return; + + var items = e.originalEvent.clipboardData.items; + + // extra clean + f.clipboard.clean(); + + for (var i = 0; i < items.length; i++) { + if (items[i].type.indexOf("image") !== -1 || items[i].type.indexOf("text/uri-list") !== -1) { + var blob = items[i].getAsFile(), + ms = n.clipboardPaste > 1 ? n.clipboardPaste : 2000; + + if (blob) { + // create clipboard file name + blob._name = f._assets.generateFileName(blob.type.indexOf("/") != -1 ? blob.type.split("/")[1].toString().toLowerCase() : 'png', 'Clipboard '); + + // set clipboard timer + f.set('feedback', f._assets.textParse(n.captions.paste, {ms: ms/1000})); + f.clipboard._timer = setTimeout(function() { + f.set('feedback', null); + f.onChange(e, [blob]); + }, ms-2); + } + } + } + }, + /** + * clean + * clean the clipboard timer + * + * @namespace clipboard + * @void + */ + clean: function() { + if (f.clipboard._timer) { + clearTimeout(f.clipboard._timer); + delete f.clipboard._timer; + + // set feedback caption + f.set('feedback', null); + } + } + }, + + /** + * @namespace files + */ + files: { + /** + * add + * add a file to memory + * + * @namespace files + * @param {Object} file + * @param {String} prop - type of adding a file to memory + * @return {Number} index - index of the item in memory array + */ + add: function(file, prop) { + var name = file._name || file.name, + size = file.size, + size2 = f._assets.bytesToText(size), + type = file.type, + format = type ? type.split('/', 1).toString().toLowerCase() : '', + extension = name.indexOf('.') != -1 ? name.split('.').pop().toLowerCase() : '', + title = name.substr(0, name.length - (name.indexOf('.') != -1 ? extension.length+1 : extension.length)), + data = file.data || {}, + src = file.file || file, + id = prop == 'updated' ? file.id : Date.now(), + index, + item, + data = { + name: name, + title: title, + size: size, + size2: size2, + type: type, + format: format, + extension: extension, + data: data, + file: src, + reader: { + read: function(callback, type, force) { return f.files.read(item, callback, type, force); } + }, + id: id, + + input: prop == 'choosed' ? s : null, + html: null, + choosed: prop == 'choosed', + appended: prop == 'appended' || prop == 'updated', + uploaded: prop == 'uploaded' + }; + + if (prop != 'updated') { + f._itFl.push(data); + index = f._itFl.length - 1; + item = f._itFl[index]; + } else { + index = f._itFl.indexOf(file); + f._itFl[index] = item = data; + } + + item.remove = function() { + f.files.remove(item); + }; + + if (n.editor && format == 'image') + item.editor = { + rotate: n.editor.rotation !== false ? function(deg) { + f.editor.rotate(item, deg); + } : null, + cropper: n.editor.cropper !== false ? function(data) { + f.editor.crop(item, data); + } : null, + save: function(callback, toBlob, mimeType, preventThumbnailRender) { + f.editor.save(item, toBlob, mimeType, callback, preventThumbnailRender); + } + }; + + if (file.local) + item.local = file.local; + + return index; + }, + /** + * read + * read choosed file and sends the information to callback + * + * @namespace files + * @param {Object} item + * @param {Function} callback + * @param {String} type - FileReader readAs type + * @param {Boolean} force - force a new file read and ignore the existing + * @param {Boolean} isThumb - is thumbnail + * @return {null} + */ + read: function(item, callback, type, force, isThumb) { + if (f.isFileReaderSupported() && !item.data.readerSkip) { + var reader = new FileReader(), + URL = window.URL || window.webkitURL, + hasThumb = isThumb && item.data.thumbnail, + useFile = typeof item.file != 'string', + execute_callbacks = function() { + var _callbacks = item.reader._callbacks || []; + + if (item.reader._timer) { + clearTimeout(item.reader._timer); + delete item.reader._timer; + } + + delete item.reader._callbacks; + delete item.reader._FileReader; + + for(var i = 0; i<_callbacks.length; i++) { + $.isFunction(_callbacks[i]) ? _callbacks[i](item, l, p, o, s) : null; + } + + n.onFileRead && $.isFunction(n.onFileRead) ? n.onFileRead(item, l, p, o, s) : null; + }; + + if ((!item.reader.src && !item.reader._FileReader) || force) + item.reader = { + _FileReader: reader, + _callbacks: [], + read: item.reader.read + }; + + if (item.reader.src && !force) + return callback && $.isFunction(callback) ? callback(item, l, p, o, s) : null; + + if (callback && item.reader._callbacks) { + item.reader._callbacks.push(callback); + + if (item.reader._callbacks.length > 1) + return; + } + + if (item.format == 'astext') { + reader.onload = function(e) { + var node = document.createElement('div'); + + item.reader.node = node; + item.reader.src = e.target.result; + item.reader.length = e.target.result.length; + + node.innerHTML = item.reader.src.replace(/&/g, "&").replace(//g, ">"); + + execute_callbacks(); + }; + reader.onerror = function() { + execute_callbacks(); + item.reader = { read: item.reader.read }; + }; + if (useFile) + reader.readAsText(item.file); + else + $.ajax({ + url : item.file, + success : function(result){ + reader.onload({target: {result: result}}); + }, + error: function() { + reader.onerror(); + } + }); + } else if (item.format == 'image' || hasThumb) { + var src; + + reader.onload = function(e) { + var node = new Image(), + loadNode = function() { + if (item.data && item.data.readerCrossOrigin) + node.setAttribute('crossOrigin', item.data.readerCrossOrigin); + node.src = e.target.result + ((item.data.readerForce || force) && !useFile && !hasThumb && e.target.result.indexOf('data:image') == -1 ? (e.target.result.indexOf('?') == -1 ? '?' : '&') + 'd=' + Date.now() : ''); + node.onload = function() { + // exif rotate image + if (item.reader.exifOrientation) { + var canvas = document.createElement('canvas'), + ctx = canvas.getContext('2d'), + image = node, + rotation = Math.abs(item.reader.exifOrientation), + flip = item.reader.exifOrientation < 0 ? item.reader.exifOrientation : 0, + rotationCf = [0, 180]; + + // remove the rotaiton for flip -1 + if (rotation == 1) + rotation = 0; + + // set canvas size and image + canvas.width = image.naturalWidth; + canvas.height = image.naturalHeight; + ctx.drawImage(image, 0, 0); + + // rotate image + canvas.width = rotationCf.indexOf(rotation) > -1 ? image.naturalWidth : image.naturalHeight; + canvas.height = rotationCf.indexOf(rotation) > -1 ? image.naturalHeight : image.naturalWidth; + + var angle = rotation*Math.PI/180, + cw = canvas.width * 0.5, + ch = canvas.height * 0.5; + + // clear context + ctx.clearRect(0, 0, canvas.width, canvas.height); + + // rotate context + ctx.translate(cw, ch); + ctx.rotate(angle); + ctx.translate(-image.naturalWidth * 0.5, -image.naturalHeight * 0.5); + if (flip) { + if ([-1, -180].indexOf(flip) > -1) { + ctx.translate(canvas.width, 0); + ctx.scale(-1, 1); + } else if([-90, -270].indexOf(flip) > -1) { + ctx.translate(0, canvas.width); + ctx.scale(1, -1); + } + } + + // draw image and reset transform + ctx.drawImage(image, 0, 0); + ctx.setTransform(1, 0, 0, 1, 0, 0); + + node.src = canvas.toDataURL(item.type, 1); + + delete item.reader.exifOrientation; + return; + } + + item.reader.node = node; + item.reader.src = node.src; + item.reader.width = node.width; + item.reader.height = node.height; + item.reader.ratio = f._assets.pxToRatio(item.reader.width, item.reader.height); + if (src) + URL.revokeObjectURL(src); + + execute_callbacks(); + + if (hasThumb) + item.reader = { read: item.reader.read }; + }; + node.onerror = function() { + execute_callbacks(); + item.reader = { read: item.reader.read }; + }; + }; + + // exif rotation + if (n.thumbnails.exif && item.choosed) { + f._assets.getExifOrientation(item.file, function(orientation) { + if (orientation) + item.reader.exifOrientation = orientation; + + loadNode(); + }); + } else { + loadNode(); + } + }; + reader.onerror = function() { + execute_callbacks(); + item.reader = { read: item.reader.read }; + }; + + if (!hasThumb && item.size > f._assets.toBytes(n.reader.maxSize)) + return reader.onerror(); + + if (useFile) { + if (n.thumbnails.useObjectUrl && n.thumbnails.canvasImage && URL) + reader.onload({target: {result: src = URL.createObjectURL(item.file)}}); + else + reader.readAsDataURL(item.file); + } else { + reader.onload({target: {result: (hasThumb ? item.data.thumbnail : item.file)}}); + } + } else if (item.format == 'video' || item.format == 'audio') { + var node = document.createElement(item.format), + canPlay = node.canPlayType(item.type), + src; + + reader.onerror = function() { + item.reader.node = null; + execute_callbacks(); + item.reader = { read: item.reader.read }; + }; + + if (URL && canPlay !== '') { + if (isThumb && !n.thumbnails.videoThumbnail) { + item.reader.node = node; + execute_callbacks(); + item.reader = { read: item.reader.read }; + return; + } + src = useFile ? URL.createObjectURL(item.file) : item.file; + node.onloadedmetadata = function() { + item.reader.node = node; + item.reader.src = node.src; + item.reader.duration = node.duration; + item.reader.duration2 = f._assets.secondsToText(node.duration); + + if (item.format == 'video') { + item.reader.width = node.videoWidth; + item.reader.height = node.videoHeight; + item.reader.ratio = f._assets.pxToRatio(item.reader.width, item.reader.height); + } + }; + node.onerror = function() { + execute_callbacks(); + item.reader = { read: item.reader.read }; + }; + node.onloadeddata = function() { + if (item.format == 'video') { + var canvas = document.createElement('canvas'), + context = canvas.getContext('2d'); + + canvas.width = node.videoWidth; + canvas.height = node.videoHeight; + context.drawImage(node, 0, 0, canvas.width, canvas.height); + item.reader.frame = !f._assets.isBlankCanvas(canvas) ? canvas.toDataURL() : null; + + canvas = context = null; + } + + execute_callbacks(); + }; + + // dirty fix + setTimeout(function() { + if (item.data && item.data.readerCrossOrigin) + node.setAttribute('crossOrigin', item.data.readerCrossOrigin); + node.src = src + '#t=1'; + }, 100); + } else { + reader.onerror(); + } + } else if(item.type == 'application/pdf' && n.thumbnails.pdf) { + var node = document.createElement('iframe'), + src = useFile ? URL.createObjectURL(item.file) : (n.thumbnails.pdf.urlPrefix || '') + item.file; + + if (n.thumbnails.pdf.viewer || f._assets.hasPlugin('pdf')) { + node.onload = function() { + item.reader.node = node; + item.reader.src = node.src; + node.style.display = ''; + execute_callbacks(); + }; + node.src = (n.thumbnails.pdf.viewer || '') + src; + node.style.display = 'none'; + document.body.appendChild(node); + } else { + execute_callbacks(); + } + } else { + reader.onload = function(e) { + item.reader.src = e.target.result; + item.reader.length = e.target.result.length; + + execute_callbacks(); + }; + reader.onerror = function(e) { + execute_callbacks(); + item.reader = { read: item.reader.read }; + }; + useFile ? reader[type || 'readAsBinaryString'](item.file) : execute_callbacks(); + } + + item.reader._timer = setTimeout(reader.onerror, isThumb ? n.reader.thumbnailTimeout : n.reader.timeout); + } else { + if (callback) + callback(item, l, p, o, s); + } + + + return null; + }, + /** + * list + * generate a list of files + * + * @namespace files + * @param {bool} toJSON - generate a JSON list + * @param {String} customKey - use a custom item attribute by generating + * @param {Boolean} triggered - function was triggered from the API + * @param {String} additional - additional settings + * @return {String|Object} + */ + list: function(toJson, customKey, triggered, additional) { + var files = []; + + // save sorter + if (n.sorter && !triggered && (!additional || additional != 'ignoreSorter')) + f.sorter.save(true); + + $.each(f._itFl, function(i, a) { + var file = a; + + if (file.upload && !file.uploaded) + return true; + + if (customKey || toJson) + file = (file.choosed && !file.uploaded ? '0:/' : '') + (customKey && f.files.getItemAttr(a, customKey) !== null ? f.files.getItemAttr(file, customKey) : (file.local || file[typeof file.file == "string" ? "file" : "name"])); + + if (toJson) { + file = {file: file}; + + // editor properties + // add only if file was cropped or rotated + if (a.editor && (a.editor.crop || a.editor.rotation)) { + file.editor = {}; + if (a.editor.rotation) + file.editor.rotation = a.editor.rotation; + if (a.editor.crop) + file.editor.crop = a.editor.crop; + } + + // sorting property + if (typeof a.index !== 'undefined') { + file.index = a.index; + } + + // custom properties + if (a.data && a.data.listProps) { + for (var key in a.data.listProps) { + file[key] = a.data.listProps[key]; + } + } + } + + files.push(file); + }); + + files = n.onListInput && $.isFunction(n.onListInput)? n.onListInput(files, f._itFl, n.listInput, l, p, o, s) : files; + + return !toJson ? files : JSON.stringify(files); + }, + /** + * check + * check the files + * + * @namespace files + * @param {Object} item + * @param {Array} files + * @param {bool} fullCheck - check some parameters that should be checked only once + * @return {bool|Array} r + */ + check: function(item, files, fullCheck) { + var r = ["warning", null, false, false]; + + if (n.limit != null && fullCheck && files.length + f._itFl.length - 1 > n.limit) { + r[1] = f._assets.textParse(n.captions.errors.filesLimit); + r[3] = true; + return r; + } + if (n.maxSize != null && fullCheck) { + var g = 0; + $.each(f._itFl, function(i, a) { + g += a.size; + }); g -= item.size; + $.each(files, function(i, a) { + g += a.size; + }); + + if (g > f._assets.toBytes(n.maxSize)) { + r[1] = f._assets.textParse(n.captions.errors.filesSizeAll); + r[3] = true; + return r; + } + } + if (n.onFilesCheck != null && $.isFunction(n.onFilesCheck) && fullCheck) { + var onFilesCheck = n.onFilesCheck(files, n, l, p, o, s); + if (onFilesCheck === false) { + r[3] = true; + return r; + } + } + if (n.extensions != null && $.inArray(item.extension, n.extensions) == -1 && !n.extensions.filter(function(val) { return item.type.length && (val.indexOf(item.type) > -1 || val.indexOf(item.format + '/*') > -1) }).length) { + r[1] = f._assets.textParse(n.captions.errors.filesType, item); + return r; + } + if (n.disallowedExtensions != null && ($.inArray(item.extension, n.disallowedExtensions) > -1 || n.disallowedExtensions.filter(function(val) { return !item.type.length || val.indexOf(item.type) > -1 || val.indexOf(item.format + '/*') > -1 }).length)) { + r[1] = f._assets.textParse(n.captions.errors.filesType, item); + return r; + } + if (n.fileMaxSize != null && item.size > f._assets.toBytes(n.fileMaxSize)) { + r[1] = f._assets.textParse(n.captions.errors.fileSize, item); + return r; + } + if (item.size == 0 && item.type == "") { + r[1] = f._assets.textParse(n.captions.errors.remoteFile, item); + return r; + } + if (item.size == 4096 && item.type == "") { + r[1] = f._assets.textParse(n.captions.errors.folderUpload, item); + return r; + } + if (!n.skipFileNameCheck) { + var g = false; + + $.each(f._itFl, function(i, a) { + if (a != item && a.choosed == true && a.file && a.name == item.name) { + g = true; + + if (a.file.size == item.size && a.file.type == item.type && (item.file.lastModified && a.file.lastModified ? a.file.lastModified == item.file.lastModified : true) && files.length > 1) { + r[2] = true; + } else { + r[1] = f._assets.textParse(n.captions.errors.fileName, item); + r[2] = false; + } + + return false; + } + }); + + if (g) { + return r; + } + } + + return true; + }, + /** + * append + * check the files + * + * @namespace files + * @param {Array} files + * @return {bool|Object} + */ + append: function(files) { + files = $.isArray(files) ? files : [files]; + + if (files.length) { + var item; + for (var i = 0; i < files.length; i++) { + if (!f._assets.keyCompare(files[i], ['name', 'file', 'size', 'type'])) { + continue; + } + + item = f._itFl[f.files.add(files[i], 'appended')]; + + n.thumbnails ? f.thumbnails.item(item) : null; + } + + // set feedback caption + f.set('feedback', null); + + // set listInput value + f.set('listInput', null); + + // afterSelect callback + n.afterSelect && $.isFunction(n.afterSelect) ? n.afterSelect(l, p, o, s) : null; + + return files.length == 1 ? item : true; + } + }, + /** + * update + * update an item using new information + * + * @namespace files + * @param {Object} item + * @param {Object} data + * @return void + */ + update: function(item, data) { + if (f._itFl.indexOf(item) == -1 || (item.upload && item.upload.$ajax)) + return; + + var oldItem = item, + index = f.files.add($.extend(item, data), 'updated'), + item = f._itFl[index]; + + if (item.popup && item.popup.close) + item.popup.close(); + + if (n.thumbnails && oldItem.html) + f.thumbnails.item(item, oldItem.html); + + f.set('listInput', null); + }, + /** + * find + * find an item in memory using html element + * + * @namespace files + * @param {jQuery Object} html + * @return {null,Object} + */ + find: function(html) { + var item = null; + + $.each(f._itFl, function(i, a) { + if (a.html && a.html.is(html)) { + item = a; + return false; + } + }); + + return item; + }, + /** + * remove + * remove an item from memory and html + * + * @namespace files + * @param {Object} item + * @param {bool} isFromCheck - if removing function was triggered by checking a file + * @return {null,Object} + */ + remove: function(item, isFromCheck) { + // onRemove callback + if (!isFromCheck && n.onRemove && $.isFunction(n.onRemove) && n.onRemove(item, l, p, o, s) === false) + return; + + // thumbnails.onItemRemove callback + if (item.html) + n.thumbnails.onItemRemove && $.isFunction(n.thumbnails.onItemRemove) && !isFromCheck ? n.thumbnails.onItemRemove(item.html, l, p, o, s) : item.html.remove(); + + // cancel file upload + if (item.upload && item.upload.$ajax && item.upload.cancel) + item.upload.cancel(true); + + // remove popup + if (item.popup && item.popup.close) + item.popup.close(); + + // remove filereader + if (item.reader.src) { + item.reader.node = null; + URL.revokeObjectURL(item.reader.src); + } + + // check if any file is in the same input like item.input + if (item.input) { + var g = true; + $.each(f._itFl, function(i, a) { + if (item != a && (item.input == a.input || (isFromCheck && item.input.get(0).files.length > 1))) { + g = false; + return false; + } + }); + if (g) { + if (f.isAddMoreMode() && sl.length > 1) { + f.set('nextInput'); + sl.splice(sl.indexOf(item.input), 1); + item.input.remove(); + } else { + f.set('input', ''); + } + } + } + + // remove data from memory + f._pfrL.indexOf(item) > -1 ? f._pfrL.splice(f._pfrL.indexOf(item), 1) : null; + f._pfuL.indexOf(item) > -1 ? f._pfuL.splice(f._pfuL.indexOf(item), 1) : null; + f._itFl.indexOf(item) > -1 ? f._itFl.splice(f._itFl.indexOf(item), 1) : null; + item = null; + + // reset the plugin if there are no any files in the memory + f._itFl.length == 0 ? f.reset() : null; + + // set feedback caption + f.set('feedback', null); + + // set listInput value + f.set('listInput', null); + }, + /** + * getItemAttr + * get an attribute from item or item.data + * + * @namespace files + * @param {Object} item + * @param {String} attr - attribute key + * @return {null,String} + */ + getItemAttr: function(item, attr) { + var result = null; + + if (item) { + if (typeof item[attr] != "undefined") { + result = item[attr]; + } else if (item.data && typeof item.data[attr] != "undefined") { + result = item.data[attr]; + } + } + + return result; + }, + /** + * clear + * clear files from the memory + * delete also item.html and item.upload data + * + * @namespace files + * @param {bool} all - delete also appended files? + * @void + */ + clear: function(all) { + var i = 0; + + while (i < f._itFl.length) { + var a = f._itFl[i]; + + if (!all && a.appended) { + i++; + continue; + } + + if (a.html) + a.html ? f._itFl[i].html.remove() : null; + + if (a.upload && a.upload.$ajax) + f.upload.cancel(a); + + f._itFl.splice(i, 1); + } + + // set feedback caption + f.set('feedback', null); + + // set listInput value + f.set('listInput', null); + + // onEmpty callback + f._itFl.length == 0 && n.onEmpty && $.isFunction(n.onEmpty) ? n.onEmpty(l, p, o, s) : null; + } + }, + + /** + * reset + * reset the plugin + * + * @param {bool} all - remove also appended files? + * @void + */ + reset: function(all) { + if (all) { + if (f.clipboard._timer) + f.clipboard.clean(); + + $.each(sl, function(i, a) { + if (i < sl.length) + a.remove(); + }); + sl = []; + f.set('input', ''); + } + + f._itRl = []; + f._pfuL = []; + f._pfrL = []; + f.files.clear(all); + }, + /** + * destroy + * destroy the plugin + * + * @void + */ + destroy: function() { + f.reset(true); + f.bindUnbindEvents(false); + s.removeAttr('style'); + p.before(s); + delete s.get(0).FileUploader; + p.remove(); + p = o = l = null; + }, + + /** + * @namespace _assets + */ + _assets: { + toBytes: function(mb) { + return parseInt(mb) * 1048576; + }, + bytesToText: function(bytes) { + if (bytes == 0) + return '0 Byte'; + var k = 1024, + sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], + i = Math.floor(Math.log(bytes) / Math.log(k)); + + return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i]; + }, + escape: function(str) { + return ('' + str).replace(/&/g, "&").replace(//g, ">").replace(/"/g, """).replace(/'/g, "'") + }, + secondsToText: function(seconds, textFormat) { + seconds = parseInt(Math.round(seconds), 10); + + var hours = Math.floor(seconds / 3600), + minutes = Math.floor((seconds - (hours * 3600)) / 60), + seconds = seconds - (hours * 3600) - (minutes * 60), + result = ""; + + if (hours > 0 || !textFormat) { + result += (hours < 10 ? "0" : "") + hours + (textFormat ? "h " : ":"); + } + if (minutes > 0 || !textFormat) { + result += (minutes < 10 && !textFormat ? "0" : "") + minutes + (textFormat ? "m " : ":"); + } + + result += (seconds < 10 && !textFormat ? "0" : "") + seconds + (textFormat ? "s" : ""); + + return result; + }, + pxToRatio: function(width, height) { + var gcd = function(a, b) { + return (b == 0) ? a : gcd (b, a%b); + }, + r = gcd(width, height); + + return [width/r, height/r]; + }, + ratioToPx: function(width, height, ratio) { + ratio = (ratio+'').split(':'); + + if (ratio.length < 2) + return null; + + var rWidth = height / ratio[1] * ratio[0], + rHeight = width / ratio[0] * ratio[1]; + + return [rWidth, rHeight, ratio[0], ratio[1]]; + }, + hasAttr: function(attr, el) { + var el = !el ? s : el, + a = el.attr(attr); + + if (!a || typeof a == 'undefined') { + return false; + } else { + return true; + } + }, + copyAllAttributes: function(newEl, oldEl) { + $.each(oldEl.get(0).attributes, function() { + if (this.name == 'required' || this.name == 'type') return; + newEl.attr(this.name, this.value); + }); + + if (oldEl.get(0).FileUploader) + newEl.get(0).FileUploader = oldEl.get(0).FileUploader; + + return newEl; + }, + getAllEvents: function(el) { + var el = !el ? s : el, + result = []; + + el = el.get ? el.get(0) : el; + for (var key in el) { + if (key.indexOf('on') === 0) { + result.push(key.slice(2)); + } + } + + if (result.indexOf('change') == -1) + result.push('change'); + + return result.join(' '); + }, + isIntoView: function(el) { + var windowTop = $(window).scrollTop(), + windowBottom = windowTop + window.innerHeight, + elTop = el.offset().top, + elBottom = elTop + el.outerHeight(); + + return ((windowTop < elTop) && (windowBottom > elBottom)); + }, + isBlankCanvas: function(canvas) { + var blank = document.createElement('canvas'), + result = false; + + blank.width = canvas.width; + blank.height = canvas.height; + try { + result = canvas.toDataURL() == blank.toDataURL(); + } catch(e) {} + blank = null; + + return result; + }, + generateFileName: function(extension, prefix) { + var date = new Date(), + addZero = function(x) { + if (x < 10) + x = "0" + x; + + return x; + }, + prefix = prefix ? prefix : '', + extension = extension ? '.' + extension : ''; + + return prefix + date.getFullYear() + '-' + addZero(date.getMonth()+1) + '-' + addZero(date.getDate()) + ' ' + addZero(date.getHours()) + '-' + addZero(date.getMinutes()) + '-' + addZero(date.getSeconds()) + extension; + }, + arrayBufferToBase64: function(buffer) { + var binary = '', + bytes = new Uint8Array(buffer); + + for (var i = 0; i < bytes.byteLength; i++) { + binary += String.fromCharCode(bytes[i]); + } + + return window.btoa(binary); + }, + dataURItoBlob: function(dataURI, type) { + var byteString = atob(dataURI.split(',')[1]), + mimeType = dataURI.split(',')[0].split(':')[1].split(';')[0], + arrayBuffer = new ArrayBuffer(byteString.length), + _ia = new Uint8Array(arrayBuffer); + + for (var i = 0; i < byteString.length; i++) { + _ia[i] = byteString.charCodeAt(i); + } + + var dataView = new DataView(arrayBuffer), + blob = new Blob([dataView.buffer], { type: type || mimeType }); + + return blob; + }, + getExifOrientation: function(file, callback) { + var reader = new FileReader(), + rotation = { + 1: 0, + 2: -1, + 3: 180, + 4: -180, + 5: -90, + 6: 90, + 7: -270, + 8: 270 + }; + + reader.onload = function(e) { + var scanner = new DataView(e.target.result), + val = 1; + + if (scanner.byteLength && scanner.getUint16(0, false) == 0xFFD8) { + var length = scanner.byteLength, + offset = 2; + + while (offset < length) { + if (scanner.getUint16(offset + 2, false) <= 8) + break; + + var uint16 = scanner.getUint16(offset, false); + offset += 2; + + if (uint16 == 0xFFE1) { + if (scanner.getUint32(offset += 2, false) != 0x45786966) + break; + + var little = scanner.getUint16(offset += 6, false) == 0x4949, + tags; + + offset += scanner.getUint32(offset + 4, little); + tags = scanner.getUint16(offset, little); + offset += 2; + + for (var i = 0; i < tags; i++) { + if (scanner.getUint16(offset + (i * 12), little) == 0x0112) { + val = scanner.getUint16(offset + (i * 12) + 8, little); + length = 0; + break; + } + } + } else if ((uint16 & 0xFF00) != 0xFF00) { + break; + } else { + offset += scanner.getUint16(offset, false); + } + } + } + + callback ? callback(rotation[val] || 0) : null; + }; + reader.onerror = function() { + callback ? callback('') : null; + }; + reader.readAsArrayBuffer(file); + }, + textParse: function(text, opts, noOptions) { + opts = noOptions ? (opts || {}) : $.extend({}, { + limit: n.limit, + maxSize: n.maxSize, + fileMaxSize: n.fileMaxSize, + extensions: n.extensions ? n.extensions.join(', ') : null, + captions: n.captions + }, opts); + + switch (typeof(text)) { + case 'string': + for (var key in opts) { + if (['name', 'file', 'type', 'size'].indexOf(key) > -1) + opts[key] = f._assets.escape(opts[key]); + } + + text = text.replace(/\$\{(.*?)\}/g, function(match, a) { + var a = a.replace(/ /g, ''), + r = typeof opts[a] != "undefined" && opts[a] != null ? opts[a] : ''; + + if (['reader.node'].indexOf(a) > -1) + return match; + + if (a.indexOf('.') > -1 || a.indexOf('[]') > -1) { + var x = a.substr(0, a.indexOf('.') > -1 ? a.indexOf('.') : a.indexOf('[') > -1 ? a.indexOf('[') : a.length), + y = a.substring(x.length); + + if (opts[x]) { + try { + r = eval('opts["' + x + '"]' + y); + } catch(e) { + r = ''; + } + } + } + + r = $.isFunction(r) ? f._assets.textParse(r) : r; + + return r || ''; + }); + break; + case 'function': + text = f._assets.textParse(text(opts, l, p, o, s, f._assets.textParse), opts, noOptions); + break; + } + + opts = null; + return text; + }, + textToColor: function(str) { + if (!str || str.length == 0) + return false; + + for (var i = 0, hash = 0; i < str.length; hash = str.charCodeAt(i++) + ((hash << 5) - hash)); + for (var i = 0, colour = '#'; i < 3; colour += ('00' + ((hash >> i++ * 2) & 0xFF) + .toString(16)) + .slice(-2)); + return colour; + }, + isBrightColor: function(color) { + var getRGB = function(b) { + var a; + if (b && b.constructor == Array && b.length == 3) return b; + if (a = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(b)) return [parseInt(a[1]), parseInt(a[2]), parseInt(a[3])]; + if (a = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(b)) return [parseFloat(a[1]) * 2.55, parseFloat(a[2]) * 2.55, parseFloat(a[3]) * 2.55]; + if (a = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(b)) return [parseInt(a[1], 16), parseInt(a[2], 16), parseInt(a[3], + 16)]; + if (a = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(b)) return [parseInt(a[1] + a[1], 16), parseInt(a[2] + a[2], 16), parseInt(a[3] + a[3], 16)]; + return (typeof(colors) != "undefined") ? colors[$.trim(b).toLowerCase()] : null + }, + luminance_get = function(color) { + var rgb = getRGB(color); + if (!rgb) return null; + return 0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]; + }; + + return luminance_get(color) > 194; + }, + keyCompare: function(obj, structure) { + for(var i = 0; i -1) + return true; + } + + return false; + }, + isIE: function() { + return navigator.userAgent.indexOf("MSIE ") > -1 || navigator.userAgent.indexOf("Trident/") > -1 || navigator.userAgent.indexOf("Edge") > -1; + }, + isMobile: function() { + return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1); + } + }, + + isSupported: function() { + return s && s.get(0).files; + }, + isFileReaderSupported: function() { + return window.File && window.FileList && window.FileReader; + }, + isDefaultMode: function() { + return !n.upload && (!n.addMore || n.limit == 1); + }, + isAddMoreMode: function() { + return !n.upload && n.addMore && n.limit != 1; + }, + isUploadMode: function() { + return n.upload; + }, + + // fileuploader file list + _itFl: [], + + // fileuploader file upload pending list + _pfuL: [], + + // fileuploader file render pending list + _pfrL: [], + + // disabled + disabled: false, + + // locked + locked: false, + + // rendered + rendered: false + }; + + // set FileUploader property to the input + if (n.enableApi) { + s.get(0).FileUploader = { + open: function() { + s.trigger('click'); + }, + getOptions: function() { + return n; + }, + getParentEl: function() { + return p; + }, + getInputEl: function() { + return s; + }, + getNewInputEl: function() { + return o; + }, + getListEl: function() { + return l; + }, + getListInputEl: function() { + return n.listInput; + }, + getFiles: function() { + return f._itFl; + }, + getChoosedFiles: function() { + return f._itFl.filter(function(a) { + return a.choosed; + }); + }, + getAppendedFiles: function() { + return f._itFl.filter(function(a) { + return a.appended; + }); + }, + getUploadedFiles: function() { + return f._itFl.filter(function(a) { + return a.uploaded; + }); + }, + getFileList: function(toJson, customKey) { + return f.files.list(toJson, customKey, true); + }, + updateFileList: function() { + f.set('listInput', null); + + return true; + }, + setOption: function(option, value) { + n[option] = value; + + return true; + }, + findFile: function(html) { + return f.files.find(html); + }, + add: function(data, type, name) { + if (!f.isUploadMode()) + return false; + + var blob; + if (data instanceof Blob) { + blob = data; + } else { + var dataURI = /data:[a-z]+\/[a-z]+\;base64\,/.test(data) ? data : 'data:' + type + ';base64,' + btoa(data); + + blob = f._assets.dataURItoBlob(dataURI, type); + } + blob._name = name || f._assets.generateFileName(blob.type.indexOf("/") != -1 ? blob.type.split("/")[1].toString().toLowerCase() : 'File '); + + f.onChange(null, [blob]); + + return true; + }, + append: function(files) { + return f.files.append(files); + }, + update: function(item, data) { + return f.files.update(item, data); + }, + remove: function(item) { + item = item.jquery ? f.files.find(item) : item; + + if (f._itFl.indexOf(item) > -1) { + f.files.remove(item); + return true; + } + + return false; + }, + uploadStart: function() { + var choosedFiles = this.getChoosedFiles() || []; + + if (f.isUploadMode() && choosedFiles.length > 0 && !choosedFiles[0].uploaded) { + for(var i = 0; i 1 ? 'vybráno souborů' : 'vybrán soubor') + }, + confirm: 'Potvrdit', + cancel: 'Zrušeni', + name: 'Jméno', + type: 'Format', + size: 'Velikost', + dimensions: 'Rozměry', + duration: 'Trvání', + crop: 'Oříznout', + rotate: 'Otočit', + sort: 'Roztřídit', + open: 'Otevřít', + download: 'Stáhnout', + remove: 'Odstranit', + drop: 'Pro nahrání přetahněte soubor sem', + paste: '
    Vkládání souboru, klikněte zde pro zrušeni', + removeConfirmation: 'Jste si jisti, že chcete odstranit tento soubor?', + errors: { + filesLimit: function(options) { + return 'Pouze ${limit} ' + (options.limit == 1 ? 'soubor může být nahrán' : 'soubory mohou byt nahrané') + '.' + }, + filesType: 'Pouze ${extensions} soubory mohou byt nahrané.', + fileSize: '${name} příliš velký! Prosím, vyberte soubor do velikosti ${fileMaxSize} MB.', + filesSizeAll: 'Vybraný soubor je příliš velký! Prosím, vyberte soubor do velikosti ${maxSize} MB.', + fileName: 'Soubor s tímto názvem ${name} byl už vybran.', + remoteFile: 'Vzdálené soubory nejsou povoleny.', + folderUpload: 'Složky nejsou povolené.', + } + }, + de: { + button: function(options) { + return (options.limit == 1 ? 'Datei' : 'Dateien') + ' durchsuchen' + }, + feedback: function(options) { + return (options.limit == 1 ? 'Datei' : 'Dateien') + ' zum Hochladen auswählen' + }, + feedback2: function(options) { + return options.length + ' ' + (options.length == 1 ? 'Datei' : 'Dateien') + ' ausgewählt' + }, + confirm: 'Speichern', + cancel: 'Schließen', + name: 'Name', + type: 'Typ', + size: 'Größe', + dimensions: 'Format', + duration: 'Länge', + crop: 'Crop', + rotate: 'Rotieren', + sort: 'Sortieren', + open: 'Öffnen', + download: 'Herunterladen', + remove: 'Löschen', + drop: 'Die Dateien hierher ziehen, um sie hochzuladen', + paste: '
    Eine Datei wird eingefügt. Klicken Sie hier zum abzubrechen', + removeConfirmation: 'Möchten Sie diese Datei wirklich löschen?', + errors: { + filesLimit: function(options) { + return 'Nur ${limit} ' + (options.limit == 1 ? 'Datei darf' : 'Dateien dürfen') + ' hochgeladen werden.' + }, + filesType: 'Nur ${extensions} Dateien dürfen hochgeladen werden.', + fileSize: '${name} ist zu groß! Bitte wählen Sie eine Datei bis zu ${fileMaxSize} MB.', + filesSizeAll: 'Die ausgewählten Dateien sind zu groß! Bitte wählen Sie Dateien bis zu ${maxSize} MB.', + fileName: 'Eine Datei mit demselben Namen ${name} ist bereits ausgewählt.', + remoteFile: 'Remote-Dateien sind nicht zulässig.', + folderUpload: 'Ordner sind nicht erlaubt.', + } + }, + dk: { + button: function(options) { + return 'Gennemse ' + (options.limit == 1 ? 'fil' : 'filer') + }, + feedback: function(options) { + return 'Vælg ' + (options.limit == 1 ? 'fil' : 'filer') + ' til upload' + }, + feedback2: function(options) { + return options.length + ' ' + (options.length == 1 ? 'fil' : 'filer') + ' er valgt' + }, + confirm: 'Bekræft', + cancel: 'Fortrydl', + name: 'Navn', + type: 'Type', + size: 'Størrelse', + dimensions: 'Dimensioner', + duration: 'Varighed’', + crop: 'Tilpas', + rotate: 'Rotér', + sort: 'Sorter', + open: 'Åben', + download: 'Hent', + remove: 'Slet', + drop: 'Drop filer her til upload', + paste: 'Overfør fil, klik her for at afbryde', + removeConfirmation: 'Er du sikker på, du ønsker at slette denne fil?', + errors: { + filesLimit: function(options) { + return 'Du kan kun uploade ${limit} ' + (options.limit == 1 ? 'fil' : 'filer') + ' ad gangen.' + }, + filesType: 'Det er kun tilladt at uploade ${extensions} filer.', + fileSize: '${name} er for stor! Vælg venligst en fil på højst ${fileMaxSize} MB.', + filesSizeAll: 'De valgte filer er for store! Vælg venligst filer op til ${maxSize} MB ialt.', + fileName: 'Du har allerede valgt en fil med navnet ${name}.', + remoteFile: 'Fremmede filer er ikke tilladt.', + folderUpload: 'Mapper er ikke tilladt.', + } + }, + en: { + button: function(options) { + return 'Browse ' + (options.limit == 1 ? 'file' : 'files') + }, + feedback: function(options) { + return 'Choose ' + (options.limit == 1 ? 'file' : 'files') + ' to upload' + }, + feedback2: function(options) { + return options.length + ' ' + (options.length > 1 ? ' files were' : ' file was') + ' chosen' + }, + confirm: 'Confirm', + cancel: 'Cancel', + name: 'Name', + type: 'Type', + size: 'Size', + dimensions: 'Dimensions', + duration: 'Duration', + crop: 'Crop', + rotate: 'Rotate', + sort: 'Sort', + open: 'Open', + download: 'Download', + remove: 'Delete', + drop: 'Drop the files here to upload', + paste: '
    Pasting a file, click here to cancel', + removeConfirmation: 'Are you sure you want to delete this file?', + errors: { + filesLimit: function(options) { + return 'Only ${limit} ' + (options.limit == 1 ? 'file' : 'files') + ' can be uploaded.' + }, + filesType: 'Only ${extensions} files are allowed to be uploaded.', + fileSize: '${name} is too large! Please choose a file up to ${fileMaxSize} MB.', + filesSizeAll: 'The chosen files are too large! Please select files up to ${maxSize} MB.', + fileName: 'A file with the same name ${name} is already selected.', + remoteFile: 'Remote files are not allowed.', + folderUpload: 'Folders are not allowed.', + } + }, + es: { + button: function(options) { + return 'Examinar ' + (options.limit == 1 ? 'archivo' : 'archivos') + }, + feedback: function(options) { + return 'Selecciona ' + (options.limit == 1 ? 'archivos' : 'archivos') + ' para subir' + }, + feedback2: function(options) { + return options.length + ' ' + (options.length > 1 ? 'archivos seleccionados' : 'archivo seleccionado') + }, + confirm: 'Guardar', + cancel: 'Anular', + name: 'Nombre', + type: 'Tipo', + size: 'Tamaño', + dimensions: 'Dimensiones', + duration: 'Duracion', + crop: 'Corta', + rotate: 'Rotar', + sort: 'Ordenar', + open: 'Abierto', + download: 'Descargar', + remove: 'Eliminar', + drop: 'Suelta los archivos aquí para subirlos', + paste: '
    Pegar un archivo, haga clic aquí para cancelar', + removeConfirmation: '¿Estás seguro de que deseas eliminar este archivo?', + errors: { + filesLimit: function(options) { + return 'Solo se pueden seleccionar ${limit} ' + (options.limit == 1 ? 'archivo' : 'archivos') + '.' + }, + filesType: 'Solo se pueden seleccionar archivos ${extensions}.', + fileSize: '${name} es demasiado grande! Por favor, seleccione un archivo hasta ${fileMaxSize} MB.', + filesSizeAll: '¡Los archivos seleccionados son demasiado grandes! Por favor seleccione archivos de hasta ${maxSize} MB.', + fileName: 'Un archivo con el mismo nombre ${name} ya está seleccionado.', + remoteFile: 'Los archivos remotos no están permitidos.', + folderUpload: 'No se permiten carpetas.', + } + }, + fr: { + button: function(options) { + return 'Parcourir ' + (options.limit == 1 ? 'le fichier' : 'les fichiers') + }, + feedback: function(options) { + return 'Choisir ' + (options.limit == 1 ? 'le fichier ' : 'les fichiers') + ' à télécharger' + }, + feedback2: function(options) { + return options.length + ' ' + (options.length > 1 ? 'fichiers ont été choisis' : 'fichier a été choisi') + }, + confirm: 'Confirmer', + cancel: 'Annuler', + name: 'Nom', + type: 'Type', + size: 'Taille', + dimensions: 'Dimensions', + duration: 'Durée', + crop: 'Recadrer', + rotate: 'Pivoter', + sort: 'Trier', + download: 'Télécharger', + remove: 'Supprimer', + drop: 'Déposez les fichiers ici pour les télécharger', + paste: '
    Collant un fichier, cliquez ici pour annuler.', + removeConfirmation: 'Êtes-vous sûr de vouloir supprimer ce fichier ?', + errors: { + filesLimit: 'Seuls les fichiers ${limit} peuvent être téléchargés.', + filesType: 'Seuls les fichiers ${extensions} peuvent être téléchargés.', + fileSize: '${name} est trop lourd, la limite est de ${fileMaxSize} MB.', + filesSizeAll: 'Les fichiers que vous avez choisis sont trop lourd, la limite totale est de ${maxSize} MB.', + fileName: 'Le fichier portant le nom ${name} est déjà sélectionné.', + folderUpload: 'Vous n\'êtes pas autorisé à télécharger des dossiers.' + } + }, + it: { + button: function(options) { + return 'Sfoglia' + (options.limit == 1 ? 'il file' : 'i file') + }, + feedback: function(options) { + return 'Seleziona ' + (options.limit == 1 ? 'file' : 'i file') + ' per caricare' + }, + feedback2: function(options) { + return options.length + ' ' + (options.length > 1 ? 'i file sono scelti' : 'il file è scelto') + }, + confirm: 'Conferma', + cancel: 'Cancella', + name: 'Nome', + type: 'Tipo file', + size: 'Dimensione file', + dimensions: 'Dimensioni', + duration: 'Durata', + crop: 'Taglia', + rotate: 'Ruota', + sort: 'Ordina', + open: 'Apri', + download: 'Scarica', + remove: 'Elimina', + drop: 'Posiziona il file qui per caricare', + paste: '
    Incolla file, clicca qui per cancellare', + removeConfirmation: 'Sei sicuro di voler eliminare il file?', + errors: { + filesLimit: 'Solo ${limit} file possono essere caricati.', + filesType: 'Solo ${extensions} file possono essere caricati.', + fileSize: '${name} è troppo grande! Scegli un file fino a ${fileMaxSize} MB.', + filesSizeAll: 'I file selezioni sono troppo grandi! Scegli un file fino a ${maxSize} MB.', + fileName: 'Un file con lo stesso nome ${name} è già selezionato.', + remoteFile: 'I file remoti non sono consentiti.', + folderUpload: 'Le cartelle non sono consentite.', + } + }, + lv: { + button: function(options) { + return 'Izvēlieties ' + (options.limit == 1 ? 'fails' : 'faili') + }, + feedback: function(options) { + return 'Izvēliejaties ' + (options.limit == 1 ? 'fails' : 'faili') + ' lejupielādēt' + }, + feedback2: function(options) { + return options.length + ' ' + (options.length > 1 ? 'failus izvelēts' : 'fails izvēlēts') + }, + confirm: 'Saglabāt', + cancel: 'Atcelt', + name: 'Vārds', + type: 'Formāts', + size: 'Izmērs', + dimensions: 'Izmēri', + duration: 'Ilgums', + crop: 'Nogriezt', + rotate: 'Pagriezt', + sort: 'Kārtot', + open: 'Atvērt', + download: 'Lejupielādēt', + remove: 'Dzēst', + drop: 'Lai augšupielādētu, velciet failus šeit', + paste: '
    Ievietojiet failu, noklikšķiniet šeit, lai atceltu', + removeConfirmation: 'Vai tiešām vēlaties izdzēst šo failu?', + errors: { + filesLimit: function(options) { + return 'Tikai ${limit} ' + (options.limit == 1 ? 'failu var augšupielādēt' : 'failus var augšupielādēt') + '.' + }, + filesType: 'Tikai ${extensions} failus var augšupielādēt.', + fileSize: '${name} ir par lielu! Lūdzu, atlasiet failu līdz ${fileMaxSize} MB.', + filesSizeAll: 'Atlasītie faili ir pārāk lieli! Lūdzu, atlasiet failus līdz ${maxSize} MB.', + fileName: 'Fails ar tādu pašu nosaukumu ${name} jau ir atlasīts.', + remoteFile: 'Attālie faili nav atļauti.', + folderUpload: 'Mapes nav atļautas.', + } + }, + nl: { + button: function(options) { + return (options.limit == 1 ? 'Bestand' : 'Bestanden') + ' kiezen' + }, + feedback: function(options) { + return 'Kies ' + (options.limit == 1 ? 'een bestand' : 'bestanden') + ' om te uploaden' + }, + feedback2: function(options) { + return options.length + ' ' + (options.length > 1 ? 'bestanden' : 'bestand') + ' gekozen' + }, + confirm: 'Opslaan', + cancel: 'Annuleren', + name: 'Naam', + type: 'Type', + size: 'Grootte', + dimensions: 'Afmetingen', + duration: 'Duur', + crop: 'Uitsnijden', + rotate: 'Draaien', + sort: 'Sorteren', + open: 'Open', + download: ' Downloaden', + remove: 'Verwijderen', + drop: 'Laat de bestanden hier vallen om te uploaden', + paste: '
    Een bestand wordt geplakt, klik hier om te annuleren', + removeConfirmation: 'Weet u zeker dat u dit bestand wilt verwijderen?', + errors: { + filesLimit: function(options) { + return 'Er ' + (options.limit == 1 ? 'mag' : 'mogen') + ' slechts ${limit} ' + (options.limit == 1 ? 'bestand' : 'bestanden') + ' worden geüpload.' + }, + filesType: 'Alleen ${extensions} mogen worden geüpload.', + fileSize: '${name} is te groot! Kies een bestand tot ${fileMaxSize} MB.', + filesSizeAll: 'De gekozen bestanden zijn te groot! Kies bestanden tot ${maxSize} MB.', + fileName: 'Een bestand met dezelfde naam ${name} is al gekozen.', + remoteFile: 'Externe bestanden zijn niet toegestaan.', + folderUpload: 'Mappen zijn niet toegestaan.', + } + }, + pl: { + button: function(options) { + return 'Wybierz ' + (options.limit == 1 ? 'plik' : 'pliki') + }, + feedback: function(options) { + return 'Wybierz ' + (options.limit == 1 ? 'plik' : 'pliki') + ' do przesłania' + }, + feedback2: function(options) { + return options.length + ' ' + (options.length > 1 ? 'pliki zostały wybrane' : 'plik został wybrany') + }, + confirm: 'Potwierdź', + cancel: 'Anuluj', + name: 'Nazwa', + type: 'Typ', + size: 'Rozmiar', + dimensions: 'Wymiary', + duration: 'Czas trwania', + crop: 'Przytnij', + rotate: 'Obróć', + sort: 'Sortuj', + open: 'Otwórz', + download: 'Pobierz', + remove: 'Usuń', + drop: 'Upuść pliki tutaj do przesłania', + paste: '
    Wklejając plik, kliknij tutaj, aby anulować', + removeConfirmation: 'Czy jesteś pewien, że chcesz usunąć ten plik?', + errors: { + filesLimit: function(options) { + return 'Tylko ${limit} ' + (options.limit == 1 ? 'plik' : 'pliki') + ' można wybrać.' + }, + filesType: 'Tylko pliki ${extensions} mogą zostać pobrane.', + fileSize: 'Plik ${name} jest za duży! Proszę wybrać plik do ${fileMaxSize} MB.', + filesSizeAll: 'Wybrane pliki są za duże! Proszę wybrać pliki do ${maxSize} MB.', + fileName: ', Plik o tej samej nazwie ${name} już został wybrany.', + remoteFile: 'Zdalne pliki nie są dozwolone.', + folderUpload: 'Foldery nie są dozwolone.', + } + }, + pt: { + button: function(options) { + return 'Escolher ' + (options.limit == 1 ? 'arquivo' : 'arquivos') + }, + feedback: function(options) { + return 'Escolha ' + (options.limit == 1 ? 'arquivo' : 'arquivos') + ' a carregar' + }, + feedback2: function(options) { + return options.length + ' ' + (options.length > 1 ? 'arquivos foram escolhidos' : 'arquivo foi escolhido') + }, + confirm: 'Confirmar', + cancel: 'Cancelar', + name: 'Nome', + type: 'Tipo', + size: 'Tamanho', + dimensions: 'Dimensões', + duration: 'Duração', + crop: 'Recorte', + rotate: 'Girar', + sort: 'Ordenar', + open: 'Abrir', + download: 'Baixar', + remove: 'Excluir', + drop: 'Solte os arquivos aqui para fazer o upload', + paste: '
    Colando um arquivo, clique aqui para cancelar', + removeConfirmation: 'Tem certeza de que deseja excluir este arquivo?', + errors: { + filesLimit: function(options) { + return 'Apenas ${limit} ' + (options.limit == 1 ? 'arquivo a ser carregado' : 'arquivos a serem carregados') + '.' + }, + filesType: 'Somente arquivos ${extensions} podem ser carregados.', + fileSize: '${name} é muito grande! Selecione um arquivo de até ${fileMaxSize} MB.', + filesSizeAll: 'Os arquivos selecionados são muito grandes! Selecione arquivos de até ${maxSize} MB.', + fileName: 'Um arquivo com o mesmo nome ${name} já está selecionado.', + remoteFile: 'Arquivos remotos não são permitidos.', + folderUpload: 'Pastas não são permitidas.', + } + }, + ro: { + button: function(options) { + return 'Atașează ' + (options.limit == 1 ? 'fișier' : 'fișiere') + }, + feedback: function(options) { + return 'Selectează ' + (options.limit == 1 ? 'fișier' : 'fișiere') + ' pentru încărcare' + }, + feedback2: function(options) { + return options.length + ' ' + (options.length > 1 ? ' fișiere' : ' fișier') + ' selectate' + }, + confirm: 'Confirmă', + cancel: 'Anulează', + name: 'Nume', + type: 'Tip', + size: 'Mărimea', + dimensions: 'Dimensiunea', + duration: 'Durata', + crop: 'Crop', + rotate: 'Rotire', + sort: 'Sortare', + open: 'Deschide', + download: 'Download', + remove: 'Șterge', + drop: 'Aruncați fișierele aici pentru a le încărca', + paste: '
    Se atașează fișier, faceți click aici pentru anulare', + removeConfirmation: 'Sigur doriți să ștergeți acest fișier?', + errors: { + filesLimit: function(options) { + return 'Doar ${limit} ' + (options.limit == 1 ? 'fișier poate fi selectat' : 'fișiere pot fi selectat') + '.' + }, + filesType: 'Doar fișierele ${extensions} pot fi încărcate.', + fileSize: '${name} este prea mare! Vă rugăm să selectați un fișier până la ${fileMaxSize} MB.', + filesSizeAll: 'Fișierele selectate sunt prea mari! Vă rugăm să selectați fișiere până la ${maxSize} MB.', + fileName: 'Fișierul cu același numele ${nume} a fost deja selectat.', + remoteFile: 'Fișierele remote nu sunt permise.', + folderUpload: 'Folderele nu sunt permise.', + } + }, + ru: { + button: function(options) { + return 'Выбрать ' + (options.limit == 1 ? 'файл' : 'файлы') + }, + feedback: function(options) { + return 'Выберите ' + (options.limit == 1 ? 'файл' : 'файлы') + ' для загрузки' + }, + feedback2: function(options) { + return options.length + ' ' + (options.length > 1 ? 'файлов выбрано' : 'файл выбран') + }, + confirm: 'Сохранить', + cancel: 'Отмена', + name: 'Имя', + type: 'Формат', + size: 'Размер', + dimensions: 'Размеры', + duration: 'Длительность', + crop: 'Обрезать', + rotate: 'Повернуть', + sort: 'Сортировть', + open: 'Открыть', + download: 'Скачать', + remove: 'Удалить', + drop: 'Перетащите файлы сюда для загрузки', + paste: '
    Вставка файла, нажмите здесь, чтобы отменить', + removeConfirmation: 'Вы уверены, что хотите удалить этот файл?', + errors: { + filesLimit: function(options) { + return 'Только ${limit} ' + (options.limit == 1 ? 'файл может быть загружен' : 'файлов могут быть загружены') + '.' + }, + filesType: 'Только ${extensions} файлы могут быть загружены.', + fileSize: '${name} слишком большой! Пожалуйста, выберите файл до ${fileMaxSize} МБ.', + filesSizeAll: 'Выбранные файлы слишком большие! Пожалуйста, выберите файлы до ${maxSize} МБ.', + fileName: 'Файл с таким именем ${name} уже выбран.', + remoteFile: 'Удаленные файлы не допускаются.', + folderUpload: 'Папки не допускаются.', + } + }, + tr: { + button: function(options) { + return (options.limit == 1 ? 'Dosya' : 'Dosyaları') + ' seç' + }, + feedback: function(options) { + return 'Yüklemek istediğiniz ' + (options.limit == 1 ? 'dosyayı' : 'dosyaları') + ' seçin.' + }, + feedback2: function(options) { + return options.length + ' ' + (options.length > 1 ? 'dosyalar' : 'dosya') + ' seçildi.' + }, + confirm: 'Onayla', + cancel: 'İptal', + name: 'İsim', + type: 'Tip', + size: 'Boyut', + dimensions: 'Boyutlar', + duration: 'Süre', + crop: 'Kırp', + rotate: 'Döndür', + sort: 'Sırala', + open: 'Aç', + download: 'İndir', + remove: 'Sil', + drop: 'Yüklemek için dosyaları buraya bırakın', + paste: '
    Bir dosyayı yapıştırmak veya iptal etmek için buraya tıklayın', + removeConfirmation: 'Bu dosyayı silmek istediğinizden emin misiniz?', + errors: { + filesLimit: function(options) { + return 'Sadece ${limit} ' + (options.limit == 1 ? 'dosya' : 'dosyalar') + ' yüklenmesine izin verilir.' + }, + filesType: 'Sadece ${extensions} dosyaların yüklenmesine izin verilir.', + fileSize: '${name} çok büyük! Lütfen ${fileMaxSize} MB\'a kadar bir dosya seçin.', + filesSizeAll: 'Seçilen dosyalar çok büyük! Lütfen ${maxSize} MB\'a kadar dosyaları seçin', + fileName: 'Aynı ada sahip bir dosya ${name} zaten seçilmiştir.', + remoteFile: 'Uzak dosyalara izin verilmez.', + folderUpload: 'Klasörlere izin verilmez.', + } + } + }; + + $.fn.fileuploader.defaults = { + limit: null, + maxSize: null, + fileMaxSize: null, + extensions: null, + disallowedExtensions: null, + changeInput: true, + inputNameBrackets: true, + theme: 'default', + thumbnails: { + box: '
    ' + + '
      ' + + '
      ', + boxAppendTo: null, + item: '
    • ' + + '
      ' + + '
      ${image}
      ' + + '
      ' + + '
      ${name}
      ' + + '${size2}' + + '
      ' + + '
      ' + + '
      ' + + '
      ' + + '
      ${progressBar}
      ' + + '
    • ', + item2: '
    • ' + + '
      ' + + '
      ${image}
      ' + + '' + + '
      ' + + '' + + '
      ' + + '
      ' + + '
    • ', + popup: { + container: 'body', + loop: true, + arrows: true, + zoomer: true, + template: function(data) { return '
      ' + + '' + + '
      ' + + '${reader.node}' + + '
      ' + + '
      ' + + '' + + '
      ' + + '
        ' + + '
      • ' + + '${captions.name}:' + + '
        ${name}
        ' + + '
      • ' + + '
      • ' + + '${captions.type}:' + + '
        ${extension.toUpperCase()}
        ' + + '
      • ' + + '
      • ' + + '${captions.size}:' + + '
        ${size2}
        ' + + '
      • ' + + (data.reader && data.reader.width ? '
      • ' + + '${captions.dimensions}:' + + '
        ${reader.width}x${reader.height}px
        ' + + '
      • ' : '' + ) + + (data.reader && data.reader.duration ? '
      • ' + + '${captions.duration}:' + + '
        ${reader.duration2}
        ' + + '
      • ' : '' + ) + + '
      ' + + '
      ' + + '
        ' + + '
      • ' + + (data.editor ? '
      • ' : '' + ) + + '
      ' + + '
      ' + + '
      ' + + '' + + '
      '; }, + onShow: function(item) { + item.popup.html.on('click', '[data-action="remove"]', function(e) { + item.popup.close(); + item.remove(); + }).on('click', '[data-action="cancel"]', function(e) { + item.popup.close(); + }).on('click', '[data-action="save"]', function(e) { + if (item.editor) + item.editor.save(); + if (item.popup.close) + item.popup.close(); + }); + }, + onHide: null + }, + itemPrepend: false, + removeConfirmation: true, + startImageRenderer: true, + synchronImages: true, + useObjectUrl: false, + canvasImage: true, + videoThumbnail: true, + pdf: true, + exif: true, + touchDelay: 0, + _selectors: { + list: '.fileuploader-items-list', + item: '.fileuploader-item', + start: '.fileuploader-action-start', + retry: '.fileuploader-action-retry', + remove: '.fileuploader-action-remove', + sorter: '.fileuploader-action-sort', + rotate: '.fileuploader-action-rotate', + popup: '.fileuploader-popup-preview', + popup_open: '.fileuploader-action-popup' + }, + beforeShow: null, + onItemShow: null, + onItemRemove: function(html) { + html.children().animate({'opacity': 0}, 200, function() { + setTimeout(function() { + html.slideUp(200, function() { + html.remove(); + }); + }, 100); + }); + }, + onImageLoaded: null + }, + editor: false, + sorter: false, + reader: { + thumbnailTimeout: 5000, + timeout: 12000, + maxSize: 20 + }, + files: null, + upload: null, + dragDrop: true, + addMore: false, + skipFileNameCheck: false, + clipboardPaste: true, + listInput: true, + enableApi: false, + listeners: null, + onSupportError: null, + beforeRender: null, + afterRender: null, + beforeSelect: null, + onFilesCheck: null, + onFileRead: null, + onSelect: null, + afterSelect: null, + onListInput: null, + onRemove: null, + onEmpty: null, + dialogs: { + alert: function(text) { + return alert(text); + }, + confirm: function(text, callback) { + confirm(text) ? callback() : null; + } + }, + captions: $.fn.fileuploader.languages.en + } +})(jQuery); \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/jquery.fileuploader.sass b/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/jquery.fileuploader.sass new file mode 100644 index 0000000..1622b26 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/jquery.fileuploader.sass @@ -0,0 +1,1261 @@ +/** + * Fileuploader + * Copyright (c) 2019 Innostudio.de + * Website: https://innostudio.de/fileuploader/ + * Version: 2.2 (23-Nov-2019) + * Requires: jQuery v1.7.1 or later + * License: https://innostudio.de/fileuploader/documentation/#license + */ + +// Variables +$fileuploader-distance: 16px; +$fileuploader-background: #fafbfd; +$fileuploader-theme-color-1: #3A8FFE; +$fileuploader-theme-color-2: #9658FE; +$fileuploader-color-active: #789BEC; +$fileuploader-color-error: #FE7676; +$fileuploader-color-success: #43D084; +$fileuploader-color-action: #c0c6d2; +$fileuploader-borderRadius: 6px; + +$fileuploader-button-background: #e6ebf4; +$fileuploader-button-color: #90a0bc; + +$fileuploader-input-caption-color: $fileuploader-color-active; +$fileuploader-input-caption-background: #fff; +$fileuploader-input-caption-border: 1px solid #ebeef1; + +$fileuploader-item-borderBottom: $fileuploader-input-caption-border; +$fileuploader-item-color: #74809D; +$fileuploader-item-mutedColor: #979fb8; +$fileuploader-item-actionSize: 20px; +$fileuploader-item-thumbnailSize: 36px; + +$fileuploader-popup-zIndex: 1090; +$fileuploader-popup-padding: 16px; +$fileuploader-popup-headerHeight: 64px; +$fileuploader-popup-footerHeight: 56px; +$fileuploader-popup-content-color: #fdfdfd; +$fileuploader-popup-content-muted: #80868b; +$fileuploader-popup-move-width: 56px; +$fileuploader-cropper-pointWidth: 24px; +$fileuploader-popup-moveSmall-width: 30px; + +// SVG Images +$icon-loader: "PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJsb2FkZXItMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI0MHB4IiBoZWlnaHQ9IjQwcHgiIHZpZXdCb3g9IjAgMCA1MCA1MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTAgNTA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBmaWxsPSIjZGRlNGY2IiBkPSJNNDMuOTM1LDI1LjE0NWMwLTEwLjMxOC04LjM2NC0xOC42ODMtMTguNjgzLTE4LjY4M2MtMTAuMzE4LDAtMTguNjgzLDguMzY1LTE4LjY4MywxOC42ODNoNC4wNjhjMC04LjA3MSw2LjU0My0xNC42MTUsMTQuNjE1LTE0LjYxNWM4LjA3MiwwLDE0LjYxNSw2LjU0MywxNC42MTUsMTQuNjE1SDQzLjkzNXoiPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZVR5cGU9InhtbCIgYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIGZyb209IjAgMjUgMjUiIHRvPSIzNjAgMjUgMjUiIGR1cj0iMC42cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiLz4gPC9wYXRoPiA8L3N2Zz4="; +$icon-file: "PHN2ZyB3aWR0aD0iNDkiIGhlaWdodD0iNjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiA8Zz4gIDx0aXRsZT5iYWNrZ3JvdW5kPC90aXRsZT4gIDxyZWN0IGZpbGw9Im5vbmUiIGlkPSJjYW52YXNfYmFja2dyb3VuZCIgaGVpZ2h0PSI0MDIiIHdpZHRoPSI1ODIiIHk9Ii0xIiB4PSItMSIvPiA8L2c+IDxnPiAgPHRpdGxlPkxheWVyIDE8L3RpdGxlPiAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBmaWxsPSIjYmJjYWNmIiBpZD0ic3ZnXzIiIGQ9Im00OSwxNi44NDJsMCw0Mi4xMDVjMCwyLjc5MSAtMi4yNyw1LjA1MyAtNS4wNjksNS4wNTNsLTM4Ljg2MiwwYy0yLjgsMCAtNS4wNjksLTIuMjYyIC01LjA2OSwtNS4wNTNsMCwtNTMuODk0YzAsLTIuNzkxIDIuMjY5LC01LjA1MyA1LjA2OSwtNS4wNTNsMjcuMDM0LDBsMTYuODk3LDE2Ljg0MnoiIGNsYXNzPSJjbHMtMSIvPiAgPHBhdGggZmlsbD0iI2RmZWFlZSIgZmlsbC1ydWxlPSJldmVub2RkIiBpZD0ic3ZnXzQiIGQ9Im00OSwxNS44OTlsMCwyLjA5NmwtMTMuODEzLDBjLTIuODYsMCAtNC4xNzksLTIuMzIgLTQuMTc5LC01LjE4MWwwLC0xMi44MTRsMi4wOTIsMGwxNS45LDE1Ljg5OXoiIGNsYXNzPSJjbHMtMyIvPiA8L2c+PC9zdmc+"; + +// Mixins +@mixin gradient-background($from, $to, $degrees: -45deg) { + background: $to; + background: -moz-linear-gradient($degrees, $from 0%, $to 100%); + background: -webkit-linear-gradient($degrees, $from 0%, $to 100%); + background: linear-gradient(180deg + $degrees, $from 0%, $to 100%); +} +@mixin fileuploader-range-track() { + width: 100%; + height: 4px; + cursor: pointer; + animate: 0.2s; + box-shadow: none; + background: $fileuploader-color-active; + border-radius: 6px; +} +@mixin fileuploader-range-thumb() { + height: 14px; + width: 14px; + border-radius: 50%; + border: 0; + background: #fff; + cursor: pointer; + -webkit-appearance: none; + margin-top: -5px; + box-shadow: 2px 2px 8px rgba(0,0,0,0.8); +} + +// Extends +%fileuploader-transition-soft { + -webkit-transition: 700ms cubic-bezier(0.17, 0.67, 0, 1.01); + -o-transition: 700ms cubic-bezier(0.17, 0.67, 0, 1.01); + transition: 700ms cubic-bezier(0.17, 0.67, 0, 1.01); +} +%fileuploader-animation { + -webkit-animation: fileuploaderFadeIn 0.2s ease; + animation: fileuploaderFadeIn 0.2s ease; +} +%fileuploader-button { + display: inline-block; + margin: 0; + padding: 14px 22px; + border: none; + border-radius: 30px; + outline: 0; + font-weight: bold; + cursor: pointer; + vertical-align: middle; + text-decoration: none; + @extend %fileuploader-transition-soft; + @extend %user-select-none; +} +%fileuploader-button-default { + @extend %fileuploader-button; + background: $fileuploader-button-background; + color: $fileuploader-button-color; + + &:hover { + background: lighten($fileuploader-button-background, 2%); + transform: translateY(-1px); + } + &:active { + background: darken($fileuploader-button-background, 2%); + transform: translateY(1px); + } +} +%fileuploader-button-theme { + @extend %fileuploader-button; + @include gradient-background($fileuploader-theme-color-1, $fileuploader-theme-color-2); + background-size: 140% auto; + background-position: center; + color: #fff; + box-shadow: 0 4px 18px rgba(0, 0, 0, .04); + + &:hover { + background-position: left; + box-shadow: 0 8px 25px rgba(0, 0, 0, .15); + transform: translateY(-2px); + } + &:active { + background-position: right; + box-shadow: 0 4px 25px rgba(0, 0, 0, .15); + transform: translateY(2px); + } +} +%fileuploader-loader { + content: ''; + position: absolute; + min-width: 24px; + min-height: 24px; + max-width: 48px; + max-height: 48px; + background: url('data:image/svg+xml;base64,#{$icon-loader}') no-repeat center; + background-size: contain; +} +%transform-to-center { + left: 50%; + top: 50%; + -webkit-transform: translateX(-50%) translateY(-50%); + transform: translateX(-50%) translateY(-50%); +} +%transform-to-vertical-center { + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} +%user-select-none { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +/* configuration */ +.fileuploader, +.fileuploader *, +.fileuploader :before, +.fileuploader :after, +.fileuploader-popup, +.fileuploader-popup *, +.fileuploader-popup :before, +.fileuploader-popup :after { + box-sizing: border-box; +} + +.fileuploader button, +.fileuploader-popup button { + display: inline-block; + padding: 0; + margin: 0; + border: 0; + font: inherit; + background: none; + box-shadow: none; +} +.fileuploader button:focus, +.fileuploader-popup button:focus { + outline: 0; +} + +/* main */ +.fileuploader { + display: block; + width: 100%; + padding: $fileuploader-distance; + margin: $fileuploader-distance 0; + background: $fileuploader-background; + border-radius: $fileuploader-borderRadius; + line-height: normal; +} + +.fileuploader-icon-main { + display: inline-block; + font-size: 18px; + color: $fileuploader-color-active; +} + +/* input */ +.fileuploader-input { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + border: 1px solid transparent; + border-radius: 30px; + cursor: pointer; + + .fileuploader-input-caption { + position: relative; + display: inline-block; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + -ms-flex-item-align: start; + align-self: flex-start; + + padding: 13px $fileuploader-distance; + margin-right: $fileuploader-distance; + background: $fileuploader-input-caption-background; + border: $fileuploader-input-caption-border; + border-radius: 30px; + color: $fileuploader-input-caption-color; + box-shadow: 0 4px 18px rgba(0, 0, 0, .01); + font-weight: bold; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + @extend %fileuploader-transition-soft; + + .fileuploader-focused & { + border-color: $fileuploader-input-caption-color; + } + + /* + .fileuploader.fileuploader-is-uploading & { + padding-left: 40px; + + &:after { + @extend %fileuploader-loader; + left: 10px; + top: 50%; + margin-top: -12px; + } + } + */ + + .fileuploader-pending-loader { + @extend %fileuploader-loader; + position: relative; + display: inline-block; + vertical-align: middle; + min-height: 22px; + margin-right: 6px; + } + } + + .fileuploader-input-button { + @extend %fileuploader-button-theme; + } + + &.fileuploader-dragging { + background: #fff; + border: $fileuploader-input-caption-border; + border-style: dashed; + + .fileuploader-input-caption { + border-color: transparent; + } + .fileuploader-input-button { + -webkit-transform: translateX(100%); + transform: translateX(100%); + opacity: 0; + } + } + + .fileuploader-disabled & { + opacity: 0.7; + cursor: default; + pointer-events: none !important; + } +} + +/* items */ +.fileuploader-items { + .fileuploader-items-list { + display: block; + margin: 0 $fileuploader-distance*-1; + padding: 0; + list-style: none; + } + + .fileuploader-item { + position: relative; + margin: 0; + padding: 20px $fileuploader-distance 20px $fileuploader-distance + 6px; + border-bottom: $fileuploader-item-borderBottom; + @extend %fileuploader-animation; + animation-duration: 0.6s; + + &:last-child { + border-bottom: 0; + margin-bottom: $fileuploader-distance*-1; + } + + &.upload-failed { + background: rgba(254, 84, 111, 0.06); + } + + &.upload-pending .fileuploader-action-remove:after { + @extend %fileuploader-loader; + position: absolute; + left: -8px; + top: -8px; + width: 36px; + height: 36px; + } + + .columns { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + z-index: 2; + } + + .column-thumbnail { + position: relative; + width: $fileuploader-item-thumbnailSize; + height: $fileuploader-item-thumbnailSize; + } + + .column-title { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + padding-left: $fileuploader-distance; + padding-right: $fileuploader-distance; + color: $fileuploader-item-color; + overflow: hidden; + + a { + display: inline-block; + width: 100%; + height: 100%; + color: $fileuploader-item-color; + text-decoration: none; + } + + div { + width: 100%; + font-weight: bold; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + } + + span { + font-size: 12px; + color: $fileuploader-item-mutedColor; + } + } + + .column-actions { + margin: 0 $fileuploader-distance; + } + + .fileuploader-item-image { + position: relative; + width: 100%; + height: 100%; + border-radius: $fileuploader-borderRadius; + background: #fff; + overflow: hidden; + + &.fileuploader-loading { + &:after { + content: ''; + @extend %fileuploader-loader; + @extend %transform-to-center; + + width: 50%; + height: 50%; + } + } + + img, + canvas { + position: absolute; + max-width: none; + max-height: 100%; + + @extend %transform-to-center; + @extend %fileuploader-animation; + } + } + + .fileuploader-item-icon { + position: relative; + width: 100%; + height: 100%; + text-align: center; + color: #fff; + font-size: 11px; + background: #ddd; + border-radius: 4px; + cursor: default; + @extend %user-select-none; + @extend %fileuploader-animation; + + &.is-bright-color { + color: #888; + } + + i { + position: absolute; + display: block; + width: 90%; + font-style: normal; + font-weight: bold; + overflow: hidden; + white-space: nowrap; + @extend %transform-to-center; + } + } + + span.fileuploader-action-popup { + display: none; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(43, 56, 71, 0.2); + border-radius: $fileuploader-borderRadius; + cursor: pointer; + opacity: 0; + + @extend %fileuploader-transition-soft; + + &:hover { + opacity: 1; + } + + &:active { + background: rgba(43, 56, 71, 0.4); + } + } + + .fileuploader-action { + position: relative; + display: inline-block; + width: $fileuploader-item-actionSize; + height: $fileuploader-item-actionSize; + color: $fileuploader-color-action; + cursor: pointer; + vertical-align: top; + text-align: center; + + @extend %transform-to-vertical-center; + @extend %fileuploader-transition-soft; + @extend %fileuploader-animation; + + & + .fileuploader-action { + margin-left: $fileuploader-distance; + } + + &:hover { + color: $fileuploader-color-active; + } + + &:active { + color: darken($fileuploader-color-active, 4%); + } + + i { + width: 100%; + height: 100%; + font-size: $fileuploader-item-actionSize; + line-height: $fileuploader-item-actionSize; + } + + &.fileuploader-action-remove { + color: #fff; + background: $fileuploader-color-error; + border-radius: 50%; + box-shadow: -1px 1px 6px rgba($fileuploader-color-error, 0.8); + + i { + font-size: 14px; + text-shadow: none; + } + + &:hover { + background-color: lighten($fileuploader-color-error, 4%); + } + &:active { + background-color: darken($fileuploader-color-error, 4%); + } + } + &.fileuploader-action-success { + color: #fff; + background: $fileuploader-color-success; + border-radius: 50%; + box-shadow: -1px 1px 6px rgba($fileuploader-color-success, 0.8); + + i { + font-size: 14px; + text-shadow: none; + } + + &:hover { + background-color: lighten($fileuploader-color-success, 4%); + } + &:active { + background-color: darken($fileuploader-color-success, 4%); + } + } + + &.fileuploader-action-remove.fileuploader-action-success { + i:before { + content: "\e904"; + } + &:hover, + &:active { + background: $fileuploader-color-error; + box-shadow: -1px 1px 6px rgba($fileuploader-color-error, 0.8); + + i:before { + content: "\e923"; + } + } + &:active { + background-color: darken($fileuploader-color-error, 4%); + } + } + } + + &.file-has-popup span.fileuploader-action-popup { + display: block; + } + + .fileuploader-progressbar { + position: absolute; + left: 0; + bottom: 0; + width: 100%; + height: 4px; + border-radius: $fileuploader-borderRadius; + + .bar { + position: absolute; + left: 0; + top: 0; + width: 0%; + height: 100%; + border-radius: $fileuploader-borderRadius; + background: $fileuploader-color-active; + box-shadow: 0 4px 8px -1px rgba($fileuploader-color-active, 0.6); + @extend %fileuploader-transition-soft; + } + } + + .progress-bar2 { + .fileuploader-progressbar { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow: hidden; + z-index: 1; + @extend %user-select-none; + + .bar { + position: absolute; + left: 0; + top: 0; + width: 0%; + height: 100%; + border-radius: 0; + background: rgba(104, 125, 219, 0.08); + box-shadow: none; + @extend %fileuploader-transition-soft; + } + } + + span { + position: absolute; + @extend %transform-to-vertical-center; + right: $fileuploader-distance; + color: rgba(151, 159, 184, 0.16); + font-size: 48px; + } + } + + &.sorting { + background: $fileuploader-background; + border-radius: $fileuploader-borderRadius; + opacity: 0.8; + box-shadow: 0 1px 4px rgba(0,0,0,0.2); + z-index: 799; + } + + &.sorting, + &.sorting .fileuploader-item-image img, + &.sorting .fileuploader-item-image canvas, + &.sorting .fileuploader-item-icon, + &.sorting .fileuploader-action { + -webkit-animation: none; + animation: none; + } + } + + .fileuploader-sorter-placeholder { + background: rgba(0, 0, 0, 0.03); + margin: 0; + padding: 0; + -webkit-animation: none; + animation: none; + } +} + +/* popup */ +.fileuploader-popup { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow: hidden; + background: #191d1e; + z-index: $fileuploader-popup-zIndex; + @extend %fileuploader-animation; + animation-duration: 0.4s; + + &.loading:after { + @extend %fileuploader-loader; + @extend %transform-to-center; + width: 48px; + height: 48px; + z-index: 8; + } + + .fileuploader-popup-preview { + position: relative; + width: 100%; + height: 100%; + overflow: auto; + z-index: 2; + } + + .fileuploader-popup-node { + position: relative; + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: flex-start; + max-width: 100%; + height: 100%; + min-width: 20px; + min-height: 20px; + padding: $fileuploader-popup-headerHeight + $fileuploader-popup-padding $fileuploader-popup-move-width $fileuploader-popup-footerHeight + $fileuploader-popup-padding/2; + overflow: hidden; + @extend %fileuploader-animation; + + &.is-zoomed { + display: block; + } + + .reader-node { + position: relative; + max-width: 100%; + max-height: 100%; + text-align: center; + -webkit-transform: translateZ(0); + transform: translateZ(0); + + &.is-movable { + cursor: grab; + } + + &.is-moving, + &.is-amoving:hover { + cursor: grabbing; + + .area-move, + .point { + cursor: grabbing !important; + } + } + } + + &.image .reader-node > img, + &.video .reader-node > video, + &.audio .reader-node > audio, + &.astext .reader-node > div { + width: auto; + max-width: 100%; + max-height: 100%; + margin: 0; + padding: 0; + color: #47525d; + background: #fafafa; + box-shadow: 0 0 18px rgba(0,0,0,0.4); + -webkit-transform: translateZ(0); + transform: translateZ(0); + border-radius: 0; + } + + &.audio .reader-node audio { + width: 450px; + } + + &.application .reader-node iframe { + width: 100%; + height: 100%; + border: 0; + border-radius: 3px; + } + + &.astext .reader-node div { + max-width: 992px; + padding: 20px; + margin: 0 auto; + font-size: 14px; + line-height: 16px; + text-align: left; + overflow-y: auto; + white-space: pre-wrap; + } + + &.has-node-centered { + display: block; + + .reader-node { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + } + } + + .fileuploader-popup-file-icon { + position: relative; + display: inline-block; + width: 80px; + height: 80px; + background: url("data:image/svg+xml;base64,#{$icon-file}") no-repeat center; + background-size: contain; + @extend %user-select-none; + + div { + position: absolute; + bottom: 14px; + left: 0; + padding: 4px 6px; + border-radius: 4px; + color: #fff; + max-width: 100%; + word-wrap: break-word; + + &.is-bright-color { + color: #888; + } + + i { + text-transform: uppercase; + font-style: normal; + font-weight: bold; + white-space: nowrap; + } + } + } + } + + .fileuploader-popup-content { + color: $fileuploader-popup-content-color; + text-shadow: 1px 1px 1px rgba(0,0,0,0.4); + + ul { + list-style: none; + margin: 0; + padding: 0; + + li { + display: inline-block; + padding: 0; + margin: 0; + + & + li { + margin-left: $fileuploader-popup-padding; + } + } + } + } + + .fileuploader-popup-header { + position: absolute; + top: 0; + left: 0; + display: flex; + flex-direction: row; + align-items: center; + width: 100%; + padding: $fileuploader-popup-padding; + @include gradient-background(rgba(#000, 0), rgba(#000, 0.8), 180deg); + z-index: 2; + + .fileuploader-popup-meta { + display: flex; + flex: 1; + white-space: nowrap; + overflow: hidden; + + li:first-child { + overflow: hidden; + } + + span { + display: block; + color: $fileuploader-popup-content-muted; + font-size: 14px; + } + + h5 { + max-width: 100%; + margin: 4px 0 0; + font-size: 14px; + font-weight: bold; + text-overflow: ellipsis; + overflow: hidden; + } + } + + .fileuploader-popup-info:not(:empty) { + flex: 1; + margin-left: $fileuploader-popup-padding; + } + + .fileuploader-popup-buttons { + margin-left: $fileuploader-popup-padding; + } + + .fileuploader-popup-button { + @extend %fileuploader-button-default; + padding: 14px 24px; + text-shadow: none; + + &.button-success { + @extend %fileuploader-button-theme; + } + } + } + + .fileuploader-popup-footer { + position: absolute; + left: 0; + bottom: 0; + width: 100%; + text-align: center; + @include gradient-background(rgba(#000, 0), rgba(#000, 0.8), 0deg); + z-index: 2; + + .fileuploader-popup-tools { + li { + [data-action] { + display: inline-block; + padding: $fileuploader-popup-padding; + padding-bottom: $fileuploader-popup-padding - 3px; + cursor: pointer; + text-decoration: none; + color: $fileuploader-popup-content-color; + border-bottom: 3px solid transparent; + @extend %fileuploader-transition-soft; + @extend %user-select-none; + + i { + display: inline-block; + font-size: 18px; + margin-top: -4px; + margin-right: 6px; + vertical-align: middle; + } + + &:hover { + border-bottom-color: $fileuploader-color-active; + color: #fff; + } + } + } + } + + .fileuploader-popup-zoomer { + font-size: 14px; + + button[data-action] { + width: 24px; + height: 24px; + line-height: 24px; + font-size: 16px; + border: none; + border-radius: 50%; + padding: 0; + vertical-align: middle; + color: $fileuploader-popup-content-color; + background: rgba(#fff, 0.1); + text-shadow: none; + @extend %fileuploader-transition-soft; + + &:hover { + background: rgba(#fff, 0.3); + } + } + + input { + display: inline-block; + -webkit-appearance: none; + width: 130px; + padding: 0; + margin: 0 16px; + vertical-align: middle; + background: transparent; + + &:focus { + outline: none; + } + + &::-webkit-slider-runnable-track { + @include fileuploader-range-track(); + } + + &::-webkit-slider-thumb { + @include fileuploader-range-thumb(); + } + + &::-moz-range-track { + @include fileuploader-range-track(); + } + + &::-moz-range-thumb { + @include fileuploader-range-thumb(); + } + } + + span { + display: inline-block; + min-width: 40px; + text-align: center; + margin-left: 6px; + color: #fff; + vertical-align: middle; + } + } + } + + .fileuploader-popup-move { + position: absolute; + display: none; + width: $fileuploader-popup-move-width; + height: 100%; + font-size: 24px; + bottom: 0; + left: 0; + color: #fff; + opacity: 0.4; + cursor: pointer; + z-index: 1; + @extend %user-select-none; + + &:hover { + opacity: 1; + } + + &:after { + position: absolute; + @extend %transform-to-center; + } + + &[data-action="next"] { + left: auto; + right: 0; + } + + } + + .fileuploader-popup-has-arrows .fileuploader-popup-move { + display: inline-block; + } + + .fileuploader-cropper, + .fileuploader-cropper * { + @extend %user-select-none; + } + + .fileuploader-cropper { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(17,20,27,.65); + z-index: 9; + + .fileuploader-cropper-area { + position: absolute; + left: 0; + top: 0; + width: 0; + height: 0; + z-index: 2; + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -ms-transform: translateZ(0); + -o-transform: translateZ(0); + transform: translateZ(0); + + &.has-grid:before, + &.has-grid:after { + content: ''; + position: absolute; + border: 1px solid rgba(250, 250, 250, 0.8); + opacity: 0; + -webkit-transition: all 0.4s ease; + transition: all 0.4s ease; + z-index: 1; + } + + &.has-grid:before { + top: 0; + left: 50%; + height: 100%; + width: 34%; + border-top: 0; + border-bottom: 0; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + } + + &.has-grid:after { + top: 50%; + left: 0; + height: 34%; + width: 100%; + border-left: 0; + border-right: 0; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + } + + &.has-grid.moving:before, + &.has-grid.moving:after { + opacity: 1; + } + + .point { + position: absolute; + width: $fileuploader-cropper-pointWidth; + height: $fileuploader-cropper-pointWidth; + z-index: 3; + + &:after { + content: ''; + width: $fileuploader-cropper-pointWidth/2; + height: $fileuploader-cropper-pointWidth/2; + position: absolute; + background: #fff; + box-shadow: 0 0 6px rgba(0,0,0,0.4); + border-radius: 50%; + @extend %transform-to-center; + } + + &.point-a { + top: $fileuploader-cropper-pointWidth/2 * -1; + left: $fileuploader-cropper-pointWidth/2 * -1; + cursor: nw-resize; + } + &.point-b { + top: $fileuploader-cropper-pointWidth/2 * -1; + left: 50%; + margin-left: $fileuploader-cropper-pointWidth/2 * -1; + cursor: n-resize; + } + &.point-c { + top: $fileuploader-cropper-pointWidth/2 * -1; + right: $fileuploader-cropper-pointWidth/2 * -1; + cursor: ne-resize; + } + &.point-d { + top: 50%; + right: $fileuploader-cropper-pointWidth/2 * -1; + margin-top: $fileuploader-cropper-pointWidth/2 * -1; + cursor: w-resize; + } + &.point-e { + bottom: $fileuploader-cropper-pointWidth/2 * -1; + right: $fileuploader-cropper-pointWidth/2 * -1; + cursor: nw-resize; + } + &.point-f { + bottom: $fileuploader-cropper-pointWidth/2 * -1; + left: 50%; + margin-left: $fileuploader-cropper-pointWidth/2 * -1; + cursor: s-resize; + } + &.point-g { + bottom: $fileuploader-cropper-pointWidth/2 * -1; + left: $fileuploader-cropper-pointWidth/2 * -1; + cursor: sw-resize; + } + &.point-h { + left: $fileuploader-cropper-pointWidth/2 * -1; + top: 50%; + margin-top: $fileuploader-cropper-pointWidth/2 * -1; + cursor: w-resize; + } + } + + .area-move { + position: absolute; + width: 100%; + height: 100%; + z-index: 2; + cursor: move; + + &:after { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + border: 1px solid rgba(#fff, 0.8); + } + } + + .area-image { + position: relative; + overflow: hidden; + width: 100%; + height: 100%; + + img { + width: auto; + height: auto; + max-width: none; + max-height: none; + position: absolute; + left: 0; + top: 0; + background: #fff; + -webkit-transform-origin: top left; + transform-origin: top left; + } + } + + .area-info { + position: absolute; + bottom: -12px; + left: 50%; + color: #fff; + font-family: sans-serif; + line-height: 1; + font-size: 12px; + text-align: center; + padding: 4px 8px; + background: rgba(#000, 0.6); + border-radius: 14px; + white-space: nowrap; + opacity: 0; + -webkit-transform: translateX(-50%) translateY(100%); + transform: translateX(-50%) translateY(100%); + -webkit-transition: all 0.4s ease; + transition: all 0.4s ease; + z-index: 2; + } + + &.show-info .area-info { + opacity: 0; + } + } + } +} + +/* responsive */ +@media all and (max-width: 768px) { + .fileuploader-popup { + .fileuploader-popup-header { + display: block; + padding: 0; + + .fileuploader-popup-meta { + padding: $fileuploader-popup-padding; + } + + .fileuploader-popup-buttons { + position: fixed; + left: 0; + bottom: $fileuploader-popup-padding; + width: 100%; + margin: 0; + text-align: center; + } + } + + .fileuploader-popup-node { + padding-left: $fileuploader-popup-padding; + padding-right: $fileuploader-popup-padding; + padding-bottom: 117px; + } + + .fileuploader-popup-footer { + bottom: 61px; + background: none; + + .fileuploader-popup-zoomer { + display: none; + } + + .fileuploader-popup-tools li a:hover { + border-color: transparent; + } + } + + .fileuploader-popup-move { + width: $fileuploader-popup-moveSmall-width; + } + + .fileuploader-popup-has-arrows .fileuploader-popup-node { + padding-left: $fileuploader-popup-moveSmall-width; + padding-right: $fileuploader-popup-moveSmall-width; + } + } +} + +/* animation */ +@-webkit-keyframes fileuploaderFadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes fileuploaderFadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/node/fileuploader.js b/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/node/fileuploader.js new file mode 100644 index 0000000..8181e82 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/node/fileuploader.js @@ -0,0 +1,714 @@ +/** + * Fileuploader + * Copyright (c) 2019 Innostudio.de + * Website: https://innostudio.de/fileuploader/ + * Version: 2.2 (23-Nov-2019) + * Requires: multer, mime-types and gm + * License: https://innostudio.de/fileuploader/documentation/#license + */ +const multer = require('multer') +const mime = require('mime-types') +const fs = require('fs') +const gm = require('gm') +const emptyFn = function() {} + +const error_messages = { + EMPTY_FIELD: 'No file was choosed. Please select one', + MAX_FILES_NUMBER: 'Maximum number of files is exceeded', + INVALID_TYPE: 'File type is not allowed for {file_name}', + MAX_SIZE: 'Files are too large', + MAX_FILE_SIZE: '{file_name} is too large' +} + +var Fileuploader = function(fieldname, options, req, res) { + var defaults = { + limit: null, + maxSize: null, + fileMaxSize: null, + extensions: null, + disallowedExtensions: null, + required: false, + uploadDir: 'uploads/', + title: ['auto', 12], + replace: false, + editor: null, + listInput: true, + files: [], + move_uploaded_file: function(file) { + fs.renameSync(file.tmp, file.file); + + return true; + }, + validate_file: null + }; + + this.req = req; + this.res = res; + this.options = extendDefaults.call(this, options, defaults); + this.multer = multer({ + dest: this.options.uploadDir, + fileFilter: fileFilter + }); + this.field = { + name: fieldname, + input: [], + listInput: null + }; + + return this; +} + +Fileuploader.prototype.getFileList = function(customKey) { + var result = [], + files = this.options.files; + + if (isset(customKey)) { + files.forEach(function(item, index) { + var attr = getFileAttribute(item, customKey); + + result.push(attr ? attr : item.file); + }); + } else { + result = files; + } + + return result; +} + +Fileuploader.prototype.getUploadedFiles = function() { + return this.options.files.filter(item => isset(item.uploaded)); +} + +Fileuploader.prototype.getPreloadedFiles = function() { + return this.options.files.filter(item => !isset(item.uploaded)); +} + +Fileuploader.prototype.getRemovedFiles = function(customKey = 'file') { + var result = [], + files = this.options.files, + listInput = this.field.listInput; + + if (listInput != null) { + files.forEach(function(item, index, object) { + if (listInput.list.indexOf(getFileAttribute(item, customKey)) == -1 && !isset(item.uploaded)) { + result.push(item); + object.splice(index, 1); + } + }); + } + + return result; +} + +Fileuploader.prototype.getListInput = function() { + return this.field.listInput; +} + +Fileuploader.prototype.generateInput = function() { + var attributes = [], + properties = Object.assign({}, this.options, {name: this.field.name}); + + for(var key in properties) { + var value = properties[key], + attribute = 'data-fileuploader-' + key; + + if (value) { + switch (key) { + case 'limit': + case 'maxSize': + case 'fileMaxSize': + attributes.push({key: attribute, value: value}); + break; + case 'listInput': + attributes.push({key: attribute, value: typeof value == 'boolean' ? JSON.stringify(value) : value}); + break; + case 'extensions': + attributes.push({key: attribute, value: value.join(',')}); + break; + case 'name': + attributes.push({key: key, value: value}); + break; + case 'required': + attributes.push({key: key, value: ''}); + break; + case 'files': + attributes.push({key: attribute, value: JSON.stringify(value)}); + break; + } + } + } + + return ' attr.key + "='" + attr.value.replace(/\'/g, '"') + "'").join(' ') + '>'; +} + +Fileuploader.prototype.resize = function(filename, width = null, height = null, destination = null, crop = false, quality = 90, rotation = 0, callback = null) { + if (!fs.existsSync(filename) || /^image\//.test(this.mimeContentType(filename)) == false) + return false; + + var source = gm(filename), + imageWidth = 0, + imageHeight = 0, + hasRotation = rotation, + hasCrop = crop instanceof Object || crop == true, + hasResizing = width || height, + destInfo = pathinfo(destination || filename), + ratio; + + source.size(function(err, value) { + if (!value) + return; + + imageWidth = value.width; + imageHeight = value.height; + crop = { + left: 0, + top: 0, + width: imageWidth, + height: imageHeight, + _paramCrop: crop + }; + if (crop._paramCrop instanceof Object) + Object.assign(crop, crop._paramCrop); + + source.autoOrient(); + + if (hasRotation) + source.rotate('black', rotation); + + width = width || crop.width; + height = height || crop.height; + ratio = width / height; + + if (hasCrop) { + source.crop(crop.width, crop.height, crop.left, crop.top); + } + + var imageRatio = imageWidth / imageHeight; + + if (crop._paramCrop === true) { + if (imageRatio >= ratio) { + crop.newWidth = crop.width / (crop.height / height); + crop.newHeight = height; + } else { + crop.newHeight = crop.height / (crop.width / width); + crop.newWidth = width; + } + + crop.left = (crop.newWidth - width) / 2; + crop.top = (crop.newHeight - height) / 2; + + if (crop.width < width || crop.height < height) { + crop.left = crop.width < width ? width/2 - crop.width/2 : 0; + crop.top = crop.height < height ? height/2 - crop.height/2 : 0; + crop.newWidth = crop.width; + crop.newHeight = crop.height; + } + + source.resize(crop.newWidth, crop.newHeight, "!").crop(width, height, crop.left, crop.top); + } else if (crop.width > width && crop.height > height) { + var newRatio = crop.width / crop.height; + + if (ratio > newRatio) + width = height * newRatio; + else + height = width / newRatio; + + source.resize(width, height, "!"); + } + + source.quality(quality); + source.setFormat(destInfo.extension || 'png'); + source.write(destination || filename, callback || emptyFn); + }); +} + +Fileuploader.prototype.mimeContentType = function(file) { + return mime.lookup(file); +} + +Fileuploader.prototype.cleanChunkedFiles = function(directory, time = 3600000) { + fs.readdir(directory, function(err, files) { + (files || []).filter(file => /^\.unconfirmed\_/.test(file)).forEach(function(file, index) { + file = directory + file; + + fs.stat(file, function(err, stat) { + if (err || stat.isDirectory()) + return; + + var now = new Date().getTime(), + endTime = new Date(stat.ctime).getTime() + time; + + if (now > endTime) + return fs.unlink(file, emptyFn); + }); + }); + }); +} + +Fileuploader.prototype.upload = function(callback) { + var _ = this, + type_ = _.options.limit === 1 ? 'single' : 'array', + data = { + hasWarnings: false, + isSuccess: true, + warnings: [], + files: [], + + _callback: callback, + _setStatus: function(status, warning, next) { + var data = this, + callback = data._callback; + + if (status !== null) { + if (status === true) { + data.isSuccess = true; + } else { + data.isSuccess = false; + data.hasWarnings = true; + if (warning) + data.warnings.push(warning); + } + } + + if (next && typeof callback == 'function') { + var isProcessing = false; + + _.options.files.forEach(function(item) { + if (isset(item._processing)) { + item._processingCallback = function() { + delete item._processing; + delete item._processingCallback; + + data._setStatus(null, null, true); + }; + isProcessing = true; + } + }); + + if (isProcessing) + return; + + delete data._callback; + delete data._setStatus; + + callback(data); + } + } + }; + + _.multer[type_](_.field.name)(_.req, _.res, function (err) { + if (err) + return data._setStatus(false, {code: err.code, message: err.message}, true); + + var files = type_ == 'single' ? [_.req.file] : _.req.files, + fields = _.req.body, + chunk = isset(fields) && isset(fields._chunkedd) && files.length == 1 && isJson(fields._chunkedd) ? JSON.parse(fields._chunkedd) : false, + v = validate_files.call(_, files); + + _.field.input = files.length; + _.field.listInput = getListInputFiles.call(_, _.field.name); + + if (v === true) { + if (chunk && files.length > 0) { + var file = files[0], + tmp = _.options.uploadDir + '.unconfirmed_'; + + if (isset(chunk.isFirst)) + tmp += chunk.temp_name = filterFilename(file.filename); + else + tmp += filterFilename(chunk.temp_name); + + if (!isset(chunk.isFirst) && !fs.existsSync(tmp)) + return; + + var w = fs.createWriteStream(tmp, {flags: 'a+'}), + r = fs.createReadStream(file.path); + + w.on('close', function() { + unlinkTmp(file); + + if (isset(chunk.isLast)) { + file.path = tmp; + file.filename = chunk.temp_name; + file.originalname = chunk.name; + file.mimetype = chunk.type || _.mimeContentType(tmp); + file.size = chunk.size; + + handleUpload.call(_, files, data); + } else { + _.res.end(JSON.stringify({ + fileuploader: { + temp_name: chunk.temp_name + } + })); + } + }); + + return r.pipe(w); + } + + handleUpload.call(_, files, data); + } else { + data._setStatus(false, {code: v, message: error_messages[v]}, true); + } + + files.forEach(function(file, key) { + unlinkTmp(file); + }); + }); +} + +function handleUpload(files, data) { + var _ = this, + options = _.options, + listInput = _.field.listInput; + + for(var i = 0; i -1, + nameInfo = pathinfo(file.name), + d = new Date(); + + file.oldname = file.name; + file.oldtitle = nameInfo.title; + file.extension = nameInfo.extension; + file.format = file.type.substr(0, file.type.indexOf('/')); + file.title = file.oldtitle; + file.size2 = formatSize(file.size); + file.name = generateFilename(options, file); + file.title = pathinfo(file.name).title; + file.file = options.uploadDir + file.name; + file.replaced = fs.existsSync(_.options.uploadDir + file.name); + file.date = d; + + var valid = validate_files.call(_, file); + + if (valid === true) { + if (fileInList) { + var fileListIndex = 0; + + if (listInput) { + fileListIndex = listInput.list.indexOf(listInputName); + file.listProps = listInput.values[fileListIndex]; + listInput.list.splice(fileListIndex, 1); + listInput.values.splice(fileListIndex, 1); + } + + data.files.push(file); + } + } else { + if (!fileInList) + continue; + + data.files = []; + data._setStatus(false, {code: valid, message: parseVariables(error_messages[valid] || valid, file)}); + break; + } + } + + if (!data.hasWarnings) { + data.files.forEach(function(file, key) { + if (options.move_uploaded_file(file)) { + file.uploaded = true; + delete file.chunked; + delete file.tmp; + delete file.tmp_name; + + options.files.push(file); + } else { + data.files.splice(key, 1); + } + }); + } + + if (listInput) + options.files.forEach(function(item, index) { + if (!isset(item.listProps)) { + var fileListIndex = listInput.list.indexOf(item.file) + + if (fileListIndex > -1) + item.listProps = listInput.values[fileListIndex]; + } + + if (isset(item.listProps)) { + delete item.listProps.file; + + if (item.listProps.length == 0) + delete item.listProps; + } + }); + + editFiles.call(_, data); + sortFiles.call(_, data); + + return data._setStatus(null, null, true); +} + +function validate_files(data) { + if (data instanceof Array) { + if (this.options.required && data.length + this.options.files.length == 0) + return 'EMPTY_FIELD'; + if (this.options.limit && data.length + this.options.files.length > this.options.limit) + return 'MAX_FILES_NUMBER'; + if (this.options.maxSize && (data.reduce((a, b) => a + b.size, 0)+this.options.files.reduce((a, b) => a + b.size, 0))/1000000 > this.options.maxSize) + return 'MAX_SIZE'; + } else { + if (this.options.extensions && (this.options.extensions.indexOf(data.extension) == -1 && !this.options.extensions.filter(function(val) { return val.indexOf(data.type) > -1 || val.indexOf(data.format + '/*') > -1 }).length)) + return 'INVALID_TYPE'; + if (this.options.disallowedExtensions && (this.options.disallowedExtensions.indexOf(data.extension) > -1 || this.options.disallowedExtensions.filter(function(val) { return val.indexOf(data.type) > -1 || val.indexOf(data.format + '/*') > -1 }).length)) + return 'INVALID_TYPE'; + if (this.options.fileMaxSize && data.size/1000000 > this.options.fileMaxSize) + return 'MAX_FILE_SIZE'; + var v = typeof this.options.validate_file == 'function' ? this.options.validate_file(file, this.options) : true; + if (v !== true) + return v; + } + + return true; +} + +function extendDefaults(options, defaults) { + var _ = this, + obj = Object.assign({}, defaults, options || {}); + + obj.files.forEach(function(item, index) { + if (!item.type) + item.type = _.mimeContentType(item.relative_path || item.file); + + item.appended = true; + }); + + return obj; +} + +function fileFilter(req, file, cb) { + cb(null, true); +} + +function getFileAttribute(file, attribute) { + var result = null; + + if (isset(file.data) && isset(file.data[attribute])) + result = file.data[attribute]; + if (isset(file[attribute])) + result = file[attribute]; + + return result; +} + +function generateFilename(options, file, skipReplaceCheck) { + var conf = options.title instanceof Array ? options.title : [options.title], + type = conf[0], + length = isset(conf[1]) ? parseFloat(conf[1]) : 12, + random_name = random_string(length), + extension = file.extension, + d = new Date(), + result = ''; + + switch (type) { + case null: + case 'auto': + result = random_name; + break; + case 'name': + result = file.title; + break; + default: + var nameInfo = pathinfo(type); + + result = type; + result = result.replace(/\{random\}/g, random_name); + result = result.replace(/\{timestamp\}/g, d.getTime()); + result = result.replace(/\{date\}/g, d.getFullYear() + '-' + ('0' + (d.getMonth()+1)).slice(-2) + '-' + ('0' + d.getDate()).slice(-2) + '_' + ('0' + d.getHours()).slice(-2) + '-' + ('0' + d.getMinutes()).slice(-2) + '-' + ('0' + d.getSeconds()).slice(-2)); + result = parseVariables(result, file); + + + if (!empty(nameInfo.extension)) { + type = result.substr(0, nameInfo.title.length); + extension = nameInfo.extension != '{extension}' ? nameInfo.extension : ''; + } + } + + if (!empty(extension) && new RegExp('\.' + extension + '$').test(result) == false) + result += '.' + extension; + + if (!options.replace && !skipReplaceCheck) { + var t = file.title, + i = 1; + + while (fs.existsSync(options.uploadDir + result)) { + file.title = t + ' ('+ i +')'; + conf[0] = ['auto', 'name', '{random}'].indexOf(type) > -1 ? type : type + ' ('+ i +')'; + result = generateFilename(options, file, true); + i++; + } + } + + return filterFilename(result); +} + +function getListInputFiles(fieldname) { + var inputName = 'fileuploader-list-' + fieldname, + fields = this.req.body, + result = null; + + if (typeof this.options.listInput == 'string') + inputName = this.options.listInput; + + if (fields && fields[inputName] && isJson(fields[inputName])) { + var data = { + list: [], + values: JSON.parse(fields[inputName]), + }; + + data.values.forEach(function(value, index) { + data.list.push(value.file); + }); + + result = data; + } + + return result; +} + +function editFiles(data) { + var _ = this, + options = _.options, + hasProperties = options.editor instanceof Object; + + if (options.editor === false) + return; + + options.files.forEach(function(item, index) { + var file = isset(item.relative_file) ? item.relative_file : item.file, + fields = _.req.body; + + if (isset(item.listProps) && isset(item.listProps.editor)) + item.editor = item.listProps.editor; + + if (isset(item.uploaded) && isset(fields) && isset(fields._editorr) && isJson(fields._editorr) && _.field.input.length == 1) + item.editor = JSON.parse(fields._editorr); + + if ((options.editor != null || isset(item.editor)) && fs.existsSync(file) && /^image\//.test(item.type)) { + var width = hasProperties ? options.editor.maxWidth : null, + height = hasProperties ? options.editor.maxHeight : null, + quality = hasProperties ? options.editor.quality : 90, + rotation = (isset(item.editor) ? item.editor.rotation : 0) || 0, + crop = (isset(item.editor) ? item.editor.crop : false) || (hasProperties ? options.editor.crop : false); + + _.resize(file, width, height, null, crop, quality, rotation, function () { + delete item._processing; + if (item._processingCallback) + item._processingCallback(); + }); + item._processing = true; + delete item.editor; + } + }); +} + +function sortFiles(data) { + var _ = this, + files = _.options.files, + freeIndex = _.options.files.length, + compare = function(a, b) { + if (!isset(a.index)) { + a.index = freeIndex; + freeIndex++; + } + + if (!isset(b.index)) { + b.index = freeIndex; + freeIndex++; + } + + return a.index - b.index; + } + + files.forEach(function(item, index) { + if (isset(item.listProps) && isset(item.listProps.index)) + item.index = item.listProps.index; + }); + + if (isset(files[0]) && isset(files[0].index)) + files.sort(compare); +} + +function parseVariables(text, file) { + text = text + ""; + text = text.replace(/\{file_name\}/g, file.name); + text = text.replace(/\{file_size\}/g, file.size); + text = text.replace(/\{extension\}/g, file.extension); + + return text; +} + +function random_string(length) { + var possible = '_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', + text = ''; + + for (var i = 0; i < length; i++) + text += possible.charAt(Math.floor(Math.random() * possible.length)); + + return text; +} + +function pathinfo(name) { + var path = name.substr(0, name.lastIndexOf('/')), + extension = name.indexOf('.') != -1 ? name.split('.').pop().toLowerCase() : '', + title = name.substr(path.length + (!empty(path) ? 1 : 0), name.length - extension.length - (!empty(extension) ? 1 : 0)); + + return {path, title, extension}; +} + +function filterFilename(filename) { + var delimiter = '_', + invalidCharacters = /["<>#%\{\}\|\\\^~\[\]`;\?:@=&\*\/]/g; + + filename = filename.replace(invalidCharacters, delimiter); + filename = filename.replace(new RegExp(delimiter + '{2,}', 'g'), delimiter); + + return filename; +} + +function formatSize(bytes) { + if (bytes == 0) return '0 Byte'; + var k = 1000, + sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], + i = Math.floor(Math.log(bytes) / Math.log(k)); + + return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i]; +} + +function unlinkTmp(file) { + fs.unlink(file.tmp || file.path, emptyFn); +} + +function isJson(str) { + try { + JSON.parse(str); + } catch (e) { + return false; + } + return true; +} + +function isset(ref) { + return typeof ref !== 'undefined'; +} + +function empty(ref) { + return (ref + "").length === 0; +} + +module.exports = function() { + return new Fileuploader(...arguments); +} \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/node/package.json b/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/node/package.json new file mode 100644 index 0000000..63a8304 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/node/package.json @@ -0,0 +1,27 @@ +{ + "name": "fileuploader", + "version": "2.2.0", + "description": "Validate, Remove, Upload, Sort files and Resize images on server.", + "private": true, + "main": "fileuploader.js", + "engines": { + "node": ">=4.0.0" + }, + "dependencies": { + "gm": "^1.23.1", + "mime-types": "^2.1.21", + "multer": "^1.4.1" + }, + "devDependencies": {}, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + "fileuploader", + "javascript", + "plugin", + "innostudio.de" + ], + "author": "innostudio.de", + "license": "https://innostudio.de/fileuploader/documentation/#license" +} \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/php/class.fileuploader.php b/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/php/class.fileuploader.php new file mode 100644 index 0000000..5b86c0e --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/php/class.fileuploader.php @@ -0,0 +1,1215 @@ + null, + 'maxSize' => null, + 'fileMaxSize' => null, + 'extensions' => null, + 'disallowedExtensions' => array('htaccess', 'php', 'php3', 'php4', 'php5', 'phtml'), + 'required' => false, + 'uploadDir' => 'uploads/', + 'title' => array('auto', 12), + 'replace' => false, + 'editor' => null, + 'listInput' => true, + 'files' => array(), + 'move_uploaded_file' => null, + 'validate_file' => null + ); + private $field = null; + protected $options = null; + + public static $S3; + + /** + * __construct method + * + * @public + * @param $name {$_FILES key} + * @param $options {null, Array} + */ + public function __construct($name, $options = null) { + $this->default_options['move_uploaded_file'] = function($tmp, $dest, $item) { + return move_uploaded_file($tmp, $dest); + }; + return $this->initialize($name, $options); + } + + /** + * initialize method + * initialize the plugin + * + * @private + * @param $inputName {String} Input name + * @param $options {null, Array} + */ + private function initialize($inputName, $options) { + $name = is_array($inputName) ? end($inputName) : $inputName; + $_FilesName = is_array($inputName) ? $inputName[0] : $inputName; + + // merge options + $this->options = $this->default_options; + if ($options) + $this->options = array_merge($this->options, $options); + if (!is_array($this->options['files'])) + $this->options['files'] = array(); + + // create field array + $this->field = array( + 'name' => $name, + 'input' => null, + 'listInput' => $this->readListInput($name) + ); + + if (isset($_FILES[$_FilesName])) { + // set field input + $this->field['input'] = $_FILES[$_FilesName]; + if (is_array($inputName)) { + $arr = array(); + + foreach($this->field['input'] as $k => $v) { + $arr[$k] = $v[$inputName[1]]; + } + + $this->field['input'] = $arr; + } + + // tranform an no-multiple input to multiple + // made only to simplify the next uploading steps + if (!is_array($this->field['input']['name'])) { + $this->field['input'] = array_merge($this->field['input'], array( + "name" => array($this->field['input']['name']), + "tmp_name" => array($this->field['input']['tmp_name']), + "type" => array($this->field['input']['type']), + "error" => array($this->field['input']['error']), + "size" => array($this->field['input']['size']) + )); + } + + // remove empty filenames + // only for addMore option + foreach($this->field['input']['name'] as $key=>$value){ if (empty($value)) { unset($this->field['input']['name'][$key]); unset($this->field['input']['type'][$key]); unset($this->field['input']['tmp_name'][$key]); unset($this->field['input']['error'][$key]); unset($this->field['input']['size'][$key]); } } + + // set field length (files count) + $this->field['count'] = count($this->field['input']['name']); + return true; + } else { + return false; + } + } + + /** + * getOptions method + * Returns the options object + * + * @public + * @return {Array} + */ + public function getOptions() { + return array_filter($this->options, function($var) { + return gettype($var) != "object"; + }); + } + + /** + * upload method + * Call the uploadFiles method + * + * @public + * @return {Array} + */ + public function upload() { + return $this->uploadFiles(); + } + + /** + * getFileList method + * Get the list of the preloaded and uploaded files + * + * @public + * @param @customKey {null, String} File attrbite that should be in the list + * @return {null, Array} + */ + public function getFileList($customKey = null) { + $result = array(); + + if ($customKey != null) { + $result = array(); + foreach($this->options['files'] as $key=>$value) { + $attribute = $this->getFileAttribute($value, $customKey); + $result[] = $attribute ? $attribute : $value['file']; + } + } else { + $result = $this->options['files']; + } + + return $result; + } + + /** + * getUploadedFiles method + * Get a list with all uploaded files + * + * @public + * @return {Array} + */ + public function getUploadedFiles() { + $result = array(); + + foreach($this->getFileList() as $key=>$item) { + if (isset($item['uploaded'])) + $result[] = $item; + } + + return $result; + } + + /** + * getPreloadedFiles method + * Get a list with all preloaded files + * + * @public + * @return {Array} + */ + public function getPreloadedFiles() { + $result = array(); + + foreach($this->getFileList() as $key=>$item) { + if (!isset($item['uploaded'])) + $result[] = $item; + } + + return $result; + } + + /** + * getRemovedFiles method + * Get removed files as array + * + * @public + * @param $customKey {String} The file attribute which is also defined in listInput element + * @return {Array} + */ + public function getRemovedFiles($customKey = 'file') { + $removedFiles = array(); + + if (is_array($this->field['listInput']['list']) && is_array($this->options['files'])) { + foreach($this->options['files'] as $key=>$value) { + if (!in_array($this->getFileAttribute($value, $customKey), $this->field['listInput']['list']) && (!isset($value['uploaded']) || !$value['uploaded'])) { + $removedFiles[] = $value; + unset($this->options['files'][$key]); + } + } + } + + if (is_array($this->options['files'])) + $this->options['files'] = array_values($this->options['files']); + + return $removedFiles; + } + + /** + * getListInput method + * Get the listInput value as null or array + * + * @public + * @return {null, Array} + */ + public function getListInput() { + return $this->field['listInput']; + } + + /** + * getFileAttribute method + * Get the file attribute + * + * @private + * @param $item {Array} Item + * @return + */ + private function getFileAttribute($item, $attribute) { + $result = null; + + if (isset($item['data'][$attribute])) + $result = $item['data'][$attribute]; + if (isset($item[$attribute])) + $result = $item[$attribute]; + + return $result; + } + + /** + * readListInput method + * Get value from the listInput + * + * @private + * @param $name {String} FileUploader $_FILES name + * @return {null, Array} + */ + private function readListInput($name = null) { + $inputName = 'fileuploader-list-' . ($name ? $name : $this->field['name']); + $input = isset($_POST[$inputName]) ? stripslashes($_POST[$inputName]) : null; + if (is_string($this->options['listInput'])) + $inputName = $this->options['listInput']; + + if ($input && $this->isJSON($_POST[$inputName])) { + $list = array( + 'list' => array(), + 'values' => json_decode($input, true) + ); + + foreach($list['values'] as $key=>$value) { + $list['list'][] = $value['file']; + } + + return $list; + } + + return null; + } + + /** + * validation method + * Check ini settings, field and files + * + * @private + * @param $item {Array} Item + * @return {boolean, String} + */ + private function validate($item = null) { + if ($item == null) { + // check ini settings and some generally options + $ini = array( + (boolean) ini_get('file_uploads'), + (int) ini_get('upload_max_filesize'), + (int) ini_get('post_max_size'), + (int) ini_get('max_file_uploads'), + (int) ini_get('memory_limit') + ); + + if (!$ini[0]) + return $this->codeToMessage('file_uploads'); + if ($this->options['required'] && strtolower($_SERVER['REQUEST_METHOD']) == "post" && $this->field['count'] + count($this->options['files']) == 0) + return $this->codeToMessage('required_and_no_file'); + if (($this->options['limit'] && $this->field['count'] + count($this->options['files']) > $this->options['limit']) || ($ini[3] != 0 && ($this->field['count']) > $ini[3])) + return $this->codeToMessage('max_number_of_files'); + if (!file_exists($this->options['uploadDir']) || !is_writable($this->options['uploadDir'])) + return $this->codeToMessage('invalid_folder_path'); + + $total_size = 0; foreach($this->field['input']['size'] as $key=>$value){ $total_size += $value; } $total_size = $total_size/1000000; + if ($ini[2] != 0 && $total_size > $ini[2]) + return $this->codeToMessage('post_max_size'); + if ($this->options['maxSize'] && $total_size > $this->options['maxSize']) + return $this->codeToMessage('max_files_size'); + } else { + // check file + if ($item['error'] > 0) + return $this->codeToMessage($item['error'], $item); + if (is_array($this->options['disallowedExtensions']) && (in_array(strtolower($item['extension']), $this->options['disallowedExtensions']) || preg_grep('/(' . $item['format'] . '\/\*|' . preg_quote($item['type'], '/') . ')/', $this->options['disallowedExtensions']))) + return $this->codeToMessage('accepted_file_types', $item); + if (is_array($this->options['extensions']) && !in_array(strtolower($item['extension']), $this->options['extensions']) && !preg_grep('/(' . $item['format'] . '\/\*|' . preg_quote($item['type'], '/') . ')/', $this->options['extensions'])) + return $this->codeToMessage('accepted_file_types', $item); + if ($this->options['fileMaxSize'] && $item['size']/1000000 > $this->options['fileMaxSize']) + return $this->codeToMessage('max_file_size', $item); + if ($this->options['maxSize'] && $item['size']/1000000 > $this->options['maxSize']) + return $this->codeToMessage('max_file_size', $item); + $custom_validation = is_callable($this->options['validate_file']) ? $this->options['validate_file']($item, $this->options) : true; + if ($custom_validation != true) + return $custom_validation; + } + + return true; + } + + /** + * resize method + * Resize, crop and rotate images + * + * @public + * @static + * @param $filename {String} file source + * @param $width {Number} new width + * @param $height {Number} new height + * @param $destination {String} file destination + * @param $crop {boolean, Array} crop property + * @param $quality {Number} quality of destination + * @param $rotation {Number} rotation degrees + * @return {boolean} resizing was successful + */ + public static function resize($filename, $width = null, $height = null, $destination = null, $crop = false, $quality = 95, $rotation = 0) { + if (!is_file($filename) || !is_readable($filename)) + return false; + + $source = null; + $destination = !$destination ? $filename : $destination; + if (file_exists($destination) && !is_writable($destination)) + return false; + $imageInfo = @getimagesize($filename); + if (!$imageInfo) + return false; + $exif = function_exists('exif_read_data') ? @exif_read_data($filename) : array(); + + // detect actions + $hasRotation = $rotation || isset($exif['Orientation']); + $hasCrop = is_array($crop) || $crop == true; + $hasResizing = $width || $height; + + if (!$hasRotation && !$hasCrop && !$hasResizing && (!isset($exif['Orientation']) || $exif['Orientaiton'] == 1) && $filename == $destination) + return; + + // store image information + list ($imageWidth, $imageHeight, $imageType) = $imageInfo; + $imageRatio = $imageWidth / $imageHeight; + + // create GD image + switch($imageType) { + case IMAGETYPE_GIF: + $source = imagecreatefromgif($filename); + break; + case IMAGETYPE_JPEG: + $source = imagecreatefromjpeg($filename); + break; + case IMAGETYPE_PNG: + $source = imagecreatefrompng($filename); + break; + default: + return false; + } + + // rotation + if ($hasRotation) { + $cacheWidth = $imageWidth; + $cacheHeight = $imageHeight; + + // exif rotation + if (!empty($exif['Orientation'])) { + switch ($exif['Orientation']) { + case 2: + imageflip($source, IMG_FLIP_HORIZONTAL); + break; + case 3: + $source = imagerotate($source, 180, 0); + break; + case 4: + $source = imagerotate($source, 180, 0); + imageflip($source, IMG_FLIP_HORIZONTAL); + break; + case 5: + $imageWidth = $cacheHeight; + $imageHeight = $cacheWidth; + + $source = imagerotate($source, -90, 0); + imageflip($source, IMG_FLIP_HORIZONTAL); + break; + case 6: + $imageWidth = $cacheHeight; + $imageHeight = $cacheWidth; + + $source = imagerotate($source, -90, 0); + break; + case 7: + $imageWidth = $cacheHeight; + $imageHeight = $cacheWidth; + + $source = imagerotate($source, 90, 0); + imageflip($source, IMG_FLIP_HORIZONTAL); + break; + case 8: + $imageWidth = $cacheHeight; + $imageHeight = $cacheWidth; + + $source = imagerotate($source, 90, 0); + break; + } + + $cacheWidth = $imageWidth; + $cacheHeight = $imageHeight; + } + + // param rotation + if ($rotation == 90 || $rotation == 270) { + $imageWidth = $cacheHeight; + $imageHeight = $cacheWidth; + } + $rotation = $rotation * -1; + $source = imagerotate($source, $rotation, 0); + } + + // crop + $crop = array_merge(array( + 'left' => 0, + 'top' => 0, + 'width' => $imageWidth, + 'height' => $imageHeight, + '_paramCrop' => $crop + ), is_array($crop) ? $crop : array()); + if (is_array($crop['_paramCrop'])) { + $crop['left'] = round($crop['_paramCrop']['left']); + $crop['top'] = round($crop['_paramCrop']['top']); + $crop['width'] = round($crop['_paramCrop']['width']); + $crop['height'] = round($crop['_paramCrop']['height']); + } + + // set default $width and $height + $width = !$width ? $crop['width'] : $width; + $height = !$height ? $crop['height'] : $height; + $ratio = $width/$height; + + // resize + if ($crop['_paramCrop'] === true) { + if ($imageRatio >= $ratio) { + $crop['newWidth'] = $crop['width'] / ($crop['height'] / $height); + $crop['newHeight'] = $height; + } else { + $crop['newHeight'] = $crop['height'] / ($crop['width'] / $width); + $crop['newWidth'] = $width; + } + + $crop['left'] = 0 - ($crop['newWidth'] - $width) / 2; + $crop['top'] = 0 - ($crop['newHeight'] - $height) / 2; + + if ($crop['width'] < $width || $crop['height'] < $height) { + $crop['left'] = $crop['width'] < $width ? $width/2 - $crop['width']/2 : 0; + $crop['top'] = $crop['height'] < $height ? $height/2 - $crop['height']/2 : 0; + $crop['newWidth'] = $crop['width']; + $crop['newHeight'] = $crop['height']; + } + } elseif ($crop['width'] < $width && $crop['height'] < $height) { + $width = $crop['width']; + $height = $crop['height']; + } else { + $newRatio = $crop['width'] / $crop['height']; + + if ($ratio > $newRatio) { + $width = $height * $newRatio; + } else { + $height = $width / $newRatio; + } + } + + // save + $dest = null; + $destExt = strtolower(substr($destination, strrpos($destination, '.') + 1)); + if (pathinfo($destination, PATHINFO_EXTENSION)) { + if (in_array($destExt, array('gif', 'jpg', 'jpeg', 'png'))) { + if ($destExt == 'gif') + $imageType = IMAGETYPE_GIF; + if ($destExt == 'jpg' || $destExt == 'jpeg') + $imageType = IMAGETYPE_JPEG; + if ($destExt == 'png') + $imageType = IMAGETYPE_PNG; + } + } else { + $imageType = IMAGETYPE_JPEG; + $destination .= '.jpg'; + } + switch($imageType) { + case IMAGETYPE_GIF: + $dest = imagecreatetruecolor($width, $height); + $background = imagecolorallocatealpha($dest, 255, 255, 255, 1); + imagecolortransparent($dest, $background); + imagefill($dest, 0, 0 , $background); + imagesavealpha($dest, true); + break; + case IMAGETYPE_JPEG: + $dest = imagecreatetruecolor($width, $height); + $background = imagecolorallocate($dest, 255, 255, 255); + imagefilledrectangle($dest, 0, 0, $width, $height, $background); + break; + case IMAGETYPE_PNG: + if (!imageistruecolor($source)) { + $dest = imagecreate($width, $height); + $background = imagecolorallocatealpha($dest, 255, 255, 255, 1); + imagecolortransparent($dest, $background); + imagefill($dest, 0, 0 , $background); + } else { + $dest = imagecreatetruecolor($width, $height); + } + imagealphablending($dest, false); + imagesavealpha($dest, true); + break; + default: + return false; + } + + imageinterlace($dest, true); + + imagecopyresampled( + $dest, + $source, + isset($crop['newWidth']) ? $crop['left'] : 0, + isset($crop['newHeight']) ? $crop['top'] : 0, + !isset($crop['newWidth']) ? $crop['left'] : 0, + !isset($crop['newHeight']) ? $crop['top'] : 0, + isset($crop['newWidth']) ? $crop['newWidth'] : $width, + isset($crop['newHeight']) ? $crop['newHeight'] : $height, + $crop['width'], + $crop['height'] + ); + + switch ($imageType) { + case IMAGETYPE_GIF: + imagegif($dest, $destination); + break; + case IMAGETYPE_JPEG: + imagejpeg($dest, $destination, $quality); + break; + case IMAGETYPE_PNG: + imagepng($dest, $destination, 10-$quality/10); + break; + } + + imagedestroy($source); + imagedestroy($dest); + clearstatcache(true, $destination); + + return array( + 'width' => round(isset($crop['newWidth']) ? $crop['newWidth'] : $width), + 'height' => round(isset($crop['newHeight']) ? $crop['newHeight'] : $height), + 'type' => $destExt + ); + } + + /** + * uploadFiles method + * Process and upload the files + * + * @private + * @return {null, Array} + */ + private function uploadFiles() { + $data = array( + "hasWarnings" => false, + "isSuccess" => false, + "warnings" => array(), + "files" => array() + ); + $listInput = $this->field['listInput']; + $uploadDir = str_replace(getcwd() . '/', '', $this->options['uploadDir']); + $chunk = isset($_POST['_chunkedd']) && count($this->field['input']['name']) == 1 ? json_decode(stripslashes($_POST['_chunkedd']), true) : false; + + if ($this->field['input']) { + // validate ini settings and some generally options + $validate = $this->validate(); + $data['isSuccess'] = true; + + if ($validate === true) { + // process the files + $count = count($this->field['input']['name']); + for($i = 0; $i < $count; $i++) { + $file = array( + 'name' => $this->field['input']['name'][$i], + 'tmp_name' => $this->field['input']['tmp_name'][$i], + 'type' => $this->field['input']['type'][$i], + 'error' => $this->field['input']['error'][$i], + 'size' => $this->field['input']['size'][$i] + ); + + // chunk + if ($chunk) { + if (isset($chunk['isFirst'])) + $chunk['temp_name'] = $this->random_string(6) . time(); + + $tmp_name = $uploadDir . '.unconfirmed_' . self::filterFilename($chunk['temp_name']); + if (!isset($chunk['isFirst']) && !file_exists($tmp_name)) + continue; + $sp = fopen($file['tmp_name'], 'rb'); + $op = fopen($tmp_name, isset($chunk['isFirst']) ? 'wb' : 'ab'); + while (!feof($sp)) { + $buffer = fread($sp, 512); + fwrite($op, $buffer); + } + + // close handles + fclose($op); + fclose($sp); + + if (isset($chunk['isLast'])) { + $file['tmp_name'] = $tmp_name; + $file['name'] = $chunk['name']; + $file['type'] = $chunk['type']; + $file['size'] = $chunk['size']; + } else { + echo json_encode(array( + 'fileuploader' => array( + 'temp_name' => $chunk['temp_name'] + ) + )); + exit; + } + } + + $metas = array(); + $metas['tmp_name'] = $file['tmp_name']; + $metas['extension'] = strtolower(substr(strrchr($file['name'], "."), 1)); + $metas['type'] = $file['type']; + $metas['format'] = strtok($file['type'], '/'); + $metas['name'] = $metas['old_name'] = $file['name']; + $metas['title'] = $metas['old_title'] = substr($metas['old_name'], 0, (strlen($metas['extension']) > 0 ? -(strlen($metas['extension'])+1) : strlen($metas['old_name']))); + $metas['size'] = $file['size']; + $metas['size2'] = $this->formatSize($file['size']); + $metas['date'] = date('r'); + $metas['error'] = $file['error']; + $metas['chunked'] = $chunk; + + // validate file + $validateFile = $this->validate(array_diff_key($metas, array_flip(array('tmp_name', 'chunked')))); + + // check if file is in listInput + $listInputName = '0:/' . $metas['old_name']; + $fileInList = $listInput === null || in_array($listInputName, $listInput['list']); + + // add file to memory + if ($validateFile === true) { + if ($fileInList) { + $fileListIndex = 0; + + if ($listInput) { + $fileListIndex = array_search($listInputName, $listInput['list']); + $metas['listProps'] = $listInput['values'][$fileListIndex]; + unset($listInput['list'][$fileListIndex]); + unset($listInput['values'][$fileListIndex]); + } + + $metas['name'] = $this->generateFileName($this->options['title'], array_diff_key($metas, array_flip(array('tmp_name', 'error', 'chunked')))); + $metas['title'] = substr($metas['name'], 0, (strlen($metas['extension']) > 0 ? -(strlen($metas['extension'])+1) : strlen($metas['name']))); + $metas['file'] = $uploadDir . $metas['name']; + $metas['replaced'] = file_exists($metas['file']); + + ksort($metas); + $data['files'][] = $metas; + } + } else { + if ($metas['chunked'] && file_exists($metas['tmp_name'])) + unlink($metas['tmp_name']); + if (!$fileInList) + continue; + + $data['isSuccess'] = false; + $data['hasWarnings'] = true; + $data['warnings'][] = $validateFile; + $data['files'] = array(); + + break; + } + } + + // upload the files + if (!$data['hasWarnings']) { + foreach($data['files'] as $key => $file) { + if ($file['chunked'] ? rename($file['tmp_name'], $file['file']) : $this->options['move_uploaded_file']($file['tmp_name'], $file['file'], $file)) { + unset($data['files'][$key]['chunked']); + unset($data['files'][$key]['error']); + unset($data['files'][$key]['tmp_name']); + $data['files'][$key]['uploaded'] = true; + + $this->options['files'][] = $data['files'][$key]; + } else { + unset($data['files'][$key]); + } + } + } + } else { + $data['isSuccess'] = false; + $data['hasWarnings'] = true; + $data['warnings'][] = $validate; + } + } else { + $lastPHPError = error_get_last(); + if ($lastPHPError && $lastPHPError['type'] == E_WARNING && $lastPHPError['line'] == 0) { + $errorMessage = null; + + if (strpos($lastPHPError['message'], "POST Content-Length") !== false) + $errorMessage = $this->codeToMessage(UPLOAD_ERR_INI_SIZE); + if (strpos($lastPHPError['message'], "Maximum number of allowable file uploads") !== false) + $errorMessage = $this->codeToMessage('max_number_of_files'); + + if ($errorMessage != null) { + $data['isSuccess'] = false; + $data['hasWarnings'] = true; + $data['warnings'][] = $errorMessage; + } + + } + + if ($this->options['required'] && strtolower($_SERVER['REQUEST_METHOD']) == "post") { + $data['hasWarnings'] = true; + $data['warnings'][] = $this->codeToMessage('required_and_no_file'); + } + } + + // add listProp attribute to the files + if ($listInput) + foreach($this->getFileList() as $key=>$item) { + if (!isset($item['listProps'])) { + $fileListIndex = array_search($item['file'], $listInput['list']); + + if ($fileListIndex !== false) { + $this->options['files'][$key]['listProps'] = $listInput['values'][$fileListIndex]; + } + } + + if (isset($item['listProps'])) { + unset($this->options['files'][$key]['listProps']['file']); + + if (empty($this->options['files'][$key]['listProps'])) + unset($this->options['files'][$key]['listProps']); + } + } + + $data['files'] = $this->getUploadedFiles(); + + // call file editor + $this->editFiles(); + + // call file sorter + $this->sortFiles(); + + $data['files'] = $this->getUploadedFiles(); + + return $data; + } + + /** + * editFiles method + * Edit all files that have an editor from Front-End + * + * @private + * @return void + */ + protected function editFiles() { + if ($this->options['editor'] === false) + return; + + foreach($this->getFileList() as $key=>$item) { + $file = !isset($item['relative_file']) ? $item['file'] : $item['relative_file']; + + // add editor to files + if (isset($item['listProps']) && isset($item['listProps']['editor'])) { + $item['editor'] = $item['listProps']['editor']; + } + if (isset($item['uploaded']) && isset($_POST['_editorr']) && $this->isJSON(stripcslashes($_POST['_editorr'])) && count($this->field['input']['name']) == 1) { + $item['editor'] = json_decode(stripslashes($_POST['_editorr']), true); + } + + // edit file + if (file_exists($file) && strpos($item['type'], 'image/') === 0) { + $width = isset($this->options['editor']['maxWidth']) ? $this->options['editor']['maxWidth'] : null; + $height = isset($this->options['editor']['maxHeight']) ? $this->options['editor']['maxHeight'] : null; + $quality = isset($this->options['editor']['quality']) ? $this->options['editor']['quality'] : 90; + $rotation = isset($item['editor']['rotation']) ? $item['editor']['rotation'] : 0; + $crop = isset($this->options['editor']['crop']) ? $this->options['editor']['crop'] : false; + $crop = isset($item['editor']['crop']) ? $item['editor']['crop'] : $crop; + + // edit + $this->options['files'][$key]['image'] = self::resize($file, $width, $height, null, $crop, $quality, $rotation); + $this->options['files'][$key]['size'] = filesize($file); + if (isset($this->options['files'][$key]['size2'])) + $this->options['files'][$key]['size2'] = $this->formatSize($this->options['files'][$key]['size']); + } + } + } + + /** + * sortFiles method + * Sort all files that have an index from Front-End + * + * @private + * @return void + */ + private function sortFiles() { + foreach($this->options['files'] as $key=>$item) { + if (isset($item['listProps']) && isset($item['listProps']['index'])) + $this->options['files'][$key]['index'] = $item['listProps']['index']; + } + + $freeIndex = count($this->options['files']); + if(isset($this->options['files'][0]['index'])) + usort($this->options['files'], function($a, $b) { + global $freeIndex; + + if (!isset($a['index'])) { + $a['index'] = $freeIndex; + $freeIndex++; + } + + if (!isset($b['index'])) { + $b['index'] = $freeIndex; + $freeIndex++; + } + + return $a['index'] - $b['index']; + }); + } + + /** + * generateFileName method + * Generated a new file name + * + * @private + * @param $conf {null, String, Array} FileUploader title option + * @param $item {Array} Item + * @param $skip_replace_check {boolean} Used only for recursive auto generating file name to exclude replacements + * @return {String} + */ + private function generateFilename($conf, $item, $skip_replace_check = false) { + if (is_callable($conf)) + $conf = $conf($item); + + $conf = !is_array($conf) ? array($conf) : $conf; + $type = $conf[0]; + $length = isset($conf[1]) ? max(1, (int) $conf[1]) : 12; + $forceExtension = isset($conf[2]) && $conf[2] == true; + $random_string = $this->random_string($length); + $extension = !empty($item['extension']) ? '.' . $item['extension'] : ''; + $string = ''; + + switch($type) { + case null: + case "auto": + $string = $random_string; + break; + case "name": + $string = $item['title']; + break; + default: + $string = $type; + $string_extension = substr(strrchr($string, "."), 1); + + $string = str_replace("{random}", $random_string, $string); + $string = str_replace("{file_name}", $item['title'], $string); + $string = str_replace("{file_size}", $item['size'], $string); + $string = str_replace("{timestamp}", time(), $string); + $string = str_replace("{date}", date('Y-n-d_H-i-s'), $string); + $string = str_replace("{extension}", $item['extension'], $string); + $string = str_replace("{format}", $item['format'], $string); + $string = str_replace("{index}", isset($item['listProps']['index']) ? $item['listProps']['index'] : 0, $string); + + if ($forceExtension && !empty($string_extension)) { + if ($string_extension != "{extension}") { + $type = substr($string, 0, -(strlen($string_extension) + 1)); + $extension = $item['extension'] = $string_extension; + } else { + $type = substr($string, 0, -(strlen($item['extension']) + 1)); + $extension = ''; + } + } + } + + if ($extension && !preg_match('/'.$extension.'$/', $string)) + $string .= $extension; + + // generate another filename if a file with the same name already exists + // only when replace options is true + if (!$this->options['replace'] && !$skip_replace_check) { + $title = $item['title']; + $i = 1; + + while (file_exists($this->options['uploadDir'] . $string)) { + $item['title'] = $title . " ({$i})"; + $conf[0] = $type == "auto" || $type == "name" || strpos($string, "{random}") !== false ? $type : $type . " ({$i})"; + $string = $this->generateFileName($conf, $item, true); + $i++; + } + } + + return self::filterFilename($string); + } + + /** + * generateInput method + * Generate a string with HTML input + * + * @public + * @return {String} + */ + public function generateInput() { + $attributes = array(); + + // process options + foreach(array_merge(array('name'=>$this->field['name']), $this->options) as $key=>$value) { + if ($value) { + switch($key) { + case 'limit': + case 'maxSize': + case 'fileMaxSize': + $attributes['data-fileuploader-' . $key] = $value; + break; + case 'listInput': + $attributes['data-fileuploader-' . $key] = is_bool($value) ? var_export($value, true) : $value; + break; + case 'extensions': + $attributes['data-fileuploader-' . $key] = implode(',', $value); + break; + case 'name': + $attributes[$key] = $value; + break; + case 'required': + $attributes[$key] = ''; + break; + case 'files': + $value = array_values($value); + $attributes['data-fileuploader-' . $key] = json_encode($value); + break; + } + } + } + + // generate input attributes + $dataAttributes = array_map(function($value, $key) { + return $key . "='" . (str_replace("'", '"', $value)) . "'"; + }, array_values($attributes), array_keys($attributes)); + + return ''; + } + + /** + * clean_chunked_files method + * Remove chunked files from directory + * + * @public + * @static + * @param $directory {String} Directory scan + * @param $time {String} Time difference + * @return {String} + */ + public static function clean_chunked_files($directory, $time = '-1 hour') { + if (!is_dir($directory)) + return; + + $dir = scandir($directory); + $files = array_diff($dir, array('.', '..')); + foreach($files as $key=>$name) { + $file = $directory . $name; + if (strpos($name, '.unconfirmed_') === 0 && filemtime($file) < strtotime($time)) + unlink($file); + } + } + + /** + * codeToMessage method + * Translate a warning code into text + * + * @private + * @param $code {Number, String} + * @param $file {null, Array} + * @return {String} + */ + private function codeToMessage($code, $file = null) { + $message = null; + + switch ($code) { + case UPLOAD_ERR_INI_SIZE: + $message = "The uploaded file exceeds the upload_max_filesize directive in php.ini"; + break; + case UPLOAD_ERR_FORM_SIZE: + $message = "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form"; + break; + case UPLOAD_ERR_PARTIAL: + $message = "The uploaded file was only partially uploaded"; + break; + case UPLOAD_ERR_NO_FILE: + $message = "No file was uploaded"; + break; + case UPLOAD_ERR_NO_TMP_DIR: + $message = "Missing a temporary folder"; + break; + case UPLOAD_ERR_CANT_WRITE: + $message = "Failed to write file to disk"; + break; + case UPLOAD_ERR_EXTENSION: + $message = "File upload stopped by extension"; + break; + case 'accepted_file_types': + $message = "File type is not allowed for " . $file['old_name']; + break; + case 'file_uploads': + $message = "File uploading option in disabled in php.ini"; + break; + case 'max_file_size': + $message = $file['old_name'] . " is too large"; + break; + case 'max_files_size': + $message = "Files are too big"; + break; + case 'max_number_of_files': + $message = "Maximum number of files is exceeded"; + break; + case 'required_and_no_file': + $message = "No file was choosed. Please select one"; + break; + case 'invalid_folder_path': + $message = "Upload folder doesn't exist or is not writable"; + break; + default: + $message = "Unknown upload error"; + break; + } + + return $message; + } + + /** + * formatSize method + * Cover bytes to readable file size format + * + * @private + * @param $bytes {Number} + * @return {Number} + */ + private function formatSize($bytes) { + if ($bytes >= 1073741824) { + $bytes = number_format($bytes / 1073741824, 2) . ' GB'; + } elseif ($bytes >= 1048576) { + $bytes = number_format($bytes / 1048576, 2) . ' MB'; + } elseif ($bytes > 0) { + $bytes = number_format($bytes / 1024, 2) . ' KB'; + } else{ + $bytes = '0 bytes'; + } + + return $bytes; + } + + /** + * isJson method + * Check if string is a valid json + * + * @private + * @param $string {String} + * @return {boolean} + */ + private function isJson($string) { + json_decode($string); + return (json_last_error() == JSON_ERROR_NONE); + } + + /** + * random_string method + * Generate a random string + * + * @public + * @param $length {Number} Number of characters + * @return {String} + */ + private function random_string($length = 12) { + return substr(str_shuffle("_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, $length); + } + + /** + * filterFilename method + * Remove invalid characters from filename + * + * @public + * @static + * @param $filename {String} + * @return {String} + */ + public static function filterFilename($filename) { + $delimiter = '_'; + $invalidCharacters = array_merge(array_map('chr', range(0,31)), array("<", ">", ":", '"', "/", "\\", "|", "?", "*")); + + $filename = str_replace($invalidCharacters, $delimiter, $filename); + $filename = preg_replace('/(' . preg_quote($delimiter, '/') . '){2,}/', '$1', $filename); + + return $filename; + } + + /** + * mime_content_type method + * Get the mime_content_type of a file + * + * @public + * @static + * @param $file {String} File location + * @param $nativeFunction {Boolean} Use file name to lookup + * @return {String} + */ + public static function mime_content_type($file, $nativeFunction = false) { + if (function_exists('mime_content_type') && $nativeFunction) { + return mime_content_type($file); + } else { + $mime_types = array( + 'txt' => 'text/plain', + 'htm' => 'text/html', + 'html' => 'text/html', + 'php' => 'text/html', + 'css' => 'text/css', + 'js' => 'application/javascript', + 'json' => 'application/json', + 'xml' => 'application/xml', + 'swf' => 'application/x-shockwave-flash', + 'flv' => 'video/x-flv', + + // images + 'png' => 'image/png', + 'jpe' => 'image/jpeg', + 'jpeg' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'gif' => 'image/gif', + 'bmp' => 'image/bmp', + 'ico' => 'image/vnd.microsoft.icon', + 'tiff' => 'image/tiff', + 'tif' => 'image/tiff', + 'svg' => 'image/svg+xml', + 'svgz' => 'image/svg+xml', + + // archives + 'zip' => 'application/zip', + 'rar' => 'application/x-rar-compressed', + 'exe' => 'application/x-msdownload', + 'msi' => 'application/x-msdownload', + 'cab' => 'application/vnd.ms-cab-compressed', + + // audio/video + 'mp3' => 'audio/mpeg', + 'mp4' => 'video/mp4', + 'webM' => 'video/webm', + 'qt' => 'video/quicktime', + 'mov' => 'video/quicktime', + + // adobe + 'pdf' => 'application/pdf', + 'psd' => 'image/vnd.adobe.photoshop', + 'ai' => 'application/postscript', + 'eps' => 'application/postscript', + 'ps' => 'application/postscript', + + // ms office + 'doc' => 'application/msword', + 'rtf' => 'application/rtf', + 'xls' => 'application/vnd.ms-excel', + 'ppt' => 'application/vnd.ms-powerpoint', + + // open office + 'odt' => 'application/vnd.oasis.opendocument.text', + 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', + ); + $ext = strtolower(substr(strrchr($file, "."), 1)); + + if (array_key_exists($ext, $mime_types)) { + return $mime_types[$ext]; + } elseif (function_exists('finfo_open') && is_file($file)) { + $finfo = finfo_open(FILEINFO_MIME); + $mimetype = finfo_file($finfo, $file); + finfo_close($finfo); + return $mimetype; + } else { + return 'application/octet-stream'; + } + } + } +} \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/thirdparty/s3/php/composer.json b/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/thirdparty/s3/php/composer.json new file mode 100644 index 0000000..41c271c --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/thirdparty/s3/php/composer.json @@ -0,0 +1,5 @@ +{ + "require": { + "aws/aws-sdk-php": "*" + } +} \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/thirdparty/s3/php/fileuploader.s3.php b/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/thirdparty/s3/php/fileuploader.s3.php new file mode 100644 index 0000000..102b9e9 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/plugins/fileuploader-2.2/src/thirdparty/s3/php/fileuploader.s3.php @@ -0,0 +1,287 @@ +initClient($name); + + if (isset($options['auth']) && $this->initClient($options['auth'])) { + $options['files'] = $this->listFiles($this->Folder); + unset($options['auth']); + } + + return parent::__construct($name, $options); + } + + public function upload() { + $data = parent::upload(); + + foreach($this->options['files'] as $key=>&$item) { + if (isset($item['uploaded']) && file_exists($item['file'])) { + $index = array_search($item, $data['files']); + + if (!$this->getOptions()['replace']) { + $title = $item['title']; + $i = 1; + + while($this->fileExists($this->Folder . $item['name'])) { + $item['title'] = $title . " ({$i})"; + $item['name'] = $item['title'] . '.' . $item['extension']; + + $i++; + } + } + + $object = $this->Folder . $item['name']; + $result = $this->uploadFile($item['file'], $object); + @unlink($item['file']); + + if ($result) { + $item['file'] = $result; + $item['data']['key'] = $object; + + if ($index !== false) + $data[$index] = $item; + } else { + unset($this->options['files'][$key]); + if ($index !== false) + unset($data[$index]); + } + } + + unset($item['listProps']['file']); + if (empty($item['listProps'])) + unset($item['listProps']); + } + + return $data; + } + + protected function editFiles() { + foreach($this->options['files'] as $key=>&$item) { + if (!isset($item['uploaded']) && isset($item['data']['key']) && isset($item['listProps']['editor']) && strpos($item['type'], 'image/') !== false) { + $destination = $this->options['uploadDir'] . time() . '.' . pathinfo($item['name'], PATHINFO_EXTENSION); + $this->downloadFile($item['data']['key'], $destination); + $item['relative_file'] = $destination; + $item['_tempEdit'] = true; + } + } + + parent::editFiles(); + + foreach($this->options['files'] as $key=>&$item) { + if (isset($item['_tempEdit']) && isset($item['data']['key']) && isset($item['relative_file'])) { + $this->uploadFile($item['relative_file'], $item['data']['key']); + + @unlink($item['relative_file']); + unset($item['relative_file']); + unset($item['_tempEdit']); + } + } + } + + private function initClient($auth) { + try { + $data = array(); + + if (isset($auth['profile'])) { + $data['profile'] = $auth['profile']; + } else { + $data['credentials'] = array( + 'key' => $auth['key'], + 'secret' => $auth['secret'], + ); + } + $data['region'] = isset($auth['region']) ? $auth['region'] : 'us-east-1'; + $data['version'] = isset($auth['version']) ? $auth['version'] : 'latest'; + if (isset($auth['endpoint'])) + $data['endpoint'] = $auth['endpoint']; + + $this->Client = S3Client::factory($data); + $this->Bucket = $auth['bucket']; + $this->Folder = isset($auth['folder']) && $auth['folder'] != '/' ? rtrim($auth['folder'], '/') . '/' : ''; + + return true; + } catch (S3Exception $e) {} + + return false; + } + + public function getClient() { + return $this->Client; + } + + public function createBucket($bucket, $location = 'us-east-1', $acl = 'private') { + return $this->Client->createBucket(array( + 'Bucket' => $bucket, + 'LocationConstraint' => $location, + 'ACL' => $acl + )); + } + + public function setBucket($bucket) { + $this->Bucket = $bucket; + } + + public function bucketExists($bucket) { + return $this->Client->doesBucketExist($bucket); + } + + public function listBuckets() { + $data = $this->Client->listBuckets(); + $result = array(); + + foreach ($data['Buckets'] as $bucket) { + $result[] = $bucket['Name']; + } + + return $result; + } + + public function createFolder($path, $acl = 'public-read') { + return $this->Client->putObject(array( + 'Bucket' => $this->Bucket, + 'Key' => rtrim($path, '/') . '/', + 'Body' => '', + 'ACL' => $acl + )); + } + + public function setFolder($folder) { + $this->Folder = $folder; + } + + public function folderExists($path) { + return $this->fileExists(rtrim($path, '/') . '/'); + } + + public function listFolders($path = null) { + $data = $this->Client->listObjects([ + 'Bucket' => $this->Bucket, + 'Prefix' => $path != null ? $path : $this->Folder + ]); + $result = array(); + + if (isset($data['Contents'])) { + foreach ($data['Contents'] as $object) { + if (!$this->isDir($object['Key'])) + continue; + + $result[] = basename($object['Key']); + } + } + + return $result; + } + + public function deleteFolder($path) { + return $this->deleteFile(rtrim($path, '/') . '/'); + } + + public function uploadFile($tmp, $file, $acl = 'public-read') { + try { + if (filesize($tmp) < 104857600) { + $uploader = $this->Client->putObject( + array( + 'Bucket' => $this->Bucket, + 'Key' => $file, + 'SourceFile' => $tmp, + 'ACL' => $acl + ) + ); + } else { + $multipartUploader = new MultipartUploader($this->Client, $tmp, [ + 'bucket' => $this->Bucket, + 'key' => $file, + 'acl' => $acl + ]); + + $uploader = $multipartUploader->upload(); + } + + gc_collect_cycles(); + return $uploader['ObjectURL']; + } catch (S3Exception $e) { } + + return false; + } + + public function fileExists($file) { + return $this->Client->doesObjectExist($this->Bucket, $file); + } + + public function getFileUrl($file) { + return $this->Client->getObjectUrl($this->Bucket, $file); + } + + public function listFiles($path = null) { + $data = $this->Client->listObjects([ + 'Bucket' => $this->Bucket, + 'Prefix' => $path != null ? $path : $this->Folder + ]); + $result = array(); + + if (isset($data['Contents'])) { + foreach ($data['Contents'] as $object) { + if ($this->isDir($object['Key'])) + continue; + + $result[] = array( + 'name' => basename($object['Key']), + 'size' => $object['Size'], + 'type' => self::mime_content_type($object['Key']), + 'file' => $this->getFileUrl($object['Key']), + 'data' => array( + 'key' => $object['Key'], + 'readerCrossOrigin' => 'anonymous' + ) + ); + } + } + + return $result; + } + + public function downloadFile($file, $destination) { + return $this->Client->getObject([ + 'Bucket' => $this->Bucket, + 'Key' => $file, + 'SaveAs' => $destination, + ]); + } + + public function deleteFile($file) { + return $this->Client->deleteObject(array( + 'Bucket' => $this->Bucket, + 'Key' => $file + )); + } + + private function isDir($key) { + return substr($key, -1) == '/'; + } +} + +FileUploader::$S3 = 'FileUploader_S3'; \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-brands-400.ttf b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-brands-400.ttf new file mode 100644 index 0000000..cf6a98f Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-brands-400.ttf differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-brands-400.woff2 b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-brands-400.woff2 new file mode 100644 index 0000000..c740267 Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-brands-400.woff2 differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-regular-400.ttf b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-regular-400.ttf new file mode 100644 index 0000000..9ef8a37 Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-regular-400.ttf differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-regular-400.woff2 b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-regular-400.woff2 new file mode 100644 index 0000000..a865b2f Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-regular-400.woff2 differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-solid-900.ttf b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-solid-900.ttf new file mode 100644 index 0000000..2b96436 Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-solid-900.ttf differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-solid-900.woff2 b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-solid-900.woff2 new file mode 100644 index 0000000..021d33f Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-solid-900.woff2 differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-v4compatibility.ttf b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-v4compatibility.ttf new file mode 100644 index 0000000..f07e670 Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-v4compatibility.ttf differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-v4compatibility.woff2 b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-v4compatibility.woff2 new file mode 100644 index 0000000..6f96a11 Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/@fortawesome/fa-v4compatibility.woff2 differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/bootstrap-icons/bootstrap-icons.woff b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/bootstrap-icons/bootstrap-icons.woff new file mode 100644 index 0000000..bfb8665 Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/bootstrap-icons/bootstrap-icons.woff differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/bootstrap-icons/bootstrap-icons.woff2 b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/bootstrap-icons/bootstrap-icons.woff2 new file mode 100644 index 0000000..4df0df2 Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/bootstrap-icons/bootstrap-icons.woff2 differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/fonticon/fonticon.css b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/fonticon/fonticon.css new file mode 100644 index 0000000..ae3b933 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/fonticon/fonticon.css @@ -0,0 +1,281 @@ +@font-face { + font-family: "fonticon"; + src: url("./fonticon.ttf?8e8dbe1ea9ce4a70bc69a61ddae8f305") format("truetype"), +url("./fonticon.woff?8e8dbe1ea9ce4a70bc69a61ddae8f305") format("woff"), +url("./fonticon.woff2?8e8dbe1ea9ce4a70bc69a61ddae8f305") format("woff2"), +url("./fonticon.eot?8e8dbe1ea9ce4a70bc69a61ddae8f305#iefix") format("embedded-opentype"), +url("./fonticon.svg?8e8dbe1ea9ce4a70bc69a61ddae8f305#fonticon") format("svg"); +} + +i[class^="fonticon-"]:before, i[class*=" fonticon-"]:before { + font-family: fonticon !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.fonticon-delivery:before { + content: "\f101"; +} +.fonticon-bicycle:before { + content: "\f102"; +} +.fonticon-bookmark:before { + content: "\f103"; +} +.fonticon-like:before { + content: "\f104"; +} +.fonticon-microphone:before { + content: "\f105"; +} +.fonticon-location:before { + content: "\f106"; +} +.fonticon-gallery:before { + content: "\f107"; +} +.fonticon-share:before { + content: "\f108"; +} +.fonticon-star:before { + content: "\f109"; +} +.fonticon-trash-bin:before { + content: "\f10a"; +} +.fonticon-user-2:before { + content: "\f10b"; +} +.fonticon-view:before { + content: "\f10c"; +} +.fonticon-user:before { + content: "\f10d"; +} +.fonticon-pin:before { + content: "\f10e"; +} +.fonticon-chat:before { + content: "\f10f"; +} +.fonticon-home:before { + content: "\f110"; +} +.fonticon-mail:before { + content: "\f111"; +} +.fonticon-settings:before { + content: "\f112"; +} +.fonticon-alignment-right:before { + content: "\f113"; +} +.fonticon-link:before { + content: "\f114"; +} +.fonticon-attach:before { + content: "\f115"; +} +.fonticon-smile:before { + content: "\f116"; +} +.fonticon-moon:before { + content: "\f117"; +} +.fonticon-sun:before { + content: "\f118"; +} +.fonticon-train:before { + content: "\f119"; +} +.fonticon-eclipse:before { + content: "\f11a"; +} +.fonticon-drone:before { + content: "\f11b"; +} +.fonticon-truck:before { + content: "\f11c"; +} +.fonticon-ship:before { + content: "\f11d"; +} +.fonticon-offline:before { + content: "\f11e"; +} +.fonticon-printer:before { + content: "\f11f"; +} +.fonticon-paperclip:before { + content: "\f120"; +} +.fonticon-attachments:before { + content: "\f121"; +} +.fonticon-attachment:before { + content: "\f122"; +} +.fonticon-dogecoin:before { + content: "\f123"; +} +.fonticon-bitcoin:before { + content: "\f124"; +} +.fonticon-setting:before { + content: "\f125"; +} +.fonticon-headset:before { + content: "\f126"; +} +.fonticon-play:before { + content: "\f127"; +} +.fonticon-pause:before { + content: "\f128"; +} +.fonticon-next:before { + content: "\f129"; +} +.fonticon-back:before { + content: "\f12a"; +} +.fonticon-shuffle:before { + content: "\f12b"; +} +.fonticon-repeat:before { + content: "\f12c"; +} +.fonticon-outgoing-call:before { + content: "\f12d"; +} +.fonticon-incoming-call:before { + content: "\f12e"; +} +.fonticon-cash-payment:before { + content: "\f12f"; +} +.fonticon-mobile-payment:before { + content: "\f130"; +} +.fonticon-card:before { + content: "\f131"; +} +.fonticon-like-1:before { + content: "\f132"; +} +.fonticon-bank:before { + content: "\f133"; +} +.fonticon-telegram:before { + content: "\f134"; +} +.fonticon-drive:before { + content: "\f135"; +} +.fonticon-remote-control:before { + content: "\f136"; +} +.fonticon-house:before { + content: "\f137"; +} +.fonticon-image:before { + content: "\f138"; +} +.fonticon-app-store:before { + content: "\f139"; +} +.fonticon-email:before { + content: "\f13a"; +} +.fonticon-stats:before { + content: "\f13b"; +} +.fonticon-notification:before { + content: "\f13c"; +} +.fonticon-send:before { + content: "\f13d"; +} +.fonticon-insurance:before { + content: "\f13e"; +} +.fonticon-hourglass:before { + content: "\f13f"; +} +.fonticon-calendar:before { + content: "\f140"; +} +.fonticon-alarm:before { + content: "\f141"; +} +.fonticon-layers:before { + content: "\f142"; +} +.fonticon-facebook:before { + content: "\f143"; +} +.fonticon-instagram:before { + content: "\f144"; +} +.fonticon-linkedin:before { + content: "\f145"; +} +.fonticon-globe:before { + content: "\f146"; +} +.fonticon-equalizer:before { + content: "\f147"; +} +.fonticon-settings-1:before { + content: "\f148"; +} +.fonticon-creativity:before { + content: "\f149"; +} +.fonticon-content-marketing:before { + content: "\f14a"; +} +.fonticon-line-chart:before { + content: "\f14b"; +} +.fonticon-cms:before { + content: "\f14c"; +} +.fonticon-hello:before { + content: "\f14d"; +} +.fonticon-password:before { + content: "\f14e"; +} +.fonticon-credit-card:before { + content: "\f14f"; +} +.fonticon-enlarge:before { + content: "\f150"; +} +.fonticon-24-hours:before { + content: "\f151"; +} +.fonticon-heart:before { + content: "\f152"; +} +.fonticon-user-experience:before { + content: "\f153"; +} +.fonticon-web-design:before { + content: "\f154"; +} +.fonticon-sun-1:before { + content: "\f155"; +} +.fonticon-sun-2:before { + content: "\f156"; +} +.fonticon-messenger:before { + content: "\f157"; +} diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/fonticon/fonticon.eot b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/fonticon/fonticon.eot new file mode 100644 index 0000000..77aa981 Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/fonticon/fonticon.eot differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/fonticon/fonticon.svg b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/fonticon/fonticon.svg new file mode 100644 index 0000000..f083150 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/fonticon/fonticon.svg @@ -0,0 +1,273 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/fonticon/fonticon.ttf b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/fonticon/fonticon.ttf new file mode 100644 index 0000000..42b869a Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/fonticon/fonticon.ttf differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/fonticon/fonticon.woff b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/fonticon/fonticon.woff new file mode 100644 index 0000000..b01bfc1 Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/fonticon/fonticon.woff differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/fonticon/fonticon.woff2 b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/fonticon/fonticon.woff2 new file mode 100644 index 0000000..b77520b Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/fonticon/fonticon.woff2 differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-brands-400.eot b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-brands-400.eot new file mode 100644 index 0000000..81969f5 Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-brands-400.eot differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-brands-400.svg b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-brands-400.svg new file mode 100644 index 0000000..b903f64 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-brands-400.svg @@ -0,0 +1,1313 @@ + + + +Created by Icons8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-brands-400.ttf b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-brands-400.ttf new file mode 100644 index 0000000..6cd243d Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-brands-400.ttf differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-brands-400.woff b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-brands-400.woff new file mode 100644 index 0000000..32f7df4 Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-brands-400.woff differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-brands-400.woff2 b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-brands-400.woff2 new file mode 100644 index 0000000..5177028 Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-brands-400.woff2 differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-regular-400.eot b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-regular-400.eot new file mode 100644 index 0000000..a93a4a2 Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-regular-400.eot differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-regular-400.svg b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-regular-400.svg new file mode 100644 index 0000000..43b8602 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-regular-400.svg @@ -0,0 +1,467 @@ + + + +Created by Icons8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-regular-400.ttf b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-regular-400.ttf new file mode 100644 index 0000000..226653f Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-regular-400.ttf differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-regular-400.woff b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-regular-400.woff new file mode 100644 index 0000000..3010f91 Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-regular-400.woff differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-regular-400.woff2 b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-regular-400.woff2 new file mode 100644 index 0000000..f7dab5d Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-regular-400.woff2 differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-solid-900.eot b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-solid-900.eot new file mode 100644 index 0000000..d739c05 Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-solid-900.eot differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-solid-900.svg b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-solid-900.svg new file mode 100644 index 0000000..02fc485 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-solid-900.svg @@ -0,0 +1,2894 @@ + + + +Created by Icons8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-solid-900.ttf b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-solid-900.ttf new file mode 100644 index 0000000..e0ec957 Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-solid-900.ttf differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-solid-900.woff b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-solid-900.woff new file mode 100644 index 0000000..26a5134 Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-solid-900.woff differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-solid-900.woff2 b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-solid-900.woff2 new file mode 100644 index 0000000..22e909c Binary files /dev/null and b/think-backend.greaterchiangmai.com/public/assets/plugins/global/fonts/line-awesome/la-solid-900.woff2 differ diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/plugins.bundle.css b/think-backend.greaterchiangmai.com/public/assets/plugins/global/plugins.bundle.css new file mode 100644 index 0000000..c73f2ad --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/plugins/global/plugins.bundle.css @@ -0,0 +1,36529 @@ +@charset "UTF-8"; +.select2-container { + box-sizing: border-box; + display: inline-block; + margin: 0; + position: relative; + vertical-align: middle; +} + +.select2-container .select2-selection--single { + box-sizing: border-box; + cursor: pointer; + display: block; + height: 28px; + user-select: none; + -webkit-user-select: none; +} + +.select2-container .select2-selection--single .select2-selection__rendered { + display: block; + padding-left: 8px; + padding-right: 20px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.select2-container .select2-selection--single .select2-selection__clear { + background-color: transparent; + border: none; + font-size: 1em; +} + +.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered { + padding-right: 8px; + padding-left: 20px; +} + +.select2-container .select2-selection--multiple { + box-sizing: border-box; + cursor: pointer; + display: block; + min-height: 32px; + user-select: none; + -webkit-user-select: none; +} + +.select2-container .select2-selection--multiple .select2-selection__rendered { + display: inline; + list-style: none; + padding: 0; +} + +.select2-container .select2-selection--multiple .select2-selection__clear { + background-color: transparent; + border: none; + font-size: 1em; +} + +.select2-container .select2-search--inline .select2-search__field { + box-sizing: border-box; + border: none; + font-size: 100%; + margin-top: 5px; + margin-left: 5px; + padding: 0; + max-width: 100%; + resize: none; + height: 18px; + vertical-align: bottom; + font-family: sans-serif; + overflow: hidden; + word-break: keep-all; +} + +.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +.select2-dropdown { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + box-sizing: border-box; + display: block; + position: absolute; + left: -100000px; + width: 100%; + z-index: 1051; +} + +.select2-results { + display: block; +} + +.select2-results__options { + list-style: none; + margin: 0; + padding: 0; +} + +.select2-results__option { + padding: 6px; + user-select: none; + -webkit-user-select: none; +} + +.select2-results__option--selectable { + cursor: pointer; +} + +.select2-container--open .select2-dropdown { + left: 0; +} + +.select2-container--open .select2-dropdown--above { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.select2-container--open .select2-dropdown--below { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.select2-search--dropdown { + display: block; + padding: 4px; +} + +.select2-search--dropdown .select2-search__field { + padding: 4px; + width: 100%; + box-sizing: border-box; +} + +.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +.select2-search--dropdown.select2-search--hide { + display: none; +} + +.select2-close-mask { + border: 0; + margin: 0; + padding: 0; + display: block; + position: fixed; + left: 0; + top: 0; + min-height: 100%; + min-width: 100%; + height: auto; + width: auto; + opacity: 0; + z-index: 99; + background-color: #fff; + filter: alpha(opacity=0); +} + +.select2-hidden-accessible { + border: 0 !important; + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(50%) !important; + clip-path: inset(50%) !important; + height: 1px !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + width: 1px !important; + white-space: nowrap !important; +} + +.select2-container--default .select2-selection--single { + background-color: #fff; + border: 1px solid #aaa; + border-radius: 4px; +} + +.select2-container--default .select2-selection--single .select2-selection__rendered { + color: #444; + line-height: 28px; +} + +.select2-container--default .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + height: 26px; + margin-right: 20px; + padding-right: 0px; +} + +.select2-container--default .select2-selection--single .select2-selection__placeholder { + color: #999; +} + +.select2-container--default .select2-selection--single .select2-selection__arrow { + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; +} + +.select2-container--default .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; +} + +.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear { + float: left; +} + +.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow { + left: 1px; + right: auto; +} + +.select2-container--default.select2-container--disabled .select2-selection--single { + background-color: #eee; + cursor: default; +} + +.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { + display: none; +} + +.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; +} + +.select2-container--default .select2-selection--multiple { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + cursor: text; + padding-bottom: 5px; + padding-right: 5px; + position: relative; +} + +.select2-container--default .select2-selection--multiple.select2-selection--clearable { + padding-right: 25px; +} + +.select2-container--default .select2-selection--multiple .select2-selection__clear { + cursor: pointer; + font-weight: bold; + height: 20px; + margin-right: 10px; + margin-top: 5px; + position: absolute; + right: 0; + padding: 1px; +} + +.select2-container--default .select2-selection--multiple .select2-selection__choice { + background-color: #e4e4e4; + border: 1px solid #aaa; + border-radius: 4px; + box-sizing: border-box; + display: inline-block; + margin-left: 5px; + margin-top: 5px; + padding: 0; + padding-left: 20px; + position: relative; + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; + vertical-align: bottom; + white-space: nowrap; +} + +.select2-container--default .select2-selection--multiple .select2-selection__choice__display { + cursor: default; + padding-left: 2px; + padding-right: 5px; +} + +.select2-container--default .select2-selection--multiple .select2-selection__choice__remove { + background-color: transparent; + border: none; + border-right: 1px solid #aaa; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + color: #999; + cursor: pointer; + font-size: 1em; + font-weight: bold; + padding: 0 4px; + position: absolute; + left: 0; + top: 0; +} + +.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover, .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:focus { + background-color: #f1f1f1; + color: #333; + outline: none; +} + +.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice { + margin-left: 5px; + margin-right: auto; +} + +.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__display { + padding-left: 5px; + padding-right: 2px; +} + +.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove { + border-left: 1px solid #aaa; + border-right: none; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} + +.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__clear { + float: left; + margin-left: 10px; + margin-right: auto; +} + +.select2-container--default.select2-container--focus .select2-selection--multiple { + border: solid black 1px; + outline: 0; +} + +.select2-container--default.select2-container--disabled .select2-selection--multiple { + background-color: #eee; + cursor: default; +} + +.select2-container--default.select2-container--disabled .select2-selection__choice__remove { + display: none; +} + +.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.select2-container--default .select2-search--dropdown .select2-search__field { + border: 1px solid #aaa; +} + +.select2-container--default .select2-search--inline .select2-search__field { + background: transparent; + border: none; + outline: 0; + box-shadow: none; + -webkit-appearance: textfield; +} + +.select2-container--default .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; +} + +.select2-container--default .select2-results__option .select2-results__option { + padding-left: 1em; +} + +.select2-container--default .select2-results__option .select2-results__option .select2-results__group { + padding-left: 0; +} + +.select2-container--default .select2-results__option .select2-results__option .select2-results__option { + margin-left: -1em; + padding-left: 2em; +} + +.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -2em; + padding-left: 3em; +} + +.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -3em; + padding-left: 4em; +} + +.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -4em; + padding-left: 5em; +} + +.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { + margin-left: -5em; + padding-left: 6em; +} + +.select2-container--default .select2-results__option--group { + padding: 0; +} + +.select2-container--default .select2-results__option--disabled { + color: #999; +} + +.select2-container--default .select2-results__option--selected { + background-color: #ddd; +} + +.select2-container--default .select2-results__option--highlighted.select2-results__option--selectable { + background-color: #5897fb; + color: white; +} + +.select2-container--default .select2-results__group { + cursor: default; + display: block; + padding: 6px; +} + +.select2-container--classic .select2-selection--single { + background-color: #f7f7f7; + border: 1px solid #aaa; + border-radius: 4px; + outline: 0; + background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%); + background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%); + background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFFFFFFF", endColorstr="#FFEEEEEE", GradientType=0); +} + +.select2-container--classic .select2-selection--single:focus { + border: 1px solid #5897fb; +} + +.select2-container--classic .select2-selection--single .select2-selection__rendered { + color: #444; + line-height: 28px; +} + +.select2-container--classic .select2-selection--single .select2-selection__clear { + cursor: pointer; + float: right; + font-weight: bold; + height: 26px; + margin-right: 20px; +} + +.select2-container--classic .select2-selection--single .select2-selection__placeholder { + color: #999; +} + +.select2-container--classic .select2-selection--single .select2-selection__arrow { + background-color: #ddd; + border: none; + border-left: 1px solid #aaa; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + height: 26px; + position: absolute; + top: 1px; + right: 1px; + width: 20px; + background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%); + background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%); + background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFEEEEEE", endColorstr="#FFCCCCCC", GradientType=0); +} + +.select2-container--classic .select2-selection--single .select2-selection__arrow b { + border-color: #888 transparent transparent transparent; + border-style: solid; + border-width: 5px 4px 0 4px; + height: 0; + left: 50%; + margin-left: -4px; + margin-top: -2px; + position: absolute; + top: 50%; + width: 0; +} + +.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear { + float: left; +} + +.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow { + border: none; + border-right: 1px solid #aaa; + border-radius: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + left: 1px; + right: auto; +} + +.select2-container--classic.select2-container--open .select2-selection--single { + border: 1px solid #5897fb; +} + +.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { + background: transparent; + border: none; +} + +.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { + border-color: transparent transparent #888 transparent; + border-width: 0 4px 5px 4px; +} + +.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; + background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%); + background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%); + background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFFFFFFF", endColorstr="#FFEEEEEE", GradientType=0); +} + +.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%); + background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%); + background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFEEEEEE", endColorstr="#FFFFFFFF", GradientType=0); +} + +.select2-container--classic .select2-selection--multiple { + background-color: white; + border: 1px solid #aaa; + border-radius: 4px; + cursor: text; + outline: 0; + padding-bottom: 5px; + padding-right: 5px; +} + +.select2-container--classic .select2-selection--multiple:focus { + border: 1px solid #5897fb; +} + +.select2-container--classic .select2-selection--multiple .select2-selection__clear { + display: none; +} + +.select2-container--classic .select2-selection--multiple .select2-selection__choice { + background-color: #e4e4e4; + border: 1px solid #aaa; + border-radius: 4px; + display: inline-block; + margin-left: 5px; + margin-top: 5px; + padding: 0; +} + +.select2-container--classic .select2-selection--multiple .select2-selection__choice__display { + cursor: default; + padding-left: 2px; + padding-right: 5px; +} + +.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { + background-color: transparent; + border: none; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + color: #888; + cursor: pointer; + font-size: 1em; + font-weight: bold; + padding: 0 4px; +} + +.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { + color: #555; + outline: none; +} + +.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice { + margin-left: 5px; + margin-right: auto; +} + +.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__display { + padding-left: 5px; + padding-right: 2px; +} + +.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} + +.select2-container--classic.select2-container--open .select2-selection--multiple { + border: 1px solid #5897fb; +} + +.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { + border-top: none; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { + border-bottom: none; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.select2-container--classic .select2-search--dropdown .select2-search__field { + border: 1px solid #aaa; + outline: 0; +} + +.select2-container--classic .select2-search--inline .select2-search__field { + outline: 0; + box-shadow: none; +} + +.select2-container--classic .select2-dropdown { + background-color: white; + border: 1px solid transparent; +} + +.select2-container--classic .select2-dropdown--above { + border-bottom: none; +} + +.select2-container--classic .select2-dropdown--below { + border-top: none; +} + +.select2-container--classic .select2-results > .select2-results__options { + max-height: 200px; + overflow-y: auto; +} + +.select2-container--classic .select2-results__option--group { + padding: 0; +} + +.select2-container--classic .select2-results__option--disabled { + color: grey; +} + +.select2-container--classic .select2-results__option--highlighted.select2-results__option--selectable { + background-color: #3875d7; + color: white; +} + +.select2-container--classic .select2-results__group { + cursor: default; + display: block; + padding: 6px; +} + +.select2-container--classic.select2-container--open .select2-dropdown { + border-color: #5897fb; +} + +.tempus-dominus-widget [data-action]:after, .visually-hidden { + clip: rect(0, 0, 0, 0) !important; + border: 0 !important; + height: 1px !important; + margin: -1px !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + white-space: nowrap !important; + width: 1px !important; +} + +.tempus-dominus-widget { + border-radius: 4px; + box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12); + display: none; + list-style: none; + padding: 4px; + width: 19rem; + z-index: 9999; +} + +.tempus-dominus-widget.calendarWeeks { + width: 21rem; +} + +.tempus-dominus-widget.calendarWeeks .date-container-days { + grid-auto-columns: 12.5%; + grid-template-areas: "a a a a a a a a"; +} + +.tempus-dominus-widget [data-action] { + cursor: pointer; +} + +.tempus-dominus-widget [data-action]:after { + content: attr(title); +} + +.tempus-dominus-widget [data-action].disabled, .tempus-dominus-widget [data-action].disabled:hover { + background: none; + cursor: not-allowed; +} + +.tempus-dominus-widget .arrow { + display: none; +} + +.tempus-dominus-widget.show { + display: block; +} + +.tempus-dominus-widget.show.date-container { + min-height: 315px; +} + +.tempus-dominus-widget.show.time-container { + min-height: 217px; +} + +.tempus-dominus-widget .td-collapse:not(.show) { + display: none; +} + +.tempus-dominus-widget .td-collapsing { + height: 0; + overflow: hidden; + transition: height 0.35s ease; +} + +@media (min-width: 576px) { + .tempus-dominus-widget.timepicker-sbs { + width: 38em; + } +} +@media (min-width: 768px) { + .tempus-dominus-widget.timepicker-sbs { + width: 38em; + } +} +@media (min-width: 992px) { + .tempus-dominus-widget.timepicker-sbs { + width: 38em; + } +} +.tempus-dominus-widget.timepicker-sbs .td-row { + display: flex; +} + +.tempus-dominus-widget.timepicker-sbs .td-row .td-half { + flex: 0 0 auto; + width: 50%; +} + +.tempus-dominus-widget div[data-action]:active { + box-shadow: none; +} + +.tempus-dominus-widget .timepicker-hour, .tempus-dominus-widget .timepicker-minute, .tempus-dominus-widget .timepicker-second { + font-size: 1.2em; + font-weight: 700; + margin: 0; + width: 54px; +} + +.tempus-dominus-widget button[data-action] { + padding: 6px; +} + +.tempus-dominus-widget .toggleMeridiem { + height: 38px; + text-align: center; +} + +.tempus-dominus-widget .calendar-header { + display: grid; + font-weight: 700; + grid-template-areas: "a a a"; + margin-bottom: 10px; +} + +.tempus-dominus-widget .calendar-header .next { + padding-right: 10px; + text-align: right; +} + +.tempus-dominus-widget .calendar-header .previous { + padding-left: 10px; + text-align: left; +} + +.tempus-dominus-widget .calendar-header .picker-switch { + text-align: center; +} + +.tempus-dominus-widget .toolbar { + display: grid; + grid-auto-flow: column; + grid-auto-rows: 40px; +} + +.tempus-dominus-widget .toolbar div { + align-items: center; + border-radius: 999px; + box-sizing: border-box; + display: flex; + justify-content: center; +} + +.tempus-dominus-widget .date-container-days { + display: grid; + grid-auto-columns: 14.2857142857%; + grid-auto-rows: 40px; + grid-template-areas: "a a a a a a a"; +} + +.tempus-dominus-widget .date-container-days .dow { + align-items: center; + justify-content: center; + text-align: center; +} + +.tempus-dominus-widget .date-container-days .cw { + align-items: center; + cursor: default; + display: flex; + font-size: 0.8em; + height: 90%; + justify-content: center; + line-height: 20px; + width: 90%; +} + +.tempus-dominus-widget .date-container-decades, .tempus-dominus-widget .date-container-months, .tempus-dominus-widget .date-container-years { + display: grid; + grid-auto-rows: calc(2.71429rem - 1.14286px); + grid-template-areas: "a a a"; +} + +.tempus-dominus-widget .time-container-hour, .tempus-dominus-widget .time-container-minute, .tempus-dominus-widget .time-container-second { + display: grid; + grid-auto-rows: calc(2.71429rem - 1.14286px); + grid-template-areas: "a a a a"; +} + +.tempus-dominus-widget .time-container-clock { + display: grid; + grid-auto-rows: calc(2.71429rem - 1.14286px); +} + +.tempus-dominus-widget .time-container-clock .no-highlight { + align-items: center; + display: flex; + height: 90%; + justify-content: center; + width: 90%; +} + +.tempus-dominus-widget .date-container-days div:not(.no-highlight), .tempus-dominus-widget .date-container-decades div:not(.no-highlight), .tempus-dominus-widget .date-container-months div:not(.no-highlight), .tempus-dominus-widget .date-container-years div:not(.no-highlight), .tempus-dominus-widget .time-container-clock div:not(.no-highlight), .tempus-dominus-widget .time-container-hour div:not(.no-highlight), .tempus-dominus-widget .time-container-minute div:not(.no-highlight), .tempus-dominus-widget .time-container-second div:not(.no-highlight) { + align-items: center; + border-radius: 999px; + box-sizing: border-box; + display: flex; + height: 90%; + justify-content: center; + width: 90%; +} + +.tempus-dominus-widget .date-container-days div:not(.no-highlight).disabled, .tempus-dominus-widget .date-container-days div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .date-container-decades div:not(.no-highlight).disabled, .tempus-dominus-widget .date-container-decades div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .date-container-months div:not(.no-highlight).disabled, .tempus-dominus-widget .date-container-months div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .date-container-years div:not(.no-highlight).disabled, .tempus-dominus-widget .date-container-years div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .time-container-clock div:not(.no-highlight).disabled, .tempus-dominus-widget .time-container-clock div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).disabled, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).disabled, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .time-container-second div:not(.no-highlight).disabled, .tempus-dominus-widget .time-container-second div:not(.no-highlight).disabled:hover { + background: none; + cursor: not-allowed; +} + +.tempus-dominus-widget .date-container-days div:not(.no-highlight).today, .tempus-dominus-widget .date-container-decades div:not(.no-highlight).today, .tempus-dominus-widget .date-container-months div:not(.no-highlight).today, .tempus-dominus-widget .date-container-years div:not(.no-highlight).today, .tempus-dominus-widget .time-container-clock div:not(.no-highlight).today, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).today, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).today, .tempus-dominus-widget .time-container-second div:not(.no-highlight).today { + position: relative; +} + +.tempus-dominus-widget .date-container-days div:not(.no-highlight).today:before, .tempus-dominus-widget .date-container-decades div:not(.no-highlight).today:before, .tempus-dominus-widget .date-container-months div:not(.no-highlight).today:before, .tempus-dominus-widget .date-container-years div:not(.no-highlight).today:before, .tempus-dominus-widget .time-container-clock div:not(.no-highlight).today:before, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).today:before, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).today:before, .tempus-dominus-widget .time-container-second div:not(.no-highlight).today:before { + border: solid transparent; + border-width: 0 0 7px 7px; + bottom: 6px; + content: ""; + display: inline-block; + position: absolute; + right: 6px; +} + +.tempus-dominus-widget .time-container { + margin-bottom: 0.5rem; +} + +.tempus-dominus-widget button { + border-radius: 0.25rem; + cursor: pointer; + display: inline-block; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + padding: 0.375rem 0.75rem; + text-align: center; + text-decoration: none; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + vertical-align: middle; +} + +.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementHours], .tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementMinutes], .tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementSeconds], .tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementHours], .tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementMinutes], .tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementSeconds], .tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showHours], .tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showMinutes], .tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showSeconds], .tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=togglePeriod], .tempus-dominus-widget.tempus-dominus-widget-readonly table td.day, .tempus-dominus-widget.tempus-dominus-widget-readonly table td.hour, .tempus-dominus-widget.tempus-dominus-widget-readonly table td.minute, .tempus-dominus-widget.tempus-dominus-widget-readonly table td.second { + cursor: default; + pointer-events: none; +} + +.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementHours]:hover, .tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementMinutes]:hover, .tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementSeconds]:hover, .tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementHours]:hover, .tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementMinutes]:hover, .tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementSeconds]:hover, .tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showHours]:hover, .tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showMinutes]:hover, .tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showSeconds]:hover, .tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=togglePeriod]:hover, .tempus-dominus-widget.tempus-dominus-widget-readonly table td.day:hover, .tempus-dominus-widget.tempus-dominus-widget-readonly table td.hour:hover, .tempus-dominus-widget.tempus-dominus-widget-readonly table td.minute:hover, .tempus-dominus-widget.tempus-dominus-widget-readonly table td.second:hover { + background: none; +} + +.tempus-dominus-widget.light { + background-color: #fff; + color: #000; +} + +.tempus-dominus-widget.light [data-action].disabled, .tempus-dominus-widget.light [data-action].disabled:hover { + color: #6c757d; +} + +.tempus-dominus-widget.light .toolbar div:hover { + background: #e9ecef; +} + +.tempus-dominus-widget.light .date-container-days .dow { + color: rgba(0, 0, 0, 0.5); +} + +.tempus-dominus-widget.light .date-container-days .cw { + color: rgba(0, 0, 0, 0.38); +} + +.tempus-dominus-widget.light .date-container-days div:not(.no-highlight):hover, .tempus-dominus-widget.light .date-container-decades div:not(.no-highlight):hover, .tempus-dominus-widget.light .date-container-months div:not(.no-highlight):hover, .tempus-dominus-widget.light .date-container-years div:not(.no-highlight):hover, .tempus-dominus-widget.light .time-container-clock div:not(.no-highlight):hover, .tempus-dominus-widget.light .time-container-hour div:not(.no-highlight):hover, .tempus-dominus-widget.light .time-container-minute div:not(.no-highlight):hover, .tempus-dominus-widget.light .time-container-second div:not(.no-highlight):hover { + background: #e9ecef; +} + +.tempus-dominus-widget.light .date-container-days div:not(.no-highlight).active, .tempus-dominus-widget.light .date-container-decades div:not(.no-highlight).active, .tempus-dominus-widget.light .date-container-months div:not(.no-highlight).active, .tempus-dominus-widget.light .date-container-years div:not(.no-highlight).active, .tempus-dominus-widget.light .time-container-clock div:not(.no-highlight).active, .tempus-dominus-widget.light .time-container-hour div:not(.no-highlight).active, .tempus-dominus-widget.light .time-container-minute div:not(.no-highlight).active, .tempus-dominus-widget.light .time-container-second div:not(.no-highlight).active { + background-color: #0d6efd; + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.tempus-dominus-widget.light .date-container-days div:not(.no-highlight).active.new, .tempus-dominus-widget.light .date-container-days div:not(.no-highlight).active.old, .tempus-dominus-widget.light .date-container-decades div:not(.no-highlight).active.new, .tempus-dominus-widget.light .date-container-decades div:not(.no-highlight).active.old, .tempus-dominus-widget.light .date-container-months div:not(.no-highlight).active.new, .tempus-dominus-widget.light .date-container-months div:not(.no-highlight).active.old, .tempus-dominus-widget.light .date-container-years div:not(.no-highlight).active.new, .tempus-dominus-widget.light .date-container-years div:not(.no-highlight).active.old, .tempus-dominus-widget.light .time-container-clock div:not(.no-highlight).active.new, .tempus-dominus-widget.light .time-container-clock div:not(.no-highlight).active.old, .tempus-dominus-widget.light .time-container-hour div:not(.no-highlight).active.new, .tempus-dominus-widget.light .time-container-hour div:not(.no-highlight).active.old, .tempus-dominus-widget.light .time-container-minute div:not(.no-highlight).active.new, .tempus-dominus-widget.light .time-container-minute div:not(.no-highlight).active.old, .tempus-dominus-widget.light .time-container-second div:not(.no-highlight).active.new, .tempus-dominus-widget.light .time-container-second div:not(.no-highlight).active.old { + color: #fff; +} + +.tempus-dominus-widget.light .date-container-days div:not(.no-highlight).active.today:before, .tempus-dominus-widget.light .date-container-decades div:not(.no-highlight).active.today:before, .tempus-dominus-widget.light .date-container-months div:not(.no-highlight).active.today:before, .tempus-dominus-widget.light .date-container-years div:not(.no-highlight).active.today:before, .tempus-dominus-widget.light .time-container-clock div:not(.no-highlight).active.today:before, .tempus-dominus-widget.light .time-container-hour div:not(.no-highlight).active.today:before, .tempus-dominus-widget.light .time-container-minute div:not(.no-highlight).active.today:before, .tempus-dominus-widget.light .time-container-second div:not(.no-highlight).active.today:before { + border-bottom-color: #fff; +} + +.tempus-dominus-widget.light .date-container-days div:not(.no-highlight).new, .tempus-dominus-widget.light .date-container-days div:not(.no-highlight).old, .tempus-dominus-widget.light .date-container-decades div:not(.no-highlight).new, .tempus-dominus-widget.light .date-container-decades div:not(.no-highlight).old, .tempus-dominus-widget.light .date-container-months div:not(.no-highlight).new, .tempus-dominus-widget.light .date-container-months div:not(.no-highlight).old, .tempus-dominus-widget.light .date-container-years div:not(.no-highlight).new, .tempus-dominus-widget.light .date-container-years div:not(.no-highlight).old, .tempus-dominus-widget.light .time-container-clock div:not(.no-highlight).new, .tempus-dominus-widget.light .time-container-clock div:not(.no-highlight).old, .tempus-dominus-widget.light .time-container-hour div:not(.no-highlight).new, .tempus-dominus-widget.light .time-container-hour div:not(.no-highlight).old, .tempus-dominus-widget.light .time-container-minute div:not(.no-highlight).new, .tempus-dominus-widget.light .time-container-minute div:not(.no-highlight).old, .tempus-dominus-widget.light .time-container-second div:not(.no-highlight).new, .tempus-dominus-widget.light .time-container-second div:not(.no-highlight).old { + color: rgba(0, 0, 0, 0.38); +} + +.tempus-dominus-widget.light .date-container-days div:not(.no-highlight).disabled, .tempus-dominus-widget.light .date-container-days div:not(.no-highlight).disabled:hover, .tempus-dominus-widget.light .date-container-decades div:not(.no-highlight).disabled, .tempus-dominus-widget.light .date-container-decades div:not(.no-highlight).disabled:hover, .tempus-dominus-widget.light .date-container-months div:not(.no-highlight).disabled, .tempus-dominus-widget.light .date-container-months div:not(.no-highlight).disabled:hover, .tempus-dominus-widget.light .date-container-years div:not(.no-highlight).disabled, .tempus-dominus-widget.light .date-container-years div:not(.no-highlight).disabled:hover, .tempus-dominus-widget.light .time-container-clock div:not(.no-highlight).disabled, .tempus-dominus-widget.light .time-container-clock div:not(.no-highlight).disabled:hover, .tempus-dominus-widget.light .time-container-hour div:not(.no-highlight).disabled, .tempus-dominus-widget.light .time-container-hour div:not(.no-highlight).disabled:hover, .tempus-dominus-widget.light .time-container-minute div:not(.no-highlight).disabled, .tempus-dominus-widget.light .time-container-minute div:not(.no-highlight).disabled:hover, .tempus-dominus-widget.light .time-container-second div:not(.no-highlight).disabled, .tempus-dominus-widget.light .time-container-second div:not(.no-highlight).disabled:hover { + color: #6c757d; +} + +.tempus-dominus-widget.light .date-container-days div:not(.no-highlight).today:before, .tempus-dominus-widget.light .date-container-decades div:not(.no-highlight).today:before, .tempus-dominus-widget.light .date-container-months div:not(.no-highlight).today:before, .tempus-dominus-widget.light .date-container-years div:not(.no-highlight).today:before, .tempus-dominus-widget.light .time-container-clock div:not(.no-highlight).today:before, .tempus-dominus-widget.light .time-container-hour div:not(.no-highlight).today:before, .tempus-dominus-widget.light .time-container-minute div:not(.no-highlight).today:before, .tempus-dominus-widget.light .time-container-second div:not(.no-highlight).today:before { + border-bottom-color: #0d6efd; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.tempus-dominus-widget.light button { + background-color: #0d6efd; + border-color: #0d6efd; + color: #fff; +} + +.tempus-dominus-widget.dark { + background-color: #1b1b1b; + color: #e3e3e3; +} + +.tempus-dominus-widget.dark [data-action].disabled, .tempus-dominus-widget.dark [data-action].disabled:hover { + color: #6c757d; +} + +.tempus-dominus-widget.dark .toolbar div:hover { + background: #232627; +} + +.tempus-dominus-widget.dark .date-container-days .dow { + color: hsla(36deg, 10%, 90%, 0.5); +} + +.tempus-dominus-widget.dark .date-container-days .cw { + color: hsla(36deg, 10%, 90%, 0.38); +} + +.tempus-dominus-widget.dark .date-container-days div:not(.no-highlight):hover, .tempus-dominus-widget.dark .date-container-decades div:not(.no-highlight):hover, .tempus-dominus-widget.dark .date-container-months div:not(.no-highlight):hover, .tempus-dominus-widget.dark .date-container-years div:not(.no-highlight):hover, .tempus-dominus-widget.dark .time-container-clock div:not(.no-highlight):hover, .tempus-dominus-widget.dark .time-container-hour div:not(.no-highlight):hover, .tempus-dominus-widget.dark .time-container-minute div:not(.no-highlight):hover, .tempus-dominus-widget.dark .time-container-second div:not(.no-highlight):hover { + background: #232627; +} + +.tempus-dominus-widget.dark .date-container-days div:not(.no-highlight).active, .tempus-dominus-widget.dark .date-container-decades div:not(.no-highlight).active, .tempus-dominus-widget.dark .date-container-months div:not(.no-highlight).active, .tempus-dominus-widget.dark .date-container-years div:not(.no-highlight).active, .tempus-dominus-widget.dark .time-container-clock div:not(.no-highlight).active, .tempus-dominus-widget.dark .time-container-hour div:not(.no-highlight).active, .tempus-dominus-widget.dark .time-container-minute div:not(.no-highlight).active, .tempus-dominus-widget.dark .time-container-second div:not(.no-highlight).active { + background-color: #4db2ff; + color: #fff; + text-shadow: 0 -1px 0 hsla(36deg, 10%, 90%, 0.25); +} + +.tempus-dominus-widget.dark .date-container-days div:not(.no-highlight).active.new, .tempus-dominus-widget.dark .date-container-days div:not(.no-highlight).active.old, .tempus-dominus-widget.dark .date-container-decades div:not(.no-highlight).active.new, .tempus-dominus-widget.dark .date-container-decades div:not(.no-highlight).active.old, .tempus-dominus-widget.dark .date-container-months div:not(.no-highlight).active.new, .tempus-dominus-widget.dark .date-container-months div:not(.no-highlight).active.old, .tempus-dominus-widget.dark .date-container-years div:not(.no-highlight).active.new, .tempus-dominus-widget.dark .date-container-years div:not(.no-highlight).active.old, .tempus-dominus-widget.dark .time-container-clock div:not(.no-highlight).active.new, .tempus-dominus-widget.dark .time-container-clock div:not(.no-highlight).active.old, .tempus-dominus-widget.dark .time-container-hour div:not(.no-highlight).active.new, .tempus-dominus-widget.dark .time-container-hour div:not(.no-highlight).active.old, .tempus-dominus-widget.dark .time-container-minute div:not(.no-highlight).active.new, .tempus-dominus-widget.dark .time-container-minute div:not(.no-highlight).active.old, .tempus-dominus-widget.dark .time-container-second div:not(.no-highlight).active.new, .tempus-dominus-widget.dark .time-container-second div:not(.no-highlight).active.old { + color: #fff; +} + +.tempus-dominus-widget.dark .date-container-days div:not(.no-highlight).active.today:before, .tempus-dominus-widget.dark .date-container-decades div:not(.no-highlight).active.today:before, .tempus-dominus-widget.dark .date-container-months div:not(.no-highlight).active.today:before, .tempus-dominus-widget.dark .date-container-years div:not(.no-highlight).active.today:before, .tempus-dominus-widget.dark .time-container-clock div:not(.no-highlight).active.today:before, .tempus-dominus-widget.dark .time-container-hour div:not(.no-highlight).active.today:before, .tempus-dominus-widget.dark .time-container-minute div:not(.no-highlight).active.today:before, .tempus-dominus-widget.dark .time-container-second div:not(.no-highlight).active.today:before { + border-bottom-color: #1b1b1b; +} + +.tempus-dominus-widget.dark .date-container-days div:not(.no-highlight).new, .tempus-dominus-widget.dark .date-container-days div:not(.no-highlight).old, .tempus-dominus-widget.dark .date-container-decades div:not(.no-highlight).new, .tempus-dominus-widget.dark .date-container-decades div:not(.no-highlight).old, .tempus-dominus-widget.dark .date-container-months div:not(.no-highlight).new, .tempus-dominus-widget.dark .date-container-months div:not(.no-highlight).old, .tempus-dominus-widget.dark .date-container-years div:not(.no-highlight).new, .tempus-dominus-widget.dark .date-container-years div:not(.no-highlight).old, .tempus-dominus-widget.dark .time-container-clock div:not(.no-highlight).new, .tempus-dominus-widget.dark .time-container-clock div:not(.no-highlight).old, .tempus-dominus-widget.dark .time-container-hour div:not(.no-highlight).new, .tempus-dominus-widget.dark .time-container-hour div:not(.no-highlight).old, .tempus-dominus-widget.dark .time-container-minute div:not(.no-highlight).new, .tempus-dominus-widget.dark .time-container-minute div:not(.no-highlight).old, .tempus-dominus-widget.dark .time-container-second div:not(.no-highlight).new, .tempus-dominus-widget.dark .time-container-second div:not(.no-highlight).old { + color: hsla(36deg, 10%, 90%, 0.38); +} + +.tempus-dominus-widget.dark .date-container-days div:not(.no-highlight).disabled, .tempus-dominus-widget.dark .date-container-days div:not(.no-highlight).disabled:hover, .tempus-dominus-widget.dark .date-container-decades div:not(.no-highlight).disabled, .tempus-dominus-widget.dark .date-container-decades div:not(.no-highlight).disabled:hover, .tempus-dominus-widget.dark .date-container-months div:not(.no-highlight).disabled, .tempus-dominus-widget.dark .date-container-months div:not(.no-highlight).disabled:hover, .tempus-dominus-widget.dark .date-container-years div:not(.no-highlight).disabled, .tempus-dominus-widget.dark .date-container-years div:not(.no-highlight).disabled:hover, .tempus-dominus-widget.dark .time-container-clock div:not(.no-highlight).disabled, .tempus-dominus-widget.dark .time-container-clock div:not(.no-highlight).disabled:hover, .tempus-dominus-widget.dark .time-container-hour div:not(.no-highlight).disabled, .tempus-dominus-widget.dark .time-container-hour div:not(.no-highlight).disabled:hover, .tempus-dominus-widget.dark .time-container-minute div:not(.no-highlight).disabled, .tempus-dominus-widget.dark .time-container-minute div:not(.no-highlight).disabled:hover, .tempus-dominus-widget.dark .time-container-second div:not(.no-highlight).disabled, .tempus-dominus-widget.dark .time-container-second div:not(.no-highlight).disabled:hover { + color: #6c757d; +} + +.tempus-dominus-widget.dark .date-container-days div:not(.no-highlight).today:before, .tempus-dominus-widget.dark .date-container-decades div:not(.no-highlight).today:before, .tempus-dominus-widget.dark .date-container-months div:not(.no-highlight).today:before, .tempus-dominus-widget.dark .date-container-years div:not(.no-highlight).today:before, .tempus-dominus-widget.dark .time-container-clock div:not(.no-highlight).today:before, .tempus-dominus-widget.dark .time-container-hour div:not(.no-highlight).today:before, .tempus-dominus-widget.dark .time-container-minute div:not(.no-highlight).today:before, .tempus-dominus-widget.dark .time-container-second div:not(.no-highlight).today:before { + border-bottom-color: #4db2ff; + border-top-color: hsla(36deg, 10%, 90%, 0.2); +} + +.tempus-dominus-widget.dark button { + background-color: #4db2ff; + border-color: #4db2ff; + color: #fff; +} + +.flatpickr-calendar { + background: transparent; + opacity: 0; + display: none; + text-align: center; + visibility: hidden; + padding: 0; + -webkit-animation: none; + animation: none; + direction: ltr; + border: 0; + font-size: 14px; + line-height: 24px; + border-radius: 5px; + position: absolute; + width: 307.875px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -ms-touch-action: manipulation; + touch-action: manipulation; + background: #fff; + -webkit-box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0, 0, 0, 0.08); + box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0, 0, 0, 0.08); +} + +.flatpickr-calendar.open, +.flatpickr-calendar.inline { + opacity: 1; + max-height: 640px; + visibility: visible; +} + +.flatpickr-calendar.open { + display: inline-block; + z-index: 99999; +} + +.flatpickr-calendar.animate.open { + -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1); + animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1); +} + +.flatpickr-calendar.inline { + display: block; + position: relative; + top: 2px; +} + +.flatpickr-calendar.static { + position: absolute; + top: calc(100% + 2px); +} + +.flatpickr-calendar.static.open { + z-index: 999; + display: block; +} + +.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) { + -webkit-box-shadow: none !important; + box-shadow: none !important; +} + +.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) { + -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6; + box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6; +} + +.flatpickr-calendar .hasWeeks .dayContainer, +.flatpickr-calendar .hasTime .dayContainer { + border-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.flatpickr-calendar .hasWeeks .dayContainer { + border-left: 0; +} + +.flatpickr-calendar.hasTime .flatpickr-time { + height: 40px; + border-top: 1px solid #e6e6e6; +} + +.flatpickr-calendar.noCalendar.hasTime .flatpickr-time { + height: auto; +} + +.flatpickr-calendar:before, +.flatpickr-calendar:after { + position: absolute; + display: block; + pointer-events: none; + border: solid transparent; + content: ""; + height: 0; + width: 0; + left: 22px; +} + +.flatpickr-calendar.rightMost:before, +.flatpickr-calendar.arrowRight:before, +.flatpickr-calendar.rightMost:after, +.flatpickr-calendar.arrowRight:after { + left: auto; + right: 22px; +} + +.flatpickr-calendar.arrowCenter:before, +.flatpickr-calendar.arrowCenter:after { + left: 50%; + right: 50%; +} + +.flatpickr-calendar:before { + border-width: 5px; + margin: 0 -5px; +} + +.flatpickr-calendar:after { + border-width: 4px; + margin: 0 -4px; +} + +.flatpickr-calendar.arrowTop:before, +.flatpickr-calendar.arrowTop:after { + bottom: 100%; +} + +.flatpickr-calendar.arrowTop:before { + border-bottom-color: #e6e6e6; +} + +.flatpickr-calendar.arrowTop:after { + border-bottom-color: #fff; +} + +.flatpickr-calendar.arrowBottom:before, +.flatpickr-calendar.arrowBottom:after { + top: 100%; +} + +.flatpickr-calendar.arrowBottom:before { + border-top-color: #e6e6e6; +} + +.flatpickr-calendar.arrowBottom:after { + border-top-color: #fff; +} + +.flatpickr-calendar:focus { + outline: 0; +} + +.flatpickr-wrapper { + position: relative; + display: inline-block; +} + +.flatpickr-months { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} + +.flatpickr-months .flatpickr-month { + background: transparent; + color: rgba(0, 0, 0, 0.9); + fill: rgba(0, 0, 0, 0.9); + height: 34px; + line-height: 1; + text-align: center; + position: relative; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + overflow: hidden; + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} + +.flatpickr-months .flatpickr-prev-month, +.flatpickr-months .flatpickr-next-month { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + text-decoration: none; + cursor: pointer; + position: absolute; + top: 0; + height: 34px; + padding: 10px; + z-index: 3; + color: rgba(0, 0, 0, 0.9); + fill: rgba(0, 0, 0, 0.9); +} + +.flatpickr-months .flatpickr-prev-month.flatpickr-disabled, +.flatpickr-months .flatpickr-next-month.flatpickr-disabled { + display: none; +} + +.flatpickr-months .flatpickr-prev-month i, +.flatpickr-months .flatpickr-next-month i { + position: relative; +} + +.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month, +.flatpickr-months .flatpickr-next-month.flatpickr-prev-month { + /* + /*rtl:begin:ignore*/ + /* + */ + left: 0; + /* + /*rtl:end:ignore*/ + /* + */ +} + +/* + /*rtl:begin:ignore*/ +/* + /*rtl:end:ignore*/ +.flatpickr-months .flatpickr-prev-month.flatpickr-next-month, +.flatpickr-months .flatpickr-next-month.flatpickr-next-month { + /* + /*rtl:begin:ignore*/ + /* + */ + right: 0; + /* + /*rtl:end:ignore*/ + /* + */ +} + +/* + /*rtl:begin:ignore*/ +/* + /*rtl:end:ignore*/ +.flatpickr-months .flatpickr-prev-month:hover, +.flatpickr-months .flatpickr-next-month:hover { + color: #959ea9; +} + +.flatpickr-months .flatpickr-prev-month:hover svg, +.flatpickr-months .flatpickr-next-month:hover svg { + fill: #f64747; +} + +.flatpickr-months .flatpickr-prev-month svg, +.flatpickr-months .flatpickr-next-month svg { + width: 14px; + height: 14px; +} + +.flatpickr-months .flatpickr-prev-month svg path, +.flatpickr-months .flatpickr-next-month svg path { + -webkit-transition: fill 0.1s; + transition: fill 0.1s; + fill: inherit; +} + +.numInputWrapper { + position: relative; + height: auto; +} + +.numInputWrapper input, +.numInputWrapper span { + display: inline-block; +} + +.numInputWrapper input { + width: 100%; +} + +.numInputWrapper input::-ms-clear { + display: none; +} + +.numInputWrapper input::-webkit-outer-spin-button, +.numInputWrapper input::-webkit-inner-spin-button { + margin: 0; + -webkit-appearance: none; +} + +.numInputWrapper span { + position: absolute; + right: 0; + width: 14px; + padding: 0 4px 0 2px; + height: 50%; + line-height: 50%; + opacity: 0; + cursor: pointer; + border: 1px solid rgba(57, 57, 57, 0.15); + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +.numInputWrapper span:hover { + background: rgba(0, 0, 0, 0.1); +} + +.numInputWrapper span:active { + background: rgba(0, 0, 0, 0.2); +} + +.numInputWrapper span:after { + display: block; + content: ""; + position: absolute; +} + +.numInputWrapper span.arrowUp { + top: 0; + border-bottom: 0; +} + +.numInputWrapper span.arrowUp:after { + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-bottom: 4px solid rgba(57, 57, 57, 0.6); + top: 26%; +} + +.numInputWrapper span.arrowDown { + top: 50%; +} + +.numInputWrapper span.arrowDown:after { + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid rgba(57, 57, 57, 0.6); + top: 40%; +} + +.numInputWrapper span svg { + width: inherit; + height: auto; +} + +.numInputWrapper span svg path { + fill: rgba(0, 0, 0, 0.5); +} + +.numInputWrapper:hover { + background: rgba(0, 0, 0, 0.05); +} + +.numInputWrapper:hover span { + opacity: 1; +} + +.flatpickr-current-month { + font-size: 135%; + line-height: inherit; + font-weight: 300; + color: inherit; + position: absolute; + width: 75%; + left: 12.5%; + padding: 7.48px 0 0 0; + line-height: 1; + height: 34px; + display: inline-block; + text-align: center; + -webkit-transform: translate3d(0px, 0px, 0px); + transform: translate3d(0px, 0px, 0px); +} + +.flatpickr-current-month span.cur-month { + font-family: inherit; + font-weight: 700; + color: inherit; + display: inline-block; + margin-left: 0.5ch; + padding: 0; +} + +.flatpickr-current-month span.cur-month:hover { + background: rgba(0, 0, 0, 0.05); +} + +.flatpickr-current-month .numInputWrapper { + width: 6ch; + width: 7ch\0 ; + display: inline-block; +} + +.flatpickr-current-month .numInputWrapper span.arrowUp:after { + border-bottom-color: rgba(0, 0, 0, 0.9); +} + +.flatpickr-current-month .numInputWrapper span.arrowDown:after { + border-top-color: rgba(0, 0, 0, 0.9); +} + +.flatpickr-current-month input.cur-year { + background: transparent; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: inherit; + cursor: text; + padding: 0 0 0 0.5ch; + margin: 0; + display: inline-block; + font-size: inherit; + font-family: inherit; + font-weight: 300; + line-height: inherit; + height: auto; + border: 0; + border-radius: 0; + vertical-align: initial; + -webkit-appearance: textfield; + -moz-appearance: textfield; + appearance: textfield; +} + +.flatpickr-current-month input.cur-year:focus { + outline: 0; +} + +.flatpickr-current-month input.cur-year[disabled], +.flatpickr-current-month input.cur-year[disabled]:hover { + font-size: 100%; + color: rgba(0, 0, 0, 0.5); + background: transparent; + pointer-events: none; +} + +.flatpickr-current-month .flatpickr-monthDropdown-months { + appearance: menulist; + background: transparent; + border: none; + border-radius: 0; + box-sizing: border-box; + color: inherit; + cursor: pointer; + font-size: inherit; + font-family: inherit; + font-weight: 300; + height: auto; + line-height: inherit; + margin: -1px 0 0 0; + outline: none; + padding: 0 0 0 0.5ch; + position: relative; + vertical-align: initial; + -webkit-box-sizing: border-box; + -webkit-appearance: menulist; + -moz-appearance: menulist; + width: auto; +} + +.flatpickr-current-month .flatpickr-monthDropdown-months:focus, +.flatpickr-current-month .flatpickr-monthDropdown-months:active { + outline: none; +} + +.flatpickr-current-month .flatpickr-monthDropdown-months:hover { + background: rgba(0, 0, 0, 0.05); +} + +.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month { + background-color: transparent; + outline: none; + padding: 0; +} + +.flatpickr-weekdays { + background: transparent; + text-align: center; + overflow: hidden; + width: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + height: 28px; +} + +.flatpickr-weekdays .flatpickr-weekdaycontainer { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} + +span.flatpickr-weekday { + cursor: default; + font-size: 90%; + background: transparent; + color: rgba(0, 0, 0, 0.54); + line-height: 1; + margin: 0; + text-align: center; + display: block; + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + font-weight: bolder; +} + +.dayContainer, +.flatpickr-weeks { + padding: 1px 0 0 0; +} + +.flatpickr-days { + position: relative; + overflow: hidden; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + width: 307.875px; +} + +.flatpickr-days:focus { + outline: 0; +} + +.dayContainer { + padding: 0; + outline: 0; + text-align: left; + width: 307.875px; + min-width: 307.875px; + max-width: 307.875px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + display: inline-block; + display: -ms-flexbox; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-wrap: wrap; + -ms-flex-pack: justify; + -webkit-justify-content: space-around; + justify-content: space-around; + -webkit-transform: translate3d(0px, 0px, 0px); + transform: translate3d(0px, 0px, 0px); + opacity: 1; +} + +.dayContainer + .dayContainer { + -webkit-box-shadow: -1px 0 0 #e6e6e6; + box-shadow: -1px 0 0 #e6e6e6; +} + +.flatpickr-day { + background: none; + border: 1px solid transparent; + border-radius: 150px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #393939; + cursor: pointer; + font-weight: 400; + width: 14.2857143%; + -webkit-flex-basis: 14.2857143%; + -ms-flex-preferred-size: 14.2857143%; + flex-basis: 14.2857143%; + max-width: 39px; + height: 39px; + line-height: 39px; + margin: 0; + display: inline-block; + position: relative; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; +} + +.flatpickr-day.inRange, +.flatpickr-day.prevMonthDay.inRange, +.flatpickr-day.nextMonthDay.inRange, +.flatpickr-day.today.inRange, +.flatpickr-day.prevMonthDay.today.inRange, +.flatpickr-day.nextMonthDay.today.inRange, +.flatpickr-day:hover, +.flatpickr-day.prevMonthDay:hover, +.flatpickr-day.nextMonthDay:hover, +.flatpickr-day:focus, +.flatpickr-day.prevMonthDay:focus, +.flatpickr-day.nextMonthDay:focus { + cursor: pointer; + outline: 0; + background: #e6e6e6; + border-color: #e6e6e6; +} + +.flatpickr-day.today { + border-color: #959ea9; +} + +.flatpickr-day.today:hover, +.flatpickr-day.today:focus { + border-color: #959ea9; + background: #959ea9; + color: #fff; +} + +.flatpickr-day.selected, +.flatpickr-day.startRange, +.flatpickr-day.endRange, +.flatpickr-day.selected.inRange, +.flatpickr-day.startRange.inRange, +.flatpickr-day.endRange.inRange, +.flatpickr-day.selected:focus, +.flatpickr-day.startRange:focus, +.flatpickr-day.endRange:focus, +.flatpickr-day.selected:hover, +.flatpickr-day.startRange:hover, +.flatpickr-day.endRange:hover, +.flatpickr-day.selected.prevMonthDay, +.flatpickr-day.startRange.prevMonthDay, +.flatpickr-day.endRange.prevMonthDay, +.flatpickr-day.selected.nextMonthDay, +.flatpickr-day.startRange.nextMonthDay, +.flatpickr-day.endRange.nextMonthDay { + background: #569ff7; + -webkit-box-shadow: none; + box-shadow: none; + color: #fff; + border-color: #569ff7; +} + +.flatpickr-day.selected.startRange, +.flatpickr-day.startRange.startRange, +.flatpickr-day.endRange.startRange { + border-radius: 50px 0 0 50px; +} + +.flatpickr-day.selected.endRange, +.flatpickr-day.startRange.endRange, +.flatpickr-day.endRange.endRange { + border-radius: 0 50px 50px 0; +} + +.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)), +.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)), +.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) { + -webkit-box-shadow: -10px 0 0 #569ff7; + box-shadow: -10px 0 0 #569ff7; +} + +.flatpickr-day.selected.startRange.endRange, +.flatpickr-day.startRange.startRange.endRange, +.flatpickr-day.endRange.startRange.endRange { + border-radius: 50px; +} + +.flatpickr-day.inRange { + border-radius: 0; + -webkit-box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6; + box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6; +} + +.flatpickr-day.flatpickr-disabled, +.flatpickr-day.flatpickr-disabled:hover, +.flatpickr-day.prevMonthDay, +.flatpickr-day.nextMonthDay, +.flatpickr-day.notAllowed, +.flatpickr-day.notAllowed.prevMonthDay, +.flatpickr-day.notAllowed.nextMonthDay { + color: rgba(57, 57, 57, 0.3); + background: transparent; + border-color: transparent; + cursor: default; +} + +.flatpickr-day.flatpickr-disabled, +.flatpickr-day.flatpickr-disabled:hover { + cursor: not-allowed; + color: rgba(57, 57, 57, 0.1); +} + +.flatpickr-day.week.selected { + border-radius: 0; + -webkit-box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7; + box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7; +} + +.flatpickr-day.hidden { + visibility: hidden; +} + +.rangeMode .flatpickr-day { + margin-top: 1px; +} + +.flatpickr-weekwrapper { + float: left; +} + +.flatpickr-weekwrapper .flatpickr-weeks { + padding: 0 12px; + -webkit-box-shadow: 1px 0 0 #e6e6e6; + box-shadow: 1px 0 0 #e6e6e6; +} + +.flatpickr-weekwrapper .flatpickr-weekday { + float: none; + width: 100%; + line-height: 28px; +} + +.flatpickr-weekwrapper span.flatpickr-day, +.flatpickr-weekwrapper span.flatpickr-day:hover { + display: block; + width: 100%; + max-width: none; + color: rgba(57, 57, 57, 0.3); + background: transparent; + cursor: default; + border: none; +} + +.flatpickr-innerContainer { + display: block; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-sizing: border-box; + box-sizing: border-box; + overflow: hidden; +} + +.flatpickr-rContainer { + display: inline-block; + padding: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +.flatpickr-time { + text-align: center; + outline: 0; + display: block; + height: 0; + line-height: 40px; + max-height: 40px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + overflow: hidden; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} + +.flatpickr-time:after { + content: ""; + display: table; + clear: both; +} + +.flatpickr-time .numInputWrapper { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + width: 40%; + height: 40px; + float: left; +} + +.flatpickr-time .numInputWrapper span.arrowUp:after { + border-bottom-color: #393939; +} + +.flatpickr-time .numInputWrapper span.arrowDown:after { + border-top-color: #393939; +} + +.flatpickr-time.hasSeconds .numInputWrapper { + width: 26%; +} + +.flatpickr-time.time24hr .numInputWrapper { + width: 49%; +} + +.flatpickr-time input { + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; + border: 0; + border-radius: 0; + text-align: center; + margin: 0; + padding: 0; + height: inherit; + line-height: inherit; + color: #393939; + font-size: 14px; + position: relative; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -webkit-appearance: textfield; + -moz-appearance: textfield; + appearance: textfield; +} + +.flatpickr-time input.flatpickr-hour { + font-weight: bold; +} + +.flatpickr-time input.flatpickr-minute, +.flatpickr-time input.flatpickr-second { + font-weight: 400; +} + +.flatpickr-time input:focus { + outline: 0; + border: 0; +} + +.flatpickr-time .flatpickr-time-separator, +.flatpickr-time .flatpickr-am-pm { + height: inherit; + float: left; + line-height: inherit; + color: #393939; + font-weight: bold; + width: 2%; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-align-self: center; + -ms-flex-item-align: center; + align-self: center; +} + +.flatpickr-time .flatpickr-am-pm { + outline: 0; + width: 18%; + cursor: pointer; + text-align: center; + font-weight: 400; +} + +.flatpickr-time input:hover, +.flatpickr-time .flatpickr-am-pm:hover, +.flatpickr-time input:focus, +.flatpickr-time .flatpickr-am-pm:focus { + background: #eee; +} + +.flatpickr-input[readonly] { + cursor: pointer; +} + +@-webkit-keyframes fpFadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes fpFadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +/** + * FormValidation (https://formvalidation.io) + * The best validation library for JavaScript + * (c) 2013 - 2021 Nguyen Huu Phuoc + */ +.fv-sr-only { + display: none; +} + +.fv-plugins-framework input::-ms-clear, +.fv-plugins-framework textarea::-ms-clear { + display: none; + height: 0; + width: 0; +} + +.fv-plugins-icon-container { + position: relative; +} + +.fv-plugins-icon { + position: absolute; + right: 0; + text-align: center; + top: 0; +} + +.fv-plugins-tooltip { + max-width: 256px; + position: absolute; + text-align: center; + z-index: 10000; +} + +.fv-plugins-tooltip .fv-plugins-tooltip__content { + background: #000; + border-radius: 3px; + color: #eee; + padding: 8px; + position: relative; +} + +.fv-plugins-tooltip .fv-plugins-tooltip__content:before { + border: 8px solid transparent; + content: ""; + position: absolute; +} + +.fv-plugins-tooltip--hide { + display: none; +} + +.fv-plugins-tooltip--top-left { + transform: translateY(-8px); +} + +.fv-plugins-tooltip--top-left .fv-plugins-tooltip__content:before { + border-top-color: #000; + left: 8px; + top: 100%; +} + +.fv-plugins-tooltip--top { + transform: translateY(-8px); +} + +.fv-plugins-tooltip--top .fv-plugins-tooltip__content:before { + border-top-color: #000; + left: 50%; + margin-left: -8px; + top: 100%; +} + +.fv-plugins-tooltip--top-right { + transform: translateY(-8px); +} + +.fv-plugins-tooltip--top-right .fv-plugins-tooltip__content:before { + border-top-color: #000; + right: 8px; + top: 100%; +} + +.fv-plugins-tooltip--right { + transform: translateX(8px); +} + +.fv-plugins-tooltip--right .fv-plugins-tooltip__content:before { + border-right-color: #000; + margin-top: -8px; + right: 100%; + top: 50%; +} + +.fv-plugins-tooltip--bottom-right { + transform: translateY(8px); +} + +.fv-plugins-tooltip--bottom-right .fv-plugins-tooltip__content:before { + border-bottom-color: #000; + bottom: 100%; + right: 8px; +} + +.fv-plugins-tooltip--bottom { + transform: translateY(8px); +} + +.fv-plugins-tooltip--bottom .fv-plugins-tooltip__content:before { + border-bottom-color: #000; + bottom: 100%; + left: 50%; + margin-left: -8px; +} + +.fv-plugins-tooltip--bottom-left { + transform: translateY(8px); +} + +.fv-plugins-tooltip--bottom-left .fv-plugins-tooltip__content:before { + border-bottom-color: #000; + bottom: 100%; + left: 8px; +} + +.fv-plugins-tooltip--left { + transform: translateX(-8px); +} + +.fv-plugins-tooltip--left .fv-plugins-tooltip__content:before { + border-left-color: #000; + left: 100%; + margin-top: -8px; + top: 50%; +} + +.fv-plugins-tooltip-icon { + cursor: pointer; + pointer-events: inherit; +} + +.fv-plugins-bootstrap { + /* For horizontal form */ + /* Stacked form */ + /* Inline form */ + /* Remove the icons generated by Bootstrap 4.2+ */ +} + +.fv-plugins-bootstrap .fv-help-block { + color: #dc3545; + font-size: 80%; + margin-top: 0.25rem; +} + +.fv-plugins-bootstrap .is-invalid ~ .form-check-label, +.fv-plugins-bootstrap .is-valid ~ .form-check-label { + color: inherit; +} + +.fv-plugins-bootstrap .has-danger .fv-plugins-icon { + color: #dc3545; +} + +.fv-plugins-bootstrap .has-success .fv-plugins-icon { + color: #28a745; +} + +.fv-plugins-bootstrap .fv-plugins-icon { + height: 38px; + line-height: 38px; + width: 38px; +} + +.fv-plugins-bootstrap .input-group ~ .fv-plugins-icon { + z-index: 3; +} + +.fv-plugins-bootstrap .form-group.row .fv-plugins-icon { + right: 15px; +} + +.fv-plugins-bootstrap .form-group.row .fv-plugins-icon-check { + top: -7px; + /* labelHeight/2 - iconHeight/2 */ +} + +.fv-plugins-bootstrap:not(.form-inline) label ~ .fv-plugins-icon { + top: 32px; +} + +.fv-plugins-bootstrap:not(.form-inline) label ~ .fv-plugins-icon-check { + top: 25px; +} + +.fv-plugins-bootstrap:not(.form-inline) label.sr-only ~ .fv-plugins-icon-check { + top: -7px; +} + +.fv-plugins-bootstrap.form-inline .form-group { + align-items: flex-start; + flex-direction: column; + margin-bottom: auto; +} + +.fv-plugins-bootstrap .form-control.is-valid, +.fv-plugins-bootstrap .form-control.is-invalid { + background-image: none; +} + +.fv-plugins-bootstrap3 .help-block { + margin-bottom: 0; +} + +.fv-plugins-bootstrap3 .input-group ~ .form-control-feedback { + z-index: 4; +} + +.fv-plugins-bootstrap3.form-inline .form-group { + vertical-align: top; +} + +.fv-plugins-bootstrap5 { + /* Support floating label */ + /* For horizontal form */ + /* Stacked form */ + /* Inline form */ +} + +.fv-plugins-bootstrap5 .fv-plugins-bootstrap5-row-invalid .fv-plugins-icon { + color: #dc3545; +} + +.fv-plugins-bootstrap5 .fv-plugins-bootstrap5-row-valid .fv-plugins-icon { + color: #198754; +} + +.fv-plugins-bootstrap5 .fv-plugins-icon { + align-items: center; + display: flex; + justify-content: center; + height: 38px; + width: 38px; +} + +.fv-plugins-bootstrap5 .input-group ~ .fv-plugins-icon { + z-index: 3; +} + +.fv-plugins-bootstrap5 .fv-plugins-icon-input-group { + right: -38px; +} + +.fv-plugins-bootstrap5 .form-floating .fv-plugins-icon { + height: 58px; +} + +.fv-plugins-bootstrap5 .row .fv-plugins-icon { + right: 12px; +} + +.fv-plugins-bootstrap5 .row .fv-plugins-icon-check { + top: -7px; + /* labelHeight/2 - iconHeight/2 */ +} + +.fv-plugins-bootstrap5:not(.fv-plugins-bootstrap5-form-inline) label ~ .fv-plugins-icon { + top: 32px; +} + +.fv-plugins-bootstrap5:not(.fv-plugins-bootstrap5-form-inline) label ~ .fv-plugins-icon-check { + top: 25px; +} + +.fv-plugins-bootstrap5:not(.fv-plugins-bootstrap5-form-inline) label.sr-only ~ .fv-plugins-icon-check { + top: -7px; +} + +.fv-plugins-bootstrap5.fv-plugins-bootstrap5-form-inline .fv-plugins-icon { + right: calc(var(--bs-gutter-x, 1.5rem) / 2); +} + +.fv-plugins-bootstrap5 .form-select.fv-plugins-icon-input.is-valid, +.fv-plugins-bootstrap5 .form-select.fv-plugins-icon-input.is-invalid, +.fv-plugins-bootstrap5 .form-control.fv-plugins-icon-input.is-valid, +.fv-plugins-bootstrap5 .form-control.fv-plugins-icon-input.is-invalid { + background-image: none; +} + +.fv-plugins-bulma { + /* Support add ons inside field */ +} + +.fv-plugins-bulma .field.has-addons { + flex-wrap: wrap; +} + +.fv-plugins-bulma .field.has-addons::after { + content: ""; + width: 100%; +} + +.fv-plugins-bulma .field.has-addons .fv-plugins-message-container { + order: 1; +} + +.fv-plugins-bulma .icon.fv-plugins-icon-check { + top: -4px; +} + +.fv-plugins-bulma .fv-has-error .select select, +.fv-plugins-bulma .fv-has-error .input, +.fv-plugins-bulma .fv-has-error .textarea { + border: 1px solid #ff3860; + /* Same as .input.is-danger */ +} + +.fv-plugins-bulma .fv-has-success .select select, +.fv-plugins-bulma .fv-has-success .input, +.fv-plugins-bulma .fv-has-success .textarea { + border: 1px solid #23d160; + /* Same as .input.is-success */ +} + +.fv-plugins-foundation { + /* Stacked form */ +} + +.fv-plugins-foundation .fv-plugins-icon { + height: 39px; + line-height: 39px; + right: 0; + width: 39px; + /* Same as height of input */ +} + +.fv-plugins-foundation .grid-padding-x .fv-plugins-icon { + right: 15px; +} + +.fv-plugins-foundation .fv-plugins-icon-container .cell { + position: relative; +} + +.fv-plugins-foundation [type=checkbox] ~ .fv-plugins-icon, +.fv-plugins-foundation [type=checkbox] ~ .fv-plugins-icon { + top: -7px; + /* labelHeight/2 - iconHeight/2 */ +} + +.fv-plugins-foundation.fv-stacked-form .fv-plugins-message-container { + width: 100%; +} + +.fv-plugins-foundation.fv-stacked-form label .fv-plugins-icon, +.fv-plugins-foundation.fv-stacked-form fieldset [type=checkbox] ~ .fv-plugins-icon, +.fv-plugins-foundation.fv-stacked-form fieldset [type=radio] ~ .fv-plugins-icon { + top: 25px; + /* Same as height of label */ +} + +.fv-plugins-foundation .form-error { + display: block; +} + +.fv-plugins-foundation .fv-row__success .fv-plugins-icon { + color: #3adb76; + /* Same as .success */ +} + +.fv-plugins-foundation .fv-row__error label, +.fv-plugins-foundation .fv-row__error fieldset legend, +.fv-plugins-foundation .fv-row__error .fv-plugins-icon { + color: #cc4b37; + /* Same as .is-invalid-label and .form-error */ +} + +.fv-plugins-materialize .fv-plugins-icon { + height: 42px; + /* Same as height of input */ + line-height: 42px; + width: 42px; +} + +.fv-plugins-materialize .fv-plugins-icon-check { + top: -10px; +} + +.fv-plugins-materialize .fv-invalid-row .helper-text, +.fv-plugins-materialize .fv-invalid-row .fv-plugins-icon { + color: #f44336; +} + +.fv-plugins-materialize .fv-valid-row .helper-text, +.fv-plugins-materialize .fv-valid-row .fv-plugins-icon { + color: #4caf50; +} + +.fv-plugins-milligram .fv-plugins-icon { + height: 38px; + /* Same as height of input */ + line-height: 38px; + width: 38px; +} + +.fv-plugins-milligram .column { + position: relative; +} + +.fv-plugins-milligram .column .fv-plugins-icon { + right: 10px; +} + +.fv-plugins-milligram .fv-plugins-icon-check { + top: -6px; +} + +.fv-plugins-milligram .fv-plugins-message-container { + margin-bottom: 15px; +} + +.fv-plugins-milligram.fv-stacked-form .fv-plugins-icon { + top: 30px; +} + +.fv-plugins-milligram.fv-stacked-form .fv-plugins-icon-check { + top: 24px; +} + +.fv-plugins-milligram .fv-invalid-row .fv-help-block, +.fv-plugins-milligram .fv-invalid-row .fv-plugins-icon { + color: red; +} + +.fv-plugins-milligram .fv-valid-row .fv-help-block, +.fv-plugins-milligram .fv-valid-row .fv-plugins-icon { + color: green; +} + +.fv-plugins-mini .fv-plugins-icon { + height: 42px; + /* Same as height of input */ + line-height: 42px; + width: 42px; + top: 4px; + /* Same as input's margin top */ +} + +.fv-plugins-mini .fv-plugins-icon-check { + top: -8px; +} + +.fv-plugins-mini.fv-stacked-form .fv-plugins-icon { + top: 28px; +} + +.fv-plugins-mini.fv-stacked-form .fv-plugins-icon-check { + top: 20px; +} + +.fv-plugins-mini .fv-plugins-message-container { + margin: calc(var(--universal-margin) / 2); +} + +.fv-plugins-mini .fv-invalid-row .fv-help-block, +.fv-plugins-mini .fv-invalid-row .fv-plugins-icon { + color: var(--input-invalid-color); +} + +.fv-plugins-mini .fv-valid-row .fv-help-block, +.fv-plugins-mini .fv-valid-row .fv-plugins-icon { + color: #308732; + /* Same as tertiary color */ +} + +.fv-plugins-mui .fv-plugins-icon { + height: 32px; + /* Same as height of input */ + line-height: 32px; + width: 32px; + top: 15px; + right: 4px; +} + +.fv-plugins-mui .fv-plugins-icon-check { + top: -6px; + right: -10px; +} + +.fv-plugins-mui .fv-plugins-message-container { + margin: 8px 0; +} + +.fv-plugins-mui .fv-invalid-row .fv-help-block, +.fv-plugins-mui .fv-invalid-row .fv-plugins-icon { + color: #f44336; +} + +.fv-plugins-mui .fv-valid-row .fv-help-block, +.fv-plugins-mui .fv-valid-row .fv-plugins-icon { + color: #4caf50; +} + +.fv-plugins-pure { + /* Horizontal form */ + /* Stacked form */ +} + +.fv-plugins-pure .fv-plugins-icon { + height: 36px; + line-height: 36px; + width: 36px; + /* Height of Pure input */ +} + +.fv-plugins-pure .fv-has-error label, +.fv-plugins-pure .fv-has-error .fv-help-block, +.fv-plugins-pure .fv-has-error .fv-plugins-icon { + color: #ca3c3c; + /* Same as .button-error */ +} + +.fv-plugins-pure .fv-has-success label, +.fv-plugins-pure .fv-has-success .fv-help-block, +.fv-plugins-pure .fv-has-success .fv-plugins-icon { + color: #1cb841; + /* Same as .button-success */ +} + +.fv-plugins-pure.pure-form-aligned .fv-help-block { + margin-top: 5px; + margin-left: 180px; +} + +.fv-plugins-pure.pure-form-aligned .fv-plugins-icon-check { + top: -9px; + /* labelHeight/2 - iconHeight/2 */ +} + +.fv-plugins-pure.pure-form-stacked .pure-control-group { + margin-bottom: 8px; +} + +.fv-plugins-pure.pure-form-stacked .fv-plugins-icon { + top: 22px; + /* Same as height of label */ +} + +.fv-plugins-pure.pure-form-stacked .fv-plugins-icon-check { + top: 13px; +} + +.fv-plugins-pure.pure-form-stacked .fv-sr-only ~ .fv-plugins-icon { + top: -9px; +} + +.fv-plugins-semantic.ui.form .fields.error label, +.fv-plugins-semantic .error .fv-plugins-icon { + color: #9f3a38; + /* Same as .ui.form .field.error .input */ +} + +.fv-plugins-semantic .fv-plugins-icon-check { + right: 7px; +} + +.fv-plugins-shoelace .input-group { + margin-bottom: 0; +} + +.fv-plugins-shoelace .fv-plugins-icon { + height: 32px; + line-height: 32px; + /* Same as height of input */ + width: 32px; + top: 28px; + /* Same as height of label */ +} + +.fv-plugins-shoelace .row .fv-plugins-icon { + right: 16px; + top: 0; +} + +.fv-plugins-shoelace .fv-plugins-icon-check { + top: 24px; +} + +.fv-plugins-shoelace .fv-sr-only ~ .fv-plugins-icon, +.fv-plugins-shoelace .fv-sr-only ~ div .fv-plugins-icon { + top: -4px; +} + +.fv-plugins-shoelace .input-valid .fv-help-block, +.fv-plugins-shoelace .input-valid .fv-plugins-icon { + color: #2ecc40; +} + +.fv-plugins-shoelace .input-invalid .fv-help-block, +.fv-plugins-shoelace .input-invalid .fv-plugins-icon { + color: #ff4136; +} + +.fv-plugins-spectre .input-group .fv-plugins-icon { + z-index: 2; +} + +.fv-plugins-spectre .form-group .fv-plugins-icon-check { + right: 6px; + top: 10px; +} + +.fv-plugins-spectre:not(.form-horizontal) .form-group .fv-plugins-icon-check { + right: 6px; + top: 45px; +} + +.fv-plugins-tachyons .fv-plugins-icon { + height: 36px; + line-height: 36px; + width: 36px; +} + +.fv-plugins-tachyons .fv-plugins-icon-check { + top: -7px; +} + +.fv-plugins-tachyons.fv-stacked-form .fv-plugins-icon { + top: 34px; +} + +.fv-plugins-tachyons.fv-stacked-form .fv-plugins-icon-check { + top: 24px; +} + +.fv-plugins-turret .fv-plugins-icon { + height: 40px; + /* Same as height of input */ + line-height: 40px; + width: 40px; +} + +.fv-plugins-turret.fv-stacked-form .fv-plugins-icon { + top: 29px; +} + +.fv-plugins-turret.fv-stacked-form .fv-plugins-icon-check { + top: 17px; +} + +.fv-plugins-turret .fv-invalid-row .form-message, +.fv-plugins-turret .fv-invalid-row .fv-plugins-icon { + color: #c00; + /* Same as .form-message.error */ +} + +.fv-plugins-turret .fv-valid-row .form-message, +.fv-plugins-turret .fv-valid-row .fv-plugins-icon { + color: #00b300; + /* Same as .form-message.success */ +} + +.fv-plugins-uikit { + /* Horizontal form */ + /* Stacked form */ +} + +.fv-plugins-uikit .fv-plugins-icon { + height: 40px; + /* Height of UIKit input */ + line-height: 40px; + top: 25px; + /* Height of UIKit label */ + width: 40px; +} + +.fv-plugins-uikit.uk-form-horizontal .fv-plugins-icon { + top: 0; +} + +.fv-plugins-uikit.uk-form-horizontal .fv-plugins-icon-check { + top: -11px; + /* checkboxLabelHeight/2 - iconHeight/2 = 18/2 - 40/2 */ +} + +.fv-plugins-uikit.uk-form-stacked .fv-plugins-icon-check { + top: 15px; + /* labelHeight + labelMarginBottom + checkboxLabelHeight/2 - iconHeight/2 = 21 + 5 + 18/2 - 40/2 */ +} + +.fv-plugins-uikit.uk-form-stacked .fv-no-label .fv-plugins-icon { + top: 0; +} + +.fv-plugins-uikit.uk-form-stacked .fv-no-label .fv-plugins-icon-check { + top: -11px; +} + +.fv-plugins-wizard--step { + display: none; +} + +.fv-plugins-wizard--active { + display: block; +} + +.daterangepicker { + position: absolute; + color: inherit; + background-color: #fff; + border-radius: 4px; + border: 1px solid #ddd; + width: 278px; + max-width: none; + padding: 0; + margin-top: 7px; + top: 100px; + left: 20px; + z-index: 3001; + display: none; + font-family: arial; + font-size: 15px; + line-height: 1em; +} + +.daterangepicker:before, .daterangepicker:after { + position: absolute; + display: inline-block; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ""; +} + +.daterangepicker:before { + top: -7px; + border-right: 7px solid transparent; + border-left: 7px solid transparent; + border-bottom: 7px solid #ccc; +} + +.daterangepicker:after { + top: -6px; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; +} + +.daterangepicker.opensleft:before { + right: 9px; +} + +.daterangepicker.opensleft:after { + right: 10px; +} + +.daterangepicker.openscenter:before { + left: 0; + right: 0; + width: 0; + margin-left: auto; + margin-right: auto; +} + +.daterangepicker.openscenter:after { + left: 0; + right: 0; + width: 0; + margin-left: auto; + margin-right: auto; +} + +.daterangepicker.opensright:before { + left: 9px; +} + +.daterangepicker.opensright:after { + left: 10px; +} + +.daterangepicker.drop-up { + margin-top: -7px; +} + +.daterangepicker.drop-up:before { + top: initial; + bottom: -7px; + border-bottom: initial; + border-top: 7px solid #ccc; +} + +.daterangepicker.drop-up:after { + top: initial; + bottom: -6px; + border-bottom: initial; + border-top: 6px solid #fff; +} + +.daterangepicker.single .daterangepicker .ranges, .daterangepicker.single .drp-calendar { + float: none; +} + +.daterangepicker.single .drp-selected { + display: none; +} + +.daterangepicker.show-calendar .drp-calendar { + display: block; +} + +.daterangepicker.show-calendar .drp-buttons { + display: block; +} + +.daterangepicker.auto-apply .drp-buttons { + display: none; +} + +.daterangepicker .drp-calendar { + display: none; + max-width: 270px; +} + +.daterangepicker .drp-calendar.left { + padding: 8px 0 8px 8px; +} + +.daterangepicker .drp-calendar.right { + padding: 8px; +} + +.daterangepicker .drp-calendar.single .calendar-table { + border: none; +} + +.daterangepicker .calendar-table .next span, .daterangepicker .calendar-table .prev span { + color: #fff; + border: solid black; + border-width: 0 2px 2px 0; + border-radius: 0; + display: inline-block; + padding: 3px; +} + +.daterangepicker .calendar-table .next span { + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); +} + +.daterangepicker .calendar-table .prev span { + transform: rotate(135deg); + -webkit-transform: rotate(135deg); +} + +.daterangepicker .calendar-table th, .daterangepicker .calendar-table td { + white-space: nowrap; + text-align: center; + vertical-align: middle; + min-width: 32px; + width: 32px; + height: 24px; + line-height: 24px; + font-size: 12px; + border-radius: 4px; + border: 1px solid transparent; + white-space: nowrap; + cursor: pointer; +} + +.daterangepicker .calendar-table { + border: 1px solid #fff; + border-radius: 4px; + background-color: #fff; +} + +.daterangepicker .calendar-table table { + width: 100%; + margin: 0; + border-spacing: 0; + border-collapse: collapse; +} + +.daterangepicker td.available:hover, .daterangepicker th.available:hover { + background-color: #eee; + border-color: transparent; + color: inherit; +} + +.daterangepicker td.week, .daterangepicker th.week { + font-size: 80%; + color: #ccc; +} + +.daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date { + background-color: #fff; + border-color: transparent; + color: #999; +} + +.daterangepicker td.in-range { + background-color: #ebf4f8; + border-color: transparent; + color: #000; + border-radius: 0; +} + +.daterangepicker td.start-date { + border-radius: 4px 0 0 4px; +} + +.daterangepicker td.end-date { + border-radius: 0 4px 4px 0; +} + +.daterangepicker td.start-date.end-date { + border-radius: 4px; +} + +.daterangepicker td.active, .daterangepicker td.active:hover { + background-color: #357ebd; + border-color: transparent; + color: #fff; +} + +.daterangepicker th.month { + width: auto; +} + +.daterangepicker td.disabled, .daterangepicker option.disabled { + color: #999; + cursor: not-allowed; + text-decoration: line-through; +} + +.daterangepicker select.monthselect, .daterangepicker select.yearselect { + font-size: 12px; + padding: 1px; + height: auto; + margin: 0; + cursor: default; +} + +.daterangepicker select.monthselect { + margin-right: 2%; + width: 56%; +} + +.daterangepicker select.yearselect { + width: 40%; +} + +.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect { + width: 50px; + margin: 0 auto; + background: #eee; + border: 1px solid #eee; + padding: 2px; + outline: 0; + font-size: 12px; +} + +.daterangepicker .calendar-time { + text-align: center; + margin: 4px auto 0 auto; + line-height: 30px; + position: relative; +} + +.daterangepicker .calendar-time select.disabled { + color: #ccc; + cursor: not-allowed; +} + +.daterangepicker .drp-buttons { + clear: both; + text-align: right; + padding: 8px; + border-top: 1px solid #ddd; + display: none; + line-height: 12px; + vertical-align: middle; +} + +.daterangepicker .drp-selected { + display: inline-block; + font-size: 12px; + padding-right: 8px; +} + +.daterangepicker .drp-buttons .btn { + margin-left: 8px; + font-size: 12px; + font-weight: bold; + padding: 4px 8px; +} + +.daterangepicker.show-ranges.single.rtl .drp-calendar.left { + border-right: 1px solid #ddd; +} + +.daterangepicker.show-ranges.single.ltr .drp-calendar.left { + border-left: 1px solid #ddd; +} + +.daterangepicker.show-ranges.rtl .drp-calendar.right { + border-right: 1px solid #ddd; +} + +.daterangepicker.show-ranges.ltr .drp-calendar.left { + border-left: 1px solid #ddd; +} + +.daterangepicker .ranges { + float: none; + text-align: left; + margin: 0; +} + +.daterangepicker.show-calendar .ranges { + margin-top: 8px; +} + +.daterangepicker .ranges ul { + list-style: none; + margin: 0 auto; + padding: 0; + width: 100%; +} + +.daterangepicker .ranges li { + font-size: 12px; + padding: 8px 12px; + cursor: pointer; +} + +.daterangepicker .ranges li:hover { + background-color: #eee; +} + +.daterangepicker .ranges li.active { + background-color: #08c; + color: #fff; +} + +/* Larger Screen Styling */ +@media (min-width: 564px) { + .daterangepicker { + width: auto; + } + .daterangepicker .ranges ul { + width: 140px; + } + .daterangepicker.single .ranges ul { + width: 100%; + } + .daterangepicker.single .drp-calendar.left { + clear: none; + } + .daterangepicker.single .ranges, .daterangepicker.single .drp-calendar { + float: left; + } + .daterangepicker { + direction: ltr; + text-align: left; + } + .daterangepicker .drp-calendar.left { + clear: left; + margin-right: 0; + } + .daterangepicker .drp-calendar.left .calendar-table { + border-right: none; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .daterangepicker .drp-calendar.right { + margin-left: 0; + } + .daterangepicker .drp-calendar.right .calendar-table { + border-left: none; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .daterangepicker .drp-calendar.left .calendar-table { + padding-right: 8px; + } + .daterangepicker .ranges, .daterangepicker .drp-calendar { + float: left; + } +} +@media (min-width: 730px) { + .daterangepicker .ranges { + width: auto; + } + .daterangepicker .ranges { + float: left; + } + .daterangepicker.rtl .ranges { + float: right; + } + .daterangepicker .drp-calendar.left { + clear: none !important; + } +} +.tns-outer { + padding: 0 !important; +} + +.tns-outer [hidden] { + display: none !important; +} + +.tns-outer [aria-controls], .tns-outer [data-action] { + cursor: pointer; +} + +.tns-slider { + -webkit-transition: all 0s; + -moz-transition: all 0s; + transition: all 0s; +} + +.tns-slider > .tns-item { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.tns-horizontal.tns-subpixel { + white-space: nowrap; +} + +.tns-horizontal.tns-subpixel > .tns-item { + display: inline-block; + vertical-align: top; + white-space: normal; +} + +.tns-horizontal.tns-no-subpixel:after { + content: ""; + display: table; + clear: both; +} + +.tns-horizontal.tns-no-subpixel > .tns-item { + float: left; +} + +.tns-horizontal.tns-carousel.tns-no-subpixel > .tns-item { + margin-right: -100%; +} + +.tns-no-calc { + position: relative; + left: 0; +} + +.tns-gallery { + position: relative; + left: 0; + min-height: 1px; +} + +.tns-gallery > .tns-item { + position: absolute; + left: -100%; + -webkit-transition: transform 0s, opacity 0s; + -moz-transition: transform 0s, opacity 0s; + transition: transform 0s, opacity 0s; +} + +.tns-gallery > .tns-slide-active { + position: relative; + left: auto !important; +} + +.tns-gallery > .tns-moving { + -webkit-transition: all 0.25s; + -moz-transition: all 0.25s; + transition: all 0.25s; +} + +.tns-autowidth { + display: inline-block; +} + +.tns-lazy-img { + -webkit-transition: opacity 0.6s; + -moz-transition: opacity 0.6s; + transition: opacity 0.6s; + opacity: 0.6; +} + +.tns-lazy-img.tns-complete { + opacity: 1; +} + +.tns-ah { + -webkit-transition: height 0s; + -moz-transition: height 0s; + transition: height 0s; +} + +.tns-ovh { + overflow: hidden; +} + +.tns-visually-hidden { + position: absolute; + left: -10000em; +} + +.tns-transparent { + opacity: 0; + visibility: hidden; +} + +.tns-fadeIn { + opacity: 1; + filter: alpha(opacity=100); + z-index: 0; +} + +.tns-normal, .tns-fadeOut { + opacity: 0; + filter: alpha(opacity=0); + z-index: -1; +} + +.tns-vpfix { + white-space: nowrap; +} + +.tns-vpfix > div, .tns-vpfix > li { + display: inline-block; +} + +.tns-t-subp2 { + margin: 0 auto; + width: 310px; + position: relative; + height: 10px; + overflow: hidden; +} + +.tns-t-ct { + width: 2333.3333333%; + width: -webkit-calc(100% * 70 / 3); + width: -moz-calc(100% * 70 / 3); + width: 2333.3333333333%; + position: absolute; + right: 0; +} + +.tns-t-ct:after { + content: ""; + display: table; + clear: both; +} + +.tns-t-ct > div { + width: 1.4285714%; + width: -webkit-calc(100% / 70); + width: -moz-calc(100% / 70); + width: 1.4285714286%; + height: 10px; + float: left; +} + +/*# sourceMappingURL=sourcemaps/tiny-slider.css.map */ +/* Functional styling; + * These styles are required for noUiSlider to function. + * You don't need to change these rules to apply your design. + */ +.noUi-target, +.noUi-target * { + -webkit-touch-callout: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + -webkit-user-select: none; + -ms-touch-action: none; + touch-action: none; + -ms-user-select: none; + -moz-user-select: none; + user-select: none; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.noUi-target { + position: relative; +} + +.noUi-base, +.noUi-connects { + width: 100%; + height: 100%; + position: relative; + z-index: 1; +} + +/* Wrapper for all connect elements. + */ +.noUi-connects { + overflow: hidden; + z-index: 0; +} + +.noUi-connect, +.noUi-origin { + will-change: transform; + position: absolute; + z-index: 1; + top: 0; + right: 0; + height: 100%; + width: 100%; + -ms-transform-origin: 0 0; + -webkit-transform-origin: 0 0; + -webkit-transform-style: preserve-3d; + transform-origin: 0 0; + transform-style: flat; +} + +/* Offset direction + */ +.noUi-txt-dir-rtl.noUi-horizontal .noUi-origin { + left: 0; + right: auto; +} + +/* Give origins 0 height/width so they don't interfere with clicking the + * connect elements. + */ +.noUi-vertical .noUi-origin { + top: -100%; + width: 0; +} + +.noUi-horizontal .noUi-origin { + height: 0; +} + +.noUi-handle { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + position: absolute; +} + +.noUi-touch-area { + height: 100%; + width: 100%; +} + +.noUi-state-tap .noUi-connect, +.noUi-state-tap .noUi-origin { + -webkit-transition: transform 0.3s; + transition: transform 0.3s; +} + +.noUi-state-drag * { + cursor: inherit !important; +} + +/* Slider size and handle placement; + */ +.noUi-horizontal { + height: 18px; +} + +.noUi-horizontal .noUi-handle { + width: 34px; + height: 28px; + right: -17px; + top: -6px; +} + +.noUi-vertical { + width: 18px; +} + +.noUi-vertical .noUi-handle { + width: 28px; + height: 34px; + right: -6px; + bottom: -17px; +} + +.noUi-txt-dir-rtl.noUi-horizontal .noUi-handle { + left: -17px; + right: auto; +} + +/* Styling; + * Giving the connect element a border radius causes issues with using transform: scale + */ +.noUi-target { + background: #FAFAFA; + border-radius: 4px; + border: 1px solid #D3D3D3; + box-shadow: inset 0 1px 1px #F0F0F0, 0 3px 6px -5px #BBB; +} + +.noUi-connects { + border-radius: 3px; +} + +.noUi-connect { + background: #3FB8AF; +} + +/* Handles and cursors; + */ +.noUi-draggable { + cursor: ew-resize; +} + +.noUi-vertical .noUi-draggable { + cursor: ns-resize; +} + +.noUi-handle { + border: 1px solid #D9D9D9; + border-radius: 3px; + background: #FFF; + cursor: default; + box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #EBEBEB, 0 3px 6px -3px #BBB; +} + +.noUi-active { + box-shadow: inset 0 0 1px #FFF, inset 0 1px 7px #DDD, 0 3px 6px -3px #BBB; +} + +/* Handle stripes; + */ +.noUi-handle:before, +.noUi-handle:after { + content: ""; + display: block; + position: absolute; + height: 14px; + width: 1px; + background: #E8E7E6; + left: 14px; + top: 6px; +} + +.noUi-handle:after { + left: 17px; +} + +.noUi-vertical .noUi-handle:before, +.noUi-vertical .noUi-handle:after { + width: 14px; + height: 1px; + left: 6px; + top: 14px; +} + +.noUi-vertical .noUi-handle:after { + top: 17px; +} + +/* Disabled state; + */ +[disabled] .noUi-connect { + background: #B8B8B8; +} + +[disabled].noUi-target, +[disabled].noUi-handle, +[disabled] .noUi-handle { + cursor: not-allowed; +} + +/* Base; + * + */ +.noUi-pips, +.noUi-pips * { + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.noUi-pips { + position: absolute; + color: #999; +} + +/* Values; + * + */ +.noUi-value { + position: absolute; + white-space: nowrap; + text-align: center; +} + +.noUi-value-sub { + color: #ccc; + font-size: 10px; +} + +/* Markings; + * + */ +.noUi-marker { + position: absolute; + background: #CCC; +} + +.noUi-marker-sub { + background: #AAA; +} + +.noUi-marker-large { + background: #AAA; +} + +/* Horizontal layout; + * + */ +.noUi-pips-horizontal { + padding: 10px 0; + height: 80px; + top: 100%; + left: 0; + width: 100%; +} + +.noUi-value-horizontal { + -webkit-transform: translate(-50%, 50%); + transform: translate(-50%, 50%); +} + +.noUi-rtl .noUi-value-horizontal { + -webkit-transform: translate(50%, 50%); + transform: translate(50%, 50%); +} + +.noUi-marker-horizontal.noUi-marker { + margin-left: -1px; + width: 2px; + height: 5px; +} + +.noUi-marker-horizontal.noUi-marker-sub { + height: 10px; +} + +.noUi-marker-horizontal.noUi-marker-large { + height: 15px; +} + +/* Vertical layout; + * + */ +.noUi-pips-vertical { + padding: 0 10px; + height: 100%; + top: 0; + left: 100%; +} + +.noUi-value-vertical { + -webkit-transform: translate(0, -50%); + transform: translate(0, -50%); + padding-left: 25px; +} + +.noUi-rtl .noUi-value-vertical { + -webkit-transform: translate(0, 50%); + transform: translate(0, 50%); +} + +.noUi-marker-vertical.noUi-marker { + width: 5px; + height: 2px; + margin-top: -1px; +} + +.noUi-marker-vertical.noUi-marker-sub { + width: 10px; +} + +.noUi-marker-vertical.noUi-marker-large { + width: 15px; +} + +.noUi-tooltip { + display: block; + position: absolute; + border: 1px solid #D9D9D9; + border-radius: 3px; + background: #fff; + color: #000; + padding: 5px; + text-align: center; + white-space: nowrap; +} + +.noUi-horizontal .noUi-tooltip { + -webkit-transform: translate(-50%, 0); + transform: translate(-50%, 0); + left: 50%; + bottom: 120%; +} + +.noUi-vertical .noUi-tooltip { + -webkit-transform: translate(0, -50%); + transform: translate(0, -50%); + top: 50%; + right: 120%; +} + +.noUi-horizontal .noUi-origin > .noUi-tooltip { + -webkit-transform: translate(50%, 0); + transform: translate(50%, 0); + left: auto; + bottom: 10px; +} + +.noUi-vertical .noUi-origin > .noUi-tooltip { + -webkit-transform: translate(0, -18px); + transform: translate(0, -18px); + top: auto; + right: 28px; +} + +@-webkit-keyframes passing-through { + 0% { + opacity: 0; + -webkit-transform: translateY(40px); + -moz-transform: translateY(40px); + -ms-transform: translateY(40px); + -o-transform: translateY(40px); + transform: translateY(40px); + } + 30%, 70% { + opacity: 1; + -webkit-transform: translateY(0px); + -moz-transform: translateY(0px); + -ms-transform: translateY(0px); + -o-transform: translateY(0px); + transform: translateY(0px); + } + 100% { + opacity: 0; + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); + transform: translateY(-40px); + } +} +@-moz-keyframes passing-through { + 0% { + opacity: 0; + -webkit-transform: translateY(40px); + -moz-transform: translateY(40px); + -ms-transform: translateY(40px); + -o-transform: translateY(40px); + transform: translateY(40px); + } + 30%, 70% { + opacity: 1; + -webkit-transform: translateY(0px); + -moz-transform: translateY(0px); + -ms-transform: translateY(0px); + -o-transform: translateY(0px); + transform: translateY(0px); + } + 100% { + opacity: 0; + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); + transform: translateY(-40px); + } +} +@keyframes passing-through { + 0% { + opacity: 0; + -webkit-transform: translateY(40px); + -moz-transform: translateY(40px); + -ms-transform: translateY(40px); + -o-transform: translateY(40px); + transform: translateY(40px); + } + 30%, 70% { + opacity: 1; + -webkit-transform: translateY(0px); + -moz-transform: translateY(0px); + -ms-transform: translateY(0px); + -o-transform: translateY(0px); + transform: translateY(0px); + } + 100% { + opacity: 0; + -webkit-transform: translateY(-40px); + -moz-transform: translateY(-40px); + -ms-transform: translateY(-40px); + -o-transform: translateY(-40px); + transform: translateY(-40px); + } +} +@-webkit-keyframes slide-in { + 0% { + opacity: 0; + -webkit-transform: translateY(40px); + -moz-transform: translateY(40px); + -ms-transform: translateY(40px); + -o-transform: translateY(40px); + transform: translateY(40px); + } + 30% { + opacity: 1; + -webkit-transform: translateY(0px); + -moz-transform: translateY(0px); + -ms-transform: translateY(0px); + -o-transform: translateY(0px); + transform: translateY(0px); + } +} +@-moz-keyframes slide-in { + 0% { + opacity: 0; + -webkit-transform: translateY(40px); + -moz-transform: translateY(40px); + -ms-transform: translateY(40px); + -o-transform: translateY(40px); + transform: translateY(40px); + } + 30% { + opacity: 1; + -webkit-transform: translateY(0px); + -moz-transform: translateY(0px); + -ms-transform: translateY(0px); + -o-transform: translateY(0px); + transform: translateY(0px); + } +} +@keyframes slide-in { + 0% { + opacity: 0; + -webkit-transform: translateY(40px); + -moz-transform: translateY(40px); + -ms-transform: translateY(40px); + -o-transform: translateY(40px); + transform: translateY(40px); + } + 30% { + opacity: 1; + -webkit-transform: translateY(0px); + -moz-transform: translateY(0px); + -ms-transform: translateY(0px); + -o-transform: translateY(0px); + transform: translateY(0px); + } +} +@-webkit-keyframes pulse { + 0% { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } + 10% { + -webkit-transform: scale(1.1); + -moz-transform: scale(1.1); + -ms-transform: scale(1.1); + -o-transform: scale(1.1); + transform: scale(1.1); + } + 20% { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } +} +@-moz-keyframes pulse { + 0% { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } + 10% { + -webkit-transform: scale(1.1); + -moz-transform: scale(1.1); + -ms-transform: scale(1.1); + -o-transform: scale(1.1); + transform: scale(1.1); + } + 20% { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } +} +@keyframes pulse { + 0% { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } + 10% { + -webkit-transform: scale(1.1); + -moz-transform: scale(1.1); + -ms-transform: scale(1.1); + -o-transform: scale(1.1); + transform: scale(1.1); + } + 20% { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + } +} +.dropzone, .dropzone * { + box-sizing: border-box; +} + +.dropzone { + min-height: 150px; + border: 2px solid rgba(0, 0, 0, 0.3); + background: white; + padding: 20px 20px; +} + +.dropzone.dz-clickable { + cursor: pointer; +} + +.dropzone.dz-clickable * { + cursor: default; +} + +.dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * { + cursor: pointer; +} + +.dropzone.dz-started .dz-message { + display: none; +} + +.dropzone.dz-drag-hover { + border-style: solid; +} + +.dropzone.dz-drag-hover .dz-message { + opacity: 0.5; +} + +.dropzone .dz-message { + text-align: center; + margin: 2em 0; +} + +.dropzone .dz-message .dz-button { + background: none; + color: inherit; + border: none; + padding: 0; + font: inherit; + cursor: pointer; + outline: inherit; +} + +.dropzone .dz-preview { + position: relative; + display: inline-block; + vertical-align: top; + margin: 16px; + min-height: 100px; +} + +.dropzone .dz-preview:hover { + z-index: 1000; +} + +.dropzone .dz-preview:hover .dz-details { + opacity: 1; +} + +.dropzone .dz-preview.dz-file-preview .dz-image { + border-radius: 20px; + background: #999; + background: linear-gradient(to bottom, #eee, #ddd); +} + +.dropzone .dz-preview.dz-file-preview .dz-details { + opacity: 1; +} + +.dropzone .dz-preview.dz-image-preview { + background: white; +} + +.dropzone .dz-preview.dz-image-preview .dz-details { + -webkit-transition: opacity 0.2s linear; + -moz-transition: opacity 0.2s linear; + -ms-transition: opacity 0.2s linear; + -o-transition: opacity 0.2s linear; + transition: opacity 0.2s linear; +} + +.dropzone .dz-preview .dz-remove { + font-size: 14px; + text-align: center; + display: block; + cursor: pointer; + border: none; +} + +.dropzone .dz-preview .dz-remove:hover { + text-decoration: underline; +} + +.dropzone .dz-preview:hover .dz-details { + opacity: 1; +} + +.dropzone .dz-preview .dz-details { + z-index: 20; + position: absolute; + top: 0; + left: 0; + opacity: 0; + font-size: 13px; + min-width: 100%; + max-width: 100%; + padding: 2em 1em; + text-align: center; + color: rgba(0, 0, 0, 0.9); + line-height: 150%; +} + +.dropzone .dz-preview .dz-details .dz-size { + margin-bottom: 1em; + font-size: 16px; +} + +.dropzone .dz-preview .dz-details .dz-filename { + white-space: nowrap; +} + +.dropzone .dz-preview .dz-details .dz-filename:hover span { + border: 1px solid rgba(200, 200, 200, 0.8); + background-color: rgba(255, 255, 255, 0.8); +} + +.dropzone .dz-preview .dz-details .dz-filename:not(:hover) { + overflow: hidden; + text-overflow: ellipsis; +} + +.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span { + border: 1px solid transparent; +} + +.dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span { + background-color: rgba(255, 255, 255, 0.4); + padding: 0 0.4em; + border-radius: 3px; +} + +.dropzone .dz-preview:hover .dz-image img { + -webkit-transform: scale(1.05, 1.05); + -moz-transform: scale(1.05, 1.05); + -ms-transform: scale(1.05, 1.05); + -o-transform: scale(1.05, 1.05); + transform: scale(1.05, 1.05); + -webkit-filter: blur(8px); + filter: blur(8px); +} + +.dropzone .dz-preview .dz-image { + border-radius: 20px; + overflow: hidden; + width: 120px; + height: 120px; + position: relative; + display: block; + z-index: 10; +} + +.dropzone .dz-preview .dz-image img { + display: block; +} + +.dropzone .dz-preview.dz-success .dz-success-mark { + -webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); + -moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); + -ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); + -o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); + animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); +} + +.dropzone .dz-preview.dz-error .dz-error-mark { + opacity: 1; + -webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); + -moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); + -ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); + -o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); + animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); +} + +.dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark { + pointer-events: none; + opacity: 0; + z-index: 500; + position: absolute; + display: block; + top: 50%; + left: 50%; + margin-left: -27px; + margin-top: -27px; +} + +.dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg { + display: block; + width: 54px; + height: 54px; +} + +.dropzone .dz-preview.dz-processing .dz-progress { + opacity: 1; + -webkit-transition: all 0.2s linear; + -moz-transition: all 0.2s linear; + -ms-transition: all 0.2s linear; + -o-transition: all 0.2s linear; + transition: all 0.2s linear; +} + +.dropzone .dz-preview.dz-complete .dz-progress { + opacity: 0; + -webkit-transition: opacity 0.4s ease-in; + -moz-transition: opacity 0.4s ease-in; + -ms-transition: opacity 0.4s ease-in; + -o-transition: opacity 0.4s ease-in; + transition: opacity 0.4s ease-in; +} + +.dropzone .dz-preview:not(.dz-processing) .dz-progress { + -webkit-animation: pulse 6s ease infinite; + -moz-animation: pulse 6s ease infinite; + -ms-animation: pulse 6s ease infinite; + -o-animation: pulse 6s ease infinite; + animation: pulse 6s ease infinite; +} + +.dropzone .dz-preview .dz-progress { + opacity: 1; + z-index: 1000; + pointer-events: none; + position: absolute; + height: 16px; + left: 50%; + top: 50%; + margin-top: -8px; + width: 80px; + margin-left: -40px; + background: rgba(255, 255, 255, 0.9); + -webkit-transform: scale(1); + border-radius: 8px; + overflow: hidden; +} + +.dropzone .dz-preview .dz-progress .dz-upload { + background: #333; + background: linear-gradient(to bottom, #666, #444); + position: absolute; + top: 0; + left: 0; + bottom: 0; + width: 0; + -webkit-transition: width 300ms ease-in-out; + -moz-transition: width 300ms ease-in-out; + -ms-transition: width 300ms ease-in-out; + -o-transition: width 300ms ease-in-out; + transition: width 300ms ease-in-out; +} + +.dropzone .dz-preview.dz-error .dz-error-message { + display: block; +} + +.dropzone .dz-preview.dz-error:hover .dz-error-message { + opacity: 1; + pointer-events: auto; +} + +.dropzone .dz-preview .dz-error-message { + pointer-events: none; + z-index: 1000; + position: absolute; + display: block; + display: none; + opacity: 0; + -webkit-transition: opacity 0.3s ease; + -moz-transition: opacity 0.3s ease; + -ms-transition: opacity 0.3s ease; + -o-transition: opacity 0.3s ease; + transition: opacity 0.3s ease; + border-radius: 8px; + font-size: 13px; + top: 130px; + left: -10px; + width: 140px; + background: #be2626; + background: linear-gradient(to bottom, #be2626, #a92222); + padding: 0.5em 1.2em; + color: white; +} + +.dropzone .dz-preview .dz-error-message:after { + content: ""; + position: absolute; + top: -6px; + left: 64px; + width: 0; + height: 0; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #be2626; +} + +/*! + * Quill Editor v1.3.7 + * https://quilljs.com/ + * Copyright (c) 2014, Jason Chen + * Copyright (c) 2013, salesforce.com + */ +.ql-container { + box-sizing: border-box; + font-family: Helvetica, Arial, sans-serif; + font-size: 13px; + height: 100%; + margin: 0px; + position: relative; +} + +.ql-container.ql-disabled .ql-tooltip { + visibility: hidden; +} + +.ql-container.ql-disabled .ql-editor ul[data-checked] > li::before { + pointer-events: none; +} + +.ql-clipboard { + left: -100000px; + height: 1px; + overflow-y: hidden; + position: absolute; + top: 50%; +} + +.ql-clipboard p { + margin: 0; + padding: 0; +} + +.ql-editor { + box-sizing: border-box; + line-height: 1.42; + height: 100%; + outline: none; + overflow-y: auto; + padding: 12px 15px; + tab-size: 4; + -moz-tab-size: 4; + text-align: left; + white-space: pre-wrap; + word-wrap: break-word; +} + +.ql-editor > * { + cursor: text; +} + +.ql-editor p, +.ql-editor ol, +.ql-editor ul, +.ql-editor pre, +.ql-editor blockquote, +.ql-editor h1, +.ql-editor h2, +.ql-editor h3, +.ql-editor h4, +.ql-editor h5, +.ql-editor h6 { + margin: 0; + padding: 0; + counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; +} + +.ql-editor ol, +.ql-editor ul { + padding-left: 1.5em; +} + +.ql-editor ol > li, +.ql-editor ul > li { + list-style-type: none; +} + +.ql-editor ul > li::before { + content: "•"; +} + +.ql-editor ul[data-checked=true], +.ql-editor ul[data-checked=false] { + pointer-events: none; +} + +.ql-editor ul[data-checked=true] > li *, +.ql-editor ul[data-checked=false] > li * { + pointer-events: all; +} + +.ql-editor ul[data-checked=true] > li::before, +.ql-editor ul[data-checked=false] > li::before { + color: #777; + cursor: pointer; + pointer-events: all; +} + +.ql-editor ul[data-checked=true] > li::before { + content: "☑"; +} + +.ql-editor ul[data-checked=false] > li::before { + content: "☐"; +} + +.ql-editor li::before { + display: inline-block; + white-space: nowrap; + width: 1.2em; +} + +.ql-editor li:not(.ql-direction-rtl)::before { + margin-left: -1.5em; + margin-right: 0.3em; + text-align: right; +} + +.ql-editor li.ql-direction-rtl::before { + margin-left: 0.3em; + margin-right: -1.5em; +} + +.ql-editor ol li:not(.ql-direction-rtl), +.ql-editor ul li:not(.ql-direction-rtl) { + padding-left: 1.5em; +} + +.ql-editor ol li.ql-direction-rtl, +.ql-editor ul li.ql-direction-rtl { + padding-right: 1.5em; +} + +.ql-editor ol li { + counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; + counter-increment: list-0; +} + +.ql-editor ol li:before { + content: counter(list-0, decimal) ". "; +} + +.ql-editor ol li.ql-indent-1 { + counter-increment: list-1; +} + +.ql-editor ol li.ql-indent-1:before { + content: counter(list-1, lower-alpha) ". "; +} + +.ql-editor ol li.ql-indent-1 { + counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9; +} + +.ql-editor ol li.ql-indent-2 { + counter-increment: list-2; +} + +.ql-editor ol li.ql-indent-2:before { + content: counter(list-2, lower-roman) ". "; +} + +.ql-editor ol li.ql-indent-2 { + counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9; +} + +.ql-editor ol li.ql-indent-3 { + counter-increment: list-3; +} + +.ql-editor ol li.ql-indent-3:before { + content: counter(list-3, decimal) ". "; +} + +.ql-editor ol li.ql-indent-3 { + counter-reset: list-4 list-5 list-6 list-7 list-8 list-9; +} + +.ql-editor ol li.ql-indent-4 { + counter-increment: list-4; +} + +.ql-editor ol li.ql-indent-4:before { + content: counter(list-4, lower-alpha) ". "; +} + +.ql-editor ol li.ql-indent-4 { + counter-reset: list-5 list-6 list-7 list-8 list-9; +} + +.ql-editor ol li.ql-indent-5 { + counter-increment: list-5; +} + +.ql-editor ol li.ql-indent-5:before { + content: counter(list-5, lower-roman) ". "; +} + +.ql-editor ol li.ql-indent-5 { + counter-reset: list-6 list-7 list-8 list-9; +} + +.ql-editor ol li.ql-indent-6 { + counter-increment: list-6; +} + +.ql-editor ol li.ql-indent-6:before { + content: counter(list-6, decimal) ". "; +} + +.ql-editor ol li.ql-indent-6 { + counter-reset: list-7 list-8 list-9; +} + +.ql-editor ol li.ql-indent-7 { + counter-increment: list-7; +} + +.ql-editor ol li.ql-indent-7:before { + content: counter(list-7, lower-alpha) ". "; +} + +.ql-editor ol li.ql-indent-7 { + counter-reset: list-8 list-9; +} + +.ql-editor ol li.ql-indent-8 { + counter-increment: list-8; +} + +.ql-editor ol li.ql-indent-8:before { + content: counter(list-8, lower-roman) ". "; +} + +.ql-editor ol li.ql-indent-8 { + counter-reset: list-9; +} + +.ql-editor ol li.ql-indent-9 { + counter-increment: list-9; +} + +.ql-editor ol li.ql-indent-9:before { + content: counter(list-9, decimal) ". "; +} + +.ql-editor .ql-indent-1:not(.ql-direction-rtl) { + padding-left: 3em; +} + +.ql-editor li.ql-indent-1:not(.ql-direction-rtl) { + padding-left: 4.5em; +} + +.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right { + padding-right: 3em; +} + +.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right { + padding-right: 4.5em; +} + +.ql-editor .ql-indent-2:not(.ql-direction-rtl) { + padding-left: 6em; +} + +.ql-editor li.ql-indent-2:not(.ql-direction-rtl) { + padding-left: 7.5em; +} + +.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right { + padding-right: 6em; +} + +.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right { + padding-right: 7.5em; +} + +.ql-editor .ql-indent-3:not(.ql-direction-rtl) { + padding-left: 9em; +} + +.ql-editor li.ql-indent-3:not(.ql-direction-rtl) { + padding-left: 10.5em; +} + +.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right { + padding-right: 9em; +} + +.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right { + padding-right: 10.5em; +} + +.ql-editor .ql-indent-4:not(.ql-direction-rtl) { + padding-left: 12em; +} + +.ql-editor li.ql-indent-4:not(.ql-direction-rtl) { + padding-left: 13.5em; +} + +.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right { + padding-right: 12em; +} + +.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right { + padding-right: 13.5em; +} + +.ql-editor .ql-indent-5:not(.ql-direction-rtl) { + padding-left: 15em; +} + +.ql-editor li.ql-indent-5:not(.ql-direction-rtl) { + padding-left: 16.5em; +} + +.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right { + padding-right: 15em; +} + +.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right { + padding-right: 16.5em; +} + +.ql-editor .ql-indent-6:not(.ql-direction-rtl) { + padding-left: 18em; +} + +.ql-editor li.ql-indent-6:not(.ql-direction-rtl) { + padding-left: 19.5em; +} + +.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right { + padding-right: 18em; +} + +.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right { + padding-right: 19.5em; +} + +.ql-editor .ql-indent-7:not(.ql-direction-rtl) { + padding-left: 21em; +} + +.ql-editor li.ql-indent-7:not(.ql-direction-rtl) { + padding-left: 22.5em; +} + +.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right { + padding-right: 21em; +} + +.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right { + padding-right: 22.5em; +} + +.ql-editor .ql-indent-8:not(.ql-direction-rtl) { + padding-left: 24em; +} + +.ql-editor li.ql-indent-8:not(.ql-direction-rtl) { + padding-left: 25.5em; +} + +.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right { + padding-right: 24em; +} + +.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right { + padding-right: 25.5em; +} + +.ql-editor .ql-indent-9:not(.ql-direction-rtl) { + padding-left: 27em; +} + +.ql-editor li.ql-indent-9:not(.ql-direction-rtl) { + padding-left: 28.5em; +} + +.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right { + padding-right: 27em; +} + +.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right { + padding-right: 28.5em; +} + +.ql-editor .ql-video { + display: block; + max-width: 100%; +} + +.ql-editor .ql-video.ql-align-center { + margin: 0 auto; +} + +.ql-editor .ql-video.ql-align-right { + margin: 0 0 0 auto; +} + +.ql-editor .ql-bg-black { + background-color: #000; +} + +.ql-editor .ql-bg-red { + background-color: #e60000; +} + +.ql-editor .ql-bg-orange { + background-color: #f90; +} + +.ql-editor .ql-bg-yellow { + background-color: #ff0; +} + +.ql-editor .ql-bg-green { + background-color: #008a00; +} + +.ql-editor .ql-bg-blue { + background-color: #06c; +} + +.ql-editor .ql-bg-purple { + background-color: #93f; +} + +.ql-editor .ql-color-white { + color: #fff; +} + +.ql-editor .ql-color-red { + color: #e60000; +} + +.ql-editor .ql-color-orange { + color: #f90; +} + +.ql-editor .ql-color-yellow { + color: #ff0; +} + +.ql-editor .ql-color-green { + color: #008a00; +} + +.ql-editor .ql-color-blue { + color: #06c; +} + +.ql-editor .ql-color-purple { + color: #93f; +} + +.ql-editor .ql-font-serif { + font-family: Georgia, Times New Roman, serif; +} + +.ql-editor .ql-font-monospace { + font-family: Monaco, Courier New, monospace; +} + +.ql-editor .ql-size-small { + font-size: 0.75em; +} + +.ql-editor .ql-size-large { + font-size: 1.5em; +} + +.ql-editor .ql-size-huge { + font-size: 2.5em; +} + +.ql-editor .ql-direction-rtl { + direction: rtl; + text-align: inherit; +} + +.ql-editor .ql-align-center { + text-align: center; +} + +.ql-editor .ql-align-justify { + text-align: justify; +} + +.ql-editor .ql-align-right { + text-align: right; +} + +.ql-editor.ql-blank::before { + color: rgba(0, 0, 0, 0.6); + content: attr(data-placeholder); + font-style: italic; + left: 15px; + pointer-events: none; + position: absolute; + right: 15px; +} + +.ql-snow.ql-toolbar:after, +.ql-snow .ql-toolbar:after { + clear: both; + content: ""; + display: table; +} + +.ql-snow.ql-toolbar button, +.ql-snow .ql-toolbar button { + background: none; + border: none; + cursor: pointer; + display: inline-block; + float: left; + height: 24px; + padding: 3px 5px; + width: 28px; +} + +.ql-snow.ql-toolbar button svg, +.ql-snow .ql-toolbar button svg { + float: left; + height: 100%; +} + +.ql-snow.ql-toolbar button:active:hover, +.ql-snow .ql-toolbar button:active:hover { + outline: none; +} + +.ql-snow.ql-toolbar input.ql-image[type=file], +.ql-snow .ql-toolbar input.ql-image[type=file] { + display: none; +} + +.ql-snow.ql-toolbar button:hover, +.ql-snow .ql-toolbar button:hover, +.ql-snow.ql-toolbar button:focus, +.ql-snow .ql-toolbar button:focus, +.ql-snow.ql-toolbar button.ql-active, +.ql-snow .ql-toolbar button.ql-active, +.ql-snow.ql-toolbar .ql-picker-label:hover, +.ql-snow .ql-toolbar .ql-picker-label:hover, +.ql-snow.ql-toolbar .ql-picker-label.ql-active, +.ql-snow .ql-toolbar .ql-picker-label.ql-active, +.ql-snow.ql-toolbar .ql-picker-item:hover, +.ql-snow .ql-toolbar .ql-picker-item:hover, +.ql-snow.ql-toolbar .ql-picker-item.ql-selected, +.ql-snow .ql-toolbar .ql-picker-item.ql-selected { + color: #06c; +} + +.ql-snow.ql-toolbar button:hover .ql-fill, +.ql-snow .ql-toolbar button:hover .ql-fill, +.ql-snow.ql-toolbar button:focus .ql-fill, +.ql-snow .ql-toolbar button:focus .ql-fill, +.ql-snow.ql-toolbar button.ql-active .ql-fill, +.ql-snow .ql-toolbar button.ql-active .ql-fill, +.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill, +.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill, +.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill, +.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill, +.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill, +.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill, +.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill, +.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill, +.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill, +.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill, +.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill, +.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill, +.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill, +.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill, +.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, +.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, +.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, +.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, +.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, +.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, +.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill, +.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill { + fill: #06c; +} + +.ql-snow.ql-toolbar button:hover .ql-stroke, +.ql-snow .ql-toolbar button:hover .ql-stroke, +.ql-snow.ql-toolbar button:focus .ql-stroke, +.ql-snow .ql-toolbar button:focus .ql-stroke, +.ql-snow.ql-toolbar button.ql-active .ql-stroke, +.ql-snow .ql-toolbar button.ql-active .ql-stroke, +.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke, +.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke, +.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke, +.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke, +.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke, +.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke, +.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke, +.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke, +.ql-snow.ql-toolbar button:hover .ql-stroke-miter, +.ql-snow .ql-toolbar button:hover .ql-stroke-miter, +.ql-snow.ql-toolbar button:focus .ql-stroke-miter, +.ql-snow .ql-toolbar button:focus .ql-stroke-miter, +.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter, +.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter, +.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter, +.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter, +.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, +.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, +.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter, +.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter, +.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter, +.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter { + stroke: #06c; +} + +@media (pointer: coarse) { + .ql-snow.ql-toolbar button:hover:not(.ql-active), +.ql-snow .ql-toolbar button:hover:not(.ql-active) { + color: #444; + } + .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill, +.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill, +.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill, +.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill { + fill: #444; + } + .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke, +.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke, +.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter, +.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter { + stroke: #444; + } +} +.ql-snow { + box-sizing: border-box; +} + +.ql-snow * { + box-sizing: border-box; +} + +.ql-snow .ql-hidden { + display: none; +} + +.ql-snow .ql-out-bottom, +.ql-snow .ql-out-top { + visibility: hidden; +} + +.ql-snow .ql-tooltip { + position: absolute; + transform: translateY(10px); +} + +.ql-snow .ql-tooltip a { + cursor: pointer; + text-decoration: none; +} + +.ql-snow .ql-tooltip.ql-flip { + transform: translateY(-10px); +} + +.ql-snow .ql-formats { + display: inline-block; + vertical-align: middle; +} + +.ql-snow .ql-formats:after { + clear: both; + content: ""; + display: table; +} + +.ql-snow .ql-stroke { + fill: none; + stroke: #444; + stroke-linecap: round; + stroke-linejoin: round; + stroke-width: 2; +} + +.ql-snow .ql-stroke-miter { + fill: none; + stroke: #444; + stroke-miterlimit: 10; + stroke-width: 2; +} + +.ql-snow .ql-fill, +.ql-snow .ql-stroke.ql-fill { + fill: #444; +} + +.ql-snow .ql-empty { + fill: none; +} + +.ql-snow .ql-even { + fill-rule: evenodd; +} + +.ql-snow .ql-thin, +.ql-snow .ql-stroke.ql-thin { + stroke-width: 1; +} + +.ql-snow .ql-transparent { + opacity: 0.4; +} + +.ql-snow .ql-direction svg:last-child { + display: none; +} + +.ql-snow .ql-direction.ql-active svg:last-child { + display: inline; +} + +.ql-snow .ql-direction.ql-active svg:first-child { + display: none; +} + +.ql-snow .ql-editor h1 { + font-size: 2em; +} + +.ql-snow .ql-editor h2 { + font-size: 1.5em; +} + +.ql-snow .ql-editor h3 { + font-size: 1.17em; +} + +.ql-snow .ql-editor h4 { + font-size: 1em; +} + +.ql-snow .ql-editor h5 { + font-size: 0.83em; +} + +.ql-snow .ql-editor h6 { + font-size: 0.67em; +} + +.ql-snow .ql-editor a { + text-decoration: underline; +} + +.ql-snow .ql-editor blockquote { + border-left: 4px solid #ccc; + margin-bottom: 5px; + margin-top: 5px; + padding-left: 16px; +} + +.ql-snow .ql-editor code, +.ql-snow .ql-editor pre { + background-color: #f0f0f0; + border-radius: 3px; +} + +.ql-snow .ql-editor pre { + white-space: pre-wrap; + margin-bottom: 5px; + margin-top: 5px; + padding: 5px 10px; +} + +.ql-snow .ql-editor code { + font-size: 85%; + padding: 2px 4px; +} + +.ql-snow .ql-editor pre.ql-syntax { + background-color: #23241f; + color: #f8f8f2; + overflow: visible; +} + +.ql-snow .ql-editor img { + max-width: 100%; +} + +.ql-snow .ql-picker { + color: #444; + display: inline-block; + float: left; + font-size: 14px; + font-weight: 500; + height: 24px; + position: relative; + vertical-align: middle; +} + +.ql-snow .ql-picker-label { + cursor: pointer; + display: inline-block; + height: 100%; + padding-left: 8px; + padding-right: 2px; + position: relative; + width: 100%; +} + +.ql-snow .ql-picker-label::before { + display: inline-block; + line-height: 22px; +} + +.ql-snow .ql-picker-options { + background-color: #fff; + display: none; + min-width: 100%; + padding: 4px 8px; + position: absolute; + white-space: nowrap; +} + +.ql-snow .ql-picker-options .ql-picker-item { + cursor: pointer; + display: block; + padding-bottom: 5px; + padding-top: 5px; +} + +.ql-snow .ql-picker.ql-expanded .ql-picker-label { + color: #ccc; + z-index: 2; +} + +.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill { + fill: #ccc; +} + +.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke { + stroke: #ccc; +} + +.ql-snow .ql-picker.ql-expanded .ql-picker-options { + display: block; + margin-top: -1px; + top: 100%; + z-index: 1; +} + +.ql-snow .ql-color-picker, +.ql-snow .ql-icon-picker { + width: 28px; +} + +.ql-snow .ql-color-picker .ql-picker-label, +.ql-snow .ql-icon-picker .ql-picker-label { + padding: 2px 4px; +} + +.ql-snow .ql-color-picker .ql-picker-label svg, +.ql-snow .ql-icon-picker .ql-picker-label svg { + right: 4px; +} + +.ql-snow .ql-icon-picker .ql-picker-options { + padding: 4px 0px; +} + +.ql-snow .ql-icon-picker .ql-picker-item { + height: 24px; + width: 24px; + padding: 2px 4px; +} + +.ql-snow .ql-color-picker .ql-picker-options { + padding: 3px 5px; + width: 152px; +} + +.ql-snow .ql-color-picker .ql-picker-item { + border: 1px solid transparent; + float: left; + height: 16px; + margin: 2px; + padding: 0px; + width: 16px; +} + +.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg { + position: absolute; + margin-top: -9px; + right: 0; + top: 50%; + width: 18px; +} + +.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""])::before, +.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""])::before, +.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""])::before, +.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""])::before, +.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""])::before, +.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""])::before { + content: attr(data-label); +} + +.ql-snow .ql-picker.ql-header { + width: 98px; +} + +.ql-snow .ql-picker.ql-header .ql-picker-label::before, +.ql-snow .ql-picker.ql-header .ql-picker-item::before { + content: "Normal"; +} + +.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before, +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before { + content: "Heading 1"; +} + +.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before, +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before { + content: "Heading 2"; +} + +.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before, +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before { + content: "Heading 3"; +} + +.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before, +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before { + content: "Heading 4"; +} + +.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before, +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before { + content: "Heading 5"; +} + +.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before, +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before { + content: "Heading 6"; +} + +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before { + font-size: 2em; +} + +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before { + font-size: 1.5em; +} + +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before { + font-size: 1.17em; +} + +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before { + font-size: 1em; +} + +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before { + font-size: 0.83em; +} + +.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before { + font-size: 0.67em; +} + +.ql-snow .ql-picker.ql-font { + width: 108px; +} + +.ql-snow .ql-picker.ql-font .ql-picker-label::before, +.ql-snow .ql-picker.ql-font .ql-picker-item::before { + content: "Sans Serif"; +} + +.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]::before, +.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before { + content: "Serif"; +} + +.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before, +.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before { + content: "Monospace"; +} + +.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before { + font-family: Georgia, Times New Roman, serif; +} + +.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before { + font-family: Monaco, Courier New, monospace; +} + +.ql-snow .ql-picker.ql-size { + width: 98px; +} + +.ql-snow .ql-picker.ql-size .ql-picker-label::before, +.ql-snow .ql-picker.ql-size .ql-picker-item::before { + content: "Normal"; +} + +.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]::before, +.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before { + content: "Small"; +} + +.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]::before, +.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before { + content: "Large"; +} + +.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]::before, +.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before { + content: "Huge"; +} + +.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before { + font-size: 10px; +} + +.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before { + font-size: 18px; +} + +.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before { + font-size: 32px; +} + +.ql-snow .ql-color-picker.ql-background .ql-picker-item { + background-color: #fff; +} + +.ql-snow .ql-color-picker.ql-color .ql-picker-item { + background-color: #000; +} + +.ql-toolbar.ql-snow { + border: 1px solid #ccc; + box-sizing: border-box; + font-family: "Helvetica Neue", "Helvetica", "Arial", sans-serif; + padding: 8px; +} + +.ql-toolbar.ql-snow .ql-formats { + margin-right: 15px; +} + +.ql-toolbar.ql-snow .ql-picker-label { + border: 1px solid transparent; +} + +.ql-toolbar.ql-snow .ql-picker-options { + border: 1px solid transparent; + box-shadow: rgba(0, 0, 0, 0.2) 0 2px 8px; +} + +.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label { + border-color: #ccc; +} + +.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options { + border-color: #ccc; +} + +.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected, +.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover { + border-color: #000; +} + +.ql-toolbar.ql-snow + .ql-container.ql-snow { + border-top: 0px; +} + +.ql-snow .ql-tooltip { + background-color: #fff; + border: 1px solid #ccc; + box-shadow: 0px 0px 5px #ddd; + color: #444; + padding: 5px 12px; + white-space: nowrap; +} + +.ql-snow .ql-tooltip::before { + content: "Visit URL:"; + line-height: 26px; + margin-right: 8px; +} + +.ql-snow .ql-tooltip input[type=text] { + display: none; + border: 1px solid #ccc; + font-size: 13px; + height: 26px; + margin: 0px; + padding: 3px 5px; + width: 170px; +} + +.ql-snow .ql-tooltip a.ql-preview { + display: inline-block; + max-width: 200px; + overflow-x: hidden; + text-overflow: ellipsis; + vertical-align: top; +} + +.ql-snow .ql-tooltip a.ql-action::after { + border-right: 1px solid #ccc; + content: "Edit"; + margin-left: 16px; + padding-right: 8px; +} + +.ql-snow .ql-tooltip a.ql-remove::before { + content: "Remove"; + margin-left: 8px; +} + +.ql-snow .ql-tooltip a { + line-height: 26px; +} + +.ql-snow .ql-tooltip.ql-editing a.ql-preview, +.ql-snow .ql-tooltip.ql-editing a.ql-remove { + display: none; +} + +.ql-snow .ql-tooltip.ql-editing input[type=text] { + display: inline-block; +} + +.ql-snow .ql-tooltip.ql-editing a.ql-action::after { + border-right: 0px; + content: "Save"; + padding-right: 0px; +} + +.ql-snow .ql-tooltip[data-mode=link]::before { + content: "Enter link:"; +} + +.ql-snow .ql-tooltip[data-mode=formula]::before { + content: "Enter formula:"; +} + +.ql-snow .ql-tooltip[data-mode=video]::before { + content: "Enter video:"; +} + +.ql-snow a { + color: #06c; +} + +.ql-container.ql-snow { + border: 1px solid #ccc; +} + +:root { + --tagify-dd-color-primary:rgb(53,149,246); + --tagify-dd-bg-color:white; + --tagify-dd-item-pad:.3em .5em; +} + +.tagify { + --tags-disabled-bg:#F1F1F1; + --tags-border-color:#DDD; + --tags-hover-border-color:#CCC; + --tags-focus-border-color:#3595f6; + --tag-border-radius:3px; + --tag-bg:#E5E5E5; + --tag-hover:#D3E2E2; + --tag-text-color:black; + --tag-text-color--edit:black; + --tag-pad:0.3em 0.5em; + --tag-inset-shadow-size:1.1em; + --tag-invalid-color:#D39494; + --tag-invalid-bg:rgba(211, 148, 148, 0.5); + --tag-remove-bg:rgba(211, 148, 148, 0.3); + --tag-remove-btn-color:black; + --tag-remove-btn-bg:none; + --tag-remove-btn-bg--hover:#c77777; + --input-color:inherit; + --tag--min-width:1ch; + --tag--max-width:auto; + --tag-hide-transition:0.3s; + --placeholder-color:rgba(0, 0, 0, 0.4); + --placeholder-color-focus:rgba(0, 0, 0, 0.25); + --loader-size:.8em; + --readonly-striped:1; + display: inline-flex; + align-items: flex-start; + flex-wrap: wrap; + border: 1px solid var(--tags-border-color); + padding: 0; + line-height: 0; + cursor: text; + outline: 0; + position: relative; + box-sizing: border-box; + transition: 0.1s; +} + +@keyframes tags--bump { + 30% { + transform: scale(1.2); + } +} +@keyframes rotateLoader { + to { + transform: rotate(1turn); + } +} +.tagify:hover:not(.tagify--focus):not(.tagify--invalid) { + --tags-border-color:var(--tags-hover-border-color); +} + +.tagify[disabled] { + background: var(--tags-disabled-bg); + filter: saturate(0); + opacity: 0.5; + pointer-events: none; +} + +.tagify[disabled].tagify--select, .tagify[readonly].tagify--select { + pointer-events: none; +} + +.tagify[disabled]:not(.tagify--mix):not(.tagify--select), .tagify[readonly]:not(.tagify--mix):not(.tagify--select) { + cursor: default; +} + +.tagify[disabled]:not(.tagify--mix):not(.tagify--select) > .tagify__input, .tagify[readonly]:not(.tagify--mix):not(.tagify--select) > .tagify__input { + visibility: hidden; + width: 0; + margin: 5px 0; +} + +.tagify[disabled]:not(.tagify--mix):not(.tagify--select) .tagify__tag > div, .tagify[readonly]:not(.tagify--mix):not(.tagify--select) .tagify__tag > div { + padding: var(--tag-pad); +} + +.tagify[disabled]:not(.tagify--mix):not(.tagify--select) .tagify__tag > div::before, .tagify[readonly]:not(.tagify--mix):not(.tagify--select) .tagify__tag > div::before { + animation: readonlyStyles 1s calc(-1s * (var(--readonly-striped) - 1)) paused; +} + +@keyframes readonlyStyles { + 0% { + background: linear-gradient(45deg, var(--tag-bg) 25%, transparent 25%, transparent 50%, var(--tag-bg) 50%, var(--tag-bg) 75%, transparent 75%, transparent) 0/5px 5px; + box-shadow: none; + filter: brightness(0.95); + } +} +.tagify[disabled] .tagify__tag__removeBtn, .tagify[readonly] .tagify__tag__removeBtn { + display: none; +} + +.tagify--loading .tagify__input > br:last-child { + display: none; +} + +.tagify--loading .tagify__input::before { + content: none; +} + +.tagify--loading .tagify__input::after { + content: ""; + vertical-align: middle; + opacity: 1; + width: 0.7em; + height: 0.7em; + width: var(--loader-size); + height: var(--loader-size); + min-width: 0; + border: 3px solid; + border-color: #eee #bbb #888 transparent; + border-radius: 50%; + animation: rotateLoader 0.4s infinite linear; + content: "" !important; + margin: -2px 0 -2px 0.5em; +} + +.tagify--loading .tagify__input:empty::after { + margin-left: 0; +} + +.tagify + input, .tagify + textarea { + position: absolute !important; + left: -9999em !important; + transform: scale(0) !important; +} + +.tagify__tag { + display: inline-flex; + align-items: center; + margin: 5px 0 5px 5px; + position: relative; + z-index: 1; + outline: 0; + line-height: normal; + cursor: default; + transition: 0.13s ease-out; +} + +.tagify__tag > div { + vertical-align: top; + box-sizing: border-box; + max-width: 100%; + padding: var(--tag-pad); + color: var(--tag-text-color); + line-height: inherit; + border-radius: var(--tag-border-radius); + white-space: nowrap; + transition: 0.13s ease-out; +} + +.tagify__tag > div > * { + white-space: pre-wrap; + overflow: hidden; + text-overflow: ellipsis; + display: inline-block; + vertical-align: top; + min-width: var(--tag--min-width); + max-width: var(--tag--max-width); + transition: 0.8s ease, 0.1s color; +} + +.tagify__tag > div > [contenteditable] { + outline: 0; + -webkit-user-select: text; + user-select: text; + cursor: text; + margin: -2px; + padding: 2px; + max-width: 350px; +} + +.tagify__tag > div::before { + content: ""; + position: absolute; + border-radius: inherit; + inset: var(--tag-bg-inset, 0); + z-index: -1; + pointer-events: none; + transition: 120ms ease; + animation: tags--bump 0.3s ease-out 1; + box-shadow: 0 0 0 var(--tag-inset-shadow-size) var(--tag-bg) inset; +} + +.tagify__tag:focus div::before, .tagify__tag:hover:not([readonly]) div::before { + --tag-bg-inset:-2.5px; + --tag-bg:var(--tag-hover); +} + +.tagify__tag--loading { + pointer-events: none; +} + +.tagify__tag--loading .tagify__tag__removeBtn { + display: none; +} + +.tagify__tag--loading::after { + --loader-size:.4em; + content: ""; + vertical-align: middle; + opacity: 1; + width: 0.7em; + height: 0.7em; + width: var(--loader-size); + height: var(--loader-size); + min-width: 0; + border: 3px solid; + border-color: #eee #bbb #888 transparent; + border-radius: 50%; + animation: rotateLoader 0.4s infinite linear; + margin: 0 0.5em 0 -0.1em; +} + +.tagify__tag--flash div::before { + animation: none; +} + +.tagify__tag--hide { + width: 0 !important; + padding-left: 0; + padding-right: 0; + margin-left: 0; + margin-right: 0; + opacity: 0; + transform: scale(0); + transition: var(--tag-hide-transition); + pointer-events: none; +} + +.tagify__tag--hide > div > * { + white-space: nowrap; +} + +.tagify__tag.tagify--noAnim > div::before { + animation: none; +} + +.tagify__tag.tagify--notAllowed:not(.tagify__tag--editable) div > span { + opacity: 0.5; +} + +.tagify__tag.tagify--notAllowed:not(.tagify__tag--editable) div::before { + --tag-bg:var(--tag-invalid-bg); + transition: 0.2s; +} + +.tagify__tag[readonly] .tagify__tag__removeBtn { + display: none; +} + +.tagify__tag[readonly] > div::before { + animation: readonlyStyles 1s calc(-1s * (var(--readonly-striped) - 1)) paused; +} + +@keyframes readonlyStyles { + 0% { + background: linear-gradient(45deg, var(--tag-bg) 25%, transparent 25%, transparent 50%, var(--tag-bg) 50%, var(--tag-bg) 75%, transparent 75%, transparent) 0/5px 5px; + box-shadow: none; + filter: brightness(0.95); + } +} +.tagify__tag--editable > div { + color: var(--tag-text-color--edit); +} + +.tagify__tag--editable > div::before { + box-shadow: 0 0 0 2px var(--tag-hover) inset !important; +} + +.tagify__tag--editable > .tagify__tag__removeBtn { + pointer-events: none; +} + +.tagify__tag--editable > .tagify__tag__removeBtn::after { + opacity: 0; + transform: translateX(100%) translateX(5px); +} + +.tagify__tag--editable.tagify--invalid > div::before { + box-shadow: 0 0 0 2px var(--tag-invalid-color) inset !important; +} + +.tagify__tag__removeBtn { + order: 5; + display: inline-flex; + align-items: center; + justify-content: center; + border-radius: 50px; + cursor: pointer; + font: 14px/1 Arial; + background: var(--tag-remove-btn-bg); + color: var(--tag-remove-btn-color); + width: 14px; + height: 14px; + margin-right: 4.6666666667px; + margin-left: auto; + overflow: hidden; + transition: 0.2s ease-out; +} + +.tagify__tag__removeBtn::after { + content: "×"; + transition: 0.3s, color 0s; +} + +.tagify__tag__removeBtn:hover { + color: #fff; + background: var(--tag-remove-btn-bg--hover); +} + +.tagify__tag__removeBtn:hover + div > span { + opacity: 0.5; +} + +.tagify__tag__removeBtn:hover + div::before { + box-shadow: 0 0 0 var(--tag-inset-shadow-size) var(--tag-remove-bg, rgba(211, 148, 148, 0.3)) inset !important; + transition: box-shadow 0.2s; +} + +.tagify:not(.tagify--mix) .tagify__input br { + display: none; +} + +.tagify:not(.tagify--mix) .tagify__input * { + display: inline; + white-space: nowrap; +} + +.tagify__input { + flex-grow: 1; + display: inline-block; + min-width: 110px; + margin: 5px; + padding: var(--tag-pad); + line-height: normal; + position: relative; + white-space: pre-wrap; + color: var(--input-color); + box-sizing: inherit; +} + +.tagify__input:empty::before { + position: static; +} + +.tagify__input:focus { + outline: 0; +} + +.tagify__input:focus::before { + transition: 0.2s ease-out; + opacity: 0; + transform: translatex(6px); +} + +@supports (-ms-ime-align: auto) { + .tagify__input:focus::before { + display: none; + } +} +.tagify__input:focus:empty::before { + transition: 0.2s ease-out; + opacity: 1; + transform: none; + color: rgba(0, 0, 0, 0.25); + color: var(--placeholder-color-focus); +} + +@-moz-document url-prefix() { + .tagify__input:focus:empty::after { + display: none; + } +} +.tagify__input::before { + content: attr(data-placeholder); + height: 1em; + line-height: 1em; + margin: auto 0; + z-index: 1; + color: var(--placeholder-color); + white-space: nowrap; + pointer-events: none; + opacity: 0; + position: absolute; +} + +.tagify__input::after { + content: attr(data-suggest); + display: inline-block; + vertical-align: middle; + position: absolute; + min-width: calc(100% - 1.5em); + text-overflow: ellipsis; + overflow: hidden; + white-space: pre; + color: var(--tag-text-color); + opacity: 0.3; + pointer-events: none; + max-width: 100px; +} + +.tagify__input .tagify__tag { + margin: 0 1px; +} + +.tagify--mix { + display: block; +} + +.tagify--mix .tagify__input { + padding: 5px; + margin: 0; + width: 100%; + height: 100%; + line-height: 1.5; + display: block; +} + +.tagify--mix .tagify__input::before { + height: auto; + display: none; + line-height: inherit; +} + +.tagify--mix .tagify__input::after { + content: none; +} + +.tagify--select::after { + content: ">"; + opacity: 0.5; + position: absolute; + top: 50%; + right: 0; + bottom: 0; + font: 16px monospace; + line-height: 8px; + height: 8px; + pointer-events: none; + transform: translate(-150%, -50%) scaleX(1.2) rotate(90deg); + transition: 0.2s ease-in-out; +} + +.tagify--select[aria-expanded=true]::after { + transform: translate(-150%, -50%) rotate(270deg) scaleY(1.2); +} + +.tagify--select .tagify__tag { + position: absolute; + top: 0; + right: 1.8em; + bottom: 0; +} + +.tagify--select .tagify__tag div { + display: none; +} + +.tagify--select .tagify__input { + width: 100%; +} + +.tagify--empty .tagify__input::before { + transition: 0.2s ease-out; + opacity: 1; + transform: none; + display: inline-block; + width: auto; +} + +.tagify--mix .tagify--empty .tagify__input::before { + display: inline-block; +} + +.tagify--focus { + --tags-border-color:var(--tags-focus-border-color); + transition: 0s; +} + +.tagify--invalid { + --tags-border-color:#D39494; +} + +.tagify__dropdown { + position: absolute; + z-index: 9999; + transform: translateY(1px); + overflow: hidden; +} + +.tagify__dropdown[placement=top] { + margin-top: 0; + transform: translateY(-100%); +} + +.tagify__dropdown[placement=top] .tagify__dropdown__wrapper { + border-top-width: 1.1px; + border-bottom-width: 0; +} + +.tagify__dropdown[position=text] { + box-shadow: 0 0 0 3px rgba(var(--tagify-dd-color-primary), 0.1); + font-size: 0.9em; +} + +.tagify__dropdown[position=text] .tagify__dropdown__wrapper { + border-width: 1px; +} + +.tagify__dropdown__wrapper { + max-height: 300px; + overflow: auto; + overflow-x: hidden; + background: var(--tagify-dd-bg-color); + border: 1px solid; + border-color: var(--tagify-dd-color-primary); + border-bottom-width: 1.5px; + border-top-width: 0; + box-shadow: 0 2px 4px -2px rgba(0, 0, 0, 0.2); + transition: 0.25s cubic-bezier(0, 1, 0.5, 1); +} + +.tagify__dropdown__header:empty { + display: none; +} + +.tagify__dropdown__footer { + display: inline-block; + margin-top: 0.5em; + padding: var(--tagify-dd-item-pad); + font-size: 0.7em; + font-style: italic; + opacity: 0.5; +} + +.tagify__dropdown__footer:empty { + display: none; +} + +.tagify__dropdown--initial .tagify__dropdown__wrapper { + max-height: 20px; + transform: translateY(-1em); +} + +.tagify__dropdown--initial[placement=top] .tagify__dropdown__wrapper { + transform: translateY(2em); +} + +.tagify__dropdown__item { + box-sizing: border-box; + padding: var(--tagify-dd-item-pad); + margin: 1px; + cursor: pointer; + border-radius: 2px; + position: relative; + outline: 0; + max-height: 60px; + max-width: 100%; +} + +.tagify__dropdown__item--active { + background: var(--tagify-dd-color-primary); + color: #fff; +} + +.tagify__dropdown__item:active { + filter: brightness(105%); +} + +.tagify__dropdown__item--hidden { + padding-top: 0; + padding-bottom: 0; + margin: 0 1px; + pointer-events: none; + overflow: hidden; + max-height: 0; + transition: var(--tagify-dd-item--hidden-duration, 0.3s) !important; +} + +.tagify__dropdown__item--hidden > * { + transform: translateY(-100%); + opacity: 0; + transition: inherit; +} + +.toastr-title { + font-weight: bold; +} + +.toastr-message { + -ms-word-wrap: break-word; + word-wrap: break-word; +} + +.toastr-message a, +.toastr-message label { + color: #FFFFFF; +} + +.toastr-message a:hover { + color: #CCCCCC; + text-decoration: none; +} + +.toastr-close-button { + position: relative; + right: -0.3em; + top: -0.3em; + float: right; + font-size: 20px; + font-weight: bold; + color: #FFFFFF; + -webkit-text-shadow: 0 1px 0 #ffffff; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.8; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + filter: alpha(opacity=80); + line-height: 1; +} + +.toastr-close-button:hover, +.toastr-close-button:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); + filter: alpha(opacity=40); +} + +.rtl .toastr-close-button { + left: -0.3em; + float: left; + right: 0.3em; +} + +/*Additional properties for button version + iOS requires the button element instead of an anchor tag. + If you want the anchor version, it requires `href="#"`.*/ +button.toastr-close-button { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.toastr-top-center { + top: 0; + right: 0; + width: 100%; +} + +.toastr-top-center-nav-margin { + top: 65px; + right: 0; + width: 100%; +} + +.toastr-bottom-center { + bottom: 0; + right: 0; + width: 100%; +} + +.toastr-top-full-width { + top: 0; + right: 0; + width: 100%; +} + +.toastr-top-full-width-nav-margin { + top: 65px; + right: 0; + width: 100%; +} + +.toastr-bottom-full-width { + bottom: 0; + right: 0; + width: 100%; +} + +.toastr-top-left { + top: 12px; + left: 12px; +} + +.toastr-top-left-nav-margin { + top: 65px; + left: 12px; +} + +.toastr-top-right { + top: 12px; + right: 12px; +} + +.toastr-top-right-nav-margin { + top: 65px; + right: 12px; +} + +.toastr-bottom-right { + right: 12px; + bottom: 12px; +} + +.toastr-bottom-left { + bottom: 12px; + left: 12px; +} + +#toastr-container { + position: fixed; + z-index: 999999; + pointer-events: none; + /*overrides*/ +} + +#toastr-container * { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +#toastr-container > div { + position: relative; + pointer-events: auto; + overflow: hidden; + margin: 0 0 6px; + padding: 15px 15px 15px 50px; + width: 300px; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; + background-position: 15px center; + background-repeat: no-repeat; + -moz-box-shadow: 0 0 12px #999999; + -webkit-box-shadow: 0 0 12px #999999; + box-shadow: 0 0 12px #999999; + color: #FFFFFF; + opacity: 0.8; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + filter: alpha(opacity=80); +} + +#toastr-container > div.rtl { + direction: rtl; + padding: 15px 50px 15px 15px; + background-position: right 15px center; +} + +#toastr-container > div:hover { + -moz-box-shadow: 0 0 12px #000000; + -webkit-box-shadow: 0 0 12px #000000; + box-shadow: 0 0 12px #000000; + opacity: 1; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); + filter: alpha(opacity=100); + cursor: pointer; +} + +#toastr-container > .toastr-info { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important; +} + +#toastr-container > .toastr-error { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; +} + +#toastr-container > .toastr-success { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important; +} + +#toastr-container > .toastr-warning { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important; +} + +#toastr-container.toastr-top-center-nav-margin > div, +#toastr-container.toastr-top-center > div, +#toastr-container.toastr-bottom-center > div { + width: 300px; + margin-left: auto; + margin-right: auto; +} + +#toastr-container.toastr-top-full-width-nav-margin > div, +#toastr-container.toastr-top-full-width > div, +#toastr-container.toastr-bottom-full-width > div { + width: 96%; + margin-left: auto; + margin-right: auto; +} + +.toastr { + background-color: #030303; +} + +.toastr-success { + background-color: #51A351; +} + +.toastr-error { + background-color: #BD362F; +} + +.toastr-info { + background-color: #2F96B4; +} + +.toastr-warning { + background-color: #F89406; +} + +.toastr-progress { + position: absolute; + left: 0; + bottom: 0; + height: 4px; + background-color: #000000; + opacity: 0.4; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40); + filter: alpha(opacity=40); +} + +/*Responsive Design*/ +@media all and (max-width: 240px) { + #toastr-container > div { + padding: 8px 8px 8px 50px; + width: 11em; + } + #toastr-container > div.rtl { + padding: 8px 50px 8px 8px; + } + #toastr-container .toastr-close-button { + right: -0.2em; + top: -0.2em; + } + #toastr-container .rtl .toastr-close-button { + left: -0.2em; + right: 0.2em; + } +} +@media all and (min-width: 241px) and (max-width: 480px) { + #toastr-container > div { + padding: 8px 8px 8px 50px; + width: 18em; + } + #toastr-container > div.rtl { + padding: 8px 50px 8px 8px; + } + #toastr-container .toastr-close-button { + right: -0.2em; + top: -0.2em; + } + #toastr-container .rtl .toastr-close-button { + left: -0.2em; + right: 0.2em; + } +} +@media all and (min-width: 481px) and (max-width: 768px) { + #toastr-container > div { + padding: 15px 15px 15px 50px; + width: 25em; + } + #toastr-container > div.rtl { + padding: 15px 50px 15px 15px; + } +} +@keyframes opaque { + 0% { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes resizeanim { + 0%, to { + opacity: 0; + } +} +.apexcharts-canvas { + position: relative; + user-select: none; +} + +.apexcharts-canvas ::-webkit-scrollbar { + -webkit-appearance: none; + width: 6px; +} + +.apexcharts-canvas ::-webkit-scrollbar-thumb { + border-radius: 4px; + background-color: rgba(0, 0, 0, 0.5); + box-shadow: 0 0 1px rgba(255, 255, 255, 0.5); + -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, 0.5); +} + +.apexcharts-inner { + position: relative; +} + +.apexcharts-text tspan { + font-family: inherit; +} + +.legend-mouseover-inactive { + transition: 0.15s ease all; + opacity: 0.2; +} + +.apexcharts-series-collapsed { + opacity: 0; +} + +.apexcharts-tooltip { + border-radius: 5px; + box-shadow: 2px 2px 6px -4px #999; + cursor: default; + font-size: 14px; + left: 62px; + opacity: 0; + pointer-events: none; + position: absolute; + top: 20px; + display: flex; + flex-direction: column; + overflow: hidden; + white-space: nowrap; + z-index: 12; + transition: 0.15s ease all; +} + +.apexcharts-tooltip.apexcharts-active { + opacity: 1; + transition: 0.15s ease all; +} + +.apexcharts-tooltip.apexcharts-theme-light { + border: 1px solid #e3e3e3; + background: rgba(255, 255, 255, 0.96); +} + +.apexcharts-tooltip.apexcharts-theme-dark { + color: #fff; + background: rgba(30, 30, 30, 0.8); +} + +.apexcharts-tooltip * { + font-family: inherit; +} + +.apexcharts-tooltip-title { + padding: 6px; + font-size: 15px; + margin-bottom: 4px; +} + +.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title { + background: #eceff1; + border-bottom: 1px solid #ddd; +} + +.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title { + background: rgba(0, 0, 0, 0.7); + border-bottom: 1px solid #333; +} + +.apexcharts-tooltip-text-goals-value, .apexcharts-tooltip-text-y-value, .apexcharts-tooltip-text-z-value { + display: inline-block; + margin-left: 5px; + font-weight: 600; +} + +.apexcharts-tooltip-text-goals-label:empty, .apexcharts-tooltip-text-goals-value:empty, .apexcharts-tooltip-text-y-label:empty, .apexcharts-tooltip-text-y-value:empty, .apexcharts-tooltip-text-z-value:empty, .apexcharts-tooltip-title:empty { + display: none; +} + +.apexcharts-tooltip-text-goals-label, .apexcharts-tooltip-text-goals-value { + padding: 6px 0 5px; +} + +.apexcharts-tooltip-goals-group, .apexcharts-tooltip-text-goals-label, .apexcharts-tooltip-text-goals-value { + display: flex; +} + +.apexcharts-tooltip-text-goals-label:not(:empty), .apexcharts-tooltip-text-goals-value:not(:empty) { + margin-top: -6px; +} + +.apexcharts-tooltip-marker { + width: 12px; + height: 12px; + position: relative; + top: 0; + margin-right: 10px; + border-radius: 50%; +} + +.apexcharts-tooltip-series-group { + padding: 0 10px; + display: none; + text-align: left; + justify-content: left; + align-items: center; +} + +.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker { + opacity: 1; +} + +.apexcharts-tooltip-series-group.apexcharts-active, .apexcharts-tooltip-series-group:last-child { + padding-bottom: 4px; +} + +.apexcharts-tooltip-series-group-hidden { + opacity: 0; + height: 0; + line-height: 0; + padding: 0 !important; +} + +.apexcharts-tooltip-y-group { + padding: 6px 0 5px; +} + +.apexcharts-custom-tooltip, .apexcharts-tooltip-box { + padding: 4px 8px; +} + +.apexcharts-tooltip-boxPlot { + display: flex; + flex-direction: column-reverse; +} + +.apexcharts-tooltip-box > div { + margin: 4px 0; +} + +.apexcharts-tooltip-box span.value { + font-weight: 700; +} + +.apexcharts-tooltip-rangebar { + padding: 5px 8px; +} + +.apexcharts-tooltip-rangebar .category { + font-weight: 600; + color: #777; +} + +.apexcharts-tooltip-rangebar .series-name { + font-weight: 700; + display: block; + margin-bottom: 5px; +} + +.apexcharts-xaxistooltip, .apexcharts-yaxistooltip { + opacity: 0; + pointer-events: none; + color: #373d3f; + font-size: 13px; + text-align: center; + border-radius: 2px; + position: absolute; + z-index: 10; + background: #eceff1; + border: 1px solid #90a4ae; +} + +.apexcharts-xaxistooltip { + padding: 9px 10px; + transition: 0.15s ease all; +} + +.apexcharts-xaxistooltip.apexcharts-theme-dark { + background: rgba(0, 0, 0, 0.7); + border: 1px solid rgba(0, 0, 0, 0.5); + color: #fff; +} + +.apexcharts-xaxistooltip:after, .apexcharts-xaxistooltip:before { + left: 50%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; +} + +.apexcharts-xaxistooltip:after { + border-color: transparent; + border-width: 6px; + margin-left: -6px; +} + +.apexcharts-xaxistooltip:before { + border-color: transparent; + border-width: 7px; + margin-left: -7px; +} + +.apexcharts-xaxistooltip-bottom:after, .apexcharts-xaxistooltip-bottom:before { + bottom: 100%; +} + +.apexcharts-xaxistooltip-top:after, .apexcharts-xaxistooltip-top:before { + top: 100%; +} + +.apexcharts-xaxistooltip-bottom:after { + border-bottom-color: #eceff1; +} + +.apexcharts-xaxistooltip-bottom:before { + border-bottom-color: #90a4ae; +} + +.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after, .apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before { + border-bottom-color: rgba(0, 0, 0, 0.5); +} + +.apexcharts-xaxistooltip-top:after { + border-top-color: #eceff1; +} + +.apexcharts-xaxistooltip-top:before { + border-top-color: #90a4ae; +} + +.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after, .apexcharts-xaxistooltip-top.apexcharts-theme-dark:before { + border-top-color: rgba(0, 0, 0, 0.5); +} + +.apexcharts-xaxistooltip.apexcharts-active { + opacity: 1; + transition: 0.15s ease all; +} + +.apexcharts-yaxistooltip { + padding: 4px 10px; +} + +.apexcharts-yaxistooltip.apexcharts-theme-dark { + background: rgba(0, 0, 0, 0.7); + border: 1px solid rgba(0, 0, 0, 0.5); + color: #fff; +} + +.apexcharts-yaxistooltip:after, .apexcharts-yaxistooltip:before { + top: 50%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; +} + +.apexcharts-yaxistooltip:after { + border-color: transparent; + border-width: 6px; + margin-top: -6px; +} + +.apexcharts-yaxistooltip:before { + border-color: transparent; + border-width: 7px; + margin-top: -7px; +} + +.apexcharts-yaxistooltip-left:after, .apexcharts-yaxistooltip-left:before { + left: 100%; +} + +.apexcharts-yaxistooltip-right:after, .apexcharts-yaxistooltip-right:before { + right: 100%; +} + +.apexcharts-yaxistooltip-left:after { + border-left-color: #eceff1; +} + +.apexcharts-yaxistooltip-left:before { + border-left-color: #90a4ae; +} + +.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after, .apexcharts-yaxistooltip-left.apexcharts-theme-dark:before { + border-left-color: rgba(0, 0, 0, 0.5); +} + +.apexcharts-yaxistooltip-right:after { + border-right-color: #eceff1; +} + +.apexcharts-yaxistooltip-right:before { + border-right-color: #90a4ae; +} + +.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after, .apexcharts-yaxistooltip-right.apexcharts-theme-dark:before { + border-right-color: rgba(0, 0, 0, 0.5); +} + +.apexcharts-yaxistooltip.apexcharts-active { + opacity: 1; +} + +.apexcharts-yaxistooltip-hidden { + display: none; +} + +.apexcharts-xcrosshairs, .apexcharts-ycrosshairs { + pointer-events: none; + opacity: 0; + transition: 0.15s ease all; +} + +.apexcharts-xcrosshairs.apexcharts-active, .apexcharts-ycrosshairs.apexcharts-active { + opacity: 1; + transition: 0.15s ease all; +} + +.apexcharts-ycrosshairs-hidden { + opacity: 0; +} + +.apexcharts-selection-rect { + cursor: move; +} + +.svg_select_boundingRect, .svg_select_points_rot { + pointer-events: none; + opacity: 0; + visibility: hidden; +} + +.apexcharts-selection-rect + g .svg_select_boundingRect, .apexcharts-selection-rect + g .svg_select_points_rot { + opacity: 0; + visibility: hidden; +} + +.apexcharts-selection-rect + g .svg_select_points_l, .apexcharts-selection-rect + g .svg_select_points_r { + cursor: ew-resize; + opacity: 1; + visibility: visible; +} + +.svg_select_points { + fill: #efefef; + stroke: #333; + rx: 2; +} + +.apexcharts-svg.apexcharts-zoomable.hovering-zoom { + cursor: crosshair; +} + +.apexcharts-svg.apexcharts-zoomable.hovering-pan { + cursor: move; +} + +.apexcharts-menu-icon, .apexcharts-pan-icon, .apexcharts-reset-icon, .apexcharts-selection-icon, .apexcharts-toolbar-custom-icon, .apexcharts-zoom-icon, .apexcharts-zoomin-icon, .apexcharts-zoomout-icon { + cursor: pointer; + width: 20px; + height: 20px; + line-height: 24px; + color: #6e8192; + text-align: center; +} + +.apexcharts-menu-icon svg, .apexcharts-reset-icon svg, .apexcharts-zoom-icon svg, .apexcharts-zoomin-icon svg, .apexcharts-zoomout-icon svg { + fill: #6e8192; +} + +.apexcharts-selection-icon svg { + fill: #444; + transform: scale(0.76); +} + +.apexcharts-theme-dark .apexcharts-menu-icon svg, .apexcharts-theme-dark .apexcharts-pan-icon svg, .apexcharts-theme-dark .apexcharts-reset-icon svg, .apexcharts-theme-dark .apexcharts-selection-icon svg, .apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg, .apexcharts-theme-dark .apexcharts-zoom-icon svg, .apexcharts-theme-dark .apexcharts-zoomin-icon svg, .apexcharts-theme-dark .apexcharts-zoomout-icon svg { + fill: #f3f4f5; +} + +.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg, .apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg, .apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg { + fill: #008ffb; +} + +.apexcharts-theme-light .apexcharts-menu-icon:hover svg, .apexcharts-theme-light .apexcharts-reset-icon:hover svg, .apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg, .apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg, .apexcharts-theme-light .apexcharts-zoomin-icon:hover svg, .apexcharts-theme-light .apexcharts-zoomout-icon:hover svg { + fill: #333; +} + +.apexcharts-menu-icon, .apexcharts-selection-icon { + position: relative; +} + +.apexcharts-reset-icon { + margin-left: 5px; +} + +.apexcharts-menu-icon, .apexcharts-reset-icon, .apexcharts-zoom-icon { + transform: scale(0.85); +} + +.apexcharts-zoomin-icon, .apexcharts-zoomout-icon { + transform: scale(0.7); +} + +.apexcharts-zoomout-icon { + margin-right: 3px; +} + +.apexcharts-pan-icon { + transform: scale(0.62); + position: relative; + left: 1px; + top: 0; +} + +.apexcharts-pan-icon svg { + fill: #fff; + stroke: #6e8192; + stroke-width: 2; +} + +.apexcharts-pan-icon.apexcharts-selected svg { + stroke: #008ffb; +} + +.apexcharts-pan-icon:not(.apexcharts-selected):hover svg { + stroke: #333; +} + +.apexcharts-toolbar { + position: absolute; + z-index: 11; + max-width: 176px; + text-align: right; + border-radius: 3px; + padding: 0 6px 2px; + display: flex; + justify-content: space-between; + align-items: center; +} + +.apexcharts-menu { + background: #fff; + position: absolute; + top: 100%; + border: 1px solid #ddd; + border-radius: 3px; + padding: 3px; + right: 10px; + opacity: 0; + min-width: 110px; + transition: 0.15s ease all; + pointer-events: none; +} + +.apexcharts-menu.apexcharts-menu-open { + opacity: 1; + pointer-events: all; + transition: 0.15s ease all; +} + +.apexcharts-menu-item { + padding: 6px 7px; + font-size: 12px; + cursor: pointer; +} + +.apexcharts-theme-light .apexcharts-menu-item:hover { + background: #eee; +} + +.apexcharts-theme-dark .apexcharts-menu { + background: rgba(0, 0, 0, 0.7); + color: #fff; +} + +@media screen and (min-width: 768px) { + .apexcharts-canvas:hover .apexcharts-toolbar { + opacity: 1; + } +} +.apexcharts-canvas .apexcharts-element-hidden, .apexcharts-datalabel.apexcharts-element-hidden, .apexcharts-hide .apexcharts-series-points { + opacity: 0; +} + +.apexcharts-datalabel, .apexcharts-datalabel-label, .apexcharts-datalabel-value, .apexcharts-datalabels, .apexcharts-pie-label { + cursor: default; + pointer-events: none; +} + +.apexcharts-pie-label-delay { + opacity: 0; + animation-name: opaque; + animation-duration: 0.3s; + animation-fill-mode: forwards; + animation-timing-function: ease; +} + +.apexcharts-annotation-rect, .apexcharts-area-series .apexcharts-area, .apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events, .apexcharts-gridline, .apexcharts-line, .apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events, .apexcharts-point-annotation-label, .apexcharts-radar-series path, .apexcharts-radar-series polygon, .apexcharts-toolbar svg, .apexcharts-tooltip .apexcharts-marker, .apexcharts-xaxis-annotation-label, .apexcharts-yaxis-annotation-label, .apexcharts-zoom-rect { + pointer-events: none; +} + +.apexcharts-marker { + transition: 0.15s ease all; +} + +.resize-triggers { + animation: 1ms resizeanim; + visibility: hidden; + opacity: 0; + height: 100%; + width: 100%; + overflow: hidden; +} + +.contract-trigger:before, .resize-triggers, .resize-triggers > div { + content: " "; + display: block; + position: absolute; + top: 0; + left: 0; +} + +.resize-triggers > div { + height: 100%; + width: 100%; + background: #eee; + overflow: auto; +} + +.contract-trigger:before { + overflow: hidden; + width: 200%; + height: 200%; +} + +.swal2-popup.swal2-toast { + box-sizing: border-box; + grid-column: 1/4 !important; + grid-row: 1/4 !important; + grid-template-columns: 1fr 99fr 1fr; + padding: 1em; + overflow-y: hidden; + background: #fff; + box-shadow: 0 0 1px rgba(0, 0, 0, 0.075), 0 1px 2px rgba(0, 0, 0, 0.075), 1px 2px 4px rgba(0, 0, 0, 0.075), 1px 3px 8px rgba(0, 0, 0, 0.075), 2px 4px 16px rgba(0, 0, 0, 0.075); + pointer-events: all; +} + +.swal2-popup.swal2-toast > * { + grid-column: 2; +} + +.swal2-popup.swal2-toast .swal2-title { + margin: 0.5em 1em; + padding: 0; + font-size: 1em; + text-align: initial; +} + +.swal2-popup.swal2-toast .swal2-loading { + justify-content: center; +} + +.swal2-popup.swal2-toast .swal2-input { + height: 2em; + margin: 0.5em; + font-size: 1em; +} + +.swal2-popup.swal2-toast .swal2-validation-message { + font-size: 1em; +} + +.swal2-popup.swal2-toast .swal2-footer { + margin: 0.5em 0 0; + padding: 0.5em 0 0; + font-size: 0.8em; +} + +.swal2-popup.swal2-toast .swal2-close { + grid-column: 3/3; + grid-row: 1/99; + align-self: center; + width: 0.8em; + height: 0.8em; + margin: 0; + font-size: 2em; +} + +.swal2-popup.swal2-toast .swal2-html-container { + margin: 0.5em 1em; + padding: 0; + font-size: 1em; + text-align: initial; +} + +.swal2-popup.swal2-toast .swal2-html-container:empty { + padding: 0; +} + +.swal2-popup.swal2-toast .swal2-loader { + grid-column: 1; + grid-row: 1/99; + align-self: center; + width: 2em; + height: 2em; + margin: 0.25em; +} + +.swal2-popup.swal2-toast .swal2-icon { + grid-column: 1; + grid-row: 1/99; + align-self: center; + width: 2em; + min-width: 2em; + height: 2em; + margin: 0 0.5em 0 0; +} + +.swal2-popup.swal2-toast .swal2-icon .swal2-icon-content { + display: flex; + align-items: center; + font-size: 1.8em; + font-weight: bold; +} + +.swal2-popup.swal2-toast .swal2-icon.swal2-success .swal2-success-ring { + width: 2em; + height: 2em; +} + +.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line] { + top: 0.875em; + width: 1.375em; +} + +.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left] { + left: 0.3125em; +} + +.swal2-popup.swal2-toast .swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right] { + right: 0.3125em; +} + +.swal2-popup.swal2-toast .swal2-actions { + justify-content: flex-start; + height: auto; + margin: 0; + margin-top: 0.5em; + padding: 0 0.5em; +} + +.swal2-popup.swal2-toast .swal2-styled { + margin: 0.25em 0.5em; + padding: 0.4em 0.6em; + font-size: 1em; +} + +.swal2-popup.swal2-toast .swal2-success { + border-color: #a5dc86; +} + +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line] { + position: absolute; + width: 1.6em; + height: 3em; + transform: rotate(45deg); + border-radius: 50%; +} + +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=left] { + top: -0.8em; + left: -0.5em; + transform: rotate(-45deg); + transform-origin: 2em 2em; + border-radius: 4em 0 0 4em; +} + +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-circular-line][class$=right] { + top: -0.25em; + left: 0.9375em; + transform-origin: 0 1.5em; + border-radius: 0 4em 4em 0; +} + +.swal2-popup.swal2-toast .swal2-success .swal2-success-ring { + width: 2em; + height: 2em; +} + +.swal2-popup.swal2-toast .swal2-success .swal2-success-fix { + top: 0; + left: 0.4375em; + width: 0.4375em; + height: 2.6875em; +} + +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line] { + height: 0.3125em; +} + +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=tip] { + top: 1.125em; + left: 0.1875em; + width: 0.75em; +} + +.swal2-popup.swal2-toast .swal2-success [class^=swal2-success-line][class$=long] { + top: 0.9375em; + right: 0.1875em; + width: 1.375em; +} + +.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-tip { + -webkit-animation: swal2-toast-animate-success-line-tip 0.75s; + animation: swal2-toast-animate-success-line-tip 0.75s; +} + +.swal2-popup.swal2-toast .swal2-success.swal2-icon-show .swal2-success-line-long { + -webkit-animation: swal2-toast-animate-success-line-long 0.75s; + animation: swal2-toast-animate-success-line-long 0.75s; +} + +.swal2-popup.swal2-toast.swal2-show { + -webkit-animation: swal2-toast-show 0.5s; + animation: swal2-toast-show 0.5s; +} + +.swal2-popup.swal2-toast.swal2-hide { + -webkit-animation: swal2-toast-hide 0.1s forwards; + animation: swal2-toast-hide 0.1s forwards; +} + +.swal2-container { + display: grid; + position: fixed; + z-index: 1060; + top: 0; + right: 0; + bottom: 0; + left: 0; + box-sizing: border-box; + grid-template-areas: "top-start top top-end" "center-start center center-end" "bottom-start bottom-center bottom-end"; + grid-template-rows: minmax(-webkit-min-content, auto) minmax(-webkit-min-content, auto) minmax(-webkit-min-content, auto); + grid-template-rows: minmax(min-content, auto) minmax(min-content, auto) minmax(min-content, auto); + height: 100%; + padding: 0.625em; + overflow-x: hidden; + transition: background-color 0.1s; + -webkit-overflow-scrolling: touch; +} + +.swal2-container.swal2-backdrop-show, .swal2-container.swal2-noanimation { + background: rgba(0, 0, 0, 0.4); +} + +.swal2-container.swal2-backdrop-hide { + background: transparent !important; +} + +.swal2-container.swal2-top-start, .swal2-container.swal2-center-start, .swal2-container.swal2-bottom-start { + grid-template-columns: minmax(0, 1fr) auto auto; +} + +.swal2-container.swal2-top, .swal2-container.swal2-center, .swal2-container.swal2-bottom { + grid-template-columns: auto minmax(0, 1fr) auto; +} + +.swal2-container.swal2-top-end, .swal2-container.swal2-center-end, .swal2-container.swal2-bottom-end { + grid-template-columns: auto auto minmax(0, 1fr); +} + +.swal2-container.swal2-top-start > .swal2-popup { + align-self: start; +} + +.swal2-container.swal2-top > .swal2-popup { + grid-column: 2; + align-self: start; + justify-self: center; +} + +.swal2-container.swal2-top-end > .swal2-popup, .swal2-container.swal2-top-right > .swal2-popup { + grid-column: 3; + align-self: start; + justify-self: end; +} + +.swal2-container.swal2-center-start > .swal2-popup, .swal2-container.swal2-center-left > .swal2-popup { + grid-row: 2; + align-self: center; +} + +.swal2-container.swal2-center > .swal2-popup { + grid-column: 2; + grid-row: 2; + align-self: center; + justify-self: center; +} + +.swal2-container.swal2-center-end > .swal2-popup, .swal2-container.swal2-center-right > .swal2-popup { + grid-column: 3; + grid-row: 2; + align-self: center; + justify-self: end; +} + +.swal2-container.swal2-bottom-start > .swal2-popup, .swal2-container.swal2-bottom-left > .swal2-popup { + grid-column: 1; + grid-row: 3; + align-self: end; +} + +.swal2-container.swal2-bottom > .swal2-popup { + grid-column: 2; + grid-row: 3; + justify-self: center; + align-self: end; +} + +.swal2-container.swal2-bottom-end > .swal2-popup, .swal2-container.swal2-bottom-right > .swal2-popup { + grid-column: 3; + grid-row: 3; + align-self: end; + justify-self: end; +} + +.swal2-container.swal2-grow-row > .swal2-popup, .swal2-container.swal2-grow-fullscreen > .swal2-popup { + grid-column: 1/4; + width: 100%; +} + +.swal2-container.swal2-grow-column > .swal2-popup, .swal2-container.swal2-grow-fullscreen > .swal2-popup { + grid-row: 1/4; + align-self: stretch; +} + +.swal2-container.swal2-no-transition { + transition: none !important; +} + +.swal2-popup { + display: none; + position: relative; + box-sizing: border-box; + grid-template-columns: minmax(0, 100%); + width: 32em; + max-width: 100%; + padding: 0 0 1.25em; + border: none; + border-radius: 5px; + background: #fff; + color: #545454; + font-family: inherit; + font-size: 1rem; +} + +.swal2-popup:focus { + outline: none; +} + +.swal2-popup.swal2-loading { + overflow-y: hidden; +} + +.swal2-title { + position: relative; + max-width: 100%; + margin: 0; + padding: 0.8em 1em 0; + color: inherit; + font-size: 1.875em; + font-weight: 600; + text-align: center; + text-transform: none; + word-wrap: break-word; +} + +.swal2-actions { + display: flex; + z-index: 1; + box-sizing: border-box; + flex-wrap: wrap; + align-items: center; + justify-content: center; + width: auto; + margin: 1.25em auto 0; + padding: 0; +} + +.swal2-actions:not(.swal2-loading) .swal2-styled[disabled] { + opacity: 0.4; +} + +.swal2-actions:not(.swal2-loading) .swal2-styled:hover { + background-image: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1)); +} + +.swal2-actions:not(.swal2-loading) .swal2-styled:active { + background-image: linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)); +} + +.swal2-loader { + display: none; + align-items: center; + justify-content: center; + width: 2.2em; + height: 2.2em; + margin: 0 1.875em; + -webkit-animation: swal2-rotate-loading 1.5s linear 0s infinite normal; + animation: swal2-rotate-loading 1.5s linear 0s infinite normal; + border-width: 0.25em; + border-style: solid; + border-radius: 100%; + border-color: #2778c4 transparent #2778c4 transparent; +} + +.swal2-styled { + margin: 0.3125em; + padding: 0.625em 1.1em; + transition: box-shadow 0.1s; + box-shadow: 0 0 0 3px transparent; + font-weight: 500; +} + +.swal2-styled:not([disabled]) { + cursor: pointer; +} + +.swal2-styled.swal2-confirm { + border: 0; + border-radius: 0.25em; + background: initial; + background-color: #7066e0; + color: #fff; + font-size: 1em; +} + +.swal2-styled.swal2-confirm:focus { + box-shadow: 0 0 0 3px rgba(112, 102, 224, 0.5); +} + +.swal2-styled.swal2-deny { + border: 0; + border-radius: 0.25em; + background: initial; + background-color: #dc3741; + color: #fff; + font-size: 1em; +} + +.swal2-styled.swal2-deny:focus { + box-shadow: 0 0 0 3px rgba(220, 55, 65, 0.5); +} + +.swal2-styled.swal2-cancel { + border: 0; + border-radius: 0.25em; + background: initial; + background-color: #6e7881; + color: #fff; + font-size: 1em; +} + +.swal2-styled.swal2-cancel:focus { + box-shadow: 0 0 0 3px rgba(110, 120, 129, 0.5); +} + +.swal2-styled.swal2-default-outline:focus { + box-shadow: 0 0 0 3px rgba(100, 150, 200, 0.5); +} + +.swal2-styled:focus { + outline: none; +} + +.swal2-styled::-moz-focus-inner { + border: 0; +} + +.swal2-footer { + justify-content: center; + margin: 1em 0 0; + padding: 1em 1em 0; + border-top: 1px solid #eee; + color: inherit; + font-size: 1em; +} + +.swal2-timer-progress-bar-container { + position: absolute; + right: 0; + bottom: 0; + left: 0; + grid-column: auto !important; + overflow: hidden; + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; +} + +.swal2-timer-progress-bar { + width: 100%; + height: 0.25em; + background: rgba(0, 0, 0, 0.2); +} + +.swal2-image { + max-width: 100%; + margin: 2em auto 1em; +} + +.swal2-close { + z-index: 2; + align-items: center; + justify-content: center; + width: 1.2em; + height: 1.2em; + margin-top: 0; + margin-right: 0; + margin-bottom: -1.2em; + padding: 0; + overflow: hidden; + transition: color 0.1s, box-shadow 0.1s; + border: none; + border-radius: 5px; + background: transparent; + color: #ccc; + font-family: serif; + font-family: monospace; + font-size: 2.5em; + cursor: pointer; + justify-self: end; +} + +.swal2-close:hover { + transform: none; + background: transparent; + color: #f27474; +} + +.swal2-close:focus { + outline: none; + box-shadow: inset 0 0 0 3px rgba(100, 150, 200, 0.5); +} + +.swal2-close::-moz-focus-inner { + border: 0; +} + +.swal2-html-container { + z-index: 1; + justify-content: center; + margin: 1em 1.6em 0.3em; + padding: 0; + overflow: auto; + color: inherit; + font-size: 1.125em; + font-weight: normal; + line-height: normal; + text-align: center; + word-wrap: break-word; + word-break: break-word; +} + +.swal2-input, +.swal2-file, +.swal2-textarea, +.swal2-select, +.swal2-radio, +.swal2-checkbox { + margin: 1em 2em 3px; +} + +.swal2-input, +.swal2-file, +.swal2-textarea { + box-sizing: border-box; + width: auto; + transition: border-color 0.1s, box-shadow 0.1s; + border: 1px solid #d9d9d9; + border-radius: 0.1875em; + background: inherit; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06), 0 0 0 3px transparent; + color: inherit; + font-size: 1.125em; +} + +.swal2-input.swal2-inputerror, +.swal2-file.swal2-inputerror, +.swal2-textarea.swal2-inputerror { + border-color: #f27474 !important; + box-shadow: 0 0 2px #f27474 !important; +} + +.swal2-input:focus, +.swal2-file:focus, +.swal2-textarea:focus { + border: 1px solid #b4dbed; + outline: none; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.06), 0 0 0 3px rgba(100, 150, 200, 0.5); +} + +.swal2-input::-moz-placeholder, .swal2-file::-moz-placeholder, .swal2-textarea::-moz-placeholder { + color: #ccc; +} + +.swal2-input:-ms-input-placeholder, .swal2-file:-ms-input-placeholder, .swal2-textarea:-ms-input-placeholder { + color: #ccc; +} + +.swal2-input::placeholder, +.swal2-file::placeholder, +.swal2-textarea::placeholder { + color: #ccc; +} + +.swal2-range { + margin: 1em 2em 3px; + background: #fff; +} + +.swal2-range input { + width: 80%; +} + +.swal2-range output { + width: 20%; + color: inherit; + font-weight: 600; + text-align: center; +} + +.swal2-range input, +.swal2-range output { + height: 2.625em; + padding: 0; + font-size: 1.125em; + line-height: 2.625em; +} + +.swal2-input { + height: 2.625em; + padding: 0 0.75em; +} + +.swal2-file { + width: 75%; + margin-right: auto; + margin-left: auto; + background: inherit; + font-size: 1.125em; +} + +.swal2-textarea { + height: 6.75em; + padding: 0.75em; +} + +.swal2-select { + min-width: 50%; + max-width: 100%; + padding: 0.375em 0.625em; + background: inherit; + color: inherit; + font-size: 1.125em; +} + +.swal2-radio, +.swal2-checkbox { + align-items: center; + justify-content: center; + background: #fff; + color: inherit; +} + +.swal2-radio label, +.swal2-checkbox label { + margin: 0 0.6em; + font-size: 1.125em; +} + +.swal2-radio input, +.swal2-checkbox input { + flex-shrink: 0; + margin: 0 0.4em; +} + +.swal2-input-label { + display: flex; + justify-content: center; + margin: 1em auto 0; +} + +.swal2-validation-message { + align-items: center; + justify-content: center; + margin: 1em 0 0; + padding: 0.625em; + overflow: hidden; + background: #f0f0f0; + color: #666666; + font-size: 1em; + font-weight: 300; +} + +.swal2-validation-message::before { + content: "!"; + display: inline-block; + width: 1.5em; + min-width: 1.5em; + height: 1.5em; + margin: 0 0.625em; + border-radius: 50%; + background-color: #f27474; + color: #fff; + font-weight: 600; + line-height: 1.5em; + text-align: center; +} + +.swal2-icon { + position: relative; + box-sizing: content-box; + justify-content: center; + width: 5em; + height: 5em; + margin: 2.5em auto 0.6em; + border: 0.25em solid transparent; + border-radius: 50%; + border-color: #000; + font-family: inherit; + line-height: 5em; + cursor: default; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.swal2-icon .swal2-icon-content { + display: flex; + align-items: center; + font-size: 3.75em; +} + +.swal2-icon.swal2-error { + border-color: #f27474; + color: #f27474; +} + +.swal2-icon.swal2-error .swal2-x-mark { + position: relative; + flex-grow: 1; +} + +.swal2-icon.swal2-error [class^=swal2-x-mark-line] { + display: block; + position: absolute; + top: 2.3125em; + width: 2.9375em; + height: 0.3125em; + border-radius: 0.125em; + background-color: #f27474; +} + +.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=left] { + left: 1.0625em; + transform: rotate(45deg); +} + +.swal2-icon.swal2-error [class^=swal2-x-mark-line][class$=right] { + right: 1em; + transform: rotate(-45deg); +} + +.swal2-icon.swal2-error.swal2-icon-show { + -webkit-animation: swal2-animate-error-icon 0.5s; + animation: swal2-animate-error-icon 0.5s; +} + +.swal2-icon.swal2-error.swal2-icon-show .swal2-x-mark { + -webkit-animation: swal2-animate-error-x-mark 0.5s; + animation: swal2-animate-error-x-mark 0.5s; +} + +.swal2-icon.swal2-warning { + border-color: #facea8; + color: #f8bb86; +} + +.swal2-icon.swal2-warning.swal2-icon-show { + -webkit-animation: swal2-animate-error-icon 0.5s; + animation: swal2-animate-error-icon 0.5s; +} + +.swal2-icon.swal2-warning.swal2-icon-show .swal2-icon-content { + -webkit-animation: swal2-animate-i-mark 0.5s; + animation: swal2-animate-i-mark 0.5s; +} + +.swal2-icon.swal2-info { + border-color: #9de0f6; + color: #3fc3ee; +} + +.swal2-icon.swal2-info.swal2-icon-show { + -webkit-animation: swal2-animate-error-icon 0.5s; + animation: swal2-animate-error-icon 0.5s; +} + +.swal2-icon.swal2-info.swal2-icon-show .swal2-icon-content { + -webkit-animation: swal2-animate-i-mark 0.8s; + animation: swal2-animate-i-mark 0.8s; +} + +.swal2-icon.swal2-question { + border-color: #c9dae1; + color: #87adbd; +} + +.swal2-icon.swal2-question.swal2-icon-show { + -webkit-animation: swal2-animate-error-icon 0.5s; + animation: swal2-animate-error-icon 0.5s; +} + +.swal2-icon.swal2-question.swal2-icon-show .swal2-icon-content { + -webkit-animation: swal2-animate-question-mark 0.8s; + animation: swal2-animate-question-mark 0.8s; +} + +.swal2-icon.swal2-success { + border-color: #a5dc86; + color: #a5dc86; +} + +.swal2-icon.swal2-success [class^=swal2-success-circular-line] { + position: absolute; + width: 3.75em; + height: 7.5em; + transform: rotate(45deg); + border-radius: 50%; +} + +.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=left] { + top: -0.4375em; + left: -2.0635em; + transform: rotate(-45deg); + transform-origin: 3.75em 3.75em; + border-radius: 7.5em 0 0 7.5em; +} + +.swal2-icon.swal2-success [class^=swal2-success-circular-line][class$=right] { + top: -0.6875em; + left: 1.875em; + transform: rotate(-45deg); + transform-origin: 0 3.75em; + border-radius: 0 7.5em 7.5em 0; +} + +.swal2-icon.swal2-success .swal2-success-ring { + position: absolute; + z-index: 2; + top: -0.25em; + left: -0.25em; + box-sizing: content-box; + width: 100%; + height: 100%; + border: 0.25em solid rgba(165, 220, 134, 0.3); + border-radius: 50%; +} + +.swal2-icon.swal2-success .swal2-success-fix { + position: absolute; + z-index: 1; + top: 0.5em; + left: 1.625em; + width: 0.4375em; + height: 5.625em; + transform: rotate(-45deg); +} + +.swal2-icon.swal2-success [class^=swal2-success-line] { + display: block; + position: absolute; + z-index: 2; + height: 0.3125em; + border-radius: 0.125em; + background-color: #a5dc86; +} + +.swal2-icon.swal2-success [class^=swal2-success-line][class$=tip] { + top: 2.875em; + left: 0.8125em; + width: 1.5625em; + transform: rotate(45deg); +} + +.swal2-icon.swal2-success [class^=swal2-success-line][class$=long] { + top: 2.375em; + right: 0.5em; + width: 2.9375em; + transform: rotate(-45deg); +} + +.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-tip { + -webkit-animation: swal2-animate-success-line-tip 0.75s; + animation: swal2-animate-success-line-tip 0.75s; +} + +.swal2-icon.swal2-success.swal2-icon-show .swal2-success-line-long { + -webkit-animation: swal2-animate-success-line-long 0.75s; + animation: swal2-animate-success-line-long 0.75s; +} + +.swal2-icon.swal2-success.swal2-icon-show .swal2-success-circular-line-right { + -webkit-animation: swal2-rotate-success-circular-line 4.25s ease-in; + animation: swal2-rotate-success-circular-line 4.25s ease-in; +} + +.swal2-progress-steps { + flex-wrap: wrap; + align-items: center; + max-width: 100%; + margin: 1.25em auto; + padding: 0; + background: inherit; + font-weight: 600; +} + +.swal2-progress-steps li { + display: inline-block; + position: relative; +} + +.swal2-progress-steps .swal2-progress-step { + z-index: 20; + flex-shrink: 0; + width: 2em; + height: 2em; + border-radius: 2em; + background: #2778c4; + color: #fff; + line-height: 2em; + text-align: center; +} + +.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step { + background: #2778c4; +} + +.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step ~ .swal2-progress-step { + background: #add8e6; + color: #fff; +} + +.swal2-progress-steps .swal2-progress-step.swal2-active-progress-step ~ .swal2-progress-step-line { + background: #add8e6; +} + +.swal2-progress-steps .swal2-progress-step-line { + z-index: 10; + flex-shrink: 0; + width: 2.5em; + height: 0.4em; + margin: 0 -1px; + background: #2778c4; +} + +[class^=swal2] { + -webkit-tap-highlight-color: transparent; +} + +.swal2-show { + -webkit-animation: swal2-show 0.3s; + animation: swal2-show 0.3s; +} + +.swal2-hide { + -webkit-animation: swal2-hide 0.15s forwards; + animation: swal2-hide 0.15s forwards; +} + +.swal2-noanimation { + transition: none; +} + +.swal2-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} + +.swal2-rtl .swal2-close { + margin-right: initial; + margin-left: 0; +} + +.swal2-rtl .swal2-timer-progress-bar { + right: 0; + left: auto; +} + +@-webkit-keyframes swal2-toast-show { + 0% { + transform: translateY(-0.625em) rotateZ(2deg); + } + 33% { + transform: translateY(0) rotateZ(-2deg); + } + 66% { + transform: translateY(0.3125em) rotateZ(2deg); + } + 100% { + transform: translateY(0) rotateZ(0deg); + } +} +@keyframes swal2-toast-show { + 0% { + transform: translateY(-0.625em) rotateZ(2deg); + } + 33% { + transform: translateY(0) rotateZ(-2deg); + } + 66% { + transform: translateY(0.3125em) rotateZ(2deg); + } + 100% { + transform: translateY(0) rotateZ(0deg); + } +} +@-webkit-keyframes swal2-toast-hide { + 100% { + transform: rotateZ(1deg); + opacity: 0; + } +} +@keyframes swal2-toast-hide { + 100% { + transform: rotateZ(1deg); + opacity: 0; + } +} +@-webkit-keyframes swal2-toast-animate-success-line-tip { + 0% { + top: 0.5625em; + left: 0.0625em; + width: 0; + } + 54% { + top: 0.125em; + left: 0.125em; + width: 0; + } + 70% { + top: 0.625em; + left: -0.25em; + width: 1.625em; + } + 84% { + top: 1.0625em; + left: 0.75em; + width: 0.5em; + } + 100% { + top: 1.125em; + left: 0.1875em; + width: 0.75em; + } +} +@keyframes swal2-toast-animate-success-line-tip { + 0% { + top: 0.5625em; + left: 0.0625em; + width: 0; + } + 54% { + top: 0.125em; + left: 0.125em; + width: 0; + } + 70% { + top: 0.625em; + left: -0.25em; + width: 1.625em; + } + 84% { + top: 1.0625em; + left: 0.75em; + width: 0.5em; + } + 100% { + top: 1.125em; + left: 0.1875em; + width: 0.75em; + } +} +@-webkit-keyframes swal2-toast-animate-success-line-long { + 0% { + top: 1.625em; + right: 1.375em; + width: 0; + } + 65% { + top: 1.25em; + right: 0.9375em; + width: 0; + } + 84% { + top: 0.9375em; + right: 0; + width: 1.125em; + } + 100% { + top: 0.9375em; + right: 0.1875em; + width: 1.375em; + } +} +@keyframes swal2-toast-animate-success-line-long { + 0% { + top: 1.625em; + right: 1.375em; + width: 0; + } + 65% { + top: 1.25em; + right: 0.9375em; + width: 0; + } + 84% { + top: 0.9375em; + right: 0; + width: 1.125em; + } + 100% { + top: 0.9375em; + right: 0.1875em; + width: 1.375em; + } +} +@-webkit-keyframes swal2-show { + 0% { + transform: scale(0.7); + } + 45% { + transform: scale(1.05); + } + 80% { + transform: scale(0.95); + } + 100% { + transform: scale(1); + } +} +@keyframes swal2-show { + 0% { + transform: scale(0.7); + } + 45% { + transform: scale(1.05); + } + 80% { + transform: scale(0.95); + } + 100% { + transform: scale(1); + } +} +@-webkit-keyframes swal2-hide { + 0% { + transform: scale(1); + opacity: 1; + } + 100% { + transform: scale(0.5); + opacity: 0; + } +} +@keyframes swal2-hide { + 0% { + transform: scale(1); + opacity: 1; + } + 100% { + transform: scale(0.5); + opacity: 0; + } +} +@-webkit-keyframes swal2-animate-success-line-tip { + 0% { + top: 1.1875em; + left: 0.0625em; + width: 0; + } + 54% { + top: 1.0625em; + left: 0.125em; + width: 0; + } + 70% { + top: 2.1875em; + left: -0.375em; + width: 3.125em; + } + 84% { + top: 3em; + left: 1.3125em; + width: 1.0625em; + } + 100% { + top: 2.8125em; + left: 0.8125em; + width: 1.5625em; + } +} +@keyframes swal2-animate-success-line-tip { + 0% { + top: 1.1875em; + left: 0.0625em; + width: 0; + } + 54% { + top: 1.0625em; + left: 0.125em; + width: 0; + } + 70% { + top: 2.1875em; + left: -0.375em; + width: 3.125em; + } + 84% { + top: 3em; + left: 1.3125em; + width: 1.0625em; + } + 100% { + top: 2.8125em; + left: 0.8125em; + width: 1.5625em; + } +} +@-webkit-keyframes swal2-animate-success-line-long { + 0% { + top: 3.375em; + right: 2.875em; + width: 0; + } + 65% { + top: 3.375em; + right: 2.875em; + width: 0; + } + 84% { + top: 2.1875em; + right: 0; + width: 3.4375em; + } + 100% { + top: 2.375em; + right: 0.5em; + width: 2.9375em; + } +} +@keyframes swal2-animate-success-line-long { + 0% { + top: 3.375em; + right: 2.875em; + width: 0; + } + 65% { + top: 3.375em; + right: 2.875em; + width: 0; + } + 84% { + top: 2.1875em; + right: 0; + width: 3.4375em; + } + 100% { + top: 2.375em; + right: 0.5em; + width: 2.9375em; + } +} +@-webkit-keyframes swal2-rotate-success-circular-line { + 0% { + transform: rotate(-45deg); + } + 5% { + transform: rotate(-45deg); + } + 12% { + transform: rotate(-405deg); + } + 100% { + transform: rotate(-405deg); + } +} +@keyframes swal2-rotate-success-circular-line { + 0% { + transform: rotate(-45deg); + } + 5% { + transform: rotate(-45deg); + } + 12% { + transform: rotate(-405deg); + } + 100% { + transform: rotate(-405deg); + } +} +@-webkit-keyframes swal2-animate-error-x-mark { + 0% { + margin-top: 1.625em; + transform: scale(0.4); + opacity: 0; + } + 50% { + margin-top: 1.625em; + transform: scale(0.4); + opacity: 0; + } + 80% { + margin-top: -0.375em; + transform: scale(1.15); + } + 100% { + margin-top: 0; + transform: scale(1); + opacity: 1; + } +} +@keyframes swal2-animate-error-x-mark { + 0% { + margin-top: 1.625em; + transform: scale(0.4); + opacity: 0; + } + 50% { + margin-top: 1.625em; + transform: scale(0.4); + opacity: 0; + } + 80% { + margin-top: -0.375em; + transform: scale(1.15); + } + 100% { + margin-top: 0; + transform: scale(1); + opacity: 1; + } +} +@-webkit-keyframes swal2-animate-error-icon { + 0% { + transform: rotateX(100deg); + opacity: 0; + } + 100% { + transform: rotateX(0deg); + opacity: 1; + } +} +@keyframes swal2-animate-error-icon { + 0% { + transform: rotateX(100deg); + opacity: 0; + } + 100% { + transform: rotateX(0deg); + opacity: 1; + } +} +@-webkit-keyframes swal2-rotate-loading { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +@keyframes swal2-rotate-loading { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +@-webkit-keyframes swal2-animate-question-mark { + 0% { + transform: rotateY(-360deg); + } + 100% { + transform: rotateY(0); + } +} +@keyframes swal2-animate-question-mark { + 0% { + transform: rotateY(-360deg); + } + 100% { + transform: rotateY(0); + } +} +@-webkit-keyframes swal2-animate-i-mark { + 0% { + transform: rotateZ(45deg); + opacity: 0; + } + 25% { + transform: rotateZ(-25deg); + opacity: 0.4; + } + 50% { + transform: rotateZ(15deg); + opacity: 0.8; + } + 75% { + transform: rotateZ(-5deg); + opacity: 1; + } + 100% { + transform: rotateX(0); + opacity: 1; + } +} +@keyframes swal2-animate-i-mark { + 0% { + transform: rotateZ(45deg); + opacity: 0; + } + 25% { + transform: rotateZ(-25deg); + opacity: 0.4; + } + 50% { + transform: rotateZ(15deg); + opacity: 0.8; + } + 75% { + transform: rotateZ(-5deg); + opacity: 1; + } + 100% { + transform: rotateX(0); + opacity: 1; + } +} +body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) { + overflow: hidden; +} + +body.swal2-height-auto { + height: auto !important; +} + +body.swal2-no-backdrop .swal2-container { + background-color: transparent !important; + pointer-events: none; +} + +body.swal2-no-backdrop .swal2-container .swal2-popup { + pointer-events: all; +} + +body.swal2-no-backdrop .swal2-container .swal2-modal { + box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); +} + +@media print { + body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) { + overflow-y: scroll !important; + } + body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) > [aria-hidden=true] { + display: none; + } + body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown) .swal2-container { + position: static !important; + } +} +body.swal2-toast-shown .swal2-container { + box-sizing: border-box; + width: 360px; + max-width: 100%; + background-color: transparent; + pointer-events: none; +} + +body.swal2-toast-shown .swal2-container.swal2-top { + top: 0; + right: auto; + bottom: auto; + left: 50%; + transform: translateX(-50%); +} + +body.swal2-toast-shown .swal2-container.swal2-top-end, body.swal2-toast-shown .swal2-container.swal2-top-right { + top: 0; + right: 0; + bottom: auto; + left: auto; +} + +body.swal2-toast-shown .swal2-container.swal2-top-start, body.swal2-toast-shown .swal2-container.swal2-top-left { + top: 0; + right: auto; + bottom: auto; + left: 0; +} + +body.swal2-toast-shown .swal2-container.swal2-center-start, body.swal2-toast-shown .swal2-container.swal2-center-left { + top: 50%; + right: auto; + bottom: auto; + left: 0; + transform: translateY(-50%); +} + +body.swal2-toast-shown .swal2-container.swal2-center { + top: 50%; + right: auto; + bottom: auto; + left: 50%; + transform: translate(-50%, -50%); +} + +body.swal2-toast-shown .swal2-container.swal2-center-end, body.swal2-toast-shown .swal2-container.swal2-center-right { + top: 50%; + right: 0; + bottom: auto; + left: auto; + transform: translateY(-50%); +} + +body.swal2-toast-shown .swal2-container.swal2-bottom-start, body.swal2-toast-shown .swal2-container.swal2-bottom-left { + top: auto; + right: auto; + bottom: 0; + left: 0; +} + +body.swal2-toast-shown .swal2-container.swal2-bottom { + top: auto; + right: auto; + bottom: 0; + left: 50%; + transform: translateX(-50%); +} + +body.swal2-toast-shown .swal2-container.swal2-bottom-end, body.swal2-toast-shown .swal2-container.swal2-bottom-right { + top: auto; + right: 0; + bottom: 0; + left: auto; +} + +.la, +.las, +.lar, +.lal, +.lad, +.lab { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; +} + +.la-lg { + font-size: 1.33333em; + line-height: 0.75em; + vertical-align: -0.0667em; +} + +.la-xs { + font-size: 0.75em; +} + +.la-sm { + font-size: 0.875em; +} + +.la-1x { + font-size: 1em; +} + +.la-2x { + font-size: 2em; +} + +.la-3x { + font-size: 3em; +} + +.la-4x { + font-size: 4em; +} + +.la-5x { + font-size: 5em; +} + +.la-6x { + font-size: 6em; +} + +.la-7x { + font-size: 7em; +} + +.la-8x { + font-size: 8em; +} + +.la-9x { + font-size: 9em; +} + +.la-10x { + font-size: 10em; +} + +.la-fw { + text-align: center; + width: 1.25em; +} + +.la-ul { + list-style-type: none; + margin-left: 2.5em; + padding-left: 0; +} + +.la-ul > li { + position: relative; +} + +.la-li { + left: -2em; + position: absolute; + text-align: center; + width: 2em; + line-height: inherit; +} + +.la-border { + border: solid 0.08em #eee; + border-radius: 0.1em; + padding: 0.2em 0.25em 0.15em; +} + +.la-pull-left { + float: left; +} + +.la-pull-right { + float: right; +} + +.la.la-pull-left, +.las.la-pull-left, +.lar.la-pull-left, +.lal.la-pull-left, +.lab.la-pull-left { + margin-right: 0.3em; +} + +.la.la-pull-right, +.las.la-pull-right, +.lar.la-pull-right, +.lal.la-pull-right, +.lab.la-pull-right { + margin-left: 0.3em; +} + +.la-spin { + -webkit-animation: la-spin 2s infinite linear; + animation: la-spin 2s infinite linear; +} + +.la-pulse { + -webkit-animation: la-spin 1s infinite steps(8); + animation: la-spin 1s infinite steps(8); +} + +@-webkit-keyframes la-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@keyframes la-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +.la-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); +} + +.la-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); +} + +.la-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + transform: rotate(270deg); +} + +.la-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +.la-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + transform: scale(1, -1); +} + +.la-flip-both, .la-flip-horizontal.la-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(-1, -1); + transform: scale(-1, -1); +} + +:root .la-rotate-90, +:root .la-rotate-180, +:root .la-rotate-270, +:root .la-flip-horizontal, +:root .la-flip-vertical, +:root .la-flip-both { + -webkit-filter: none; + filter: none; +} + +.la-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2.5em; +} + +.la-stack-1x, +.la-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; +} + +.la-stack-1x { + line-height: inherit; +} + +.la-stack-2x { + font-size: 2em; +} + +.la-inverse { + color: #fff; +} + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen +readers do not read off random characters that represent icons */ +.la-500px:before { + content: "\f26e"; +} + +.la-accessible-icon:before { + content: "\f368"; +} + +.la-accusoft:before { + content: "\f369"; +} + +.la-acquisitions-incorporated:before { + content: "\f6af"; +} + +.la-ad:before { + content: "\f641"; +} + +.la-address-book:before { + content: "\f2b9"; +} + +.la-address-card:before { + content: "\f2bb"; +} + +.la-adjust:before { + content: "\f042"; +} + +.la-adn:before { + content: "\f170"; +} + +.la-adobe:before { + content: "\f778"; +} + +.la-adversal:before { + content: "\f36a"; +} + +.la-affiliatetheme:before { + content: "\f36b"; +} + +.la-air-freshener:before { + content: "\f5d0"; +} + +.la-airbnb:before { + content: "\f834"; +} + +.la-algolia:before { + content: "\f36c"; +} + +.la-align-center:before { + content: "\f037"; +} + +.la-align-justify:before { + content: "\f039"; +} + +.la-align-left:before { + content: "\f036"; +} + +.la-align-right:before { + content: "\f038"; +} + +.la-alipay:before { + content: "\f642"; +} + +.la-allergies:before { + content: "\f461"; +} + +.la-amazon:before { + content: "\f270"; +} + +.la-amazon-pay:before { + content: "\f42c"; +} + +.la-ambulance:before { + content: "\f0f9"; +} + +.la-american-sign-language-interpreting:before { + content: "\f2a3"; +} + +.la-amilia:before { + content: "\f36d"; +} + +.la-anchor:before { + content: "\f13d"; +} + +.la-android:before { + content: "\f17b"; +} + +.la-angellist:before { + content: "\f209"; +} + +.la-angle-double-down:before { + content: "\f103"; +} + +.la-angle-double-left:before { + content: "\f100"; +} + +.la-angle-double-right:before { + content: "\f101"; +} + +.la-angle-double-up:before { + content: "\f102"; +} + +.la-angle-down:before { + content: "\f107"; +} + +.la-angle-left:before { + content: "\f104"; +} + +.la-angle-right:before { + content: "\f105"; +} + +.la-angle-up:before { + content: "\f106"; +} + +.la-angry:before { + content: "\f556"; +} + +.la-angrycreative:before { + content: "\f36e"; +} + +.la-angular:before { + content: "\f420"; +} + +.la-ankh:before { + content: "\f644"; +} + +.la-app-store:before { + content: "\f36f"; +} + +.la-app-store-ios:before { + content: "\f370"; +} + +.la-apper:before { + content: "\f371"; +} + +.la-apple:before { + content: "\f179"; +} + +.la-apple-alt:before { + content: "\f5d1"; +} + +.la-apple-pay:before { + content: "\f415"; +} + +.la-archive:before { + content: "\f187"; +} + +.la-archway:before { + content: "\f557"; +} + +.la-arrow-alt-circle-down:before { + content: "\f358"; +} + +.la-arrow-alt-circle-left:before { + content: "\f359"; +} + +.la-arrow-alt-circle-right:before { + content: "\f35a"; +} + +.la-arrow-alt-circle-up:before { + content: "\f35b"; +} + +.la-arrow-circle-down:before { + content: "\f0ab"; +} + +.la-arrow-circle-left:before { + content: "\f0a8"; +} + +.la-arrow-circle-right:before { + content: "\f0a9"; +} + +.la-arrow-circle-up:before { + content: "\f0aa"; +} + +.la-arrow-down:before { + content: "\f063"; +} + +.la-arrow-left:before { + content: "\f060"; +} + +.la-arrow-right:before { + content: "\f061"; +} + +.la-arrow-up:before { + content: "\f062"; +} + +.la-arrows-alt:before { + content: "\f0b2"; +} + +.la-arrows-alt-h:before { + content: "\f337"; +} + +.la-arrows-alt-v:before { + content: "\f338"; +} + +.la-artstation:before { + content: "\f77a"; +} + +.la-assistive-listening-systems:before { + content: "\f2a2"; +} + +.la-asterisk:before { + content: "\f069"; +} + +.la-asymmetrik:before { + content: "\f372"; +} + +.la-at:before { + content: "\f1fa"; +} + +.la-atlas:before { + content: "\f558"; +} + +.la-atlassian:before { + content: "\f77b"; +} + +.la-atom:before { + content: "\f5d2"; +} + +.la-audible:before { + content: "\f373"; +} + +.la-audio-description:before { + content: "\f29e"; +} + +.la-autoprefixer:before { + content: "\f41c"; +} + +.la-avianex:before { + content: "\f374"; +} + +.la-aviato:before { + content: "\f421"; +} + +.la-award:before { + content: "\f559"; +} + +.la-aws:before { + content: "\f375"; +} + +.la-baby:before { + content: "\f77c"; +} + +.la-baby-carriage:before { + content: "\f77d"; +} + +.la-backspace:before { + content: "\f55a"; +} + +.la-backward:before { + content: "\f04a"; +} + +.la-bacon:before { + content: "\f7e5"; +} + +.la-balance-scale:before { + content: "\f24e"; +} + +.la-balance-scale-left:before { + content: "\f515"; +} + +.la-balance-scale-right:before { + content: "\f516"; +} + +.la-ban:before { + content: "\f05e"; +} + +.la-band-aid:before { + content: "\f462"; +} + +.la-bandcamp:before { + content: "\f2d5"; +} + +.la-barcode:before { + content: "\f02a"; +} + +.la-bars:before { + content: "\f0c9"; +} + +.la-baseball-ball:before { + content: "\f433"; +} + +.la-basketball-ball:before { + content: "\f434"; +} + +.la-bath:before { + content: "\f2cd"; +} + +.la-battery-empty:before { + content: "\f244"; +} + +.la-battery-full:before { + content: "\f240"; +} + +.la-battery-half:before { + content: "\f242"; +} + +.la-battery-quarter:before { + content: "\f243"; +} + +.la-battery-three-quarters:before { + content: "\f241"; +} + +.la-battle-net:before { + content: "\f835"; +} + +.la-bed:before { + content: "\f236"; +} + +.la-beer:before { + content: "\f0fc"; +} + +.la-behance:before { + content: "\f1b4"; +} + +.la-behance-square:before { + content: "\f1b5"; +} + +.la-bell:before { + content: "\f0f3"; +} + +.la-bell-slash:before { + content: "\f1f6"; +} + +.la-bezier-curve:before { + content: "\f55b"; +} + +.la-bible:before { + content: "\f647"; +} + +.la-bicycle:before { + content: "\f206"; +} + +.la-biking:before { + content: "\f84a"; +} + +.la-bimobject:before { + content: "\f378"; +} + +.la-binoculars:before { + content: "\f1e5"; +} + +.la-biohazard:before { + content: "\f780"; +} + +.la-birthday-cake:before { + content: "\f1fd"; +} + +.la-bitbucket:before { + content: "\f171"; +} + +.la-bitcoin:before { + content: "\f379"; +} + +.la-bity:before { + content: "\f37a"; +} + +.la-black-tie:before { + content: "\f27e"; +} + +.la-blackberry:before { + content: "\f37b"; +} + +.la-blender:before { + content: "\f517"; +} + +.la-blender-phone:before { + content: "\f6b6"; +} + +.la-blind:before { + content: "\f29d"; +} + +.la-blog:before { + content: "\f781"; +} + +.la-blogger:before { + content: "\f37c"; +} + +.la-blogger-b:before { + content: "\f37d"; +} + +.la-bluetooth:before { + content: "\f293"; +} + +.la-bluetooth-b:before { + content: "\f294"; +} + +.la-bold:before { + content: "\f032"; +} + +.la-bolt:before { + content: "\f0e7"; +} + +.la-bomb:before { + content: "\f1e2"; +} + +.la-bone:before { + content: "\f5d7"; +} + +.la-bong:before { + content: "\f55c"; +} + +.la-book:before { + content: "\f02d"; +} + +.la-book-dead:before { + content: "\f6b7"; +} + +.la-book-medical:before { + content: "\f7e6"; +} + +.la-book-open:before { + content: "\f518"; +} + +.la-book-reader:before { + content: "\f5da"; +} + +.la-bookmark:before { + content: "\f02e"; +} + +.la-bootstrap:before { + content: "\f836"; +} + +.la-border-all:before { + content: "\f84c"; +} + +.la-border-none:before { + content: "\f850"; +} + +.la-border-style:before { + content: "\f853"; +} + +.la-bowling-ball:before { + content: "\f436"; +} + +.la-box:before { + content: "\f466"; +} + +.la-box-open:before { + content: "\f49e"; +} + +.la-boxes:before { + content: "\f468"; +} + +.la-braille:before { + content: "\f2a1"; +} + +.la-brain:before { + content: "\f5dc"; +} + +.la-bread-slice:before { + content: "\f7ec"; +} + +.la-briefcase:before { + content: "\f0b1"; +} + +.la-briefcase-medical:before { + content: "\f469"; +} + +.la-broadcast-tower:before { + content: "\f519"; +} + +.la-broom:before { + content: "\f51a"; +} + +.la-brush:before { + content: "\f55d"; +} + +.la-btc:before { + content: "\f15a"; +} + +.la-buffer:before { + content: "\f837"; +} + +.la-bug:before { + content: "\f188"; +} + +.la-building:before { + content: "\f1ad"; +} + +.la-bullhorn:before { + content: "\f0a1"; +} + +.la-bullseye:before { + content: "\f140"; +} + +.la-burn:before { + content: "\f46a"; +} + +.la-buromobelexperte:before { + content: "\f37f"; +} + +.la-bus:before { + content: "\f207"; +} + +.la-bus-alt:before { + content: "\f55e"; +} + +.la-business-time:before { + content: "\f64a"; +} + +.la-buy-n-large:before { + content: "\f8a6"; +} + +.la-buysellads:before { + content: "\f20d"; +} + +.la-calculator:before { + content: "\f1ec"; +} + +.la-calendar:before { + content: "\f133"; +} + +.la-calendar-alt:before { + content: "\f073"; +} + +.la-calendar-check:before { + content: "\f274"; +} + +.la-calendar-day:before { + content: "\f783"; +} + +.la-calendar-minus:before { + content: "\f272"; +} + +.la-calendar-plus:before { + content: "\f271"; +} + +.la-calendar-times:before { + content: "\f273"; +} + +.la-calendar-week:before { + content: "\f784"; +} + +.la-camera:before { + content: "\f030"; +} + +.la-camera-retro:before { + content: "\f083"; +} + +.la-campground:before { + content: "\f6bb"; +} + +.la-canadian-maple-leaf:before { + content: "\f785"; +} + +.la-candy-cane:before { + content: "\f786"; +} + +.la-cannabis:before { + content: "\f55f"; +} + +.la-capsules:before { + content: "\f46b"; +} + +.la-car:before { + content: "\f1b9"; +} + +.la-car-alt:before { + content: "\f5de"; +} + +.la-car-battery:before { + content: "\f5df"; +} + +.la-car-crash:before { + content: "\f5e1"; +} + +.la-car-side:before { + content: "\f5e4"; +} + +.la-caret-down:before { + content: "\f0d7"; +} + +.la-caret-left:before { + content: "\f0d9"; +} + +.la-caret-right:before { + content: "\f0da"; +} + +.la-caret-square-down:before { + content: "\f150"; +} + +.la-caret-square-left:before { + content: "\f191"; +} + +.la-caret-square-right:before { + content: "\f152"; +} + +.la-caret-square-up:before { + content: "\f151"; +} + +.la-caret-up:before { + content: "\f0d8"; +} + +.la-carrot:before { + content: "\f787"; +} + +.la-cart-arrow-down:before { + content: "\f218"; +} + +.la-cart-plus:before { + content: "\f217"; +} + +.la-cash-register:before { + content: "\f788"; +} + +.la-cat:before { + content: "\f6be"; +} + +.la-cc-amazon-pay:before { + content: "\f42d"; +} + +.la-cc-amex:before { + content: "\f1f3"; +} + +.la-cc-apple-pay:before { + content: "\f416"; +} + +.la-cc-diners-club:before { + content: "\f24c"; +} + +.la-cc-discover:before { + content: "\f1f2"; +} + +.la-cc-jcb:before { + content: "\f24b"; +} + +.la-cc-mastercard:before { + content: "\f1f1"; +} + +.la-cc-paypal:before { + content: "\f1f4"; +} + +.la-cc-stripe:before { + content: "\f1f5"; +} + +.la-cc-visa:before { + content: "\f1f0"; +} + +.la-centercode:before { + content: "\f380"; +} + +.la-centos:before { + content: "\f789"; +} + +.la-certificate:before { + content: "\f0a3"; +} + +.la-chair:before { + content: "\f6c0"; +} + +.la-chalkboard:before { + content: "\f51b"; +} + +.la-chalkboard-teacher:before { + content: "\f51c"; +} + +.la-charging-station:before { + content: "\f5e7"; +} + +.la-chart-area:before { + content: "\f1fe"; +} + +.la-chart-bar:before { + content: "\f080"; +} + +.la-chart-line:before { + content: "\f201"; +} + +.la-chart-pie:before { + content: "\f200"; +} + +.la-check:before { + content: "\f00c"; +} + +.la-check-circle:before { + content: "\f058"; +} + +.la-check-double:before { + content: "\f560"; +} + +.la-check-square:before { + content: "\f14a"; +} + +.la-cheese:before { + content: "\f7ef"; +} + +.la-chess:before { + content: "\f439"; +} + +.la-chess-bishop:before { + content: "\f43a"; +} + +.la-chess-board:before { + content: "\f43c"; +} + +.la-chess-king:before { + content: "\f43f"; +} + +.la-chess-knight:before { + content: "\f441"; +} + +.la-chess-pawn:before { + content: "\f443"; +} + +.la-chess-queen:before { + content: "\f445"; +} + +.la-chess-rook:before { + content: "\f447"; +} + +.la-chevron-circle-down:before { + content: "\f13a"; +} + +.la-chevron-circle-left:before { + content: "\f137"; +} + +.la-chevron-circle-right:before { + content: "\f138"; +} + +.la-chevron-circle-up:before { + content: "\f139"; +} + +.la-chevron-down:before { + content: "\f078"; +} + +.la-chevron-left:before { + content: "\f053"; +} + +.la-chevron-right:before { + content: "\f054"; +} + +.la-chevron-up:before { + content: "\f077"; +} + +.la-child:before { + content: "\f1ae"; +} + +.la-chrome:before { + content: "\f268"; +} + +.la-chromecast:before { + content: "\f838"; +} + +.la-church:before { + content: "\f51d"; +} + +.la-circle:before { + content: "\f111"; +} + +.la-circle-notch:before { + content: "\f1ce"; +} + +.la-city:before { + content: "\f64f"; +} + +.la-clinic-medical:before { + content: "\f7f2"; +} + +.la-clipboard:before { + content: "\f328"; +} + +.la-clipboard-check:before { + content: "\f46c"; +} + +.la-clipboard-list:before { + content: "\f46d"; +} + +.la-clock:before { + content: "\f017"; +} + +.la-clone:before { + content: "\f24d"; +} + +.la-closed-captioning:before { + content: "\f20a"; +} + +.la-cloud:before { + content: "\f0c2"; +} + +.la-cloud-download-alt:before { + content: "\f381"; +} + +.la-cloud-meatball:before { + content: "\f73b"; +} + +.la-cloud-moon:before { + content: "\f6c3"; +} + +.la-cloud-moon-rain:before { + content: "\f73c"; +} + +.la-cloud-rain:before { + content: "\f73d"; +} + +.la-cloud-showers-heavy:before { + content: "\f740"; +} + +.la-cloud-sun:before { + content: "\f6c4"; +} + +.la-cloud-sun-rain:before { + content: "\f743"; +} + +.la-cloud-upload-alt:before { + content: "\f382"; +} + +.la-cloudscale:before { + content: "\f383"; +} + +.la-cloudsmith:before { + content: "\f384"; +} + +.la-cloudversify:before { + content: "\f385"; +} + +.la-cocktail:before { + content: "\f561"; +} + +.la-code:before { + content: "\f121"; +} + +.la-code-branch:before { + content: "\f126"; +} + +.la-codepen:before { + content: "\f1cb"; +} + +.la-codiepie:before { + content: "\f284"; +} + +.la-coffee:before { + content: "\f0f4"; +} + +.la-cog:before { + content: "\f013"; +} + +.la-cogs:before { + content: "\f085"; +} + +.la-coins:before { + content: "\f51e"; +} + +.la-columns:before { + content: "\f0db"; +} + +.la-comment:before { + content: "\f075"; +} + +.la-comment-alt:before { + content: "\f27a"; +} + +.la-comment-dollar:before { + content: "\f651"; +} + +.la-comment-dots:before { + content: "\f4ad"; +} + +.la-comment-medical:before { + content: "\f7f5"; +} + +.la-comment-slash:before { + content: "\f4b3"; +} + +.la-comments:before { + content: "\f086"; +} + +.la-comments-dollar:before { + content: "\f653"; +} + +.la-compact-disc:before { + content: "\f51f"; +} + +.la-compass:before { + content: "\f14e"; +} + +.la-compress:before { + content: "\f066"; +} + +.la-compress-arrows-alt:before { + content: "\f78c"; +} + +.la-concierge-bell:before { + content: "\f562"; +} + +.la-confluence:before { + content: "\f78d"; +} + +.la-connectdevelop:before { + content: "\f20e"; +} + +.la-contao:before { + content: "\f26d"; +} + +.la-cookie:before { + content: "\f563"; +} + +.la-cookie-bite:before { + content: "\f564"; +} + +.la-copy:before { + content: "\f0c5"; +} + +.la-copyright:before { + content: "\f1f9"; +} + +.la-cotton-bureau:before { + content: "\f89e"; +} + +.la-couch:before { + content: "\f4b8"; +} + +.la-cpanel:before { + content: "\f388"; +} + +.la-creative-commons:before { + content: "\f25e"; +} + +.la-creative-commons-by:before { + content: "\f4e7"; +} + +.la-creative-commons-nc:before { + content: "\f4e8"; +} + +.la-creative-commons-nc-eu:before { + content: "\f4e9"; +} + +.la-creative-commons-nc-jp:before { + content: "\f4ea"; +} + +.la-creative-commons-nd:before { + content: "\f4eb"; +} + +.la-creative-commons-pd:before { + content: "\f4ec"; +} + +.la-creative-commons-pd-alt:before { + content: "\f4ed"; +} + +.la-creative-commons-remix:before { + content: "\f4ee"; +} + +.la-creative-commons-sa:before { + content: "\f4ef"; +} + +.la-creative-commons-sampling:before { + content: "\f4f0"; +} + +.la-creative-commons-sampling-plus:before { + content: "\f4f1"; +} + +.la-creative-commons-share:before { + content: "\f4f2"; +} + +.la-creative-commons-zero:before { + content: "\f4f3"; +} + +.la-credit-card:before { + content: "\f09d"; +} + +.la-critical-role:before { + content: "\f6c9"; +} + +.la-crop:before { + content: "\f125"; +} + +.la-crop-alt:before { + content: "\f565"; +} + +.la-cross:before { + content: "\f654"; +} + +.la-crosshairs:before { + content: "\f05b"; +} + +.la-crow:before { + content: "\f520"; +} + +.la-crown:before { + content: "\f521"; +} + +.la-crutch:before { + content: "\f7f7"; +} + +.la-css3:before { + content: "\f13c"; +} + +.la-css3-alt:before { + content: "\f38b"; +} + +.la-cube:before { + content: "\f1b2"; +} + +.la-cubes:before { + content: "\f1b3"; +} + +.la-cut:before { + content: "\f0c4"; +} + +.la-cuttlefish:before { + content: "\f38c"; +} + +.la-d-and-d:before { + content: "\f38d"; +} + +.la-d-and-d-beyond:before { + content: "\f6ca"; +} + +.la-dashcube:before { + content: "\f210"; +} + +.la-database:before { + content: "\f1c0"; +} + +.la-deaf:before { + content: "\f2a4"; +} + +.la-delicious:before { + content: "\f1a5"; +} + +.la-democrat:before { + content: "\f747"; +} + +.la-deploydog:before { + content: "\f38e"; +} + +.la-deskpro:before { + content: "\f38f"; +} + +.la-desktop:before { + content: "\f108"; +} + +.la-dev:before { + content: "\f6cc"; +} + +.la-deviantart:before { + content: "\f1bd"; +} + +.la-dharmachakra:before { + content: "\f655"; +} + +.la-dhl:before { + content: "\f790"; +} + +.la-diagnoses:before { + content: "\f470"; +} + +.la-diaspora:before { + content: "\f791"; +} + +.la-dice:before { + content: "\f522"; +} + +.la-dice-d20:before { + content: "\f6cf"; +} + +.la-dice-d6:before { + content: "\f6d1"; +} + +.la-dice-five:before { + content: "\f523"; +} + +.la-dice-four:before { + content: "\f524"; +} + +.la-dice-one:before { + content: "\f525"; +} + +.la-dice-six:before { + content: "\f526"; +} + +.la-dice-three:before { + content: "\f527"; +} + +.la-dice-two:before { + content: "\f528"; +} + +.la-digg:before { + content: "\f1a6"; +} + +.la-digital-ocean:before { + content: "\f391"; +} + +.la-digital-tachograph:before { + content: "\f566"; +} + +.la-directions:before { + content: "\f5eb"; +} + +.la-discord:before { + content: "\f392"; +} + +.la-discourse:before { + content: "\f393"; +} + +.la-divide:before { + content: "\f529"; +} + +.la-dizzy:before { + content: "\f567"; +} + +.la-dna:before { + content: "\f471"; +} + +.la-dochub:before { + content: "\f394"; +} + +.la-docker:before { + content: "\f395"; +} + +.la-dog:before { + content: "\f6d3"; +} + +.la-dollar-sign:before { + content: "\f155"; +} + +.la-dolly:before { + content: "\f472"; +} + +.la-dolly-flatbed:before { + content: "\f474"; +} + +.la-donate:before { + content: "\f4b9"; +} + +.la-door-closed:before { + content: "\f52a"; +} + +.la-door-open:before { + content: "\f52b"; +} + +.la-dot-circle:before { + content: "\f192"; +} + +.la-dove:before { + content: "\f4ba"; +} + +.la-download:before { + content: "\f019"; +} + +.la-draft2digital:before { + content: "\f396"; +} + +.la-drafting-compass:before { + content: "\f568"; +} + +.la-dragon:before { + content: "\f6d5"; +} + +.la-draw-polygon:before { + content: "\f5ee"; +} + +.la-dribbble:before { + content: "\f17d"; +} + +.la-dribbble-square:before { + content: "\f397"; +} + +.la-dropbox:before { + content: "\f16b"; +} + +.la-drum:before { + content: "\f569"; +} + +.la-drum-steelpan:before { + content: "\f56a"; +} + +.la-drumstick-bite:before { + content: "\f6d7"; +} + +.la-drupal:before { + content: "\f1a9"; +} + +.la-dumbbell:before { + content: "\f44b"; +} + +.la-dumpster:before { + content: "\f793"; +} + +.la-dumpster-fire:before { + content: "\f794"; +} + +.la-dungeon:before { + content: "\f6d9"; +} + +.la-dyalog:before { + content: "\f399"; +} + +.la-earlybirds:before { + content: "\f39a"; +} + +.la-ebay:before { + content: "\f4f4"; +} + +.la-edge:before { + content: "\f282"; +} + +.la-edit:before { + content: "\f044"; +} + +.la-egg:before { + content: "\f7fb"; +} + +.la-eject:before { + content: "\f052"; +} + +.la-elementor:before { + content: "\f430"; +} + +.la-ellipsis-h:before { + content: "\f141"; +} + +.la-ellipsis-v:before { + content: "\f142"; +} + +.la-ello:before { + content: "\f5f1"; +} + +.la-ember:before { + content: "\f423"; +} + +.la-empire:before { + content: "\f1d1"; +} + +.la-envelope:before { + content: "\f0e0"; +} + +.la-envelope-open:before { + content: "\f2b6"; +} + +.la-envelope-open-text:before { + content: "\f658"; +} + +.la-envelope-square:before { + content: "\f199"; +} + +.la-envira:before { + content: "\f299"; +} + +.la-equals:before { + content: "\f52c"; +} + +.la-eraser:before { + content: "\f12d"; +} + +.la-erlang:before { + content: "\f39d"; +} + +.la-ethereum:before { + content: "\f42e"; +} + +.la-ethernet:before { + content: "\f796"; +} + +.la-etsy:before { + content: "\f2d7"; +} + +.la-euro-sign:before { + content: "\f153"; +} + +.la-evernote:before { + content: "\f839"; +} + +.la-exchange-alt:before { + content: "\f362"; +} + +.la-exclamation:before { + content: "\f12a"; +} + +.la-exclamation-circle:before { + content: "\f06a"; +} + +.la-exclamation-triangle:before { + content: "\f071"; +} + +.la-expand:before { + content: "\f065"; +} + +.la-expand-arrows-alt:before { + content: "\f31e"; +} + +.la-expeditedssl:before { + content: "\f23e"; +} + +.la-external-link-alt:before { + content: "\f35d"; +} + +.la-external-link-square-alt:before { + content: "\f360"; +} + +.la-eye:before { + content: "\f06e"; +} + +.la-eye-dropper:before { + content: "\f1fb"; +} + +.la-eye-slash:before { + content: "\f070"; +} + +.la-facebook:before { + content: "\f09a"; +} + +.la-facebook-f:before { + content: "\f39e"; +} + +.la-facebook-messenger:before { + content: "\f39f"; +} + +.la-facebook-square:before { + content: "\f082"; +} + +.la-fan:before { + content: "\f863"; +} + +.la-fantasy-flight-games:before { + content: "\f6dc"; +} + +.la-fast-backward:before { + content: "\f049"; +} + +.la-fast-forward:before { + content: "\f050"; +} + +.la-fax:before { + content: "\f1ac"; +} + +.la-feather:before { + content: "\f52d"; +} + +.la-feather-alt:before { + content: "\f56b"; +} + +.la-fedex:before { + content: "\f797"; +} + +.la-fedora:before { + content: "\f798"; +} + +.la-female:before { + content: "\f182"; +} + +.la-fighter-jet:before { + content: "\f0fb"; +} + +.la-figma:before { + content: "\f799"; +} + +.la-file:before { + content: "\f15b"; +} + +.la-file-alt:before { + content: "\f15c"; +} + +.la-file-archive:before { + content: "\f1c6"; +} + +.la-file-audio:before { + content: "\f1c7"; +} + +.la-file-code:before { + content: "\f1c9"; +} + +.la-file-contract:before { + content: "\f56c"; +} + +.la-file-csv:before { + content: "\f6dd"; +} + +.la-file-download:before { + content: "\f56d"; +} + +.la-file-excel:before { + content: "\f1c3"; +} + +.la-file-export:before { + content: "\f56e"; +} + +.la-file-image:before { + content: "\f1c5"; +} + +.la-file-import:before { + content: "\f56f"; +} + +.la-file-invoice:before { + content: "\f570"; +} + +.la-file-invoice-dollar:before { + content: "\f571"; +} + +.la-file-medical:before { + content: "\f477"; +} + +.la-file-medical-alt:before { + content: "\f478"; +} + +.la-file-pdf:before { + content: "\f1c1"; +} + +.la-file-powerpoint:before { + content: "\f1c4"; +} + +.la-file-prescription:before { + content: "\f572"; +} + +.la-file-signature:before { + content: "\f573"; +} + +.la-file-upload:before { + content: "\f574"; +} + +.la-file-video:before { + content: "\f1c8"; +} + +.la-file-word:before { + content: "\f1c2"; +} + +.la-fill:before { + content: "\f575"; +} + +.la-fill-drip:before { + content: "\f576"; +} + +.la-film:before { + content: "\f008"; +} + +.la-filter:before { + content: "\f0b0"; +} + +.la-fingerprint:before { + content: "\f577"; +} + +.la-fire:before { + content: "\f06d"; +} + +.la-fire-alt:before { + content: "\f7e4"; +} + +.la-fire-extinguisher:before { + content: "\f134"; +} + +.la-firefox:before { + content: "\f269"; +} + +.la-first-aid:before { + content: "\f479"; +} + +.la-first-order:before { + content: "\f2b0"; +} + +.la-first-order-alt:before { + content: "\f50a"; +} + +.la-firstdraft:before { + content: "\f3a1"; +} + +.la-fish:before { + content: "\f578"; +} + +.la-fist-raised:before { + content: "\f6de"; +} + +.la-flag:before { + content: "\f024"; +} + +.la-flag-checkered:before { + content: "\f11e"; +} + +.la-flag-usa:before { + content: "\f74d"; +} + +.la-flask:before { + content: "\f0c3"; +} + +.la-flickr:before { + content: "\f16e"; +} + +.la-flipboard:before { + content: "\f44d"; +} + +.la-flushed:before { + content: "\f579"; +} + +.la-fly:before { + content: "\f417"; +} + +.la-folder:before { + content: "\f07b"; +} + +.la-folder-minus:before { + content: "\f65d"; +} + +.la-folder-open:before { + content: "\f07c"; +} + +.la-folder-plus:before { + content: "\f65e"; +} + +.la-font:before { + content: "\f031"; +} + +.la-font-awesome:before { + content: "\f2b4"; +} + +.la-font-awesome-alt:before { + content: "\f35c"; +} + +.la-font-awesome-flag:before { + content: "\f425"; +} + +.la-font-awesome-logo-full:before { + content: "\f4e6"; +} + +.la-fonticons:before { + content: "\f280"; +} + +.la-fonticons-fi:before { + content: "\f3a2"; +} + +.la-football-ball:before { + content: "\f44e"; +} + +.la-fort-awesome:before { + content: "\f286"; +} + +.la-fort-awesome-alt:before { + content: "\f3a3"; +} + +.la-forumbee:before { + content: "\f211"; +} + +.la-forward:before { + content: "\f04e"; +} + +.la-foursquare:before { + content: "\f180"; +} + +.la-free-code-camp:before { + content: "\f2c5"; +} + +.la-freebsd:before { + content: "\f3a4"; +} + +.la-frog:before { + content: "\f52e"; +} + +.la-frown:before { + content: "\f119"; +} + +.la-frown-open:before { + content: "\f57a"; +} + +.la-fulcrum:before { + content: "\f50b"; +} + +.la-funnel-dollar:before { + content: "\f662"; +} + +.la-futbol:before { + content: "\f1e3"; +} + +.la-galactic-republic:before { + content: "\f50c"; +} + +.la-galactic-senate:before { + content: "\f50d"; +} + +.la-gamepad:before { + content: "\f11b"; +} + +.la-gas-pump:before { + content: "\f52f"; +} + +.la-gavel:before { + content: "\f0e3"; +} + +.la-gem:before { + content: "\f3a5"; +} + +.la-genderless:before { + content: "\f22d"; +} + +.la-get-pocket:before { + content: "\f265"; +} + +.la-gg:before { + content: "\f260"; +} + +.la-gg-circle:before { + content: "\f261"; +} + +.la-ghost:before { + content: "\f6e2"; +} + +.la-gift:before { + content: "\f06b"; +} + +.la-gifts:before { + content: "\f79c"; +} + +.la-git:before { + content: "\f1d3"; +} + +.la-git-alt:before { + content: "\f841"; +} + +.la-git-square:before { + content: "\f1d2"; +} + +.la-github:before { + content: "\f09b"; +} + +.la-github-alt:before { + content: "\f113"; +} + +.la-github-square:before { + content: "\f092"; +} + +.la-gitkraken:before { + content: "\f3a6"; +} + +.la-gitlab:before { + content: "\f296"; +} + +.la-gitter:before { + content: "\f426"; +} + +.la-glass-cheers:before { + content: "\f79f"; +} + +.la-glass-martini:before { + content: "\f000"; +} + +.la-glass-martini-alt:before { + content: "\f57b"; +} + +.la-glass-whiskey:before { + content: "\f7a0"; +} + +.la-glasses:before { + content: "\f530"; +} + +.la-glide:before { + content: "\f2a5"; +} + +.la-glide-g:before { + content: "\f2a6"; +} + +.la-globe:before { + content: "\f0ac"; +} + +.la-globe-africa:before { + content: "\f57c"; +} + +.la-globe-americas:before { + content: "\f57d"; +} + +.la-globe-asia:before { + content: "\f57e"; +} + +.la-globe-europe:before { + content: "\f7a2"; +} + +.la-gofore:before { + content: "\f3a7"; +} + +.la-golf-ball:before { + content: "\f450"; +} + +.la-goodreads:before { + content: "\f3a8"; +} + +.la-goodreads-g:before { + content: "\f3a9"; +} + +.la-google:before { + content: "\f1a0"; +} + +.la-google-drive:before { + content: "\f3aa"; +} + +.la-google-play:before { + content: "\f3ab"; +} + +.la-google-plus:before { + content: "\f2b3"; +} + +.la-google-plus-g:before { + content: "\f0d5"; +} + +.la-google-plus-square:before { + content: "\f0d4"; +} + +.la-google-wallet:before { + content: "\f1ee"; +} + +.la-gopuram:before { + content: "\f664"; +} + +.la-graduation-cap:before { + content: "\f19d"; +} + +.la-gratipay:before { + content: "\f184"; +} + +.la-grav:before { + content: "\f2d6"; +} + +.la-greater-than:before { + content: "\f531"; +} + +.la-greater-than-equal:before { + content: "\f532"; +} + +.la-grimace:before { + content: "\f57f"; +} + +.la-grin:before { + content: "\f580"; +} + +.la-grin-alt:before { + content: "\f581"; +} + +.la-grin-beam:before { + content: "\f582"; +} + +.la-grin-beam-sweat:before { + content: "\f583"; +} + +.la-grin-hearts:before { + content: "\f584"; +} + +.la-grin-squint:before { + content: "\f585"; +} + +.la-grin-squint-tears:before { + content: "\f586"; +} + +.la-grin-stars:before { + content: "\f587"; +} + +.la-grin-tears:before { + content: "\f588"; +} + +.la-grin-tongue:before { + content: "\f589"; +} + +.la-grin-tongue-squint:before { + content: "\f58a"; +} + +.la-grin-tongue-wink:before { + content: "\f58b"; +} + +.la-grin-wink:before { + content: "\f58c"; +} + +.la-grip-horizontal:before { + content: "\f58d"; +} + +.la-grip-lines:before { + content: "\f7a4"; +} + +.la-grip-lines-vertical:before { + content: "\f7a5"; +} + +.la-grip-vertical:before { + content: "\f58e"; +} + +.la-gripfire:before { + content: "\f3ac"; +} + +.la-grunt:before { + content: "\f3ad"; +} + +.la-guitar:before { + content: "\f7a6"; +} + +.la-gulp:before { + content: "\f3ae"; +} + +.la-h-square:before { + content: "\f0fd"; +} + +.la-hacker-news:before { + content: "\f1d4"; +} + +.la-hacker-news-square:before { + content: "\f3af"; +} + +.la-hackerrank:before { + content: "\f5f7"; +} + +.la-hamburger:before { + content: "\f805"; +} + +.la-hammer:before { + content: "\f6e3"; +} + +.la-hamsa:before { + content: "\f665"; +} + +.la-hand-holding:before { + content: "\f4bd"; +} + +.la-hand-holding-heart:before { + content: "\f4be"; +} + +.la-hand-holding-usd:before { + content: "\f4c0"; +} + +.la-hand-lizard:before { + content: "\f258"; +} + +.la-hand-middle-finger:before { + content: "\f806"; +} + +.la-hand-paper:before { + content: "\f256"; +} + +.la-hand-peace:before { + content: "\f25b"; +} + +.la-hand-point-down:before { + content: "\f0a7"; +} + +.la-hand-point-left:before { + content: "\f0a5"; +} + +.la-hand-point-right:before { + content: "\f0a4"; +} + +.la-hand-point-up:before { + content: "\f0a6"; +} + +.la-hand-pointer:before { + content: "\f25a"; +} + +.la-hand-rock:before { + content: "\f255"; +} + +.la-hand-scissors:before { + content: "\f257"; +} + +.la-hand-spock:before { + content: "\f259"; +} + +.la-hands:before { + content: "\f4c2"; +} + +.la-hands-helping:before { + content: "\f4c4"; +} + +.la-handshake:before { + content: "\f2b5"; +} + +.la-hanukiah:before { + content: "\f6e6"; +} + +.la-hard-hat:before { + content: "\f807"; +} + +.la-hashtag:before { + content: "\f292"; +} + +.la-hat-cowboy:before { + content: "\f8c0"; +} + +.la-hat-cowboy-side:before { + content: "\f8c1"; +} + +.la-hat-wizard:before { + content: "\f6e8"; +} + +.la-haykal:before { + content: "\f666"; +} + +.la-hdd:before { + content: "\f0a0"; +} + +.la-heading:before { + content: "\f1dc"; +} + +.la-headphones:before { + content: "\f025"; +} + +.la-headphones-alt:before { + content: "\f58f"; +} + +.la-headset:before { + content: "\f590"; +} + +.la-heart:before { + content: "\f004"; +} + +.la-heart-broken:before { + content: "\f7a9"; +} + +.la-heartbeat:before { + content: "\f21e"; +} + +.la-helicopter:before { + content: "\f533"; +} + +.la-highlighter:before { + content: "\f591"; +} + +.la-hiking:before { + content: "\f6ec"; +} + +.la-hippo:before { + content: "\f6ed"; +} + +.la-hips:before { + content: "\f452"; +} + +.la-hire-a-helper:before { + content: "\f3b0"; +} + +.la-history:before { + content: "\f1da"; +} + +.la-hockey-puck:before { + content: "\f453"; +} + +.la-holly-berry:before { + content: "\f7aa"; +} + +.la-home:before { + content: "\f015"; +} + +.la-hooli:before { + content: "\f427"; +} + +.la-hornbill:before { + content: "\f592"; +} + +.la-horse:before { + content: "\f6f0"; +} + +.la-horse-head:before { + content: "\f7ab"; +} + +.la-hospital:before { + content: "\f0f8"; +} + +.la-hospital-alt:before { + content: "\f47d"; +} + +.la-hospital-symbol:before { + content: "\f47e"; +} + +.la-hot-tub:before { + content: "\f593"; +} + +.la-hotdog:before { + content: "\f80f"; +} + +.la-hotel:before { + content: "\f594"; +} + +.la-hotjar:before { + content: "\f3b1"; +} + +.la-hourglass:before { + content: "\f254"; +} + +.la-hourglass-end:before { + content: "\f253"; +} + +.la-hourglass-half:before { + content: "\f252"; +} + +.la-hourglass-start:before { + content: "\f251"; +} + +.la-house-damage:before { + content: "\f6f1"; +} + +.la-houzz:before { + content: "\f27c"; +} + +.la-hryvnia:before { + content: "\f6f2"; +} + +.la-html5:before { + content: "\f13b"; +} + +.la-hubspot:before { + content: "\f3b2"; +} + +.la-i-cursor:before { + content: "\f246"; +} + +.la-ice-cream:before { + content: "\f810"; +} + +.la-icicles:before { + content: "\f7ad"; +} + +.la-icons:before { + content: "\f86d"; +} + +.la-id-badge:before { + content: "\f2c1"; +} + +.la-id-card:before { + content: "\f2c2"; +} + +.la-id-card-alt:before { + content: "\f47f"; +} + +.la-igloo:before { + content: "\f7ae"; +} + +.la-image:before { + content: "\f03e"; +} + +.la-images:before { + content: "\f302"; +} + +.la-imdb:before { + content: "\f2d8"; +} + +.la-inbox:before { + content: "\f01c"; +} + +.la-indent:before { + content: "\f03c"; +} + +.la-industry:before { + content: "\f275"; +} + +.la-infinity:before { + content: "\f534"; +} + +.la-info:before { + content: "\f129"; +} + +.la-info-circle:before { + content: "\f05a"; +} + +.la-instagram:before { + content: "\f16d"; +} + +.la-intercom:before { + content: "\f7af"; +} + +.la-internet-explorer:before { + content: "\f26b"; +} + +.la-invision:before { + content: "\f7b0"; +} + +.la-ioxhost:before { + content: "\f208"; +} + +.la-italic:before { + content: "\f033"; +} + +.la-itch-io:before { + content: "\f83a"; +} + +.la-itunes:before { + content: "\f3b4"; +} + +.la-itunes-note:before { + content: "\f3b5"; +} + +.la-java:before { + content: "\f4e4"; +} + +.la-jedi:before { + content: "\f669"; +} + +.la-jedi-order:before { + content: "\f50e"; +} + +.la-jenkins:before { + content: "\f3b6"; +} + +.la-jira:before { + content: "\f7b1"; +} + +.la-joget:before { + content: "\f3b7"; +} + +.la-joint:before { + content: "\f595"; +} + +.la-joomla:before { + content: "\f1aa"; +} + +.la-journal-whills:before { + content: "\f66a"; +} + +.la-js:before { + content: "\f3b8"; +} + +.la-js-square:before { + content: "\f3b9"; +} + +.la-jsfiddle:before { + content: "\f1cc"; +} + +.la-kaaba:before { + content: "\f66b"; +} + +.la-kaggle:before { + content: "\f5fa"; +} + +.la-key:before { + content: "\f084"; +} + +.la-keybase:before { + content: "\f4f5"; +} + +.la-keyboard:before { + content: "\f11c"; +} + +.la-keycdn:before { + content: "\f3ba"; +} + +.la-khanda:before { + content: "\f66d"; +} + +.la-kickstarter:before { + content: "\f3bb"; +} + +.la-kickstarter-k:before { + content: "\f3bc"; +} + +.la-kiss:before { + content: "\f596"; +} + +.la-kiss-beam:before { + content: "\f597"; +} + +.la-kiss-wink-heart:before { + content: "\f598"; +} + +.la-kiwi-bird:before { + content: "\f535"; +} + +.la-korvue:before { + content: "\f42f"; +} + +.la-landmark:before { + content: "\f66f"; +} + +.la-language:before { + content: "\f1ab"; +} + +.la-laptop:before { + content: "\f109"; +} + +.la-laptop-code:before { + content: "\f5fc"; +} + +.la-laptop-medical:before { + content: "\f812"; +} + +.la-laravel:before { + content: "\f3bd"; +} + +.la-lastfm:before { + content: "\f202"; +} + +.la-lastfm-square:before { + content: "\f203"; +} + +.la-laugh:before { + content: "\f599"; +} + +.la-laugh-beam:before { + content: "\f59a"; +} + +.la-laugh-squint:before { + content: "\f59b"; +} + +.la-laugh-wink:before { + content: "\f59c"; +} + +.la-layer-group:before { + content: "\f5fd"; +} + +.la-leaf:before { + content: "\f06c"; +} + +.la-leanpub:before { + content: "\f212"; +} + +.la-lemon:before { + content: "\f094"; +} + +.la-less:before { + content: "\f41d"; +} + +.la-less-than:before { + content: "\f536"; +} + +.la-less-than-equal:before { + content: "\f537"; +} + +.la-level-down-alt:before { + content: "\f3be"; +} + +.la-level-up-alt:before { + content: "\f3bf"; +} + +.la-life-ring:before { + content: "\f1cd"; +} + +.la-lightbulb:before { + content: "\f0eb"; +} + +.la-line:before { + content: "\f3c0"; +} + +.la-link:before { + content: "\f0c1"; +} + +.la-linkedin:before { + content: "\f08c"; +} + +.la-linkedin-in:before { + content: "\f0e1"; +} + +.la-linode:before { + content: "\f2b8"; +} + +.la-linux:before { + content: "\f17c"; +} + +.la-lira-sign:before { + content: "\f195"; +} + +.la-list:before { + content: "\f03a"; +} + +.la-list-alt:before { + content: "\f022"; +} + +.la-list-ol:before { + content: "\f0cb"; +} + +.la-list-ul:before { + content: "\f0ca"; +} + +.la-location-arrow:before { + content: "\f124"; +} + +.la-lock:before { + content: "\f023"; +} + +.la-lock-open:before { + content: "\f3c1"; +} + +.la-long-arrow-alt-down:before { + content: "\f309"; +} + +.la-long-arrow-alt-left:before { + content: "\f30a"; +} + +.la-long-arrow-alt-right:before { + content: "\f30b"; +} + +.la-long-arrow-alt-up:before { + content: "\f30c"; +} + +.la-low-vision:before { + content: "\f2a8"; +} + +.la-luggage-cart:before { + content: "\f59d"; +} + +.la-lyft:before { + content: "\f3c3"; +} + +.la-magento:before { + content: "\f3c4"; +} + +.la-magic:before { + content: "\f0d0"; +} + +.la-magnet:before { + content: "\f076"; +} + +.la-mail-bulk:before { + content: "\f674"; +} + +.la-mailchimp:before { + content: "\f59e"; +} + +.la-male:before { + content: "\f183"; +} + +.la-mandalorian:before { + content: "\f50f"; +} + +.la-map:before { + content: "\f279"; +} + +.la-map-marked:before { + content: "\f59f"; +} + +.la-map-marked-alt:before { + content: "\f5a0"; +} + +.la-map-marker:before { + content: "\f041"; +} + +.la-map-marker-alt:before { + content: "\f3c5"; +} + +.la-map-pin:before { + content: "\f276"; +} + +.la-map-signs:before { + content: "\f277"; +} + +.la-markdown:before { + content: "\f60f"; +} + +.la-marker:before { + content: "\f5a1"; +} + +.la-mars:before { + content: "\f222"; +} + +.la-mars-double:before { + content: "\f227"; +} + +.la-mars-stroke:before { + content: "\f229"; +} + +.la-mars-stroke-h:before { + content: "\f22b"; +} + +.la-mars-stroke-v:before { + content: "\f22a"; +} + +.la-mask:before { + content: "\f6fa"; +} + +.la-mastodon:before { + content: "\f4f6"; +} + +.la-maxcdn:before { + content: "\f136"; +} + +.la-mdb:before { + content: "\f8ca"; +} + +.la-medal:before { + content: "\f5a2"; +} + +.la-medapps:before { + content: "\f3c6"; +} + +.la-medium:before { + content: "\f23a"; +} + +.la-medium-m:before { + content: "\f3c7"; +} + +.la-medkit:before { + content: "\f0fa"; +} + +.la-medrt:before { + content: "\f3c8"; +} + +.la-meetup:before { + content: "\f2e0"; +} + +.la-megaport:before { + content: "\f5a3"; +} + +.la-meh:before { + content: "\f11a"; +} + +.la-meh-blank:before { + content: "\f5a4"; +} + +.la-meh-rolling-eyes:before { + content: "\f5a5"; +} + +.la-memory:before { + content: "\f538"; +} + +.la-mendeley:before { + content: "\f7b3"; +} + +.la-menorah:before { + content: "\f676"; +} + +.la-mercury:before { + content: "\f223"; +} + +.la-meteor:before { + content: "\f753"; +} + +.la-microchip:before { + content: "\f2db"; +} + +.la-microphone:before { + content: "\f130"; +} + +.la-microphone-alt:before { + content: "\f3c9"; +} + +.la-microphone-alt-slash:before { + content: "\f539"; +} + +.la-microphone-slash:before { + content: "\f131"; +} + +.la-microscope:before { + content: "\f610"; +} + +.la-microsoft:before { + content: "\f3ca"; +} + +.la-minus:before { + content: "\f068"; +} + +.la-minus-circle:before { + content: "\f056"; +} + +.la-minus-square:before { + content: "\f146"; +} + +.la-mitten:before { + content: "\f7b5"; +} + +.la-mix:before { + content: "\f3cb"; +} + +.la-mixcloud:before { + content: "\f289"; +} + +.la-mizuni:before { + content: "\f3cc"; +} + +.la-mobile:before { + content: "\f10b"; +} + +.la-mobile-alt:before { + content: "\f3cd"; +} + +.la-modx:before { + content: "\f285"; +} + +.la-monero:before { + content: "\f3d0"; +} + +.la-money-bill:before { + content: "\f0d6"; +} + +.la-money-bill-alt:before { + content: "\f3d1"; +} + +.la-money-bill-wave:before { + content: "\f53a"; +} + +.la-money-bill-wave-alt:before { + content: "\f53b"; +} + +.la-money-check:before { + content: "\f53c"; +} + +.la-money-check-alt:before { + content: "\f53d"; +} + +.la-monument:before { + content: "\f5a6"; +} + +.la-moon:before { + content: "\f186"; +} + +.la-mortar-pestle:before { + content: "\f5a7"; +} + +.la-mosque:before { + content: "\f678"; +} + +.la-motorcycle:before { + content: "\f21c"; +} + +.la-mountain:before { + content: "\f6fc"; +} + +.la-mouse:before { + content: "\f8cc"; +} + +.la-mouse-pointer:before { + content: "\f245"; +} + +.la-mug-hot:before { + content: "\f7b6"; +} + +.la-music:before { + content: "\f001"; +} + +.la-napster:before { + content: "\f3d2"; +} + +.la-neos:before { + content: "\f612"; +} + +.la-network-wired:before { + content: "\f6ff"; +} + +.la-neuter:before { + content: "\f22c"; +} + +.la-newspaper:before { + content: "\f1ea"; +} + +.la-nimblr:before { + content: "\f5a8"; +} + +.la-node:before { + content: "\f419"; +} + +.la-node-js:before { + content: "\f3d3"; +} + +.la-not-equal:before { + content: "\f53e"; +} + +.la-notes-medical:before { + content: "\f481"; +} + +.la-npm:before { + content: "\f3d4"; +} + +.la-ns8:before { + content: "\f3d5"; +} + +.la-nutritionix:before { + content: "\f3d6"; +} + +.la-object-group:before { + content: "\f247"; +} + +.la-object-ungroup:before { + content: "\f248"; +} + +.la-odnoklassniki:before { + content: "\f263"; +} + +.la-odnoklassniki-square:before { + content: "\f264"; +} + +.la-oil-can:before { + content: "\f613"; +} + +.la-old-republic:before { + content: "\f510"; +} + +.la-om:before { + content: "\f679"; +} + +.la-opencart:before { + content: "\f23d"; +} + +.la-openid:before { + content: "\f19b"; +} + +.la-opera:before { + content: "\f26a"; +} + +.la-optin-monster:before { + content: "\f23c"; +} + +.la-orcid:before { + content: "\f8d2"; +} + +.la-osi:before { + content: "\f41a"; +} + +.la-otter:before { + content: "\f700"; +} + +.la-outdent:before { + content: "\f03b"; +} + +.la-page4:before { + content: "\f3d7"; +} + +.la-pagelines:before { + content: "\f18c"; +} + +.la-pager:before { + content: "\f815"; +} + +.la-paint-brush:before { + content: "\f1fc"; +} + +.la-paint-roller:before { + content: "\f5aa"; +} + +.la-palette:before { + content: "\f53f"; +} + +.la-palfed:before { + content: "\f3d8"; +} + +.la-pallet:before { + content: "\f482"; +} + +.la-paper-plane:before { + content: "\f1d8"; +} + +.la-paperclip:before { + content: "\f0c6"; +} + +.la-parachute-box:before { + content: "\f4cd"; +} + +.la-paragraph:before { + content: "\f1dd"; +} + +.la-parking:before { + content: "\f540"; +} + +.la-passport:before { + content: "\f5ab"; +} + +.la-pastafarianism:before { + content: "\f67b"; +} + +.la-paste:before { + content: "\f0ea"; +} + +.la-patreon:before { + content: "\f3d9"; +} + +.la-pause:before { + content: "\f04c"; +} + +.la-pause-circle:before { + content: "\f28b"; +} + +.la-paw:before { + content: "\f1b0"; +} + +.la-paypal:before { + content: "\f1ed"; +} + +.la-peace:before { + content: "\f67c"; +} + +.la-pen:before { + content: "\f304"; +} + +.la-pen-alt:before { + content: "\f305"; +} + +.la-pen-fancy:before { + content: "\f5ac"; +} + +.la-pen-nib:before { + content: "\f5ad"; +} + +.la-pen-square:before { + content: "\f14b"; +} + +.la-pencil-alt:before { + content: "\f303"; +} + +.la-pencil-ruler:before { + content: "\f5ae"; +} + +.la-penny-arcade:before { + content: "\f704"; +} + +.la-people-carry:before { + content: "\f4ce"; +} + +.la-pepper-hot:before { + content: "\f816"; +} + +.la-percent:before { + content: "\f295"; +} + +.la-percentage:before { + content: "\f541"; +} + +.la-periscope:before { + content: "\f3da"; +} + +.la-person-booth:before { + content: "\f756"; +} + +.la-phabricator:before { + content: "\f3db"; +} + +.la-phoenix-framework:before { + content: "\f3dc"; +} + +.la-phoenix-squadron:before { + content: "\f511"; +} + +.la-phone:before { + content: "\f095"; +} + +.la-phone-alt:before { + content: "\f879"; +} + +.la-phone-slash:before { + content: "\f3dd"; +} + +.la-phone-square:before { + content: "\f098"; +} + +.la-phone-square-alt:before { + content: "\f87b"; +} + +.la-phone-volume:before { + content: "\f2a0"; +} + +.la-photo-video:before { + content: "\f87c"; +} + +.la-php:before { + content: "\f457"; +} + +.la-pied-piper:before { + content: "\f2ae"; +} + +.la-pied-piper-alt:before { + content: "\f1a8"; +} + +.la-pied-piper-hat:before { + content: "\f4e5"; +} + +.la-pied-piper-pp:before { + content: "\f1a7"; +} + +.la-piggy-bank:before { + content: "\f4d3"; +} + +.la-pills:before { + content: "\f484"; +} + +.la-pinterest:before { + content: "\f0d2"; +} + +.la-pinterest-p:before { + content: "\f231"; +} + +.la-pinterest-square:before { + content: "\f0d3"; +} + +.la-pizza-slice:before { + content: "\f818"; +} + +.la-place-of-worship:before { + content: "\f67f"; +} + +.la-plane:before { + content: "\f072"; +} + +.la-plane-arrival:before { + content: "\f5af"; +} + +.la-plane-departure:before { + content: "\f5b0"; +} + +.la-play:before { + content: "\f04b"; +} + +.la-play-circle:before { + content: "\f144"; +} + +.la-playstation:before { + content: "\f3df"; +} + +.la-plug:before { + content: "\f1e6"; +} + +.la-plus:before { + content: "\f067"; +} + +.la-plus-circle:before { + content: "\f055"; +} + +.la-plus-square:before { + content: "\f0fe"; +} + +.la-podcast:before { + content: "\f2ce"; +} + +.la-poll:before { + content: "\f681"; +} + +.la-poll-h:before { + content: "\f682"; +} + +.la-poo:before { + content: "\f2fe"; +} + +.la-poo-storm:before { + content: "\f75a"; +} + +.la-poop:before { + content: "\f619"; +} + +.la-portrait:before { + content: "\f3e0"; +} + +.la-pound-sign:before { + content: "\f154"; +} + +.la-power-off:before { + content: "\f011"; +} + +.la-pray:before { + content: "\f683"; +} + +.la-praying-hands:before { + content: "\f684"; +} + +.la-prescription:before { + content: "\f5b1"; +} + +.la-prescription-bottle:before { + content: "\f485"; +} + +.la-prescription-bottle-alt:before { + content: "\f486"; +} + +.la-print:before { + content: "\f02f"; +} + +.la-procedures:before { + content: "\f487"; +} + +.la-product-hunt:before { + content: "\f288"; +} + +.la-project-diagram:before { + content: "\f542"; +} + +.la-pushed:before { + content: "\f3e1"; +} + +.la-puzzle-piece:before { + content: "\f12e"; +} + +.la-python:before { + content: "\f3e2"; +} + +.la-qq:before { + content: "\f1d6"; +} + +.la-qrcode:before { + content: "\f029"; +} + +.la-question:before { + content: "\f128"; +} + +.la-question-circle:before { + content: "\f059"; +} + +.la-quidditch:before { + content: "\f458"; +} + +.la-quinscape:before { + content: "\f459"; +} + +.la-quora:before { + content: "\f2c4"; +} + +.la-quote-left:before { + content: "\f10d"; +} + +.la-quote-right:before { + content: "\f10e"; +} + +.la-quran:before { + content: "\f687"; +} + +.la-r-project:before { + content: "\f4f7"; +} + +.la-radiation:before { + content: "\f7b9"; +} + +.la-radiation-alt:before { + content: "\f7ba"; +} + +.la-rainbow:before { + content: "\f75b"; +} + +.la-random:before { + content: "\f074"; +} + +.la-raspberry-pi:before { + content: "\f7bb"; +} + +.la-ravelry:before { + content: "\f2d9"; +} + +.la-react:before { + content: "\f41b"; +} + +.la-reacteurope:before { + content: "\f75d"; +} + +.la-readme:before { + content: "\f4d5"; +} + +.la-rebel:before { + content: "\f1d0"; +} + +.la-receipt:before { + content: "\f543"; +} + +.la-record-vinyl:before { + content: "\f8d9"; +} + +.la-recycle:before { + content: "\f1b8"; +} + +.la-red-river:before { + content: "\f3e3"; +} + +.la-reddit:before { + content: "\f1a1"; +} + +.la-reddit-alien:before { + content: "\f281"; +} + +.la-reddit-square:before { + content: "\f1a2"; +} + +.la-redhat:before { + content: "\f7bc"; +} + +.la-redo:before { + content: "\f01e"; +} + +.la-redo-alt:before { + content: "\f2f9"; +} + +.la-registered:before { + content: "\f25d"; +} + +.la-remove-format:before { + content: "\f87d"; +} + +.la-renren:before { + content: "\f18b"; +} + +.la-reply:before { + content: "\f3e5"; +} + +.la-reply-all:before { + content: "\f122"; +} + +.la-replyd:before { + content: "\f3e6"; +} + +.la-republican:before { + content: "\f75e"; +} + +.la-researchgate:before { + content: "\f4f8"; +} + +.la-resolving:before { + content: "\f3e7"; +} + +.la-restroom:before { + content: "\f7bd"; +} + +.la-retweet:before { + content: "\f079"; +} + +.la-rev:before { + content: "\f5b2"; +} + +.la-ribbon:before { + content: "\f4d6"; +} + +.la-ring:before { + content: "\f70b"; +} + +.la-road:before { + content: "\f018"; +} + +.la-robot:before { + content: "\f544"; +} + +.la-rocket:before { + content: "\f135"; +} + +.la-rocketchat:before { + content: "\f3e8"; +} + +.la-rockrms:before { + content: "\f3e9"; +} + +.la-route:before { + content: "\f4d7"; +} + +.la-rss:before { + content: "\f09e"; +} + +.la-rss-square:before { + content: "\f143"; +} + +.la-ruble-sign:before { + content: "\f158"; +} + +.la-ruler:before { + content: "\f545"; +} + +.la-ruler-combined:before { + content: "\f546"; +} + +.la-ruler-horizontal:before { + content: "\f547"; +} + +.la-ruler-vertical:before { + content: "\f548"; +} + +.la-running:before { + content: "\f70c"; +} + +.la-rupee-sign:before { + content: "\f156"; +} + +.la-sad-cry:before { + content: "\f5b3"; +} + +.la-sad-tear:before { + content: "\f5b4"; +} + +.la-safari:before { + content: "\f267"; +} + +.la-salesforce:before { + content: "\f83b"; +} + +.la-sass:before { + content: "\f41e"; +} + +.la-satellite:before { + content: "\f7bf"; +} + +.la-satellite-dish:before { + content: "\f7c0"; +} + +.la-save:before { + content: "\f0c7"; +} + +.la-schlix:before { + content: "\f3ea"; +} + +.la-school:before { + content: "\f549"; +} + +.la-screwdriver:before { + content: "\f54a"; +} + +.la-scribd:before { + content: "\f28a"; +} + +.la-scroll:before { + content: "\f70e"; +} + +.la-sd-card:before { + content: "\f7c2"; +} + +.la-search:before { + content: "\f002"; +} + +.la-search-dollar:before { + content: "\f688"; +} + +.la-search-location:before { + content: "\f689"; +} + +.la-search-minus:before { + content: "\f010"; +} + +.la-search-plus:before { + content: "\f00e"; +} + +.la-searchengin:before { + content: "\f3eb"; +} + +.la-seedling:before { + content: "\f4d8"; +} + +.la-sellcast:before { + content: "\f2da"; +} + +.la-sellsy:before { + content: "\f213"; +} + +.la-server:before { + content: "\f233"; +} + +.la-servicestack:before { + content: "\f3ec"; +} + +.la-shapes:before { + content: "\f61f"; +} + +.la-share:before { + content: "\f064"; +} + +.la-share-alt:before { + content: "\f1e0"; +} + +.la-share-alt-square:before { + content: "\f1e1"; +} + +.la-share-square:before { + content: "\f14d"; +} + +.la-shekel-sign:before { + content: "\f20b"; +} + +.la-shield-alt:before { + content: "\f3ed"; +} + +.la-ship:before { + content: "\f21a"; +} + +.la-shipping-fast:before { + content: "\f48b"; +} + +.la-shirtsinbulk:before { + content: "\f214"; +} + +.la-shoe-prints:before { + content: "\f54b"; +} + +.la-shopping-bag:before { + content: "\f290"; +} + +.la-shopping-basket:before { + content: "\f291"; +} + +.la-shopping-cart:before { + content: "\f07a"; +} + +.la-shopware:before { + content: "\f5b5"; +} + +.la-shower:before { + content: "\f2cc"; +} + +.la-shuttle-van:before { + content: "\f5b6"; +} + +.la-sign:before { + content: "\f4d9"; +} + +.la-sign-in-alt:before { + content: "\f2f6"; +} + +.la-sign-language:before { + content: "\f2a7"; +} + +.la-sign-out-alt:before { + content: "\f2f5"; +} + +.la-signal:before { + content: "\f012"; +} + +.la-signature:before { + content: "\f5b7"; +} + +.la-sim-card:before { + content: "\f7c4"; +} + +.la-simplybuilt:before { + content: "\f215"; +} + +.la-sistrix:before { + content: "\f3ee"; +} + +.la-sitemap:before { + content: "\f0e8"; +} + +.la-sith:before { + content: "\f512"; +} + +.la-skating:before { + content: "\f7c5"; +} + +.la-sketch:before { + content: "\f7c6"; +} + +.la-skiing:before { + content: "\f7c9"; +} + +.la-skiing-nordic:before { + content: "\f7ca"; +} + +.la-skull:before { + content: "\f54c"; +} + +.la-skull-crossbones:before { + content: "\f714"; +} + +.la-skyatlas:before { + content: "\f216"; +} + +.la-skype:before { + content: "\f17e"; +} + +.la-slack:before { + content: "\f198"; +} + +.la-slack-hash:before { + content: "\f3ef"; +} + +.la-slash:before { + content: "\f715"; +} + +.la-sleigh:before { + content: "\f7cc"; +} + +.la-sliders-h:before { + content: "\f1de"; +} + +.la-slideshare:before { + content: "\f1e7"; +} + +.la-smile:before { + content: "\f118"; +} + +.la-smile-beam:before { + content: "\f5b8"; +} + +.la-smile-wink:before { + content: "\f4da"; +} + +.la-smog:before { + content: "\f75f"; +} + +.la-smoking:before { + content: "\f48d"; +} + +.la-smoking-ban:before { + content: "\f54d"; +} + +.la-sms:before { + content: "\f7cd"; +} + +.la-snapchat:before { + content: "\f2ab"; +} + +.la-snapchat-ghost:before { + content: "\f2ac"; +} + +.la-snapchat-square:before { + content: "\f2ad"; +} + +.la-snowboarding:before { + content: "\f7ce"; +} + +.la-snowflake:before { + content: "\f2dc"; +} + +.la-snowman:before { + content: "\f7d0"; +} + +.la-snowplow:before { + content: "\f7d2"; +} + +.la-socks:before { + content: "\f696"; +} + +.la-solar-panel:before { + content: "\f5ba"; +} + +.la-sort:before { + content: "\f0dc"; +} + +.la-sort-alpha-down:before { + content: "\f15d"; +} + +.la-sort-alpha-down-alt:before { + content: "\f881"; +} + +.la-sort-alpha-up:before { + content: "\f15e"; +} + +.la-sort-alpha-up-alt:before { + content: "\f882"; +} + +.la-sort-amount-down:before { + content: "\f160"; +} + +.la-sort-amount-down-alt:before { + content: "\f884"; +} + +.la-sort-amount-up:before { + content: "\f161"; +} + +.la-sort-amount-up-alt:before { + content: "\f885"; +} + +.la-sort-down:before { + content: "\f0dd"; +} + +.la-sort-numeric-down:before { + content: "\f162"; +} + +.la-sort-numeric-down-alt:before { + content: "\f886"; +} + +.la-sort-numeric-up:before { + content: "\f163"; +} + +.la-sort-numeric-up-alt:before { + content: "\f887"; +} + +.la-sort-up:before { + content: "\f0de"; +} + +.la-soundcloud:before { + content: "\f1be"; +} + +.la-sourcetree:before { + content: "\f7d3"; +} + +.la-spa:before { + content: "\f5bb"; +} + +.la-space-shuttle:before { + content: "\f197"; +} + +.la-speakap:before { + content: "\f3f3"; +} + +.la-speaker-deck:before { + content: "\f83c"; +} + +.la-spell-check:before { + content: "\f891"; +} + +.la-spider:before { + content: "\f717"; +} + +.la-spinner:before { + content: "\f110"; +} + +.la-splotch:before { + content: "\f5bc"; +} + +.la-spotify:before { + content: "\f1bc"; +} + +.la-spray-can:before { + content: "\f5bd"; +} + +.la-square:before { + content: "\f0c8"; +} + +.la-square-full:before { + content: "\f45c"; +} + +.la-square-root-alt:before { + content: "\f698"; +} + +.la-squarespace:before { + content: "\f5be"; +} + +.la-stack-exchange:before { + content: "\f18d"; +} + +.la-stack-overflow:before { + content: "\f16c"; +} + +.la-stackpath:before { + content: "\f842"; +} + +.la-stamp:before { + content: "\f5bf"; +} + +.la-star:before { + content: "\f005"; +} + +.la-star-and-crescent:before { + content: "\f699"; +} + +.la-star-half:before { + content: "\f089"; +} + +.la-star-half-alt:before { + content: "\f5c0"; +} + +.la-star-of-david:before { + content: "\f69a"; +} + +.la-star-of-life:before { + content: "\f621"; +} + +.la-staylinked:before { + content: "\f3f5"; +} + +.la-steam:before { + content: "\f1b6"; +} + +.la-steam-square:before { + content: "\f1b7"; +} + +.la-steam-symbol:before { + content: "\f3f6"; +} + +.la-step-backward:before { + content: "\f048"; +} + +.la-step-forward:before { + content: "\f051"; +} + +.la-stethoscope:before { + content: "\f0f1"; +} + +.la-sticker-mule:before { + content: "\f3f7"; +} + +.la-sticky-note:before { + content: "\f249"; +} + +.la-stop:before { + content: "\f04d"; +} + +.la-stop-circle:before { + content: "\f28d"; +} + +.la-stopwatch:before { + content: "\f2f2"; +} + +.la-store:before { + content: "\f54e"; +} + +.la-store-alt:before { + content: "\f54f"; +} + +.la-strava:before { + content: "\f428"; +} + +.la-stream:before { + content: "\f550"; +} + +.la-street-view:before { + content: "\f21d"; +} + +.la-strikethrough:before { + content: "\f0cc"; +} + +.la-stripe:before { + content: "\f429"; +} + +.la-stripe-s:before { + content: "\f42a"; +} + +.la-stroopwafel:before { + content: "\f551"; +} + +.la-studiovinari:before { + content: "\f3f8"; +} + +.la-stumbleupon:before { + content: "\f1a4"; +} + +.la-stumbleupon-circle:before { + content: "\f1a3"; +} + +.la-subscript:before { + content: "\f12c"; +} + +.la-subway:before { + content: "\f239"; +} + +.la-suitcase:before { + content: "\f0f2"; +} + +.la-suitcase-rolling:before { + content: "\f5c1"; +} + +.la-sun:before { + content: "\f185"; +} + +.la-superpowers:before { + content: "\f2dd"; +} + +.la-superscript:before { + content: "\f12b"; +} + +.la-supple:before { + content: "\f3f9"; +} + +.la-surprise:before { + content: "\f5c2"; +} + +.la-suse:before { + content: "\f7d6"; +} + +.la-swatchbook:before { + content: "\f5c3"; +} + +.la-swift:before { + content: "\f8e1"; +} + +.la-swimmer:before { + content: "\f5c4"; +} + +.la-swimming-pool:before { + content: "\f5c5"; +} + +.la-symfony:before { + content: "\f83d"; +} + +.la-synagogue:before { + content: "\f69b"; +} + +.la-sync:before { + content: "\f021"; +} + +.la-sync-alt:before { + content: "\f2f1"; +} + +.la-syringe:before { + content: "\f48e"; +} + +.la-table:before { + content: "\f0ce"; +} + +.la-table-tennis:before { + content: "\f45d"; +} + +.la-tablet:before { + content: "\f10a"; +} + +.la-tablet-alt:before { + content: "\f3fa"; +} + +.la-tablets:before { + content: "\f490"; +} + +.la-tachometer-alt:before { + content: "\f3fd"; +} + +.la-tag:before { + content: "\f02b"; +} + +.la-tags:before { + content: "\f02c"; +} + +.la-tape:before { + content: "\f4db"; +} + +.la-tasks:before { + content: "\f0ae"; +} + +.la-taxi:before { + content: "\f1ba"; +} + +.la-teamspeak:before { + content: "\f4f9"; +} + +.la-teeth:before { + content: "\f62e"; +} + +.la-teeth-open:before { + content: "\f62f"; +} + +.la-telegram:before { + content: "\f2c6"; +} + +.la-telegram-plane:before { + content: "\f3fe"; +} + +.la-temperature-high:before { + content: "\f769"; +} + +.la-temperature-low:before { + content: "\f76b"; +} + +.la-tencent-weibo:before { + content: "\f1d5"; +} + +.la-tenge:before { + content: "\f7d7"; +} + +.la-terminal:before { + content: "\f120"; +} + +.la-text-height:before { + content: "\f034"; +} + +.la-text-width:before { + content: "\f035"; +} + +.la-th:before { + content: "\f00a"; +} + +.la-th-large:before { + content: "\f009"; +} + +.la-th-list:before { + content: "\f00b"; +} + +.la-the-red-yeti:before { + content: "\f69d"; +} + +.la-theater-masks:before { + content: "\f630"; +} + +.la-themeco:before { + content: "\f5c6"; +} + +.la-themeisle:before { + content: "\f2b2"; +} + +.la-thermometer:before { + content: "\f491"; +} + +.la-thermometer-empty:before { + content: "\f2cb"; +} + +.la-thermometer-full:before { + content: "\f2c7"; +} + +.la-thermometer-half:before { + content: "\f2c9"; +} + +.la-thermometer-quarter:before { + content: "\f2ca"; +} + +.la-thermometer-three-quarters:before { + content: "\f2c8"; +} + +.la-think-peaks:before { + content: "\f731"; +} + +.la-thumbs-down:before { + content: "\f165"; +} + +.la-thumbs-up:before { + content: "\f164"; +} + +.la-thumbtack:before { + content: "\f08d"; +} + +.la-ticket-alt:before { + content: "\f3ff"; +} + +.la-times:before { + content: "\f00d"; +} + +.la-times-circle:before { + content: "\f057"; +} + +.la-tint:before { + content: "\f043"; +} + +.la-tint-slash:before { + content: "\f5c7"; +} + +.la-tired:before { + content: "\f5c8"; +} + +.la-toggle-off:before { + content: "\f204"; +} + +.la-toggle-on:before { + content: "\f205"; +} + +.la-toilet:before { + content: "\f7d8"; +} + +.la-toilet-paper:before { + content: "\f71e"; +} + +.la-toolbox:before { + content: "\f552"; +} + +.la-tools:before { + content: "\f7d9"; +} + +.la-tooth:before { + content: "\f5c9"; +} + +.la-torah:before { + content: "\f6a0"; +} + +.la-torii-gate:before { + content: "\f6a1"; +} + +.la-tractor:before { + content: "\f722"; +} + +.la-trade-federation:before { + content: "\f513"; +} + +.la-trademark:before { + content: "\f25c"; +} + +.la-traffic-light:before { + content: "\f637"; +} + +.la-train:before { + content: "\f238"; +} + +.la-tram:before { + content: "\f7da"; +} + +.la-transgender:before { + content: "\f224"; +} + +.la-transgender-alt:before { + content: "\f225"; +} + +.la-trash:before { + content: "\f1f8"; +} + +.la-trash-alt:before { + content: "\f2ed"; +} + +.la-trash-restore:before { + content: "\f829"; +} + +.la-trash-restore-alt:before { + content: "\f82a"; +} + +.la-tree:before { + content: "\f1bb"; +} + +.la-trello:before { + content: "\f181"; +} + +.la-tripadvisor:before { + content: "\f262"; +} + +.la-trophy:before { + content: "\f091"; +} + +.la-truck:before { + content: "\f0d1"; +} + +.la-truck-loading:before { + content: "\f4de"; +} + +.la-truck-monster:before { + content: "\f63b"; +} + +.la-truck-moving:before { + content: "\f4df"; +} + +.la-truck-pickup:before { + content: "\f63c"; +} + +.la-tshirt:before { + content: "\f553"; +} + +.la-tty:before { + content: "\f1e4"; +} + +.la-tumblr:before { + content: "\f173"; +} + +.la-tumblr-square:before { + content: "\f174"; +} + +.la-tv:before { + content: "\f26c"; +} + +.la-twitch:before { + content: "\f1e8"; +} + +.la-twitter:before { + content: "\f099"; +} + +.la-twitter-square:before { + content: "\f081"; +} + +.la-typo3:before { + content: "\f42b"; +} + +.la-uber:before { + content: "\f402"; +} + +.la-ubuntu:before { + content: "\f7df"; +} + +.la-uikit:before { + content: "\f403"; +} + +.la-umbraco:before { + content: "\f8e8"; +} + +.la-umbrella:before { + content: "\f0e9"; +} + +.la-umbrella-beach:before { + content: "\f5ca"; +} + +.la-underline:before { + content: "\f0cd"; +} + +.la-undo:before { + content: "\f0e2"; +} + +.la-undo-alt:before { + content: "\f2ea"; +} + +.la-uniregistry:before { + content: "\f404"; +} + +.la-universal-access:before { + content: "\f29a"; +} + +.la-university:before { + content: "\f19c"; +} + +.la-unlink:before { + content: "\f127"; +} + +.la-unlock:before { + content: "\f09c"; +} + +.la-unlock-alt:before { + content: "\f13e"; +} + +.la-untappd:before { + content: "\f405"; +} + +.la-upload:before { + content: "\f093"; +} + +.la-ups:before { + content: "\f7e0"; +} + +.la-usb:before { + content: "\f287"; +} + +.la-user:before { + content: "\f007"; +} + +.la-user-alt:before { + content: "\f406"; +} + +.la-user-alt-slash:before { + content: "\f4fa"; +} + +.la-user-astronaut:before { + content: "\f4fb"; +} + +.la-user-check:before { + content: "\f4fc"; +} + +.la-user-circle:before { + content: "\f2bd"; +} + +.la-user-clock:before { + content: "\f4fd"; +} + +.la-user-cog:before { + content: "\f4fe"; +} + +.la-user-edit:before { + content: "\f4ff"; +} + +.la-user-friends:before { + content: "\f500"; +} + +.la-user-graduate:before { + content: "\f501"; +} + +.la-user-injured:before { + content: "\f728"; +} + +.la-user-lock:before { + content: "\f502"; +} + +.la-user-md:before { + content: "\f0f0"; +} + +.la-user-minus:before { + content: "\f503"; +} + +.la-user-ninja:before { + content: "\f504"; +} + +.la-user-nurse:before { + content: "\f82f"; +} + +.la-user-plus:before { + content: "\f234"; +} + +.la-user-secret:before { + content: "\f21b"; +} + +.la-user-shield:before { + content: "\f505"; +} + +.la-user-slash:before { + content: "\f506"; +} + +.la-user-tag:before { + content: "\f507"; +} + +.la-user-tie:before { + content: "\f508"; +} + +.la-user-times:before { + content: "\f235"; +} + +.la-users:before { + content: "\f0c0"; +} + +.la-users-cog:before { + content: "\f509"; +} + +.la-usps:before { + content: "\f7e1"; +} + +.la-ussunnah:before { + content: "\f407"; +} + +.la-utensil-spoon:before { + content: "\f2e5"; +} + +.la-utensils:before { + content: "\f2e7"; +} + +.la-vaadin:before { + content: "\f408"; +} + +.la-vector-square:before { + content: "\f5cb"; +} + +.la-venus:before { + content: "\f221"; +} + +.la-venus-double:before { + content: "\f226"; +} + +.la-venus-mars:before { + content: "\f228"; +} + +.la-viacoin:before { + content: "\f237"; +} + +.la-viadeo:before { + content: "\f2a9"; +} + +.la-viadeo-square:before { + content: "\f2aa"; +} + +.la-vial:before { + content: "\f492"; +} + +.la-vials:before { + content: "\f493"; +} + +.la-viber:before { + content: "\f409"; +} + +.la-video:before { + content: "\f03d"; +} + +.la-video-slash:before { + content: "\f4e2"; +} + +.la-vihara:before { + content: "\f6a7"; +} + +.la-vimeo:before { + content: "\f40a"; +} + +.la-vimeo-square:before { + content: "\f194"; +} + +.la-vimeo-v:before { + content: "\f27d"; +} + +.la-vine:before { + content: "\f1ca"; +} + +.la-vk:before { + content: "\f189"; +} + +.la-vnv:before { + content: "\f40b"; +} + +.la-voicemail:before { + content: "\f897"; +} + +.la-volleyball-ball:before { + content: "\f45f"; +} + +.la-volume-down:before { + content: "\f027"; +} + +.la-volume-mute:before { + content: "\f6a9"; +} + +.la-volume-off:before { + content: "\f026"; +} + +.la-volume-up:before { + content: "\f028"; +} + +.la-vote-yea:before { + content: "\f772"; +} + +.la-vr-cardboard:before { + content: "\f729"; +} + +.la-vuejs:before { + content: "\f41f"; +} + +.la-walking:before { + content: "\f554"; +} + +.la-wallet:before { + content: "\f555"; +} + +.la-warehouse:before { + content: "\f494"; +} + +.la-water:before { + content: "\f773"; +} + +.la-wave-square:before { + content: "\f83e"; +} + +.la-waze:before { + content: "\f83f"; +} + +.la-weebly:before { + content: "\f5cc"; +} + +.la-weibo:before { + content: "\f18a"; +} + +.la-weight:before { + content: "\f496"; +} + +.la-weight-hanging:before { + content: "\f5cd"; +} + +.la-weixin:before { + content: "\f1d7"; +} + +.la-whatsapp:before { + content: "\f232"; +} + +.la-whatsapp-square:before { + content: "\f40c"; +} + +.la-wheelchair:before { + content: "\f193"; +} + +.la-whmcs:before { + content: "\f40d"; +} + +.la-wifi:before { + content: "\f1eb"; +} + +.la-wikipedia-w:before { + content: "\f266"; +} + +.la-wind:before { + content: "\f72e"; +} + +.la-window-close:before { + content: "\f410"; +} + +.la-window-maximize:before { + content: "\f2d0"; +} + +.la-window-minimize:before { + content: "\f2d1"; +} + +.la-window-restore:before { + content: "\f2d2"; +} + +.la-windows:before { + content: "\f17a"; +} + +.la-wine-bottle:before { + content: "\f72f"; +} + +.la-wine-glass:before { + content: "\f4e3"; +} + +.la-wine-glass-alt:before { + content: "\f5ce"; +} + +.la-wix:before { + content: "\f5cf"; +} + +.la-wizards-of-the-coast:before { + content: "\f730"; +} + +.la-wolf-pack-battalion:before { + content: "\f514"; +} + +.la-won-sign:before { + content: "\f159"; +} + +.la-wordpress:before { + content: "\f19a"; +} + +.la-wordpress-simple:before { + content: "\f411"; +} + +.la-wpbeginner:before { + content: "\f297"; +} + +.la-wpexplorer:before { + content: "\f2de"; +} + +.la-wpforms:before { + content: "\f298"; +} + +.la-wpressr:before { + content: "\f3e4"; +} + +.la-wrench:before { + content: "\f0ad"; +} + +.la-x-ray:before { + content: "\f497"; +} + +.la-xbox:before { + content: "\f412"; +} + +.la-xing:before { + content: "\f168"; +} + +.la-xing-square:before { + content: "\f169"; +} + +.la-y-combinator:before { + content: "\f23b"; +} + +.la-yahoo:before { + content: "\f19e"; +} + +.la-yammer:before { + content: "\f840"; +} + +.la-yandex:before { + content: "\f413"; +} + +.la-yandex-international:before { + content: "\f414"; +} + +.la-yarn:before { + content: "\f7e3"; +} + +.la-yelp:before { + content: "\f1e9"; +} + +.la-yen-sign:before { + content: "\f157"; +} + +.la-yin-yang:before { + content: "\f6ad"; +} + +.la-yoast:before { + content: "\f2b1"; +} + +.la-youtube:before { + content: "\f167"; +} + +.la-youtube-square:before { + content: "\f431"; +} + +.la-zhihu:before { + content: "\f63f"; +} + +.sr-only { + border: 0; + clip: rect(0, 0, 0, 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +.sr-only-focusable:active, .sr-only-focusable:focus { + clip: auto; + height: auto; + margin: 0; + overflow: visible; + position: static; + width: auto; +} + +@font-face { + font-family: "Line Awesome Brands"; + font-style: normal; + font-weight: normal; + font-display: auto; + src: url("fonts/line-awesome/la-brands-400.eot"); + src: url("fonts/line-awesome/la-brands-400.eot?#iefix") format("embedded-opentype"), url("fonts/line-awesome/la-brands-400.woff2") format("woff2"), url("fonts/line-awesome/la-brands-400.woff") format("woff"), url("fonts/line-awesome/la-brands-400.ttf") format("truetype"), url("fonts/line-awesome/la-brands-400.svg#lineawesome") format("svg"); +} +.lab { + font-family: "Line Awesome Brands"; +} + +@font-face { + font-family: "Line Awesome Free"; + font-style: normal; + font-weight: 400; + font-display: auto; + src: url("fonts/line-awesome/la-regular-400.eot"); + src: url("fonts/line-awesome/la-regular-400.eot?#iefix") format("embedded-opentype"), url("fonts/line-awesome/la-regular-400.woff2") format("woff2"), url("fonts/line-awesome/la-regular-400.woff") format("woff"), url("fonts/line-awesome/la-regular-400.ttf") format("truetype"), url("fonts/line-awesome/la-regular-400.svg#lineawesome") format("svg"); +} +.lar { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +@font-face { + font-family: "Line Awesome Free"; + font-style: normal; + font-weight: 900; + font-display: auto; + src: url("fonts/line-awesome/la-solid-900.eot"); + src: url("fonts/line-awesome/la-solid-900.eot?#iefix") format("embedded-opentype"), url("fonts/line-awesome/la-solid-900.woff2") format("woff2"), url("fonts/line-awesome/la-solid-900.woff") format("woff"), url("fonts/line-awesome/la-solid-900.ttf") format("truetype"), url("fonts/line-awesome/la-solid-900.svg#lineawesome") format("svg"); +} +.la, +.las { + font-family: "Line Awesome Free"; + font-weight: 900; +} + +.la.la-glass:before { + content: "\f000"; +} + +.la.la-meetup { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-star-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-star-o:before { + content: "\f005"; +} + +.la.la-remove:before { + content: "\f00d"; +} + +.la.la-close:before { + content: "\f00d"; +} + +.la.la-gear:before { + content: "\f013"; +} + +.la.la-trash-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-trash-o:before { + content: "\f2ed"; +} + +.la.la-file-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-file-o:before { + content: "\f15b"; +} + +.la.la-clock-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-clock-o:before { + content: "\f017"; +} + +.la.la-arrow-circle-o-down { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-arrow-circle-o-down:before { + content: "\f358"; +} + +.la.la-arrow-circle-o-up { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-arrow-circle-o-up:before { + content: "\f35b"; +} + +.la.la-play-circle-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-play-circle-o:before { + content: "\f144"; +} + +.la.la-repeat:before { + content: "\f01e"; +} + +.la.la-rotate-right:before { + content: "\f01e"; +} + +.la.la-refresh:before { + content: "\f021"; +} + +.la.la-list-alt { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-dedent:before { + content: "\f03b"; +} + +.la.la-video-camera:before { + content: "\f03d"; +} + +.la.la-picture-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-picture-o:before { + content: "\f03e"; +} + +.la.la-photo { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-photo:before { + content: "\f03e"; +} + +.la.la-image { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-image:before { + content: "\f03e"; +} + +.la.la-pencil:before { + content: "\f303"; +} + +.la.la-map-marker:before { + content: "\f3c5"; +} + +.la.la-pencil-square-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-pencil-square-o:before { + content: "\f044"; +} + +.la.la-share-square-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-share-square-o:before { + content: "\f14d"; +} + +.la.la-check-square-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-check-square-o:before { + content: "\f14a"; +} + +.la.la-arrows:before { + content: "\f0b2"; +} + +.la.la-times-circle-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-times-circle-o:before { + content: "\f057"; +} + +.la.la-check-circle-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-check-circle-o:before { + content: "\f058"; +} + +.la.la-mail-forward:before { + content: "\f064"; +} + +.la.la-eye { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-eye-slash { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-warning:before { + content: "\f071"; +} + +.la.la-calendar:before { + content: "\f073"; +} + +.la.la-arrows-v:before { + content: "\f338"; +} + +.la.la-arrows-h:before { + content: "\f337"; +} + +.la.la-bar-chart { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-bar-chart:before { + content: "\f080"; +} + +.la.la-bar-chart-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-bar-chart-o:before { + content: "\f080"; +} + +.la.la-twitter-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-facebook-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-gears:before { + content: "\f085"; +} + +.la.la-thumbs-o-up { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-thumbs-o-up:before { + content: "\f164"; +} + +.la.la-thumbs-o-down { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-thumbs-o-down:before { + content: "\f165"; +} + +.la.la-heart-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-heart-o:before { + content: "\f004"; +} + +.la.la-sign-out:before { + content: "\f2f5"; +} + +.la.la-linkedin-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-linkedin-square:before { + content: "\f08c"; +} + +.la.la-thumb-tack:before { + content: "\f08d"; +} + +.la.la-external-link:before { + content: "\f35d"; +} + +.la.la-sign-in:before { + content: "\f2f6"; +} + +.la.la-github-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-lemon-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-lemon-o:before { + content: "\f094"; +} + +.la.la-square-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-square-o:before { + content: "\f0c8"; +} + +.la.la-bookmark-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-bookmark-o:before { + content: "\f02e"; +} + +.la.la-twitter { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-facebook { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-facebook:before { + content: "\f39e"; +} + +.la.la-facebook-f { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-facebook-f:before { + content: "\f39e"; +} + +.la.la-github { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-credit-card { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-feed:before { + content: "\f09e"; +} + +.la.la-hdd-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-hdd-o:before { + content: "\f0a0"; +} + +.la.la-hand-o-right { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-hand-o-right:before { + content: "\f0a4"; +} + +.la.la-hand-o-left { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-hand-o-left:before { + content: "\f0a5"; +} + +.la.la-hand-o-up { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-hand-o-up:before { + content: "\f0a6"; +} + +.la.la-hand-o-down { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-hand-o-down:before { + content: "\f0a7"; +} + +.la.la-arrows-alt:before { + content: "\f31e"; +} + +.la.la-group:before { + content: "\f0c0"; +} + +.la.la-chain:before { + content: "\f0c1"; +} + +.la.la-scissors:before { + content: "\f0c4"; +} + +.la.la-files-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-files-o:before { + content: "\f0c5"; +} + +.la.la-floppy-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-floppy-o:before { + content: "\f0c7"; +} + +.la.la-navicon:before { + content: "\f0c9"; +} + +.la.la-reorder:before { + content: "\f0c9"; +} + +.la.la-pinterest { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-pinterest-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-google-plus-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-google-plus { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-google-plus:before { + content: "\f0d5"; +} + +.la.la-money { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-money:before { + content: "\f3d1"; +} + +.la.la-unsorted:before { + content: "\f0dc"; +} + +.la.la-sort-desc:before { + content: "\f0dd"; +} + +.la.la-sort-asc:before { + content: "\f0de"; +} + +.la.la-linkedin { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-linkedin:before { + content: "\f0e1"; +} + +.la.la-rotate-left:before { + content: "\f0e2"; +} + +.la.la-legal:before { + content: "\f0e3"; +} + +.la.la-tachometer:before { + content: "\f3fd"; +} + +.la.la-dashboard:before { + content: "\f3fd"; +} + +.la.la-comment-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-comment-o:before { + content: "\f075"; +} + +.la.la-comments-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-comments-o:before { + content: "\f086"; +} + +.la.la-flash:before { + content: "\f0e7"; +} + +.la.la-clipboard { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-paste { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-paste:before { + content: "\f328"; +} + +.la.la-lightbulb-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-lightbulb-o:before { + content: "\f0eb"; +} + +.la.la-exchange:before { + content: "\f362"; +} + +.la.la-cloud-download:before { + content: "\f381"; +} + +.la.la-cloud-upload:before { + content: "\f382"; +} + +.la.la-bell-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-bell-o:before { + content: "\f0f3"; +} + +.la.la-cutlery:before { + content: "\f2e7"; +} + +.la.la-file-text-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-file-text-o:before { + content: "\f15c"; +} + +.la.la-building-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-building-o:before { + content: "\f1ad"; +} + +.la.la-hospital-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-hospital-o:before { + content: "\f0f8"; +} + +.la.la-tablet:before { + content: "\f3fa"; +} + +.la.la-mobile:before { + content: "\f3cd"; +} + +.la.la-mobile-phone:before { + content: "\f3cd"; +} + +.la.la-circle-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-circle-o:before { + content: "\f111"; +} + +.la.la-mail-reply:before { + content: "\f3e5"; +} + +.la.la-github-alt { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-folder-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-folder-o:before { + content: "\f07b"; +} + +.la.la-folder-open-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-folder-open-o:before { + content: "\f07c"; +} + +.la.la-smile-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-smile-o:before { + content: "\f118"; +} + +.la.la-frown-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-frown-o:before { + content: "\f119"; +} + +.la.la-meh-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-meh-o:before { + content: "\f11a"; +} + +.la.la-keyboard-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-keyboard-o:before { + content: "\f11c"; +} + +.la.la-flag-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-flag-o:before { + content: "\f024"; +} + +.la.la-mail-reply-all:before { + content: "\f122"; +} + +.la.la-star-half-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-star-half-o:before { + content: "\f089"; +} + +.la.la-star-half-empty { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-star-half-empty:before { + content: "\f089"; +} + +.la.la-star-half-full { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-star-half-full:before { + content: "\f089"; +} + +.la.la-code-fork:before { + content: "\f126"; +} + +.la.la-chain-broken:before { + content: "\f127"; +} + +.la.la-shield:before { + content: "\f3ed"; +} + +.la.la-calendar-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-calendar-o:before { + content: "\f133"; +} + +.la.la-maxcdn { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-html5 { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-css3 { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-ticket:before { + content: "\f3ff"; +} + +.la.la-minus-square-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-minus-square-o:before { + content: "\f146"; +} + +.la.la-level-up:before { + content: "\f3bf"; +} + +.la.la-level-down:before { + content: "\f3be"; +} + +.la.la-pencil-square:before { + content: "\f14b"; +} + +.la.la-external-link-square:before { + content: "\f360"; +} + +.la.la-compass { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-caret-square-o-down { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-caret-square-o-down:before { + content: "\f150"; +} + +.la.la-toggle-down { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-toggle-down:before { + content: "\f150"; +} + +.la.la-caret-square-o-up { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-caret-square-o-up:before { + content: "\f151"; +} + +.la.la-toggle-up { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-toggle-up:before { + content: "\f151"; +} + +.la.la-caret-square-o-right { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-caret-square-o-right:before { + content: "\f152"; +} + +.la.la-toggle-right { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-toggle-right:before { + content: "\f152"; +} + +.la.la-eur:before { + content: "\f153"; +} + +.la.la-euro:before { + content: "\f153"; +} + +.la.la-gbp:before { + content: "\f154"; +} + +.la.la-usd:before { + content: "\f155"; +} + +.la.la-dollar:before { + content: "\f155"; +} + +.la.la-inr:before { + content: "\f156"; +} + +.la.la-rupee:before { + content: "\f156"; +} + +.la.la-jpy:before { + content: "\f157"; +} + +.la.la-cny:before { + content: "\f157"; +} + +.la.la-rmb:before { + content: "\f157"; +} + +.la.la-yen:before { + content: "\f157"; +} + +.la.la-rub:before { + content: "\f158"; +} + +.la.la-ruble:before { + content: "\f158"; +} + +.la.la-rouble:before { + content: "\f158"; +} + +.la.la-krw:before { + content: "\f159"; +} + +.la.la-won:before { + content: "\f159"; +} + +.la.la-btc { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-bitcoin { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-bitcoin:before { + content: "\f15a"; +} + +.la.la-file-text:before { + content: "\f15c"; +} + +.la.la-sort-alpha-asc:before { + content: "\f15d"; +} + +.la.la-sort-alpha-desc:before { + content: "\f881"; +} + +.la.la-sort-amount-asc:before { + content: "\f160"; +} + +.la.la-sort-amount-desc:before { + content: "\f884"; +} + +.la.la-sort-numeric-asc:before { + content: "\f162"; +} + +.la.la-sort-numeric-desc:before { + content: "\f886"; +} + +.la.la-youtube-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-youtube { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-xing { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-xing-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-youtube-play { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-youtube-play:before { + content: "\f167"; +} + +.la.la-dropbox { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-stack-overflow { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-instagram { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-flickr { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-adn { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-bitbucket { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-bitbucket-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-bitbucket-square:before { + content: "\f171"; +} + +.la.la-tumblr { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-tumblr-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-long-arrow-down:before { + content: "\f309"; +} + +.la.la-long-arrow-up:before { + content: "\f30c"; +} + +.la.la-long-arrow-left:before { + content: "\f30a"; +} + +.la.la-long-arrow-right:before { + content: "\f30b"; +} + +.la.la-apple { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-windows { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-android { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-linux { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-dribbble { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-skype { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-foursquare { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-trello { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-gratipay { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-gittip { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-gittip:before { + content: "\f184"; +} + +.la.la-sun-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-sun-o:before { + content: "\f185"; +} + +.la.la-moon-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-moon-o:before { + content: "\f186"; +} + +.la.la-vk { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-weibo { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-renren { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-pagelines { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-stack-exchange { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-arrow-circle-o-right { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-arrow-circle-o-right:before { + content: "\f35a"; +} + +.la.la-arrow-circle-o-left { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-arrow-circle-o-left:before { + content: "\f359"; +} + +.la.la-caret-square-o-left { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-caret-square-o-left:before { + content: "\f191"; +} + +.la.la-toggle-left { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-toggle-left:before { + content: "\f191"; +} + +.la.la-dot-circle-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-dot-circle-o:before { + content: "\f192"; +} + +.la.la-vimeo-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-try:before { + content: "\f195"; +} + +.la.la-turkish-lira:before { + content: "\f195"; +} + +.la.la-plus-square-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-plus-square-o:before { + content: "\f0fe"; +} + +.la.la-slack { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-wordpress { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-openid { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-institution:before { + content: "\f19c"; +} + +.la.la-bank:before { + content: "\f19c"; +} + +.la.la-mortar-board:before { + content: "\f19d"; +} + +.la.la-yahoo { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-google { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-reddit { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-reddit-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-stumbleupon-circle { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-stumbleupon { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-delicious { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-digg { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-pied-piper-pp { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-pied-piper-alt { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-drupal { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-joomla { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-spoon:before { + content: "\f2e5"; +} + +.la.la-behance { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-behance-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-steam { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-steam-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-automobile:before { + content: "\f1b9"; +} + +.la.la-cab:before { + content: "\f1ba"; +} + +.la.la-envelope-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-envelope-o:before { + content: "\f0e0"; +} + +.la.la-deviantart { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-soundcloud { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-file-pdf-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-file-pdf-o:before { + content: "\f1c1"; +} + +.la.la-file-word-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-file-word-o:before { + content: "\f1c2"; +} + +.la.la-file-excel-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-file-excel-o:before { + content: "\f1c3"; +} + +.la.la-file-powerpoint-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-file-powerpoint-o:before { + content: "\f1c4"; +} + +.la.la-file-image-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-file-image-o:before { + content: "\f1c5"; +} + +.la.la-file-photo-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-file-photo-o:before { + content: "\f1c5"; +} + +.la.la-file-picture-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-file-picture-o:before { + content: "\f1c5"; +} + +.la.la-file-archive-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-file-archive-o:before { + content: "\f1c6"; +} + +.la.la-file-zip-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-file-zip-o:before { + content: "\f1c6"; +} + +.la.la-file-audio-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-file-audio-o:before { + content: "\f1c7"; +} + +.la.la-file-sound-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-file-sound-o:before { + content: "\f1c7"; +} + +.la.la-file-video-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-file-video-o:before { + content: "\f1c8"; +} + +.la.la-file-movie-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-file-movie-o:before { + content: "\f1c8"; +} + +.la.la-file-code-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-file-code-o:before { + content: "\f1c9"; +} + +.la.la-vine { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-codepen { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-jsfiddle { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-life-ring { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-life-bouy { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-life-bouy:before { + content: "\f1cd"; +} + +.la.la-life-buoy { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-life-buoy:before { + content: "\f1cd"; +} + +.la.la-life-saver { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-life-saver:before { + content: "\f1cd"; +} + +.la.la-support { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-support:before { + content: "\f1cd"; +} + +.la.la-circle-o-notch:before { + content: "\f1ce"; +} + +.la.la-rebel { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-ra { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-ra:before { + content: "\f1d0"; +} + +.la.la-resistance { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-resistance:before { + content: "\f1d0"; +} + +.la.la-empire { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-ge { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-ge:before { + content: "\f1d1"; +} + +.la.la-git-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-git { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-hacker-news { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-y-combinator-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-y-combinator-square:before { + content: "\f1d4"; +} + +.la.la-yc-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-yc-square:before { + content: "\f1d4"; +} + +.la.la-tencent-weibo { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-qq { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-weixin { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-wechat { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-wechat:before { + content: "\f1d7"; +} + +.la.la-send:before { + content: "\f1d8"; +} + +.la.la-paper-plane-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-paper-plane-o:before { + content: "\f1d8"; +} + +.la.la-send-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-send-o:before { + content: "\f1d8"; +} + +.la.la-circle-thin { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-circle-thin:before { + content: "\f111"; +} + +.la.la-header:before { + content: "\f1dc"; +} + +.la.la-sliders:before { + content: "\f1de"; +} + +.la.la-futbol-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-futbol-o:before { + content: "\f1e3"; +} + +.la.la-soccer-ball-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-soccer-ball-o:before { + content: "\f1e3"; +} + +.la.la-slideshare { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-twitch { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-yelp { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-newspaper-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-newspaper-o:before { + content: "\f1ea"; +} + +.la.la-paypal { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-google-wallet { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-cc-visa { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-cc-mastercard { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-cc-discover { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-cc-amex { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-cc-paypal { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-cc-stripe { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-bell-slash-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-bell-slash-o:before { + content: "\f1f6"; +} + +.la.la-trash:before { + content: "\f2ed"; +} + +.la.la-copyright { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-eyedropper:before { + content: "\f1fb"; +} + +.la.la-area-chart:before { + content: "\f1fe"; +} + +.la.la-pie-chart:before { + content: "\f200"; +} + +.la.la-line-chart:before { + content: "\f201"; +} + +.la.la-lastfm { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-lastfm-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-ioxhost { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-angellist { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-cc { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-cc:before { + content: "\f20a"; +} + +.la.la-ils:before { + content: "\f20b"; +} + +.la.la-shekel:before { + content: "\f20b"; +} + +.la.la-sheqel:before { + content: "\f20b"; +} + +.la.la-meanpath { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-meanpath:before { + content: "\f2b4"; +} + +.la.la-buysellads { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-connectdevelop { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-dashcube { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-forumbee { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-leanpub { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-sellsy { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-shirtsinbulk { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-simplybuilt { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-skyatlas { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-diamond { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-diamond:before { + content: "\f3a5"; +} + +.la.la-intersex:before { + content: "\f224"; +} + +.la.la-facebook-official { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-facebook-official:before { + content: "\f09a"; +} + +.la.la-pinterest-p { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-whatsapp { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-hotel:before { + content: "\f236"; +} + +.la.la-viacoin { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-medium { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-y-combinator { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-yc { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-yc:before { + content: "\f23b"; +} + +.la.la-optin-monster { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-opencart { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-expeditedssl { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-battery-4:before { + content: "\f240"; +} + +.la.la-battery:before { + content: "\f240"; +} + +.la.la-battery-3:before { + content: "\f241"; +} + +.la.la-battery-2:before { + content: "\f242"; +} + +.la.la-battery-1:before { + content: "\f243"; +} + +.la.la-battery-0:before { + content: "\f244"; +} + +.la.la-object-group { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-object-ungroup { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-sticky-note-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-sticky-note-o:before { + content: "\f249"; +} + +.la.la-cc-jcb { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-cc-diners-club { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-clone { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-hourglass-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-hourglass-o:before { + content: "\f254"; +} + +.la.la-hourglass-1:before { + content: "\f251"; +} + +.la.la-hourglass-2:before { + content: "\f252"; +} + +.la.la-hourglass-3:before { + content: "\f253"; +} + +.la.la-hand-rock-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-hand-rock-o:before { + content: "\f255"; +} + +.la.la-hand-grab-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-hand-grab-o:before { + content: "\f255"; +} + +.la.la-hand-paper-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-hand-paper-o:before { + content: "\f256"; +} + +.la.la-hand-stop-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-hand-stop-o:before { + content: "\f256"; +} + +.la.la-hand-scissors-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-hand-scissors-o:before { + content: "\f257"; +} + +.la.la-hand-lizard-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-hand-lizard-o:before { + content: "\f258"; +} + +.la.la-hand-spock-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-hand-spock-o:before { + content: "\f259"; +} + +.la.la-hand-pointer-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-hand-pointer-o:before { + content: "\f25a"; +} + +.la.la-hand-peace-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-hand-peace-o:before { + content: "\f25b"; +} + +.la.la-registered { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-creative-commons { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-gg { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-gg-circle { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-tripadvisor { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-odnoklassniki { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-odnoklassniki-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-get-pocket { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-wikipedia-w { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-safari { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-chrome { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-firefox { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-opera { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-internet-explorer { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-television:before { + content: "\f26c"; +} + +.la.la-contao { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-500px { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-amazon { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-calendar-plus-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-calendar-plus-o:before { + content: "\f271"; +} + +.la.la-calendar-minus-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-calendar-minus-o:before { + content: "\f272"; +} + +.la.la-calendar-times-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-calendar-times-o:before { + content: "\f273"; +} + +.la.la-calendar-check-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-calendar-check-o:before { + content: "\f274"; +} + +.la.la-map-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-map-o:before { + content: "\f279"; +} + +.la.la-commenting:before { + content: "\f4ad"; +} + +.la.la-commenting-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-commenting-o:before { + content: "\f4ad"; +} + +.la.la-houzz { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-vimeo { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-vimeo:before { + content: "\f27d"; +} + +.la.la-black-tie { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-fonticons { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-reddit-alien { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-edge { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-credit-card-alt:before { + content: "\f09d"; +} + +.la.la-codiepie { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-modx { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-fort-awesome { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-usb { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-product-hunt { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-mixcloud { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-scribd { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-pause-circle-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-pause-circle-o:before { + content: "\f28b"; +} + +.la.la-stop-circle-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-stop-circle-o:before { + content: "\f28d"; +} + +.la.la-bluetooth { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-bluetooth-b { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-gitlab { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-wpbeginner { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-wpforms { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-envira { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-wheelchair-alt { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-wheelchair-alt:before { + content: "\f368"; +} + +.la.la-question-circle-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-question-circle-o:before { + content: "\f059"; +} + +.la.la-volume-control-phone:before { + content: "\f2a0"; +} + +.la.la-asl-interpreting:before { + content: "\f2a3"; +} + +.la.la-deafness:before { + content: "\f2a4"; +} + +.la.la-hard-of-hearing:before { + content: "\f2a4"; +} + +.la.la-glide { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-glide-g { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-signing:before { + content: "\f2a7"; +} + +.la.la-viadeo { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-viadeo-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-snapchat { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-snapchat-ghost { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-snapchat-square { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-pied-piper { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-first-order { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-yoast { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-themeisle { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-google-plus-official { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-google-plus-official:before { + content: "\f2b3"; +} + +.la.la-google-plus-circle { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-google-plus-circle:before { + content: "\f2b3"; +} + +.la.la-font-awesome { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-fa { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-fa:before { + content: "\f2b4"; +} + +.la.la-handshake-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-handshake-o:before { + content: "\f2b5"; +} + +.la.la-envelope-open-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-envelope-open-o:before { + content: "\f2b6"; +} + +.la.la-linode { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-address-book-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-address-book-o:before { + content: "\f2b9"; +} + +.la.la-vcard:before { + content: "\f2bb"; +} + +.la.la-address-card-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-address-card-o:before { + content: "\f2bb"; +} + +.la.la-vcard-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-vcard-o:before { + content: "\f2bb"; +} + +.la.la-user-circle-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-user-circle-o:before { + content: "\f2bd"; +} + +.la.la-user-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-user-o:before { + content: "\f007"; +} + +.la.la-id-badge { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-drivers-license:before { + content: "\f2c2"; +} + +.la.la-id-card-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-id-card-o:before { + content: "\f2c2"; +} + +.la.la-drivers-license-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-drivers-license-o:before { + content: "\f2c2"; +} + +.la.la-quora { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-free-code-camp { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-telegram { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-thermometer-4:before { + content: "\f2c7"; +} + +.la.la-thermometer:before { + content: "\f2c7"; +} + +.la.la-thermometer-3:before { + content: "\f2c8"; +} + +.la.la-thermometer-2:before { + content: "\f2c9"; +} + +.la.la-thermometer-1:before { + content: "\f2ca"; +} + +.la.la-thermometer-0:before { + content: "\f2cb"; +} + +.la.la-bathtub:before { + content: "\f2cd"; +} + +.la.la-s15:before { + content: "\f2cd"; +} + +.la.la-window-maximize { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-window-restore { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-times-rectangle:before { + content: "\f410"; +} + +.la.la-window-close-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-window-close-o:before { + content: "\f410"; +} + +.la.la-times-rectangle-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-times-rectangle-o:before { + content: "\f410"; +} + +.la.la-bandcamp { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-grav { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-etsy { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-imdb { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-ravelry { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-eercast { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-eercast:before { + content: "\f2da"; +} + +.la.la-snowflake-o { + font-family: "Line Awesome Free"; + font-weight: 400; +} + +.la.la-snowflake-o:before { + content: "\f2dc"; +} + +.la.la-superpowers { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-wpexplorer { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +.la.la-spotify { + font-family: "Line Awesome Brands"; + font-weight: 400; +} + +@font-face { + font-display: block; + font-family: "bootstrap-icons"; + src: url("fonts/bootstrap-icons/bootstrap-icons.woff2?24e3eb84d0bcaf83d77f904c78ac1f47") format("woff2"), url("fonts/bootstrap-icons/bootstrap-icons.woff?24e3eb84d0bcaf83d77f904c78ac1f47") format("woff"); +} +.bi::before, +[class^=bi-]::before, +[class*=" bi-"]::before { + display: inline-block; + font-family: bootstrap-icons !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -0.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.bi-123::before { + content: "\f67f"; +} + +.bi-alarm-fill::before { + content: "\f101"; +} + +.bi-alarm::before { + content: "\f102"; +} + +.bi-align-bottom::before { + content: "\f103"; +} + +.bi-align-center::before { + content: "\f104"; +} + +.bi-align-end::before { + content: "\f105"; +} + +.bi-align-middle::before { + content: "\f106"; +} + +.bi-align-start::before { + content: "\f107"; +} + +.bi-align-top::before { + content: "\f108"; +} + +.bi-alt::before { + content: "\f109"; +} + +.bi-app-indicator::before { + content: "\f10a"; +} + +.bi-app::before { + content: "\f10b"; +} + +.bi-archive-fill::before { + content: "\f10c"; +} + +.bi-archive::before { + content: "\f10d"; +} + +.bi-arrow-90deg-down::before { + content: "\f10e"; +} + +.bi-arrow-90deg-left::before { + content: "\f10f"; +} + +.bi-arrow-90deg-right::before { + content: "\f110"; +} + +.bi-arrow-90deg-up::before { + content: "\f111"; +} + +.bi-arrow-bar-down::before { + content: "\f112"; +} + +.bi-arrow-bar-left::before { + content: "\f113"; +} + +.bi-arrow-bar-right::before { + content: "\f114"; +} + +.bi-arrow-bar-up::before { + content: "\f115"; +} + +.bi-arrow-clockwise::before { + content: "\f116"; +} + +.bi-arrow-counterclockwise::before { + content: "\f117"; +} + +.bi-arrow-down-circle-fill::before { + content: "\f118"; +} + +.bi-arrow-down-circle::before { + content: "\f119"; +} + +.bi-arrow-down-left-circle-fill::before { + content: "\f11a"; +} + +.bi-arrow-down-left-circle::before { + content: "\f11b"; +} + +.bi-arrow-down-left-square-fill::before { + content: "\f11c"; +} + +.bi-arrow-down-left-square::before { + content: "\f11d"; +} + +.bi-arrow-down-left::before { + content: "\f11e"; +} + +.bi-arrow-down-right-circle-fill::before { + content: "\f11f"; +} + +.bi-arrow-down-right-circle::before { + content: "\f120"; +} + +.bi-arrow-down-right-square-fill::before { + content: "\f121"; +} + +.bi-arrow-down-right-square::before { + content: "\f122"; +} + +.bi-arrow-down-right::before { + content: "\f123"; +} + +.bi-arrow-down-short::before { + content: "\f124"; +} + +.bi-arrow-down-square-fill::before { + content: "\f125"; +} + +.bi-arrow-down-square::before { + content: "\f126"; +} + +.bi-arrow-down-up::before { + content: "\f127"; +} + +.bi-arrow-down::before { + content: "\f128"; +} + +.bi-arrow-left-circle-fill::before { + content: "\f129"; +} + +.bi-arrow-left-circle::before { + content: "\f12a"; +} + +.bi-arrow-left-right::before { + content: "\f12b"; +} + +.bi-arrow-left-short::before { + content: "\f12c"; +} + +.bi-arrow-left-square-fill::before { + content: "\f12d"; +} + +.bi-arrow-left-square::before { + content: "\f12e"; +} + +.bi-arrow-left::before { + content: "\f12f"; +} + +.bi-arrow-repeat::before { + content: "\f130"; +} + +.bi-arrow-return-left::before { + content: "\f131"; +} + +.bi-arrow-return-right::before { + content: "\f132"; +} + +.bi-arrow-right-circle-fill::before { + content: "\f133"; +} + +.bi-arrow-right-circle::before { + content: "\f134"; +} + +.bi-arrow-right-short::before { + content: "\f135"; +} + +.bi-arrow-right-square-fill::before { + content: "\f136"; +} + +.bi-arrow-right-square::before { + content: "\f137"; +} + +.bi-arrow-right::before { + content: "\f138"; +} + +.bi-arrow-up-circle-fill::before { + content: "\f139"; +} + +.bi-arrow-up-circle::before { + content: "\f13a"; +} + +.bi-arrow-up-left-circle-fill::before { + content: "\f13b"; +} + +.bi-arrow-up-left-circle::before { + content: "\f13c"; +} + +.bi-arrow-up-left-square-fill::before { + content: "\f13d"; +} + +.bi-arrow-up-left-square::before { + content: "\f13e"; +} + +.bi-arrow-up-left::before { + content: "\f13f"; +} + +.bi-arrow-up-right-circle-fill::before { + content: "\f140"; +} + +.bi-arrow-up-right-circle::before { + content: "\f141"; +} + +.bi-arrow-up-right-square-fill::before { + content: "\f142"; +} + +.bi-arrow-up-right-square::before { + content: "\f143"; +} + +.bi-arrow-up-right::before { + content: "\f144"; +} + +.bi-arrow-up-short::before { + content: "\f145"; +} + +.bi-arrow-up-square-fill::before { + content: "\f146"; +} + +.bi-arrow-up-square::before { + content: "\f147"; +} + +.bi-arrow-up::before { + content: "\f148"; +} + +.bi-arrows-angle-contract::before { + content: "\f149"; +} + +.bi-arrows-angle-expand::before { + content: "\f14a"; +} + +.bi-arrows-collapse::before { + content: "\f14b"; +} + +.bi-arrows-expand::before { + content: "\f14c"; +} + +.bi-arrows-fullscreen::before { + content: "\f14d"; +} + +.bi-arrows-move::before { + content: "\f14e"; +} + +.bi-aspect-ratio-fill::before { + content: "\f14f"; +} + +.bi-aspect-ratio::before { + content: "\f150"; +} + +.bi-asterisk::before { + content: "\f151"; +} + +.bi-at::before { + content: "\f152"; +} + +.bi-award-fill::before { + content: "\f153"; +} + +.bi-award::before { + content: "\f154"; +} + +.bi-back::before { + content: "\f155"; +} + +.bi-backspace-fill::before { + content: "\f156"; +} + +.bi-backspace-reverse-fill::before { + content: "\f157"; +} + +.bi-backspace-reverse::before { + content: "\f158"; +} + +.bi-backspace::before { + content: "\f159"; +} + +.bi-badge-3d-fill::before { + content: "\f15a"; +} + +.bi-badge-3d::before { + content: "\f15b"; +} + +.bi-badge-4k-fill::before { + content: "\f15c"; +} + +.bi-badge-4k::before { + content: "\f15d"; +} + +.bi-badge-8k-fill::before { + content: "\f15e"; +} + +.bi-badge-8k::before { + content: "\f15f"; +} + +.bi-badge-ad-fill::before { + content: "\f160"; +} + +.bi-badge-ad::before { + content: "\f161"; +} + +.bi-badge-ar-fill::before { + content: "\f162"; +} + +.bi-badge-ar::before { + content: "\f163"; +} + +.bi-badge-cc-fill::before { + content: "\f164"; +} + +.bi-badge-cc::before { + content: "\f165"; +} + +.bi-badge-hd-fill::before { + content: "\f166"; +} + +.bi-badge-hd::before { + content: "\f167"; +} + +.bi-badge-tm-fill::before { + content: "\f168"; +} + +.bi-badge-tm::before { + content: "\f169"; +} + +.bi-badge-vo-fill::before { + content: "\f16a"; +} + +.bi-badge-vo::before { + content: "\f16b"; +} + +.bi-badge-vr-fill::before { + content: "\f16c"; +} + +.bi-badge-vr::before { + content: "\f16d"; +} + +.bi-badge-wc-fill::before { + content: "\f16e"; +} + +.bi-badge-wc::before { + content: "\f16f"; +} + +.bi-bag-check-fill::before { + content: "\f170"; +} + +.bi-bag-check::before { + content: "\f171"; +} + +.bi-bag-dash-fill::before { + content: "\f172"; +} + +.bi-bag-dash::before { + content: "\f173"; +} + +.bi-bag-fill::before { + content: "\f174"; +} + +.bi-bag-plus-fill::before { + content: "\f175"; +} + +.bi-bag-plus::before { + content: "\f176"; +} + +.bi-bag-x-fill::before { + content: "\f177"; +} + +.bi-bag-x::before { + content: "\f178"; +} + +.bi-bag::before { + content: "\f179"; +} + +.bi-bar-chart-fill::before { + content: "\f17a"; +} + +.bi-bar-chart-line-fill::before { + content: "\f17b"; +} + +.bi-bar-chart-line::before { + content: "\f17c"; +} + +.bi-bar-chart-steps::before { + content: "\f17d"; +} + +.bi-bar-chart::before { + content: "\f17e"; +} + +.bi-basket-fill::before { + content: "\f17f"; +} + +.bi-basket::before { + content: "\f180"; +} + +.bi-basket2-fill::before { + content: "\f181"; +} + +.bi-basket2::before { + content: "\f182"; +} + +.bi-basket3-fill::before { + content: "\f183"; +} + +.bi-basket3::before { + content: "\f184"; +} + +.bi-battery-charging::before { + content: "\f185"; +} + +.bi-battery-full::before { + content: "\f186"; +} + +.bi-battery-half::before { + content: "\f187"; +} + +.bi-battery::before { + content: "\f188"; +} + +.bi-bell-fill::before { + content: "\f189"; +} + +.bi-bell::before { + content: "\f18a"; +} + +.bi-bezier::before { + content: "\f18b"; +} + +.bi-bezier2::before { + content: "\f18c"; +} + +.bi-bicycle::before { + content: "\f18d"; +} + +.bi-binoculars-fill::before { + content: "\f18e"; +} + +.bi-binoculars::before { + content: "\f18f"; +} + +.bi-blockquote-left::before { + content: "\f190"; +} + +.bi-blockquote-right::before { + content: "\f191"; +} + +.bi-book-fill::before { + content: "\f192"; +} + +.bi-book-half::before { + content: "\f193"; +} + +.bi-book::before { + content: "\f194"; +} + +.bi-bookmark-check-fill::before { + content: "\f195"; +} + +.bi-bookmark-check::before { + content: "\f196"; +} + +.bi-bookmark-dash-fill::before { + content: "\f197"; +} + +.bi-bookmark-dash::before { + content: "\f198"; +} + +.bi-bookmark-fill::before { + content: "\f199"; +} + +.bi-bookmark-heart-fill::before { + content: "\f19a"; +} + +.bi-bookmark-heart::before { + content: "\f19b"; +} + +.bi-bookmark-plus-fill::before { + content: "\f19c"; +} + +.bi-bookmark-plus::before { + content: "\f19d"; +} + +.bi-bookmark-star-fill::before { + content: "\f19e"; +} + +.bi-bookmark-star::before { + content: "\f19f"; +} + +.bi-bookmark-x-fill::before { + content: "\f1a0"; +} + +.bi-bookmark-x::before { + content: "\f1a1"; +} + +.bi-bookmark::before { + content: "\f1a2"; +} + +.bi-bookmarks-fill::before { + content: "\f1a3"; +} + +.bi-bookmarks::before { + content: "\f1a4"; +} + +.bi-bookshelf::before { + content: "\f1a5"; +} + +.bi-bootstrap-fill::before { + content: "\f1a6"; +} + +.bi-bootstrap-reboot::before { + content: "\f1a7"; +} + +.bi-bootstrap::before { + content: "\f1a8"; +} + +.bi-border-all::before { + content: "\f1a9"; +} + +.bi-border-bottom::before { + content: "\f1aa"; +} + +.bi-border-center::before { + content: "\f1ab"; +} + +.bi-border-inner::before { + content: "\f1ac"; +} + +.bi-border-left::before { + content: "\f1ad"; +} + +.bi-border-middle::before { + content: "\f1ae"; +} + +.bi-border-outer::before { + content: "\f1af"; +} + +.bi-border-right::before { + content: "\f1b0"; +} + +.bi-border-style::before { + content: "\f1b1"; +} + +.bi-border-top::before { + content: "\f1b2"; +} + +.bi-border-width::before { + content: "\f1b3"; +} + +.bi-border::before { + content: "\f1b4"; +} + +.bi-bounding-box-circles::before { + content: "\f1b5"; +} + +.bi-bounding-box::before { + content: "\f1b6"; +} + +.bi-box-arrow-down-left::before { + content: "\f1b7"; +} + +.bi-box-arrow-down-right::before { + content: "\f1b8"; +} + +.bi-box-arrow-down::before { + content: "\f1b9"; +} + +.bi-box-arrow-in-down-left::before { + content: "\f1ba"; +} + +.bi-box-arrow-in-down-right::before { + content: "\f1bb"; +} + +.bi-box-arrow-in-down::before { + content: "\f1bc"; +} + +.bi-box-arrow-in-left::before { + content: "\f1bd"; +} + +.bi-box-arrow-in-right::before { + content: "\f1be"; +} + +.bi-box-arrow-in-up-left::before { + content: "\f1bf"; +} + +.bi-box-arrow-in-up-right::before { + content: "\f1c0"; +} + +.bi-box-arrow-in-up::before { + content: "\f1c1"; +} + +.bi-box-arrow-left::before { + content: "\f1c2"; +} + +.bi-box-arrow-right::before { + content: "\f1c3"; +} + +.bi-box-arrow-up-left::before { + content: "\f1c4"; +} + +.bi-box-arrow-up-right::before { + content: "\f1c5"; +} + +.bi-box-arrow-up::before { + content: "\f1c6"; +} + +.bi-box-seam::before { + content: "\f1c7"; +} + +.bi-box::before { + content: "\f1c8"; +} + +.bi-braces::before { + content: "\f1c9"; +} + +.bi-bricks::before { + content: "\f1ca"; +} + +.bi-briefcase-fill::before { + content: "\f1cb"; +} + +.bi-briefcase::before { + content: "\f1cc"; +} + +.bi-brightness-alt-high-fill::before { + content: "\f1cd"; +} + +.bi-brightness-alt-high::before { + content: "\f1ce"; +} + +.bi-brightness-alt-low-fill::before { + content: "\f1cf"; +} + +.bi-brightness-alt-low::before { + content: "\f1d0"; +} + +.bi-brightness-high-fill::before { + content: "\f1d1"; +} + +.bi-brightness-high::before { + content: "\f1d2"; +} + +.bi-brightness-low-fill::before { + content: "\f1d3"; +} + +.bi-brightness-low::before { + content: "\f1d4"; +} + +.bi-broadcast-pin::before { + content: "\f1d5"; +} + +.bi-broadcast::before { + content: "\f1d6"; +} + +.bi-brush-fill::before { + content: "\f1d7"; +} + +.bi-brush::before { + content: "\f1d8"; +} + +.bi-bucket-fill::before { + content: "\f1d9"; +} + +.bi-bucket::before { + content: "\f1da"; +} + +.bi-bug-fill::before { + content: "\f1db"; +} + +.bi-bug::before { + content: "\f1dc"; +} + +.bi-building::before { + content: "\f1dd"; +} + +.bi-bullseye::before { + content: "\f1de"; +} + +.bi-calculator-fill::before { + content: "\f1df"; +} + +.bi-calculator::before { + content: "\f1e0"; +} + +.bi-calendar-check-fill::before { + content: "\f1e1"; +} + +.bi-calendar-check::before { + content: "\f1e2"; +} + +.bi-calendar-date-fill::before { + content: "\f1e3"; +} + +.bi-calendar-date::before { + content: "\f1e4"; +} + +.bi-calendar-day-fill::before { + content: "\f1e5"; +} + +.bi-calendar-day::before { + content: "\f1e6"; +} + +.bi-calendar-event-fill::before { + content: "\f1e7"; +} + +.bi-calendar-event::before { + content: "\f1e8"; +} + +.bi-calendar-fill::before { + content: "\f1e9"; +} + +.bi-calendar-minus-fill::before { + content: "\f1ea"; +} + +.bi-calendar-minus::before { + content: "\f1eb"; +} + +.bi-calendar-month-fill::before { + content: "\f1ec"; +} + +.bi-calendar-month::before { + content: "\f1ed"; +} + +.bi-calendar-plus-fill::before { + content: "\f1ee"; +} + +.bi-calendar-plus::before { + content: "\f1ef"; +} + +.bi-calendar-range-fill::before { + content: "\f1f0"; +} + +.bi-calendar-range::before { + content: "\f1f1"; +} + +.bi-calendar-week-fill::before { + content: "\f1f2"; +} + +.bi-calendar-week::before { + content: "\f1f3"; +} + +.bi-calendar-x-fill::before { + content: "\f1f4"; +} + +.bi-calendar-x::before { + content: "\f1f5"; +} + +.bi-calendar::before { + content: "\f1f6"; +} + +.bi-calendar2-check-fill::before { + content: "\f1f7"; +} + +.bi-calendar2-check::before { + content: "\f1f8"; +} + +.bi-calendar2-date-fill::before { + content: "\f1f9"; +} + +.bi-calendar2-date::before { + content: "\f1fa"; +} + +.bi-calendar2-day-fill::before { + content: "\f1fb"; +} + +.bi-calendar2-day::before { + content: "\f1fc"; +} + +.bi-calendar2-event-fill::before { + content: "\f1fd"; +} + +.bi-calendar2-event::before { + content: "\f1fe"; +} + +.bi-calendar2-fill::before { + content: "\f1ff"; +} + +.bi-calendar2-minus-fill::before { + content: "\f200"; +} + +.bi-calendar2-minus::before { + content: "\f201"; +} + +.bi-calendar2-month-fill::before { + content: "\f202"; +} + +.bi-calendar2-month::before { + content: "\f203"; +} + +.bi-calendar2-plus-fill::before { + content: "\f204"; +} + +.bi-calendar2-plus::before { + content: "\f205"; +} + +.bi-calendar2-range-fill::before { + content: "\f206"; +} + +.bi-calendar2-range::before { + content: "\f207"; +} + +.bi-calendar2-week-fill::before { + content: "\f208"; +} + +.bi-calendar2-week::before { + content: "\f209"; +} + +.bi-calendar2-x-fill::before { + content: "\f20a"; +} + +.bi-calendar2-x::before { + content: "\f20b"; +} + +.bi-calendar2::before { + content: "\f20c"; +} + +.bi-calendar3-event-fill::before { + content: "\f20d"; +} + +.bi-calendar3-event::before { + content: "\f20e"; +} + +.bi-calendar3-fill::before { + content: "\f20f"; +} + +.bi-calendar3-range-fill::before { + content: "\f210"; +} + +.bi-calendar3-range::before { + content: "\f211"; +} + +.bi-calendar3-week-fill::before { + content: "\f212"; +} + +.bi-calendar3-week::before { + content: "\f213"; +} + +.bi-calendar3::before { + content: "\f214"; +} + +.bi-calendar4-event::before { + content: "\f215"; +} + +.bi-calendar4-range::before { + content: "\f216"; +} + +.bi-calendar4-week::before { + content: "\f217"; +} + +.bi-calendar4::before { + content: "\f218"; +} + +.bi-camera-fill::before { + content: "\f219"; +} + +.bi-camera-reels-fill::before { + content: "\f21a"; +} + +.bi-camera-reels::before { + content: "\f21b"; +} + +.bi-camera-video-fill::before { + content: "\f21c"; +} + +.bi-camera-video-off-fill::before { + content: "\f21d"; +} + +.bi-camera-video-off::before { + content: "\f21e"; +} + +.bi-camera-video::before { + content: "\f21f"; +} + +.bi-camera::before { + content: "\f220"; +} + +.bi-camera2::before { + content: "\f221"; +} + +.bi-capslock-fill::before { + content: "\f222"; +} + +.bi-capslock::before { + content: "\f223"; +} + +.bi-card-checklist::before { + content: "\f224"; +} + +.bi-card-heading::before { + content: "\f225"; +} + +.bi-card-image::before { + content: "\f226"; +} + +.bi-card-list::before { + content: "\f227"; +} + +.bi-card-text::before { + content: "\f228"; +} + +.bi-caret-down-fill::before { + content: "\f229"; +} + +.bi-caret-down-square-fill::before { + content: "\f22a"; +} + +.bi-caret-down-square::before { + content: "\f22b"; +} + +.bi-caret-down::before { + content: "\f22c"; +} + +.bi-caret-left-fill::before { + content: "\f22d"; +} + +.bi-caret-left-square-fill::before { + content: "\f22e"; +} + +.bi-caret-left-square::before { + content: "\f22f"; +} + +.bi-caret-left::before { + content: "\f230"; +} + +.bi-caret-right-fill::before { + content: "\f231"; +} + +.bi-caret-right-square-fill::before { + content: "\f232"; +} + +.bi-caret-right-square::before { + content: "\f233"; +} + +.bi-caret-right::before { + content: "\f234"; +} + +.bi-caret-up-fill::before { + content: "\f235"; +} + +.bi-caret-up-square-fill::before { + content: "\f236"; +} + +.bi-caret-up-square::before { + content: "\f237"; +} + +.bi-caret-up::before { + content: "\f238"; +} + +.bi-cart-check-fill::before { + content: "\f239"; +} + +.bi-cart-check::before { + content: "\f23a"; +} + +.bi-cart-dash-fill::before { + content: "\f23b"; +} + +.bi-cart-dash::before { + content: "\f23c"; +} + +.bi-cart-fill::before { + content: "\f23d"; +} + +.bi-cart-plus-fill::before { + content: "\f23e"; +} + +.bi-cart-plus::before { + content: "\f23f"; +} + +.bi-cart-x-fill::before { + content: "\f240"; +} + +.bi-cart-x::before { + content: "\f241"; +} + +.bi-cart::before { + content: "\f242"; +} + +.bi-cart2::before { + content: "\f243"; +} + +.bi-cart3::before { + content: "\f244"; +} + +.bi-cart4::before { + content: "\f245"; +} + +.bi-cash-stack::before { + content: "\f246"; +} + +.bi-cash::before { + content: "\f247"; +} + +.bi-cast::before { + content: "\f248"; +} + +.bi-chat-dots-fill::before { + content: "\f249"; +} + +.bi-chat-dots::before { + content: "\f24a"; +} + +.bi-chat-fill::before { + content: "\f24b"; +} + +.bi-chat-left-dots-fill::before { + content: "\f24c"; +} + +.bi-chat-left-dots::before { + content: "\f24d"; +} + +.bi-chat-left-fill::before { + content: "\f24e"; +} + +.bi-chat-left-quote-fill::before { + content: "\f24f"; +} + +.bi-chat-left-quote::before { + content: "\f250"; +} + +.bi-chat-left-text-fill::before { + content: "\f251"; +} + +.bi-chat-left-text::before { + content: "\f252"; +} + +.bi-chat-left::before { + content: "\f253"; +} + +.bi-chat-quote-fill::before { + content: "\f254"; +} + +.bi-chat-quote::before { + content: "\f255"; +} + +.bi-chat-right-dots-fill::before { + content: "\f256"; +} + +.bi-chat-right-dots::before { + content: "\f257"; +} + +.bi-chat-right-fill::before { + content: "\f258"; +} + +.bi-chat-right-quote-fill::before { + content: "\f259"; +} + +.bi-chat-right-quote::before { + content: "\f25a"; +} + +.bi-chat-right-text-fill::before { + content: "\f25b"; +} + +.bi-chat-right-text::before { + content: "\f25c"; +} + +.bi-chat-right::before { + content: "\f25d"; +} + +.bi-chat-square-dots-fill::before { + content: "\f25e"; +} + +.bi-chat-square-dots::before { + content: "\f25f"; +} + +.bi-chat-square-fill::before { + content: "\f260"; +} + +.bi-chat-square-quote-fill::before { + content: "\f261"; +} + +.bi-chat-square-quote::before { + content: "\f262"; +} + +.bi-chat-square-text-fill::before { + content: "\f263"; +} + +.bi-chat-square-text::before { + content: "\f264"; +} + +.bi-chat-square::before { + content: "\f265"; +} + +.bi-chat-text-fill::before { + content: "\f266"; +} + +.bi-chat-text::before { + content: "\f267"; +} + +.bi-chat::before { + content: "\f268"; +} + +.bi-check-all::before { + content: "\f269"; +} + +.bi-check-circle-fill::before { + content: "\f26a"; +} + +.bi-check-circle::before { + content: "\f26b"; +} + +.bi-check-square-fill::before { + content: "\f26c"; +} + +.bi-check-square::before { + content: "\f26d"; +} + +.bi-check::before { + content: "\f26e"; +} + +.bi-check2-all::before { + content: "\f26f"; +} + +.bi-check2-circle::before { + content: "\f270"; +} + +.bi-check2-square::before { + content: "\f271"; +} + +.bi-check2::before { + content: "\f272"; +} + +.bi-chevron-bar-contract::before { + content: "\f273"; +} + +.bi-chevron-bar-down::before { + content: "\f274"; +} + +.bi-chevron-bar-expand::before { + content: "\f275"; +} + +.bi-chevron-bar-left::before { + content: "\f276"; +} + +.bi-chevron-bar-right::before { + content: "\f277"; +} + +.bi-chevron-bar-up::before { + content: "\f278"; +} + +.bi-chevron-compact-down::before { + content: "\f279"; +} + +.bi-chevron-compact-left::before { + content: "\f27a"; +} + +.bi-chevron-compact-right::before { + content: "\f27b"; +} + +.bi-chevron-compact-up::before { + content: "\f27c"; +} + +.bi-chevron-contract::before { + content: "\f27d"; +} + +.bi-chevron-double-down::before { + content: "\f27e"; +} + +.bi-chevron-double-left::before { + content: "\f27f"; +} + +.bi-chevron-double-right::before { + content: "\f280"; +} + +.bi-chevron-double-up::before { + content: "\f281"; +} + +.bi-chevron-down::before { + content: "\f282"; +} + +.bi-chevron-expand::before { + content: "\f283"; +} + +.bi-chevron-left::before { + content: "\f284"; +} + +.bi-chevron-right::before { + content: "\f285"; +} + +.bi-chevron-up::before { + content: "\f286"; +} + +.bi-circle-fill::before { + content: "\f287"; +} + +.bi-circle-half::before { + content: "\f288"; +} + +.bi-circle-square::before { + content: "\f289"; +} + +.bi-circle::before { + content: "\f28a"; +} + +.bi-clipboard-check::before { + content: "\f28b"; +} + +.bi-clipboard-data::before { + content: "\f28c"; +} + +.bi-clipboard-minus::before { + content: "\f28d"; +} + +.bi-clipboard-plus::before { + content: "\f28e"; +} + +.bi-clipboard-x::before { + content: "\f28f"; +} + +.bi-clipboard::before { + content: "\f290"; +} + +.bi-clock-fill::before { + content: "\f291"; +} + +.bi-clock-history::before { + content: "\f292"; +} + +.bi-clock::before { + content: "\f293"; +} + +.bi-cloud-arrow-down-fill::before { + content: "\f294"; +} + +.bi-cloud-arrow-down::before { + content: "\f295"; +} + +.bi-cloud-arrow-up-fill::before { + content: "\f296"; +} + +.bi-cloud-arrow-up::before { + content: "\f297"; +} + +.bi-cloud-check-fill::before { + content: "\f298"; +} + +.bi-cloud-check::before { + content: "\f299"; +} + +.bi-cloud-download-fill::before { + content: "\f29a"; +} + +.bi-cloud-download::before { + content: "\f29b"; +} + +.bi-cloud-drizzle-fill::before { + content: "\f29c"; +} + +.bi-cloud-drizzle::before { + content: "\f29d"; +} + +.bi-cloud-fill::before { + content: "\f29e"; +} + +.bi-cloud-fog-fill::before { + content: "\f29f"; +} + +.bi-cloud-fog::before { + content: "\f2a0"; +} + +.bi-cloud-fog2-fill::before { + content: "\f2a1"; +} + +.bi-cloud-fog2::before { + content: "\f2a2"; +} + +.bi-cloud-hail-fill::before { + content: "\f2a3"; +} + +.bi-cloud-hail::before { + content: "\f2a4"; +} + +.bi-cloud-haze-1::before { + content: "\f2a5"; +} + +.bi-cloud-haze-fill::before { + content: "\f2a6"; +} + +.bi-cloud-haze::before { + content: "\f2a7"; +} + +.bi-cloud-haze2-fill::before { + content: "\f2a8"; +} + +.bi-cloud-lightning-fill::before { + content: "\f2a9"; +} + +.bi-cloud-lightning-rain-fill::before { + content: "\f2aa"; +} + +.bi-cloud-lightning-rain::before { + content: "\f2ab"; +} + +.bi-cloud-lightning::before { + content: "\f2ac"; +} + +.bi-cloud-minus-fill::before { + content: "\f2ad"; +} + +.bi-cloud-minus::before { + content: "\f2ae"; +} + +.bi-cloud-moon-fill::before { + content: "\f2af"; +} + +.bi-cloud-moon::before { + content: "\f2b0"; +} + +.bi-cloud-plus-fill::before { + content: "\f2b1"; +} + +.bi-cloud-plus::before { + content: "\f2b2"; +} + +.bi-cloud-rain-fill::before { + content: "\f2b3"; +} + +.bi-cloud-rain-heavy-fill::before { + content: "\f2b4"; +} + +.bi-cloud-rain-heavy::before { + content: "\f2b5"; +} + +.bi-cloud-rain::before { + content: "\f2b6"; +} + +.bi-cloud-slash-fill::before { + content: "\f2b7"; +} + +.bi-cloud-slash::before { + content: "\f2b8"; +} + +.bi-cloud-sleet-fill::before { + content: "\f2b9"; +} + +.bi-cloud-sleet::before { + content: "\f2ba"; +} + +.bi-cloud-snow-fill::before { + content: "\f2bb"; +} + +.bi-cloud-snow::before { + content: "\f2bc"; +} + +.bi-cloud-sun-fill::before { + content: "\f2bd"; +} + +.bi-cloud-sun::before { + content: "\f2be"; +} + +.bi-cloud-upload-fill::before { + content: "\f2bf"; +} + +.bi-cloud-upload::before { + content: "\f2c0"; +} + +.bi-cloud::before { + content: "\f2c1"; +} + +.bi-clouds-fill::before { + content: "\f2c2"; +} + +.bi-clouds::before { + content: "\f2c3"; +} + +.bi-cloudy-fill::before { + content: "\f2c4"; +} + +.bi-cloudy::before { + content: "\f2c5"; +} + +.bi-code-slash::before { + content: "\f2c6"; +} + +.bi-code-square::before { + content: "\f2c7"; +} + +.bi-code::before { + content: "\f2c8"; +} + +.bi-collection-fill::before { + content: "\f2c9"; +} + +.bi-collection-play-fill::before { + content: "\f2ca"; +} + +.bi-collection-play::before { + content: "\f2cb"; +} + +.bi-collection::before { + content: "\f2cc"; +} + +.bi-columns-gap::before { + content: "\f2cd"; +} + +.bi-columns::before { + content: "\f2ce"; +} + +.bi-command::before { + content: "\f2cf"; +} + +.bi-compass-fill::before { + content: "\f2d0"; +} + +.bi-compass::before { + content: "\f2d1"; +} + +.bi-cone-striped::before { + content: "\f2d2"; +} + +.bi-cone::before { + content: "\f2d3"; +} + +.bi-controller::before { + content: "\f2d4"; +} + +.bi-cpu-fill::before { + content: "\f2d5"; +} + +.bi-cpu::before { + content: "\f2d6"; +} + +.bi-credit-card-2-back-fill::before { + content: "\f2d7"; +} + +.bi-credit-card-2-back::before { + content: "\f2d8"; +} + +.bi-credit-card-2-front-fill::before { + content: "\f2d9"; +} + +.bi-credit-card-2-front::before { + content: "\f2da"; +} + +.bi-credit-card-fill::before { + content: "\f2db"; +} + +.bi-credit-card::before { + content: "\f2dc"; +} + +.bi-crop::before { + content: "\f2dd"; +} + +.bi-cup-fill::before { + content: "\f2de"; +} + +.bi-cup-straw::before { + content: "\f2df"; +} + +.bi-cup::before { + content: "\f2e0"; +} + +.bi-cursor-fill::before { + content: "\f2e1"; +} + +.bi-cursor-text::before { + content: "\f2e2"; +} + +.bi-cursor::before { + content: "\f2e3"; +} + +.bi-dash-circle-dotted::before { + content: "\f2e4"; +} + +.bi-dash-circle-fill::before { + content: "\f2e5"; +} + +.bi-dash-circle::before { + content: "\f2e6"; +} + +.bi-dash-square-dotted::before { + content: "\f2e7"; +} + +.bi-dash-square-fill::before { + content: "\f2e8"; +} + +.bi-dash-square::before { + content: "\f2e9"; +} + +.bi-dash::before { + content: "\f2ea"; +} + +.bi-diagram-2-fill::before { + content: "\f2eb"; +} + +.bi-diagram-2::before { + content: "\f2ec"; +} + +.bi-diagram-3-fill::before { + content: "\f2ed"; +} + +.bi-diagram-3::before { + content: "\f2ee"; +} + +.bi-diamond-fill::before { + content: "\f2ef"; +} + +.bi-diamond-half::before { + content: "\f2f0"; +} + +.bi-diamond::before { + content: "\f2f1"; +} + +.bi-dice-1-fill::before { + content: "\f2f2"; +} + +.bi-dice-1::before { + content: "\f2f3"; +} + +.bi-dice-2-fill::before { + content: "\f2f4"; +} + +.bi-dice-2::before { + content: "\f2f5"; +} + +.bi-dice-3-fill::before { + content: "\f2f6"; +} + +.bi-dice-3::before { + content: "\f2f7"; +} + +.bi-dice-4-fill::before { + content: "\f2f8"; +} + +.bi-dice-4::before { + content: "\f2f9"; +} + +.bi-dice-5-fill::before { + content: "\f2fa"; +} + +.bi-dice-5::before { + content: "\f2fb"; +} + +.bi-dice-6-fill::before { + content: "\f2fc"; +} + +.bi-dice-6::before { + content: "\f2fd"; +} + +.bi-disc-fill::before { + content: "\f2fe"; +} + +.bi-disc::before { + content: "\f2ff"; +} + +.bi-discord::before { + content: "\f300"; +} + +.bi-display-fill::before { + content: "\f301"; +} + +.bi-display::before { + content: "\f302"; +} + +.bi-distribute-horizontal::before { + content: "\f303"; +} + +.bi-distribute-vertical::before { + content: "\f304"; +} + +.bi-door-closed-fill::before { + content: "\f305"; +} + +.bi-door-closed::before { + content: "\f306"; +} + +.bi-door-open-fill::before { + content: "\f307"; +} + +.bi-door-open::before { + content: "\f308"; +} + +.bi-dot::before { + content: "\f309"; +} + +.bi-download::before { + content: "\f30a"; +} + +.bi-droplet-fill::before { + content: "\f30b"; +} + +.bi-droplet-half::before { + content: "\f30c"; +} + +.bi-droplet::before { + content: "\f30d"; +} + +.bi-earbuds::before { + content: "\f30e"; +} + +.bi-easel-fill::before { + content: "\f30f"; +} + +.bi-easel::before { + content: "\f310"; +} + +.bi-egg-fill::before { + content: "\f311"; +} + +.bi-egg-fried::before { + content: "\f312"; +} + +.bi-egg::before { + content: "\f313"; +} + +.bi-eject-fill::before { + content: "\f314"; +} + +.bi-eject::before { + content: "\f315"; +} + +.bi-emoji-angry-fill::before { + content: "\f316"; +} + +.bi-emoji-angry::before { + content: "\f317"; +} + +.bi-emoji-dizzy-fill::before { + content: "\f318"; +} + +.bi-emoji-dizzy::before { + content: "\f319"; +} + +.bi-emoji-expressionless-fill::before { + content: "\f31a"; +} + +.bi-emoji-expressionless::before { + content: "\f31b"; +} + +.bi-emoji-frown-fill::before { + content: "\f31c"; +} + +.bi-emoji-frown::before { + content: "\f31d"; +} + +.bi-emoji-heart-eyes-fill::before { + content: "\f31e"; +} + +.bi-emoji-heart-eyes::before { + content: "\f31f"; +} + +.bi-emoji-laughing-fill::before { + content: "\f320"; +} + +.bi-emoji-laughing::before { + content: "\f321"; +} + +.bi-emoji-neutral-fill::before { + content: "\f322"; +} + +.bi-emoji-neutral::before { + content: "\f323"; +} + +.bi-emoji-smile-fill::before { + content: "\f324"; +} + +.bi-emoji-smile-upside-down-fill::before { + content: "\f325"; +} + +.bi-emoji-smile-upside-down::before { + content: "\f326"; +} + +.bi-emoji-smile::before { + content: "\f327"; +} + +.bi-emoji-sunglasses-fill::before { + content: "\f328"; +} + +.bi-emoji-sunglasses::before { + content: "\f329"; +} + +.bi-emoji-wink-fill::before { + content: "\f32a"; +} + +.bi-emoji-wink::before { + content: "\f32b"; +} + +.bi-envelope-fill::before { + content: "\f32c"; +} + +.bi-envelope-open-fill::before { + content: "\f32d"; +} + +.bi-envelope-open::before { + content: "\f32e"; +} + +.bi-envelope::before { + content: "\f32f"; +} + +.bi-eraser-fill::before { + content: "\f330"; +} + +.bi-eraser::before { + content: "\f331"; +} + +.bi-exclamation-circle-fill::before { + content: "\f332"; +} + +.bi-exclamation-circle::before { + content: "\f333"; +} + +.bi-exclamation-diamond-fill::before { + content: "\f334"; +} + +.bi-exclamation-diamond::before { + content: "\f335"; +} + +.bi-exclamation-octagon-fill::before { + content: "\f336"; +} + +.bi-exclamation-octagon::before { + content: "\f337"; +} + +.bi-exclamation-square-fill::before { + content: "\f338"; +} + +.bi-exclamation-square::before { + content: "\f339"; +} + +.bi-exclamation-triangle-fill::before { + content: "\f33a"; +} + +.bi-exclamation-triangle::before { + content: "\f33b"; +} + +.bi-exclamation::before { + content: "\f33c"; +} + +.bi-exclude::before { + content: "\f33d"; +} + +.bi-eye-fill::before { + content: "\f33e"; +} + +.bi-eye-slash-fill::before { + content: "\f33f"; +} + +.bi-eye-slash::before { + content: "\f340"; +} + +.bi-eye::before { + content: "\f341"; +} + +.bi-eyedropper::before { + content: "\f342"; +} + +.bi-eyeglasses::before { + content: "\f343"; +} + +.bi-facebook::before { + content: "\f344"; +} + +.bi-file-arrow-down-fill::before { + content: "\f345"; +} + +.bi-file-arrow-down::before { + content: "\f346"; +} + +.bi-file-arrow-up-fill::before { + content: "\f347"; +} + +.bi-file-arrow-up::before { + content: "\f348"; +} + +.bi-file-bar-graph-fill::before { + content: "\f349"; +} + +.bi-file-bar-graph::before { + content: "\f34a"; +} + +.bi-file-binary-fill::before { + content: "\f34b"; +} + +.bi-file-binary::before { + content: "\f34c"; +} + +.bi-file-break-fill::before { + content: "\f34d"; +} + +.bi-file-break::before { + content: "\f34e"; +} + +.bi-file-check-fill::before { + content: "\f34f"; +} + +.bi-file-check::before { + content: "\f350"; +} + +.bi-file-code-fill::before { + content: "\f351"; +} + +.bi-file-code::before { + content: "\f352"; +} + +.bi-file-diff-fill::before { + content: "\f353"; +} + +.bi-file-diff::before { + content: "\f354"; +} + +.bi-file-earmark-arrow-down-fill::before { + content: "\f355"; +} + +.bi-file-earmark-arrow-down::before { + content: "\f356"; +} + +.bi-file-earmark-arrow-up-fill::before { + content: "\f357"; +} + +.bi-file-earmark-arrow-up::before { + content: "\f358"; +} + +.bi-file-earmark-bar-graph-fill::before { + content: "\f359"; +} + +.bi-file-earmark-bar-graph::before { + content: "\f35a"; +} + +.bi-file-earmark-binary-fill::before { + content: "\f35b"; +} + +.bi-file-earmark-binary::before { + content: "\f35c"; +} + +.bi-file-earmark-break-fill::before { + content: "\f35d"; +} + +.bi-file-earmark-break::before { + content: "\f35e"; +} + +.bi-file-earmark-check-fill::before { + content: "\f35f"; +} + +.bi-file-earmark-check::before { + content: "\f360"; +} + +.bi-file-earmark-code-fill::before { + content: "\f361"; +} + +.bi-file-earmark-code::before { + content: "\f362"; +} + +.bi-file-earmark-diff-fill::before { + content: "\f363"; +} + +.bi-file-earmark-diff::before { + content: "\f364"; +} + +.bi-file-earmark-easel-fill::before { + content: "\f365"; +} + +.bi-file-earmark-easel::before { + content: "\f366"; +} + +.bi-file-earmark-excel-fill::before { + content: "\f367"; +} + +.bi-file-earmark-excel::before { + content: "\f368"; +} + +.bi-file-earmark-fill::before { + content: "\f369"; +} + +.bi-file-earmark-font-fill::before { + content: "\f36a"; +} + +.bi-file-earmark-font::before { + content: "\f36b"; +} + +.bi-file-earmark-image-fill::before { + content: "\f36c"; +} + +.bi-file-earmark-image::before { + content: "\f36d"; +} + +.bi-file-earmark-lock-fill::before { + content: "\f36e"; +} + +.bi-file-earmark-lock::before { + content: "\f36f"; +} + +.bi-file-earmark-lock2-fill::before { + content: "\f370"; +} + +.bi-file-earmark-lock2::before { + content: "\f371"; +} + +.bi-file-earmark-medical-fill::before { + content: "\f372"; +} + +.bi-file-earmark-medical::before { + content: "\f373"; +} + +.bi-file-earmark-minus-fill::before { + content: "\f374"; +} + +.bi-file-earmark-minus::before { + content: "\f375"; +} + +.bi-file-earmark-music-fill::before { + content: "\f376"; +} + +.bi-file-earmark-music::before { + content: "\f377"; +} + +.bi-file-earmark-person-fill::before { + content: "\f378"; +} + +.bi-file-earmark-person::before { + content: "\f379"; +} + +.bi-file-earmark-play-fill::before { + content: "\f37a"; +} + +.bi-file-earmark-play::before { + content: "\f37b"; +} + +.bi-file-earmark-plus-fill::before { + content: "\f37c"; +} + +.bi-file-earmark-plus::before { + content: "\f37d"; +} + +.bi-file-earmark-post-fill::before { + content: "\f37e"; +} + +.bi-file-earmark-post::before { + content: "\f37f"; +} + +.bi-file-earmark-ppt-fill::before { + content: "\f380"; +} + +.bi-file-earmark-ppt::before { + content: "\f381"; +} + +.bi-file-earmark-richtext-fill::before { + content: "\f382"; +} + +.bi-file-earmark-richtext::before { + content: "\f383"; +} + +.bi-file-earmark-ruled-fill::before { + content: "\f384"; +} + +.bi-file-earmark-ruled::before { + content: "\f385"; +} + +.bi-file-earmark-slides-fill::before { + content: "\f386"; +} + +.bi-file-earmark-slides::before { + content: "\f387"; +} + +.bi-file-earmark-spreadsheet-fill::before { + content: "\f388"; +} + +.bi-file-earmark-spreadsheet::before { + content: "\f389"; +} + +.bi-file-earmark-text-fill::before { + content: "\f38a"; +} + +.bi-file-earmark-text::before { + content: "\f38b"; +} + +.bi-file-earmark-word-fill::before { + content: "\f38c"; +} + +.bi-file-earmark-word::before { + content: "\f38d"; +} + +.bi-file-earmark-x-fill::before { + content: "\f38e"; +} + +.bi-file-earmark-x::before { + content: "\f38f"; +} + +.bi-file-earmark-zip-fill::before { + content: "\f390"; +} + +.bi-file-earmark-zip::before { + content: "\f391"; +} + +.bi-file-earmark::before { + content: "\f392"; +} + +.bi-file-easel-fill::before { + content: "\f393"; +} + +.bi-file-easel::before { + content: "\f394"; +} + +.bi-file-excel-fill::before { + content: "\f395"; +} + +.bi-file-excel::before { + content: "\f396"; +} + +.bi-file-fill::before { + content: "\f397"; +} + +.bi-file-font-fill::before { + content: "\f398"; +} + +.bi-file-font::before { + content: "\f399"; +} + +.bi-file-image-fill::before { + content: "\f39a"; +} + +.bi-file-image::before { + content: "\f39b"; +} + +.bi-file-lock-fill::before { + content: "\f39c"; +} + +.bi-file-lock::before { + content: "\f39d"; +} + +.bi-file-lock2-fill::before { + content: "\f39e"; +} + +.bi-file-lock2::before { + content: "\f39f"; +} + +.bi-file-medical-fill::before { + content: "\f3a0"; +} + +.bi-file-medical::before { + content: "\f3a1"; +} + +.bi-file-minus-fill::before { + content: "\f3a2"; +} + +.bi-file-minus::before { + content: "\f3a3"; +} + +.bi-file-music-fill::before { + content: "\f3a4"; +} + +.bi-file-music::before { + content: "\f3a5"; +} + +.bi-file-person-fill::before { + content: "\f3a6"; +} + +.bi-file-person::before { + content: "\f3a7"; +} + +.bi-file-play-fill::before { + content: "\f3a8"; +} + +.bi-file-play::before { + content: "\f3a9"; +} + +.bi-file-plus-fill::before { + content: "\f3aa"; +} + +.bi-file-plus::before { + content: "\f3ab"; +} + +.bi-file-post-fill::before { + content: "\f3ac"; +} + +.bi-file-post::before { + content: "\f3ad"; +} + +.bi-file-ppt-fill::before { + content: "\f3ae"; +} + +.bi-file-ppt::before { + content: "\f3af"; +} + +.bi-file-richtext-fill::before { + content: "\f3b0"; +} + +.bi-file-richtext::before { + content: "\f3b1"; +} + +.bi-file-ruled-fill::before { + content: "\f3b2"; +} + +.bi-file-ruled::before { + content: "\f3b3"; +} + +.bi-file-slides-fill::before { + content: "\f3b4"; +} + +.bi-file-slides::before { + content: "\f3b5"; +} + +.bi-file-spreadsheet-fill::before { + content: "\f3b6"; +} + +.bi-file-spreadsheet::before { + content: "\f3b7"; +} + +.bi-file-text-fill::before { + content: "\f3b8"; +} + +.bi-file-text::before { + content: "\f3b9"; +} + +.bi-file-word-fill::before { + content: "\f3ba"; +} + +.bi-file-word::before { + content: "\f3bb"; +} + +.bi-file-x-fill::before { + content: "\f3bc"; +} + +.bi-file-x::before { + content: "\f3bd"; +} + +.bi-file-zip-fill::before { + content: "\f3be"; +} + +.bi-file-zip::before { + content: "\f3bf"; +} + +.bi-file::before { + content: "\f3c0"; +} + +.bi-files-alt::before { + content: "\f3c1"; +} + +.bi-files::before { + content: "\f3c2"; +} + +.bi-film::before { + content: "\f3c3"; +} + +.bi-filter-circle-fill::before { + content: "\f3c4"; +} + +.bi-filter-circle::before { + content: "\f3c5"; +} + +.bi-filter-left::before { + content: "\f3c6"; +} + +.bi-filter-right::before { + content: "\f3c7"; +} + +.bi-filter-square-fill::before { + content: "\f3c8"; +} + +.bi-filter-square::before { + content: "\f3c9"; +} + +.bi-filter::before { + content: "\f3ca"; +} + +.bi-flag-fill::before { + content: "\f3cb"; +} + +.bi-flag::before { + content: "\f3cc"; +} + +.bi-flower1::before { + content: "\f3cd"; +} + +.bi-flower2::before { + content: "\f3ce"; +} + +.bi-flower3::before { + content: "\f3cf"; +} + +.bi-folder-check::before { + content: "\f3d0"; +} + +.bi-folder-fill::before { + content: "\f3d1"; +} + +.bi-folder-minus::before { + content: "\f3d2"; +} + +.bi-folder-plus::before { + content: "\f3d3"; +} + +.bi-folder-symlink-fill::before { + content: "\f3d4"; +} + +.bi-folder-symlink::before { + content: "\f3d5"; +} + +.bi-folder-x::before { + content: "\f3d6"; +} + +.bi-folder::before { + content: "\f3d7"; +} + +.bi-folder2-open::before { + content: "\f3d8"; +} + +.bi-folder2::before { + content: "\f3d9"; +} + +.bi-fonts::before { + content: "\f3da"; +} + +.bi-forward-fill::before { + content: "\f3db"; +} + +.bi-forward::before { + content: "\f3dc"; +} + +.bi-front::before { + content: "\f3dd"; +} + +.bi-fullscreen-exit::before { + content: "\f3de"; +} + +.bi-fullscreen::before { + content: "\f3df"; +} + +.bi-funnel-fill::before { + content: "\f3e0"; +} + +.bi-funnel::before { + content: "\f3e1"; +} + +.bi-gear-fill::before { + content: "\f3e2"; +} + +.bi-gear-wide-connected::before { + content: "\f3e3"; +} + +.bi-gear-wide::before { + content: "\f3e4"; +} + +.bi-gear::before { + content: "\f3e5"; +} + +.bi-gem::before { + content: "\f3e6"; +} + +.bi-geo-alt-fill::before { + content: "\f3e7"; +} + +.bi-geo-alt::before { + content: "\f3e8"; +} + +.bi-geo-fill::before { + content: "\f3e9"; +} + +.bi-geo::before { + content: "\f3ea"; +} + +.bi-gift-fill::before { + content: "\f3eb"; +} + +.bi-gift::before { + content: "\f3ec"; +} + +.bi-github::before { + content: "\f3ed"; +} + +.bi-globe::before { + content: "\f3ee"; +} + +.bi-globe2::before { + content: "\f3ef"; +} + +.bi-google::before { + content: "\f3f0"; +} + +.bi-graph-down::before { + content: "\f3f1"; +} + +.bi-graph-up::before { + content: "\f3f2"; +} + +.bi-grid-1x2-fill::before { + content: "\f3f3"; +} + +.bi-grid-1x2::before { + content: "\f3f4"; +} + +.bi-grid-3x2-gap-fill::before { + content: "\f3f5"; +} + +.bi-grid-3x2-gap::before { + content: "\f3f6"; +} + +.bi-grid-3x2::before { + content: "\f3f7"; +} + +.bi-grid-3x3-gap-fill::before { + content: "\f3f8"; +} + +.bi-grid-3x3-gap::before { + content: "\f3f9"; +} + +.bi-grid-3x3::before { + content: "\f3fa"; +} + +.bi-grid-fill::before { + content: "\f3fb"; +} + +.bi-grid::before { + content: "\f3fc"; +} + +.bi-grip-horizontal::before { + content: "\f3fd"; +} + +.bi-grip-vertical::before { + content: "\f3fe"; +} + +.bi-hammer::before { + content: "\f3ff"; +} + +.bi-hand-index-fill::before { + content: "\f400"; +} + +.bi-hand-index-thumb-fill::before { + content: "\f401"; +} + +.bi-hand-index-thumb::before { + content: "\f402"; +} + +.bi-hand-index::before { + content: "\f403"; +} + +.bi-hand-thumbs-down-fill::before { + content: "\f404"; +} + +.bi-hand-thumbs-down::before { + content: "\f405"; +} + +.bi-hand-thumbs-up-fill::before { + content: "\f406"; +} + +.bi-hand-thumbs-up::before { + content: "\f407"; +} + +.bi-handbag-fill::before { + content: "\f408"; +} + +.bi-handbag::before { + content: "\f409"; +} + +.bi-hash::before { + content: "\f40a"; +} + +.bi-hdd-fill::before { + content: "\f40b"; +} + +.bi-hdd-network-fill::before { + content: "\f40c"; +} + +.bi-hdd-network::before { + content: "\f40d"; +} + +.bi-hdd-rack-fill::before { + content: "\f40e"; +} + +.bi-hdd-rack::before { + content: "\f40f"; +} + +.bi-hdd-stack-fill::before { + content: "\f410"; +} + +.bi-hdd-stack::before { + content: "\f411"; +} + +.bi-hdd::before { + content: "\f412"; +} + +.bi-headphones::before { + content: "\f413"; +} + +.bi-headset::before { + content: "\f414"; +} + +.bi-heart-fill::before { + content: "\f415"; +} + +.bi-heart-half::before { + content: "\f416"; +} + +.bi-heart::before { + content: "\f417"; +} + +.bi-heptagon-fill::before { + content: "\f418"; +} + +.bi-heptagon-half::before { + content: "\f419"; +} + +.bi-heptagon::before { + content: "\f41a"; +} + +.bi-hexagon-fill::before { + content: "\f41b"; +} + +.bi-hexagon-half::before { + content: "\f41c"; +} + +.bi-hexagon::before { + content: "\f41d"; +} + +.bi-hourglass-bottom::before { + content: "\f41e"; +} + +.bi-hourglass-split::before { + content: "\f41f"; +} + +.bi-hourglass-top::before { + content: "\f420"; +} + +.bi-hourglass::before { + content: "\f421"; +} + +.bi-house-door-fill::before { + content: "\f422"; +} + +.bi-house-door::before { + content: "\f423"; +} + +.bi-house-fill::before { + content: "\f424"; +} + +.bi-house::before { + content: "\f425"; +} + +.bi-hr::before { + content: "\f426"; +} + +.bi-hurricane::before { + content: "\f427"; +} + +.bi-image-alt::before { + content: "\f428"; +} + +.bi-image-fill::before { + content: "\f429"; +} + +.bi-image::before { + content: "\f42a"; +} + +.bi-images::before { + content: "\f42b"; +} + +.bi-inbox-fill::before { + content: "\f42c"; +} + +.bi-inbox::before { + content: "\f42d"; +} + +.bi-inboxes-fill::before { + content: "\f42e"; +} + +.bi-inboxes::before { + content: "\f42f"; +} + +.bi-info-circle-fill::before { + content: "\f430"; +} + +.bi-info-circle::before { + content: "\f431"; +} + +.bi-info-square-fill::before { + content: "\f432"; +} + +.bi-info-square::before { + content: "\f433"; +} + +.bi-info::before { + content: "\f434"; +} + +.bi-input-cursor-text::before { + content: "\f435"; +} + +.bi-input-cursor::before { + content: "\f436"; +} + +.bi-instagram::before { + content: "\f437"; +} + +.bi-intersect::before { + content: "\f438"; +} + +.bi-journal-album::before { + content: "\f439"; +} + +.bi-journal-arrow-down::before { + content: "\f43a"; +} + +.bi-journal-arrow-up::before { + content: "\f43b"; +} + +.bi-journal-bookmark-fill::before { + content: "\f43c"; +} + +.bi-journal-bookmark::before { + content: "\f43d"; +} + +.bi-journal-check::before { + content: "\f43e"; +} + +.bi-journal-code::before { + content: "\f43f"; +} + +.bi-journal-medical::before { + content: "\f440"; +} + +.bi-journal-minus::before { + content: "\f441"; +} + +.bi-journal-plus::before { + content: "\f442"; +} + +.bi-journal-richtext::before { + content: "\f443"; +} + +.bi-journal-text::before { + content: "\f444"; +} + +.bi-journal-x::before { + content: "\f445"; +} + +.bi-journal::before { + content: "\f446"; +} + +.bi-journals::before { + content: "\f447"; +} + +.bi-joystick::before { + content: "\f448"; +} + +.bi-justify-left::before { + content: "\f449"; +} + +.bi-justify-right::before { + content: "\f44a"; +} + +.bi-justify::before { + content: "\f44b"; +} + +.bi-kanban-fill::before { + content: "\f44c"; +} + +.bi-kanban::before { + content: "\f44d"; +} + +.bi-key-fill::before { + content: "\f44e"; +} + +.bi-key::before { + content: "\f44f"; +} + +.bi-keyboard-fill::before { + content: "\f450"; +} + +.bi-keyboard::before { + content: "\f451"; +} + +.bi-ladder::before { + content: "\f452"; +} + +.bi-lamp-fill::before { + content: "\f453"; +} + +.bi-lamp::before { + content: "\f454"; +} + +.bi-laptop-fill::before { + content: "\f455"; +} + +.bi-laptop::before { + content: "\f456"; +} + +.bi-layer-backward::before { + content: "\f457"; +} + +.bi-layer-forward::before { + content: "\f458"; +} + +.bi-layers-fill::before { + content: "\f459"; +} + +.bi-layers-half::before { + content: "\f45a"; +} + +.bi-layers::before { + content: "\f45b"; +} + +.bi-layout-sidebar-inset-reverse::before { + content: "\f45c"; +} + +.bi-layout-sidebar-inset::before { + content: "\f45d"; +} + +.bi-layout-sidebar-reverse::before { + content: "\f45e"; +} + +.bi-layout-sidebar::before { + content: "\f45f"; +} + +.bi-layout-split::before { + content: "\f460"; +} + +.bi-layout-text-sidebar-reverse::before { + content: "\f461"; +} + +.bi-layout-text-sidebar::before { + content: "\f462"; +} + +.bi-layout-text-window-reverse::before { + content: "\f463"; +} + +.bi-layout-text-window::before { + content: "\f464"; +} + +.bi-layout-three-columns::before { + content: "\f465"; +} + +.bi-layout-wtf::before { + content: "\f466"; +} + +.bi-life-preserver::before { + content: "\f467"; +} + +.bi-lightbulb-fill::before { + content: "\f468"; +} + +.bi-lightbulb-off-fill::before { + content: "\f469"; +} + +.bi-lightbulb-off::before { + content: "\f46a"; +} + +.bi-lightbulb::before { + content: "\f46b"; +} + +.bi-lightning-charge-fill::before { + content: "\f46c"; +} + +.bi-lightning-charge::before { + content: "\f46d"; +} + +.bi-lightning-fill::before { + content: "\f46e"; +} + +.bi-lightning::before { + content: "\f46f"; +} + +.bi-link-45deg::before { + content: "\f470"; +} + +.bi-link::before { + content: "\f471"; +} + +.bi-linkedin::before { + content: "\f472"; +} + +.bi-list-check::before { + content: "\f473"; +} + +.bi-list-nested::before { + content: "\f474"; +} + +.bi-list-ol::before { + content: "\f475"; +} + +.bi-list-stars::before { + content: "\f476"; +} + +.bi-list-task::before { + content: "\f477"; +} + +.bi-list-ul::before { + content: "\f478"; +} + +.bi-list::before { + content: "\f479"; +} + +.bi-lock-fill::before { + content: "\f47a"; +} + +.bi-lock::before { + content: "\f47b"; +} + +.bi-mailbox::before { + content: "\f47c"; +} + +.bi-mailbox2::before { + content: "\f47d"; +} + +.bi-map-fill::before { + content: "\f47e"; +} + +.bi-map::before { + content: "\f47f"; +} + +.bi-markdown-fill::before { + content: "\f480"; +} + +.bi-markdown::before { + content: "\f481"; +} + +.bi-mask::before { + content: "\f482"; +} + +.bi-megaphone-fill::before { + content: "\f483"; +} + +.bi-megaphone::before { + content: "\f484"; +} + +.bi-menu-app-fill::before { + content: "\f485"; +} + +.bi-menu-app::before { + content: "\f486"; +} + +.bi-menu-button-fill::before { + content: "\f487"; +} + +.bi-menu-button-wide-fill::before { + content: "\f488"; +} + +.bi-menu-button-wide::before { + content: "\f489"; +} + +.bi-menu-button::before { + content: "\f48a"; +} + +.bi-menu-down::before { + content: "\f48b"; +} + +.bi-menu-up::before { + content: "\f48c"; +} + +.bi-mic-fill::before { + content: "\f48d"; +} + +.bi-mic-mute-fill::before { + content: "\f48e"; +} + +.bi-mic-mute::before { + content: "\f48f"; +} + +.bi-mic::before { + content: "\f490"; +} + +.bi-minecart-loaded::before { + content: "\f491"; +} + +.bi-minecart::before { + content: "\f492"; +} + +.bi-moisture::before { + content: "\f493"; +} + +.bi-moon-fill::before { + content: "\f494"; +} + +.bi-moon-stars-fill::before { + content: "\f495"; +} + +.bi-moon-stars::before { + content: "\f496"; +} + +.bi-moon::before { + content: "\f497"; +} + +.bi-mouse-fill::before { + content: "\f498"; +} + +.bi-mouse::before { + content: "\f499"; +} + +.bi-mouse2-fill::before { + content: "\f49a"; +} + +.bi-mouse2::before { + content: "\f49b"; +} + +.bi-mouse3-fill::before { + content: "\f49c"; +} + +.bi-mouse3::before { + content: "\f49d"; +} + +.bi-music-note-beamed::before { + content: "\f49e"; +} + +.bi-music-note-list::before { + content: "\f49f"; +} + +.bi-music-note::before { + content: "\f4a0"; +} + +.bi-music-player-fill::before { + content: "\f4a1"; +} + +.bi-music-player::before { + content: "\f4a2"; +} + +.bi-newspaper::before { + content: "\f4a3"; +} + +.bi-node-minus-fill::before { + content: "\f4a4"; +} + +.bi-node-minus::before { + content: "\f4a5"; +} + +.bi-node-plus-fill::before { + content: "\f4a6"; +} + +.bi-node-plus::before { + content: "\f4a7"; +} + +.bi-nut-fill::before { + content: "\f4a8"; +} + +.bi-nut::before { + content: "\f4a9"; +} + +.bi-octagon-fill::before { + content: "\f4aa"; +} + +.bi-octagon-half::before { + content: "\f4ab"; +} + +.bi-octagon::before { + content: "\f4ac"; +} + +.bi-option::before { + content: "\f4ad"; +} + +.bi-outlet::before { + content: "\f4ae"; +} + +.bi-paint-bucket::before { + content: "\f4af"; +} + +.bi-palette-fill::before { + content: "\f4b0"; +} + +.bi-palette::before { + content: "\f4b1"; +} + +.bi-palette2::before { + content: "\f4b2"; +} + +.bi-paperclip::before { + content: "\f4b3"; +} + +.bi-paragraph::before { + content: "\f4b4"; +} + +.bi-patch-check-fill::before { + content: "\f4b5"; +} + +.bi-patch-check::before { + content: "\f4b6"; +} + +.bi-patch-exclamation-fill::before { + content: "\f4b7"; +} + +.bi-patch-exclamation::before { + content: "\f4b8"; +} + +.bi-patch-minus-fill::before { + content: "\f4b9"; +} + +.bi-patch-minus::before { + content: "\f4ba"; +} + +.bi-patch-plus-fill::before { + content: "\f4bb"; +} + +.bi-patch-plus::before { + content: "\f4bc"; +} + +.bi-patch-question-fill::before { + content: "\f4bd"; +} + +.bi-patch-question::before { + content: "\f4be"; +} + +.bi-pause-btn-fill::before { + content: "\f4bf"; +} + +.bi-pause-btn::before { + content: "\f4c0"; +} + +.bi-pause-circle-fill::before { + content: "\f4c1"; +} + +.bi-pause-circle::before { + content: "\f4c2"; +} + +.bi-pause-fill::before { + content: "\f4c3"; +} + +.bi-pause::before { + content: "\f4c4"; +} + +.bi-peace-fill::before { + content: "\f4c5"; +} + +.bi-peace::before { + content: "\f4c6"; +} + +.bi-pen-fill::before { + content: "\f4c7"; +} + +.bi-pen::before { + content: "\f4c8"; +} + +.bi-pencil-fill::before { + content: "\f4c9"; +} + +.bi-pencil-square::before { + content: "\f4ca"; +} + +.bi-pencil::before { + content: "\f4cb"; +} + +.bi-pentagon-fill::before { + content: "\f4cc"; +} + +.bi-pentagon-half::before { + content: "\f4cd"; +} + +.bi-pentagon::before { + content: "\f4ce"; +} + +.bi-people-fill::before { + content: "\f4cf"; +} + +.bi-people::before { + content: "\f4d0"; +} + +.bi-percent::before { + content: "\f4d1"; +} + +.bi-person-badge-fill::before { + content: "\f4d2"; +} + +.bi-person-badge::before { + content: "\f4d3"; +} + +.bi-person-bounding-box::before { + content: "\f4d4"; +} + +.bi-person-check-fill::before { + content: "\f4d5"; +} + +.bi-person-check::before { + content: "\f4d6"; +} + +.bi-person-circle::before { + content: "\f4d7"; +} + +.bi-person-dash-fill::before { + content: "\f4d8"; +} + +.bi-person-dash::before { + content: "\f4d9"; +} + +.bi-person-fill::before { + content: "\f4da"; +} + +.bi-person-lines-fill::before { + content: "\f4db"; +} + +.bi-person-plus-fill::before { + content: "\f4dc"; +} + +.bi-person-plus::before { + content: "\f4dd"; +} + +.bi-person-square::before { + content: "\f4de"; +} + +.bi-person-x-fill::before { + content: "\f4df"; +} + +.bi-person-x::before { + content: "\f4e0"; +} + +.bi-person::before { + content: "\f4e1"; +} + +.bi-phone-fill::before { + content: "\f4e2"; +} + +.bi-phone-landscape-fill::before { + content: "\f4e3"; +} + +.bi-phone-landscape::before { + content: "\f4e4"; +} + +.bi-phone-vibrate-fill::before { + content: "\f4e5"; +} + +.bi-phone-vibrate::before { + content: "\f4e6"; +} + +.bi-phone::before { + content: "\f4e7"; +} + +.bi-pie-chart-fill::before { + content: "\f4e8"; +} + +.bi-pie-chart::before { + content: "\f4e9"; +} + +.bi-pin-angle-fill::before { + content: "\f4ea"; +} + +.bi-pin-angle::before { + content: "\f4eb"; +} + +.bi-pin-fill::before { + content: "\f4ec"; +} + +.bi-pin::before { + content: "\f4ed"; +} + +.bi-pip-fill::before { + content: "\f4ee"; +} + +.bi-pip::before { + content: "\f4ef"; +} + +.bi-play-btn-fill::before { + content: "\f4f0"; +} + +.bi-play-btn::before { + content: "\f4f1"; +} + +.bi-play-circle-fill::before { + content: "\f4f2"; +} + +.bi-play-circle::before { + content: "\f4f3"; +} + +.bi-play-fill::before { + content: "\f4f4"; +} + +.bi-play::before { + content: "\f4f5"; +} + +.bi-plug-fill::before { + content: "\f4f6"; +} + +.bi-plug::before { + content: "\f4f7"; +} + +.bi-plus-circle-dotted::before { + content: "\f4f8"; +} + +.bi-plus-circle-fill::before { + content: "\f4f9"; +} + +.bi-plus-circle::before { + content: "\f4fa"; +} + +.bi-plus-square-dotted::before { + content: "\f4fb"; +} + +.bi-plus-square-fill::before { + content: "\f4fc"; +} + +.bi-plus-square::before { + content: "\f4fd"; +} + +.bi-plus::before { + content: "\f4fe"; +} + +.bi-power::before { + content: "\f4ff"; +} + +.bi-printer-fill::before { + content: "\f500"; +} + +.bi-printer::before { + content: "\f501"; +} + +.bi-puzzle-fill::before { + content: "\f502"; +} + +.bi-puzzle::before { + content: "\f503"; +} + +.bi-question-circle-fill::before { + content: "\f504"; +} + +.bi-question-circle::before { + content: "\f505"; +} + +.bi-question-diamond-fill::before { + content: "\f506"; +} + +.bi-question-diamond::before { + content: "\f507"; +} + +.bi-question-octagon-fill::before { + content: "\f508"; +} + +.bi-question-octagon::before { + content: "\f509"; +} + +.bi-question-square-fill::before { + content: "\f50a"; +} + +.bi-question-square::before { + content: "\f50b"; +} + +.bi-question::before { + content: "\f50c"; +} + +.bi-rainbow::before { + content: "\f50d"; +} + +.bi-receipt-cutoff::before { + content: "\f50e"; +} + +.bi-receipt::before { + content: "\f50f"; +} + +.bi-reception-0::before { + content: "\f510"; +} + +.bi-reception-1::before { + content: "\f511"; +} + +.bi-reception-2::before { + content: "\f512"; +} + +.bi-reception-3::before { + content: "\f513"; +} + +.bi-reception-4::before { + content: "\f514"; +} + +.bi-record-btn-fill::before { + content: "\f515"; +} + +.bi-record-btn::before { + content: "\f516"; +} + +.bi-record-circle-fill::before { + content: "\f517"; +} + +.bi-record-circle::before { + content: "\f518"; +} + +.bi-record-fill::before { + content: "\f519"; +} + +.bi-record::before { + content: "\f51a"; +} + +.bi-record2-fill::before { + content: "\f51b"; +} + +.bi-record2::before { + content: "\f51c"; +} + +.bi-reply-all-fill::before { + content: "\f51d"; +} + +.bi-reply-all::before { + content: "\f51e"; +} + +.bi-reply-fill::before { + content: "\f51f"; +} + +.bi-reply::before { + content: "\f520"; +} + +.bi-rss-fill::before { + content: "\f521"; +} + +.bi-rss::before { + content: "\f522"; +} + +.bi-rulers::before { + content: "\f523"; +} + +.bi-save-fill::before { + content: "\f524"; +} + +.bi-save::before { + content: "\f525"; +} + +.bi-save2-fill::before { + content: "\f526"; +} + +.bi-save2::before { + content: "\f527"; +} + +.bi-scissors::before { + content: "\f528"; +} + +.bi-screwdriver::before { + content: "\f529"; +} + +.bi-search::before { + content: "\f52a"; +} + +.bi-segmented-nav::before { + content: "\f52b"; +} + +.bi-server::before { + content: "\f52c"; +} + +.bi-share-fill::before { + content: "\f52d"; +} + +.bi-share::before { + content: "\f52e"; +} + +.bi-shield-check::before { + content: "\f52f"; +} + +.bi-shield-exclamation::before { + content: "\f530"; +} + +.bi-shield-fill-check::before { + content: "\f531"; +} + +.bi-shield-fill-exclamation::before { + content: "\f532"; +} + +.bi-shield-fill-minus::before { + content: "\f533"; +} + +.bi-shield-fill-plus::before { + content: "\f534"; +} + +.bi-shield-fill-x::before { + content: "\f535"; +} + +.bi-shield-fill::before { + content: "\f536"; +} + +.bi-shield-lock-fill::before { + content: "\f537"; +} + +.bi-shield-lock::before { + content: "\f538"; +} + +.bi-shield-minus::before { + content: "\f539"; +} + +.bi-shield-plus::before { + content: "\f53a"; +} + +.bi-shield-shaded::before { + content: "\f53b"; +} + +.bi-shield-slash-fill::before { + content: "\f53c"; +} + +.bi-shield-slash::before { + content: "\f53d"; +} + +.bi-shield-x::before { + content: "\f53e"; +} + +.bi-shield::before { + content: "\f53f"; +} + +.bi-shift-fill::before { + content: "\f540"; +} + +.bi-shift::before { + content: "\f541"; +} + +.bi-shop-window::before { + content: "\f542"; +} + +.bi-shop::before { + content: "\f543"; +} + +.bi-shuffle::before { + content: "\f544"; +} + +.bi-signpost-2-fill::before { + content: "\f545"; +} + +.bi-signpost-2::before { + content: "\f546"; +} + +.bi-signpost-fill::before { + content: "\f547"; +} + +.bi-signpost-split-fill::before { + content: "\f548"; +} + +.bi-signpost-split::before { + content: "\f549"; +} + +.bi-signpost::before { + content: "\f54a"; +} + +.bi-sim-fill::before { + content: "\f54b"; +} + +.bi-sim::before { + content: "\f54c"; +} + +.bi-skip-backward-btn-fill::before { + content: "\f54d"; +} + +.bi-skip-backward-btn::before { + content: "\f54e"; +} + +.bi-skip-backward-circle-fill::before { + content: "\f54f"; +} + +.bi-skip-backward-circle::before { + content: "\f550"; +} + +.bi-skip-backward-fill::before { + content: "\f551"; +} + +.bi-skip-backward::before { + content: "\f552"; +} + +.bi-skip-end-btn-fill::before { + content: "\f553"; +} + +.bi-skip-end-btn::before { + content: "\f554"; +} + +.bi-skip-end-circle-fill::before { + content: "\f555"; +} + +.bi-skip-end-circle::before { + content: "\f556"; +} + +.bi-skip-end-fill::before { + content: "\f557"; +} + +.bi-skip-end::before { + content: "\f558"; +} + +.bi-skip-forward-btn-fill::before { + content: "\f559"; +} + +.bi-skip-forward-btn::before { + content: "\f55a"; +} + +.bi-skip-forward-circle-fill::before { + content: "\f55b"; +} + +.bi-skip-forward-circle::before { + content: "\f55c"; +} + +.bi-skip-forward-fill::before { + content: "\f55d"; +} + +.bi-skip-forward::before { + content: "\f55e"; +} + +.bi-skip-start-btn-fill::before { + content: "\f55f"; +} + +.bi-skip-start-btn::before { + content: "\f560"; +} + +.bi-skip-start-circle-fill::before { + content: "\f561"; +} + +.bi-skip-start-circle::before { + content: "\f562"; +} + +.bi-skip-start-fill::before { + content: "\f563"; +} + +.bi-skip-start::before { + content: "\f564"; +} + +.bi-slack::before { + content: "\f565"; +} + +.bi-slash-circle-fill::before { + content: "\f566"; +} + +.bi-slash-circle::before { + content: "\f567"; +} + +.bi-slash-square-fill::before { + content: "\f568"; +} + +.bi-slash-square::before { + content: "\f569"; +} + +.bi-slash::before { + content: "\f56a"; +} + +.bi-sliders::before { + content: "\f56b"; +} + +.bi-smartwatch::before { + content: "\f56c"; +} + +.bi-snow::before { + content: "\f56d"; +} + +.bi-snow2::before { + content: "\f56e"; +} + +.bi-snow3::before { + content: "\f56f"; +} + +.bi-sort-alpha-down-alt::before { + content: "\f570"; +} + +.bi-sort-alpha-down::before { + content: "\f571"; +} + +.bi-sort-alpha-up-alt::before { + content: "\f572"; +} + +.bi-sort-alpha-up::before { + content: "\f573"; +} + +.bi-sort-down-alt::before { + content: "\f574"; +} + +.bi-sort-down::before { + content: "\f575"; +} + +.bi-sort-numeric-down-alt::before { + content: "\f576"; +} + +.bi-sort-numeric-down::before { + content: "\f577"; +} + +.bi-sort-numeric-up-alt::before { + content: "\f578"; +} + +.bi-sort-numeric-up::before { + content: "\f579"; +} + +.bi-sort-up-alt::before { + content: "\f57a"; +} + +.bi-sort-up::before { + content: "\f57b"; +} + +.bi-soundwave::before { + content: "\f57c"; +} + +.bi-speaker-fill::before { + content: "\f57d"; +} + +.bi-speaker::before { + content: "\f57e"; +} + +.bi-speedometer::before { + content: "\f57f"; +} + +.bi-speedometer2::before { + content: "\f580"; +} + +.bi-spellcheck::before { + content: "\f581"; +} + +.bi-square-fill::before { + content: "\f582"; +} + +.bi-square-half::before { + content: "\f583"; +} + +.bi-square::before { + content: "\f584"; +} + +.bi-stack::before { + content: "\f585"; +} + +.bi-star-fill::before { + content: "\f586"; +} + +.bi-star-half::before { + content: "\f587"; +} + +.bi-star::before { + content: "\f588"; +} + +.bi-stars::before { + content: "\f589"; +} + +.bi-stickies-fill::before { + content: "\f58a"; +} + +.bi-stickies::before { + content: "\f58b"; +} + +.bi-sticky-fill::before { + content: "\f58c"; +} + +.bi-sticky::before { + content: "\f58d"; +} + +.bi-stop-btn-fill::before { + content: "\f58e"; +} + +.bi-stop-btn::before { + content: "\f58f"; +} + +.bi-stop-circle-fill::before { + content: "\f590"; +} + +.bi-stop-circle::before { + content: "\f591"; +} + +.bi-stop-fill::before { + content: "\f592"; +} + +.bi-stop::before { + content: "\f593"; +} + +.bi-stoplights-fill::before { + content: "\f594"; +} + +.bi-stoplights::before { + content: "\f595"; +} + +.bi-stopwatch-fill::before { + content: "\f596"; +} + +.bi-stopwatch::before { + content: "\f597"; +} + +.bi-subtract::before { + content: "\f598"; +} + +.bi-suit-club-fill::before { + content: "\f599"; +} + +.bi-suit-club::before { + content: "\f59a"; +} + +.bi-suit-diamond-fill::before { + content: "\f59b"; +} + +.bi-suit-diamond::before { + content: "\f59c"; +} + +.bi-suit-heart-fill::before { + content: "\f59d"; +} + +.bi-suit-heart::before { + content: "\f59e"; +} + +.bi-suit-spade-fill::before { + content: "\f59f"; +} + +.bi-suit-spade::before { + content: "\f5a0"; +} + +.bi-sun-fill::before { + content: "\f5a1"; +} + +.bi-sun::before { + content: "\f5a2"; +} + +.bi-sunglasses::before { + content: "\f5a3"; +} + +.bi-sunrise-fill::before { + content: "\f5a4"; +} + +.bi-sunrise::before { + content: "\f5a5"; +} + +.bi-sunset-fill::before { + content: "\f5a6"; +} + +.bi-sunset::before { + content: "\f5a7"; +} + +.bi-symmetry-horizontal::before { + content: "\f5a8"; +} + +.bi-symmetry-vertical::before { + content: "\f5a9"; +} + +.bi-table::before { + content: "\f5aa"; +} + +.bi-tablet-fill::before { + content: "\f5ab"; +} + +.bi-tablet-landscape-fill::before { + content: "\f5ac"; +} + +.bi-tablet-landscape::before { + content: "\f5ad"; +} + +.bi-tablet::before { + content: "\f5ae"; +} + +.bi-tag-fill::before { + content: "\f5af"; +} + +.bi-tag::before { + content: "\f5b0"; +} + +.bi-tags-fill::before { + content: "\f5b1"; +} + +.bi-tags::before { + content: "\f5b2"; +} + +.bi-telegram::before { + content: "\f5b3"; +} + +.bi-telephone-fill::before { + content: "\f5b4"; +} + +.bi-telephone-forward-fill::before { + content: "\f5b5"; +} + +.bi-telephone-forward::before { + content: "\f5b6"; +} + +.bi-telephone-inbound-fill::before { + content: "\f5b7"; +} + +.bi-telephone-inbound::before { + content: "\f5b8"; +} + +.bi-telephone-minus-fill::before { + content: "\f5b9"; +} + +.bi-telephone-minus::before { + content: "\f5ba"; +} + +.bi-telephone-outbound-fill::before { + content: "\f5bb"; +} + +.bi-telephone-outbound::before { + content: "\f5bc"; +} + +.bi-telephone-plus-fill::before { + content: "\f5bd"; +} + +.bi-telephone-plus::before { + content: "\f5be"; +} + +.bi-telephone-x-fill::before { + content: "\f5bf"; +} + +.bi-telephone-x::before { + content: "\f5c0"; +} + +.bi-telephone::before { + content: "\f5c1"; +} + +.bi-terminal-fill::before { + content: "\f5c2"; +} + +.bi-terminal::before { + content: "\f5c3"; +} + +.bi-text-center::before { + content: "\f5c4"; +} + +.bi-text-indent-left::before { + content: "\f5c5"; +} + +.bi-text-indent-right::before { + content: "\f5c6"; +} + +.bi-text-left::before { + content: "\f5c7"; +} + +.bi-text-paragraph::before { + content: "\f5c8"; +} + +.bi-text-right::before { + content: "\f5c9"; +} + +.bi-textarea-resize::before { + content: "\f5ca"; +} + +.bi-textarea-t::before { + content: "\f5cb"; +} + +.bi-textarea::before { + content: "\f5cc"; +} + +.bi-thermometer-half::before { + content: "\f5cd"; +} + +.bi-thermometer-high::before { + content: "\f5ce"; +} + +.bi-thermometer-low::before { + content: "\f5cf"; +} + +.bi-thermometer-snow::before { + content: "\f5d0"; +} + +.bi-thermometer-sun::before { + content: "\f5d1"; +} + +.bi-thermometer::before { + content: "\f5d2"; +} + +.bi-three-dots-vertical::before { + content: "\f5d3"; +} + +.bi-three-dots::before { + content: "\f5d4"; +} + +.bi-toggle-off::before { + content: "\f5d5"; +} + +.bi-toggle-on::before { + content: "\f5d6"; +} + +.bi-toggle2-off::before { + content: "\f5d7"; +} + +.bi-toggle2-on::before { + content: "\f5d8"; +} + +.bi-toggles::before { + content: "\f5d9"; +} + +.bi-toggles2::before { + content: "\f5da"; +} + +.bi-tools::before { + content: "\f5db"; +} + +.bi-tornado::before { + content: "\f5dc"; +} + +.bi-trash-fill::before { + content: "\f5dd"; +} + +.bi-trash::before { + content: "\f5de"; +} + +.bi-trash2-fill::before { + content: "\f5df"; +} + +.bi-trash2::before { + content: "\f5e0"; +} + +.bi-tree-fill::before { + content: "\f5e1"; +} + +.bi-tree::before { + content: "\f5e2"; +} + +.bi-triangle-fill::before { + content: "\f5e3"; +} + +.bi-triangle-half::before { + content: "\f5e4"; +} + +.bi-triangle::before { + content: "\f5e5"; +} + +.bi-trophy-fill::before { + content: "\f5e6"; +} + +.bi-trophy::before { + content: "\f5e7"; +} + +.bi-tropical-storm::before { + content: "\f5e8"; +} + +.bi-truck-flatbed::before { + content: "\f5e9"; +} + +.bi-truck::before { + content: "\f5ea"; +} + +.bi-tsunami::before { + content: "\f5eb"; +} + +.bi-tv-fill::before { + content: "\f5ec"; +} + +.bi-tv::before { + content: "\f5ed"; +} + +.bi-twitch::before { + content: "\f5ee"; +} + +.bi-twitter::before { + content: "\f5ef"; +} + +.bi-type-bold::before { + content: "\f5f0"; +} + +.bi-type-h1::before { + content: "\f5f1"; +} + +.bi-type-h2::before { + content: "\f5f2"; +} + +.bi-type-h3::before { + content: "\f5f3"; +} + +.bi-type-italic::before { + content: "\f5f4"; +} + +.bi-type-strikethrough::before { + content: "\f5f5"; +} + +.bi-type-underline::before { + content: "\f5f6"; +} + +.bi-type::before { + content: "\f5f7"; +} + +.bi-ui-checks-grid::before { + content: "\f5f8"; +} + +.bi-ui-checks::before { + content: "\f5f9"; +} + +.bi-ui-radios-grid::before { + content: "\f5fa"; +} + +.bi-ui-radios::before { + content: "\f5fb"; +} + +.bi-umbrella-fill::before { + content: "\f5fc"; +} + +.bi-umbrella::before { + content: "\f5fd"; +} + +.bi-union::before { + content: "\f5fe"; +} + +.bi-unlock-fill::before { + content: "\f5ff"; +} + +.bi-unlock::before { + content: "\f600"; +} + +.bi-upc-scan::before { + content: "\f601"; +} + +.bi-upc::before { + content: "\f602"; +} + +.bi-upload::before { + content: "\f603"; +} + +.bi-vector-pen::before { + content: "\f604"; +} + +.bi-view-list::before { + content: "\f605"; +} + +.bi-view-stacked::before { + content: "\f606"; +} + +.bi-vinyl-fill::before { + content: "\f607"; +} + +.bi-vinyl::before { + content: "\f608"; +} + +.bi-voicemail::before { + content: "\f609"; +} + +.bi-volume-down-fill::before { + content: "\f60a"; +} + +.bi-volume-down::before { + content: "\f60b"; +} + +.bi-volume-mute-fill::before { + content: "\f60c"; +} + +.bi-volume-mute::before { + content: "\f60d"; +} + +.bi-volume-off-fill::before { + content: "\f60e"; +} + +.bi-volume-off::before { + content: "\f60f"; +} + +.bi-volume-up-fill::before { + content: "\f610"; +} + +.bi-volume-up::before { + content: "\f611"; +} + +.bi-vr::before { + content: "\f612"; +} + +.bi-wallet-fill::before { + content: "\f613"; +} + +.bi-wallet::before { + content: "\f614"; +} + +.bi-wallet2::before { + content: "\f615"; +} + +.bi-watch::before { + content: "\f616"; +} + +.bi-water::before { + content: "\f617"; +} + +.bi-whatsapp::before { + content: "\f618"; +} + +.bi-wifi-1::before { + content: "\f619"; +} + +.bi-wifi-2::before { + content: "\f61a"; +} + +.bi-wifi-off::before { + content: "\f61b"; +} + +.bi-wifi::before { + content: "\f61c"; +} + +.bi-wind::before { + content: "\f61d"; +} + +.bi-window-dock::before { + content: "\f61e"; +} + +.bi-window-sidebar::before { + content: "\f61f"; +} + +.bi-window::before { + content: "\f620"; +} + +.bi-wrench::before { + content: "\f621"; +} + +.bi-x-circle-fill::before { + content: "\f622"; +} + +.bi-x-circle::before { + content: "\f623"; +} + +.bi-x-diamond-fill::before { + content: "\f624"; +} + +.bi-x-diamond::before { + content: "\f625"; +} + +.bi-x-octagon-fill::before { + content: "\f626"; +} + +.bi-x-octagon::before { + content: "\f627"; +} + +.bi-x-square-fill::before { + content: "\f628"; +} + +.bi-x-square::before { + content: "\f629"; +} + +.bi-x::before { + content: "\f62a"; +} + +.bi-youtube::before { + content: "\f62b"; +} + +.bi-zoom-in::before { + content: "\f62c"; +} + +.bi-zoom-out::before { + content: "\f62d"; +} + +.bi-bank::before { + content: "\f62e"; +} + +.bi-bank2::before { + content: "\f62f"; +} + +.bi-bell-slash-fill::before { + content: "\f630"; +} + +.bi-bell-slash::before { + content: "\f631"; +} + +.bi-cash-coin::before { + content: "\f632"; +} + +.bi-check-lg::before { + content: "\f633"; +} + +.bi-coin::before { + content: "\f634"; +} + +.bi-currency-bitcoin::before { + content: "\f635"; +} + +.bi-currency-dollar::before { + content: "\f636"; +} + +.bi-currency-euro::before { + content: "\f637"; +} + +.bi-currency-exchange::before { + content: "\f638"; +} + +.bi-currency-pound::before { + content: "\f639"; +} + +.bi-currency-yen::before { + content: "\f63a"; +} + +.bi-dash-lg::before { + content: "\f63b"; +} + +.bi-exclamation-lg::before { + content: "\f63c"; +} + +.bi-file-earmark-pdf-fill::before { + content: "\f63d"; +} + +.bi-file-earmark-pdf::before { + content: "\f63e"; +} + +.bi-file-pdf-fill::before { + content: "\f63f"; +} + +.bi-file-pdf::before { + content: "\f640"; +} + +.bi-gender-ambiguous::before { + content: "\f641"; +} + +.bi-gender-female::before { + content: "\f642"; +} + +.bi-gender-male::before { + content: "\f643"; +} + +.bi-gender-trans::before { + content: "\f644"; +} + +.bi-headset-vr::before { + content: "\f645"; +} + +.bi-info-lg::before { + content: "\f646"; +} + +.bi-mastodon::before { + content: "\f647"; +} + +.bi-messenger::before { + content: "\f648"; +} + +.bi-piggy-bank-fill::before { + content: "\f649"; +} + +.bi-piggy-bank::before { + content: "\f64a"; +} + +.bi-pin-map-fill::before { + content: "\f64b"; +} + +.bi-pin-map::before { + content: "\f64c"; +} + +.bi-plus-lg::before { + content: "\f64d"; +} + +.bi-question-lg::before { + content: "\f64e"; +} + +.bi-recycle::before { + content: "\f64f"; +} + +.bi-reddit::before { + content: "\f650"; +} + +.bi-safe-fill::before { + content: "\f651"; +} + +.bi-safe2-fill::before { + content: "\f652"; +} + +.bi-safe2::before { + content: "\f653"; +} + +.bi-sd-card-fill::before { + content: "\f654"; +} + +.bi-sd-card::before { + content: "\f655"; +} + +.bi-skype::before { + content: "\f656"; +} + +.bi-slash-lg::before { + content: "\f657"; +} + +.bi-translate::before { + content: "\f658"; +} + +.bi-x-lg::before { + content: "\f659"; +} + +.bi-safe::before { + content: "\f65a"; +} + +.bi-apple::before { + content: "\f65b"; +} + +.bi-microsoft::before { + content: "\f65d"; +} + +.bi-windows::before { + content: "\f65e"; +} + +.bi-behance::before { + content: "\f65c"; +} + +.bi-dribbble::before { + content: "\f65f"; +} + +.bi-line::before { + content: "\f660"; +} + +.bi-medium::before { + content: "\f661"; +} + +.bi-paypal::before { + content: "\f662"; +} + +.bi-pinterest::before { + content: "\f663"; +} + +.bi-signal::before { + content: "\f664"; +} + +.bi-snapchat::before { + content: "\f665"; +} + +.bi-spotify::before { + content: "\f666"; +} + +.bi-stack-overflow::before { + content: "\f667"; +} + +.bi-strava::before { + content: "\f668"; +} + +.bi-wordpress::before { + content: "\f669"; +} + +.bi-vimeo::before { + content: "\f66a"; +} + +.bi-activity::before { + content: "\f66b"; +} + +.bi-easel2-fill::before { + content: "\f66c"; +} + +.bi-easel2::before { + content: "\f66d"; +} + +.bi-easel3-fill::before { + content: "\f66e"; +} + +.bi-easel3::before { + content: "\f66f"; +} + +.bi-fan::before { + content: "\f670"; +} + +.bi-fingerprint::before { + content: "\f671"; +} + +.bi-graph-down-arrow::before { + content: "\f672"; +} + +.bi-graph-up-arrow::before { + content: "\f673"; +} + +.bi-hypnotize::before { + content: "\f674"; +} + +.bi-magic::before { + content: "\f675"; +} + +.bi-person-rolodex::before { + content: "\f676"; +} + +.bi-person-video::before { + content: "\f677"; +} + +.bi-person-video2::before { + content: "\f678"; +} + +.bi-person-video3::before { + content: "\f679"; +} + +.bi-person-workspace::before { + content: "\f67a"; +} + +.bi-radioactive::before { + content: "\f67b"; +} + +.bi-webcam-fill::before { + content: "\f67c"; +} + +.bi-webcam::before { + content: "\f67d"; +} + +.bi-yin-yang::before { + content: "\f67e"; +} + +.bi-bandaid-fill::before { + content: "\f680"; +} + +.bi-bandaid::before { + content: "\f681"; +} + +.bi-bluetooth::before { + content: "\f682"; +} + +.bi-body-text::before { + content: "\f683"; +} + +.bi-boombox::before { + content: "\f684"; +} + +.bi-boxes::before { + content: "\f685"; +} + +.bi-dpad-fill::before { + content: "\f686"; +} + +.bi-dpad::before { + content: "\f687"; +} + +.bi-ear-fill::before { + content: "\f688"; +} + +.bi-ear::before { + content: "\f689"; +} + +.bi-envelope-check-1::before { + content: "\f68a"; +} + +.bi-envelope-check-fill::before { + content: "\f68b"; +} + +.bi-envelope-check::before { + content: "\f68c"; +} + +.bi-envelope-dash-1::before { + content: "\f68d"; +} + +.bi-envelope-dash-fill::before { + content: "\f68e"; +} + +.bi-envelope-dash::before { + content: "\f68f"; +} + +.bi-envelope-exclamation-1::before { + content: "\f690"; +} + +.bi-envelope-exclamation-fill::before { + content: "\f691"; +} + +.bi-envelope-exclamation::before { + content: "\f692"; +} + +.bi-envelope-plus-fill::before { + content: "\f693"; +} + +.bi-envelope-plus::before { + content: "\f694"; +} + +.bi-envelope-slash-1::before { + content: "\f695"; +} + +.bi-envelope-slash-fill::before { + content: "\f696"; +} + +.bi-envelope-slash::before { + content: "\f697"; +} + +.bi-envelope-x-1::before { + content: "\f698"; +} + +.bi-envelope-x-fill::before { + content: "\f699"; +} + +.bi-envelope-x::before { + content: "\f69a"; +} + +.bi-explicit-fill::before { + content: "\f69b"; +} + +.bi-explicit::before { + content: "\f69c"; +} + +.bi-git::before { + content: "\f69d"; +} + +.bi-infinity::before { + content: "\f69e"; +} + +.bi-list-columns-reverse::before { + content: "\f69f"; +} + +.bi-list-columns::before { + content: "\f6a0"; +} + +.bi-meta::before { + content: "\f6a1"; +} + +.bi-mortorboard-fill::before { + content: "\f6a2"; +} + +.bi-mortorboard::before { + content: "\f6a3"; +} + +.bi-nintendo-switch::before { + content: "\f6a4"; +} + +.bi-pc-display-horizontal::before { + content: "\f6a5"; +} + +.bi-pc-display::before { + content: "\f6a6"; +} + +.bi-pc-horizontal::before { + content: "\f6a7"; +} + +.bi-pc::before { + content: "\f6a8"; +} + +.bi-playstation::before { + content: "\f6a9"; +} + +.bi-plus-slash-minus::before { + content: "\f6aa"; +} + +.bi-projector-fill::before { + content: "\f6ab"; +} + +.bi-projector::before { + content: "\f6ac"; +} + +.bi-qr-code-scan::before { + content: "\f6ad"; +} + +.bi-qr-code::before { + content: "\f6ae"; +} + +.bi-quora::before { + content: "\f6af"; +} + +.bi-quote::before { + content: "\f6b0"; +} + +.bi-robot::before { + content: "\f6b1"; +} + +.bi-send-check-fill::before { + content: "\f6b2"; +} + +.bi-send-check::before { + content: "\f6b3"; +} + +.bi-send-dash-fill::before { + content: "\f6b4"; +} + +.bi-send-dash::before { + content: "\f6b5"; +} + +.bi-send-exclamation-1::before { + content: "\f6b6"; +} + +.bi-send-exclamation-fill::before { + content: "\f6b7"; +} + +.bi-send-exclamation::before { + content: "\f6b8"; +} + +.bi-send-fill::before { + content: "\f6b9"; +} + +.bi-send-plus-fill::before { + content: "\f6ba"; +} + +.bi-send-plus::before { + content: "\f6bb"; +} + +.bi-send-slash-fill::before { + content: "\f6bc"; +} + +.bi-send-slash::before { + content: "\f6bd"; +} + +.bi-send-x-fill::before { + content: "\f6be"; +} + +.bi-send-x::before { + content: "\f6bf"; +} + +.bi-send::before { + content: "\f6c0"; +} + +.bi-steam::before { + content: "\f6c1"; +} + +.bi-terminal-dash-1::before { + content: "\f6c2"; +} + +.bi-terminal-dash::before { + content: "\f6c3"; +} + +.bi-terminal-plus::before { + content: "\f6c4"; +} + +.bi-terminal-split::before { + content: "\f6c5"; +} + +.bi-ticket-detailed-fill::before { + content: "\f6c6"; +} + +.bi-ticket-detailed::before { + content: "\f6c7"; +} + +.bi-ticket-fill::before { + content: "\f6c8"; +} + +.bi-ticket-perforated-fill::before { + content: "\f6c9"; +} + +.bi-ticket-perforated::before { + content: "\f6ca"; +} + +.bi-ticket::before { + content: "\f6cb"; +} + +.bi-tiktok::before { + content: "\f6cc"; +} + +.bi-window-dash::before { + content: "\f6cd"; +} + +.bi-window-desktop::before { + content: "\f6ce"; +} + +.bi-window-fullscreen::before { + content: "\f6cf"; +} + +.bi-window-plus::before { + content: "\f6d0"; +} + +.bi-window-split::before { + content: "\f6d1"; +} + +.bi-window-stack::before { + content: "\f6d2"; +} + +.bi-window-x::before { + content: "\f6d3"; +} + +.bi-xbox::before { + content: "\f6d4"; +} + +.bi-ethernet::before { + content: "\f6d5"; +} + +.bi-hdmi-fill::before { + content: "\f6d6"; +} + +.bi-hdmi::before { + content: "\f6d7"; +} + +.bi-usb-c-fill::before { + content: "\f6d8"; +} + +.bi-usb-c::before { + content: "\f6d9"; +} + +.bi-usb-fill::before { + content: "\f6da"; +} + +.bi-usb-plug-fill::before { + content: "\f6db"; +} + +.bi-usb-plug::before { + content: "\f6dc"; +} + +.bi-usb-symbol::before { + content: "\f6dd"; +} + +.bi-usb::before { + content: "\f6de"; +} + +.bi-boombox-fill::before { + content: "\f6df"; +} + +.bi-displayport-1::before { + content: "\f6e0"; +} + +.bi-displayport::before { + content: "\f6e1"; +} + +.bi-gpu-card::before { + content: "\f6e2"; +} + +.bi-memory::before { + content: "\f6e3"; +} + +.bi-modem-fill::before { + content: "\f6e4"; +} + +.bi-modem::before { + content: "\f6e5"; +} + +.bi-motherboard-fill::before { + content: "\f6e6"; +} + +.bi-motherboard::before { + content: "\f6e7"; +} + +.bi-optical-audio-fill::before { + content: "\f6e8"; +} + +.bi-optical-audio::before { + content: "\f6e9"; +} + +.bi-pci-card::before { + content: "\f6ea"; +} + +.bi-router-fill::before { + content: "\f6eb"; +} + +.bi-router::before { + content: "\f6ec"; +} + +.bi-ssd-fill::before { + content: "\f6ed"; +} + +.bi-ssd::before { + content: "\f6ee"; +} + +.bi-thunderbolt-fill::before { + content: "\f6ef"; +} + +.bi-thunderbolt::before { + content: "\f6f0"; +} + +.bi-usb-drive-fill::before { + content: "\f6f1"; +} + +.bi-usb-drive::before { + content: "\f6f2"; +} + +.bi-usb-micro-fill::before { + content: "\f6f3"; +} + +.bi-usb-micro::before { + content: "\f6f4"; +} + +.bi-usb-mini-fill::before { + content: "\f6f5"; +} + +.bi-usb-mini::before { + content: "\f6f6"; +} + +.bi-cloud-haze2::before { + content: "\f6f7"; +} + +.bi-device-hdd-fill::before { + content: "\f6f8"; +} + +.bi-device-hdd::before { + content: "\f6f9"; +} + +.bi-device-ssd-fill::before { + content: "\f6fa"; +} + +.bi-device-ssd::before { + content: "\f6fb"; +} + +.bi-displayport-fill::before { + content: "\f6fc"; +} + +.bi-mortarboard-fill::before { + content: "\f6fd"; +} + +.bi-mortarboard::before { + content: "\f6fe"; +} + +.bi-terminal-x::before { + content: "\f6ff"; +} + +.bi-arrow-through-heart-fill::before { + content: "\f700"; +} + +.bi-arrow-through-heart::before { + content: "\f701"; +} + +.bi-badge-sd-fill::before { + content: "\f702"; +} + +.bi-badge-sd::before { + content: "\f703"; +} + +.bi-bag-heart-fill::before { + content: "\f704"; +} + +.bi-bag-heart::before { + content: "\f705"; +} + +.bi-balloon-fill::before { + content: "\f706"; +} + +.bi-balloon-heart-fill::before { + content: "\f707"; +} + +.bi-balloon-heart::before { + content: "\f708"; +} + +.bi-balloon::before { + content: "\f709"; +} + +.bi-box2-fill::before { + content: "\f70a"; +} + +.bi-box2-heart-fill::before { + content: "\f70b"; +} + +.bi-box2-heart::before { + content: "\f70c"; +} + +.bi-box2::before { + content: "\f70d"; +} + +.bi-braces-asterisk::before { + content: "\f70e"; +} + +.bi-calendar-heart-fill::before { + content: "\f70f"; +} + +.bi-calendar-heart::before { + content: "\f710"; +} + +.bi-calendar2-heart-fill::before { + content: "\f711"; +} + +.bi-calendar2-heart::before { + content: "\f712"; +} + +.bi-chat-heart-fill::before { + content: "\f713"; +} + +.bi-chat-heart::before { + content: "\f714"; +} + +.bi-chat-left-heart-fill::before { + content: "\f715"; +} + +.bi-chat-left-heart::before { + content: "\f716"; +} + +.bi-chat-right-heart-fill::before { + content: "\f717"; +} + +.bi-chat-right-heart::before { + content: "\f718"; +} + +.bi-chat-square-heart-fill::before { + content: "\f719"; +} + +.bi-chat-square-heart::before { + content: "\f71a"; +} + +.bi-clipboard-check-fill::before { + content: "\f71b"; +} + +.bi-clipboard-data-fill::before { + content: "\f71c"; +} + +.bi-clipboard-fill::before { + content: "\f71d"; +} + +.bi-clipboard-heart-fill::before { + content: "\f71e"; +} + +.bi-clipboard-heart::before { + content: "\f71f"; +} + +.bi-clipboard-minus-fill::before { + content: "\f720"; +} + +.bi-clipboard-plus-fill::before { + content: "\f721"; +} + +.bi-clipboard-pulse::before { + content: "\f722"; +} + +.bi-clipboard-x-fill::before { + content: "\f723"; +} + +.bi-clipboard2-check-fill::before { + content: "\f724"; +} + +.bi-clipboard2-check::before { + content: "\f725"; +} + +.bi-clipboard2-data-fill::before { + content: "\f726"; +} + +.bi-clipboard2-data::before { + content: "\f727"; +} + +.bi-clipboard2-fill::before { + content: "\f728"; +} + +.bi-clipboard2-heart-fill::before { + content: "\f729"; +} + +.bi-clipboard2-heart::before { + content: "\f72a"; +} + +.bi-clipboard2-minus-fill::before { + content: "\f72b"; +} + +.bi-clipboard2-minus::before { + content: "\f72c"; +} + +.bi-clipboard2-plus-fill::before { + content: "\f72d"; +} + +.bi-clipboard2-plus::before { + content: "\f72e"; +} + +.bi-clipboard2-pulse-fill::before { + content: "\f72f"; +} + +.bi-clipboard2-pulse::before { + content: "\f730"; +} + +.bi-clipboard2-x-fill::before { + content: "\f731"; +} + +.bi-clipboard2-x::before { + content: "\f732"; +} + +.bi-clipboard2::before { + content: "\f733"; +} + +.bi-emoji-kiss-fill::before { + content: "\f734"; +} + +.bi-emoji-kiss::before { + content: "\f735"; +} + +.bi-envelope-heart-fill::before { + content: "\f736"; +} + +.bi-envelope-heart::before { + content: "\f737"; +} + +.bi-envelope-open-heart-fill::before { + content: "\f738"; +} + +.bi-envelope-open-heart::before { + content: "\f739"; +} + +.bi-envelope-paper-fill::before { + content: "\f73a"; +} + +.bi-envelope-paper-heart-fill::before { + content: "\f73b"; +} + +.bi-envelope-paper-heart::before { + content: "\f73c"; +} + +.bi-envelope-paper::before { + content: "\f73d"; +} + +.bi-filetype-aac::before { + content: "\f73e"; +} + +.bi-filetype-ai::before { + content: "\f73f"; +} + +.bi-filetype-bmp::before { + content: "\f740"; +} + +.bi-filetype-cs::before { + content: "\f741"; +} + +.bi-filetype-css::before { + content: "\f742"; +} + +.bi-filetype-csv::before { + content: "\f743"; +} + +.bi-filetype-doc::before { + content: "\f744"; +} + +.bi-filetype-docx::before { + content: "\f745"; +} + +.bi-filetype-exe::before { + content: "\f746"; +} + +.bi-filetype-gif::before { + content: "\f747"; +} + +.bi-filetype-heic::before { + content: "\f748"; +} + +.bi-filetype-html::before { + content: "\f749"; +} + +.bi-filetype-java::before { + content: "\f74a"; +} + +.bi-filetype-jpg::before { + content: "\f74b"; +} + +.bi-filetype-js::before { + content: "\f74c"; +} + +.bi-filetype-jsx::before { + content: "\f74d"; +} + +.bi-filetype-key::before { + content: "\f74e"; +} + +.bi-filetype-m4p::before { + content: "\f74f"; +} + +.bi-filetype-md::before { + content: "\f750"; +} + +.bi-filetype-mdx::before { + content: "\f751"; +} + +.bi-filetype-mov::before { + content: "\f752"; +} + +.bi-filetype-mp3::before { + content: "\f753"; +} + +.bi-filetype-mp4::before { + content: "\f754"; +} + +.bi-filetype-otf::before { + content: "\f755"; +} + +.bi-filetype-pdf::before { + content: "\f756"; +} + +.bi-filetype-php::before { + content: "\f757"; +} + +.bi-filetype-png::before { + content: "\f758"; +} + +.bi-filetype-ppt-1::before { + content: "\f759"; +} + +.bi-filetype-ppt::before { + content: "\f75a"; +} + +.bi-filetype-psd::before { + content: "\f75b"; +} + +.bi-filetype-py::before { + content: "\f75c"; +} + +.bi-filetype-raw::before { + content: "\f75d"; +} + +.bi-filetype-rb::before { + content: "\f75e"; +} + +.bi-filetype-sass::before { + content: "\f75f"; +} + +.bi-filetype-scss::before { + content: "\f760"; +} + +.bi-filetype-sh::before { + content: "\f761"; +} + +.bi-filetype-svg::before { + content: "\f762"; +} + +.bi-filetype-tiff::before { + content: "\f763"; +} + +.bi-filetype-tsx::before { + content: "\f764"; +} + +.bi-filetype-ttf::before { + content: "\f765"; +} + +.bi-filetype-txt::before { + content: "\f766"; +} + +.bi-filetype-wav::before { + content: "\f767"; +} + +.bi-filetype-woff::before { + content: "\f768"; +} + +.bi-filetype-xls-1::before { + content: "\f769"; +} + +.bi-filetype-xls::before { + content: "\f76a"; +} + +.bi-filetype-xml::before { + content: "\f76b"; +} + +.bi-filetype-yml::before { + content: "\f76c"; +} + +.bi-heart-arrow::before { + content: "\f76d"; +} + +.bi-heart-pulse-fill::before { + content: "\f76e"; +} + +.bi-heart-pulse::before { + content: "\f76f"; +} + +.bi-heartbreak-fill::before { + content: "\f770"; +} + +.bi-heartbreak::before { + content: "\f771"; +} + +.bi-hearts::before { + content: "\f772"; +} + +.bi-hospital-fill::before { + content: "\f773"; +} + +.bi-hospital::before { + content: "\f774"; +} + +.bi-house-heart-fill::before { + content: "\f775"; +} + +.bi-house-heart::before { + content: "\f776"; +} + +.bi-incognito::before { + content: "\f777"; +} + +.bi-magnet-fill::before { + content: "\f778"; +} + +.bi-magnet::before { + content: "\f779"; +} + +.bi-person-heart::before { + content: "\f77a"; +} + +.bi-person-hearts::before { + content: "\f77b"; +} + +.bi-phone-flip::before { + content: "\f77c"; +} + +.bi-plugin::before { + content: "\f77d"; +} + +.bi-postage-fill::before { + content: "\f77e"; +} + +.bi-postage-heart-fill::before { + content: "\f77f"; +} + +.bi-postage-heart::before { + content: "\f780"; +} + +.bi-postage::before { + content: "\f781"; +} + +.bi-postcard-fill::before { + content: "\f782"; +} + +.bi-postcard-heart-fill::before { + content: "\f783"; +} + +.bi-postcard-heart::before { + content: "\f784"; +} + +.bi-postcard::before { + content: "\f785"; +} + +.bi-search-heart-fill::before { + content: "\f786"; +} + +.bi-search-heart::before { + content: "\f787"; +} + +.bi-sliders2-vertical::before { + content: "\f788"; +} + +.bi-sliders2::before { + content: "\f789"; +} + +.bi-trash3-fill::before { + content: "\f78a"; +} + +.bi-trash3::before { + content: "\f78b"; +} + +.bi-valentine::before { + content: "\f78c"; +} + +.bi-valentine2::before { + content: "\f78d"; +} + +.bi-wrench-adjustable-circle-fill::before { + content: "\f78e"; +} + +.bi-wrench-adjustable-circle::before { + content: "\f78f"; +} + +.bi-wrench-adjustable::before { + content: "\f790"; +} + +.bi-filetype-json::before { + content: "\f791"; +} + +.bi-filetype-pptx::before { + content: "\f792"; +} + +.bi-filetype-xlsx::before { + content: "\f793"; +} + +.bi-1-circle-1::before { + content: "\f794"; +} + +.bi-1-circle-fill-1::before { + content: "\f795"; +} + +.bi-1-circle-fill::before { + content: "\f796"; +} + +.bi-1-circle::before { + content: "\f797"; +} + +.bi-1-square-fill::before { + content: "\f798"; +} + +.bi-1-square::before { + content: "\f799"; +} + +.bi-2-circle-1::before { + content: "\f79a"; +} + +.bi-2-circle-fill-1::before { + content: "\f79b"; +} + +.bi-2-circle-fill::before { + content: "\f79c"; +} + +.bi-2-circle::before { + content: "\f79d"; +} + +.bi-2-square-fill::before { + content: "\f79e"; +} + +.bi-2-square::before { + content: "\f79f"; +} + +.bi-3-circle-1::before { + content: "\f7a0"; +} + +.bi-3-circle-fill-1::before { + content: "\f7a1"; +} + +.bi-3-circle-fill::before { + content: "\f7a2"; +} + +.bi-3-circle::before { + content: "\f7a3"; +} + +.bi-3-square-fill::before { + content: "\f7a4"; +} + +.bi-3-square::before { + content: "\f7a5"; +} + +.bi-4-circle-1::before { + content: "\f7a6"; +} + +.bi-4-circle-fill-1::before { + content: "\f7a7"; +} + +.bi-4-circle-fill::before { + content: "\f7a8"; +} + +.bi-4-circle::before { + content: "\f7a9"; +} + +.bi-4-square-fill::before { + content: "\f7aa"; +} + +.bi-4-square::before { + content: "\f7ab"; +} + +.bi-5-circle-1::before { + content: "\f7ac"; +} + +.bi-5-circle-fill-1::before { + content: "\f7ad"; +} + +.bi-5-circle-fill::before { + content: "\f7ae"; +} + +.bi-5-circle::before { + content: "\f7af"; +} + +.bi-5-square-fill::before { + content: "\f7b0"; +} + +.bi-5-square::before { + content: "\f7b1"; +} + +.bi-6-circle-1::before { + content: "\f7b2"; +} + +.bi-6-circle-fill-1::before { + content: "\f7b3"; +} + +.bi-6-circle-fill::before { + content: "\f7b4"; +} + +.bi-6-circle::before { + content: "\f7b5"; +} + +.bi-6-square-fill::before { + content: "\f7b6"; +} + +.bi-6-square::before { + content: "\f7b7"; +} + +.bi-7-circle-1::before { + content: "\f7b8"; +} + +.bi-7-circle-fill-1::before { + content: "\f7b9"; +} + +.bi-7-circle-fill::before { + content: "\f7ba"; +} + +.bi-7-circle::before { + content: "\f7bb"; +} + +.bi-7-square-fill::before { + content: "\f7bc"; +} + +.bi-7-square::before { + content: "\f7bd"; +} + +.bi-8-circle-1::before { + content: "\f7be"; +} + +.bi-8-circle-fill-1::before { + content: "\f7bf"; +} + +.bi-8-circle-fill::before { + content: "\f7c0"; +} + +.bi-8-circle::before { + content: "\f7c1"; +} + +.bi-8-square-fill::before { + content: "\f7c2"; +} + +.bi-8-square::before { + content: "\f7c3"; +} + +.bi-9-circle-1::before { + content: "\f7c4"; +} + +.bi-9-circle-fill-1::before { + content: "\f7c5"; +} + +.bi-9-circle-fill::before { + content: "\f7c6"; +} + +.bi-9-circle::before { + content: "\f7c7"; +} + +.bi-9-square-fill::before { + content: "\f7c8"; +} + +.bi-9-square::before { + content: "\f7c9"; +} + +.bi-airplane-engines-fill::before { + content: "\f7ca"; +} + +.bi-airplane-engines::before { + content: "\f7cb"; +} + +.bi-airplane-fill::before { + content: "\f7cc"; +} + +.bi-airplane::before { + content: "\f7cd"; +} + +.bi-alexa::before { + content: "\f7ce"; +} + +.bi-alipay::before { + content: "\f7cf"; +} + +.bi-android::before { + content: "\f7d0"; +} + +.bi-android2::before { + content: "\f7d1"; +} + +.bi-box-fill::before { + content: "\f7d2"; +} + +.bi-box-seam-fill::before { + content: "\f7d3"; +} + +.bi-browser-chrome::before { + content: "\f7d4"; +} + +.bi-browser-edge::before { + content: "\f7d5"; +} + +.bi-browser-firefox::before { + content: "\f7d6"; +} + +.bi-browser-safari::before { + content: "\f7d7"; +} + +.bi-c-circle-1::before { + content: "\f7d8"; +} + +.bi-c-circle-fill-1::before { + content: "\f7d9"; +} + +.bi-c-circle-fill::before { + content: "\f7da"; +} + +.bi-c-circle::before { + content: "\f7db"; +} + +.bi-c-square-fill::before { + content: "\f7dc"; +} + +.bi-c-square::before { + content: "\f7dd"; +} + +.bi-capsule-pill::before { + content: "\f7de"; +} + +.bi-capsule::before { + content: "\f7df"; +} + +.bi-car-front-fill::before { + content: "\f7e0"; +} + +.bi-car-front::before { + content: "\f7e1"; +} + +.bi-cassette-fill::before { + content: "\f7e2"; +} + +.bi-cassette::before { + content: "\f7e3"; +} + +.bi-cc-circle-1::before { + content: "\f7e4"; +} + +.bi-cc-circle-fill-1::before { + content: "\f7e5"; +} + +.bi-cc-circle-fill::before { + content: "\f7e6"; +} + +.bi-cc-circle::before { + content: "\f7e7"; +} + +.bi-cc-square-fill::before { + content: "\f7e8"; +} + +.bi-cc-square::before { + content: "\f7e9"; +} + +.bi-cup-hot-fill::before { + content: "\f7ea"; +} + +.bi-cup-hot::before { + content: "\f7eb"; +} + +.bi-currency-rupee::before { + content: "\f7ec"; +} + +.bi-dropbox::before { + content: "\f7ed"; +} + +.bi-escape::before { + content: "\f7ee"; +} + +.bi-fast-forward-btn-fill::before { + content: "\f7ef"; +} + +.bi-fast-forward-btn::before { + content: "\f7f0"; +} + +.bi-fast-forward-circle-fill::before { + content: "\f7f1"; +} + +.bi-fast-forward-circle::before { + content: "\f7f2"; +} + +.bi-fast-forward-fill::before { + content: "\f7f3"; +} + +.bi-fast-forward::before { + content: "\f7f4"; +} + +.bi-filetype-sql::before { + content: "\f7f5"; +} + +.bi-fire::before { + content: "\f7f6"; +} + +.bi-google-play::before { + content: "\f7f7"; +} + +.bi-h-circle-1::before { + content: "\f7f8"; +} + +.bi-h-circle-fill-1::before { + content: "\f7f9"; +} + +.bi-h-circle-fill::before { + content: "\f7fa"; +} + +.bi-h-circle::before { + content: "\f7fb"; +} + +.bi-h-square-fill::before { + content: "\f7fc"; +} + +.bi-h-square::before { + content: "\f7fd"; +} + +.bi-indent::before { + content: "\f7fe"; +} + +.bi-lungs-fill::before { + content: "\f7ff"; +} + +.bi-lungs::before { + content: "\f800"; +} + +.bi-microsoft-teams::before { + content: "\f801"; +} + +.bi-p-circle-1::before { + content: "\f802"; +} + +.bi-p-circle-fill-1::before { + content: "\f803"; +} + +.bi-p-circle-fill::before { + content: "\f804"; +} + +.bi-p-circle::before { + content: "\f805"; +} + +.bi-p-square-fill::before { + content: "\f806"; +} + +.bi-p-square::before { + content: "\f807"; +} + +.bi-pass-fill::before { + content: "\f808"; +} + +.bi-pass::before { + content: "\f809"; +} + +.bi-prescription::before { + content: "\f80a"; +} + +.bi-prescription2::before { + content: "\f80b"; +} + +.bi-r-circle-1::before { + content: "\f80c"; +} + +.bi-r-circle-fill-1::before { + content: "\f80d"; +} + +.bi-r-circle-fill::before { + content: "\f80e"; +} + +.bi-r-circle::before { + content: "\f80f"; +} + +.bi-r-square-fill::before { + content: "\f810"; +} + +.bi-r-square::before { + content: "\f811"; +} + +.bi-repeat-1::before { + content: "\f812"; +} + +.bi-repeat::before { + content: "\f813"; +} + +.bi-rewind-btn-fill::before { + content: "\f814"; +} + +.bi-rewind-btn::before { + content: "\f815"; +} + +.bi-rewind-circle-fill::before { + content: "\f816"; +} + +.bi-rewind-circle::before { + content: "\f817"; +} + +.bi-rewind-fill::before { + content: "\f818"; +} + +.bi-rewind::before { + content: "\f819"; +} + +.bi-train-freight-front-fill::before { + content: "\f81a"; +} + +.bi-train-freight-front::before { + content: "\f81b"; +} + +.bi-train-front-fill::before { + content: "\f81c"; +} + +.bi-train-front::before { + content: "\f81d"; +} + +.bi-train-lightrail-front-fill::before { + content: "\f81e"; +} + +.bi-train-lightrail-front::before { + content: "\f81f"; +} + +.bi-truck-front-fill::before { + content: "\f820"; +} + +.bi-truck-front::before { + content: "\f821"; +} + +.bi-ubuntu::before { + content: "\f822"; +} + +.bi-unindent::before { + content: "\f823"; +} + +.bi-unity::before { + content: "\f824"; +} + +.bi-universal-access-circle::before { + content: "\f825"; +} + +.bi-universal-access::before { + content: "\f826"; +} + +.bi-virus::before { + content: "\f827"; +} + +.bi-virus2::before { + content: "\f828"; +} + +.bi-wechat::before { + content: "\f829"; +} + +.bi-yelp::before { + content: "\f82a"; +} + +.bi-sign-stop-fill::before { + content: "\f82b"; +} + +.bi-sign-stop-lights-fill::before { + content: "\f82c"; +} + +.bi-sign-stop-lights::before { + content: "\f82d"; +} + +.bi-sign-stop::before { + content: "\f82e"; +} + +.bi-sign-turn-left-fill::before { + content: "\f82f"; +} + +.bi-sign-turn-left::before { + content: "\f830"; +} + +.bi-sign-turn-right-fill::before { + content: "\f831"; +} + +.bi-sign-turn-right::before { + content: "\f832"; +} + +.bi-sign-turn-slight-left-fill::before { + content: "\f833"; +} + +.bi-sign-turn-slight-left::before { + content: "\f834"; +} + +.bi-sign-turn-slight-right-fill::before { + content: "\f835"; +} + +.bi-sign-turn-slight-right::before { + content: "\f836"; +} + +.bi-sign-yield-fill::before { + content: "\f837"; +} + +.bi-sign-yield::before { + content: "\f838"; +} + +.bi-ev-station-fill::before { + content: "\f839"; +} + +.bi-ev-station::before { + content: "\f83a"; +} + +.bi-fuel-pump-diesel-fill::before { + content: "\f83b"; +} + +.bi-fuel-pump-diesel::before { + content: "\f83c"; +} + +.bi-fuel-pump-fill::before { + content: "\f83d"; +} + +.bi-fuel-pump::before { + content: "\f83e"; +} + +.bi-0-circle-fill::before { + content: "\f83f"; +} + +.bi-0-circle::before { + content: "\f840"; +} + +.bi-0-square-fill::before { + content: "\f841"; +} + +.bi-0-square::before { + content: "\f842"; +} + +.bi-rocket-fill::before { + content: "\f843"; +} + +.bi-rocket-takeoff-fill::before { + content: "\f844"; +} + +.bi-rocket-takeoff::before { + content: "\f845"; +} + +.bi-rocket::before { + content: "\f846"; +} + +.bi-stripe::before { + content: "\f847"; +} + +.bi-subscript::before { + content: "\f848"; +} + +.bi-superscript::before { + content: "\f849"; +} + +.bi-trello::before { + content: "\f84a"; +} + +.bi-envelope-at-fill::before { + content: "\f84b"; +} + +.bi-envelope-at::before { + content: "\f84c"; +} + +.bi-regex::before { + content: "\f84d"; +} + +.bi-text-wrap::before { + content: "\f84e"; +} + +.bi-sign-dead-end-fill::before { + content: "\f84f"; +} + +.bi-sign-dead-end::before { + content: "\f850"; +} + +.bi-sign-do-not-enter-fill::before { + content: "\f851"; +} + +.bi-sign-do-not-enter::before { + content: "\f852"; +} + +.bi-sign-intersection-fill::before { + content: "\f853"; +} + +.bi-sign-intersection-side-fill::before { + content: "\f854"; +} + +.bi-sign-intersection-side::before { + content: "\f855"; +} + +.bi-sign-intersection-t-fill::before { + content: "\f856"; +} + +.bi-sign-intersection-t::before { + content: "\f857"; +} + +.bi-sign-intersection-y-fill::before { + content: "\f858"; +} + +.bi-sign-intersection-y::before { + content: "\f859"; +} + +.bi-sign-intersection::before { + content: "\f85a"; +} + +.bi-sign-merge-left-fill::before { + content: "\f85b"; +} + +.bi-sign-merge-left::before { + content: "\f85c"; +} + +.bi-sign-merge-right-fill::before { + content: "\f85d"; +} + +.bi-sign-merge-right::before { + content: "\f85e"; +} + +.bi-sign-no-left-turn-fill::before { + content: "\f85f"; +} + +.bi-sign-no-left-turn::before { + content: "\f860"; +} + +.bi-sign-no-parking-fill::before { + content: "\f861"; +} + +.bi-sign-no-parking::before { + content: "\f862"; +} + +.bi-sign-no-right-turn-fill::before { + content: "\f863"; +} + +.bi-sign-no-right-turn::before { + content: "\f864"; +} + +.bi-sign-railroad-fill::before { + content: "\f865"; +} + +.bi-sign-railroad::before { + content: "\f866"; +} + +.bi-building-add::before { + content: "\f867"; +} + +.bi-building-check::before { + content: "\f868"; +} + +.bi-building-dash::before { + content: "\f869"; +} + +.bi-building-down::before { + content: "\f86a"; +} + +.bi-building-exclamation::before { + content: "\f86b"; +} + +.bi-building-fill-add::before { + content: "\f86c"; +} + +.bi-building-fill-check::before { + content: "\f86d"; +} + +.bi-building-fill-dash::before { + content: "\f86e"; +} + +.bi-building-fill-down::before { + content: "\f86f"; +} + +.bi-building-fill-exclamation::before { + content: "\f870"; +} + +.bi-building-fill-gear::before { + content: "\f871"; +} + +.bi-building-fill-lock::before { + content: "\f872"; +} + +.bi-building-fill-slash::before { + content: "\f873"; +} + +.bi-building-fill-up::before { + content: "\f874"; +} + +.bi-building-fill-x::before { + content: "\f875"; +} + +.bi-building-fill::before { + content: "\f876"; +} + +.bi-building-gear::before { + content: "\f877"; +} + +.bi-building-lock::before { + content: "\f878"; +} + +.bi-building-slash::before { + content: "\f879"; +} + +.bi-building-up::before { + content: "\f87a"; +} + +.bi-building-x::before { + content: "\f87b"; +} + +.bi-buildings-fill::before { + content: "\f87c"; +} + +.bi-buildings::before { + content: "\f87d"; +} + +.bi-bus-front-fill::before { + content: "\f87e"; +} + +.bi-bus-front::before { + content: "\f87f"; +} + +.bi-ev-front-fill::before { + content: "\f880"; +} + +.bi-ev-front::before { + content: "\f881"; +} + +.bi-globe-americas::before { + content: "\f882"; +} + +.bi-globe-asia-australia::before { + content: "\f883"; +} + +.bi-globe-central-south-asia::before { + content: "\f884"; +} + +.bi-globe-europe-africa::before { + content: "\f885"; +} + +.bi-house-add-fill::before { + content: "\f886"; +} + +.bi-house-add::before { + content: "\f887"; +} + +.bi-house-check-fill::before { + content: "\f888"; +} + +.bi-house-check::before { + content: "\f889"; +} + +.bi-house-dash-fill::before { + content: "\f88a"; +} + +.bi-house-dash::before { + content: "\f88b"; +} + +.bi-house-down-fill::before { + content: "\f88c"; +} + +.bi-house-down::before { + content: "\f88d"; +} + +.bi-house-exclamation-fill::before { + content: "\f88e"; +} + +.bi-house-exclamation::before { + content: "\f88f"; +} + +.bi-house-gear-fill::before { + content: "\f890"; +} + +.bi-house-gear::before { + content: "\f891"; +} + +.bi-house-lock-fill::before { + content: "\f892"; +} + +.bi-house-lock::before { + content: "\f893"; +} + +.bi-house-slash-fill::before { + content: "\f894"; +} + +.bi-house-slash::before { + content: "\f895"; +} + +.bi-house-up-fill::before { + content: "\f896"; +} + +.bi-house-up::before { + content: "\f897"; +} + +.bi-house-x-fill::before { + content: "\f898"; +} + +.bi-house-x::before { + content: "\f899"; +} + +.bi-person-add::before { + content: "\f89a"; +} + +.bi-person-down::before { + content: "\f89b"; +} + +.bi-person-exclamation::before { + content: "\f89c"; +} + +.bi-person-fill-add::before { + content: "\f89d"; +} + +.bi-person-fill-check::before { + content: "\f89e"; +} + +.bi-person-fill-dash::before { + content: "\f89f"; +} + +.bi-person-fill-down::before { + content: "\f8a0"; +} + +.bi-person-fill-exclamation::before { + content: "\f8a1"; +} + +.bi-person-fill-gear::before { + content: "\f8a2"; +} + +.bi-person-fill-lock::before { + content: "\f8a3"; +} + +.bi-person-fill-slash::before { + content: "\f8a4"; +} + +.bi-person-fill-up::before { + content: "\f8a5"; +} + +.bi-person-fill-x::before { + content: "\f8a6"; +} + +.bi-person-gear::before { + content: "\f8a7"; +} + +.bi-person-lock::before { + content: "\f8a8"; +} + +.bi-person-slash::before { + content: "\f8a9"; +} + +.bi-person-up::before { + content: "\f8aa"; +} + +.bi-scooter::before { + content: "\f8ab"; +} + +.bi-taxi-front-fill::before { + content: "\f8ac"; +} + +.bi-taxi-front::before { + content: "\f8ad"; +} + +.bi-amd::before { + content: "\f8ae"; +} + +.bi-database-add::before { + content: "\f8af"; +} + +.bi-database-check::before { + content: "\f8b0"; +} + +.bi-database-dash::before { + content: "\f8b1"; +} + +.bi-database-down::before { + content: "\f8b2"; +} + +.bi-database-exclamation::before { + content: "\f8b3"; +} + +.bi-database-fill-add::before { + content: "\f8b4"; +} + +.bi-database-fill-check::before { + content: "\f8b5"; +} + +.bi-database-fill-dash::before { + content: "\f8b6"; +} + +.bi-database-fill-down::before { + content: "\f8b7"; +} + +.bi-database-fill-exclamation::before { + content: "\f8b8"; +} + +.bi-database-fill-gear::before { + content: "\f8b9"; +} + +.bi-database-fill-lock::before { + content: "\f8ba"; +} + +.bi-database-fill-slash::before { + content: "\f8bb"; +} + +.bi-database-fill-up::before { + content: "\f8bc"; +} + +.bi-database-fill-x::before { + content: "\f8bd"; +} + +.bi-database-fill::before { + content: "\f8be"; +} + +.bi-database-gear::before { + content: "\f8bf"; +} + +.bi-database-lock::before { + content: "\f8c0"; +} + +.bi-database-slash::before { + content: "\f8c1"; +} + +.bi-database-up::before { + content: "\f8c2"; +} + +.bi-database-x::before { + content: "\f8c3"; +} + +.bi-database::before { + content: "\f8c4"; +} + +.bi-houses-fill::before { + content: "\f8c5"; +} + +.bi-houses::before { + content: "\f8c6"; +} + +.bi-nvidia::before { + content: "\f8c7"; +} + +.bi-person-vcard-fill::before { + content: "\f8c8"; +} + +.bi-person-vcard::before { + content: "\f8c9"; +} + +.bi-sina-weibo::before { + content: "\f8ca"; +} + +.bi-tencent-qq::before { + content: "\f8cb"; +} + +.bi-wikipedia::before { + content: "\f8cc"; +} + +/*! + * Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +.fa { + font-family: var(--fa-style-family, "Font Awesome 6 Free"); + font-weight: var(--fa-style, 900); +} + +.fa, .fa-brands, .fa-classic, .fa-regular, .fa-sharp, .fa-solid, .fab, .far, .fas { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: var(--fa-display, inline-block); + font-style: normal; + font-variant: normal; + line-height: 1; + text-rendering: auto; +} + +.fa-classic, .fa-regular, .fa-solid, .far, .fas { + font-family: "Font Awesome 6 Free"; +} + +.fa-brands, .fab { + font-family: "Font Awesome 6 Brands"; +} + +.fa-1x { + font-size: 1em; +} + +.fa-2x { + font-size: 2em; +} + +.fa-3x { + font-size: 3em; +} + +.fa-4x { + font-size: 4em; +} + +.fa-5x { + font-size: 5em; +} + +.fa-6x { + font-size: 6em; +} + +.fa-7x { + font-size: 7em; +} + +.fa-8x { + font-size: 8em; +} + +.fa-9x { + font-size: 9em; +} + +.fa-10x { + font-size: 10em; +} + +.fa-2xs { + font-size: 0.625em; + line-height: 0.1em; + vertical-align: 0.225em; +} + +.fa-xs { + font-size: 0.75em; + line-height: 0.08333em; + vertical-align: 0.125em; +} + +.fa-sm { + font-size: 0.875em; + line-height: 0.07143em; + vertical-align: 0.05357em; +} + +.fa-lg { + font-size: 1.25em; + line-height: 0.05em; + vertical-align: -0.075em; +} + +.fa-xl { + font-size: 1.5em; + line-height: 0.04167em; + vertical-align: -0.125em; +} + +.fa-2xl { + font-size: 2em; + line-height: 0.03125em; + vertical-align: -0.1875em; +} + +.fa-fw { + text-align: center; + width: 1.25em; +} + +.fa-ul { + list-style-type: none; + margin-left: var(--fa-li-margin, 2.5em); + padding-left: 0; +} + +.fa-ul > li { + position: relative; +} + +.fa-li { + left: calc(var(--fa-li-width, 2em) * -1); + position: absolute; + text-align: center; + width: var(--fa-li-width, 2em); + line-height: inherit; +} + +.fa-border { + border-radius: var(--fa-border-radius, 0.1em); + border: var(--fa-border-width, 0.08em) var(--fa-border-style, solid) var(--fa-border-color, #eee); + padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); +} + +.fa-pull-left { + float: left; + margin-right: var(--fa-pull-margin, 0.3em); +} + +.fa-pull-right { + float: right; + margin-left: var(--fa-pull-margin, 0.3em); +} + +.fa-beat { + -webkit-animation-name: fa-beat; + animation-name: fa-beat; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); +} + +.fa-bounce { + -webkit-animation-name: fa-bounce; + animation-name: fa-bounce; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); +} + +.fa-fade { + -webkit-animation-name: fa-fade; + animation-name: fa-fade; + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); +} + +.fa-beat-fade, .fa-fade { + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); +} + +.fa-beat-fade { + -webkit-animation-name: fa-beat-fade; + animation-name: fa-beat-fade; + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); +} + +.fa-flip { + -webkit-animation-name: fa-flip; + animation-name: fa-flip; + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out); + animation-timing-function: var(--fa-animation-timing, ease-in-out); +} + +.fa-shake { + -webkit-animation-name: fa-shake; + animation-name: fa-shake; + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); +} + +.fa-shake, .fa-spin { + -webkit-animation-delay: var(--fa-animation-delay, 0s); + animation-delay: var(--fa-animation-delay, 0s); + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); +} + +.fa-spin { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-duration: var(--fa-animation-duration, 2s); + animation-duration: var(--fa-animation-duration, 2s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, linear); + animation-timing-function: var(--fa-animation-timing, linear); +} + +.fa-spin-reverse { + --fa-animation-direction:reverse; +} + +.fa-pulse, .fa-spin-pulse { + -webkit-animation-name: fa-spin; + animation-name: fa-spin; + -webkit-animation-direction: var(--fa-animation-direction, normal); + animation-direction: var(--fa-animation-direction, normal); + -webkit-animation-duration: var(--fa-animation-duration, 1s); + animation-duration: var(--fa-animation-duration, 1s); + -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + -webkit-animation-timing-function: var(--fa-animation-timing, steps(8)); + animation-timing-function: var(--fa-animation-timing, steps(8)); +} + +@media (prefers-reduced-motion: reduce) { + .fa-beat, .fa-beat-fade, .fa-bounce, .fa-fade, .fa-flip, .fa-pulse, .fa-shake, .fa-spin, .fa-spin-pulse { + -webkit-animation-delay: -1ms; + animation-delay: -1ms; + -webkit-animation-duration: 1ms; + animation-duration: 1ms; + -webkit-animation-iteration-count: 1; + animation-iteration-count: 1; + transition-delay: 0s; + transition-duration: 0s; + } +} +@-webkit-keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); + } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); + } +} +@keyframes fa-beat { + 0%, 90% { + -webkit-transform: scale(1); + transform: scale(1); + } + 45% { + -webkit-transform: scale(var(--fa-beat-scale, 1.25)); + transform: scale(var(--fa-beat-scale, 1.25)); + } +} +@-webkit-keyframes fa-bounce { + 0% { + -webkit-transform: scale(1) translateY(0); + transform: scale(1) translateY(0); + } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + } + 57% { + -webkit-transform: scale(1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1) translateY(var(--fa-bounce-rebound, -0.125em)); + } + 64% { + -webkit-transform: scale(1) translateY(0); + transform: scale(1) translateY(0); + } + to { + -webkit-transform: scale(1) translateY(0); + transform: scale(1) translateY(0); + } +} +@keyframes fa-bounce { + 0% { + -webkit-transform: scale(1) translateY(0); + transform: scale(1) translateY(0); + } + 10% { + -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + } + 30% { + -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + } + 50% { + -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + } + 57% { + -webkit-transform: scale(1) translateY(var(--fa-bounce-rebound, -0.125em)); + transform: scale(1) translateY(var(--fa-bounce-rebound, -0.125em)); + } + 64% { + -webkit-transform: scale(1) translateY(0); + transform: scale(1) translateY(0); + } + to { + -webkit-transform: scale(1) translateY(0); + transform: scale(1) translateY(0); + } +} +@-webkit-keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); + } +} +@keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); + } +} +@-webkit-keyframes fa-beat-fade { + 0%, to { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); + } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); + } +} +@keyframes fa-beat-fade { + 0%, to { + opacity: var(--fa-beat-fade-opacity, 0.4); + -webkit-transform: scale(1); + transform: scale(1); + } + 50% { + opacity: 1; + -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125)); + transform: scale(var(--fa-beat-fade-scale, 1.125)); + } +} +@-webkit-keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + } +} +@keyframes fa-flip { + 50% { + -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + } +} +@-webkit-keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); + } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); + } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); + } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); + } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); + } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); + } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); + } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); + } + 40%, to { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } +} +@keyframes fa-shake { + 0% { + -webkit-transform: rotate(-15deg); + transform: rotate(-15deg); + } + 4% { + -webkit-transform: rotate(15deg); + transform: rotate(15deg); + } + 8%, 24% { + -webkit-transform: rotate(-18deg); + transform: rotate(-18deg); + } + 12%, 28% { + -webkit-transform: rotate(18deg); + transform: rotate(18deg); + } + 16% { + -webkit-transform: rotate(-22deg); + transform: rotate(-22deg); + } + 20% { + -webkit-transform: rotate(22deg); + transform: rotate(22deg); + } + 32% { + -webkit-transform: rotate(-12deg); + transform: rotate(-12deg); + } + 36% { + -webkit-transform: rotate(12deg); + transform: rotate(12deg); + } + 40%, to { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(1turn); + transform: rotate(1turn); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(1turn); + transform: rotate(1turn); + } +} +.fa-rotate-90 { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); +} + +.fa-rotate-180 { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); +} + +.fa-rotate-270 { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); +} + +.fa-flip-horizontal { + -webkit-transform: scaleX(-1); + transform: scaleX(-1); +} + +.fa-flip-vertical { + -webkit-transform: scaleY(-1); + transform: scaleY(-1); +} + +.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical { + -webkit-transform: scale(-1); + transform: scale(-1); +} + +.fa-rotate-by { + -webkit-transform: rotate(var(--fa-rotate-angle, none)); + transform: rotate(var(--fa-rotate-angle, none)); +} + +.fa-stack { + display: inline-block; + height: 2em; + line-height: 2em; + position: relative; + vertical-align: middle; + width: 2.5em; +} + +.fa-stack-1x, .fa-stack-2x { + left: 0; + position: absolute; + text-align: center; + width: 100%; + z-index: var(--fa-stack-z-index, auto); +} + +.fa-stack-1x { + line-height: inherit; +} + +.fa-stack-2x { + font-size: 2em; +} + +.fa-inverse { + color: var(--fa-inverse, #fff); +} + +.fa-0:before { + content: "0"; +} + +.fa-1:before { + content: "1"; +} + +.fa-2:before { + content: "2"; +} + +.fa-3:before { + content: "3"; +} + +.fa-4:before { + content: "4"; +} + +.fa-5:before { + content: "5"; +} + +.fa-6:before { + content: "6"; +} + +.fa-7:before { + content: "7"; +} + +.fa-8:before { + content: "8"; +} + +.fa-9:before { + content: "9"; +} + +.fa-fill-drip:before { + content: "\f576"; +} + +.fa-arrows-to-circle:before { + content: "\e4bd"; +} + +.fa-chevron-circle-right:before, .fa-circle-chevron-right:before { + content: "\f138"; +} + +.fa-at:before { + content: "@"; +} + +.fa-trash-alt:before, .fa-trash-can:before { + content: "\f2ed"; +} + +.fa-text-height:before { + content: "\f034"; +} + +.fa-user-times:before, .fa-user-xmark:before { + content: "\f235"; +} + +.fa-stethoscope:before { + content: "\f0f1"; +} + +.fa-comment-alt:before, .fa-message:before { + content: "\f27a"; +} + +.fa-info:before { + content: "\f129"; +} + +.fa-compress-alt:before, .fa-down-left-and-up-right-to-center:before { + content: "\f422"; +} + +.fa-explosion:before { + content: "\e4e9"; +} + +.fa-file-alt:before, .fa-file-lines:before, .fa-file-text:before { + content: "\f15c"; +} + +.fa-wave-square:before { + content: "\f83e"; +} + +.fa-ring:before { + content: "\f70b"; +} + +.fa-building-un:before { + content: "\e4d9"; +} + +.fa-dice-three:before { + content: "\f527"; +} + +.fa-calendar-alt:before, .fa-calendar-days:before { + content: "\f073"; +} + +.fa-anchor-circle-check:before { + content: "\e4aa"; +} + +.fa-building-circle-arrow-right:before { + content: "\e4d1"; +} + +.fa-volleyball-ball:before, .fa-volleyball:before { + content: "\f45f"; +} + +.fa-arrows-up-to-line:before { + content: "\e4c2"; +} + +.fa-sort-desc:before, .fa-sort-down:before { + content: "\f0dd"; +} + +.fa-circle-minus:before, .fa-minus-circle:before { + content: "\f056"; +} + +.fa-door-open:before { + content: "\f52b"; +} + +.fa-right-from-bracket:before, .fa-sign-out-alt:before { + content: "\f2f5"; +} + +.fa-atom:before { + content: "\f5d2"; +} + +.fa-soap:before { + content: "\e06e"; +} + +.fa-heart-music-camera-bolt:before, .fa-icons:before { + content: "\f86d"; +} + +.fa-microphone-alt-slash:before, .fa-microphone-lines-slash:before { + content: "\f539"; +} + +.fa-bridge-circle-check:before { + content: "\e4c9"; +} + +.fa-pump-medical:before { + content: "\e06a"; +} + +.fa-fingerprint:before { + content: "\f577"; +} + +.fa-hand-point-right:before { + content: "\f0a4"; +} + +.fa-magnifying-glass-location:before, .fa-search-location:before { + content: "\f689"; +} + +.fa-forward-step:before, .fa-step-forward:before { + content: "\f051"; +} + +.fa-face-smile-beam:before, .fa-smile-beam:before { + content: "\f5b8"; +} + +.fa-flag-checkered:before { + content: "\f11e"; +} + +.fa-football-ball:before, .fa-football:before { + content: "\f44e"; +} + +.fa-school-circle-exclamation:before { + content: "\e56c"; +} + +.fa-crop:before { + content: "\f125"; +} + +.fa-angle-double-down:before, .fa-angles-down:before { + content: "\f103"; +} + +.fa-users-rectangle:before { + content: "\e594"; +} + +.fa-people-roof:before { + content: "\e537"; +} + +.fa-people-line:before { + content: "\e534"; +} + +.fa-beer-mug-empty:before, .fa-beer:before { + content: "\f0fc"; +} + +.fa-diagram-predecessor:before { + content: "\e477"; +} + +.fa-arrow-up-long:before, .fa-long-arrow-up:before { + content: "\f176"; +} + +.fa-burn:before, .fa-fire-flame-simple:before { + content: "\f46a"; +} + +.fa-male:before, .fa-person:before { + content: "\f183"; +} + +.fa-laptop:before { + content: "\f109"; +} + +.fa-file-csv:before { + content: "\f6dd"; +} + +.fa-menorah:before { + content: "\f676"; +} + +.fa-truck-plane:before { + content: "\e58f"; +} + +.fa-record-vinyl:before { + content: "\f8d9"; +} + +.fa-face-grin-stars:before, .fa-grin-stars:before { + content: "\f587"; +} + +.fa-bong:before { + content: "\f55c"; +} + +.fa-pastafarianism:before, .fa-spaghetti-monster-flying:before { + content: "\f67b"; +} + +.fa-arrow-down-up-across-line:before { + content: "\e4af"; +} + +.fa-spoon:before, .fa-utensil-spoon:before { + content: "\f2e5"; +} + +.fa-jar-wheat:before { + content: "\e517"; +} + +.fa-envelopes-bulk:before, .fa-mail-bulk:before { + content: "\f674"; +} + +.fa-file-circle-exclamation:before { + content: "\e4eb"; +} + +.fa-circle-h:before, .fa-hospital-symbol:before { + content: "\f47e"; +} + +.fa-pager:before { + content: "\f815"; +} + +.fa-address-book:before, .fa-contact-book:before { + content: "\f2b9"; +} + +.fa-strikethrough:before { + content: "\f0cc"; +} + +.fa-k:before { + content: "K"; +} + +.fa-landmark-flag:before { + content: "\e51c"; +} + +.fa-pencil-alt:before, .fa-pencil:before { + content: "\f303"; +} + +.fa-backward:before { + content: "\f04a"; +} + +.fa-caret-right:before { + content: "\f0da"; +} + +.fa-comments:before { + content: "\f086"; +} + +.fa-file-clipboard:before, .fa-paste:before { + content: "\f0ea"; +} + +.fa-code-pull-request:before { + content: "\e13c"; +} + +.fa-clipboard-list:before { + content: "\f46d"; +} + +.fa-truck-loading:before, .fa-truck-ramp-box:before { + content: "\f4de"; +} + +.fa-user-check:before { + content: "\f4fc"; +} + +.fa-vial-virus:before { + content: "\e597"; +} + +.fa-sheet-plastic:before { + content: "\e571"; +} + +.fa-blog:before { + content: "\f781"; +} + +.fa-user-ninja:before { + content: "\f504"; +} + +.fa-person-arrow-up-from-line:before { + content: "\e539"; +} + +.fa-scroll-torah:before, .fa-torah:before { + content: "\f6a0"; +} + +.fa-broom-ball:before, .fa-quidditch-broom-ball:before, .fa-quidditch:before { + content: "\f458"; +} + +.fa-toggle-off:before { + content: "\f204"; +} + +.fa-archive:before, .fa-box-archive:before { + content: "\f187"; +} + +.fa-person-drowning:before { + content: "\e545"; +} + +.fa-arrow-down-9-1:before, .fa-sort-numeric-desc:before, .fa-sort-numeric-down-alt:before { + content: "\f886"; +} + +.fa-face-grin-tongue-squint:before, .fa-grin-tongue-squint:before { + content: "\f58a"; +} + +.fa-spray-can:before { + content: "\f5bd"; +} + +.fa-truck-monster:before { + content: "\f63b"; +} + +.fa-w:before { + content: "W"; +} + +.fa-earth-africa:before, .fa-globe-africa:before { + content: "\f57c"; +} + +.fa-rainbow:before { + content: "\f75b"; +} + +.fa-circle-notch:before { + content: "\f1ce"; +} + +.fa-tablet-alt:before, .fa-tablet-screen-button:before { + content: "\f3fa"; +} + +.fa-paw:before { + content: "\f1b0"; +} + +.fa-cloud:before { + content: "\f0c2"; +} + +.fa-trowel-bricks:before { + content: "\e58a"; +} + +.fa-face-flushed:before, .fa-flushed:before { + content: "\f579"; +} + +.fa-hospital-user:before { + content: "\f80d"; +} + +.fa-tent-arrow-left-right:before { + content: "\e57f"; +} + +.fa-gavel:before, .fa-legal:before { + content: "\f0e3"; +} + +.fa-binoculars:before { + content: "\f1e5"; +} + +.fa-microphone-slash:before { + content: "\f131"; +} + +.fa-box-tissue:before { + content: "\e05b"; +} + +.fa-motorcycle:before { + content: "\f21c"; +} + +.fa-bell-concierge:before, .fa-concierge-bell:before { + content: "\f562"; +} + +.fa-pen-ruler:before, .fa-pencil-ruler:before { + content: "\f5ae"; +} + +.fa-people-arrows-left-right:before, .fa-people-arrows:before { + content: "\e068"; +} + +.fa-mars-and-venus-burst:before { + content: "\e523"; +} + +.fa-caret-square-right:before, .fa-square-caret-right:before { + content: "\f152"; +} + +.fa-cut:before, .fa-scissors:before { + content: "\f0c4"; +} + +.fa-sun-plant-wilt:before { + content: "\e57a"; +} + +.fa-toilets-portable:before { + content: "\e584"; +} + +.fa-hockey-puck:before { + content: "\f453"; +} + +.fa-table:before { + content: "\f0ce"; +} + +.fa-magnifying-glass-arrow-right:before { + content: "\e521"; +} + +.fa-digital-tachograph:before, .fa-tachograph-digital:before { + content: "\f566"; +} + +.fa-users-slash:before { + content: "\e073"; +} + +.fa-clover:before { + content: "\e139"; +} + +.fa-mail-reply:before, .fa-reply:before { + content: "\f3e5"; +} + +.fa-star-and-crescent:before { + content: "\f699"; +} + +.fa-house-fire:before { + content: "\e50c"; +} + +.fa-minus-square:before, .fa-square-minus:before { + content: "\f146"; +} + +.fa-helicopter:before { + content: "\f533"; +} + +.fa-compass:before { + content: "\f14e"; +} + +.fa-caret-square-down:before, .fa-square-caret-down:before { + content: "\f150"; +} + +.fa-file-circle-question:before { + content: "\e4ef"; +} + +.fa-laptop-code:before { + content: "\f5fc"; +} + +.fa-swatchbook:before { + content: "\f5c3"; +} + +.fa-prescription-bottle:before { + content: "\f485"; +} + +.fa-bars:before, .fa-navicon:before { + content: "\f0c9"; +} + +.fa-people-group:before { + content: "\e533"; +} + +.fa-hourglass-3:before, .fa-hourglass-end:before { + content: "\f253"; +} + +.fa-heart-broken:before, .fa-heart-crack:before { + content: "\f7a9"; +} + +.fa-external-link-square-alt:before, .fa-square-up-right:before { + content: "\f360"; +} + +.fa-face-kiss-beam:before, .fa-kiss-beam:before { + content: "\f597"; +} + +.fa-film:before { + content: "\f008"; +} + +.fa-ruler-horizontal:before { + content: "\f547"; +} + +.fa-people-robbery:before { + content: "\e536"; +} + +.fa-lightbulb:before { + content: "\f0eb"; +} + +.fa-caret-left:before { + content: "\f0d9"; +} + +.fa-circle-exclamation:before, .fa-exclamation-circle:before { + content: "\f06a"; +} + +.fa-school-circle-xmark:before { + content: "\e56d"; +} + +.fa-arrow-right-from-bracket:before, .fa-sign-out:before { + content: "\f08b"; +} + +.fa-chevron-circle-down:before, .fa-circle-chevron-down:before { + content: "\f13a"; +} + +.fa-unlock-alt:before, .fa-unlock-keyhole:before { + content: "\f13e"; +} + +.fa-cloud-showers-heavy:before { + content: "\f740"; +} + +.fa-headphones-alt:before, .fa-headphones-simple:before { + content: "\f58f"; +} + +.fa-sitemap:before { + content: "\f0e8"; +} + +.fa-circle-dollar-to-slot:before, .fa-donate:before { + content: "\f4b9"; +} + +.fa-memory:before { + content: "\f538"; +} + +.fa-road-spikes:before { + content: "\e568"; +} + +.fa-fire-burner:before { + content: "\e4f1"; +} + +.fa-flag:before { + content: "\f024"; +} + +.fa-hanukiah:before { + content: "\f6e6"; +} + +.fa-feather:before { + content: "\f52d"; +} + +.fa-volume-down:before, .fa-volume-low:before { + content: "\f027"; +} + +.fa-comment-slash:before { + content: "\f4b3"; +} + +.fa-cloud-sun-rain:before { + content: "\f743"; +} + +.fa-compress:before { + content: "\f066"; +} + +.fa-wheat-alt:before, .fa-wheat-awn:before { + content: "\e2cd"; +} + +.fa-ankh:before { + content: "\f644"; +} + +.fa-hands-holding-child:before { + content: "\e4fa"; +} + +.fa-asterisk:before { + content: "*"; +} + +.fa-check-square:before, .fa-square-check:before { + content: "\f14a"; +} + +.fa-peseta-sign:before { + content: "\e221"; +} + +.fa-header:before, .fa-heading:before { + content: "\f1dc"; +} + +.fa-ghost:before { + content: "\f6e2"; +} + +.fa-list-squares:before, .fa-list:before { + content: "\f03a"; +} + +.fa-phone-square-alt:before, .fa-square-phone-flip:before { + content: "\f87b"; +} + +.fa-cart-plus:before { + content: "\f217"; +} + +.fa-gamepad:before { + content: "\f11b"; +} + +.fa-circle-dot:before, .fa-dot-circle:before { + content: "\f192"; +} + +.fa-dizzy:before, .fa-face-dizzy:before { + content: "\f567"; +} + +.fa-egg:before { + content: "\f7fb"; +} + +.fa-house-medical-circle-xmark:before { + content: "\e513"; +} + +.fa-campground:before { + content: "\f6bb"; +} + +.fa-folder-plus:before { + content: "\f65e"; +} + +.fa-futbol-ball:before, .fa-futbol:before, .fa-soccer-ball:before { + content: "\f1e3"; +} + +.fa-paint-brush:before, .fa-paintbrush:before { + content: "\f1fc"; +} + +.fa-lock:before { + content: "\f023"; +} + +.fa-gas-pump:before { + content: "\f52f"; +} + +.fa-hot-tub-person:before, .fa-hot-tub:before { + content: "\f593"; +} + +.fa-map-location:before, .fa-map-marked:before { + content: "\f59f"; +} + +.fa-house-flood-water:before { + content: "\e50e"; +} + +.fa-tree:before { + content: "\f1bb"; +} + +.fa-bridge-lock:before { + content: "\e4cc"; +} + +.fa-sack-dollar:before { + content: "\f81d"; +} + +.fa-edit:before, .fa-pen-to-square:before { + content: "\f044"; +} + +.fa-car-side:before { + content: "\f5e4"; +} + +.fa-share-alt:before, .fa-share-nodes:before { + content: "\f1e0"; +} + +.fa-heart-circle-minus:before { + content: "\e4ff"; +} + +.fa-hourglass-2:before, .fa-hourglass-half:before { + content: "\f252"; +} + +.fa-microscope:before { + content: "\f610"; +} + +.fa-sink:before { + content: "\e06d"; +} + +.fa-bag-shopping:before, .fa-shopping-bag:before { + content: "\f290"; +} + +.fa-arrow-down-z-a:before, .fa-sort-alpha-desc:before, .fa-sort-alpha-down-alt:before { + content: "\f881"; +} + +.fa-mitten:before { + content: "\f7b5"; +} + +.fa-person-rays:before { + content: "\e54d"; +} + +.fa-users:before { + content: "\f0c0"; +} + +.fa-eye-slash:before { + content: "\f070"; +} + +.fa-flask-vial:before { + content: "\e4f3"; +} + +.fa-hand-paper:before, .fa-hand:before { + content: "\f256"; +} + +.fa-om:before { + content: "\f679"; +} + +.fa-worm:before { + content: "\e599"; +} + +.fa-house-circle-xmark:before { + content: "\e50b"; +} + +.fa-plug:before { + content: "\f1e6"; +} + +.fa-chevron-up:before { + content: "\f077"; +} + +.fa-hand-spock:before { + content: "\f259"; +} + +.fa-stopwatch:before { + content: "\f2f2"; +} + +.fa-face-kiss:before, .fa-kiss:before { + content: "\f596"; +} + +.fa-bridge-circle-xmark:before { + content: "\e4cb"; +} + +.fa-face-grin-tongue:before, .fa-grin-tongue:before { + content: "\f589"; +} + +.fa-chess-bishop:before { + content: "\f43a"; +} + +.fa-face-grin-wink:before, .fa-grin-wink:before { + content: "\f58c"; +} + +.fa-deaf:before, .fa-deafness:before, .fa-ear-deaf:before, .fa-hard-of-hearing:before { + content: "\f2a4"; +} + +.fa-road-circle-check:before { + content: "\e564"; +} + +.fa-dice-five:before { + content: "\f523"; +} + +.fa-rss-square:before, .fa-square-rss:before { + content: "\f143"; +} + +.fa-land-mine-on:before { + content: "\e51b"; +} + +.fa-i-cursor:before { + content: "\f246"; +} + +.fa-stamp:before { + content: "\f5bf"; +} + +.fa-stairs:before { + content: "\e289"; +} + +.fa-i:before { + content: "I"; +} + +.fa-hryvnia-sign:before, .fa-hryvnia:before { + content: "\f6f2"; +} + +.fa-pills:before { + content: "\f484"; +} + +.fa-face-grin-wide:before, .fa-grin-alt:before { + content: "\f581"; +} + +.fa-tooth:before { + content: "\f5c9"; +} + +.fa-v:before { + content: "V"; +} + +.fa-bangladeshi-taka-sign:before { + content: "\e2e6"; +} + +.fa-bicycle:before { + content: "\f206"; +} + +.fa-rod-asclepius:before, .fa-rod-snake:before, .fa-staff-aesculapius:before, .fa-staff-snake:before { + content: "\e579"; +} + +.fa-head-side-cough-slash:before { + content: "\e062"; +} + +.fa-ambulance:before, .fa-truck-medical:before { + content: "\f0f9"; +} + +.fa-wheat-awn-circle-exclamation:before { + content: "\e598"; +} + +.fa-snowman:before { + content: "\f7d0"; +} + +.fa-mortar-pestle:before { + content: "\f5a7"; +} + +.fa-road-barrier:before { + content: "\e562"; +} + +.fa-school:before { + content: "\f549"; +} + +.fa-igloo:before { + content: "\f7ae"; +} + +.fa-joint:before { + content: "\f595"; +} + +.fa-angle-right:before { + content: "\f105"; +} + +.fa-horse:before { + content: "\f6f0"; +} + +.fa-q:before { + content: "Q"; +} + +.fa-g:before { + content: "G"; +} + +.fa-notes-medical:before { + content: "\f481"; +} + +.fa-temperature-2:before, .fa-temperature-half:before, .fa-thermometer-2:before, .fa-thermometer-half:before { + content: "\f2c9"; +} + +.fa-dong-sign:before { + content: "\e169"; +} + +.fa-capsules:before { + content: "\f46b"; +} + +.fa-poo-bolt:before, .fa-poo-storm:before { + content: "\f75a"; +} + +.fa-face-frown-open:before, .fa-frown-open:before { + content: "\f57a"; +} + +.fa-hand-point-up:before { + content: "\f0a6"; +} + +.fa-money-bill:before { + content: "\f0d6"; +} + +.fa-bookmark:before { + content: "\f02e"; +} + +.fa-align-justify:before { + content: "\f039"; +} + +.fa-umbrella-beach:before { + content: "\f5ca"; +} + +.fa-helmet-un:before { + content: "\e503"; +} + +.fa-bullseye:before { + content: "\f140"; +} + +.fa-bacon:before { + content: "\f7e5"; +} + +.fa-hand-point-down:before { + content: "\f0a7"; +} + +.fa-arrow-up-from-bracket:before { + content: "\e09a"; +} + +.fa-folder-blank:before, .fa-folder:before { + content: "\f07b"; +} + +.fa-file-medical-alt:before, .fa-file-waveform:before { + content: "\f478"; +} + +.fa-radiation:before { + content: "\f7b9"; +} + +.fa-chart-simple:before { + content: "\e473"; +} + +.fa-mars-stroke:before { + content: "\f229"; +} + +.fa-vial:before { + content: "\f492"; +} + +.fa-dashboard:before, .fa-gauge-med:before, .fa-gauge:before, .fa-tachometer-alt-average:before { + content: "\f624"; +} + +.fa-magic-wand-sparkles:before, .fa-wand-magic-sparkles:before { + content: "\e2ca"; +} + +.fa-e:before { + content: "E"; +} + +.fa-pen-alt:before, .fa-pen-clip:before { + content: "\f305"; +} + +.fa-bridge-circle-exclamation:before { + content: "\e4ca"; +} + +.fa-user:before { + content: "\f007"; +} + +.fa-school-circle-check:before { + content: "\e56b"; +} + +.fa-dumpster:before { + content: "\f793"; +} + +.fa-shuttle-van:before, .fa-van-shuttle:before { + content: "\f5b6"; +} + +.fa-building-user:before { + content: "\e4da"; +} + +.fa-caret-square-left:before, .fa-square-caret-left:before { + content: "\f191"; +} + +.fa-highlighter:before { + content: "\f591"; +} + +.fa-key:before { + content: "\f084"; +} + +.fa-bullhorn:before { + content: "\f0a1"; +} + +.fa-globe:before { + content: "\f0ac"; +} + +.fa-synagogue:before { + content: "\f69b"; +} + +.fa-person-half-dress:before { + content: "\e548"; +} + +.fa-road-bridge:before { + content: "\e563"; +} + +.fa-location-arrow:before { + content: "\f124"; +} + +.fa-c:before { + content: "C"; +} + +.fa-tablet-button:before { + content: "\f10a"; +} + +.fa-building-lock:before { + content: "\e4d6"; +} + +.fa-pizza-slice:before { + content: "\f818"; +} + +.fa-money-bill-wave:before { + content: "\f53a"; +} + +.fa-area-chart:before, .fa-chart-area:before { + content: "\f1fe"; +} + +.fa-house-flag:before { + content: "\e50d"; +} + +.fa-person-circle-minus:before { + content: "\e540"; +} + +.fa-ban:before, .fa-cancel:before { + content: "\f05e"; +} + +.fa-camera-rotate:before { + content: "\e0d8"; +} + +.fa-air-freshener:before, .fa-spray-can-sparkles:before { + content: "\f5d0"; +} + +.fa-star:before { + content: "\f005"; +} + +.fa-repeat:before { + content: "\f363"; +} + +.fa-cross:before { + content: "\f654"; +} + +.fa-box:before { + content: "\f466"; +} + +.fa-venus-mars:before { + content: "\f228"; +} + +.fa-arrow-pointer:before, .fa-mouse-pointer:before { + content: "\f245"; +} + +.fa-expand-arrows-alt:before, .fa-maximize:before { + content: "\f31e"; +} + +.fa-charging-station:before { + content: "\f5e7"; +} + +.fa-shapes:before, .fa-triangle-circle-square:before { + content: "\f61f"; +} + +.fa-random:before, .fa-shuffle:before { + content: "\f074"; +} + +.fa-person-running:before, .fa-running:before { + content: "\f70c"; +} + +.fa-mobile-retro:before { + content: "\e527"; +} + +.fa-grip-lines-vertical:before { + content: "\f7a5"; +} + +.fa-spider:before { + content: "\f717"; +} + +.fa-hands-bound:before { + content: "\e4f9"; +} + +.fa-file-invoice-dollar:before { + content: "\f571"; +} + +.fa-plane-circle-exclamation:before { + content: "\e556"; +} + +.fa-x-ray:before { + content: "\f497"; +} + +.fa-spell-check:before { + content: "\f891"; +} + +.fa-slash:before { + content: "\f715"; +} + +.fa-computer-mouse:before, .fa-mouse:before { + content: "\f8cc"; +} + +.fa-arrow-right-to-bracket:before, .fa-sign-in:before { + content: "\f090"; +} + +.fa-shop-slash:before, .fa-store-alt-slash:before { + content: "\e070"; +} + +.fa-server:before { + content: "\f233"; +} + +.fa-virus-covid-slash:before { + content: "\e4a9"; +} + +.fa-shop-lock:before { + content: "\e4a5"; +} + +.fa-hourglass-1:before, .fa-hourglass-start:before { + content: "\f251"; +} + +.fa-blender-phone:before { + content: "\f6b6"; +} + +.fa-building-wheat:before { + content: "\e4db"; +} + +.fa-person-breastfeeding:before { + content: "\e53a"; +} + +.fa-right-to-bracket:before, .fa-sign-in-alt:before { + content: "\f2f6"; +} + +.fa-venus:before { + content: "\f221"; +} + +.fa-passport:before { + content: "\f5ab"; +} + +.fa-heart-pulse:before, .fa-heartbeat:before { + content: "\f21e"; +} + +.fa-people-carry-box:before, .fa-people-carry:before { + content: "\f4ce"; +} + +.fa-temperature-high:before { + content: "\f769"; +} + +.fa-microchip:before { + content: "\f2db"; +} + +.fa-crown:before { + content: "\f521"; +} + +.fa-weight-hanging:before { + content: "\f5cd"; +} + +.fa-xmarks-lines:before { + content: "\e59a"; +} + +.fa-file-prescription:before { + content: "\f572"; +} + +.fa-weight-scale:before, .fa-weight:before { + content: "\f496"; +} + +.fa-user-friends:before, .fa-user-group:before { + content: "\f500"; +} + +.fa-arrow-up-a-z:before, .fa-sort-alpha-up:before { + content: "\f15e"; +} + +.fa-chess-knight:before { + content: "\f441"; +} + +.fa-face-laugh-squint:before, .fa-laugh-squint:before { + content: "\f59b"; +} + +.fa-wheelchair:before { + content: "\f193"; +} + +.fa-arrow-circle-up:before, .fa-circle-arrow-up:before { + content: "\f0aa"; +} + +.fa-toggle-on:before { + content: "\f205"; +} + +.fa-person-walking:before, .fa-walking:before { + content: "\f554"; +} + +.fa-l:before { + content: "L"; +} + +.fa-fire:before { + content: "\f06d"; +} + +.fa-bed-pulse:before, .fa-procedures:before { + content: "\f487"; +} + +.fa-shuttle-space:before, .fa-space-shuttle:before { + content: "\f197"; +} + +.fa-face-laugh:before, .fa-laugh:before { + content: "\f599"; +} + +.fa-folder-open:before { + content: "\f07c"; +} + +.fa-heart-circle-plus:before { + content: "\e500"; +} + +.fa-code-fork:before { + content: "\e13b"; +} + +.fa-city:before { + content: "\f64f"; +} + +.fa-microphone-alt:before, .fa-microphone-lines:before { + content: "\f3c9"; +} + +.fa-pepper-hot:before { + content: "\f816"; +} + +.fa-unlock:before { + content: "\f09c"; +} + +.fa-colon-sign:before { + content: "\e140"; +} + +.fa-headset:before { + content: "\f590"; +} + +.fa-store-slash:before { + content: "\e071"; +} + +.fa-road-circle-xmark:before { + content: "\e566"; +} + +.fa-user-minus:before { + content: "\f503"; +} + +.fa-mars-stroke-up:before, .fa-mars-stroke-v:before { + content: "\f22a"; +} + +.fa-champagne-glasses:before, .fa-glass-cheers:before { + content: "\f79f"; +} + +.fa-clipboard:before { + content: "\f328"; +} + +.fa-house-circle-exclamation:before { + content: "\e50a"; +} + +.fa-file-arrow-up:before, .fa-file-upload:before { + content: "\f574"; +} + +.fa-wifi-3:before, .fa-wifi-strong:before, .fa-wifi:before { + content: "\f1eb"; +} + +.fa-bath:before, .fa-bathtub:before { + content: "\f2cd"; +} + +.fa-underline:before { + content: "\f0cd"; +} + +.fa-user-edit:before, .fa-user-pen:before { + content: "\f4ff"; +} + +.fa-signature:before { + content: "\f5b7"; +} + +.fa-stroopwafel:before { + content: "\f551"; +} + +.fa-bold:before { + content: "\f032"; +} + +.fa-anchor-lock:before { + content: "\e4ad"; +} + +.fa-building-ngo:before { + content: "\e4d7"; +} + +.fa-manat-sign:before { + content: "\e1d5"; +} + +.fa-not-equal:before { + content: "\f53e"; +} + +.fa-border-style:before, .fa-border-top-left:before { + content: "\f853"; +} + +.fa-map-location-dot:before, .fa-map-marked-alt:before { + content: "\f5a0"; +} + +.fa-jedi:before { + content: "\f669"; +} + +.fa-poll:before, .fa-square-poll-vertical:before { + content: "\f681"; +} + +.fa-mug-hot:before { + content: "\f7b6"; +} + +.fa-battery-car:before, .fa-car-battery:before { + content: "\f5df"; +} + +.fa-gift:before { + content: "\f06b"; +} + +.fa-dice-two:before { + content: "\f528"; +} + +.fa-chess-queen:before { + content: "\f445"; +} + +.fa-glasses:before { + content: "\f530"; +} + +.fa-chess-board:before { + content: "\f43c"; +} + +.fa-building-circle-check:before { + content: "\e4d2"; +} + +.fa-person-chalkboard:before { + content: "\e53d"; +} + +.fa-mars-stroke-h:before, .fa-mars-stroke-right:before { + content: "\f22b"; +} + +.fa-hand-back-fist:before, .fa-hand-rock:before { + content: "\f255"; +} + +.fa-caret-square-up:before, .fa-square-caret-up:before { + content: "\f151"; +} + +.fa-cloud-showers-water:before { + content: "\e4e4"; +} + +.fa-bar-chart:before, .fa-chart-bar:before { + content: "\f080"; +} + +.fa-hands-bubbles:before, .fa-hands-wash:before { + content: "\e05e"; +} + +.fa-less-than-equal:before { + content: "\f537"; +} + +.fa-train:before { + content: "\f238"; +} + +.fa-eye-low-vision:before, .fa-low-vision:before { + content: "\f2a8"; +} + +.fa-crow:before { + content: "\f520"; +} + +.fa-sailboat:before { + content: "\e445"; +} + +.fa-window-restore:before { + content: "\f2d2"; +} + +.fa-plus-square:before, .fa-square-plus:before { + content: "\f0fe"; +} + +.fa-torii-gate:before { + content: "\f6a1"; +} + +.fa-frog:before { + content: "\f52e"; +} + +.fa-bucket:before { + content: "\e4cf"; +} + +.fa-image:before { + content: "\f03e"; +} + +.fa-microphone:before { + content: "\f130"; +} + +.fa-cow:before { + content: "\f6c8"; +} + +.fa-caret-up:before { + content: "\f0d8"; +} + +.fa-screwdriver:before { + content: "\f54a"; +} + +.fa-folder-closed:before { + content: "\e185"; +} + +.fa-house-tsunami:before { + content: "\e515"; +} + +.fa-square-nfi:before { + content: "\e576"; +} + +.fa-arrow-up-from-ground-water:before { + content: "\e4b5"; +} + +.fa-glass-martini-alt:before, .fa-martini-glass:before { + content: "\f57b"; +} + +.fa-rotate-back:before, .fa-rotate-backward:before, .fa-rotate-left:before, .fa-undo-alt:before { + content: "\f2ea"; +} + +.fa-columns:before, .fa-table-columns:before { + content: "\f0db"; +} + +.fa-lemon:before { + content: "\f094"; +} + +.fa-head-side-mask:before { + content: "\e063"; +} + +.fa-handshake:before { + content: "\f2b5"; +} + +.fa-gem:before { + content: "\f3a5"; +} + +.fa-dolly-box:before, .fa-dolly:before { + content: "\f472"; +} + +.fa-smoking:before { + content: "\f48d"; +} + +.fa-compress-arrows-alt:before, .fa-minimize:before { + content: "\f78c"; +} + +.fa-monument:before { + content: "\f5a6"; +} + +.fa-snowplow:before { + content: "\f7d2"; +} + +.fa-angle-double-right:before, .fa-angles-right:before { + content: "\f101"; +} + +.fa-cannabis:before { + content: "\f55f"; +} + +.fa-circle-play:before, .fa-play-circle:before { + content: "\f144"; +} + +.fa-tablets:before { + content: "\f490"; +} + +.fa-ethernet:before { + content: "\f796"; +} + +.fa-eur:before, .fa-euro-sign:before, .fa-euro:before { + content: "\f153"; +} + +.fa-chair:before { + content: "\f6c0"; +} + +.fa-check-circle:before, .fa-circle-check:before { + content: "\f058"; +} + +.fa-circle-stop:before, .fa-stop-circle:before { + content: "\f28d"; +} + +.fa-compass-drafting:before, .fa-drafting-compass:before { + content: "\f568"; +} + +.fa-plate-wheat:before { + content: "\e55a"; +} + +.fa-icicles:before { + content: "\f7ad"; +} + +.fa-person-shelter:before { + content: "\e54f"; +} + +.fa-neuter:before { + content: "\f22c"; +} + +.fa-id-badge:before { + content: "\f2c1"; +} + +.fa-marker:before { + content: "\f5a1"; +} + +.fa-face-laugh-beam:before, .fa-laugh-beam:before { + content: "\f59a"; +} + +.fa-helicopter-symbol:before { + content: "\e502"; +} + +.fa-universal-access:before { + content: "\f29a"; +} + +.fa-chevron-circle-up:before, .fa-circle-chevron-up:before { + content: "\f139"; +} + +.fa-lari-sign:before { + content: "\e1c8"; +} + +.fa-volcano:before { + content: "\f770"; +} + +.fa-person-walking-dashed-line-arrow-right:before { + content: "\e553"; +} + +.fa-gbp:before, .fa-pound-sign:before, .fa-sterling-sign:before { + content: "\f154"; +} + +.fa-viruses:before { + content: "\e076"; +} + +.fa-square-person-confined:before { + content: "\e577"; +} + +.fa-user-tie:before { + content: "\f508"; +} + +.fa-arrow-down-long:before, .fa-long-arrow-down:before { + content: "\f175"; +} + +.fa-tent-arrow-down-to-line:before { + content: "\e57e"; +} + +.fa-certificate:before { + content: "\f0a3"; +} + +.fa-mail-reply-all:before, .fa-reply-all:before { + content: "\f122"; +} + +.fa-suitcase:before { + content: "\f0f2"; +} + +.fa-person-skating:before, .fa-skating:before { + content: "\f7c5"; +} + +.fa-filter-circle-dollar:before, .fa-funnel-dollar:before { + content: "\f662"; +} + +.fa-camera-retro:before { + content: "\f083"; +} + +.fa-arrow-circle-down:before, .fa-circle-arrow-down:before { + content: "\f0ab"; +} + +.fa-arrow-right-to-file:before, .fa-file-import:before { + content: "\f56f"; +} + +.fa-external-link-square:before, .fa-square-arrow-up-right:before { + content: "\f14c"; +} + +.fa-box-open:before { + content: "\f49e"; +} + +.fa-scroll:before { + content: "\f70e"; +} + +.fa-spa:before { + content: "\f5bb"; +} + +.fa-location-pin-lock:before { + content: "\e51f"; +} + +.fa-pause:before { + content: "\f04c"; +} + +.fa-hill-avalanche:before { + content: "\e507"; +} + +.fa-temperature-0:before, .fa-temperature-empty:before, .fa-thermometer-0:before, .fa-thermometer-empty:before { + content: "\f2cb"; +} + +.fa-bomb:before { + content: "\f1e2"; +} + +.fa-registered:before { + content: "\f25d"; +} + +.fa-address-card:before, .fa-contact-card:before, .fa-vcard:before { + content: "\f2bb"; +} + +.fa-balance-scale-right:before, .fa-scale-unbalanced-flip:before { + content: "\f516"; +} + +.fa-subscript:before { + content: "\f12c"; +} + +.fa-diamond-turn-right:before, .fa-directions:before { + content: "\f5eb"; +} + +.fa-burst:before { + content: "\e4dc"; +} + +.fa-house-laptop:before, .fa-laptop-house:before { + content: "\e066"; +} + +.fa-face-tired:before, .fa-tired:before { + content: "\f5c8"; +} + +.fa-money-bills:before { + content: "\e1f3"; +} + +.fa-smog:before { + content: "\f75f"; +} + +.fa-crutch:before { + content: "\f7f7"; +} + +.fa-cloud-arrow-up:before, .fa-cloud-upload-alt:before, .fa-cloud-upload:before { + content: "\f0ee"; +} + +.fa-palette:before { + content: "\f53f"; +} + +.fa-arrows-turn-right:before { + content: "\e4c0"; +} + +.fa-vest:before { + content: "\e085"; +} + +.fa-ferry:before { + content: "\e4ea"; +} + +.fa-arrows-down-to-people:before { + content: "\e4b9"; +} + +.fa-seedling:before, .fa-sprout:before { + content: "\f4d8"; +} + +.fa-arrows-alt-h:before, .fa-left-right:before { + content: "\f337"; +} + +.fa-boxes-packing:before { + content: "\e4c7"; +} + +.fa-arrow-circle-left:before, .fa-circle-arrow-left:before { + content: "\f0a8"; +} + +.fa-group-arrows-rotate:before { + content: "\e4f6"; +} + +.fa-bowl-food:before { + content: "\e4c6"; +} + +.fa-candy-cane:before { + content: "\f786"; +} + +.fa-arrow-down-wide-short:before, .fa-sort-amount-asc:before, .fa-sort-amount-down:before { + content: "\f160"; +} + +.fa-cloud-bolt:before, .fa-thunderstorm:before { + content: "\f76c"; +} + +.fa-remove-format:before, .fa-text-slash:before { + content: "\f87d"; +} + +.fa-face-smile-wink:before, .fa-smile-wink:before { + content: "\f4da"; +} + +.fa-file-word:before { + content: "\f1c2"; +} + +.fa-file-powerpoint:before { + content: "\f1c4"; +} + +.fa-arrows-h:before, .fa-arrows-left-right:before { + content: "\f07e"; +} + +.fa-house-lock:before { + content: "\e510"; +} + +.fa-cloud-arrow-down:before, .fa-cloud-download-alt:before, .fa-cloud-download:before { + content: "\f0ed"; +} + +.fa-children:before { + content: "\e4e1"; +} + +.fa-blackboard:before, .fa-chalkboard:before { + content: "\f51b"; +} + +.fa-user-alt-slash:before, .fa-user-large-slash:before { + content: "\f4fa"; +} + +.fa-envelope-open:before { + content: "\f2b6"; +} + +.fa-handshake-alt-slash:before, .fa-handshake-simple-slash:before { + content: "\e05f"; +} + +.fa-mattress-pillow:before { + content: "\e525"; +} + +.fa-guarani-sign:before { + content: "\e19a"; +} + +.fa-arrows-rotate:before, .fa-refresh:before, .fa-sync:before { + content: "\f021"; +} + +.fa-fire-extinguisher:before { + content: "\f134"; +} + +.fa-cruzeiro-sign:before { + content: "\e152"; +} + +.fa-greater-than-equal:before { + content: "\f532"; +} + +.fa-shield-alt:before, .fa-shield-halved:before { + content: "\f3ed"; +} + +.fa-atlas:before, .fa-book-atlas:before { + content: "\f558"; +} + +.fa-virus:before { + content: "\e074"; +} + +.fa-envelope-circle-check:before { + content: "\e4e8"; +} + +.fa-layer-group:before { + content: "\f5fd"; +} + +.fa-arrows-to-dot:before { + content: "\e4be"; +} + +.fa-archway:before { + content: "\f557"; +} + +.fa-heart-circle-check:before { + content: "\e4fd"; +} + +.fa-house-chimney-crack:before, .fa-house-damage:before { + content: "\f6f1"; +} + +.fa-file-archive:before, .fa-file-zipper:before { + content: "\f1c6"; +} + +.fa-square:before { + content: "\f0c8"; +} + +.fa-glass-martini:before, .fa-martini-glass-empty:before { + content: "\f000"; +} + +.fa-couch:before { + content: "\f4b8"; +} + +.fa-cedi-sign:before { + content: "\e0df"; +} + +.fa-italic:before { + content: "\f033"; +} + +.fa-church:before { + content: "\f51d"; +} + +.fa-comments-dollar:before { + content: "\f653"; +} + +.fa-democrat:before { + content: "\f747"; +} + +.fa-z:before { + content: "Z"; +} + +.fa-person-skiing:before, .fa-skiing:before { + content: "\f7c9"; +} + +.fa-road-lock:before { + content: "\e567"; +} + +.fa-a:before { + content: "A"; +} + +.fa-temperature-arrow-down:before, .fa-temperature-down:before { + content: "\e03f"; +} + +.fa-feather-alt:before, .fa-feather-pointed:before { + content: "\f56b"; +} + +.fa-p:before { + content: "P"; +} + +.fa-snowflake:before { + content: "\f2dc"; +} + +.fa-newspaper:before { + content: "\f1ea"; +} + +.fa-ad:before, .fa-rectangle-ad:before { + content: "\f641"; +} + +.fa-arrow-circle-right:before, .fa-circle-arrow-right:before { + content: "\f0a9"; +} + +.fa-filter-circle-xmark:before { + content: "\e17b"; +} + +.fa-locust:before { + content: "\e520"; +} + +.fa-sort:before, .fa-unsorted:before { + content: "\f0dc"; +} + +.fa-list-1-2:before, .fa-list-numeric:before, .fa-list-ol:before { + content: "\f0cb"; +} + +.fa-person-dress-burst:before { + content: "\e544"; +} + +.fa-money-check-alt:before, .fa-money-check-dollar:before { + content: "\f53d"; +} + +.fa-vector-square:before { + content: "\f5cb"; +} + +.fa-bread-slice:before { + content: "\f7ec"; +} + +.fa-language:before { + content: "\f1ab"; +} + +.fa-face-kiss-wink-heart:before, .fa-kiss-wink-heart:before { + content: "\f598"; +} + +.fa-filter:before { + content: "\f0b0"; +} + +.fa-question:before { + content: "?"; +} + +.fa-file-signature:before { + content: "\f573"; +} + +.fa-arrows-alt:before, .fa-up-down-left-right:before { + content: "\f0b2"; +} + +.fa-house-chimney-user:before { + content: "\e065"; +} + +.fa-hand-holding-heart:before { + content: "\f4be"; +} + +.fa-puzzle-piece:before { + content: "\f12e"; +} + +.fa-money-check:before { + content: "\f53c"; +} + +.fa-star-half-alt:before, .fa-star-half-stroke:before { + content: "\f5c0"; +} + +.fa-code:before { + content: "\f121"; +} + +.fa-glass-whiskey:before, .fa-whiskey-glass:before { + content: "\f7a0"; +} + +.fa-building-circle-exclamation:before { + content: "\e4d3"; +} + +.fa-magnifying-glass-chart:before { + content: "\e522"; +} + +.fa-arrow-up-right-from-square:before, .fa-external-link:before { + content: "\f08e"; +} + +.fa-cubes-stacked:before { + content: "\e4e6"; +} + +.fa-krw:before, .fa-won-sign:before, .fa-won:before { + content: "\f159"; +} + +.fa-virus-covid:before { + content: "\e4a8"; +} + +.fa-austral-sign:before { + content: "\e0a9"; +} + +.fa-f:before { + content: "F"; +} + +.fa-leaf:before { + content: "\f06c"; +} + +.fa-road:before { + content: "\f018"; +} + +.fa-cab:before, .fa-taxi:before { + content: "\f1ba"; +} + +.fa-person-circle-plus:before { + content: "\e541"; +} + +.fa-chart-pie:before, .fa-pie-chart:before { + content: "\f200"; +} + +.fa-bolt-lightning:before { + content: "\e0b7"; +} + +.fa-sack-xmark:before { + content: "\e56a"; +} + +.fa-file-excel:before { + content: "\f1c3"; +} + +.fa-file-contract:before { + content: "\f56c"; +} + +.fa-fish-fins:before { + content: "\e4f2"; +} + +.fa-building-flag:before { + content: "\e4d5"; +} + +.fa-face-grin-beam:before, .fa-grin-beam:before { + content: "\f582"; +} + +.fa-object-ungroup:before { + content: "\f248"; +} + +.fa-poop:before { + content: "\f619"; +} + +.fa-location-pin:before, .fa-map-marker:before { + content: "\f041"; +} + +.fa-kaaba:before { + content: "\f66b"; +} + +.fa-toilet-paper:before { + content: "\f71e"; +} + +.fa-hard-hat:before, .fa-hat-hard:before, .fa-helmet-safety:before { + content: "\f807"; +} + +.fa-eject:before { + content: "\f052"; +} + +.fa-arrow-alt-circle-right:before, .fa-circle-right:before { + content: "\f35a"; +} + +.fa-plane-circle-check:before { + content: "\e555"; +} + +.fa-face-rolling-eyes:before, .fa-meh-rolling-eyes:before { + content: "\f5a5"; +} + +.fa-object-group:before { + content: "\f247"; +} + +.fa-chart-line:before, .fa-line-chart:before { + content: "\f201"; +} + +.fa-mask-ventilator:before { + content: "\e524"; +} + +.fa-arrow-right:before { + content: "\f061"; +} + +.fa-map-signs:before, .fa-signs-post:before { + content: "\f277"; +} + +.fa-cash-register:before { + content: "\f788"; +} + +.fa-person-circle-question:before { + content: "\e542"; +} + +.fa-h:before { + content: "H"; +} + +.fa-tarp:before { + content: "\e57b"; +} + +.fa-screwdriver-wrench:before, .fa-tools:before { + content: "\f7d9"; +} + +.fa-arrows-to-eye:before { + content: "\e4bf"; +} + +.fa-plug-circle-bolt:before { + content: "\e55b"; +} + +.fa-heart:before { + content: "\f004"; +} + +.fa-mars-and-venus:before { + content: "\f224"; +} + +.fa-home-user:before, .fa-house-user:before { + content: "\e1b0"; +} + +.fa-dumpster-fire:before { + content: "\f794"; +} + +.fa-house-crack:before { + content: "\e3b1"; +} + +.fa-cocktail:before, .fa-martini-glass-citrus:before { + content: "\f561"; +} + +.fa-face-surprise:before, .fa-surprise:before { + content: "\f5c2"; +} + +.fa-bottle-water:before { + content: "\e4c5"; +} + +.fa-circle-pause:before, .fa-pause-circle:before { + content: "\f28b"; +} + +.fa-toilet-paper-slash:before { + content: "\e072"; +} + +.fa-apple-alt:before, .fa-apple-whole:before { + content: "\f5d1"; +} + +.fa-kitchen-set:before { + content: "\e51a"; +} + +.fa-r:before { + content: "R"; +} + +.fa-temperature-1:before, .fa-temperature-quarter:before, .fa-thermometer-1:before, .fa-thermometer-quarter:before { + content: "\f2ca"; +} + +.fa-cube:before { + content: "\f1b2"; +} + +.fa-bitcoin-sign:before { + content: "\e0b4"; +} + +.fa-shield-dog:before { + content: "\e573"; +} + +.fa-solar-panel:before { + content: "\f5ba"; +} + +.fa-lock-open:before { + content: "\f3c1"; +} + +.fa-elevator:before { + content: "\e16d"; +} + +.fa-money-bill-transfer:before { + content: "\e528"; +} + +.fa-money-bill-trend-up:before { + content: "\e529"; +} + +.fa-house-flood-water-circle-arrow-right:before { + content: "\e50f"; +} + +.fa-poll-h:before, .fa-square-poll-horizontal:before { + content: "\f682"; +} + +.fa-circle:before { + content: "\f111"; +} + +.fa-backward-fast:before, .fa-fast-backward:before { + content: "\f049"; +} + +.fa-recycle:before { + content: "\f1b8"; +} + +.fa-user-astronaut:before { + content: "\f4fb"; +} + +.fa-plane-slash:before { + content: "\e069"; +} + +.fa-trademark:before { + content: "\f25c"; +} + +.fa-basketball-ball:before, .fa-basketball:before { + content: "\f434"; +} + +.fa-satellite-dish:before { + content: "\f7c0"; +} + +.fa-arrow-alt-circle-up:before, .fa-circle-up:before { + content: "\f35b"; +} + +.fa-mobile-alt:before, .fa-mobile-screen-button:before { + content: "\f3cd"; +} + +.fa-volume-high:before, .fa-volume-up:before { + content: "\f028"; +} + +.fa-users-rays:before { + content: "\e593"; +} + +.fa-wallet:before { + content: "\f555"; +} + +.fa-clipboard-check:before { + content: "\f46c"; +} + +.fa-file-audio:before { + content: "\f1c7"; +} + +.fa-burger:before, .fa-hamburger:before { + content: "\f805"; +} + +.fa-wrench:before { + content: "\f0ad"; +} + +.fa-bugs:before { + content: "\e4d0"; +} + +.fa-rupee-sign:before, .fa-rupee:before { + content: "\f156"; +} + +.fa-file-image:before { + content: "\f1c5"; +} + +.fa-circle-question:before, .fa-question-circle:before { + content: "\f059"; +} + +.fa-plane-departure:before { + content: "\f5b0"; +} + +.fa-handshake-slash:before { + content: "\e060"; +} + +.fa-book-bookmark:before { + content: "\e0bb"; +} + +.fa-code-branch:before { + content: "\f126"; +} + +.fa-hat-cowboy:before { + content: "\f8c0"; +} + +.fa-bridge:before { + content: "\e4c8"; +} + +.fa-phone-alt:before, .fa-phone-flip:before { + content: "\f879"; +} + +.fa-truck-front:before { + content: "\e2b7"; +} + +.fa-cat:before { + content: "\f6be"; +} + +.fa-anchor-circle-exclamation:before { + content: "\e4ab"; +} + +.fa-truck-field:before { + content: "\e58d"; +} + +.fa-route:before { + content: "\f4d7"; +} + +.fa-clipboard-question:before { + content: "\e4e3"; +} + +.fa-panorama:before { + content: "\e209"; +} + +.fa-comment-medical:before { + content: "\f7f5"; +} + +.fa-teeth-open:before { + content: "\f62f"; +} + +.fa-file-circle-minus:before { + content: "\e4ed"; +} + +.fa-tags:before { + content: "\f02c"; +} + +.fa-wine-glass:before { + content: "\f4e3"; +} + +.fa-fast-forward:before, .fa-forward-fast:before { + content: "\f050"; +} + +.fa-face-meh-blank:before, .fa-meh-blank:before { + content: "\f5a4"; +} + +.fa-parking:before, .fa-square-parking:before { + content: "\f540"; +} + +.fa-house-signal:before { + content: "\e012"; +} + +.fa-bars-progress:before, .fa-tasks-alt:before { + content: "\f828"; +} + +.fa-faucet-drip:before { + content: "\e006"; +} + +.fa-cart-flatbed:before, .fa-dolly-flatbed:before { + content: "\f474"; +} + +.fa-ban-smoking:before, .fa-smoking-ban:before { + content: "\f54d"; +} + +.fa-terminal:before { + content: "\f120"; +} + +.fa-mobile-button:before { + content: "\f10b"; +} + +.fa-house-medical-flag:before { + content: "\e514"; +} + +.fa-basket-shopping:before, .fa-shopping-basket:before { + content: "\f291"; +} + +.fa-tape:before { + content: "\f4db"; +} + +.fa-bus-alt:before, .fa-bus-simple:before { + content: "\f55e"; +} + +.fa-eye:before { + content: "\f06e"; +} + +.fa-face-sad-cry:before, .fa-sad-cry:before { + content: "\f5b3"; +} + +.fa-audio-description:before { + content: "\f29e"; +} + +.fa-person-military-to-person:before { + content: "\e54c"; +} + +.fa-file-shield:before { + content: "\e4f0"; +} + +.fa-user-slash:before { + content: "\f506"; +} + +.fa-pen:before { + content: "\f304"; +} + +.fa-tower-observation:before { + content: "\e586"; +} + +.fa-file-code:before { + content: "\f1c9"; +} + +.fa-signal-5:before, .fa-signal-perfect:before, .fa-signal:before { + content: "\f012"; +} + +.fa-bus:before { + content: "\f207"; +} + +.fa-heart-circle-xmark:before { + content: "\e501"; +} + +.fa-home-lg:before, .fa-house-chimney:before { + content: "\e3af"; +} + +.fa-window-maximize:before { + content: "\f2d0"; +} + +.fa-face-frown:before, .fa-frown:before { + content: "\f119"; +} + +.fa-prescription:before { + content: "\f5b1"; +} + +.fa-shop:before, .fa-store-alt:before { + content: "\f54f"; +} + +.fa-floppy-disk:before, .fa-save:before { + content: "\f0c7"; +} + +.fa-vihara:before { + content: "\f6a7"; +} + +.fa-balance-scale-left:before, .fa-scale-unbalanced:before { + content: "\f515"; +} + +.fa-sort-asc:before, .fa-sort-up:before { + content: "\f0de"; +} + +.fa-comment-dots:before, .fa-commenting:before { + content: "\f4ad"; +} + +.fa-plant-wilt:before { + content: "\e5aa"; +} + +.fa-diamond:before { + content: "\f219"; +} + +.fa-face-grin-squint:before, .fa-grin-squint:before { + content: "\f585"; +} + +.fa-hand-holding-dollar:before, .fa-hand-holding-usd:before { + content: "\f4c0"; +} + +.fa-bacterium:before { + content: "\e05a"; +} + +.fa-hand-pointer:before { + content: "\f25a"; +} + +.fa-drum-steelpan:before { + content: "\f56a"; +} + +.fa-hand-scissors:before { + content: "\f257"; +} + +.fa-hands-praying:before, .fa-praying-hands:before { + content: "\f684"; +} + +.fa-arrow-right-rotate:before, .fa-arrow-rotate-forward:before, .fa-arrow-rotate-right:before, .fa-redo:before { + content: "\f01e"; +} + +.fa-biohazard:before { + content: "\f780"; +} + +.fa-location-crosshairs:before, .fa-location:before { + content: "\f601"; +} + +.fa-mars-double:before { + content: "\f227"; +} + +.fa-child-dress:before { + content: "\e59c"; +} + +.fa-users-between-lines:before { + content: "\e591"; +} + +.fa-lungs-virus:before { + content: "\e067"; +} + +.fa-face-grin-tears:before, .fa-grin-tears:before { + content: "\f588"; +} + +.fa-phone:before { + content: "\f095"; +} + +.fa-calendar-times:before, .fa-calendar-xmark:before { + content: "\f273"; +} + +.fa-child-reaching:before { + content: "\e59d"; +} + +.fa-head-side-virus:before { + content: "\e064"; +} + +.fa-user-cog:before, .fa-user-gear:before { + content: "\f4fe"; +} + +.fa-arrow-up-1-9:before, .fa-sort-numeric-up:before { + content: "\f163"; +} + +.fa-door-closed:before { + content: "\f52a"; +} + +.fa-shield-virus:before { + content: "\e06c"; +} + +.fa-dice-six:before { + content: "\f526"; +} + +.fa-mosquito-net:before { + content: "\e52c"; +} + +.fa-bridge-water:before { + content: "\e4ce"; +} + +.fa-person-booth:before { + content: "\f756"; +} + +.fa-text-width:before { + content: "\f035"; +} + +.fa-hat-wizard:before { + content: "\f6e8"; +} + +.fa-pen-fancy:before { + content: "\f5ac"; +} + +.fa-digging:before, .fa-person-digging:before { + content: "\f85e"; +} + +.fa-trash:before { + content: "\f1f8"; +} + +.fa-gauge-simple-med:before, .fa-gauge-simple:before, .fa-tachometer-average:before { + content: "\f629"; +} + +.fa-book-medical:before { + content: "\f7e6"; +} + +.fa-poo:before { + content: "\f2fe"; +} + +.fa-quote-right-alt:before, .fa-quote-right:before { + content: "\f10e"; +} + +.fa-shirt:before, .fa-t-shirt:before, .fa-tshirt:before { + content: "\f553"; +} + +.fa-cubes:before { + content: "\f1b3"; +} + +.fa-divide:before { + content: "\f529"; +} + +.fa-tenge-sign:before, .fa-tenge:before { + content: "\f7d7"; +} + +.fa-headphones:before { + content: "\f025"; +} + +.fa-hands-holding:before { + content: "\f4c2"; +} + +.fa-hands-clapping:before { + content: "\e1a8"; +} + +.fa-republican:before { + content: "\f75e"; +} + +.fa-arrow-left:before { + content: "\f060"; +} + +.fa-person-circle-xmark:before { + content: "\e543"; +} + +.fa-ruler:before { + content: "\f545"; +} + +.fa-align-left:before { + content: "\f036"; +} + +.fa-dice-d6:before { + content: "\f6d1"; +} + +.fa-restroom:before { + content: "\f7bd"; +} + +.fa-j:before { + content: "J"; +} + +.fa-users-viewfinder:before { + content: "\e595"; +} + +.fa-file-video:before { + content: "\f1c8"; +} + +.fa-external-link-alt:before, .fa-up-right-from-square:before { + content: "\f35d"; +} + +.fa-table-cells:before, .fa-th:before { + content: "\f00a"; +} + +.fa-file-pdf:before { + content: "\f1c1"; +} + +.fa-bible:before, .fa-book-bible:before { + content: "\f647"; +} + +.fa-o:before { + content: "O"; +} + +.fa-medkit:before, .fa-suitcase-medical:before { + content: "\f0fa"; +} + +.fa-user-secret:before { + content: "\f21b"; +} + +.fa-otter:before { + content: "\f700"; +} + +.fa-female:before, .fa-person-dress:before { + content: "\f182"; +} + +.fa-comment-dollar:before { + content: "\f651"; +} + +.fa-briefcase-clock:before, .fa-business-time:before { + content: "\f64a"; +} + +.fa-table-cells-large:before, .fa-th-large:before { + content: "\f009"; +} + +.fa-book-tanakh:before, .fa-tanakh:before { + content: "\f827"; +} + +.fa-phone-volume:before, .fa-volume-control-phone:before { + content: "\f2a0"; +} + +.fa-hat-cowboy-side:before { + content: "\f8c1"; +} + +.fa-clipboard-user:before { + content: "\f7f3"; +} + +.fa-child:before { + content: "\f1ae"; +} + +.fa-lira-sign:before { + content: "\f195"; +} + +.fa-satellite:before { + content: "\f7bf"; +} + +.fa-plane-lock:before { + content: "\e558"; +} + +.fa-tag:before { + content: "\f02b"; +} + +.fa-comment:before { + content: "\f075"; +} + +.fa-birthday-cake:before, .fa-cake-candles:before, .fa-cake:before { + content: "\f1fd"; +} + +.fa-envelope:before { + content: "\f0e0"; +} + +.fa-angle-double-up:before, .fa-angles-up:before { + content: "\f102"; +} + +.fa-paperclip:before { + content: "\f0c6"; +} + +.fa-arrow-right-to-city:before { + content: "\e4b3"; +} + +.fa-ribbon:before { + content: "\f4d6"; +} + +.fa-lungs:before { + content: "\f604"; +} + +.fa-arrow-up-9-1:before, .fa-sort-numeric-up-alt:before { + content: "\f887"; +} + +.fa-litecoin-sign:before { + content: "\e1d3"; +} + +.fa-border-none:before { + content: "\f850"; +} + +.fa-circle-nodes:before { + content: "\e4e2"; +} + +.fa-parachute-box:before { + content: "\f4cd"; +} + +.fa-indent:before { + content: "\f03c"; +} + +.fa-truck-field-un:before { + content: "\e58e"; +} + +.fa-hourglass-empty:before, .fa-hourglass:before { + content: "\f254"; +} + +.fa-mountain:before { + content: "\f6fc"; +} + +.fa-user-doctor:before, .fa-user-md:before { + content: "\f0f0"; +} + +.fa-circle-info:before, .fa-info-circle:before { + content: "\f05a"; +} + +.fa-cloud-meatball:before { + content: "\f73b"; +} + +.fa-camera-alt:before, .fa-camera:before { + content: "\f030"; +} + +.fa-square-virus:before { + content: "\e578"; +} + +.fa-meteor:before { + content: "\f753"; +} + +.fa-car-on:before { + content: "\e4dd"; +} + +.fa-sleigh:before { + content: "\f7cc"; +} + +.fa-arrow-down-1-9:before, .fa-sort-numeric-asc:before, .fa-sort-numeric-down:before { + content: "\f162"; +} + +.fa-hand-holding-droplet:before, .fa-hand-holding-water:before { + content: "\f4c1"; +} + +.fa-water:before { + content: "\f773"; +} + +.fa-calendar-check:before { + content: "\f274"; +} + +.fa-braille:before { + content: "\f2a1"; +} + +.fa-prescription-bottle-alt:before, .fa-prescription-bottle-medical:before { + content: "\f486"; +} + +.fa-landmark:before { + content: "\f66f"; +} + +.fa-truck:before { + content: "\f0d1"; +} + +.fa-crosshairs:before { + content: "\f05b"; +} + +.fa-person-cane:before { + content: "\e53c"; +} + +.fa-tent:before { + content: "\e57d"; +} + +.fa-vest-patches:before { + content: "\e086"; +} + +.fa-check-double:before { + content: "\f560"; +} + +.fa-arrow-down-a-z:before, .fa-sort-alpha-asc:before, .fa-sort-alpha-down:before { + content: "\f15d"; +} + +.fa-money-bill-wheat:before { + content: "\e52a"; +} + +.fa-cookie:before { + content: "\f563"; +} + +.fa-arrow-left-rotate:before, .fa-arrow-rotate-back:before, .fa-arrow-rotate-backward:before, .fa-arrow-rotate-left:before, .fa-undo:before { + content: "\f0e2"; +} + +.fa-hard-drive:before, .fa-hdd:before { + content: "\f0a0"; +} + +.fa-face-grin-squint-tears:before, .fa-grin-squint-tears:before { + content: "\f586"; +} + +.fa-dumbbell:before { + content: "\f44b"; +} + +.fa-list-alt:before, .fa-rectangle-list:before { + content: "\f022"; +} + +.fa-tarp-droplet:before { + content: "\e57c"; +} + +.fa-house-medical-circle-check:before { + content: "\e511"; +} + +.fa-person-skiing-nordic:before, .fa-skiing-nordic:before { + content: "\f7ca"; +} + +.fa-calendar-plus:before { + content: "\f271"; +} + +.fa-plane-arrival:before { + content: "\f5af"; +} + +.fa-arrow-alt-circle-left:before, .fa-circle-left:before { + content: "\f359"; +} + +.fa-subway:before, .fa-train-subway:before { + content: "\f239"; +} + +.fa-chart-gantt:before { + content: "\e0e4"; +} + +.fa-indian-rupee-sign:before, .fa-indian-rupee:before, .fa-inr:before { + content: "\e1bc"; +} + +.fa-crop-alt:before, .fa-crop-simple:before { + content: "\f565"; +} + +.fa-money-bill-1:before, .fa-money-bill-alt:before { + content: "\f3d1"; +} + +.fa-left-long:before, .fa-long-arrow-alt-left:before { + content: "\f30a"; +} + +.fa-dna:before { + content: "\f471"; +} + +.fa-virus-slash:before { + content: "\e075"; +} + +.fa-minus:before, .fa-subtract:before { + content: "\f068"; +} + +.fa-chess:before { + content: "\f439"; +} + +.fa-arrow-left-long:before, .fa-long-arrow-left:before { + content: "\f177"; +} + +.fa-plug-circle-check:before { + content: "\e55c"; +} + +.fa-street-view:before { + content: "\f21d"; +} + +.fa-franc-sign:before { + content: "\e18f"; +} + +.fa-volume-off:before { + content: "\f026"; +} + +.fa-american-sign-language-interpreting:before, .fa-asl-interpreting:before, .fa-hands-american-sign-language-interpreting:before, .fa-hands-asl-interpreting:before { + content: "\f2a3"; +} + +.fa-cog:before, .fa-gear:before { + content: "\f013"; +} + +.fa-droplet-slash:before, .fa-tint-slash:before { + content: "\f5c7"; +} + +.fa-mosque:before { + content: "\f678"; +} + +.fa-mosquito:before { + content: "\e52b"; +} + +.fa-star-of-david:before { + content: "\f69a"; +} + +.fa-person-military-rifle:before { + content: "\e54b"; +} + +.fa-cart-shopping:before, .fa-shopping-cart:before { + content: "\f07a"; +} + +.fa-vials:before { + content: "\f493"; +} + +.fa-plug-circle-plus:before { + content: "\e55f"; +} + +.fa-place-of-worship:before { + content: "\f67f"; +} + +.fa-grip-vertical:before { + content: "\f58e"; +} + +.fa-arrow-turn-up:before, .fa-level-up:before { + content: "\f148"; +} + +.fa-u:before { + content: "U"; +} + +.fa-square-root-alt:before, .fa-square-root-variable:before { + content: "\f698"; +} + +.fa-clock-four:before, .fa-clock:before { + content: "\f017"; +} + +.fa-backward-step:before, .fa-step-backward:before { + content: "\f048"; +} + +.fa-pallet:before { + content: "\f482"; +} + +.fa-faucet:before { + content: "\e005"; +} + +.fa-baseball-bat-ball:before { + content: "\f432"; +} + +.fa-s:before { + content: "S"; +} + +.fa-timeline:before { + content: "\e29c"; +} + +.fa-keyboard:before { + content: "\f11c"; +} + +.fa-caret-down:before { + content: "\f0d7"; +} + +.fa-clinic-medical:before, .fa-house-chimney-medical:before { + content: "\f7f2"; +} + +.fa-temperature-3:before, .fa-temperature-three-quarters:before, .fa-thermometer-3:before, .fa-thermometer-three-quarters:before { + content: "\f2c8"; +} + +.fa-mobile-android-alt:before, .fa-mobile-screen:before { + content: "\f3cf"; +} + +.fa-plane-up:before { + content: "\e22d"; +} + +.fa-piggy-bank:before { + content: "\f4d3"; +} + +.fa-battery-3:before, .fa-battery-half:before { + content: "\f242"; +} + +.fa-mountain-city:before { + content: "\e52e"; +} + +.fa-coins:before { + content: "\f51e"; +} + +.fa-khanda:before { + content: "\f66d"; +} + +.fa-sliders-h:before, .fa-sliders:before { + content: "\f1de"; +} + +.fa-folder-tree:before { + content: "\f802"; +} + +.fa-network-wired:before { + content: "\f6ff"; +} + +.fa-map-pin:before { + content: "\f276"; +} + +.fa-hamsa:before { + content: "\f665"; +} + +.fa-cent-sign:before { + content: "\e3f5"; +} + +.fa-flask:before { + content: "\f0c3"; +} + +.fa-person-pregnant:before { + content: "\e31e"; +} + +.fa-wand-sparkles:before { + content: "\f72b"; +} + +.fa-ellipsis-v:before, .fa-ellipsis-vertical:before { + content: "\f142"; +} + +.fa-ticket:before { + content: "\f145"; +} + +.fa-power-off:before { + content: "\f011"; +} + +.fa-long-arrow-alt-right:before, .fa-right-long:before { + content: "\f30b"; +} + +.fa-flag-usa:before { + content: "\f74d"; +} + +.fa-laptop-file:before { + content: "\e51d"; +} + +.fa-teletype:before, .fa-tty:before { + content: "\f1e4"; +} + +.fa-diagram-next:before { + content: "\e476"; +} + +.fa-person-rifle:before { + content: "\e54e"; +} + +.fa-house-medical-circle-exclamation:before { + content: "\e512"; +} + +.fa-closed-captioning:before { + content: "\f20a"; +} + +.fa-hiking:before, .fa-person-hiking:before { + content: "\f6ec"; +} + +.fa-venus-double:before { + content: "\f226"; +} + +.fa-images:before { + content: "\f302"; +} + +.fa-calculator:before { + content: "\f1ec"; +} + +.fa-people-pulling:before { + content: "\e535"; +} + +.fa-n:before { + content: "N"; +} + +.fa-cable-car:before, .fa-tram:before { + content: "\f7da"; +} + +.fa-cloud-rain:before { + content: "\f73d"; +} + +.fa-building-circle-xmark:before { + content: "\e4d4"; +} + +.fa-ship:before { + content: "\f21a"; +} + +.fa-arrows-down-to-line:before { + content: "\e4b8"; +} + +.fa-download:before { + content: "\f019"; +} + +.fa-face-grin:before, .fa-grin:before { + content: "\f580"; +} + +.fa-backspace:before, .fa-delete-left:before { + content: "\f55a"; +} + +.fa-eye-dropper-empty:before, .fa-eye-dropper:before, .fa-eyedropper:before { + content: "\f1fb"; +} + +.fa-file-circle-check:before { + content: "\e5a0"; +} + +.fa-forward:before { + content: "\f04e"; +} + +.fa-mobile-android:before, .fa-mobile-phone:before, .fa-mobile:before { + content: "\f3ce"; +} + +.fa-face-meh:before, .fa-meh:before { + content: "\f11a"; +} + +.fa-align-center:before { + content: "\f037"; +} + +.fa-book-dead:before, .fa-book-skull:before { + content: "\f6b7"; +} + +.fa-drivers-license:before, .fa-id-card:before { + content: "\f2c2"; +} + +.fa-dedent:before, .fa-outdent:before { + content: "\f03b"; +} + +.fa-heart-circle-exclamation:before { + content: "\e4fe"; +} + +.fa-home-alt:before, .fa-home-lg-alt:before, .fa-home:before, .fa-house:before { + content: "\f015"; +} + +.fa-calendar-week:before { + content: "\f784"; +} + +.fa-laptop-medical:before { + content: "\f812"; +} + +.fa-b:before { + content: "B"; +} + +.fa-file-medical:before { + content: "\f477"; +} + +.fa-dice-one:before { + content: "\f525"; +} + +.fa-kiwi-bird:before { + content: "\f535"; +} + +.fa-arrow-right-arrow-left:before, .fa-exchange:before { + content: "\f0ec"; +} + +.fa-redo-alt:before, .fa-rotate-forward:before, .fa-rotate-right:before { + content: "\f2f9"; +} + +.fa-cutlery:before, .fa-utensils:before { + content: "\f2e7"; +} + +.fa-arrow-up-wide-short:before, .fa-sort-amount-up:before { + content: "\f161"; +} + +.fa-mill-sign:before { + content: "\e1ed"; +} + +.fa-bowl-rice:before { + content: "\e2eb"; +} + +.fa-skull:before { + content: "\f54c"; +} + +.fa-broadcast-tower:before, .fa-tower-broadcast:before { + content: "\f519"; +} + +.fa-truck-pickup:before { + content: "\f63c"; +} + +.fa-long-arrow-alt-up:before, .fa-up-long:before { + content: "\f30c"; +} + +.fa-stop:before { + content: "\f04d"; +} + +.fa-code-merge:before { + content: "\f387"; +} + +.fa-upload:before { + content: "\f093"; +} + +.fa-hurricane:before { + content: "\f751"; +} + +.fa-mound:before { + content: "\e52d"; +} + +.fa-toilet-portable:before { + content: "\e583"; +} + +.fa-compact-disc:before { + content: "\f51f"; +} + +.fa-file-arrow-down:before, .fa-file-download:before { + content: "\f56d"; +} + +.fa-caravan:before { + content: "\f8ff"; +} + +.fa-shield-cat:before { + content: "\e572"; +} + +.fa-bolt:before, .fa-zap:before { + content: "\f0e7"; +} + +.fa-glass-water:before { + content: "\e4f4"; +} + +.fa-oil-well:before { + content: "\e532"; +} + +.fa-vault:before { + content: "\e2c5"; +} + +.fa-mars:before { + content: "\f222"; +} + +.fa-toilet:before { + content: "\f7d8"; +} + +.fa-plane-circle-xmark:before { + content: "\e557"; +} + +.fa-cny:before, .fa-jpy:before, .fa-rmb:before, .fa-yen-sign:before, .fa-yen:before { + content: "\f157"; +} + +.fa-rouble:before, .fa-rub:before, .fa-ruble-sign:before, .fa-ruble:before { + content: "\f158"; +} + +.fa-sun:before { + content: "\f185"; +} + +.fa-guitar:before { + content: "\f7a6"; +} + +.fa-face-laugh-wink:before, .fa-laugh-wink:before { + content: "\f59c"; +} + +.fa-horse-head:before { + content: "\f7ab"; +} + +.fa-bore-hole:before { + content: "\e4c3"; +} + +.fa-industry:before { + content: "\f275"; +} + +.fa-arrow-alt-circle-down:before, .fa-circle-down:before { + content: "\f358"; +} + +.fa-arrows-turn-to-dots:before { + content: "\e4c1"; +} + +.fa-florin-sign:before { + content: "\e184"; +} + +.fa-arrow-down-short-wide:before, .fa-sort-amount-desc:before, .fa-sort-amount-down-alt:before { + content: "\f884"; +} + +.fa-less-than:before { + content: "<"; +} + +.fa-angle-down:before { + content: "\f107"; +} + +.fa-car-tunnel:before { + content: "\e4de"; +} + +.fa-head-side-cough:before { + content: "\e061"; +} + +.fa-grip-lines:before { + content: "\f7a4"; +} + +.fa-thumbs-down:before { + content: "\f165"; +} + +.fa-user-lock:before { + content: "\f502"; +} + +.fa-arrow-right-long:before, .fa-long-arrow-right:before { + content: "\f178"; +} + +.fa-anchor-circle-xmark:before { + content: "\e4ac"; +} + +.fa-ellipsis-h:before, .fa-ellipsis:before { + content: "\f141"; +} + +.fa-chess-pawn:before { + content: "\f443"; +} + +.fa-first-aid:before, .fa-kit-medical:before { + content: "\f479"; +} + +.fa-person-through-window:before { + content: "\e5a9"; +} + +.fa-toolbox:before { + content: "\f552"; +} + +.fa-hands-holding-circle:before { + content: "\e4fb"; +} + +.fa-bug:before { + content: "\f188"; +} + +.fa-credit-card-alt:before, .fa-credit-card:before { + content: "\f09d"; +} + +.fa-automobile:before, .fa-car:before { + content: "\f1b9"; +} + +.fa-hand-holding-hand:before { + content: "\e4f7"; +} + +.fa-book-open-reader:before, .fa-book-reader:before { + content: "\f5da"; +} + +.fa-mountain-sun:before { + content: "\e52f"; +} + +.fa-arrows-left-right-to-line:before { + content: "\e4ba"; +} + +.fa-dice-d20:before { + content: "\f6cf"; +} + +.fa-truck-droplet:before { + content: "\e58c"; +} + +.fa-file-circle-xmark:before { + content: "\e5a1"; +} + +.fa-temperature-arrow-up:before, .fa-temperature-up:before { + content: "\e040"; +} + +.fa-medal:before { + content: "\f5a2"; +} + +.fa-bed:before { + content: "\f236"; +} + +.fa-h-square:before, .fa-square-h:before { + content: "\f0fd"; +} + +.fa-podcast:before { + content: "\f2ce"; +} + +.fa-temperature-4:before, .fa-temperature-full:before, .fa-thermometer-4:before, .fa-thermometer-full:before { + content: "\f2c7"; +} + +.fa-bell:before { + content: "\f0f3"; +} + +.fa-superscript:before { + content: "\f12b"; +} + +.fa-plug-circle-xmark:before { + content: "\e560"; +} + +.fa-star-of-life:before { + content: "\f621"; +} + +.fa-phone-slash:before { + content: "\f3dd"; +} + +.fa-paint-roller:before { + content: "\f5aa"; +} + +.fa-hands-helping:before, .fa-handshake-angle:before { + content: "\f4c4"; +} + +.fa-location-dot:before, .fa-map-marker-alt:before { + content: "\f3c5"; +} + +.fa-file:before { + content: "\f15b"; +} + +.fa-greater-than:before { + content: ">"; +} + +.fa-person-swimming:before, .fa-swimmer:before { + content: "\f5c4"; +} + +.fa-arrow-down:before { + content: "\f063"; +} + +.fa-droplet:before, .fa-tint:before { + content: "\f043"; +} + +.fa-eraser:before { + content: "\f12d"; +} + +.fa-earth-america:before, .fa-earth-americas:before, .fa-earth:before, .fa-globe-americas:before { + content: "\f57d"; +} + +.fa-person-burst:before { + content: "\e53b"; +} + +.fa-dove:before { + content: "\f4ba"; +} + +.fa-battery-0:before, .fa-battery-empty:before { + content: "\f244"; +} + +.fa-socks:before { + content: "\f696"; +} + +.fa-inbox:before { + content: "\f01c"; +} + +.fa-section:before { + content: "\e447"; +} + +.fa-gauge-high:before, .fa-tachometer-alt-fast:before, .fa-tachometer-alt:before { + content: "\f625"; +} + +.fa-envelope-open-text:before { + content: "\f658"; +} + +.fa-hospital-alt:before, .fa-hospital-wide:before, .fa-hospital:before { + content: "\f0f8"; +} + +.fa-wine-bottle:before { + content: "\f72f"; +} + +.fa-chess-rook:before { + content: "\f447"; +} + +.fa-bars-staggered:before, .fa-reorder:before, .fa-stream:before { + content: "\f550"; +} + +.fa-dharmachakra:before { + content: "\f655"; +} + +.fa-hotdog:before { + content: "\f80f"; +} + +.fa-blind:before, .fa-person-walking-with-cane:before { + content: "\f29d"; +} + +.fa-drum:before { + content: "\f569"; +} + +.fa-ice-cream:before { + content: "\f810"; +} + +.fa-heart-circle-bolt:before { + content: "\e4fc"; +} + +.fa-fax:before { + content: "\f1ac"; +} + +.fa-paragraph:before { + content: "\f1dd"; +} + +.fa-check-to-slot:before, .fa-vote-yea:before { + content: "\f772"; +} + +.fa-star-half:before { + content: "\f089"; +} + +.fa-boxes-alt:before, .fa-boxes-stacked:before, .fa-boxes:before { + content: "\f468"; +} + +.fa-chain:before, .fa-link:before { + content: "\f0c1"; +} + +.fa-assistive-listening-systems:before, .fa-ear-listen:before { + content: "\f2a2"; +} + +.fa-tree-city:before { + content: "\e587"; +} + +.fa-play:before { + content: "\f04b"; +} + +.fa-font:before { + content: "\f031"; +} + +.fa-rupiah-sign:before { + content: "\e23d"; +} + +.fa-magnifying-glass:before, .fa-search:before { + content: "\f002"; +} + +.fa-ping-pong-paddle-ball:before, .fa-table-tennis-paddle-ball:before, .fa-table-tennis:before { + content: "\f45d"; +} + +.fa-diagnoses:before, .fa-person-dots-from-line:before { + content: "\f470"; +} + +.fa-trash-can-arrow-up:before, .fa-trash-restore-alt:before { + content: "\f82a"; +} + +.fa-naira-sign:before { + content: "\e1f6"; +} + +.fa-cart-arrow-down:before { + content: "\f218"; +} + +.fa-walkie-talkie:before { + content: "\f8ef"; +} + +.fa-file-edit:before, .fa-file-pen:before { + content: "\f31c"; +} + +.fa-receipt:before { + content: "\f543"; +} + +.fa-pen-square:before, .fa-pencil-square:before, .fa-square-pen:before { + content: "\f14b"; +} + +.fa-suitcase-rolling:before { + content: "\f5c1"; +} + +.fa-person-circle-exclamation:before { + content: "\e53f"; +} + +.fa-chevron-down:before { + content: "\f078"; +} + +.fa-battery-5:before, .fa-battery-full:before, .fa-battery:before { + content: "\f240"; +} + +.fa-skull-crossbones:before { + content: "\f714"; +} + +.fa-code-compare:before { + content: "\e13a"; +} + +.fa-list-dots:before, .fa-list-ul:before { + content: "\f0ca"; +} + +.fa-school-lock:before { + content: "\e56f"; +} + +.fa-tower-cell:before { + content: "\e585"; +} + +.fa-down-long:before, .fa-long-arrow-alt-down:before { + content: "\f309"; +} + +.fa-ranking-star:before { + content: "\e561"; +} + +.fa-chess-king:before { + content: "\f43f"; +} + +.fa-person-harassing:before { + content: "\e549"; +} + +.fa-brazilian-real-sign:before { + content: "\e46c"; +} + +.fa-landmark-alt:before, .fa-landmark-dome:before { + content: "\f752"; +} + +.fa-arrow-up:before { + content: "\f062"; +} + +.fa-television:before, .fa-tv-alt:before, .fa-tv:before { + content: "\f26c"; +} + +.fa-shrimp:before { + content: "\e448"; +} + +.fa-list-check:before, .fa-tasks:before { + content: "\f0ae"; +} + +.fa-jug-detergent:before { + content: "\e519"; +} + +.fa-circle-user:before, .fa-user-circle:before { + content: "\f2bd"; +} + +.fa-user-shield:before { + content: "\f505"; +} + +.fa-wind:before { + content: "\f72e"; +} + +.fa-car-burst:before, .fa-car-crash:before { + content: "\f5e1"; +} + +.fa-y:before { + content: "Y"; +} + +.fa-person-snowboarding:before, .fa-snowboarding:before { + content: "\f7ce"; +} + +.fa-shipping-fast:before, .fa-truck-fast:before { + content: "\f48b"; +} + +.fa-fish:before { + content: "\f578"; +} + +.fa-user-graduate:before { + content: "\f501"; +} + +.fa-adjust:before, .fa-circle-half-stroke:before { + content: "\f042"; +} + +.fa-clapperboard:before { + content: "\e131"; +} + +.fa-circle-radiation:before, .fa-radiation-alt:before { + content: "\f7ba"; +} + +.fa-baseball-ball:before, .fa-baseball:before { + content: "\f433"; +} + +.fa-jet-fighter-up:before { + content: "\e518"; +} + +.fa-diagram-project:before, .fa-project-diagram:before { + content: "\f542"; +} + +.fa-copy:before { + content: "\f0c5"; +} + +.fa-volume-mute:before, .fa-volume-times:before, .fa-volume-xmark:before { + content: "\f6a9"; +} + +.fa-hand-sparkles:before { + content: "\e05d"; +} + +.fa-grip-horizontal:before, .fa-grip:before { + content: "\f58d"; +} + +.fa-share-from-square:before, .fa-share-square:before { + content: "\f14d"; +} + +.fa-child-combatant:before, .fa-child-rifle:before { + content: "\e4e0"; +} + +.fa-gun:before { + content: "\e19b"; +} + +.fa-phone-square:before, .fa-square-phone:before { + content: "\f098"; +} + +.fa-add:before, .fa-plus:before { + content: "+"; +} + +.fa-expand:before { + content: "\f065"; +} + +.fa-computer:before { + content: "\e4e5"; +} + +.fa-close:before, .fa-multiply:before, .fa-remove:before, .fa-times:before, .fa-xmark:before { + content: "\f00d"; +} + +.fa-arrows-up-down-left-right:before, .fa-arrows:before { + content: "\f047"; +} + +.fa-chalkboard-teacher:before, .fa-chalkboard-user:before { + content: "\f51c"; +} + +.fa-peso-sign:before { + content: "\e222"; +} + +.fa-building-shield:before { + content: "\e4d8"; +} + +.fa-baby:before { + content: "\f77c"; +} + +.fa-users-line:before { + content: "\e592"; +} + +.fa-quote-left-alt:before, .fa-quote-left:before { + content: "\f10d"; +} + +.fa-tractor:before { + content: "\f722"; +} + +.fa-trash-arrow-up:before, .fa-trash-restore:before { + content: "\f829"; +} + +.fa-arrow-down-up-lock:before { + content: "\e4b0"; +} + +.fa-lines-leaning:before { + content: "\e51e"; +} + +.fa-ruler-combined:before { + content: "\f546"; +} + +.fa-copyright:before { + content: "\f1f9"; +} + +.fa-equals:before { + content: "="; +} + +.fa-blender:before { + content: "\f517"; +} + +.fa-teeth:before { + content: "\f62e"; +} + +.fa-ils:before, .fa-shekel-sign:before, .fa-shekel:before, .fa-sheqel-sign:before, .fa-sheqel:before { + content: "\f20b"; +} + +.fa-map:before { + content: "\f279"; +} + +.fa-rocket:before { + content: "\f135"; +} + +.fa-photo-film:before, .fa-photo-video:before { + content: "\f87c"; +} + +.fa-folder-minus:before { + content: "\f65d"; +} + +.fa-store:before { + content: "\f54e"; +} + +.fa-arrow-trend-up:before { + content: "\e098"; +} + +.fa-plug-circle-minus:before { + content: "\e55e"; +} + +.fa-sign-hanging:before, .fa-sign:before { + content: "\f4d9"; +} + +.fa-bezier-curve:before { + content: "\f55b"; +} + +.fa-bell-slash:before { + content: "\f1f6"; +} + +.fa-tablet-android:before, .fa-tablet:before { + content: "\f3fb"; +} + +.fa-school-flag:before { + content: "\e56e"; +} + +.fa-fill:before { + content: "\f575"; +} + +.fa-angle-up:before { + content: "\f106"; +} + +.fa-drumstick-bite:before { + content: "\f6d7"; +} + +.fa-holly-berry:before { + content: "\f7aa"; +} + +.fa-chevron-left:before { + content: "\f053"; +} + +.fa-bacteria:before { + content: "\e059"; +} + +.fa-hand-lizard:before { + content: "\f258"; +} + +.fa-notdef:before { + content: "\e1fe"; +} + +.fa-disease:before { + content: "\f7fa"; +} + +.fa-briefcase-medical:before { + content: "\f469"; +} + +.fa-genderless:before { + content: "\f22d"; +} + +.fa-chevron-right:before { + content: "\f054"; +} + +.fa-retweet:before { + content: "\f079"; +} + +.fa-car-alt:before, .fa-car-rear:before { + content: "\f5de"; +} + +.fa-pump-soap:before { + content: "\e06b"; +} + +.fa-video-slash:before { + content: "\f4e2"; +} + +.fa-battery-2:before, .fa-battery-quarter:before { + content: "\f243"; +} + +.fa-radio:before { + content: "\f8d7"; +} + +.fa-baby-carriage:before, .fa-carriage-baby:before { + content: "\f77d"; +} + +.fa-traffic-light:before { + content: "\f637"; +} + +.fa-thermometer:before { + content: "\f491"; +} + +.fa-vr-cardboard:before { + content: "\f729"; +} + +.fa-hand-middle-finger:before { + content: "\f806"; +} + +.fa-percent:before, .fa-percentage:before { + content: "%"; +} + +.fa-truck-moving:before { + content: "\f4df"; +} + +.fa-glass-water-droplet:before { + content: "\e4f5"; +} + +.fa-display:before { + content: "\e163"; +} + +.fa-face-smile:before, .fa-smile:before { + content: "\f118"; +} + +.fa-thumb-tack:before, .fa-thumbtack:before { + content: "\f08d"; +} + +.fa-trophy:before { + content: "\f091"; +} + +.fa-person-praying:before, .fa-pray:before { + content: "\f683"; +} + +.fa-hammer:before { + content: "\f6e3"; +} + +.fa-hand-peace:before { + content: "\f25b"; +} + +.fa-rotate:before, .fa-sync-alt:before { + content: "\f2f1"; +} + +.fa-spinner:before { + content: "\f110"; +} + +.fa-robot:before { + content: "\f544"; +} + +.fa-peace:before { + content: "\f67c"; +} + +.fa-cogs:before, .fa-gears:before { + content: "\f085"; +} + +.fa-warehouse:before { + content: "\f494"; +} + +.fa-arrow-up-right-dots:before { + content: "\e4b7"; +} + +.fa-splotch:before { + content: "\f5bc"; +} + +.fa-face-grin-hearts:before, .fa-grin-hearts:before { + content: "\f584"; +} + +.fa-dice-four:before { + content: "\f524"; +} + +.fa-sim-card:before { + content: "\f7c4"; +} + +.fa-transgender-alt:before, .fa-transgender:before { + content: "\f225"; +} + +.fa-mercury:before { + content: "\f223"; +} + +.fa-arrow-turn-down:before, .fa-level-down:before { + content: "\f149"; +} + +.fa-person-falling-burst:before { + content: "\e547"; +} + +.fa-award:before { + content: "\f559"; +} + +.fa-ticket-alt:before, .fa-ticket-simple:before { + content: "\f3ff"; +} + +.fa-building:before { + content: "\f1ad"; +} + +.fa-angle-double-left:before, .fa-angles-left:before { + content: "\f100"; +} + +.fa-qrcode:before { + content: "\f029"; +} + +.fa-clock-rotate-left:before, .fa-history:before { + content: "\f1da"; +} + +.fa-face-grin-beam-sweat:before, .fa-grin-beam-sweat:before { + content: "\f583"; +} + +.fa-arrow-right-from-file:before, .fa-file-export:before { + content: "\f56e"; +} + +.fa-shield-blank:before, .fa-shield:before { + content: "\f132"; +} + +.fa-arrow-up-short-wide:before, .fa-sort-amount-up-alt:before { + content: "\f885"; +} + +.fa-house-medical:before { + content: "\e3b2"; +} + +.fa-golf-ball-tee:before, .fa-golf-ball:before { + content: "\f450"; +} + +.fa-chevron-circle-left:before, .fa-circle-chevron-left:before { + content: "\f137"; +} + +.fa-house-chimney-window:before { + content: "\e00d"; +} + +.fa-pen-nib:before { + content: "\f5ad"; +} + +.fa-tent-arrow-turn-left:before { + content: "\e580"; +} + +.fa-tents:before { + content: "\e582"; +} + +.fa-magic:before, .fa-wand-magic:before { + content: "\f0d0"; +} + +.fa-dog:before { + content: "\f6d3"; +} + +.fa-carrot:before { + content: "\f787"; +} + +.fa-moon:before { + content: "\f186"; +} + +.fa-wine-glass-alt:before, .fa-wine-glass-empty:before { + content: "\f5ce"; +} + +.fa-cheese:before { + content: "\f7ef"; +} + +.fa-yin-yang:before { + content: "\f6ad"; +} + +.fa-music:before { + content: "\f001"; +} + +.fa-code-commit:before { + content: "\f386"; +} + +.fa-temperature-low:before { + content: "\f76b"; +} + +.fa-biking:before, .fa-person-biking:before { + content: "\f84a"; +} + +.fa-broom:before { + content: "\f51a"; +} + +.fa-shield-heart:before { + content: "\e574"; +} + +.fa-gopuram:before { + content: "\f664"; +} + +.fa-earth-oceania:before, .fa-globe-oceania:before { + content: "\e47b"; +} + +.fa-square-xmark:before, .fa-times-square:before, .fa-xmark-square:before { + content: "\f2d3"; +} + +.fa-hashtag:before { + content: "#"; +} + +.fa-expand-alt:before, .fa-up-right-and-down-left-from-center:before { + content: "\f424"; +} + +.fa-oil-can:before { + content: "\f613"; +} + +.fa-t:before { + content: "T"; +} + +.fa-hippo:before { + content: "\f6ed"; +} + +.fa-chart-column:before { + content: "\e0e3"; +} + +.fa-infinity:before { + content: "\f534"; +} + +.fa-vial-circle-check:before { + content: "\e596"; +} + +.fa-person-arrow-down-to-line:before { + content: "\e538"; +} + +.fa-voicemail:before { + content: "\f897"; +} + +.fa-fan:before { + content: "\f863"; +} + +.fa-person-walking-luggage:before { + content: "\e554"; +} + +.fa-arrows-alt-v:before, .fa-up-down:before { + content: "\f338"; +} + +.fa-cloud-moon-rain:before { + content: "\f73c"; +} + +.fa-calendar:before { + content: "\f133"; +} + +.fa-trailer:before { + content: "\e041"; +} + +.fa-bahai:before, .fa-haykal:before { + content: "\f666"; +} + +.fa-sd-card:before { + content: "\f7c2"; +} + +.fa-dragon:before { + content: "\f6d5"; +} + +.fa-shoe-prints:before { + content: "\f54b"; +} + +.fa-circle-plus:before, .fa-plus-circle:before { + content: "\f055"; +} + +.fa-face-grin-tongue-wink:before, .fa-grin-tongue-wink:before { + content: "\f58b"; +} + +.fa-hand-holding:before { + content: "\f4bd"; +} + +.fa-plug-circle-exclamation:before { + content: "\e55d"; +} + +.fa-chain-broken:before, .fa-chain-slash:before, .fa-link-slash:before, .fa-unlink:before { + content: "\f127"; +} + +.fa-clone:before { + content: "\f24d"; +} + +.fa-person-walking-arrow-loop-left:before { + content: "\e551"; +} + +.fa-arrow-up-z-a:before, .fa-sort-alpha-up-alt:before { + content: "\f882"; +} + +.fa-fire-alt:before, .fa-fire-flame-curved:before { + content: "\f7e4"; +} + +.fa-tornado:before { + content: "\f76f"; +} + +.fa-file-circle-plus:before { + content: "\e494"; +} + +.fa-book-quran:before, .fa-quran:before { + content: "\f687"; +} + +.fa-anchor:before { + content: "\f13d"; +} + +.fa-border-all:before { + content: "\f84c"; +} + +.fa-angry:before, .fa-face-angry:before { + content: "\f556"; +} + +.fa-cookie-bite:before { + content: "\f564"; +} + +.fa-arrow-trend-down:before { + content: "\e097"; +} + +.fa-feed:before, .fa-rss:before { + content: "\f09e"; +} + +.fa-draw-polygon:before { + content: "\f5ee"; +} + +.fa-balance-scale:before, .fa-scale-balanced:before { + content: "\f24e"; +} + +.fa-gauge-simple-high:before, .fa-tachometer-fast:before, .fa-tachometer:before { + content: "\f62a"; +} + +.fa-shower:before { + content: "\f2cc"; +} + +.fa-desktop-alt:before, .fa-desktop:before { + content: "\f390"; +} + +.fa-m:before { + content: "M"; +} + +.fa-table-list:before, .fa-th-list:before { + content: "\f00b"; +} + +.fa-comment-sms:before, .fa-sms:before { + content: "\f7cd"; +} + +.fa-book:before { + content: "\f02d"; +} + +.fa-user-plus:before { + content: "\f234"; +} + +.fa-check:before { + content: "\f00c"; +} + +.fa-battery-4:before, .fa-battery-three-quarters:before { + content: "\f241"; +} + +.fa-house-circle-check:before { + content: "\e509"; +} + +.fa-angle-left:before { + content: "\f104"; +} + +.fa-diagram-successor:before { + content: "\e47a"; +} + +.fa-truck-arrow-right:before { + content: "\e58b"; +} + +.fa-arrows-split-up-and-left:before { + content: "\e4bc"; +} + +.fa-fist-raised:before, .fa-hand-fist:before { + content: "\f6de"; +} + +.fa-cloud-moon:before { + content: "\f6c3"; +} + +.fa-briefcase:before { + content: "\f0b1"; +} + +.fa-person-falling:before { + content: "\e546"; +} + +.fa-image-portrait:before, .fa-portrait:before { + content: "\f3e0"; +} + +.fa-user-tag:before { + content: "\f507"; +} + +.fa-rug:before { + content: "\e569"; +} + +.fa-earth-europe:before, .fa-globe-europe:before { + content: "\f7a2"; +} + +.fa-cart-flatbed-suitcase:before, .fa-luggage-cart:before { + content: "\f59d"; +} + +.fa-rectangle-times:before, .fa-rectangle-xmark:before, .fa-times-rectangle:before, .fa-window-close:before { + content: "\f410"; +} + +.fa-baht-sign:before { + content: "\e0ac"; +} + +.fa-book-open:before { + content: "\f518"; +} + +.fa-book-journal-whills:before, .fa-journal-whills:before { + content: "\f66a"; +} + +.fa-handcuffs:before { + content: "\e4f8"; +} + +.fa-exclamation-triangle:before, .fa-triangle-exclamation:before, .fa-warning:before { + content: "\f071"; +} + +.fa-database:before { + content: "\f1c0"; +} + +.fa-arrow-turn-right:before, .fa-mail-forward:before, .fa-share:before { + content: "\f064"; +} + +.fa-bottle-droplet:before { + content: "\e4c4"; +} + +.fa-mask-face:before { + content: "\e1d7"; +} + +.fa-hill-rockslide:before { + content: "\e508"; +} + +.fa-exchange-alt:before, .fa-right-left:before { + content: "\f362"; +} + +.fa-paper-plane:before { + content: "\f1d8"; +} + +.fa-road-circle-exclamation:before { + content: "\e565"; +} + +.fa-dungeon:before { + content: "\f6d9"; +} + +.fa-align-right:before { + content: "\f038"; +} + +.fa-money-bill-1-wave:before, .fa-money-bill-wave-alt:before { + content: "\f53b"; +} + +.fa-life-ring:before { + content: "\f1cd"; +} + +.fa-hands:before, .fa-sign-language:before, .fa-signing:before { + content: "\f2a7"; +} + +.fa-calendar-day:before { + content: "\f783"; +} + +.fa-ladder-water:before, .fa-swimming-pool:before, .fa-water-ladder:before { + content: "\f5c5"; +} + +.fa-arrows-up-down:before, .fa-arrows-v:before { + content: "\f07d"; +} + +.fa-face-grimace:before, .fa-grimace:before { + content: "\f57f"; +} + +.fa-wheelchair-alt:before, .fa-wheelchair-move:before { + content: "\e2ce"; +} + +.fa-level-down-alt:before, .fa-turn-down:before { + content: "\f3be"; +} + +.fa-person-walking-arrow-right:before { + content: "\e552"; +} + +.fa-envelope-square:before, .fa-square-envelope:before { + content: "\f199"; +} + +.fa-dice:before { + content: "\f522"; +} + +.fa-bowling-ball:before { + content: "\f436"; +} + +.fa-brain:before { + content: "\f5dc"; +} + +.fa-band-aid:before, .fa-bandage:before { + content: "\f462"; +} + +.fa-calendar-minus:before { + content: "\f272"; +} + +.fa-circle-xmark:before, .fa-times-circle:before, .fa-xmark-circle:before { + content: "\f057"; +} + +.fa-gifts:before { + content: "\f79c"; +} + +.fa-hotel:before { + content: "\f594"; +} + +.fa-earth-asia:before, .fa-globe-asia:before { + content: "\f57e"; +} + +.fa-id-card-alt:before, .fa-id-card-clip:before { + content: "\f47f"; +} + +.fa-magnifying-glass-plus:before, .fa-search-plus:before { + content: "\f00e"; +} + +.fa-thumbs-up:before { + content: "\f164"; +} + +.fa-user-clock:before { + content: "\f4fd"; +} + +.fa-allergies:before, .fa-hand-dots:before { + content: "\f461"; +} + +.fa-file-invoice:before { + content: "\f570"; +} + +.fa-window-minimize:before { + content: "\f2d1"; +} + +.fa-coffee:before, .fa-mug-saucer:before { + content: "\f0f4"; +} + +.fa-brush:before { + content: "\f55d"; +} + +.fa-mask:before { + content: "\f6fa"; +} + +.fa-magnifying-glass-minus:before, .fa-search-minus:before { + content: "\f010"; +} + +.fa-ruler-vertical:before { + content: "\f548"; +} + +.fa-user-alt:before, .fa-user-large:before { + content: "\f406"; +} + +.fa-train-tram:before { + content: "\e5b4"; +} + +.fa-user-nurse:before { + content: "\f82f"; +} + +.fa-syringe:before { + content: "\f48e"; +} + +.fa-cloud-sun:before { + content: "\f6c4"; +} + +.fa-stopwatch-20:before { + content: "\e06f"; +} + +.fa-square-full:before { + content: "\f45c"; +} + +.fa-magnet:before { + content: "\f076"; +} + +.fa-jar:before { + content: "\e516"; +} + +.fa-note-sticky:before, .fa-sticky-note:before { + content: "\f249"; +} + +.fa-bug-slash:before { + content: "\e490"; +} + +.fa-arrow-up-from-water-pump:before { + content: "\e4b6"; +} + +.fa-bone:before { + content: "\f5d7"; +} + +.fa-user-injured:before { + content: "\f728"; +} + +.fa-face-sad-tear:before, .fa-sad-tear:before { + content: "\f5b4"; +} + +.fa-plane:before { + content: "\f072"; +} + +.fa-tent-arrows-down:before { + content: "\e581"; +} + +.fa-exclamation:before { + content: "!"; +} + +.fa-arrows-spin:before { + content: "\e4bb"; +} + +.fa-print:before { + content: "\f02f"; +} + +.fa-try:before, .fa-turkish-lira-sign:before, .fa-turkish-lira:before { + content: "\e2bb"; +} + +.fa-dollar-sign:before, .fa-dollar:before, .fa-usd:before { + content: "$"; +} + +.fa-x:before { + content: "X"; +} + +.fa-magnifying-glass-dollar:before, .fa-search-dollar:before { + content: "\f688"; +} + +.fa-users-cog:before, .fa-users-gear:before { + content: "\f509"; +} + +.fa-person-military-pointing:before { + content: "\e54a"; +} + +.fa-bank:before, .fa-building-columns:before, .fa-institution:before, .fa-museum:before, .fa-university:before { + content: "\f19c"; +} + +.fa-umbrella:before { + content: "\f0e9"; +} + +.fa-trowel:before { + content: "\e589"; +} + +.fa-d:before { + content: "D"; +} + +.fa-stapler:before { + content: "\e5af"; +} + +.fa-masks-theater:before, .fa-theater-masks:before { + content: "\f630"; +} + +.fa-kip-sign:before { + content: "\e1c4"; +} + +.fa-hand-point-left:before { + content: "\f0a5"; +} + +.fa-handshake-alt:before, .fa-handshake-simple:before { + content: "\f4c6"; +} + +.fa-fighter-jet:before, .fa-jet-fighter:before { + content: "\f0fb"; +} + +.fa-share-alt-square:before, .fa-square-share-nodes:before { + content: "\f1e1"; +} + +.fa-barcode:before { + content: "\f02a"; +} + +.fa-plus-minus:before { + content: "\e43c"; +} + +.fa-video-camera:before, .fa-video:before { + content: "\f03d"; +} + +.fa-graduation-cap:before, .fa-mortar-board:before { + content: "\f19d"; +} + +.fa-hand-holding-medical:before { + content: "\e05c"; +} + +.fa-person-circle-check:before { + content: "\e53e"; +} + +.fa-level-up-alt:before, .fa-turn-up:before { + content: "\f3bf"; +} + +.fa-sr-only, .fa-sr-only-focusable:not(:focus), .sr-only, .sr-only-focusable:not(:focus) { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +:host, :root { + --fa-style-family-brands:"Font Awesome 6 Brands"; + --fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"; +} + +@font-face { + font-family: "Font Awesome 6 Brands"; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("fonts/@fortawesome/fa-brands-400.woff2") format("woff2"), url("fonts/@fortawesome/fa-brands-400.ttf") format("truetype"); +} +.fa-brands, .fab { + font-weight: 400; +} + +.fa-monero:before { + content: "\f3d0"; +} + +.fa-hooli:before { + content: "\f427"; +} + +.fa-yelp:before { + content: "\f1e9"; +} + +.fa-cc-visa:before { + content: "\f1f0"; +} + +.fa-lastfm:before { + content: "\f202"; +} + +.fa-shopware:before { + content: "\f5b5"; +} + +.fa-creative-commons-nc:before { + content: "\f4e8"; +} + +.fa-aws:before { + content: "\f375"; +} + +.fa-redhat:before { + content: "\f7bc"; +} + +.fa-yoast:before { + content: "\f2b1"; +} + +.fa-cloudflare:before { + content: "\e07d"; +} + +.fa-ups:before { + content: "\f7e0"; +} + +.fa-wpexplorer:before { + content: "\f2de"; +} + +.fa-dyalog:before { + content: "\f399"; +} + +.fa-bity:before { + content: "\f37a"; +} + +.fa-stackpath:before { + content: "\f842"; +} + +.fa-buysellads:before { + content: "\f20d"; +} + +.fa-first-order:before { + content: "\f2b0"; +} + +.fa-modx:before { + content: "\f285"; +} + +.fa-guilded:before { + content: "\e07e"; +} + +.fa-vnv:before { + content: "\f40b"; +} + +.fa-js-square:before, .fa-square-js:before { + content: "\f3b9"; +} + +.fa-microsoft:before { + content: "\f3ca"; +} + +.fa-qq:before { + content: "\f1d6"; +} + +.fa-orcid:before { + content: "\f8d2"; +} + +.fa-java:before { + content: "\f4e4"; +} + +.fa-invision:before { + content: "\f7b0"; +} + +.fa-creative-commons-pd-alt:before { + content: "\f4ed"; +} + +.fa-centercode:before { + content: "\f380"; +} + +.fa-glide-g:before { + content: "\f2a6"; +} + +.fa-drupal:before { + content: "\f1a9"; +} + +.fa-hire-a-helper:before { + content: "\f3b0"; +} + +.fa-creative-commons-by:before { + content: "\f4e7"; +} + +.fa-unity:before { + content: "\e049"; +} + +.fa-whmcs:before { + content: "\f40d"; +} + +.fa-rocketchat:before { + content: "\f3e8"; +} + +.fa-vk:before { + content: "\f189"; +} + +.fa-untappd:before { + content: "\f405"; +} + +.fa-mailchimp:before { + content: "\f59e"; +} + +.fa-css3-alt:before { + content: "\f38b"; +} + +.fa-reddit-square:before, .fa-square-reddit:before { + content: "\f1a2"; +} + +.fa-vimeo-v:before { + content: "\f27d"; +} + +.fa-contao:before { + content: "\f26d"; +} + +.fa-square-font-awesome:before { + content: "\e5ad"; +} + +.fa-deskpro:before { + content: "\f38f"; +} + +.fa-sistrix:before { + content: "\f3ee"; +} + +.fa-instagram-square:before, .fa-square-instagram:before { + content: "\e055"; +} + +.fa-battle-net:before { + content: "\f835"; +} + +.fa-the-red-yeti:before { + content: "\f69d"; +} + +.fa-hacker-news-square:before, .fa-square-hacker-news:before { + content: "\f3af"; +} + +.fa-edge:before { + content: "\f282"; +} + +.fa-napster:before { + content: "\f3d2"; +} + +.fa-snapchat-square:before, .fa-square-snapchat:before { + content: "\f2ad"; +} + +.fa-google-plus-g:before { + content: "\f0d5"; +} + +.fa-artstation:before { + content: "\f77a"; +} + +.fa-markdown:before { + content: "\f60f"; +} + +.fa-sourcetree:before { + content: "\f7d3"; +} + +.fa-google-plus:before { + content: "\f2b3"; +} + +.fa-diaspora:before { + content: "\f791"; +} + +.fa-foursquare:before { + content: "\f180"; +} + +.fa-stack-overflow:before { + content: "\f16c"; +} + +.fa-github-alt:before { + content: "\f113"; +} + +.fa-phoenix-squadron:before { + content: "\f511"; +} + +.fa-pagelines:before { + content: "\f18c"; +} + +.fa-algolia:before { + content: "\f36c"; +} + +.fa-red-river:before { + content: "\f3e3"; +} + +.fa-creative-commons-sa:before { + content: "\f4ef"; +} + +.fa-safari:before { + content: "\f267"; +} + +.fa-google:before { + content: "\f1a0"; +} + +.fa-font-awesome-alt:before, .fa-square-font-awesome-stroke:before { + content: "\f35c"; +} + +.fa-atlassian:before { + content: "\f77b"; +} + +.fa-linkedin-in:before { + content: "\f0e1"; +} + +.fa-digital-ocean:before { + content: "\f391"; +} + +.fa-nimblr:before { + content: "\f5a8"; +} + +.fa-chromecast:before { + content: "\f838"; +} + +.fa-evernote:before { + content: "\f839"; +} + +.fa-hacker-news:before { + content: "\f1d4"; +} + +.fa-creative-commons-sampling:before { + content: "\f4f0"; +} + +.fa-adversal:before { + content: "\f36a"; +} + +.fa-creative-commons:before { + content: "\f25e"; +} + +.fa-watchman-monitoring:before { + content: "\e087"; +} + +.fa-fonticons:before { + content: "\f280"; +} + +.fa-weixin:before { + content: "\f1d7"; +} + +.fa-shirtsinbulk:before { + content: "\f214"; +} + +.fa-codepen:before { + content: "\f1cb"; +} + +.fa-git-alt:before { + content: "\f841"; +} + +.fa-lyft:before { + content: "\f3c3"; +} + +.fa-rev:before { + content: "\f5b2"; +} + +.fa-windows:before { + content: "\f17a"; +} + +.fa-wizards-of-the-coast:before { + content: "\f730"; +} + +.fa-square-viadeo:before, .fa-viadeo-square:before { + content: "\f2aa"; +} + +.fa-meetup:before { + content: "\f2e0"; +} + +.fa-centos:before { + content: "\f789"; +} + +.fa-adn:before { + content: "\f170"; +} + +.fa-cloudsmith:before { + content: "\f384"; +} + +.fa-pied-piper-alt:before { + content: "\f1a8"; +} + +.fa-dribbble-square:before, .fa-square-dribbble:before { + content: "\f397"; +} + +.fa-codiepie:before { + content: "\f284"; +} + +.fa-node:before { + content: "\f419"; +} + +.fa-mix:before { + content: "\f3cb"; +} + +.fa-steam:before { + content: "\f1b6"; +} + +.fa-cc-apple-pay:before { + content: "\f416"; +} + +.fa-scribd:before { + content: "\f28a"; +} + +.fa-openid:before { + content: "\f19b"; +} + +.fa-instalod:before { + content: "\e081"; +} + +.fa-expeditedssl:before { + content: "\f23e"; +} + +.fa-sellcast:before { + content: "\f2da"; +} + +.fa-square-twitter:before, .fa-twitter-square:before { + content: "\f081"; +} + +.fa-r-project:before { + content: "\f4f7"; +} + +.fa-delicious:before { + content: "\f1a5"; +} + +.fa-freebsd:before { + content: "\f3a4"; +} + +.fa-vuejs:before { + content: "\f41f"; +} + +.fa-accusoft:before { + content: "\f369"; +} + +.fa-ioxhost:before { + content: "\f208"; +} + +.fa-fonticons-fi:before { + content: "\f3a2"; +} + +.fa-app-store:before { + content: "\f36f"; +} + +.fa-cc-mastercard:before { + content: "\f1f1"; +} + +.fa-itunes-note:before { + content: "\f3b5"; +} + +.fa-golang:before { + content: "\e40f"; +} + +.fa-kickstarter:before { + content: "\f3bb"; +} + +.fa-grav:before { + content: "\f2d6"; +} + +.fa-weibo:before { + content: "\f18a"; +} + +.fa-uncharted:before { + content: "\e084"; +} + +.fa-firstdraft:before { + content: "\f3a1"; +} + +.fa-square-youtube:before, .fa-youtube-square:before { + content: "\f431"; +} + +.fa-wikipedia-w:before { + content: "\f266"; +} + +.fa-rendact:before, .fa-wpressr:before { + content: "\f3e4"; +} + +.fa-angellist:before { + content: "\f209"; +} + +.fa-galactic-republic:before { + content: "\f50c"; +} + +.fa-nfc-directional:before { + content: "\e530"; +} + +.fa-skype:before { + content: "\f17e"; +} + +.fa-joget:before { + content: "\f3b7"; +} + +.fa-fedora:before { + content: "\f798"; +} + +.fa-stripe-s:before { + content: "\f42a"; +} + +.fa-meta:before { + content: "\e49b"; +} + +.fa-laravel:before { + content: "\f3bd"; +} + +.fa-hotjar:before { + content: "\f3b1"; +} + +.fa-bluetooth-b:before { + content: "\f294"; +} + +.fa-sticker-mule:before { + content: "\f3f7"; +} + +.fa-creative-commons-zero:before { + content: "\f4f3"; +} + +.fa-hips:before { + content: "\f452"; +} + +.fa-behance:before { + content: "\f1b4"; +} + +.fa-reddit:before { + content: "\f1a1"; +} + +.fa-discord:before { + content: "\f392"; +} + +.fa-chrome:before { + content: "\f268"; +} + +.fa-app-store-ios:before { + content: "\f370"; +} + +.fa-cc-discover:before { + content: "\f1f2"; +} + +.fa-wpbeginner:before { + content: "\f297"; +} + +.fa-confluence:before { + content: "\f78d"; +} + +.fa-mdb:before { + content: "\f8ca"; +} + +.fa-dochub:before { + content: "\f394"; +} + +.fa-accessible-icon:before { + content: "\f368"; +} + +.fa-ebay:before { + content: "\f4f4"; +} + +.fa-amazon:before { + content: "\f270"; +} + +.fa-unsplash:before { + content: "\e07c"; +} + +.fa-yarn:before { + content: "\f7e3"; +} + +.fa-square-steam:before, .fa-steam-square:before { + content: "\f1b7"; +} + +.fa-500px:before { + content: "\f26e"; +} + +.fa-square-vimeo:before, .fa-vimeo-square:before { + content: "\f194"; +} + +.fa-asymmetrik:before { + content: "\f372"; +} + +.fa-font-awesome-flag:before, .fa-font-awesome-logo-full:before, .fa-font-awesome:before { + content: "\f2b4"; +} + +.fa-gratipay:before { + content: "\f184"; +} + +.fa-apple:before { + content: "\f179"; +} + +.fa-hive:before { + content: "\e07f"; +} + +.fa-gitkraken:before { + content: "\f3a6"; +} + +.fa-keybase:before { + content: "\f4f5"; +} + +.fa-apple-pay:before { + content: "\f415"; +} + +.fa-padlet:before { + content: "\e4a0"; +} + +.fa-amazon-pay:before { + content: "\f42c"; +} + +.fa-github-square:before, .fa-square-github:before { + content: "\f092"; +} + +.fa-stumbleupon:before { + content: "\f1a4"; +} + +.fa-fedex:before { + content: "\f797"; +} + +.fa-phoenix-framework:before { + content: "\f3dc"; +} + +.fa-shopify:before { + content: "\e057"; +} + +.fa-neos:before { + content: "\f612"; +} + +.fa-hackerrank:before { + content: "\f5f7"; +} + +.fa-researchgate:before { + content: "\f4f8"; +} + +.fa-swift:before { + content: "\f8e1"; +} + +.fa-angular:before { + content: "\f420"; +} + +.fa-speakap:before { + content: "\f3f3"; +} + +.fa-angrycreative:before { + content: "\f36e"; +} + +.fa-y-combinator:before { + content: "\f23b"; +} + +.fa-empire:before { + content: "\f1d1"; +} + +.fa-envira:before { + content: "\f299"; +} + +.fa-gitlab-square:before, .fa-square-gitlab:before { + content: "\e5ae"; +} + +.fa-studiovinari:before { + content: "\f3f8"; +} + +.fa-pied-piper:before { + content: "\f2ae"; +} + +.fa-wordpress:before { + content: "\f19a"; +} + +.fa-product-hunt:before { + content: "\f288"; +} + +.fa-firefox:before { + content: "\f269"; +} + +.fa-linode:before { + content: "\f2b8"; +} + +.fa-goodreads:before { + content: "\f3a8"; +} + +.fa-odnoklassniki-square:before, .fa-square-odnoklassniki:before { + content: "\f264"; +} + +.fa-jsfiddle:before { + content: "\f1cc"; +} + +.fa-sith:before { + content: "\f512"; +} + +.fa-themeisle:before { + content: "\f2b2"; +} + +.fa-page4:before { + content: "\f3d7"; +} + +.fa-hashnode:before { + content: "\e499"; +} + +.fa-react:before { + content: "\f41b"; +} + +.fa-cc-paypal:before { + content: "\f1f4"; +} + +.fa-squarespace:before { + content: "\f5be"; +} + +.fa-cc-stripe:before { + content: "\f1f5"; +} + +.fa-creative-commons-share:before { + content: "\f4f2"; +} + +.fa-bitcoin:before { + content: "\f379"; +} + +.fa-keycdn:before { + content: "\f3ba"; +} + +.fa-opera:before { + content: "\f26a"; +} + +.fa-itch-io:before { + content: "\f83a"; +} + +.fa-umbraco:before { + content: "\f8e8"; +} + +.fa-galactic-senate:before { + content: "\f50d"; +} + +.fa-ubuntu:before { + content: "\f7df"; +} + +.fa-draft2digital:before { + content: "\f396"; +} + +.fa-stripe:before { + content: "\f429"; +} + +.fa-houzz:before { + content: "\f27c"; +} + +.fa-gg:before { + content: "\f260"; +} + +.fa-dhl:before { + content: "\f790"; +} + +.fa-pinterest-square:before, .fa-square-pinterest:before { + content: "\f0d3"; +} + +.fa-xing:before { + content: "\f168"; +} + +.fa-blackberry:before { + content: "\f37b"; +} + +.fa-creative-commons-pd:before { + content: "\f4ec"; +} + +.fa-playstation:before { + content: "\f3df"; +} + +.fa-quinscape:before { + content: "\f459"; +} + +.fa-less:before { + content: "\f41d"; +} + +.fa-blogger-b:before { + content: "\f37d"; +} + +.fa-opencart:before { + content: "\f23d"; +} + +.fa-vine:before { + content: "\f1ca"; +} + +.fa-paypal:before { + content: "\f1ed"; +} + +.fa-gitlab:before { + content: "\f296"; +} + +.fa-typo3:before { + content: "\f42b"; +} + +.fa-reddit-alien:before { + content: "\f281"; +} + +.fa-yahoo:before { + content: "\f19e"; +} + +.fa-dailymotion:before { + content: "\e052"; +} + +.fa-affiliatetheme:before { + content: "\f36b"; +} + +.fa-pied-piper-pp:before { + content: "\f1a7"; +} + +.fa-bootstrap:before { + content: "\f836"; +} + +.fa-odnoklassniki:before { + content: "\f263"; +} + +.fa-nfc-symbol:before { + content: "\e531"; +} + +.fa-ethereum:before { + content: "\f42e"; +} + +.fa-speaker-deck:before { + content: "\f83c"; +} + +.fa-creative-commons-nc-eu:before { + content: "\f4e9"; +} + +.fa-patreon:before { + content: "\f3d9"; +} + +.fa-avianex:before { + content: "\f374"; +} + +.fa-ello:before { + content: "\f5f1"; +} + +.fa-gofore:before { + content: "\f3a7"; +} + +.fa-bimobject:before { + content: "\f378"; +} + +.fa-facebook-f:before { + content: "\f39e"; +} + +.fa-google-plus-square:before, .fa-square-google-plus:before { + content: "\f0d4"; +} + +.fa-mandalorian:before { + content: "\f50f"; +} + +.fa-first-order-alt:before { + content: "\f50a"; +} + +.fa-osi:before { + content: "\f41a"; +} + +.fa-google-wallet:before { + content: "\f1ee"; +} + +.fa-d-and-d-beyond:before { + content: "\f6ca"; +} + +.fa-periscope:before { + content: "\f3da"; +} + +.fa-fulcrum:before { + content: "\f50b"; +} + +.fa-cloudscale:before { + content: "\f383"; +} + +.fa-forumbee:before { + content: "\f211"; +} + +.fa-mizuni:before { + content: "\f3cc"; +} + +.fa-schlix:before { + content: "\f3ea"; +} + +.fa-square-xing:before, .fa-xing-square:before { + content: "\f169"; +} + +.fa-bandcamp:before { + content: "\f2d5"; +} + +.fa-wpforms:before { + content: "\f298"; +} + +.fa-cloudversify:before { + content: "\f385"; +} + +.fa-usps:before { + content: "\f7e1"; +} + +.fa-megaport:before { + content: "\f5a3"; +} + +.fa-magento:before { + content: "\f3c4"; +} + +.fa-spotify:before { + content: "\f1bc"; +} + +.fa-optin-monster:before { + content: "\f23c"; +} + +.fa-fly:before { + content: "\f417"; +} + +.fa-aviato:before { + content: "\f421"; +} + +.fa-itunes:before { + content: "\f3b4"; +} + +.fa-cuttlefish:before { + content: "\f38c"; +} + +.fa-blogger:before { + content: "\f37c"; +} + +.fa-flickr:before { + content: "\f16e"; +} + +.fa-viber:before { + content: "\f409"; +} + +.fa-soundcloud:before { + content: "\f1be"; +} + +.fa-digg:before { + content: "\f1a6"; +} + +.fa-tencent-weibo:before { + content: "\f1d5"; +} + +.fa-symfony:before { + content: "\f83d"; +} + +.fa-maxcdn:before { + content: "\f136"; +} + +.fa-etsy:before { + content: "\f2d7"; +} + +.fa-facebook-messenger:before { + content: "\f39f"; +} + +.fa-audible:before { + content: "\f373"; +} + +.fa-think-peaks:before { + content: "\f731"; +} + +.fa-bilibili:before { + content: "\e3d9"; +} + +.fa-erlang:before { + content: "\f39d"; +} + +.fa-cotton-bureau:before { + content: "\f89e"; +} + +.fa-dashcube:before { + content: "\f210"; +} + +.fa-42-group:before, .fa-innosoft:before { + content: "\e080"; +} + +.fa-stack-exchange:before { + content: "\f18d"; +} + +.fa-elementor:before { + content: "\f430"; +} + +.fa-pied-piper-square:before, .fa-square-pied-piper:before { + content: "\e01e"; +} + +.fa-creative-commons-nd:before { + content: "\f4eb"; +} + +.fa-palfed:before { + content: "\f3d8"; +} + +.fa-superpowers:before { + content: "\f2dd"; +} + +.fa-resolving:before { + content: "\f3e7"; +} + +.fa-xbox:before { + content: "\f412"; +} + +.fa-searchengin:before { + content: "\f3eb"; +} + +.fa-tiktok:before { + content: "\e07b"; +} + +.fa-facebook-square:before, .fa-square-facebook:before { + content: "\f082"; +} + +.fa-renren:before { + content: "\f18b"; +} + +.fa-linux:before { + content: "\f17c"; +} + +.fa-glide:before { + content: "\f2a5"; +} + +.fa-linkedin:before { + content: "\f08c"; +} + +.fa-hubspot:before { + content: "\f3b2"; +} + +.fa-deploydog:before { + content: "\f38e"; +} + +.fa-twitch:before { + content: "\f1e8"; +} + +.fa-ravelry:before { + content: "\f2d9"; +} + +.fa-mixer:before { + content: "\e056"; +} + +.fa-lastfm-square:before, .fa-square-lastfm:before { + content: "\f203"; +} + +.fa-vimeo:before { + content: "\f40a"; +} + +.fa-mendeley:before { + content: "\f7b3"; +} + +.fa-uniregistry:before { + content: "\f404"; +} + +.fa-figma:before { + content: "\f799"; +} + +.fa-creative-commons-remix:before { + content: "\f4ee"; +} + +.fa-cc-amazon-pay:before { + content: "\f42d"; +} + +.fa-dropbox:before { + content: "\f16b"; +} + +.fa-instagram:before { + content: "\f16d"; +} + +.fa-cmplid:before { + content: "\e360"; +} + +.fa-facebook:before { + content: "\f09a"; +} + +.fa-gripfire:before { + content: "\f3ac"; +} + +.fa-jedi-order:before { + content: "\f50e"; +} + +.fa-uikit:before { + content: "\f403"; +} + +.fa-fort-awesome-alt:before { + content: "\f3a3"; +} + +.fa-phabricator:before { + content: "\f3db"; +} + +.fa-ussunnah:before { + content: "\f407"; +} + +.fa-earlybirds:before { + content: "\f39a"; +} + +.fa-trade-federation:before { + content: "\f513"; +} + +.fa-autoprefixer:before { + content: "\f41c"; +} + +.fa-whatsapp:before { + content: "\f232"; +} + +.fa-slideshare:before { + content: "\f1e7"; +} + +.fa-google-play:before { + content: "\f3ab"; +} + +.fa-viadeo:before { + content: "\f2a9"; +} + +.fa-line:before { + content: "\f3c0"; +} + +.fa-google-drive:before { + content: "\f3aa"; +} + +.fa-servicestack:before { + content: "\f3ec"; +} + +.fa-simplybuilt:before { + content: "\f215"; +} + +.fa-bitbucket:before { + content: "\f171"; +} + +.fa-imdb:before { + content: "\f2d8"; +} + +.fa-deezer:before { + content: "\e077"; +} + +.fa-raspberry-pi:before { + content: "\f7bb"; +} + +.fa-jira:before { + content: "\f7b1"; +} + +.fa-docker:before { + content: "\f395"; +} + +.fa-screenpal:before { + content: "\e570"; +} + +.fa-bluetooth:before { + content: "\f293"; +} + +.fa-gitter:before { + content: "\f426"; +} + +.fa-d-and-d:before { + content: "\f38d"; +} + +.fa-microblog:before { + content: "\e01a"; +} + +.fa-cc-diners-club:before { + content: "\f24c"; +} + +.fa-gg-circle:before { + content: "\f261"; +} + +.fa-pied-piper-hat:before { + content: "\f4e5"; +} + +.fa-kickstarter-k:before { + content: "\f3bc"; +} + +.fa-yandex:before { + content: "\f413"; +} + +.fa-readme:before { + content: "\f4d5"; +} + +.fa-html5:before { + content: "\f13b"; +} + +.fa-sellsy:before { + content: "\f213"; +} + +.fa-sass:before { + content: "\f41e"; +} + +.fa-wirsindhandwerk:before, .fa-wsh:before { + content: "\e2d0"; +} + +.fa-buromobelexperte:before { + content: "\f37f"; +} + +.fa-salesforce:before { + content: "\f83b"; +} + +.fa-octopus-deploy:before { + content: "\e082"; +} + +.fa-medapps:before { + content: "\f3c6"; +} + +.fa-ns8:before { + content: "\f3d5"; +} + +.fa-pinterest-p:before { + content: "\f231"; +} + +.fa-apper:before { + content: "\f371"; +} + +.fa-fort-awesome:before { + content: "\f286"; +} + +.fa-waze:before { + content: "\f83f"; +} + +.fa-cc-jcb:before { + content: "\f24b"; +} + +.fa-snapchat-ghost:before, .fa-snapchat:before { + content: "\f2ab"; +} + +.fa-fantasy-flight-games:before { + content: "\f6dc"; +} + +.fa-rust:before { + content: "\e07a"; +} + +.fa-wix:before { + content: "\f5cf"; +} + +.fa-behance-square:before, .fa-square-behance:before { + content: "\f1b5"; +} + +.fa-supple:before { + content: "\f3f9"; +} + +.fa-rebel:before { + content: "\f1d0"; +} + +.fa-css3:before { + content: "\f13c"; +} + +.fa-staylinked:before { + content: "\f3f5"; +} + +.fa-kaggle:before { + content: "\f5fa"; +} + +.fa-space-awesome:before { + content: "\e5ac"; +} + +.fa-deviantart:before { + content: "\f1bd"; +} + +.fa-cpanel:before { + content: "\f388"; +} + +.fa-goodreads-g:before { + content: "\f3a9"; +} + +.fa-git-square:before, .fa-square-git:before { + content: "\f1d2"; +} + +.fa-square-tumblr:before, .fa-tumblr-square:before { + content: "\f174"; +} + +.fa-trello:before { + content: "\f181"; +} + +.fa-creative-commons-nc-jp:before { + content: "\f4ea"; +} + +.fa-get-pocket:before { + content: "\f265"; +} + +.fa-perbyte:before { + content: "\e083"; +} + +.fa-grunt:before { + content: "\f3ad"; +} + +.fa-weebly:before { + content: "\f5cc"; +} + +.fa-connectdevelop:before { + content: "\f20e"; +} + +.fa-leanpub:before { + content: "\f212"; +} + +.fa-black-tie:before { + content: "\f27e"; +} + +.fa-themeco:before { + content: "\f5c6"; +} + +.fa-python:before { + content: "\f3e2"; +} + +.fa-android:before { + content: "\f17b"; +} + +.fa-bots:before { + content: "\e340"; +} + +.fa-free-code-camp:before { + content: "\f2c5"; +} + +.fa-hornbill:before { + content: "\f592"; +} + +.fa-js:before { + content: "\f3b8"; +} + +.fa-ideal:before { + content: "\e013"; +} + +.fa-git:before { + content: "\f1d3"; +} + +.fa-dev:before { + content: "\f6cc"; +} + +.fa-sketch:before { + content: "\f7c6"; +} + +.fa-yandex-international:before { + content: "\f414"; +} + +.fa-cc-amex:before { + content: "\f1f3"; +} + +.fa-uber:before { + content: "\f402"; +} + +.fa-github:before { + content: "\f09b"; +} + +.fa-php:before { + content: "\f457"; +} + +.fa-alipay:before { + content: "\f642"; +} + +.fa-youtube:before { + content: "\f167"; +} + +.fa-skyatlas:before { + content: "\f216"; +} + +.fa-firefox-browser:before { + content: "\e007"; +} + +.fa-replyd:before { + content: "\f3e6"; +} + +.fa-suse:before { + content: "\f7d6"; +} + +.fa-jenkins:before { + content: "\f3b6"; +} + +.fa-twitter:before { + content: "\f099"; +} + +.fa-rockrms:before { + content: "\f3e9"; +} + +.fa-pinterest:before { + content: "\f0d2"; +} + +.fa-buffer:before { + content: "\f837"; +} + +.fa-npm:before { + content: "\f3d4"; +} + +.fa-yammer:before { + content: "\f840"; +} + +.fa-btc:before { + content: "\f15a"; +} + +.fa-dribbble:before { + content: "\f17d"; +} + +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} + +.fa-internet-explorer:before { + content: "\f26b"; +} + +.fa-telegram-plane:before, .fa-telegram:before { + content: "\f2c6"; +} + +.fa-old-republic:before { + content: "\f510"; +} + +.fa-square-whatsapp:before, .fa-whatsapp-square:before { + content: "\f40c"; +} + +.fa-node-js:before { + content: "\f3d3"; +} + +.fa-edge-legacy:before { + content: "\e078"; +} + +.fa-slack-hash:before, .fa-slack:before { + content: "\f198"; +} + +.fa-medrt:before { + content: "\f3c8"; +} + +.fa-usb:before { + content: "\f287"; +} + +.fa-tumblr:before { + content: "\f173"; +} + +.fa-vaadin:before { + content: "\f408"; +} + +.fa-quora:before { + content: "\f2c4"; +} + +.fa-reacteurope:before { + content: "\f75d"; +} + +.fa-medium-m:before, .fa-medium:before { + content: "\f23a"; +} + +.fa-amilia:before { + content: "\f36d"; +} + +.fa-mixcloud:before { + content: "\f289"; +} + +.fa-flipboard:before { + content: "\f44d"; +} + +.fa-viacoin:before { + content: "\f237"; +} + +.fa-critical-role:before { + content: "\f6c9"; +} + +.fa-sitrox:before { + content: "\e44a"; +} + +.fa-discourse:before { + content: "\f393"; +} + +.fa-joomla:before { + content: "\f1aa"; +} + +.fa-mastodon:before { + content: "\f4f6"; +} + +.fa-airbnb:before { + content: "\f834"; +} + +.fa-wolf-pack-battalion:before { + content: "\f514"; +} + +.fa-buy-n-large:before { + content: "\f8a6"; +} + +.fa-gulp:before { + content: "\f3ae"; +} + +.fa-creative-commons-sampling-plus:before { + content: "\f4f1"; +} + +.fa-strava:before { + content: "\f428"; +} + +.fa-ember:before { + content: "\f423"; +} + +.fa-canadian-maple-leaf:before { + content: "\f785"; +} + +.fa-teamspeak:before { + content: "\f4f9"; +} + +.fa-pushed:before { + content: "\f3e1"; +} + +.fa-wordpress-simple:before { + content: "\f411"; +} + +.fa-nutritionix:before { + content: "\f3d6"; +} + +.fa-wodu:before { + content: "\e088"; +} + +.fa-google-pay:before { + content: "\e079"; +} + +.fa-intercom:before { + content: "\f7af"; +} + +.fa-zhihu:before { + content: "\f63f"; +} + +.fa-korvue:before { + content: "\f42f"; +} + +.fa-pix:before { + content: "\e43a"; +} + +.fa-steam-symbol:before { + content: "\f3f6"; +} + +:host, :root { + --fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"; +} + +@font-face { + font-family: "Font Awesome 6 Free"; + font-style: normal; + font-weight: 400; + font-display: block; + src: url("fonts/@fortawesome/fa-regular-400.woff2") format("woff2"), url("fonts/@fortawesome/fa-regular-400.ttf") format("truetype"); +} +.fa-regular, .far { + font-weight: 400; +} + +:host, :root { + --fa-style-family-classic:"Font Awesome 6 Free"; + --fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"; +} + +@font-face { + font-family: "Font Awesome 6 Free"; + font-style: normal; + font-weight: 900; + font-display: block; + src: url("fonts/@fortawesome/fa-solid-900.woff2") format("woff2"), url("fonts/@fortawesome/fa-solid-900.ttf") format("truetype"); +} +.fa-solid, .fas { + font-weight: 900; +} + +@font-face { + font-family: "Font Awesome 5 Brands"; + font-display: block; + font-weight: 400; + src: url("fonts/@fortawesome/fa-brands-400.woff2") format("woff2"), url("fonts/@fortawesome/fa-brands-400.ttf") format("truetype"); +} +@font-face { + font-family: "Font Awesome 5 Free"; + font-display: block; + font-weight: 900; + src: url("fonts/@fortawesome/fa-solid-900.woff2") format("woff2"), url("fonts/@fortawesome/fa-solid-900.ttf") format("truetype"); +} +@font-face { + font-family: "Font Awesome 5 Free"; + font-display: block; + font-weight: 400; + src: url("fonts/@fortawesome/fa-regular-400.woff2") format("woff2"), url("fonts/@fortawesome/fa-regular-400.ttf") format("truetype"); +} +@font-face { + font-family: "FontAwesome"; + font-display: block; + src: url("fonts/@fortawesome/fa-solid-900.woff2") format("woff2"), url("fonts/@fortawesome/fa-solid-900.ttf") format("truetype"); +} +@font-face { + font-family: "FontAwesome"; + font-display: block; + src: url("fonts/@fortawesome/fa-brands-400.woff2") format("woff2"), url("fonts/@fortawesome/fa-brands-400.ttf") format("truetype"); +} +@font-face { + font-family: "FontAwesome"; + font-display: block; + src: url("fonts/@fortawesome/fa-regular-400.woff2") format("woff2"), url("fonts/@fortawesome/fa-regular-400.ttf") format("truetype"); + unicode-range: u+f003, u+f006, u+f014, u+f016-f017, u+f01a-f01b, u+f01d, u+f022, u+f03e, u+f044, u+f046, u+f05c-f05d, u+f06e, u+f070, u+f087-f088, u+f08a, u+f094, u+f096-f097, u+f09d, u+f0a0, u+f0a2, u+f0a4-f0a7, u+f0c5, u+f0c7, u+f0e5-f0e6, u+f0eb, u+f0f6-f0f8, u+f10c, u+f114-f115, u+f118-f11a, u+f11c-f11d, u+f133, u+f147, u+f14e, u+f150-f152, u+f185-f186, u+f18e, u+f190-f192, u+f196, u+f1c1-f1c9, u+f1d9, u+f1db, u+f1e3, u+f1ea, u+f1f7, u+f1f9, u+f20a, u+f247-f248, u+f24a, u+f24d, u+f255-f25b, u+f25d, u+f271-f274, u+f278, u+f27b, u+f28c, u+f28e, u+f29c, u+f2b5, u+f2b7, u+f2ba, u+f2bc, u+f2be, u+f2c0-f2c1, u+f2c3, u+f2d0, u+f2d2, u+f2d4, u+f2dc; +} +@font-face { + font-family: "FontAwesome"; + font-display: block; + src: url("fonts/@fortawesome/fa-v4compatibility.woff2") format("woff2"), url("fonts/@fortawesome/fa-v4compatibility.ttf") format("truetype"); + unicode-range: u+f041, u+f047, u+f065-f066, u+f07d-f07e, u+f080, u+f08b, u+f08e, u+f090, u+f09a, u+f0ac, u+f0ae, u+f0b2, u+f0d0, u+f0d6, u+f0e4, u+f0ec, u+f10a-f10b, u+f123, u+f13e, u+f148-f149, u+f14c, u+f156, u+f15e, u+f160-f161, u+f163, u+f175-f178, u+f195, u+f1f8, u+f219, u+f27a; +} +@font-face { + font-family: "fonticon"; + src: url("fonts/fonticon/fonticon.ttf?8e8dbe1ea9ce4a70bc69a61ddae8f305") format("truetype"), url("fonts/fonticon/fonticon.woff?8e8dbe1ea9ce4a70bc69a61ddae8f305") format("woff"), url("fonts/fonticon/fonticon.woff2?8e8dbe1ea9ce4a70bc69a61ddae8f305") format("woff2"), url("fonts/fonticon/fonticon.eot?8e8dbe1ea9ce4a70bc69a61ddae8f305#iefix") format("embedded-opentype"), url("fonts/fonticon/fonticon.svg?8e8dbe1ea9ce4a70bc69a61ddae8f305#fonticon") format("svg"); +} +i[class^=fonticon-]:before, i[class*=" fonticon-"]:before { + font-family: fonticon !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.fonticon-delivery:before { + content: "\f101"; +} + +.fonticon-bicycle:before { + content: "\f102"; +} + +.fonticon-bookmark:before { + content: "\f103"; +} + +.fonticon-like:before { + content: "\f104"; +} + +.fonticon-microphone:before { + content: "\f105"; +} + +.fonticon-location:before { + content: "\f106"; +} + +.fonticon-gallery:before { + content: "\f107"; +} + +.fonticon-share:before { + content: "\f108"; +} + +.fonticon-star:before { + content: "\f109"; +} + +.fonticon-trash-bin:before { + content: "\f10a"; +} + +.fonticon-user-2:before { + content: "\f10b"; +} + +.fonticon-view:before { + content: "\f10c"; +} + +.fonticon-user:before { + content: "\f10d"; +} + +.fonticon-pin:before { + content: "\f10e"; +} + +.fonticon-chat:before { + content: "\f10f"; +} + +.fonticon-home:before { + content: "\f110"; +} + +.fonticon-mail:before { + content: "\f111"; +} + +.fonticon-settings:before { + content: "\f112"; +} + +.fonticon-alignment-right:before { + content: "\f113"; +} + +.fonticon-link:before { + content: "\f114"; +} + +.fonticon-attach:before { + content: "\f115"; +} + +.fonticon-smile:before { + content: "\f116"; +} + +.fonticon-moon:before { + content: "\f117"; +} + +.fonticon-sun:before { + content: "\f118"; +} + +.fonticon-train:before { + content: "\f119"; +} + +.fonticon-eclipse:before { + content: "\f11a"; +} + +.fonticon-drone:before { + content: "\f11b"; +} + +.fonticon-truck:before { + content: "\f11c"; +} + +.fonticon-ship:before { + content: "\f11d"; +} + +.fonticon-offline:before { + content: "\f11e"; +} + +.fonticon-printer:before { + content: "\f11f"; +} + +.fonticon-paperclip:before { + content: "\f120"; +} + +.fonticon-attachments:before { + content: "\f121"; +} + +.fonticon-attachment:before { + content: "\f122"; +} + +.fonticon-dogecoin:before { + content: "\f123"; +} + +.fonticon-bitcoin:before { + content: "\f124"; +} + +.fonticon-setting:before { + content: "\f125"; +} + +.fonticon-headset:before { + content: "\f126"; +} + +.fonticon-play:before { + content: "\f127"; +} + +.fonticon-pause:before { + content: "\f128"; +} + +.fonticon-next:before { + content: "\f129"; +} + +.fonticon-back:before { + content: "\f12a"; +} + +.fonticon-shuffle:before { + content: "\f12b"; +} + +.fonticon-repeat:before { + content: "\f12c"; +} + +.fonticon-outgoing-call:before { + content: "\f12d"; +} + +.fonticon-incoming-call:before { + content: "\f12e"; +} + +.fonticon-cash-payment:before { + content: "\f12f"; +} + +.fonticon-mobile-payment:before { + content: "\f130"; +} + +.fonticon-card:before { + content: "\f131"; +} + +.fonticon-like-1:before { + content: "\f132"; +} + +.fonticon-bank:before { + content: "\f133"; +} + +.fonticon-telegram:before { + content: "\f134"; +} + +.fonticon-drive:before { + content: "\f135"; +} + +.fonticon-remote-control:before { + content: "\f136"; +} + +.fonticon-house:before { + content: "\f137"; +} + +.fonticon-image:before { + content: "\f138"; +} + +.fonticon-app-store:before { + content: "\f139"; +} + +.fonticon-email:before { + content: "\f13a"; +} + +.fonticon-stats:before { + content: "\f13b"; +} + +.fonticon-notification:before { + content: "\f13c"; +} + +.fonticon-send:before { + content: "\f13d"; +} + +.fonticon-insurance:before { + content: "\f13e"; +} + +.fonticon-hourglass:before { + content: "\f13f"; +} + +.fonticon-calendar:before { + content: "\f140"; +} + +.fonticon-alarm:before { + content: "\f141"; +} + +.fonticon-layers:before { + content: "\f142"; +} + +.fonticon-facebook:before { + content: "\f143"; +} + +.fonticon-instagram:before { + content: "\f144"; +} + +.fonticon-linkedin:before { + content: "\f145"; +} + +.fonticon-globe:before { + content: "\f146"; +} + +.fonticon-equalizer:before { + content: "\f147"; +} + +.fonticon-settings-1:before { + content: "\f148"; +} + +.fonticon-creativity:before { + content: "\f149"; +} + +.fonticon-content-marketing:before { + content: "\f14a"; +} + +.fonticon-line-chart:before { + content: "\f14b"; +} + +.fonticon-cms:before { + content: "\f14c"; +} + +.fonticon-hello:before { + content: "\f14d"; +} + +.fonticon-password:before { + content: "\f14e"; +} + +.fonticon-credit-card:before { + content: "\f14f"; +} + +.fonticon-enlarge:before { + content: "\f150"; +} + +.fonticon-24-hours:before { + content: "\f151"; +} + +.fonticon-heart:before { + content: "\f152"; +} + +.fonticon-user-experience:before { + content: "\f153"; +} + +.fonticon-web-design:before { + content: "\f154"; +} + +.fonticon-sun-1:before { + content: "\f155"; +} + +.fonticon-sun-2:before { + content: "\f156"; +} + +.fonticon-messenger:before { + content: "\f157"; +} + +:root, +[data-bs-theme=light] { + --bs-prismjs-bg: #1e1e3f; + --bs-prismjs-border: rgba(255, 255, 255, 0.1); + --bs-prismjs-btn-bg: #2d2d5e; + --bs-prismjs-btn-bg-hover: #2d2d5e; + --bs-prismjs-btn-color: rgba(255, 255, 255, 0.75); + --bs-prismjs-btn-color-hover: #009ef7; + --bs-prismjs-scrollbar-color: #323268; + --bs-prismjs-scrollbar-color-hover: #373773; +} + +[data-bs-theme=dark] { + --bs-prismjs-bg: #151521; + --bs-prismjs-border: rgba(255, 255, 255, 0.1); + --bs-prismjs-btn-bg: #27273d; + --bs-prismjs-btn-bg-hover: #27273d; + --bs-prismjs-btn-color: rgba(255, 255, 255, 0.75); + --bs-prismjs-btn-color-hover: #009ef7; + --bs-prismjs-scrollbar-color: #2d2d46; + --bs-prismjs-scrollbar-color-hover: #333350; +} + +.highlight { + position: relative; + background: var(--bs-prismjs-bg); + border-radius: 0.475rem; + padding: 1.75rem 1.5rem 1.75rem 1.5rem; +} +.highlight .nav { + border-bottom: 1px solid var(--bs-prismjs-border); + padding-bottom: 1rem; + margin-bottom: 1rem; + margin-top: -0.25rem; +} +.highlight .nav .nav-item { + margin-right: 0.75rem; +} +.highlight .nav .nav-link { + font-size: 0.9rem; + font-weight: 500; + padding: 0.35rem 1rem; + border-radius: 0.475rem; + color: var(--bs-prismjs-btn-color); + transition: all 0.2s ease-in-out; + background-color: transparent; +} +.highlight .nav .nav-link:focus, .highlight .nav .nav-link.active { + transition: all 0.2s ease-in-out; + background-color: var(--bs-prismjs-btn-bg-hover); + color: var(--bs-prismjs-btn-color-hover); +} +.highlight .highlight-copy { + display: none; + position: absolute; + right: 1.75rem; + top: 1.5rem; + font-size: 0.85rem; + font-weight: 500; + padding: 0.35rem 1rem !important; + transition: all 0.2s ease-in-out; + background-color: var(--bs-prismjs-btn-bg); + color: var(--bs-prismjs-btn-color); +} +.highlight .highlight-copy:focus, .highlight .highlight-copy:hover { + transition: all 0.2s ease-in-out; + background-color: var(--bs-prismjs-btn-bg-hover); + color: var(--bs-prismjs-btn-color-hover); +} +.highlight:hover .highlight-copy { + display: flex; +} +.highlight .highlight-code pre { + background-color: transparent; + overflow: auto; + padding: 0; + margin: 0; + scrollbar-color: var(--bs-prismjs-scrollbar-color) transparent; +} +.highlight .highlight-code pre::-webkit-scrollbar-thumb { + background-color: var(--bs-prismjs-scrollbar-color); +} +.highlight .highlight-code pre::-webkit-scrollbar-corner { + background-color: transparent; +} +.highlight .highlight-code pre:hover { + scrollbar-color: var(--bs-prismjs-scrollbar-color-hover) transparent; +} +.highlight .highlight-code pre:hover::-webkit-scrollbar-thumb { + background-color: var(--bs-prismjs-scrollbar-color-hover); +} +.highlight .highlight-code pre:hover::-webkit-scrollbar-corner { + background-color: transparent; +} +.highlight .highlight-code pre code[class*=language-] { + padding: 0; + margin: 0; + font-size: 1rem !important; +} + +.fslightbox-slide-btn { + border-radius: 0.475rem; +} + +.fslightbox-toolbar { + border-bottom-left-radius: 0.475rem; +} + +.select2-container--bootstrap5 .select2-selection { + box-shadow: none !important; + height: auto; + outline: none !important; +} +.select2-container--bootstrap5.select2-container--focus:not(.select2-container--disabled) .form-select-solid, .select2-container--bootstrap5.select2-container--open:not(.select2-container--disabled) .form-select-solid { + background-color: var(--bs-input-solid-bg-focus); +} +.select2-container--bootstrap5.select2-container--focus:not(.select2-container--disabled) .form-select:not(.form-select-solid):not(.form-select-transparent), .select2-container--bootstrap5.select2-container--open:not(.select2-container--disabled) .form-select:not(.form-select-solid):not(.form-select-transparent) { + border-color: var(--bs-gray-400); +} +.select2-container--bootstrap5.select2-container--disabled .form-select { + background-color: var(--bs-form-select-disabled-bg); + border-color: var(--bs-gray-300); +} +.select2-container--bootstrap5.select2-container--disabled .form-select .select2-selection__rendered, +.select2-container--bootstrap5.select2-container--disabled .form-select .select2-selection__placeholder { + color: var(--bs-form-select-disabled-color) !important; +} +.select2-container--bootstrap5.select2-container--disabled .form-select.form-select-transparent { + background-color: transparent; + border-color: transparent; +} +.select2-container--bootstrap5 .select2-search.select2-search--inline .select2-search__field { + color: var(--bs-input-color); + font-weight: 500; + font-family: inherit !important; + background-color: transparent; + border: 0; + box-shadow: none; + outline: none; + line-height: 1; + margin: 0; + padding: 0; +} +.select2-container--bootstrap5 .select2-search.select2-search--inline .select2-search__field::placeholder { + color: var(--bs-gray-500); +} +.select2-container--bootstrap5 .select2-search.select2-search--inline .select2-search__field::-moz-placeholder { + color: var(--bs-gray-500); + opacity: 1; +} +.select2-container--bootstrap5 .form-select-solid .select2-search.select2-search--inline .select2-search__field { + color: var(--bs-input-solid-color); + font-family: inherit !important; +} +.select2-container--bootstrap5 .form-select-solid .select2-search.select2-search--inline .select2-search__field::placeholder { + color: var(--bs-input-solid-placeholder-color); +} +.select2-container--bootstrap5 .form-select-solid .select2-search.select2-search--inline .select2-search__field::-moz-placeholder { + color: var(--bs-input-solid-placeholder-color); + opacity: 1; +} +.select2-container--bootstrap5 .select2-selection--single { + display: flex; + align-items: center; +} +.select2-container--bootstrap5 .select2-selection--single .select2-selection__rendered { + display: block; + padding-left: 0; + padding-right: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + color: var(--bs-input-color); +} +.select2-container--bootstrap5 .select2-selection--single .select2-selection__placeholder { + color: var(--bs-input-placeholder-color); +} +.select2-container--bootstrap5 .select2-selection--single.form-select-solid .select2-selection__rendered { + color: var(--bs-input-solid-color); +} +.select2-container--bootstrap5 .select2-selection--single.form-select-solid .select2-selection__placeholder { + color: var(--bs-input-solid-placeholder-color); +} +.select2-container--bootstrap5 .select2-selection--single.form-select-transparent .select2-selection__rendered { + color: var(--bs-gray-800); +} +.select2-container--bootstrap5 .select2-selection--single.form-select-transparent .select2-selection__placeholder { + color: var(--bs-gray-800); +} +.select2-container--bootstrap5 .select2-selection--single.form-select-dark .select2-selection__rendered { + color: var(--bs-gray-900); +} +.select2-container--bootstrap5 .select2-selection--multiple { + display: flex; + align-items: center; +} +.select2-container--bootstrap5 .select2-selection--multiple .select2-search.select2-search--inline { + display: inline-flex; +} +.select2-container--bootstrap5 .select2-selection--multiple .select2-selection__rendered { + display: inline; + margin: 0; + padding: 0; +} +.select2-container--bootstrap5 .select2-selection--multiple .select2-selection__rendered .select2-selection__choice { + display: inline-flex; + align-items: center; + position: relative; + background-color: var(--bs-gray-300); +} +.select2-container--bootstrap5 .select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-700); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-gray-700%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-gray-700%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); + display: block; + position: absolute; + transform: translateY(-50%); + opacity: 0.5; + border: 0; + transition: color 0.2s ease; + top: 50%; +} +.select2-container--bootstrap5 .select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove span { + display: none; +} +.select2-container--bootstrap5 .select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove:hover { + opacity: 1; + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-primary%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-primary%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); + transition: color 0.2s ease; +} +.select2-container--bootstrap5 .select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__display { + font-weight: 500; +} +.select2-container--bootstrap5 .select2-selection--multiple .select2-selection__choice .select2-selection__choice__remove { + height: 0.6rem; + width: 0.6rem; +} +.select2-container--bootstrap5 .select2-selection--multiple.form-select-sm { + min-height: calc(1.5em + 1.1rem + 2px); + padding-top: 0.35rem; + padding-bottom: 0.35rem; +} +.select2-container--bootstrap5 .select2-selection--multiple.form-select-sm .select2-selection__choice { + border-radius: 0.425rem; + padding: 0.1rem 0.35rem; + margin-right: 0.35rem; + margin-top: 0.1rem; + margin-bottom: 0.1rem; +} +.select2-container--bootstrap5 .select2-selection--multiple.form-select-sm .select2-selection__choice .select2-selection__choice__display { + margin-left: 0.95rem; + font-size: 0.95rem; +} +.select2-container--bootstrap5 .select2-selection--multiple.form-select-sm .select2-search__field { + height: 14px; +} +.select2-container--bootstrap5 .select2-selection--multiple:not(.form-select-sm):not(.form-select-lg) { + min-height: calc(1.5em + 1.55rem + 2px); + padding-top: 0.575rem; + padding-bottom: 0.575rem; +} +.select2-container--bootstrap5 .select2-selection--multiple:not(.form-select-sm):not(.form-select-lg) .select2-selection__choice { + border-radius: 0.475rem; + padding: 0.1rem 0.5rem; + margin-right: 0.5rem; + margin-top: 0.1rem; + margin-bottom: 0.1rem; +} +.select2-container--bootstrap5 .select2-selection--multiple:not(.form-select-sm):not(.form-select-lg) .select2-selection__choice .select2-selection__choice__display { + margin-left: 1.1rem; + font-size: 1.1rem; +} +.select2-container--bootstrap5 .select2-selection--multiple:not(.form-select-sm):not(.form-select-lg) .select2-search__field { + height: 16px; +} +.select2-container--bootstrap5 .select2-selection--multiple.form-select-lg { + min-height: calc(1.5em + 1.65rem + 2px); + padding-top: 0.525rem; + padding-bottom: 0.525rem; +} +.select2-container--bootstrap5 .select2-selection--multiple.form-select-lg .select2-selection__choice { + border-radius: 0.625rem; + padding: 0.15rem 0.65rem; + margin-right: 0.65rem; + margin-top: 0.15rem; + margin-bottom: 0.15rem; +} +.select2-container--bootstrap5 .select2-selection--multiple.form-select-lg .select2-selection__choice .select2-selection__choice__display { + margin-left: 1.25rem; + font-size: 1.15rem; +} +.select2-container--bootstrap5 .select2-selection--multiple.form-select-lg .select2-search__field { + height: 18px; +} +.select2-container--bootstrap5 .select2-dropdown { + border: 0; + box-shadow: var(--bs-dropdown-box-shadow); + border-radius: 0.475rem; + padding: 1rem 0; + background-color: var(--bs-dropdown-bg); +} +.modal-open .select2-container--bootstrap5 .select2-dropdown { + z-index: 1056; +} +.select2-container--bootstrap5 .select2-dropdown .select2-search { + padding: 0.5rem 1.25rem; + margin: 0 0 0.5rem 0; +} +.select2-container--bootstrap5 .select2-dropdown .select2-search .select2-search__field { + background-color: var(--bs-body-bg); + padding: 0.55rem 0.75rem; + color: var(--bs-input-color); + font-size: 0.95rem; + border: 1px solid var(--bs-gray-300); + border-radius: 0.425rem; + outline: 0 !important; +} +.select2-container--bootstrap5 .select2-dropdown .select2-search .select2-search__field:focus, .select2-container--bootstrap5 .select2-dropdown .select2-search .select2-search__field:active { + border: 1px solid var(--bs-gray-400); +} +.select2-container--bootstrap5 .select2-dropdown .select2-results__options { + max-height: 250px; + overflow-y: auto; +} +.select2-container--bootstrap5 .select2-dropdown .select2-results__option { + color: var(--bs-gray-700); + transition: color 0.2s ease; + padding: 0.75rem 1.25rem; + margin: 0 0; +} +.select2-container--bootstrap5 .select2-dropdown .select2-results__option.select2-results__option--highlighted { + background-color: var(--bs-component-hover-bg); + color: var(--bs-component-hover-color); + transition: color 0.2s ease; +} +.select2-container--bootstrap5 .select2-dropdown .select2-results__option.select2-results__option--selected { + background-color: var(--bs-component-hover-bg); + color: var(--bs-component-hover-color); + transition: color 0.2s ease; + position: relative; +} +.select2-container--bootstrap5 .select2-dropdown .select2-results__option.select2-results__option--selected:after { + top: 50%; + display: block; + position: absolute; + transform: translateY(-50%); + height: 0.75rem; + width: 0.75rem; + content: ""; + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-component-hover-color); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 11'%3e%3cpath fill='var%28--bs-component-hover-color%29' d='M4.89557 6.49823L2.79487 4.26513C2.26967 3.70683 1.38251 3.70683 0.857309 4.26513C0.375593 4.77721 0.375593 5.57574 0.857309 6.08781L4.74989 10.2257C5.14476 10.6455 5.81176 10.6455 6.20663 10.2257L13.1427 2.85252C13.6244 2.34044 13.6244 1.54191 13.1427 1.02984C12.6175 0.471537 11.7303 0.471536 11.2051 1.02984L6.06096 6.49823C5.74506 6.83403 5.21146 6.83403 4.89557 6.49823Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 11'%3e%3cpath fill='var%28--bs-component-hover-color%29' d='M4.89557 6.49823L2.79487 4.26513C2.26967 3.70683 1.38251 3.70683 0.857309 4.26513C0.375593 4.77721 0.375593 5.57574 0.857309 6.08781L4.74989 10.2257C5.14476 10.6455 5.81176 10.6455 6.20663 10.2257L13.1427 2.85252C13.6244 2.34044 13.6244 1.54191 13.1427 1.02984C12.6175 0.471537 11.7303 0.471536 11.2051 1.02984L6.06096 6.49823C5.74506 6.83403 5.21146 6.83403 4.89557 6.49823Z'/%3e%3c/svg%3e"); + mask-position: center; + -webkit-mask-position: center; + right: 1.25rem; +} +.select2-container--bootstrap5 .select2-dropdown .select2-results__option.select2-results__option--disabled { + color: var(--bs-gray-400); +} +.select2-container--bootstrap5 .select2-dropdown .select2-results__option.select2-results__message { + color: var(--bs-gray-600); +} +.select2-container--bootstrap5 .select2-dropdown .select2-results__option.select2-results__option--group { + padding-left: 0; + padding-right: 0; +} +.select2-container--bootstrap5 .select2-dropdown .select2-results__option.select2-results__option--group .select2-results__group { + display: block; + color: var(--bs-gray-800); + font-weight: 500; + font-size: 1.15rem; + padding: 0 1.25rem 0 1.25rem; + margin: 0 0 0.25rem 0; +} +.select2-container--bootstrap5 .select2-dropdown .select2-results__option.select2-results__option--group .select2-results__option { + padding: 0.75rem 1.25rem; + margin: 0 0; +} +.select2-container--bootstrap5 .select2-selection__clear { + display: block; + height: 0.7rem; + width: 0.7rem; + top: 50%; + right: 3rem; + position: absolute; + transform: translateY(-50%); + background-color: var(--bs-gray-700) !important; + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-700); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-gray-700%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-gray-700%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); +} +.select2-container--bootstrap5 .select2-selection__clear span { + display: none; +} +.select2-container--bootstrap5 .select2-selection__clear:hover { + background-color: var(--bs-primary) !important; + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-primary%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-primary%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); +} + +.form-floating .form-select { + padding-top: 1.85rem !important; +} + +.fv-plugins-message-container { + margin-top: 0.3rem; +} +.fv-plugins-message-container .fv-help-block { + color: var(--bs-danger); + font-size: 1rem; + font-weight: 400; +} +.fv-plugins-message-container.valid-feedback, .fv-plugins-message-container.invalid-feedback { + display: block; + font-weight: 400; +} + +.daterangepicker { + padding: 0; + margin: 0; + border: 0; + width: auto; + background-color: var(--bs-body-bg); + box-shadow: var(--bs-dropdown-box-shadow); + font-family: Inter, Helvetica, "sans-serif"; + z-index: 1000; + border-radius: 0.475rem; +} +.daterangepicker:after, .daterangepicker:before { + display: none; +} +.daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date { + background-color: transparent; +} +.modal-open .daterangepicker { + z-index: 1056; +} +.daterangepicker .calendar-table { + background-color: var(--bs-body-bg); + border: 0; +} +.daterangepicker .ranges { + border-radius: 0.475rem; + background-color: var(--bs-body-bg); + position: relative; + overflow: hidden; +} +.daterangepicker .ranges ul { + padding: 1rem 0; + width: 150px; + overflow: auto; + max-height: 260px; +} +.daterangepicker .ranges li { + padding: 0.7rem 1.75rem; + font-weight: 500; + font-size: 1rem; + color: var(--bs-gray-600); + transition: color 0.2s ease; +} +.daterangepicker .ranges li:hover { + background-color: var(--bs-component-hover-bg); + color: var(--bs-component-hover-color); + transition: color 0.2s ease; +} +.daterangepicker .ranges li.active { + background-color: var(--bs-component-active-bg); + color: var(--bs-component-active-color); + transition: color 0.2s ease; +} +.daterangepicker.show-calendar .ranges { + border-radius: 0; + border-top-left-radius: 0.475rem; + margin-top: 0; + height: 297px; +} +.daterangepicker.show-ranges.show-calendar .ranges { + border-right: 1px solid var(--bs-gray-200); +} +.daterangepicker.show-ranges .drp-calendar.left { + border-left: 0; +} +.daterangepicker .drp-buttons { + padding: 1rem 1.75rem; + border-top: 1px solid var(--bs-gray-200); +} +.daterangepicker .drp-buttons .btn { + font-size: 1rem; + font-weight: 500; + padding: 0.5rem 1rem; +} +.daterangepicker .drp-buttons .cancelBtn { + color: var(--bs-light-inverse); + border-color: var(--bs-light); + background-color: var(--bs-light); +} +.daterangepicker .drp-buttons .cancelBtn i, +.daterangepicker .drp-buttons .cancelBtn .svg-icon { + color: var(--bs-light-inverse); +} +.daterangepicker .drp-buttons .cancelBtn.dropdown-toggle:after { + color: var(--bs-light-inverse); +} +.btn-check:checked + .daterangepicker .drp-buttons .cancelBtn, .btn-check:active + .daterangepicker .drp-buttons .cancelBtn, .daterangepicker .drp-buttons .cancelBtn:focus:not(.btn-active), .daterangepicker .drp-buttons .cancelBtn:hover:not(.btn-active), .daterangepicker .drp-buttons .cancelBtn:active:not(.btn-active), .daterangepicker .drp-buttons .cancelBtn.active, .daterangepicker .drp-buttons .cancelBtn.show, .show > .daterangepicker .drp-buttons .cancelBtn { + color: var(--bs-light-inverse); + border-color: var(--bs-light-active); + background-color: var(--bs-light-active) !important; +} +.btn-check:checked + .daterangepicker .drp-buttons .cancelBtn i, +.btn-check:checked + .daterangepicker .drp-buttons .cancelBtn .svg-icon, .btn-check:active + .daterangepicker .drp-buttons .cancelBtn i, +.btn-check:active + .daterangepicker .drp-buttons .cancelBtn .svg-icon, .daterangepicker .drp-buttons .cancelBtn:focus:not(.btn-active) i, +.daterangepicker .drp-buttons .cancelBtn:focus:not(.btn-active) .svg-icon, .daterangepicker .drp-buttons .cancelBtn:hover:not(.btn-active) i, +.daterangepicker .drp-buttons .cancelBtn:hover:not(.btn-active) .svg-icon, .daterangepicker .drp-buttons .cancelBtn:active:not(.btn-active) i, +.daterangepicker .drp-buttons .cancelBtn:active:not(.btn-active) .svg-icon, .daterangepicker .drp-buttons .cancelBtn.active i, +.daterangepicker .drp-buttons .cancelBtn.active .svg-icon, .daterangepicker .drp-buttons .cancelBtn.show i, +.daterangepicker .drp-buttons .cancelBtn.show .svg-icon, .show > .daterangepicker .drp-buttons .cancelBtn i, +.show > .daterangepicker .drp-buttons .cancelBtn .svg-icon { + color: var(--bs-light-inverse); +} +.btn-check:checked + .daterangepicker .drp-buttons .cancelBtn.dropdown-toggle:after, .btn-check:active + .daterangepicker .drp-buttons .cancelBtn.dropdown-toggle:after, .daterangepicker .drp-buttons .cancelBtn:focus:not(.btn-active).dropdown-toggle:after, .daterangepicker .drp-buttons .cancelBtn:hover:not(.btn-active).dropdown-toggle:after, .daterangepicker .drp-buttons .cancelBtn:active:not(.btn-active).dropdown-toggle:after, .daterangepicker .drp-buttons .cancelBtn.active.dropdown-toggle:after, .daterangepicker .drp-buttons .cancelBtn.show.dropdown-toggle:after, .show > .daterangepicker .drp-buttons .cancelBtn.dropdown-toggle:after { + color: var(--bs-light-inverse); +} +.daterangepicker .drp-selected { + font-size: 0.9rem; +} +.daterangepicker .drp-calendar.left, .daterangepicker .drp-calendar.right { + padding: 1rem 1rem; +} +.daterangepicker .drp-calendar.left { + border-left: 0 !important; +} +.daterangepicker .drp-calendar th, +.daterangepicker .drp-calendar td { + font-size: 1rem; + font-weight: 400; + width: 33px; + height: 33px; +} +.daterangepicker .drp-calendar th.available:hover, +.daterangepicker .drp-calendar td.available:hover { + border-radius: 0.475rem; + background-color: var(--bs-component-hover-bg); + color: var(--bs-component-hover-color); +} +.daterangepicker .drp-calendar th { + font-weight: 500; + color: var(--bs-gray-800); +} +.daterangepicker .drp-calendar th.month { + font-weight: 500; + color: var(--bs-gray-800); +} +.daterangepicker .drp-calendar th.next span, .daterangepicker .drp-calendar th.prev span { + border-width: 0 1px 1px 0; + border-color: var(--bs-gray-600); +} +.daterangepicker .drp-calendar th.next.available:hover span, .daterangepicker .drp-calendar th.prev.available:hover span { + border-color: var(--bs-component-hover-color); +} +.daterangepicker .drp-calendar th.next span { + margin-right: 1px; +} +.daterangepicker .drp-calendar th.prev span { + margin-left: 1px; +} +.daterangepicker .drp-calendar td { + color: var(--bs-gray-700); +} +.daterangepicker .drp-calendar td.available.off { + color: var(--bs-gray-400); +} +.daterangepicker .drp-calendar td.active { + background-color: var(--bs-component-active-bg) !important; + color: var(--bs-component-active-color) !important; + border-radius: 0.475rem; +} +.daterangepicker .drp-calendar td.active.start-date { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.daterangepicker .drp-calendar td.active.end-date { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.daterangepicker .drp-calendar td.active.start-date.end-date { + border-radius: 0.475rem; +} +.daterangepicker .drp-calendar td.today, .daterangepicker .drp-calendar td.today.active { + background: var(--bs-component-hover-bg) !important; + color: var(--bs-component-hover-color) !important; + border-radius: 0.475rem; +} +.daterangepicker .drp-calendar td.in-range.available:not(.active):not(.off):not(.today) { + background-color: var(--bs-component-hover-bg); + color: var(--bs-component-hover-color); +} +.daterangepicker .drp-calendar td:hover { + background-color: var(--bs-component-hover-bg); + color: var(--bs-component-hover-color); +} +.daterangepicker select.ampmselect, +.daterangepicker select.minuteselect, +.daterangepicker select.hourselect, +.daterangepicker select.monthselect, +.daterangepicker select.yearselect { + padding-top: 0.35rem; + padding-bottom: 0.35rem; + border-radius: 0.475rem; + background-color: var(--bs-body-bg) !important; + border-color: transparent; + color: var(--bs-input-color); + font-weight: 500; + outline: 0 !important; +} +.daterangepicker select.ampmselect:focus, +.daterangepicker select.minuteselect:focus, +.daterangepicker select.hourselect:focus, +.daterangepicker select.monthselect:focus, +.daterangepicker select.yearselect:focus { + background-color: var(--bs-gray-100); +} + +@media (max-width: 767.98px) { + .daterangepicker.show-calendar .ranges { + float: none !important; + height: auto !important; + } + .daterangepicker.show-calendar .ranges ul { + width: 100%; + } + .daterangepicker.show-calendar .drp-calendar { + float: none !important; + max-width: unset !important; + display: flex; + flex-direction: column; + align-items: center; + } +} +.flatpickr-calendar { + width: 280px !important; + font-family: inherit; + border: 0; + border-radius: 0; + box-shadow: var(--bs-dropdown-box-shadow); + background-color: var(--bs-body-bg); + border-radius: 0.475rem; +} +.flatpickr-calendar:before, .flatpickr-calendar:after { + display: none; +} +.flatpickr-calendar.hasWeeks { + width: 325px !important; +} + +.flatpickr-months { + padding: 0 1rem; + padding-top: 0.5rem; +} + +.flatpickr-innerContainer { + padding: 0.5rem 1rem; +} + +.flatpickr-days, +.dayContainer { + width: 100% !important; + min-width: 100% !important; + max-width: 100% !important; +} + +.flatpickr-months .flatpickr-month { + background: transparent; + color: var(--bs-gray-600); + fill: var(--bs-gray-600); + height: 46px; +} +.flatpickr-months .flatpickr-prev-month, +.flatpickr-months .flatpickr-next-month { + display: flex; + align-items: center; + justify-content: center; + border-radius: 0.475rem; + top: 1rem; +} +.flatpickr-months .flatpickr-prev-month svg, +.flatpickr-months .flatpickr-next-month svg { + fill: var(--bs-gray-500); + height: 13px; + width: 13px; +} +.flatpickr-months .flatpickr-prev-month:hover, +.flatpickr-months .flatpickr-next-month:hover { + background: var(--bs-gray-100); +} +.flatpickr-months .flatpickr-prev-month:hover svg, +.flatpickr-months .flatpickr-next-month:hover svg { + fill: var(--bs-gray-700); +} +.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month, +.flatpickr-months .flatpickr-next-month.flatpickr-prev-month { + /*rtl:begin:ignore*/ + left: 1rem; + /*rtl:end:ignore*/ +} +.flatpickr-months .flatpickr-prev-month.flatpickr-next-month, +.flatpickr-months .flatpickr-next-month.flatpickr-next-month { + /*rtl:begin:ignore*/ + right: 1rem; + /*rtl:end:ignore*/ +} + +.flatpickr-current-month { + font-weight: 500; + color: inherit; +} +.flatpickr-current-month .numInputWrapper { + border-radius: 0.475rem; + width: 65px; +} +.flatpickr-current-month .numInputWrapper span.arrowUp { + border-top-right-radius: 0.475rem; +} +.flatpickr-current-month .numInputWrapper span.arrowDown { + border-bottom-right-radius: 0.475rem; +} +.flatpickr-current-month .flatpickr-monthDropdown-months { + border: 0 !important; + background-color: var(--bs-body-bg); + font-size: 1rem; + color: var(--bs-gray-700); + font-weight: 500; + padding: 0.5rem 0.75rem; + margin-right: 0.5rem; + outline: none !important; + border-radius: 0.475rem; + appearance: none; + -moz-appearance: none; + -webkit-appearance: none; +} +.flatpickr-current-month .flatpickr-monthDropdown-months:hover { + background: var(--bs-gray-100); +} +.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month { + font-size: 1rem; + color: var(--bs-gray-700); + font-weight: 500; + background-color: transparent; + outline: none; + padding: 0; +} +.flatpickr-current-month span.cur-month { + color: var(--bs-gray-700); + font-size: 1rem; + font-weight: 500; +} +.flatpickr-current-month span.cur-month:hover { + background: var(--bs-gray-100); +} +.flatpickr-current-month input.cur-year { + color: var(--bs-gray-700); + font-size: 1.1rem; + padding: 0.5rem 0.75rem; + font-weight: 500; + outline: 0 !important; +} + +span.flatpickr-weekday { + color: var(--bs-gray-800); + font-size: 1rem; + font-weight: 600; +} + +.flatpickr-time { + border-bottom-right-radius: 0.475rem; + border-bottom-left-radius: 0.475rem; +} +.flatpickr-calendar.hasTime .flatpickr-time { + height: height; + line-height: height; + max-height: height; + border-top: 1px solid var(--bs-gray-100); +} +.flatpickr-time .numInputWrapper { + height: height; +} +.flatpickr-time .flatpickr-am-pm { + color: var(--bs-gray-700); + font-size: 1rem; + font-weight: 500; +} +.flatpickr-time input.flatpickr-hour, .flatpickr-time input.flatpickr-minute { + color: var(--bs-gray-700); + font-size: 1rem; + font-weight: 500; +} +.flatpickr-time input:hover, +.flatpickr-time .flatpickr-am-pm:hover, +.flatpickr-time input:focus, +.flatpickr-time .flatpickr-am-pm:focus { + background: transparent; +} + +.numInputWrapper span { + border-left: 0 !important; + border-top: 0 !important; + border-bottom: 0 !important; + border-right: 0 !important; +} +.numInputWrapper span:hover { + background: transparent !important; +} +.numInputWrapper span:after { + top: 50% !important; + transform: translateY(-50%); +} +.numInputWrapper span.arrowUp:after { + border-bottom-color: var(--bs-gray-500) !important; +} +.numInputWrapper span.arrowUp:hover:after { + border-bottom-color: var(--bs-gray-700) !important; +} +.numInputWrapper span.arrowDown:after { + border-top-color: var(--bs-gray-500) !important; +} +.numInputWrapper span.arrowDown:hover:after { + border-top-color: var(--bs-gray-700) !important; +} +.numInputWrapper:hover { + background: transparent; +} + +.flatpickr-day { + font-size: 1rem; + border-radius: 0.475rem; + box-shadow: none !important; + height: 36px; + width: 100%; + max-width: 100% !important; + margin: 0; + line-height: 36px; + color: var(--bs-gray-600); + margin-top: 0 !important; +} +.flatpickr-day.inRange, .flatpickr-day.prevMonthDay.inRange, .flatpickr-day.nextMonthDay.inRange, .flatpickr-day.today.inRange, .flatpickr-day.prevMonthDay.today.inRange, .flatpickr-day.nextMonthDay.today.inRange, .flatpickr-day:hover, .flatpickr-day.prevMonthDay:hover, .flatpickr-day.nextMonthDay:hover, .flatpickr-day:focus, .flatpickr-day.prevMonthDay:focus, .flatpickr-day.nextMonthDay:focus { + cursor: pointer; + outline: 0; + background: var(--bs-component-hover-bg); + color: var(--bs-component-hover-color); + border-color: transparent; +} +.flatpickr-day.today { + background: var(--bs-gray-100); + color: var(--bs-gray-600); + border-color: transparent; +} +.flatpickr-day.today:hover, .flatpickr-day.today:focus { + border-color: transparent; + background: var(--bs-gray-200); + color: var(--bs-gray-700); +} +.flatpickr-day.selected, .flatpickr-day.startRange, .flatpickr-day.endRange, .flatpickr-day.selected.inRange, .flatpickr-day.startRange.inRange, .flatpickr-day.endRange.inRange, .flatpickr-day.selected:focus, .flatpickr-day.startRange:focus, .flatpickr-day.endRange:focus, .flatpickr-day.selected:hover, .flatpickr-day.startRange:hover, .flatpickr-day.endRange:hover, .flatpickr-day.selected.prevMonthDay, .flatpickr-day.startRange.prevMonthDay, .flatpickr-day.endRange.prevMonthDay, .flatpickr-day.selected.nextMonthDay, .flatpickr-day.startRange.nextMonthDay, .flatpickr-day.endRange.nextMonthDay { + background: var(--bs-component-active-bg); + color: var(--bs-component-active-color); + border-color: transparent; +} +.flatpickr-day.inRange, .flatpickr-day.prevMonthDay.inRange, .flatpickr-day.nextMonthDay.inRange, .flatpickr-day.today.inRange, .flatpickr-day.prevMonthDay.today.inRange, .flatpickr-day.nextMonthDay.today.inRange, .flatpickr-day:hover, .flatpickr-day.prevMonthDay:hover, .flatpickr-day.nextMonthDay:hover, .flatpickr-day:focus, .flatpickr-day.prevMonthDay:focus, .flatpickr-day.nextMonthDay:focus { + cursor: pointer; + outline: 0; + background: var(--bs-component-hover-bg); + color: var(--bs-component-hover-color); + border-color: transparent; +} +.flatpickr-day.today { + border-color: transparent; +} +.flatpickr-day.today:hover, .flatpickr-day.today:focus { + border-color: transparent; + background: var(--bs-gray-100); + color: var(--bs-gray-600); +} +.flatpickr-day.selected, .flatpickr-day.startRange, .flatpickr-day.endRange, .flatpickr-day.selected.inRange, .flatpickr-day.startRange.inRange, .flatpickr-day.endRange.inRange, .flatpickr-day.selected:focus, .flatpickr-day.startRange:focus, .flatpickr-day.endRange:focus, .flatpickr-day.selected:hover, .flatpickr-day.startRange:hover, .flatpickr-day.endRange:hover, .flatpickr-day.selected.prevMonthDay, .flatpickr-day.startRange.prevMonthDay, .flatpickr-day.endRange.prevMonthDay, .flatpickr-day.selected.nextMonthDay, .flatpickr-day.startRange.nextMonthDay, .flatpickr-day.endRange.nextMonthDay { + background: var(--bs-component-active-bg); + color: var(--bs-component-active-color); + border-color: transparent; +} +.flatpickr-day.flatpickr-disabled, .flatpickr-day.flatpickr-disabled:hover, .flatpickr-day.prevMonthDay, .flatpickr-day.nextMonthDay, .flatpickr-day.notAllowed, .flatpickr-day.notAllowed.prevMonthDay, .flatpickr-day.notAllowed.nextMonthDay { + color: var(--bs-gray-400); + background: transparent; + border-color: transparent; +} +.flatpickr-day.flatpickr-disabled, .flatpickr-day.flatpickr-disabled:hover { + cursor: not-allowed; + color: var(--bs-gray-400); +} + +.flatpickr-weekwrapper { + margin-right: 5px; +} + +.tagify { + --tagify-dd-bg-color: var(--bs-body-bg); + --tags-border-color: var(--bs-gray-300); + --tags-hover-border-color: var(--bs-gray-300); + --tags-focus-border-color: var(--bs-gray-400); + --tag-bg: var(--bs-gray-200); + --tag-hover: var(--bs-gray-200); + --tag-text-color: var(--bs-gray-700); + --tag-text-color--edit: var(--bs-gray-700); + --tag-pad: 0 0.5rem; + --tag-inset-shadow-size: 1rem; + --tag-invalid-color: var(--bs-danger); + --tag-invalid-bg: var(--bs-danger-light); + --tag-remove-bg: var(--bs-gray-200); + --tag-remove-btn-color: transparent; + --tag-remove-btn-bg: transparent; + --tag-remove-btn-bg--hover: transparent; + --input-color: var(--bs-gray-700); + --placeholder-color: var(--bs-gray-400); + --placeholder-color-focus: var(--bs-gray-500); + --loader-size: .8rem; +} +.tagify .tagify__tag { + background-color: var(--tag-bg); + margin: 0; + line-height: 1; +} +.tagify .tagify__tag div { + border-radius: inherit; +} +.tagify .tagify__tag .tagify__tag-text { + overflow: visible; +} +.tagify .tagify__tag .tagify__tag__removeBtn { + width: 0.6rem; + height: 0.6rem; + margin: 0 0.5rem 0 0; + border-radius: 0; + content: " "; + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-500); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-gray-500%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-gray-500%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); +} +.tagify .tagify__tag .tagify__tag__removeBtn:after { + display: none; +} +.tagify .tagify__tag .tagify__tag__removeBtn:hover { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-primary%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-primary%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); +} +.tagify .tagify__tag.tagify--notAllowed div .tagify__tag-text { + color: var(--bs-danger); + opacity: 0.5; +} +.tagify .tagify__tag.tagify--notAllowed .tagify__tag__removeBtn { + opacity: 0.5; + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-danger); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-danger%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-danger%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); +} +.tagify .tagify__tag.tagify--notAllowed .tagify__tag__removeBtn:hover { + background: transparent; + opacity: 0.75; +} +.tagify .tagify__input { + margin: 0; +} +.tagify .tagify__input:before { + font-size: inherit; + line-height: inherit; + font-weight: inherit; +} +.tagify.form-control { + display: flex; + align-items: center; + gap: 0.25rem; +} +.tagify.form-control-sm { + border-radius: 0.425rem; + min-height: calc(1.5em + 1.1rem + 2px); + padding-top: 0.25rem; + padding-bottom: 0.25rem; +} +.tagify.form-control-sm .tagify__tag { + padding: 0.3rem 0.3rem; + border-radius: 0.425rem; +} +.tagify.form-control-sm .tagify__tag .tagify__tag-text { + font-size: 0.95rem; +} +.tagify:not(.form-control-sm):not(.form-control-lg) { + border-radius: 0.475rem; + min-height: calc(1.5em + 1.55rem + 2px); + padding-top: 0.375rem; + padding-bottom: 0.375rem; +} +.tagify:not(.form-control-sm):not(.form-control-lg) .tagify__tag { + padding: 0.4rem 0.4rem; + border-radius: 0.475rem; +} +.tagify:not(.form-control-sm):not(.form-control-lg) .tagify__tag .tagify__tag-text { + font-size: 1.1rem; +} +.tagify.form-control-lg { + border-radius: 0.625rem; + min-height: calc(1.5em + 1.65rem + 2px); + padding-top: 0.325rem; + padding-bottom: 0.325rem; +} +.tagify.form-control-lg .tagify__tag { + padding: 0.5rem 0.5rem; + border-radius: 0.625rem; +} +.tagify.form-control-lg .tagify__tag .tagify__tag-text { + font-size: 1.15rem; +} + +.tagify__dropdown { + box-shadow: var(--bs-dropdown-box-shadow); + border: 0 !important; + outline: none !important; + padding: 0.75rem 0; + z-index: 1000; + background-color: var(--bs-body-bg); + border-radius: 0.475rem; +} +.tagify__dropdown ._wrapper { + max-height: none; + border-radius: 0.475rem; +} +.modal-open .tagify__dropdown { + z-index: 1056; +} +.tagify__dropdown .tagify__dropdown__wrapper { + background-color: var(--bs-body-bg); + border: 0 !important; + outline: none !important; + box-shadow: none; +} +.tagify__dropdown .tagify__dropdown__item { + color: var(--bs-gray-700); + border-radius: 0; + padding: 0.75rem 1.5rem; + margin: 0; + box-shadow: none; + font-weight: 500; +} +.tagify__dropdown .tagify__dropdown__item:hover, .tagify__dropdown .tagify__dropdown__item.tagify__dropdown__item--active { + background-color: var(--bs-component-hover-bg); + color: var(--bs-component-hover-color); +} +.tagify__dropdown.tagify__inline__suggestions { + padding: 0.775rem 1rem; +} +.tagify__dropdown.tagify__inline__suggestions .tagify__dropdown__item { + display: inline-block; + font-size: 0.95rem; + padding: 0.35rem 0.5rem; + margin: 0.25rem 0.5rem 0.25rem 0; + background-color: var(--bs-gray-200); + color: var(--bs-gray-700); + border-radius: 0.475rem; +} +.tagify__dropdown.tagify__inline__suggestions .tagify__dropdown__item:hover, .tagify__dropdown.tagify__inline__suggestions .tagify__dropdown__item.tagify__dropdown__item--active { + background-color: var(--bs-component-hover-bg); + color: var(--bs-component-hover-color); +} + +.bootstrap-maxlength { + z-index: 1040 !important; +} +.modal-open .bootstrap-maxlength { + z-index: 1060 !important; +} +.bootstrap-maxlength.badge { + display: inline-flex !important; +} + +.ck-target { + display: none; +} + +.ck-toolbar { + border-radius: 0.475rem !important; +} + +.ck-content { + min-height: 200px; + border-radius: 0.475rem !important; +} +.ck-content.ck-focused { + border-color: var(--bs-primary) !important; + box-shadow: none !important; +} + +.ck-editor .ck-toolbar { + border-top-left-radius: 0.475rem !important; + border-top-right-radius: 0.475rem !important; + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} +.ck-editor .ck-content { + border-bottom-right-radius: 0.475rem !important; + border-bottom-left-radius: 0.475rem !important; + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; +} + +.ck-body .ck-balloon-panel .ck-content { + min-height: 200px; + border-color: transparent !important; +} +.ck-body .ck-balloon-panel .ck-content.ck-focused { + border-color: var(--bs-primary) !important; +} +.ck-body .ck-balloon-panel.ck-toolbar-container, +.ck-body .ck-balloon-panel .ck-toolbar { + border-radius: 0.475rem !important; +} + +table.dataTable { + width: 100% !important; + margin: 0 !important; +} +table.dataTable th { + border-bottom-color: var(--bs-table-border-color); +} + +div.dataTables_wrapper div.dataTables_length { + padding: 1rem 0; +} + +div.dataTables_wrapper div.dataTables_filter { + padding: 1rem 0; +} + +div.dataTables_wrapper div.dataTables_info { + display: flex; + flex-direction: column; + font-weight: 500; + color: var(--bs-gray-700); + padding: 1rem 0; +} +div.dataTables_wrapper div.dataTables_info .select-info, +div.dataTables_wrapper div.dataTables_info .select-item { + margin-left: 0; + font-size: 0.9rem; + color: var(--bs-text-muted); +} + +div.dataTables_length + div.dataTables_info { + margin-left: 1rem; +} + +div.dataTables_wrapper div.dataTables_paginate { + padding: 1rem 0; + margin-left: 0.5rem; +} +div.dataTables_wrapper div.dataTables_paginate .pagination { + margin: 0; +} + +table.dataTable > thead > tr > td:not(.sorting_disabled), table.dataTable > thead > tr > th:not(.sorting_disabled) { + padding-right: 0; +} + +table.dataTable > thead .sorting:after, table.dataTable > thead .sorting:before { + display: none !important; +} +table.dataTable > thead .sorting_asc, +table.dataTable > thead .sorting_desc { + vertical-align: middle; +} +table.dataTable > thead .sorting_asc:before, table.dataTable > thead .sorting_asc:after, +table.dataTable > thead .sorting_desc:before, +table.dataTable > thead .sorting_desc:after { + position: relative !important; + opacity: 1 !important; + display: inline-block !important; + width: 0.75rem; + height: 0.75rem; + content: " " !important; + bottom: auto; + right: auto !important; + left: auto; + margin-left: 0.5rem; +} +table.dataTable > thead .sorting_asc:before, +table.dataTable > thead .sorting_desc:before { + display: none !important; +} + +table.dataTable > thead .sorting_asc:after { + opacity: 1; + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-muted); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-muted%29'%3e%3cpath d='M3.23571 2.72011L4.97917 4.46358C5.15176 4.63618 5.43158 4.63617 5.60417 4.46358C5.77676 4.29099 5.77676 4.01118 5.60417 3.83861L3.29463 1.52904C3.13192 1.36629 2.86809 1.36629 2.70538 1.52904L0.395812 3.83861C0.22325 4.01117 0.22325 4.29099 0.395812 4.46358C0.568437 4.63617 0.84825 4.63617 1.02081 4.46358L2.76429 2.72011C2.89446 2.58994 3.10554 2.58994 3.23571 2.72011Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-muted%29'%3e%3cpath d='M3.23571 2.72011L4.97917 4.46358C5.15176 4.63618 5.43158 4.63617 5.60417 4.46358C5.77676 4.29099 5.77676 4.01118 5.60417 3.83861L3.29463 1.52904C3.13192 1.36629 2.86809 1.36629 2.70538 1.52904L0.395812 3.83861C0.22325 4.01117 0.22325 4.29099 0.395812 4.46358C0.568437 4.63617 0.84825 4.63617 1.02081 4.46358L2.76429 2.72011C2.89446 2.58994 3.10554 2.58994 3.23571 2.72011Z'/%3e%3c/svg%3e"); +} + +table.dataTable > thead .sorting_desc:after { + opacity: 1; + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-text-muted); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-muted%29'%3e%3cpath d='M2.76429 3.27989L1.02083 1.53642C0.848244 1.36382 0.568419 1.36383 0.395831 1.53642C0.223244 1.70901 0.223244 1.98882 0.395831 2.16139L2.70537 4.47096C2.86808 4.63371 3.13191 4.63371 3.29462 4.47096L5.60419 2.16139C5.77675 1.98883 5.77675 1.70901 5.60419 1.53642C5.43156 1.36383 5.15175 1.36383 4.97919 1.53642L3.23571 3.27989C3.10554 3.41006 2.89446 3.41006 2.76429 3.27989Z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6' fill='var%28--bs-text-muted%29'%3e%3cpath d='M2.76429 3.27989L1.02083 1.53642C0.848244 1.36382 0.568419 1.36383 0.395831 1.53642C0.223244 1.70901 0.223244 1.98882 0.395831 2.16139L2.70537 4.47096C2.86808 4.63371 3.13191 4.63371 3.29462 4.47096L5.60419 2.16139C5.77675 1.98883 5.77675 1.70901 5.60419 1.53642C5.43156 1.36383 5.15175 1.36383 4.97919 1.53642L3.23571 3.27989C3.10554 3.41006 2.89446 3.41006 2.76429 3.27989Z'/%3e%3c/svg%3e"); +} + +div.dataTables_wrapper .table-responsive { + position: relative; +} +div.dataTables_wrapper div.dataTables_processing { + border-radius: 0.475rem; + box-shadow: var(--bs-dropdown-box-shadow); + background-color: var(--bs-tooltip-bg); + color: var(--bs-gray-700); + font-weight: 500; + margin: 0 !important; + width: auto; + padding: 1rem 2rem !important; + transform: translateX(-50%) translateY(-50%); +} +div.dataTables_wrapper div.dataTables_processing > div { + display: none; +} + +table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control:before, +table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control:before, +table.dataTable.dtr-column.collapsed > tbody > tr > td.dtr-control:before, +table.dataTable.dtr-column.collapsed > tbody > tr > th.dtr-control:before { + top: 50%; + left: 0; + height: 1.35rem; + width: 1.35rem; + line-height: 1.5; + text-indent: -999px !important; + margin-top: -0.675rem; + margin-right: 0.675rem; + display: inline-block; + position: relative; + font-size: 1.05rem; + border: 0; + box-shadow: none; + mask-size: 85%; + -webkit-mask-size: 85%; + content: "."; +} +:root table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control:before, [data-bs-theme=light] table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control:before, +:root table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control:before, +[data-bs-theme=light] table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control:before, +:root table.dataTable.dtr-column.collapsed > tbody > tr > td.dtr-control:before, +[data-bs-theme=light] table.dataTable.dtr-column.collapsed > tbody > tr > td.dtr-control:before, +:root table.dataTable.dtr-column.collapsed > tbody > tr > th.dtr-control:before, +[data-bs-theme=light] table.dataTable.dtr-column.collapsed > tbody > tr > th.dtr-control:before { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: #7E8299; + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'%3e%3crect opacity='0.3' x='2' y='2' width='20' height='20' rx='5' fill='%237E8299'/%3e%3crect x='10.8891' y='17.8033' width='12' height='2' rx='1' transform='rotate%28-90 10.8891 17.8033%29' fill='%237E8299'/%3e%3crect x='6.01041' y='10.9247' width='12' height='2' rx='1' fill='%237E8299'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'%3e%3crect opacity='0.3' x='2' y='2' width='20' height='20' rx='5' fill='%237E8299'/%3e%3crect x='10.8891' y='17.8033' width='12' height='2' rx='1' transform='rotate%28-90 10.8891 17.8033%29' fill='%237E8299'/%3e%3crect x='6.01041' y='10.9247' width='12' height='2' rx='1' fill='%237E8299'/%3e%3c/svg%3e"); +} +[data-bs-theme=dark] table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control:before, +[data-bs-theme=dark] table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control:before, +[data-bs-theme=dark] table.dataTable.dtr-column.collapsed > tbody > tr > td.dtr-control:before, +[data-bs-theme=dark] table.dataTable.dtr-column.collapsed > tbody > tr > th.dtr-control:before { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: #6D6D80; + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'%3e%3crect opacity='0.3' x='2' y='2' width='20' height='20' rx='5' fill='%236D6D80'/%3e%3crect x='10.8891' y='17.8033' width='12' height='2' rx='1' transform='rotate%28-90 10.8891 17.8033%29' fill='%236D6D80'/%3e%3crect x='6.01041' y='10.9247' width='12' height='2' rx='1' fill='%236D6D80'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'%3e%3crect opacity='0.3' x='2' y='2' width='20' height='20' rx='5' fill='%236D6D80'/%3e%3crect x='10.8891' y='17.8033' width='12' height='2' rx='1' transform='rotate%28-90 10.8891 17.8033%29' fill='%236D6D80'/%3e%3crect x='6.01041' y='10.9247' width='12' height='2' rx='1' fill='%236D6D80'/%3e%3c/svg%3e"); +} +table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control.dtr-control-last:before, +table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control.dtr-control-last:before, +table.dataTable.dtr-column.collapsed > tbody > tr > td.dtr-control.dtr-control-last:before, +table.dataTable.dtr-column.collapsed > tbody > tr > th.dtr-control.dtr-control-last:before { + left: 100%; + right: 0; +} + +table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td.dtr-control:before, +table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th.dtr-control:before, +table.dataTable.dtr-column.collapsed > tbody > tr.parent > td.dtr-control:before, +table.dataTable.dtr-column.collapsed > tbody > tr.parent > th.dtr-control:before { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: #009ef7; + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'%3e%3crect opacity='0.3' x='2' y='2' width='20' height='20' rx='5' fill='%23009ef7'/%3e%3crect x='6.0104' y='10.9247' width='12' height='2' rx='1' fill='%23009ef7'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'%3e%3crect opacity='0.3' x='2' y='2' width='20' height='20' rx='5' fill='%23009ef7'/%3e%3crect x='6.0104' y='10.9247' width='12' height='2' rx='1' fill='%23009ef7'/%3e%3c/svg%3e"); +} + +table.dataTable > tbody > tr.child span.dtr-title { + display: inline-block; + min-width: 100px; + font-weight: 500; +} + +table.dataTable > tbody > tr.child span.dtr-data { + font-weight: 400; +} + +table.dataTable.table-striped > tbody > tr.odd > * { + box-shadow: inset 0 0 0 9999px var(--bs-table-striped-bg); +} + +table.dataTable > tbody > tr.selected > * { + box-shadow: inset 0 0 0 9999px var(--bs-primary); + color: var(--bs-primary-inverse); +} +table.dataTable > tbody > tr.selected > * a:not([class=btn]) { + color: var(--bs-primary-light); + font-weight: 500; + text-decoration: underline; + text-decoration-style: dotted; +} +table.dataTable > tbody > tr.selected > * a:not([class=btn]):hover { + color: var(--bs-primary-inverse); +} + +div.dataTables_scrollBody { + border-left: 0 !important; +} + +.dataTables_scroll .dataTables_scrollBody .table thead { + line-height: 0; +} +.dataTables_scroll .dataTables_scrollBody .table thead .sorting:after, .dataTables_scroll .dataTables_scrollBody .table thead .sorting:before { + display: none !important; +} + +div.dtfc-right-top-blocker, +div.dtfc-left-top-blocker { + background-color: var(--bs-body-bg); +} + +table.dataTable thead tr > .dtfc-fixed-left, +table.dataTable thead tr > .dtfc-fixed-right { + background-color: var(--bs-body-bg); +} + +table.dataTable tbody tr > .dtfc-fixed-left, +table.dataTable tbody tr > .dtfc-fixed-right { + background-color: var(--bs-body-bg); +} + +.dropzone { + min-height: auto; + padding: 1.5rem 1.75rem; + text-align: center; + cursor: pointer; + border: 1px dashed var(--bs-primary); + background-color: var(--bs-primary-light); + border-radius: 0.475rem !important; +} +.dropzone .dz-message { + margin: 0; + display: flex; + text-align: left; +} +.dropzone .dz-preview { + border-radius: 0.475rem !important; + margin: 0.75rem; +} +.dropzone .dz-preview .dz-image { + border-radius: 0.475rem !important; + z-index: 1; +} +.dropzone .dz-preview.dz-file-preview .dz-image { + background: var(--bs-gray-200); +} +.dropzone .dz-success-mark, +.dropzone .dz-error-mark { + margin-left: -20px !important; + margin-top: -20px !important; +} +.dropzone .dz-success-mark svg, +.dropzone .dz-error-mark svg { + height: 40px !important; + width: 40px !important; +} +.dropzone .dz-remove { + display: flex; + justify-content: center; + align-items: center; + height: 1.65rem; + width: 1.65rem; + font-size: 1rem; + text-indent: -9999px; + white-space: nowrap; + position: absolute; + z-index: 2; + background-color: var(--bs-body-bg) !important; + box-shadow: var(--bs-box-shadow); + border-radius: 100%; + top: -0.825rem; + right: -0.825rem; +} +.dropzone .dz-remove:after { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + display: block; + content: ""; + mask-size: 40%; + -webkit-mask-size: 40%; + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-gray-600); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-gray-600%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-gray-600%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); +} +.dropzone .dz-remove:hover:after { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-primary); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-primary%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-primary%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); +} +.dropzone .dz-error-message { + color: var(--bs-danger-inverse); + background: var(--bs-danger); +} + +.dropzone.dropzone-queue { + border: 0; + padding: 0; + background-color: transparent; + text-align: left; +} +.dropzone.dropzone-queue .dz-message { + display: none; +} +.dropzone.dropzone-queue .dropzone-panel .dropzone-upload, +.dropzone.dropzone-queue .dropzone-panel .dropzone-remove-all { + display: none; +} +.dropzone.dropzone-queue .dropzone-item { + display: flex; + align-items: center; + margin-top: 0.75rem; + border-radius: 0.475rem; + padding: 0.5rem 1rem; + background-color: var(--bs-gray-100); +} +.dropzone.dropzone-queue .dropzone-item .dropzone-file { + flex-grow: 1; +} +.dropzone.dropzone-queue .dropzone-item .dropzone-file .dropzone-filename { + font-size: 0.9rem; + font-weight: 500; + color: var(--bs-gray-600); + text-overflow: ellipsis; + margin-right: 0.5rem; +} +.dropzone.dropzone-queue .dropzone-item .dropzone-file .dropzone-filename:hover { + color: var(--bs-primary); +} +.dropzone.dropzone-queue .dropzone-item .dropzone-file .dropzone-error { + margin-top: 0.25rem; + font-size: 0.9rem; + font-weight: 400; + color: var(--bs-danger); + text-overflow: ellipsis; +} +.dropzone.dropzone-queue .dropzone-item .dropzone-progress { + width: 15%; +} +.dropzone.dropzone-queue .dropzone-item .dropzone-progress .progress { + height: 5px; + transition: all 0.2s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .dropzone.dropzone-queue .dropzone-item .dropzone-progress .progress { + transition: none; + } +} +.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar { + margin-left: 1rem; + display: flex; + flex-wrap: nowrap; +} +.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-start, +.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-cancel, +.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-delete { + height: 25px; + width: 25px; + display: inline-flex; + align-items: center; + justify-content: center; + cursor: pointer; + transition: color 0.2s ease; +} +.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-start i, +.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-cancel i, +.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-delete i { + transition: color 0.2s ease; + font-size: 0.8rem; + color: var(--bs-gray-600); +} +.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-start:hover, +.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-cancel:hover, +.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-delete:hover { + transition: color 0.2s ease; +} +.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-start:hover i, +.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-cancel:hover i, +.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-delete:hover i { + color: var(--bs-primary); +} +.dropzone.dropzone-queue .dropzone-item .dropzone-toolbar .dropzone-start { + transition: color 0.2s ease; +} + +.gmaps { + /* important! bootstrap sets max-width on img to 100% which conflicts with google map canvas*/ +} +.gmaps img { + max-width: none; +} +.gmaps.gmaps-static > div { + background-repeat: no-repeat; + background-position: 50% 50%; + display: block; +} + +.noUi-target { + border: 0; + background: var(--bs-gray-100); + box-shadow: none; +} +.noUi-target.noUi-horizontal { + height: 15px; +} +.noUi-target.noUi-horizontal .noUi-handle { + width: 24px; + height: 24px; + top: -4.5px; + border-radius: 50%; + outline: none; +} +.noUi-target.noUi-horizontal .noUi-handle::before { + display: none; +} +.noUi-target.noUi-horizontal .noUi-handle::after { + display: none; +} +.noUi-target.noUi-vertical { + height: 150px; + width: 15px; +} +.noUi-target.noUi-vertical .noUi-handle { + width: 24px; + height: 24px; + right: -4.5px; + border-radius: 50%; + outline: none; +} +.noUi-target.noUi-vertical .noUi-handle::before { + display: none; +} +.noUi-target.noUi-vertical .noUi-handle::after { + display: none; +} +.noUi-target .noUi-connect { + background: var(--bs-component-active-bg); +} +.noUi-target .noUi-handle { + background-color: #ffffff; + border: 1px solid var(--bs-gray-200); + box-shadow: var(--bs-box-shadow-sm); +} +.noUi-target.noUi-sm { + height: 6px; +} +.noUi-target.noUi-sm .noUi-handle { + width: 20px; + height: 20px; + top: -7px; +} +.noUi-target.noUi-lg { + height: 18px; +} +.noUi-target.noUi-lg .noUi-handle { + width: 30px; + height: 30px; + top: -6px; +} + +.noUi-target.noUi-target-white .noUi-connects { + background-color: var(--bs-white-light); +} +.noUi-target.noUi-target-white .noUi-connects .noUi-connect { + background-color: var(--bs-white); +} +.noUi-target.noUi-target-white .noUi-handle { + border: 1px solid var(--bs-white); + box-shadow: 0 3px 6px -3px rgba(var(--bs-white), 0.7); + background-color: var(--bs-white); +} + +.noUi-target.noUi-target-light .noUi-connects { + background-color: var(--bs-light-light); +} +.noUi-target.noUi-target-light .noUi-connects .noUi-connect { + background-color: var(--bs-light); +} +.noUi-target.noUi-target-light .noUi-handle { + border: 1px solid var(--bs-light); + box-shadow: 0 3px 6px -3px rgba(var(--bs-light), 0.7); + background-color: var(--bs-light); +} + +.noUi-target.noUi-target-primary .noUi-connects { + background-color: var(--bs-primary-light); +} +.noUi-target.noUi-target-primary .noUi-connects .noUi-connect { + background-color: var(--bs-primary); +} +.noUi-target.noUi-target-primary .noUi-handle { + border: 1px solid var(--bs-primary); + box-shadow: 0 3px 6px -3px rgba(var(--bs-primary), 0.7); + background-color: var(--bs-primary); +} + +.noUi-target.noUi-target-secondary .noUi-connects { + background-color: var(--bs-secondary-light); +} +.noUi-target.noUi-target-secondary .noUi-connects .noUi-connect { + background-color: var(--bs-secondary); +} +.noUi-target.noUi-target-secondary .noUi-handle { + border: 1px solid var(--bs-secondary); + box-shadow: 0 3px 6px -3px rgba(var(--bs-secondary), 0.7); + background-color: var(--bs-secondary); +} + +.noUi-target.noUi-target-success .noUi-connects { + background-color: var(--bs-success-light); +} +.noUi-target.noUi-target-success .noUi-connects .noUi-connect { + background-color: var(--bs-success); +} +.noUi-target.noUi-target-success .noUi-handle { + border: 1px solid var(--bs-success); + box-shadow: 0 3px 6px -3px rgba(var(--bs-success), 0.7); + background-color: var(--bs-success); +} + +.noUi-target.noUi-target-info .noUi-connects { + background-color: var(--bs-info-light); +} +.noUi-target.noUi-target-info .noUi-connects .noUi-connect { + background-color: var(--bs-info); +} +.noUi-target.noUi-target-info .noUi-handle { + border: 1px solid var(--bs-info); + box-shadow: 0 3px 6px -3px rgba(var(--bs-info), 0.7); + background-color: var(--bs-info); +} + +.noUi-target.noUi-target-warning .noUi-connects { + background-color: var(--bs-warning-light); +} +.noUi-target.noUi-target-warning .noUi-connects .noUi-connect { + background-color: var(--bs-warning); +} +.noUi-target.noUi-target-warning .noUi-handle { + border: 1px solid var(--bs-warning); + box-shadow: 0 3px 6px -3px rgba(var(--bs-warning), 0.7); + background-color: var(--bs-warning); +} + +.noUi-target.noUi-target-danger .noUi-connects { + background-color: var(--bs-danger-light); +} +.noUi-target.noUi-target-danger .noUi-connects .noUi-connect { + background-color: var(--bs-danger); +} +.noUi-target.noUi-target-danger .noUi-handle { + border: 1px solid var(--bs-danger); + box-shadow: 0 3px 6px -3px rgba(var(--bs-danger), 0.7); + background-color: var(--bs-danger); +} + +.noUi-target.noUi-target-dark .noUi-connects { + background-color: var(--bs-dark-light); +} +.noUi-target.noUi-target-dark .noUi-connects .noUi-connect { + background-color: var(--bs-dark); +} +.noUi-target.noUi-target-dark .noUi-handle { + border: 1px solid var(--bs-dark); + box-shadow: 0 3px 6px -3px rgba(var(--bs-dark), 0.7); + background-color: var(--bs-dark); +} + +.noUi-tooltip { + box-shadow: var(--bs-tooltip-box-shadow); + background: var(--bs-tooltip-bg); + color: var(--bs-tooltip-color); + font-size: 1rem; + border: 0; + padding: 0.5rem 0.75rem; + border-radius: 0.475rem; +} + +.ql-toolbar { + font-family: Inter, Helvetica, "sans-serif"; +} +.ql-toolbar.ql-snow { + border: 1px solid var(--bs-border-color); + border-top-left-radius: 0.475rem; + border-top-right-radius: 0.475rem; +} +.ql-toolbar.ql-snow .ql-picker .ql-fill, +.ql-toolbar.ql-snow .ql-picker .ql-stroke, +.ql-toolbar.ql-snow button .ql-fill, +.ql-toolbar.ql-snow button .ql-stroke { + stroke: var(--bs-gray-500); +} +.ql-toolbar.ql-snow .ql-picker .ql-fill, +.ql-toolbar.ql-snow button .ql-fill { + fill: var(--bs-gray-500); +} +.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-fill, +.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-stroke, .ql-toolbar.ql-snow .ql-picker.ql-active .ql-fill, +.ql-toolbar.ql-snow .ql-picker.ql-active .ql-stroke, .ql-toolbar.ql-snow .ql-picker:focus .ql-fill, +.ql-toolbar.ql-snow .ql-picker:focus .ql-stroke, .ql-toolbar.ql-snow .ql-picker:hover .ql-fill, +.ql-toolbar.ql-snow .ql-picker:hover .ql-stroke, +.ql-toolbar.ql-snow button.ql-expanded .ql-fill, +.ql-toolbar.ql-snow button.ql-expanded .ql-stroke, +.ql-toolbar.ql-snow button.ql-active .ql-fill, +.ql-toolbar.ql-snow button.ql-active .ql-stroke, +.ql-toolbar.ql-snow button:focus .ql-fill, +.ql-toolbar.ql-snow button:focus .ql-stroke, +.ql-toolbar.ql-snow button:hover .ql-fill, +.ql-toolbar.ql-snow button:hover .ql-stroke { + stroke: var(--bs-primary); +} +.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-fill, .ql-toolbar.ql-snow .ql-picker.ql-active .ql-fill, .ql-toolbar.ql-snow .ql-picker:focus .ql-fill, .ql-toolbar.ql-snow .ql-picker:hover .ql-fill, +.ql-toolbar.ql-snow button.ql-expanded .ql-fill, +.ql-toolbar.ql-snow button.ql-active .ql-fill, +.ql-toolbar.ql-snow button:focus .ql-fill, +.ql-toolbar.ql-snow button:hover .ql-fill { + fill: var(--bs-primary); +} + +.ql-editor { + color: var(--bs-input-color); +} +.ql-editor.ql-blank:before { + left: auto !important; + right: auto !important; + color: var(--bs-text-muted) !important; + font-style: normal !important; +} + +.ql-container.ql-snow { + background-color: var(--bs-input-bg); + border: 1px solid var(--bs-gray-200); + border-top: 0; + border-bottom-right-radius: 0.475rem; + border-bottom-left-radius: 0.475rem; +} + +.ql-snow .ql-picker .ql-picker-label { + color: var(--bs-gray-500); +} +.ql-snow .ql-picker .ql-picker-label.ql-active, .ql-snow .ql-picker .ql-picker-label:hover { + color: var(--bs-primary); +} +.ql-snow .ql-picker.ql-expanded { + outline: none !important; + border-color: transparent !important; +} +.ql-snow .ql-picker.ql-expanded .ql-picker-label { + border-color: transparent !important; + color: var(--bs-primary); + outline: none !important; +} +.ql-snow .ql-picker.ql-expanded .ql-picker-label.ql-active, .ql-snow .ql-picker.ql-expanded .ql-picker-label:hover { + color: var(--bs-primary); +} +.ql-snow .ql-picker.ql-expanded .ql-picker-options { + border: 0; + padding: 0.5rem 1rem; + box-shadow: var(--bs-dropdown-box-shadow); + background-color: var(--bs-body-bg); + border-radius: 0.475rem; +} +.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item { + color: var(--bs-gray-600); + outline: none; +} +.ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item.ql-selected, .ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item.ql-active, .ql-snow .ql-picker.ql-expanded .ql-picker-options .ql-picker-item:hover { + color: var(--bs-primary); +} +.ql-snow .ql-tooltip { + border: 0; + padding: 0.5rem 1rem; + box-shadow: var(--bs-dropdown-box-shadow); + border-radius: 0.475rem; +} +.ql-snow .ql-tooltip input[type=text] { + border: 0; + background-color: transparent; + outline: none !important; + box-shadow: none; + border-radius: 0; + border: 1px solid var(--bs-border-color); + color: var(--bs-gray-700); + outline: none !important; + border-radius: 0.475rem; +} +.ql-snow .ql-tooltip input[type=text]:active, .ql-snow .ql-tooltip input[type=text]:focus { + border-color: var(--bs-input-focus-border-color) !important; +} +.ql-snow .ql-tooltip .ql-preview { + color: var(--bs-gray-600); +} +.ql-snow .ql-tooltip .ql-action { + transition: color 0.3s ease; + color: var(--bs-gray-600); +} +.ql-snow .ql-tooltip .ql-action:hover { + transition: color 0.3s ease; + color: var(--bs-primary); +} +.modal .ql-snow .ql-tooltip.ql-editing { + left: 20px !important; +} +.ql-snow .ql-editor pre.ql-syntax { + background-color: var(--bs-gray-900); + color: var(--bs-text-muted); + overflow: visible; + border-radius: 0.475rem; +} + +.ql-quil.ql-quil-plain .ql-toolbar { + padding: 0; + margin: 0; + border: 0; +} +.ql-quil.ql-quil-plain .ql-toolbar:after { + display: none; +} +.ql-quil.ql-quil-plain .ql-toolbar .ql-picker-label { + padding-left: 0; +} +.ql-quil.ql-quil-plain .ql-container { + border: 0; +} +.ql-quil.ql-quil-plain .ql-editor { + border: 0; + padding: 0; +} + +.recaptcha { + padding: 15px; + border: 1px solid var(--bs-gray-200); + border-radius: 0.475rem; +} +.recaptcha .recaptcha-img { + margin-bottom: 10px; +} +.recaptcha .recaptcha_only_if_incorrect_sol { + color: var(--bs-danger); +} +.recaptcha .input-group .btn i { + padding-right: 0; +} +.recaptcha .input-group .form-control { + border-top-left-radius: 0.475rem !important; + border-bottom-left-radius: 0.475rem !important; +} + +html.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown), +body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown):not(.modal-open) { + overflow-y: initial !important; +} +html.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown):not(.sweetalert2-nopadding), +body.swal2-shown:not(.swal2-no-backdrop):not(.swal2-toast-shown):not(.modal-open):not(.sweetalert2-nopadding) { + padding-right: 0 !important; +} + +.swal2-popup { + background-color: var(--bs-body-bg); + padding: 2rem; + border-radius: 0.475rem; +} +.swal2-popup .swal2-title { + font-weight: 500; + font-size: 1.3rem; + color: var(--bs-dark); +} +.swal2-popup .swal2-html-container, +.swal2-popup .swal2-content { + font-weight: normal; + font-size: 1.1rem; + margin-top: 1.5rem; + color: var(--bs-gray-800); +} +.swal2-popup .btn { + margin: 15px 5px 0; +} +.swal2-popup .swal2-styled:focus { + box-shadow: none; +} +.swal2-popup .swal2-actions { + margin: 1.5rem auto 1rem auto; +} + +.swal2-container { + overflow-y: hidden !important; +} +.swal2-container.swal2-shown { + background-color: rgba(0, 0, 0, 0.2); +} +.swal2-container .swal2-html-container { + max-height: 200px; + overflow: auto; +} + +body.swal2-height-auto { + height: 100% !important; +} + +.swal2-icon.swal2-warning { + border-color: var(--bs-warning); + color: var(--bs-warning); +} +.swal2-icon.swal2-error { + border-color: var(--bs-danger); + color: var(--bs-danger); +} +.swal2-icon.swal2-error [class^=swal2-x-mark-line] { + background-color: rgba(var(--bs-danger-rgb), 0.75); +} +.swal2-icon.swal2-success { + border-color: var(--bs-success); + color: var(--bs-success); +} +.swal2-icon.swal2-success [class^=swal2-success-line] { + background-color: var(--bs-success); +} +.swal2-icon.swal2-success .swal2-success-ring { + border-color: rgba(var(--bs-success-rgb), 0.3); +} +.swal2-icon.swal2-info { + border-color: var(--bs-info); + color: var(--bs-info); +} +.swal2-icon.swal2-question { + border-color: var(--bs-primary); + color: var(--bs-primary); +} + +.tox-target { + display: none; +} + +.tox-tinymce { + border-radius: 0.475rem !important; +} + +.toastr { + background-position: calc(100% - 1.5rem) center !important; + /*rtl:ignore*/ + background-position: 1.5rem center !important; + box-shadow: var(--bs-dropdown-box-shadow) !important; + border-radius: 0.475rem !important; + border: 0 !important; + background-color: var(--bs-gray-100); + color: var(--bs-gray-700); + padding: 1.25rem 1.25rem 1.25rem 4.5rem !important; +} +.toastr .toastr-close-button { + outline: none !important; + font-size: 0; + width: 0.85rem; + height: 0.85rem; +} +.toastr .toastr-title { + font-size: 1.15rem; + font-weight: 500; +} +.toastr .toastr-title + .toastr-message { + margin-top: 0.25rem; +} +.toastr .toastr-message { + font-size: 1rem; + font-weight: 400; +} +.toastr.toastr-success { + background-color: var(--bs-success); + color: var(--bs-success-inverse); +} +.toastr.toastr-success .toastr-close-button { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-success-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-success-inverse%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-success-inverse%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); +} +.toastr.toastr-info { + background-color: var(--bs-info); + color: var(--bs-info-inverse); +} +.toastr.toastr-info .toastr-close-button { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-info-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-info-inverse%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-info-inverse%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); +} +.toastr.toastr-warning { + background-color: var(--bs-warning); + color: var(--bs-warning-inverse); +} +.toastr.toastr-warning .toastr-close-button { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-warning-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-warning-inverse%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-warning-inverse%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); +} +.toastr.toastr-error { + background-color: var(--bs-danger); + color: var(--bs-danger-inverse); +} +.toastr.toastr-error .toastr-close-button { + mask-repeat: no-repeat; + mask-position: center; + -webkit-mask-repeat: no-repeat; + -webkit-mask-position: center; + background-color: var(--bs-danger-inverse); + -webkit-mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-danger-inverse%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); + mask-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-danger-inverse%29'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e"); +} + +.toastr-top-center { + top: 12px; +} + +.toastr-bottom-center { + bottom: 12px; +} + +.draggable { + transition: opacity 0.3s ease; + outline: none !important; +} +.draggable.draggable-mirror { + opacity: 0.8; + transition: opacity 0.3s ease; + border: 2px dashed var(--bs-gray-300) !important; + border-radius: 0.475rem; +} +.draggable.draggable--original { + opacity: 0 !important; +} +.draggable.draggable-source--is-dragging.draggable--over { + opacity: 0 !important; +} +.draggable .draggable-handle { + cursor: move; +} + +.apexcharts-text, +.apexcharts-title-text, +.apexcharts-legend-text { + font-family: Inter, Helvetica, "sans-serif" !important; +} + +.apexcharts-title-text { + font-weight: 400; +} + +.apexcharts-pie-label { + font-weight: 400; + font-size: 0.95rem; +} + +.apexcharts-toolbar { + text-align: left !important; +} + +.apexcharts-menu { + background-color: var(--bs-body-bg); + border: 0 !important; + padding: 0.5rem 0 !important; + box-shadow: var(--bs-dropdown-box-shadow); + border-radius: 0.475rem !important; + overflow: hidden; + min-width: 10rem !important; +} +.apexcharts-menu .apexcharts-menu-item { + padding: 0.65rem 0.85rem; + transition: all 0.2s ease-in-out; +} +.apexcharts-menu .apexcharts-menu-item:hover { + background-color: var(--bs-hover-bg) !important; +} + +.apexcharts-tooltip.apexcharts-theme-light { + border-radius: 0.475rem; + box-shadow: var(--bs-dropdown-box-shadow); + border: 0 !important; + background: var(--bs-body-bg) !important; + color: var(--bs-gray-800); +} +.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title { + background: var(--bs-body-bg) !important; + font-weight: 500; + color: var(--bs-gray-800); + border-bottom: 1px solid var(--bs-gray-100) !important; +} +.apexcharts-tooltip .apexcharts-tooltip-title { + padding: 0.5rem 1rem; +} +.apexcharts-xaxistooltip.apexcharts-theme-light { + border-radius: 0.475rem !important; + box-shadow: var(--bs-dropdown-box-shadow) !important; + border: 0 !important; + background: var(--bs-dropdown-box-shadow) !important; + color: var(--bs-gray-800); +} +.apexcharts-xaxistooltip.apexcharts-theme-light:before { + border-bottom: 0 !important; +} +.apexcharts-xaxistooltip.apexcharts-theme-light:after { + border-bottom-color: var(--bs-dropdown-box-shadow) !important; +} + +.card-rounded-bottom .apexcharts-canvas svg { + border-bottom-left-radius: 0.625rem; + border-bottom-right-radius: 0.625rem; +} + +.rounded .apexcharts-canvas svg { + border-radius: 0.475rem !important; +} + +.rounded-sm .apexcharts-canvas svg { + border-radius: 0.425rem !important; +} + +.rounded-lg .apexcharts-canvas svg { + border-radius: 0.625rem !important; +} + +.rounded-xl .apexcharts-canvas svg { + border-radius: 1rem !important; +} + +.leaflet-container .leaflet-pane, +.leaflet-container .leaflet-top, +.leaflet-container .leaflet-bottom, +.leaflet-container .leaflet-control { + z-index: 1 !important; +} +.leaflet-container .leaflet-popup-content-wrapper { + border-radius: 0.475rem !important; + text-align: center; + box-shadow: var(--bs-box-shadow) !important; +} +.leaflet-container .leaflet-popup-content-wrapper .leaflet-popup-content { + font-family: Inter, Helvetica, "sans-serif"; + font-size: 1rem; +} + +.tns { + position: relative; + overflow: hidden; +} +.tns [data-tns=true] { + display: none; +} +.tns .tns-item { + opacity: 0; + transition: all 0.3s ease; +} +.tns .tns-controls { + display: flex; + justify-content: center; + align-items: center; +} +.tns .tns-controls button { + outline: none; + border: 0; + margin: 0 0.25rem; + border-radius: 0.475rem; + padding: 0.5rem 0.75rem; + background-color: var(--bs-primary); + color: var(--bs-primary-inverse); +} +.tns .tns-controls button:hover { + background-color: var(--bs-primary-active); +} +.tns .tns-nav { + display: flex; + justify-content: center; + align-items: center; + padding-top: 1.5rem; + padding-bottom: 1.5rem; +} +.tns .tns-nav button { + display: block; + outline: none; + width: 1.25rem; + height: 0.75rem; + background-color: var(--bs-gray-200); + margin: 0 0.25rem; + border: 0; + border-radius: 0.35rem; +} +.tns .tns-nav button.tns-nav-active { + background-color: var(--bs-primary); +} +.tns.tns-initiazlied [data-tns=true] { + display: flex; +} +.tns.tns-initiazlied .tns-item { + opacity: 1; + transition: all 0.3s ease; +} +.tns.tns-default { + position: relative; +} +.tns.tns-default [data-controls=prev], +.tns.tns-default [data-controls=next] { + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tns.tns-default [data-controls=prev] { + left: 0; +} +.tns.tns-default [data-controls=next] { + right: 0; +} +.tns.tns-default .tns-outer { + margin: 0 4rem; +} +@media (max-width: 767.98px) { + .tns.tns-default .tns-outer { + margin: 0 2rem; + } +} +.tns.tns-flush .tns-outer { + margin: 0; +} + +.tns-hide-disabled-nav [disabled] { + display: none !important; +} + +body { + --fc-event-border-color: var(--bs-primary); + --fc-event-bg-color: var(--bs-primary); + --fc-event-text-color: var(--bs-primary-inverse); +} + +.fc { + --fc-border-color: var(--bs-gray-200); + --fc-page-bg-color: #ffffff; + --fc-small-font-size: 0.95rem; + --fc-highlight-color: var(--bs-light); + --fc-bg-event-opacity: 0.3; + --fc-neutral-bg-color: var(--bs-light); + --fc-today-bg-color: var(--bs-success-light); + --fc-now-indicator-color: var(--bs-danger); + --fc-list-event-hover-bg-color: var(--bs-light); + --fc-button-text-color: var(--bs-gray-600); + --fc-button-bg-color: var(--bs-gray-100); + --fc-button-border-color: var(--bs-gray-100); + --fc-button-hover-bg-color: var(--bs-gray-100); + --fc-button-hover-border-color: var(--bs-gray-100); + --fc-button-active-bg-color: var(--bs-gray-200); + --fc-button-active-border-color: var(--bs-gray-200); +} +.fc table { + font-size: 1rem; +} +.fc .fc-button { + padding: 0.75rem 1.25rem; + box-shadow: none !important; + border: 0 !important; + border-radius: 0.475rem; + vertical-align: middle; + font-weight: 500; + text-transform: capitalize; +} +.fc .fc-button-primary { + margin: 0; +} +.fc .fc-button-primary .fc-icon { + font-size: 1.35rem; + margin-bottom: 0.15rem; +} +.fc .fc-button-primary:not(:disabled):not(.fc-button-active):focus, .fc .fc-button-primary:not(:disabled):not(.fc-button-active):hover, .fc .fc-button-primary:not(:disabled):not(.fc-button-active):active { + color: var(--bs-gray-900); +} +.fc .fc-button-primary:not(:disabled):not(.fc-button-active):focus .fc-icon, .fc .fc-button-primary:not(:disabled):not(.fc-button-active):hover .fc-icon, .fc .fc-button-primary:not(:disabled):not(.fc-button-active):active .fc-icon { + color: var(--bs-gray-900); +} +.fc .fc-button-primary:not(:disabled).fc-button-active { + color: var(--bs-gray-900); +} +.fc .fc-button-primary:not(:disabled).fc-button-active .fc-icon { + color: var(--bs-gray-900); +} +.fc .fc-button-group .fc-button { + margin: 0 !important; +} +.fc .fc-toolbar-title { + font-size: 1.5rem; + font-weight: 600; + color: var(--bs-gray-800); +} +.fc .fc-col-header-cell { + padding: 0.75rem 0.5rem; +} +.fc .fc-col-header-cell .fc-col-header-cell-cushion { + font-size: 1.1rem; + font-weight: 500; + color: var(--bs-gray-800); +} +.fc .fc-scrollgrid { + border-radius: 0.475rem; +} +.fc .fc-scrollgrid thead > tr td:first-child { + border-top-left-radius: 0.475rem; +} +.fc .fc-scrollgrid thead > tr td:last-child { + border-top-right-radius: 0.475rem; +} +.fc .fc-scrollgrid tbody > tr:last-child td:first-child { + border-bottom-left-radius: 0.475rem; +} +.fc .fc-scrollgrid tbody > tr:last-child td:last-child { + border-bottom-right-radius: 0.475rem; +} +.fc .fc-daygrid-event { + margin-top: 3px; +} +.fc .fc-daygrid-dot-event .fc-event-title, +.fc .fc-daygrid-dot-event .fc-event-time, +.fc .fc-daygrid-block-event .fc-event-title, +.fc .fc-daygrid-block-event .fc-event-time { + padding: 0.25rem 0.25rem; +} +.fc .fc-daygrid-day-number { + color: var(--bs-gray-800); +} +.fc .fc-daygrid-dot-event { + background-color: var(--bs-light); + color: var(--bs-gray-600); +} +.fc .fc-daygrid-dot-event .fc-event-title { + font-weight: 500; +} +.fc .fc-daygrid-dot-event:hover, .fc .fc-daygrid-dot-event.fc-event-mirror { + background-color: var(--bs-light); + color: var(--bs-primary); +} +.fc .fc-daygrid-event-dot { + margin-left: 0.5rem; + margin-right: 0.1rem; +} +.fc .fc-popover { + border: 0 !important; + background-color: var(--bs-tooltip-bg); + box-shadow: var(--bs-dropdown-box-shadow); + border-radius: 0.475rem; +} +.fc .fc-popover .fc-popover-header { + border-top-left-radius: 0.475rem; + border-top-right-radius: 0.475rem; + padding: 0.65rem 0.75rem; + background-color: var(--bs-tooltip-bg); +} +.fc .fc-popover .fc-popover-header .fc-popover-title { + color: var(--bs-gray-800); + font-size: 1rem; + font-weight: 500; +} +.fc .fc-popover .fc-popover-header .fc-popover-close { + font-size: 1rem; + color: var(--bs-gray-600); +} +.fc .fc-popover .fc-popover-header .fc-popover-close:hover { + color: var(--bs-primary); +} +.fc .fc-popover .fc-popover-body { + padding: 0.5rem 0.75rem 0.75rem 0.75rem; +} +.fc .fc-daygrid-more-link { + font-weight: 500; +} +.fc .fc-timegrid-slot { + height: 2rem; + font-size: 0.95rem; +} +.fc .fc-list-day-cushion, +.fc .fc-list-table td { + padding: 0.85rem 1.15rem; +} +.fc .fc-list-day-text, +.fc .fc-list-day-side-text { + font-size: 1.1rem; + color: var(--bs-gray-900); + font-weight: 600; +} +.fc .fc-list, +.fc .fc-list-table { + border-radius: 0.475rem; +} +.fc .fc-list { + overflow: hidden; + position: relative; +} +.fc .fc-timegrid-axis { + padding-left: 0rem; + padding-right: 0; +} +.fc .fc-timegrid-event .fc-event-main { + padding: 0.25rem 0.25rem; +} +.fc .fc-timegrid-now-indicator-arrow { + margin-top: -1px; +} + +.fc-h-event { + font-weight: 400; +} + +@media (max-width: 767.98px) { + .fc .fc-header-toolbar { + flex-direction: column; + align-items: flex-start; + } + .fc .fc-header-toolbar .fc-toolbar-chunk:nth-child(1), .fc .fc-header-toolbar .fc-toolbar-chunk:nth-child(3) { + order: 2; + } + .fc .fc-header-toolbar .fc-toolbar-chunk:nth-child(2) { + order: 1; + } + .fc .fc-header-toolbar .fc-toolbar-chunk:nth-child(2), .fc .fc-header-toolbar .fc-toolbar-chunk:nth-child(1) { + margin-bottom: 1rem; + } +} +.kanban-container { + width: 100% !important; + display: flex; + flex-wrap: wrap; +} +.kanban-container .kanban-board { + float: none; + flex-shrink: 0; + margin-bottom: 1.25rem; + margin-right: 1.25rem !important; + background-color: var(--bs-gray-100); + border-radius: 0.475rem; +} +.kanban-container .kanban-board:last-child { + margin-right: 0 !important; +} +.kanban-container .kanban-board .kanban-board-header { + border-top-left-radius: 0.475rem; + border-top-right-radius: 0.475rem; +} +.kanban-container .kanban-board .kanban-board-header .kanban-title-board { + font-size: 1.2rem; + font-weight: 500; + color: var(--bs-gray-900); +} +.kanban-container .kanban-board .kanban-board-header.white { + background-color: var(--bs-white); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-board-header.white .kanban-title-board { + color: var(--bs-white-inverse); +} +.kanban-container .kanban-board .kanban-board-header.light-white { + color: rgba(var(--bs-white), 0.1); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-board-header.light-white .kanban-title-board { + color: var(--bs-white); +} +.kanban-container .kanban-board .kanban-board-header.light { + background-color: var(--bs-light); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-board-header.light .kanban-title-board { + color: var(--bs-light-inverse); +} +.kanban-container .kanban-board .kanban-board-header.light-light { + color: rgba(var(--bs-light), 0.1); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-board-header.light-light .kanban-title-board { + color: var(--bs-light); +} +.kanban-container .kanban-board .kanban-board-header.primary { + background-color: var(--bs-primary); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-board-header.primary .kanban-title-board { + color: var(--bs-primary-inverse); +} +.kanban-container .kanban-board .kanban-board-header.light-primary { + color: rgba(var(--bs-primary), 0.1); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-board-header.light-primary .kanban-title-board { + color: var(--bs-primary); +} +.kanban-container .kanban-board .kanban-board-header.secondary { + background-color: var(--bs-secondary); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-board-header.secondary .kanban-title-board { + color: var(--bs-secondary-inverse); +} +.kanban-container .kanban-board .kanban-board-header.light-secondary { + color: rgba(var(--bs-secondary), 0.1); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-board-header.light-secondary .kanban-title-board { + color: var(--bs-secondary); +} +.kanban-container .kanban-board .kanban-board-header.success { + background-color: var(--bs-success); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-board-header.success .kanban-title-board { + color: var(--bs-success-inverse); +} +.kanban-container .kanban-board .kanban-board-header.light-success { + color: rgba(var(--bs-success), 0.1); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-board-header.light-success .kanban-title-board { + color: var(--bs-success); +} +.kanban-container .kanban-board .kanban-board-header.info { + background-color: var(--bs-info); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-board-header.info .kanban-title-board { + color: var(--bs-info-inverse); +} +.kanban-container .kanban-board .kanban-board-header.light-info { + color: rgba(var(--bs-info), 0.1); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-board-header.light-info .kanban-title-board { + color: var(--bs-info); +} +.kanban-container .kanban-board .kanban-board-header.warning { + background-color: var(--bs-warning); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-board-header.warning .kanban-title-board { + color: var(--bs-warning-inverse); +} +.kanban-container .kanban-board .kanban-board-header.light-warning { + color: rgba(var(--bs-warning), 0.1); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-board-header.light-warning .kanban-title-board { + color: var(--bs-warning); +} +.kanban-container .kanban-board .kanban-board-header.danger { + background-color: var(--bs-danger); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-board-header.danger .kanban-title-board { + color: var(--bs-danger-inverse); +} +.kanban-container .kanban-board .kanban-board-header.light-danger { + color: rgba(var(--bs-danger), 0.1); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-board-header.light-danger .kanban-title-board { + color: var(--bs-danger); +} +.kanban-container .kanban-board .kanban-board-header.dark { + background-color: var(--bs-dark); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-board-header.dark .kanban-title-board { + color: var(--bs-dark-inverse); +} +.kanban-container .kanban-board .kanban-board-header.light-dark { + color: rgba(var(--bs-dark), 0.1); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-board-header.light-dark .kanban-title-board { + color: var(--bs-dark); +} +.kanban-container .kanban-board .kanban-drag .kanban-item { + border-radius: 0.475rem; + box-shadow: 0px 0px 13px 0px rgba(0, 0, 0, 0.05); + background: var(--bs-body-bg); +} +.kanban-container .kanban-board .kanban-drag .kanban-item[data-class=white] { + background-color: var(--bs-white); + color: var(--bs-white-inverse); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-drag .kanban-item[data-class=light-white] { + background-color: var(--bs-white-light); + color: var(--bs-white); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-drag .kanban-item[data-class=light] { + background-color: var(--bs-light); + color: var(--bs-light-inverse); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-drag .kanban-item[data-class=light-light] { + background-color: var(--bs-light-light); + color: var(--bs-light); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-drag .kanban-item[data-class=primary] { + background-color: var(--bs-primary); + color: var(--bs-primary-inverse); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-drag .kanban-item[data-class=light-primary] { + background-color: var(--bs-primary-light); + color: var(--bs-primary); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-drag .kanban-item[data-class=secondary] { + background-color: var(--bs-secondary); + color: var(--bs-secondary-inverse); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-drag .kanban-item[data-class=light-secondary] { + background-color: var(--bs-secondary-light); + color: var(--bs-secondary); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-drag .kanban-item[data-class=success] { + background-color: var(--bs-success); + color: var(--bs-success-inverse); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-drag .kanban-item[data-class=light-success] { + background-color: var(--bs-success-light); + color: var(--bs-success); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-drag .kanban-item[data-class=info] { + background-color: var(--bs-info); + color: var(--bs-info-inverse); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-drag .kanban-item[data-class=light-info] { + background-color: var(--bs-info-light); + color: var(--bs-info); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-drag .kanban-item[data-class=warning] { + background-color: var(--bs-warning); + color: var(--bs-warning-inverse); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-drag .kanban-item[data-class=light-warning] { + background-color: var(--bs-warning-light); + color: var(--bs-warning); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-drag .kanban-item[data-class=danger] { + background-color: var(--bs-danger); + color: var(--bs-danger-inverse); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-drag .kanban-item[data-class=light-danger] { + background-color: var(--bs-danger-light); + color: var(--bs-danger); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-drag .kanban-item[data-class=dark] { + background-color: var(--bs-dark); + color: var(--bs-dark-inverse); + box-shadow: none; +} +.kanban-container .kanban-board .kanban-drag .kanban-item[data-class=light-dark] { + background-color: var(--bs-dark-light); + color: var(--bs-dark); + box-shadow: none; +} +.kanban-fixed-height .kanban-container .kanban-board .kanban-drag { + position: relative; + overflow-y: auto; +} + +.jstree-default .jstree-anchor { + color: var(--bs-gray-700); + padding: 0 8px 0 4px; +} +.jstree-default .jstree-icon { + color: var(--bs-gray-700); + font-size: 1.3rem; +} +.jstree-default .jstree-icon.la { + font-size: 1.5rem; +} +.jstree-default .jstree-icon.fa { + font-size: 1.2rem; +} +.jstree-default .jstree-disabled { + cursor: not-allowed; + line-height: auto; + height: auto; + opacity: 0.7; +} +.jstree-default .jstree-disabled .jstree-icon { + color: var(--bs-gray-700); +} +.jstree-default .jstree-clicked { + border: 0; + background: var(--bs-gray-100); + box-shadow: none; +} +.jstree-default .jstree-hovered { + border: 0; + background-color: var(--bs-gray-100); + box-shadow: none; +} +.jstree-default .jstree-wholerow-clicked, +.jstree-default .jstree-wholerow-clicked { + background: var(--bs-gray-200); + box-shadow: none; +} +.jstree-default .jstree-wholerow-hovered, .jstree-default.jstree-wholerow .jstree-wholerow-hovered { + border: 0; + background-color: var(--bs-gray-100); + box-shadow: none; +} + +.jstree-open > .jstree-anchor > .fa-folder:before { + margin-left: 2px; + content: "\f07c"; +} + +.jstree-open > .jstree-anchor > .la-folder:before { + margin-left: 2px; + content: "\f200"; +} + +.jstree-default.jstree-rtl .jstree-node { + background-position: 100% 1px /*rtl:ignore*/ !important; +} + +.jstree-default.jstree-rtl .jstree-last { + background: transparent /*rtl:ignore*/; + background-repeat: no-repeat; +} + +.jstree-rtl .jstree-anchor { + padding: 0 4px 0 8px /*rtl:ignore*/; +} + +.vakata-context, +.vakata-context ul { + padding: 0.5rem 0; + min-width: 150px; + font-size: 1rem; + font-family: var(--bs-font-sans-serif); + background: var(--bs-body-bg); + box-shadow: var(--bs-dropdown-box-shadow); + border: 0; + border-radius: 0.475rem; +} +.vakata-context li, +.vakata-context ul li { + padding: 0; + border: 0; +} +.vakata-context li a, +.vakata-context ul li a { + padding: 0rem 1.2rem; + border: 0; +} +.vakata-context li a i, +.vakata-context ul li a i { + display: none; +} +.vakata-context li a .vakata-contextmenu-sep, +.vakata-context ul li a .vakata-contextmenu-sep { + display: none; +} +.vakata-context li a span, +.vakata-context li a ins, +.vakata-context ul li a span, +.vakata-context ul li a ins { + display: none; + border: 0 !important; +} +.vakata-context .vakata-context-hover > a, +.vakata-context li a:hover, +.vakata-context ul .vakata-context-hover > a, +.vakata-context ul li a:hover { + margin: 0; + background-color: var(--bs-gray-100); + color: var(--bs-primary); + box-shadow: none; +} +.vakata-context .vakata-context-hover > a .span, +.vakata-context .vakata-context-hover > a .ins, +.vakata-context li a:hover .span, +.vakata-context li a:hover .ins, +.vakata-context ul .vakata-context-hover > a .span, +.vakata-context ul .vakata-context-hover > a .ins, +.vakata-context ul li a:hover .span, +.vakata-context ul li a:hover .ins { + border: 0 !important; +} + +.vakata-context .vakata-context-separator a, +.vakata-context-rtl .vakata-context-separator a { + margin: 0; + border: 0; + height: 2px; + background-color: var(--bs-gray-200); +} + +.jstree-rename-input { + outline: none !important; + padding: 2px 6px !important; + margin-right: -4px !important; + background-color: var(--bs-gray-100) !important; + border: 1px solid var(--bs-gray-100) !important; + border-radius: 0.475rem; +} + +.vis-timeline { + border: 1px solid var(--bs-border-color) !important; + border-radius: 0.475rem !important; +} +.vis-timeline .vis-labelset .vis-label { + display: flex; + align-items: center; + padding-left: 1rem; + padding-right: 1rem; + border-bottom: none; + font-size: 1.25rem; + font-weight: 500; + color: var(--bs-gray-900); +} +.vis-timeline .vis-foreground .vis-group { + border-bottom: none; +} +.vis-timeline .vis-item { + position: absolute; + color: var(--bs-gray-700); + border-color: var(--bs-primary); + border-width: 1px; + background-color: var(--bs-gray-100); + border-radius: 0.475rem !important; +} +.vis-timeline .vis-item.vis-selected { + background-color: var(--bs-warning-light); + color: var(--bs-gray-700); + border-color: var(--bs-warning); +} +.vis-timeline .vis-item .vis-item-content { + padding: 0.75rem 1rem; + width: 100%; + transform: none !important; +} +.vis-timeline .vis-time-axis { + font-size: 0.95rem; + text-transform: uppercase; + font-weight: 500; +} +.vis-timeline .vis-time-axis .vis-text { + color: var(--bs-gray-400); +} +.vis-timeline .vis-time-axis .vis-grid.vis-minor { + border-left-color: var(--bs-border-dashed-color) !important; +} +.vis-timeline .vis-time-axis .vis-grid.vis-vertical { + border-left-style: dashed !important; +} +.vis-timeline .vis-panel .vis-shadow { + box-shadow: none !important; +} +.vis-timeline .vis-panel.vis-bottom, .vis-timeline .vis-panel.vis-center, .vis-timeline .vis-panel.vis-left, .vis-timeline .vis-panel.vis-right, .vis-timeline .vis-panel.vis-top { + border-color: var(--bs-border-color) !important; +} +.vis-timeline .vis-current-time { + background-color: var(--bs-success); +} + +.vis-timeline-custom .vis-timeline { + border: 0 !important; +} +.vis-timeline-custom .vis-timeline .vis-label { + padding-left: 0 !important; +} +.vis-timeline-custom .vis-panel.vis-bottom, .vis-timeline-custom .vis-panel.vis-center, .vis-timeline-custom .vis-panel.vis-left, .vis-timeline-custom .vis-panel.vis-right, .vis-timeline-custom .vis-panel.vis-top { + border: 0 !important; +} +.vis-timeline-custom .vis-item { + background-color: transparent; + border: 0 !important; + border-radius: 0 !important; +} +.vis-timeline-custom .vis-item .vis-item-content { + padding: 0 !important; +} + +.tempus-dominus-widget { + padding: 1rem 0.5rem 0.5rem 0.5rem; + width: 280px !important; + box-shadow: var(--bs-dropdown-box-shadow) !important; + background-color: var(--bs-body-bg) !important; + border-radius: 0.475rem; +} +.tempus-dominus-widget i { + font-size: 0.9rem !important; +} +.tempus-dominus-widget .picker-switch { + font-size: 1.05rem; + font-weight: 600; +} +.tempus-dominus-widget .date-container-days { + grid-auto-rows: 36px; +} +.tempus-dominus-widget .date-container-days .day { + border-radius: 0.475rem !important; +} +.tempus-dominus-widget .date-container-months { + grid-auto-rows: 36px; +} +.tempus-dominus-widget .date-container-months .month { + border-radius: 0.475rem !important; +} +.tempus-dominus-widget .date-container-years { + grid-auto-rows: 36px; +} +.tempus-dominus-widget .date-container-years .year { + border-radius: 0.475rem !important; +} +.tempus-dominus-widget .time-container .separator { + border: 0px !important; +} +.tempus-dominus-widget .time-container .time-container-clock div { + border-radius: 0.475rem !important; +} +.tempus-dominus-widget .toolbar div { + border-radius: 0.475rem; +} +.tempus-dominus-widget .toolbar div i { + font-size: 1.1rem !important; +} +.tempus-dominus-widget.light, .tempus-dominus-widget.dark { + color: var(--bs-gray-900); +} +.tempus-dominus-widget.light [data-action].disabled, .tempus-dominus-widget.light [data-action].disabled:hover, .tempus-dominus-widget.dark [data-action].disabled, .tempus-dominus-widget.dark [data-action].disabled:hover { + color: var(--bs-gray-400); +} +.tempus-dominus-widget.light .toolbar div:hover, .tempus-dominus-widget.dark .toolbar div:hover { + background: var(--bs-gray-200); +} +.tempus-dominus-widget.light .date-container-days .dow, .tempus-dominus-widget.dark .date-container-days .dow { + color: var(--bs-gray-700) !important; +} +.tempus-dominus-widget.light .date-container-days .cw, .tempus-dominus-widget.dark .date-container-days .cw { + color: rgba(var(--bs-gray-900-rgb), 0.38); +} +.tempus-dominus-widget.light .date-container-decades div:not(.no-highlight):hover, +.tempus-dominus-widget.light .date-container-years div:not(.no-highlight):hover, +.tempus-dominus-widget.light .date-container-months div:not(.no-highlight):hover, +.tempus-dominus-widget.light .date-container-days div:not(.no-highlight):hover, +.tempus-dominus-widget.light .time-container-clock div:not(.no-highlight):hover, +.tempus-dominus-widget.light .time-container-hour div:not(.no-highlight):hover, +.tempus-dominus-widget.light .time-container-minute div:not(.no-highlight):hover, +.tempus-dominus-widget.light .time-container-second div:not(.no-highlight):hover, .tempus-dominus-widget.dark .date-container-decades div:not(.no-highlight):hover, +.tempus-dominus-widget.dark .date-container-years div:not(.no-highlight):hover, +.tempus-dominus-widget.dark .date-container-months div:not(.no-highlight):hover, +.tempus-dominus-widget.dark .date-container-days div:not(.no-highlight):hover, +.tempus-dominus-widget.dark .time-container-clock div:not(.no-highlight):hover, +.tempus-dominus-widget.dark .time-container-hour div:not(.no-highlight):hover, +.tempus-dominus-widget.dark .time-container-minute div:not(.no-highlight):hover, +.tempus-dominus-widget.dark .time-container-second div:not(.no-highlight):hover { + background: var(--bs-gray-200); +} +.tempus-dominus-widget.light .date-container-decades div:not(.no-highlight).active, +.tempus-dominus-widget.light .date-container-years div:not(.no-highlight).active, +.tempus-dominus-widget.light .date-container-months div:not(.no-highlight).active, +.tempus-dominus-widget.light .date-container-days div:not(.no-highlight).active, +.tempus-dominus-widget.light .time-container-clock div:not(.no-highlight).active, +.tempus-dominus-widget.light .time-container-hour div:not(.no-highlight).active, +.tempus-dominus-widget.light .time-container-minute div:not(.no-highlight).active, +.tempus-dominus-widget.light .time-container-second div:not(.no-highlight).active, .tempus-dominus-widget.dark .date-container-decades div:not(.no-highlight).active, +.tempus-dominus-widget.dark .date-container-years div:not(.no-highlight).active, +.tempus-dominus-widget.dark .date-container-months div:not(.no-highlight).active, +.tempus-dominus-widget.dark .date-container-days div:not(.no-highlight).active, +.tempus-dominus-widget.dark .time-container-clock div:not(.no-highlight).active, +.tempus-dominus-widget.dark .time-container-hour div:not(.no-highlight).active, +.tempus-dominus-widget.dark .time-container-minute div:not(.no-highlight).active, +.tempus-dominus-widget.dark .time-container-second div:not(.no-highlight).active { + background-color: var(--bs-primary); + color: var(--bs-body-bg); + text-shadow: 0 -1px 0 rgba(var(--bs-gray-900-rgb), 0.25); +} +.tempus-dominus-widget.light .date-container-decades div:not(.no-highlight).active.old, .tempus-dominus-widget.light .date-container-decades div:not(.no-highlight).active.new, +.tempus-dominus-widget.light .date-container-years div:not(.no-highlight).active.old, +.tempus-dominus-widget.light .date-container-years div:not(.no-highlight).active.new, +.tempus-dominus-widget.light .date-container-months div:not(.no-highlight).active.old, +.tempus-dominus-widget.light .date-container-months div:not(.no-highlight).active.new, +.tempus-dominus-widget.light .date-container-days div:not(.no-highlight).active.old, +.tempus-dominus-widget.light .date-container-days div:not(.no-highlight).active.new, +.tempus-dominus-widget.light .time-container-clock div:not(.no-highlight).active.old, +.tempus-dominus-widget.light .time-container-clock div:not(.no-highlight).active.new, +.tempus-dominus-widget.light .time-container-hour div:not(.no-highlight).active.old, +.tempus-dominus-widget.light .time-container-hour div:not(.no-highlight).active.new, +.tempus-dominus-widget.light .time-container-minute div:not(.no-highlight).active.old, +.tempus-dominus-widget.light .time-container-minute div:not(.no-highlight).active.new, +.tempus-dominus-widget.light .time-container-second div:not(.no-highlight).active.old, +.tempus-dominus-widget.light .time-container-second div:not(.no-highlight).active.new, .tempus-dominus-widget.dark .date-container-decades div:not(.no-highlight).active.old, .tempus-dominus-widget.dark .date-container-decades div:not(.no-highlight).active.new, +.tempus-dominus-widget.dark .date-container-years div:not(.no-highlight).active.old, +.tempus-dominus-widget.dark .date-container-years div:not(.no-highlight).active.new, +.tempus-dominus-widget.dark .date-container-months div:not(.no-highlight).active.old, +.tempus-dominus-widget.dark .date-container-months div:not(.no-highlight).active.new, +.tempus-dominus-widget.dark .date-container-days div:not(.no-highlight).active.old, +.tempus-dominus-widget.dark .date-container-days div:not(.no-highlight).active.new, +.tempus-dominus-widget.dark .time-container-clock div:not(.no-highlight).active.old, +.tempus-dominus-widget.dark .time-container-clock div:not(.no-highlight).active.new, +.tempus-dominus-widget.dark .time-container-hour div:not(.no-highlight).active.old, +.tempus-dominus-widget.dark .time-container-hour div:not(.no-highlight).active.new, +.tempus-dominus-widget.dark .time-container-minute div:not(.no-highlight).active.old, +.tempus-dominus-widget.dark .time-container-minute div:not(.no-highlight).active.new, +.tempus-dominus-widget.dark .time-container-second div:not(.no-highlight).active.old, +.tempus-dominus-widget.dark .time-container-second div:not(.no-highlight).active.new { + color: var(--bs-body-bg); +} +.tempus-dominus-widget.light .date-container-decades div:not(.no-highlight).active.today:before, +.tempus-dominus-widget.light .date-container-years div:not(.no-highlight).active.today:before, +.tempus-dominus-widget.light .date-container-months div:not(.no-highlight).active.today:before, +.tempus-dominus-widget.light .date-container-days div:not(.no-highlight).active.today:before, +.tempus-dominus-widget.light .time-container-clock div:not(.no-highlight).active.today:before, +.tempus-dominus-widget.light .time-container-hour div:not(.no-highlight).active.today:before, +.tempus-dominus-widget.light .time-container-minute div:not(.no-highlight).active.today:before, +.tempus-dominus-widget.light .time-container-second div:not(.no-highlight).active.today:before, .tempus-dominus-widget.dark .date-container-decades div:not(.no-highlight).active.today:before, +.tempus-dominus-widget.dark .date-container-years div:not(.no-highlight).active.today:before, +.tempus-dominus-widget.dark .date-container-months div:not(.no-highlight).active.today:before, +.tempus-dominus-widget.dark .date-container-days div:not(.no-highlight).active.today:before, +.tempus-dominus-widget.dark .time-container-clock div:not(.no-highlight).active.today:before, +.tempus-dominus-widget.dark .time-container-hour div:not(.no-highlight).active.today:before, +.tempus-dominus-widget.dark .time-container-minute div:not(.no-highlight).active.today:before, +.tempus-dominus-widget.dark .time-container-second div:not(.no-highlight).active.today:before { + border-bottom-color: var(--bs-body-bg); +} +.tempus-dominus-widget.light .date-container-decades div:not(.no-highlight).old, .tempus-dominus-widget.light .date-container-decades div:not(.no-highlight).new, +.tempus-dominus-widget.light .date-container-years div:not(.no-highlight).old, +.tempus-dominus-widget.light .date-container-years div:not(.no-highlight).new, +.tempus-dominus-widget.light .date-container-months div:not(.no-highlight).old, +.tempus-dominus-widget.light .date-container-months div:not(.no-highlight).new, +.tempus-dominus-widget.light .date-container-days div:not(.no-highlight).old, +.tempus-dominus-widget.light .date-container-days div:not(.no-highlight).new, +.tempus-dominus-widget.light .time-container-clock div:not(.no-highlight).old, +.tempus-dominus-widget.light .time-container-clock div:not(.no-highlight).new, +.tempus-dominus-widget.light .time-container-hour div:not(.no-highlight).old, +.tempus-dominus-widget.light .time-container-hour div:not(.no-highlight).new, +.tempus-dominus-widget.light .time-container-minute div:not(.no-highlight).old, +.tempus-dominus-widget.light .time-container-minute div:not(.no-highlight).new, +.tempus-dominus-widget.light .time-container-second div:not(.no-highlight).old, +.tempus-dominus-widget.light .time-container-second div:not(.no-highlight).new, .tempus-dominus-widget.dark .date-container-decades div:not(.no-highlight).old, .tempus-dominus-widget.dark .date-container-decades div:not(.no-highlight).new, +.tempus-dominus-widget.dark .date-container-years div:not(.no-highlight).old, +.tempus-dominus-widget.dark .date-container-years div:not(.no-highlight).new, +.tempus-dominus-widget.dark .date-container-months div:not(.no-highlight).old, +.tempus-dominus-widget.dark .date-container-months div:not(.no-highlight).new, +.tempus-dominus-widget.dark .date-container-days div:not(.no-highlight).old, +.tempus-dominus-widget.dark .date-container-days div:not(.no-highlight).new, +.tempus-dominus-widget.dark .time-container-clock div:not(.no-highlight).old, +.tempus-dominus-widget.dark .time-container-clock div:not(.no-highlight).new, +.tempus-dominus-widget.dark .time-container-hour div:not(.no-highlight).old, +.tempus-dominus-widget.dark .time-container-hour div:not(.no-highlight).new, +.tempus-dominus-widget.dark .time-container-minute div:not(.no-highlight).old, +.tempus-dominus-widget.dark .time-container-minute div:not(.no-highlight).new, +.tempus-dominus-widget.dark .time-container-second div:not(.no-highlight).old, +.tempus-dominus-widget.dark .time-container-second div:not(.no-highlight).new { + color: rgba(var(--bs-gray-900-rgb), 0.38); +} +.tempus-dominus-widget.light .date-container-decades div:not(.no-highlight).disabled, .tempus-dominus-widget.light .date-container-decades div:not(.no-highlight).disabled:hover, +.tempus-dominus-widget.light .date-container-years div:not(.no-highlight).disabled, +.tempus-dominus-widget.light .date-container-years div:not(.no-highlight).disabled:hover, +.tempus-dominus-widget.light .date-container-months div:not(.no-highlight).disabled, +.tempus-dominus-widget.light .date-container-months div:not(.no-highlight).disabled:hover, +.tempus-dominus-widget.light .date-container-days div:not(.no-highlight).disabled, +.tempus-dominus-widget.light .date-container-days div:not(.no-highlight).disabled:hover, +.tempus-dominus-widget.light .time-container-clock div:not(.no-highlight).disabled, +.tempus-dominus-widget.light .time-container-clock div:not(.no-highlight).disabled:hover, +.tempus-dominus-widget.light .time-container-hour div:not(.no-highlight).disabled, +.tempus-dominus-widget.light .time-container-hour div:not(.no-highlight).disabled:hover, +.tempus-dominus-widget.light .time-container-minute div:not(.no-highlight).disabled, +.tempus-dominus-widget.light .time-container-minute div:not(.no-highlight).disabled:hover, +.tempus-dominus-widget.light .time-container-second div:not(.no-highlight).disabled, +.tempus-dominus-widget.light .time-container-second div:not(.no-highlight).disabled:hover, .tempus-dominus-widget.dark .date-container-decades div:not(.no-highlight).disabled, .tempus-dominus-widget.dark .date-container-decades div:not(.no-highlight).disabled:hover, +.tempus-dominus-widget.dark .date-container-years div:not(.no-highlight).disabled, +.tempus-dominus-widget.dark .date-container-years div:not(.no-highlight).disabled:hover, +.tempus-dominus-widget.dark .date-container-months div:not(.no-highlight).disabled, +.tempus-dominus-widget.dark .date-container-months div:not(.no-highlight).disabled:hover, +.tempus-dominus-widget.dark .date-container-days div:not(.no-highlight).disabled, +.tempus-dominus-widget.dark .date-container-days div:not(.no-highlight).disabled:hover, +.tempus-dominus-widget.dark .time-container-clock div:not(.no-highlight).disabled, +.tempus-dominus-widget.dark .time-container-clock div:not(.no-highlight).disabled:hover, +.tempus-dominus-widget.dark .time-container-hour div:not(.no-highlight).disabled, +.tempus-dominus-widget.dark .time-container-hour div:not(.no-highlight).disabled:hover, +.tempus-dominus-widget.dark .time-container-minute div:not(.no-highlight).disabled, +.tempus-dominus-widget.dark .time-container-minute div:not(.no-highlight).disabled:hover, +.tempus-dominus-widget.dark .time-container-second div:not(.no-highlight).disabled, +.tempus-dominus-widget.dark .time-container-second div:not(.no-highlight).disabled:hover { + color: var(--bs-gray-400); +} +.tempus-dominus-widget.light .date-container-decades div:not(.no-highlight).today:before, +.tempus-dominus-widget.light .date-container-years div:not(.no-highlight).today:before, +.tempus-dominus-widget.light .date-container-months div:not(.no-highlight).today:before, +.tempus-dominus-widget.light .date-container-days div:not(.no-highlight).today:before, +.tempus-dominus-widget.light .time-container-clock div:not(.no-highlight).today:before, +.tempus-dominus-widget.light .time-container-hour div:not(.no-highlight).today:before, +.tempus-dominus-widget.light .time-container-minute div:not(.no-highlight).today:before, +.tempus-dominus-widget.light .time-container-second div:not(.no-highlight).today:before, .tempus-dominus-widget.dark .date-container-decades div:not(.no-highlight).today:before, +.tempus-dominus-widget.dark .date-container-years div:not(.no-highlight).today:before, +.tempus-dominus-widget.dark .date-container-months div:not(.no-highlight).today:before, +.tempus-dominus-widget.dark .date-container-days div:not(.no-highlight).today:before, +.tempus-dominus-widget.dark .time-container-clock div:not(.no-highlight).today:before, +.tempus-dominus-widget.dark .time-container-hour div:not(.no-highlight).today:before, +.tempus-dominus-widget.dark .time-container-minute div:not(.no-highlight).today:before, +.tempus-dominus-widget.dark .time-container-second div:not(.no-highlight).today:before { + border-bottom-color: var(--bs-primary); + border-top-color: rgba(var(--bs-gray-900-rgb), 0.2); +} +.tempus-dominus-widget.light button, .tempus-dominus-widget.dark button { + color: var(--bs-body-bg); + background-color: var(--bs-primary); + border-color: var(--bs-primary); +} \ No newline at end of file diff --git a/think-backend.greaterchiangmai.com/public/assets/plugins/global/plugins.bundle.js b/think-backend.greaterchiangmai.com/public/assets/plugins/global/plugins.bundle.js new file mode 100644 index 0000000..24e39a2 --- /dev/null +++ b/think-backend.greaterchiangmai.com/public/assets/plugins/global/plugins.bundle.js @@ -0,0 +1,72233 @@ +/*! + * jQuery JavaScript Library v3.6.0 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2021-03-02T17:08Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var flat = arr.flat ? function( array ) { + return arr.flat.call( array ); +} : function( array ) { + return arr.concat.apply( [], array ); +}; + + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 + // Plus for old WebKit, typeof returns "function" for HTML collections + // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) + return typeof obj === "function" && typeof obj.nodeType !== "number" && + typeof obj.item !== "function"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + +var document = window.document; + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.6.0", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return flat( ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), + function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); + } ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.6 + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://js.foundation/ + * + * Date: 2021-02-16 + */ +( function( window ) { +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ( {} ).hasOwnProperty, + arr = [], + pop = arr.pop, + pushNative = arr.push, + push = arr.push, + slice = arr.slice, + + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[ i ] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + + "ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + + // "Attribute values must be CSS identifiers [capture 5] + // or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + + whitespace + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rhtml = /HTML$/i, + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + return nonHex ? + + // Strip the backslash prefix from a non-hex escape sequence + nonHex : + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + ( arr = slice.call( preferredDoc.childNodes ) ), + preferredDoc.childNodes + ); + + // Support: Android<4.0 + // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + pushNative.apply( target, slice.call( els ) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + + // Can't trust NodeList.length + while ( ( target[ j++ ] = els[ i++ ] ) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + setDocument( context ); + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { + + // ID selector + if ( ( m = match[ 1 ] ) ) { + + // Document context + if ( nodeType === 9 ) { + if ( ( elem = context.getElementById( m ) ) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && ( elem = newContext.getElementById( m ) ) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[ 2 ] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !nonnativeSelectorCache[ selector + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && + + // Support: IE 8 only + // Exclude object elements + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && + ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + if ( newContext !== context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); + } + newSelector = groups.join( "," ); + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return ( cache[ key + " " ] = value ); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement( "fieldset" ); + + try { + return !!fn( el ); + } catch ( e ) { + return false; + } finally { + + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split( "|" ), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[ i ] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( ( cur = cur.nextSibling ) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return ( name === "input" || name === "button" ) && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction( function( argument ) { + argument = +argument; + return markFunction( function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ ( j = matchIndexes[ i ] ) ] ) { + seed[ j ] = !( matches[ j ] = seed[ j ] ); + } + } + } ); + } ); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + var namespace = elem && elem.namespaceURI, + docElem = elem && ( elem.ownerDocument || elem ).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9 - 11+, Edge 12 - 18+ + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, + // Safari 4 - 5 only, Opera <=11.6 - 12.x only + // IE/Edge & older browsers don't support the :scope pseudo-class. + // Support: Safari 6.0 only + // Safari 6.0 supports :scope but it's an alias of :root there. + support.scope = assert( function( el ) { + docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); + return typeof el.querySelectorAll !== "undefined" && + !el.querySelectorAll( ":scope fieldset div" ).length; + } ); + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert( function( el ) { + el.className = "i"; + return !el.getAttribute( "className" ); + } ); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert( function( el ) { + el.appendChild( document.createComment( "" ) ); + return !el.getElementsByTagName( "*" ).length; + } ); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert( function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + } ); + + // ID filter and find + if ( support.getById ) { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute( "id" ) === attrId; + }; + }; + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode( "id" ); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find[ "TAG" ] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert( function( el ) { + + var input; + + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll( "[selected]" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push( "~=" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push( ".#.+[+~]" ); + } + + // Support: Firefox <=3.6 - 5 only + // Old Firefox doesn't throw on a badly-escaped identifier. + el.querySelectorAll( "\\\f" ); + rbuggyQSA.push( "[\\r\\n\\f]" ); + } ); + + assert( function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement( "input" ); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll( "[name=d]" ).length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: Opera 10 - 11 only + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll( "*,:x" ); + rbuggyQSA.push( ",.*:" ); + } ); + } + + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector ) ) ) ) { + + assert( function( el ) { + + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + } ); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + ) ); + } : + function( a, b ) { + if ( b ) { + while ( ( b = b.parentNode ) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { + + // Choose the first element that is related to our preferred document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( a == document || a.ownerDocument == preferredDoc && + contains( preferredDoc, a ) ) { + return -1; + } + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( b == document || b.ownerDocument == preferredDoc && + contains( preferredDoc, b ) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + return a == document ? -1 : + b == document ? 1 : + /* eslint-enable eqeqeq */ + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( ( cur = cur.parentNode ) ) { + ap.unshift( cur ); + } + cur = b; + while ( ( cur = cur.parentNode ) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[ i ] === bp[ i ] ) { + i++; + } + + return i ? + + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[ i ], bp[ i ] ) : + + // Otherwise nodes in our document sort first + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + ap[ i ] == preferredDoc ? -1 : + bp[ i ] == preferredDoc ? 1 : + /* eslint-enable eqeqeq */ + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + setDocument( elem ); + + if ( support.matchesSelector && documentIsHTML && + !nonnativeSelectorCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch ( e ) { + nonnativeSelectorCache( expr, true ); + } + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( context.ownerDocument || context ) != document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( elem.ownerDocument || elem ) != document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return ( sel + "" ).replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + + // If no nodeType, this is expected to be an array + while ( ( node = elem[ i++ ] ) ) { + + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[ 1 ] = match[ 1 ].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[ 3 ] = ( match[ 3 ] || match[ 4 ] || + match[ 5 ] || "" ).replace( runescape, funescape ); + + if ( match[ 2 ] === "~=" ) { + match[ 3 ] = " " + match[ 3 ] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[ 1 ] = match[ 1 ].toLowerCase(); + + if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { + + // nth-* requires argument + if ( !match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[ 4 ] = +( match[ 4 ] ? + match[ 5 ] + ( match[ 6 ] || 1 ) : + 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); + match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); + + // other types prohibit arguments + } else if ( match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[ 6 ] && match[ 2 ]; + + if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[ 3 ] ) { + match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + + // Get excess from tokenize (recursively) + ( excess = tokenize( unquoted, true ) ) && + + // advance to the next closing parenthesis + ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { + + // excess is a negative index + match[ 0 ] = match[ 0 ].slice( 0, excess ); + match[ 2 ] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { + return true; + } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + ( pattern = new RegExp( "(^|" + whitespace + + ")" + className + "(" + whitespace + "|$)" ) ) && classCache( + className, function( elem ) { + return pattern.test( + typeof elem.className === "string" && elem.className || + typeof elem.getAttribute !== "undefined" && + elem.getAttribute( "class" ) || + "" + ); + } ); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + /* eslint-disable max-len */ + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + /* eslint-enable max-len */ + + }; + }, + + "CHILD": function( type, what, _argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, _context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( ( node = node[ dir ] ) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( ( node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + + // Use previously-cached element index if available + if ( useCache ) { + + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + + // Use the same loop as above to seek `elem` from the start + while ( ( node = ++nodeIndex && node && node[ dir ] || + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || + ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction( function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[ i ] ); + seed[ idx ] = !( matches[ idx ] = matched[ i ] ); + } + } ) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + + // Potentially complex pseudos + "not": markFunction( function( selector ) { + + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction( function( seed, matches, _context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( ( elem = unmatched[ i ] ) ) { + seed[ i ] = !( matches[ i ] = elem ); + } + } + } ) : + function( elem, _context, xml ) { + input[ 0 ] = elem; + matcher( input, null, xml, results ); + + // Don't keep the element (issue #299) + input[ 0 ] = null; + return !results.pop(); + }; + } ), + + "has": markFunction( function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + } ), + + "contains": markFunction( function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; + }; + } ), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + + // lang value must be a valid identifier + if ( !ridentifier.test( lang || "" ) ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( ( elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); + return false; + }; + } ), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && + ( !document.hasFocus || document.hasFocus() ) && + !!( elem.type || elem.href || ~elem.tabIndex ); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return ( nodeName === "input" && !!elem.checked ) || + ( nodeName === "option" && !!elem.selected ); + }, + + "selected": function( elem ) { + + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + // eslint-disable-next-line no-unused-expressions + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos[ "empty" ]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( ( attr = elem.getAttribute( "type" ) ) == null || + attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo( function() { + return [ 0 ]; + } ), + + "last": createPositionalPseudo( function( _matchIndexes, length ) { + return [ length - 1 ]; + } ), + + "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + } ), + + "even": createPositionalPseudo( function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "odd": createPositionalPseudo( function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? + argument + length : + argument > length ? + length : + argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ) + } +}; + +Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || ( match = rcomma.exec( soFar ) ) ) { + if ( match ) { + + // Don't consume trailing commas as valid + soFar = soFar.slice( match[ 0 ].length ) || soFar; + } + groups.push( ( tokens = [] ) ); + } + + matched = false; + + // Combinators + if ( ( match = rcombinators.exec( soFar ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + + // Cast descendant combinators to space + type: match[ 0 ].replace( rtrim, " " ) + } ); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || + ( match = preFilters[ type ]( match ) ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + type: type, + matches: match + } ); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[ i ].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || + ( outerCache[ elem.uniqueID ] = {} ); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( ( oldCache = uniqueCache[ key ] ) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return ( newCache[ 2 ] = oldCache[ 2 ] ); + } else { + + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[ i ]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[ 0 ]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[ i ], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( ( elem = unmatched[ i ] ) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction( function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( + selector || "*", + context.nodeType ? [ context ] : context, + [] + ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( ( elem = temp[ i ] ) ) { + matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) ) { + + // Restore matcherIn since elem is not yet a final match + temp.push( ( matcherIn[ i ] = elem ) ); + } + } + postFinder( null, ( matcherOut = [] ), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) && + ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { + + seed[ temp ] = !( results[ temp ] = elem ); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + } ); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[ 0 ].type ], + implicitRelative = leadingRelative || Expr.relative[ " " ], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + ( checkContext = context ).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; + } else { + matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[ j ].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens + .slice( 0, i - 1 ) + .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), + + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), + len = elems.length; + + if ( outermost ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + outermostContext = context == document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( !context && elem.ownerDocument != document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( ( matcher = elementMatchers[ j++ ] ) ) { + if ( matcher( elem, context || document, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + + // They will have gone through all possible matchers + if ( ( elem = !matcher && elem ) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( ( matcher = setMatchers[ j++ ] ) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !( unmatched[ i ] || setMatched[ i ] ) ) { + setMatched[ i ] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[ i ] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( + selector, + matcherFromGroupMatchers( elementMatchers, setMatchers ) + ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( ( selector = compiled.selector || selector ) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[ 0 ] = match[ 0 ].slice( 0 ); + if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { + + context = ( Expr.find[ "ID" ]( token.matches[ 0 ] + .replace( runescape, funescape ), context ) || [] )[ 0 ]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[ i ]; + + // Abort if we hit a combinator + if ( Expr.relative[ ( type = token.type ) ] ) { + break; + } + if ( ( find = Expr.find[ type ] ) ) { + + // Search, expanding context for leading sibling combinators + if ( ( seed = find( + token.matches[ 0 ].replace( runescape, funescape ), + rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || + context + ) ) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert( function( el ) { + + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; +} ); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert( function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute( "href" ) === "#"; +} ) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + } ); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert( function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +} ) ) { + addHandle( "value", function( elem, _name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + } ); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert( function( el ) { + return el.getAttribute( "disabled" ) == null; +} ) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; + } + } ); +} + +return Sizzle; + +} )( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +} +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, _i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, _i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, _i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( elem.contentDocument != null && + + // Support: IE 11+ + // elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( _i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the primary Deferred + primary = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + primary.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( primary.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return primary.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); + } + + return primary.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( toType( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, _key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( _all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // Support: IE <=9 only + // IE <=9 replaces "; + support.option = !!div.lastChild; +} )(); + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
      " ], + col: [ 2, "", "
      " ], + tr: [ 2, "", "
      " ], + td: [ 3, "", "
      " ], + + _default: [ 0, "", "" ] +}; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// Support: IE <=9 only +if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "" ]; +} + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, attached, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 - 11+ +// focus() and blur() are asynchronous, except when they are no-op. +// So expect focus to be synchronous when the element is already active, +// and blur to be synchronous when the element is not already active. +// (focus and blur are always synchronous in other supported browsers, +// this just defines when we can count on it). +function expectSync( elem, type ) { + return ( elem === safeActiveElement() ) === ( type === "focus" ); +} + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = Object.create( null ); + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), + + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", returnTrue ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, expectSync ) { + + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add + if ( !expectSync ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var notAsync, result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + // Saved data should be false in such cases, but might be a leftover capture object + // from an async native handler (gh-4350) + if ( !saved.length ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + // Support: IE <=9 - 11+ + // focus() and blur() are asynchronous + notAsync = expectSync( this, type ); + this[ type ](); + result = dataPriv.get( this, type ); + if ( saved !== result || notAsync ) { + dataPriv.set( this, type, false ); + } else { + result = {}; + } + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + + // Support: Chrome 86+ + // In Chrome, if an element having a focusout handler is blurred by + // clicking outside of it, it invokes the handler synchronously. If + // that handler calls `.remove()` on the element, the data is cleared, + // leaving `result` undefined. We need to guard against this. + return result && result.value; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering the + // native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved.length ) { + + // ...and capture the result + dataPriv.set( this, type, { + value: jQuery.event.trigger( + + // Support: IE <=9 - 11+ + // Extend with the prototype to reset the above stopImmediatePropagation() + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), + saved.slice( 1 ), + this + ) + } ); + + // Abort handling of the native event + event.stopImmediatePropagation(); + } + } + } ); +} + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + which: true +}, jQuery.event.addProp ); + +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, expectSync ); + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + // Suppress native focus or blur as it's already being fired + // in leverageNative. + _default: function() { + return true; + }, + + delegateType: delegateType + }; +} ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.get( src ); + events = pdataOld.events; + + if ( events ) { + dataPriv.remove( dest, "handle events" ); + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = flat( args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + }, doc ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html; + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var swap = function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableTrDimensionsVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + }, + + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + // + // Support: Firefox 70+ + // Only Firefox includes border widths + // in computed dimensions. (gh-4529) + reliableTrDimensions: function() { + var table, tr, trChild, trStyle; + if ( reliableTrDimensionsVal == null ) { + table = document.createElement( "table" ); + tr = document.createElement( "tr" ); + trChild = document.createElement( "div" ); + + table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; + tr.style.cssText = "border:1px solid"; + + // Support: Chrome 86+ + // Height set through cssText does not get applied. + // Computed height then comes back as 0. + tr.style.height = "1px"; + trChild.style.height = "9px"; + + // Support: Android 8 Chrome 86+ + // In our bodyBackground.html iframe, + // display for all div elements is set to "inline", + // which causes a problem only in Android 8 Chrome 86. + // Ensuring the div is display: block + // gets around this issue. + trChild.style.display = "block"; + + documentElement + .appendChild( table ) + .appendChild( tr ) + .appendChild( trChild ); + + trStyle = window.getComputedStyle( tr ); + reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + + parseInt( trStyle.borderTopWidth, 10 ) + + parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; + + documentElement.removeChild( table ); + } + return reliableTrDimensionsVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined +function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property +function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + +function setPositiveNumber( _elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. + if ( ( !support.boxSizingReliable() && isBorderBox || + + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName( elem, "tr" ) || + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + val === "auto" || + + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + + // Make sure the element is visible & connected + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "gridArea": true, + "gridColumn": true, + "gridColumnEnd": true, + "gridColumnStart": true, + "gridRow": true, + "gridRowEnd": true, + "gridRowStart": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( _i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +support.focusin = "onfocusin" in window; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = { guid: Date.now() }; + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml, parserErrorElem; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) {} + + parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; + if ( !xml || parserErrorElem ) { + jQuery.error( "Invalid XML: " + ( + parserErrorElem ? + jQuery.map( parserErrorElem.childNodes, function( el ) { + return el.textContent; + } ).join( "\n" ) : + data + ) ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ).filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ).map( function( _i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + +originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Use a noop converter for missing script but not if jsonp + if ( !isSuccess && + jQuery.inArray( "script", s.dataTypes ) > -1 && + jQuery.inArray( "json", s.dataTypes ) < 0 ) { + s.converters[ "text script" ] = function() {}; + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( _i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + +jQuery.ajaxPrefilter( function( s ) { + var i; + for ( i in s.headers ) { + if ( i.toLowerCase() === "content-type" ) { + s.contentType = s.headers[ i ] || ""; + } + } +} ); + + +jQuery._evalUrl = function( url, options, doc ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options, doc ); + } + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + + + + + + + + + + + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/article-where-else/edit.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/article-where-else/edit.blade.php new file mode 100644 index 0000000..b1b4073 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/article-where-else/edit.blade.php @@ -0,0 +1,594 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'WHERE ELSE : Edit Article', + 'pageName' => 'Edit', + 'pageParent' => 'Article Management', + 'pageParentLink' => url('where-else/article'), + ]) +
      +
      + + +
      + + + + + + + {{-- Left --}} +
      + +
      + +
      + + + +
      + + + @if ($itemView->image_url && $itemView->image_name) +
      +
      + @else +
      + @endif + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg + image + files are accepted
      + +
      + +
      + +
      +

      Active

      +
      + +
      +
      + + +
      + +
      +
      + + + {{-- Right --}} +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + +
      + @foreach ($subCategoriesView as $item) + + @endforeach + +
      + +
      + +
      +
      + + + + + + + + + + + + + +
      +
      + +
      + + +
      + + +
      + + +
      + +
      + +
      + +
      + + +
      + +
      + + +
      + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + +@stop + + + + +@section('script') + + + + + + + + + + + + + + + + + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/article-where-else/index.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/article-where-else/index.blade.php new file mode 100644 index 0000000..83370f2 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/article-where-else/index.blade.php @@ -0,0 +1,411 @@ +@extends('layouts.backendTemplate') + +@section('content') + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'WHERE ELSE : Article Management', + 'pageName' => 'Article Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + + +
      + +
      +
      + + + @if (Auth::user()->role != 2) +
      +
      + Add + +
      + +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + +
      + +
      +
      + + + + + + + + +
      +
      + +
      +
      + + + + + + + + +
      +
      + + + +
      +
      + +
      + + + + + + + + + + + + + + + + + + + @foreach ($itemView as $obj) + + + + + + + + + + + + + + + + + + + @endforeach + + +
      PicDateSubjectSubject (EN)CreatedActiveManage
      +
      + @if ($obj->image_url && $obj->image_name) + +
      +
      +
      + @else +
      +
      + @endif +
      +
      + {{ Carbon\Carbon::parse($obj->due_date)->format('d, M Y') }} + + + {{ $obj->name }} + + + + {{ $obj->name_en }} + + + {{ Carbon\Carbon::parse($obj->created_at)->format('d, M Y') }} + + @if ($obj->active == 1) + Active + @else + Inactive + @endif + + + {{-- View --}} + {{-- + + + + + + + --}} + + {{-- Edit --}} + + + + + + + + + + {{-- Delete --}} + @if ($obj->active == 1 && Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/article/add.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/article/add.blade.php new file mode 100644 index 0000000..e444c91 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/article/add.blade.php @@ -0,0 +1,620 @@ + @extends('layouts.backendTemplate') + + @section('content') + + + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'CHIANG MAI AND NOWHERE ELSE : Add Article', + 'pageName' => 'Add', + 'pageParent' => 'Article Management', + 'pageParentLink' => url('no-where-else/article'), + ]) + +
      +
      + + + +
      + + + + + +
      + +
      + + +
      + + + +
      + +
      + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg + image + files are accepted
      + +
      + + {{-- Active --}} +
      +
      +

      Active

      +
      +
      +
      + + +
      + + +
      + +
      + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + +
      + @foreach ($subCategoriesView as $item) + + @endforeach + +
      + +
      + +
      + +
      + + + + + + + + +
      +
      + +
      + + +
      + + +
      + + +
      + +
      + +
      + +
      + + +
      + +
      + + +
      + + + + + + + + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + + + + + + + + + + + + + + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/article/edit.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/article/edit.blade.php new file mode 100644 index 0000000..386f66e --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/article/edit.blade.php @@ -0,0 +1,604 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'CHIANG MAI AND NOWHERE ELSE : Edit Article', + 'pageName' => 'Edit', + 'pageParent' => 'Article Management', + 'pageParentLink' => url('no-where-else/article'), + ]) +
      +
      + + +
      + + + + + + + {{-- Left --}} +
      + +
      + +
      + + + +
      + + + @if ($itemView->image_url && $itemView->image_name) +
      +
      + @else +
      + @endif + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg + image + files are accepted
      + +
      + +
      + +
      +

      Active

      +
      + +
      +
      + + +
      + +
      +
      + + + {{-- Right --}} +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + +
      + @foreach ($subCategoriesView as $item) + + @endforeach + +
      + +
      + +
      +
      + + + + + + + + + + + + + +
      +
      + +
      + + +
      + + +
      + + +
      + +
      + +
      + +
      + + +
      + +
      + + +
      + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + +@stop + + + + +@section('script') + + + + + + + + + + + + + + + + + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/article/index.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/article/index.blade.php new file mode 100644 index 0000000..a7d8625 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/article/index.blade.php @@ -0,0 +1,411 @@ +@extends('layouts.backendTemplate') + +@section('content') + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'CHIANG MAI AND NOWHERE ELSE : Article Management', + 'pageName' => 'Article Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + + +
      + +
      +
      + + + @if (Auth::user()->role != 2) +
      +
      + Add + +
      + +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + +
      + +
      +
      + + + + + + + + +
      +
      + +
      +
      + + + + + + + + +
      +
      + + + +
      +
      + +
      + + + + + + + + + + + + + + + + + + + @foreach ($itemView as $obj) + + + + + + + + + + + + + + + + + + + @endforeach + + +
      PicDateSubjectSubject (EN)CreatedActiveManage
      +
      + @if ($obj->image_url && $obj->image_name) + +
      +
      +
      + @else +
      +
      + @endif +
      +
      + {{ Carbon\Carbon::parse($obj->due_date)->format('d, M Y') }} + + + {{ $obj->name }} + + + + {{ $obj->name_en }} + + + {{ Carbon\Carbon::parse($obj->created_at)->format('d, M Y') }} + + @if ($obj->active == 1) + Active + @else + Inactive + @endif + + + {{-- View --}} + {{-- + + + + + + + --}} + + {{-- Edit --}} + + + + + + + + + + {{-- Delete --}} + @if ($obj->active == 1 && Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/category/add.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/category/add.blade.php new file mode 100644 index 0000000..5e935aa --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/category/add.blade.php @@ -0,0 +1,178 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Category Add', + 'pageName' => 'Add', + 'pageParent' => 'Category Management', + 'pageParentLink' => url('category'), + ]) + +
      +
      + + +
      + + + + + +
      + +
      + +
      + + + +
      + +
      + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg + image + files are accepted
      + +
      + + {{-- Active --}} +
      +
      +

      Active

      +
      +
      +
      + + +
      + + +
      + +
      + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + +
      + + +
      + + +
      + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/category/edit.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/category/edit.blade.php new file mode 100644 index 0000000..ce0c428 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/category/edit.blade.php @@ -0,0 +1,186 @@ +@extends('layouts.backendTemplate') + +@section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Category Edit', + 'pageName' => 'Edit', + 'pageParent' => 'Category Management', + 'pageParentLink' => url('category'), + ]) +
      +
      + + +
      + + + + + + + {{-- Left --}} +
      + +
      + +
      + + + +
      + + + @if ($itemView->image_url && $itemView->image_name) +
      +
      + @else +
      + @endif + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg + image + files are accepted
      + +
      + +
      +
      +

      Active

      +
      +
      +
      + +
      + +
      +
      + + + {{-- Right --}} +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +

      Overview

      +
      +
      + +
      + + +
      + + +
      + + +
      + + +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/category/index.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/category/index.blade.php new file mode 100644 index 0000000..c2f3a9e --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/category/index.blade.php @@ -0,0 +1,270 @@ +@extends('layouts.backendTemplate') + +@section('content') + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'Category Management', + 'pageName' => 'Category Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      + +
      + + + + + + + +
      + +
      +
      + +
      + +
      + Add +
      + +
      + +
      + + +
      + + + + + + + + + + + + + + + + + + + + @foreach ($itemView as $obj) + + + + + + + + + + + + + + + + + + + @endforeach + + +
      PicNameName (EN)CreatedActiveActions
      +
      + @if ($obj->image_url && $obj->image_name) + +
      +
      +
      + @else +
      +
      + @endif +
      +
      + {{ $obj->name }} + + {{ $obj->name_en }} + {{ date('d M, Y', strtotime($obj->created_at)) }} + @if ($obj->active == 1) + Active + @else + Inactive + @endif + + + {{-- Edit --}} + + + + + + + + + + {{-- Delete --}} + @if ($obj->active == 1) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/dashboard.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/dashboard.blade.php new file mode 100644 index 0000000..6c5ef73 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/dashboard.blade.php @@ -0,0 +1,316 @@ +@extends('layouts/backendTemplate') + +@section('content') +
      + +
      + +
      + +
      + +
      + +

      + Dashboard +

      + + + +
      + +
      + +
      + + +
      + +
      + + + @if ($itemView['sub_category_no_where_else']) +

      CHIANG MAI AND NOWHERE ELSE

      +
      + @foreach ($itemView['sub_category_no_where_else'] as $item) +
      +
      +
      + +
      + + + + + + +
      + +
      + + + {{ number_format($item['article_count'], 0) }} + + +
      + + {{ $item['name'] ?? '-' }} + +
      +
      + +
      +
      +
      + @endforeach +
      + @endif + + + @if ($itemView['sub_category_where_else']) +

      WHERE ELSE

      +
      + @foreach ($itemView['sub_category_where_else'] as $item) +
      +
      +
      + +
      + + + + + + +
      + +
      + + + {{ number_format($item['article_count'], 0) }} + + +
      + + {{ $item['name'] ?? '-' }} + +
      +
      + +
      +
      +
      + @endforeach +
      + @endif + + +

      FILES

      +
      + +
      + +
      + +
      + +
      + + + + + + + + +
      + + +
      + + + {{ number_format($countVideoView, 0) }} + + + +
      + Video +
      + +
      + +
      + +
      + +
      + +
      + +
      + +
      + +
      + + + + + + + + +
      + + +
      + + + {{ number_format($countSoundView, 0) }} + + + +
      + Sound +
      + +
      + + +
      + +
      + +
      + +
      + +
      + +
      + +
      + + + + + + + + +
      + + +
      + + + {{ number_format($countImageView, 0) }} + + + +
      + Images +
      + +
      + + +
      + +
      + +
      + + +
      + +
      + +
      + +
      + + + + + + + + +
      + + +
      + + + {{ number_format($countDocumentView, 0) }} + + + +
      + Documents +
      + +
      + + +
      + +
      + +
      + + +
      + +
      + +
      + +
      +
      +@endsection + + +@section('script') + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/document/add.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/document/add.blade.php new file mode 100644 index 0000000..8470f5f --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/document/add.blade.php @@ -0,0 +1,366 @@ + @extends('layouts.backendTemplate') + + @section('content') + + + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Document Add', + 'pageName' => 'Add', + 'pageParent' => 'Document Management', + 'pageParentLink' => url('document'), + ]) + +
      +
      + + + +
      + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + + + + +
      0%
      + +
      Allowed Types .pdf, .xls, .doc, .docx, .pptx, .csv, + .txt
      +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/document/folder/add.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/document/folder/add.blade.php new file mode 100644 index 0000000..7315fff --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/document/folder/add.blade.php @@ -0,0 +1,95 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Document Create Folder', + 'pageName' => 'Create folder', + 'pageParent' => 'Document Management', + 'pageParentLink' => url('document'), + ]) + +
      +
      + +
      + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/document/folder/edit.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/document/folder/edit.blade.php new file mode 100644 index 0000000..884f778 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/document/folder/edit.blade.php @@ -0,0 +1,96 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Document Edit Folder', + 'pageName' => 'Edit folder', + 'pageParent' => 'Document Management', + 'pageParentLink' => url('document'), + ]) + +
      +
      + +
      + + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/document/folder/index.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/document/folder/index.blade.php new file mode 100644 index 0000000..001724f --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/document/folder/index.blade.php @@ -0,0 +1,324 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'Document Management Folder ' . $folderView->name, + 'pageName' => 'Document Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +
      + + @if (Auth::user()->role != 2) +
      +
      + Add + +
      +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + +
      + +
      + + + + + + + + + + + + + + + @foreach ($itemView as $obj) + + + + + + + + + + + @endforeach + + +
      NameCreatedManage
      + + + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Download --}} + + + + + {{-- Copy --}} + + + + {{-- Delete --}} + @if (Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/document/index.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/document/index.blade.php new file mode 100644 index 0000000..e0ce21b --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/document/index.blade.php @@ -0,0 +1,451 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'Document Management', + 'pageName' => 'Document Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +
      + + @if (Auth::user()->role != 2) +
      + +
      + Add +
      +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + +
      + +
      + + + + + + + + + + + + + + + + @foreach ($folderView as $obj) + + + + + + + + + + @endforeach + + @foreach ($itemView as $obj) + + + + + + + + + + + @endforeach + + +
      NameCreatedManage
      +
      + + + + + + + + {{ $obj->name }} +
      +
      + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Download --}} + + + + + {{-- Edit --}} + + + + + + + + + + {{-- Delete --}} + + + + + + + + + +
      + + + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Download --}} + + + + + {{-- Copy --}} + + + + {{-- Delete --}} + @if (Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/forgot_password.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/forgot_password.blade.php new file mode 100644 index 0000000..47baa6b --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/forgot_password.blade.php @@ -0,0 +1,121 @@ +@extends('layouts.loginTemplate') + +@section('content') + +
      + + + + + +
      + +

      Forgot Password

      + +
      + + + + +
      + + + +
      + + + +
      +
      + + Login ? + +
      + + + +
      + +
      + + +
      + +@stop + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/image/add.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/image/add.blade.php new file mode 100644 index 0000000..3d13c65 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/image/add.blade.php @@ -0,0 +1,367 @@ + @extends('layouts.backendTemplate') + + @section('content') + + + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Image Add', + 'pageName' => 'Add', + 'pageParent' => 'Image Management', + 'pageParentLink' => url('image'), + ]) + +
      +
      + + + +
      + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + + + + +
      0%
      + +
      Allowed Types .jpg, .bmp, .jpeg, .png
      +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/image/folder/add.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/image/folder/add.blade.php new file mode 100644 index 0000000..1db6f83 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/image/folder/add.blade.php @@ -0,0 +1,95 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Image Create Folder', + 'pageName' => 'Create folder', + 'pageParent' => 'Image Management', + 'pageParentLink' => url('image'), + ]) + +
      +
      + +
      + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/image/folder/edit.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/image/folder/edit.blade.php new file mode 100644 index 0000000..5374897 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/image/folder/edit.blade.php @@ -0,0 +1,96 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Image Edit Folder', + 'pageName' => 'Edit folder', + 'pageParent' => 'Image Management', + 'pageParentLink' => url('image'), + ]) + +
      +
      + +
      + + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/image/folder/index.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/image/folder/index.blade.php new file mode 100644 index 0000000..3c79d96 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/image/folder/index.blade.php @@ -0,0 +1,316 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'Image Management Folder ' . $folderView->name, + 'pageName' => 'Image Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +
      + + @if (Auth::user()->role != 2) +
      +
      + Add + +
      +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + +
      + +
      + + + + + + + + + + + + + + + @foreach ($itemView as $obj) + + + + + + + + + + + @endforeach + + +
      NameCreatedManage
      + + + + + + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Download --}} + + + + + {{-- Copy --}} + + + + {{-- Delete --}} + @if (Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/image/index.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/image/index.blade.php new file mode 100644 index 0000000..788231f --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/image/index.blade.php @@ -0,0 +1,449 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'Image Management', + 'pageName' => 'Image Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +
      + + @if (Auth::user()->role != 2) +
      + + + +
      + Add +
      + +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + +
      + +
      + + + + + + + + + + + + + + + @foreach ($folderView as $obj) + + + + + + + + + + @endforeach + + + @foreach ($itemView as $obj) + + + + + + + + + + + + + @endforeach + + +
      NameCreatedAction
      +
      + + + + + + + + {{ $obj->name }} +
      +
      + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Download --}} + + + + + {{-- Edit --}} + + + + + + + + + + {{-- Delete --}} + + + + + + + + + +
      + + + + + + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Download --}} + + + + + {{-- Copy --}} + + + + {{-- Delete --}} + @if (Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/login.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/login.blade.php new file mode 100644 index 0000000..874a812 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/login.blade.php @@ -0,0 +1,131 @@ +@extends('layouts.loginTemplate') + +@section('content') + +
      + + + + + +
      + +

      + +

      + +
      + + + + +
      + + + +
      + + +
      + + + +
      + + + +
      +
      + + {{-- Forgot + Password ? --}} + +
      + + + +
      + +
      + + +
      + +@stop + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/profile.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/profile.blade.php new file mode 100644 index 0000000..e7094e0 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/profile.blade.php @@ -0,0 +1,110 @@ +@extends('layouts/backendTemplate') + +@section('content') + +
      +
      +
      +

      Profile

      + +
      +
      +
      +
      + +
      + +
      + + +
      +
      + @if (Session::has('messageSuccess')) + @include('uc/messageSuccess') + @endif + + @if (Session::has('messageFail')) + @include('uc/messageFail') + @endif + +
      +
      + + +
      +
      +

      Profile

      +
      + +
      + +
      + + + + + +
      + +
      + +
      +
      + + +
      + +
      + +
      +
      + + +
      + +
      + +
      +
      + + +
      + +
      + +
      +
      + + +
      + + +
      + +
      + + +
      +
      +
      +
      + + + +@stop + +@section('script') + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/reset_password.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/reset_password.blade.php new file mode 100644 index 0000000..322807a --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/reset_password.blade.php @@ -0,0 +1,122 @@ +@extends('layouts.loginTemplate') + +@section('content') + +
      + + + + + + +
      + +

      Reset Password

      + +
      + + + + +
      + + + +
      + + + +
      +
      + + Login ? + +
      + + + +
      + +
      + + +
      + +@stop + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/sound/add.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/sound/add.blade.php new file mode 100644 index 0000000..462d06e --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/sound/add.blade.php @@ -0,0 +1,365 @@ + @extends('layouts.backendTemplate') + + @section('content') + + + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Sound Add', + 'pageName' => 'Add', + 'pageParent' => 'Sound Management', + 'pageParentLink' => url('sound'), + ]) + +
      +
      + + + +
      + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + + + + +
      0%
      + +
      Allowed Types .m4a, .mp4, .mp3, .wav
      +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/sound/folder/add.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/sound/folder/add.blade.php new file mode 100644 index 0000000..ab106f4 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/sound/folder/add.blade.php @@ -0,0 +1,95 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Sound Create Folder', + 'pageName' => 'Create folder', + 'pageParent' => 'Sound Management', + 'pageParentLink' => url('sound'), + ]) + +
      +
      + +
      + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/sound/folder/edit.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/sound/folder/edit.blade.php new file mode 100644 index 0000000..36dda2c --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/sound/folder/edit.blade.php @@ -0,0 +1,96 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Sound Edit Folder', + 'pageName' => 'Edit folder', + 'pageParent' => 'Sound Management', + 'pageParentLink' => url('sound'), + ]) + +
      +
      + +
      + + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/sound/folder/index.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/sound/folder/index.blade.php new file mode 100644 index 0000000..fe11ad6 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/sound/folder/index.blade.php @@ -0,0 +1,311 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'Sound Management Folder ' . $folderView->name, + 'pageName' => 'Sound Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +
      + + @if (Auth::user()->role != 2) +
      +
      + Add + +
      +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + +
      + +
      + + + + + + + + + + + + + + + @foreach ($itemView as $obj) + + + + + + + + + + + @endforeach + + +
      NameCreatedManage
      + + + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Download --}} + + + + + {{-- Copy --}} + + + + {{-- Delete --}} + @if (Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/sound/index.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/sound/index.blade.php new file mode 100644 index 0000000..15380e2 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/sound/index.blade.php @@ -0,0 +1,440 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'Sound Management', + 'pageName' => 'Sound Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +
      + + @if (Auth::user()->role != 2) +
      + + + +
      + Add +
      + +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + +
      + +
      + + + + + + + + + + + + + + @foreach ($folderView as $obj) + + + + + + + + + + @endforeach + + @foreach ($itemView as $obj) + + + + + + + + + + + + @endforeach + + +
      NameCreatedAction
      +
      + + + + + + + + {{ $obj->name }} +
      +
      + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Download --}} + + + + + {{-- Edit --}} + + + + + + + + + + {{-- Delete --}} + + + + + + + + + +
      + + + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Download --}} + + + + + {{-- Copy --}} + + + + {{-- Delete --}} + @if (Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/sub-category-where-else/add.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/sub-category-where-else/add.blade.php new file mode 100644 index 0000000..64663e4 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/sub-category-where-else/add.blade.php @@ -0,0 +1,472 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'WHERE ELSE : Add Sub Category', + 'pageName' => 'Add', + 'pageParent' => 'Sub Category Management', + 'pageParentLink' => url('where-else/sub-category'), + ]) + +
      +
      + + + +
      + + + + + +
      + +
      + + +
      + + + +
      + +
      + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg + image + files are accepted
      + +
      + + {{-- Active --}} +
      +
      +

      Active

      +
      +
      +
      + + +
      + + +
      + +
      + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + + + {{--
      + +
      + + + + + + + + +
      +
      --}} + +
      + + +
      + + +
      + + +
      + + {{--
      + +
      + +
      + + +
      + +
      + + +
      --}} + + {{-- + + + + + + --}} + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + + + + + + + + + + + + + + + + + + + + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/sub-category-where-else/edit.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/sub-category-where-else/edit.blade.php new file mode 100644 index 0000000..2c92690 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/sub-category-where-else/edit.blade.php @@ -0,0 +1,505 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'WHERE ELSE : Edit Sub Category', + 'pageName' => 'Edit', + 'pageParent' => 'Sub Category Management', + 'pageParentLink' => url('where-else/sub-category'), + ]) +
      +
      + + +
      + + + + + + + {{-- Left --}} +
      + +
      + +
      + + + +
      + + + @if ($itemView->image_url && $itemView->image_name) +
      +
      + @else +
      + @endif + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg + image + files are accepted
      + +
      + +
      + +
      +

      Active

      +
      + +
      +
      + + +
      + +
      +
      + + + {{-- Right --}} +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +

      Overview

      +
      +
      + +
      + + {{--
      +
      + + + + + + + + + + + + + +
      +
      --}} + +
      + + +
      + + +
      + + +
      + + {{--
      + +
      + +
      + + +
      + +
      + + +
      --}} + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + +@stop + + + + +@section('script') + + + + + {{-- + + + + + + + + + + + + + + + + + --}} + + + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/sub-category-where-else/index.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/sub-category-where-else/index.blade.php new file mode 100644 index 0000000..df14a5f --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/sub-category-where-else/index.blade.php @@ -0,0 +1,408 @@ +@extends('layouts.backendTemplate') + +@section('content') + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'WHERE ELSE : Sub Category Management', + 'pageName' => 'Sub Category Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + + +
      + +
      +
      + + + @if (Auth::user()->role != 2) +
      +
      + Add + +
      + +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + + {{--
      + +
      +
      + + + + + + + + +
      +
      + +
      +
      + + + + + + + + +
      +
      + + + +
      --}} +
      + +
      + + + + + + + + {{-- --}} + + + + + + + + + + + @foreach ($itemView as $obj) + + + + + + + + + + + + + + + + + + @endforeach + + +
      PicDateSubjectSubject (EN)CreatedActiveManage
      +
      + @if ($obj->image_url && $obj->image_name) + +
      +
      +
      + @else +
      +
      + @endif +
      +
      + + {{ $obj->name }} + + + + {{ $obj->name_en }} + + + {{ Carbon\Carbon::parse($obj->created_at)->format('d, M Y') }} + + @if ($obj->active == 1) + Active + @else + Inactive + @endif + + + {{-- View --}} + + + + + + + + + + {{-- Edit --}} + + + + + + + + + + {{-- Delete --}} + @if ($obj->active == 1 && Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/sub-category/add.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/sub-category/add.blade.php new file mode 100644 index 0000000..d3e2547 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/sub-category/add.blade.php @@ -0,0 +1,474 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'CHIANG MAI AND NOWHERE ELSE : Add Category Management', + 'pageName' => 'Add', + 'pageParent' => 'Sub Category Management', + 'pageParentLink' => url('no-where-else/sub-category'), + ]) + +
      +
      + + + +
      + + + + + +
      + +
      + + +
      + + + +
      + +
      + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg + image + files are accepted
      + +
      + + {{-- Active --}} +
      +
      +

      Active

      +
      +
      +
      + + +
      + + +
      + +
      + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + + + {{--
      + +
      + + + + + + + + +
      +
      --}} + +
      + + +
      + + +
      + + +
      + + {{--
      + +
      + +
      + + +
      + +
      + + +
      --}} + + {{-- + + + + + + --}} + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + + + + + + + + + + + + + + + + + + + + + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/sub-category/edit.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/sub-category/edit.blade.php new file mode 100644 index 0000000..09086e2 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/sub-category/edit.blade.php @@ -0,0 +1,505 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'CHIANG MAI AND NOWHERE ELSE : Edit Sub Category Management', + 'pageName' => 'Edit', + 'pageParent' => 'Sub Category Management', + 'pageParentLink' => url('no-where-else/sub-category'), + ]) +
      +
      + + +
      + + + + + + + {{-- Left --}} +
      + +
      + +
      + + + +
      + + + @if ($itemView->image_url && $itemView->image_name) +
      +
      + @else +
      + @endif + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg + image + files are accepted
      + +
      + +
      + +
      +

      Active

      +
      + +
      +
      + + +
      + +
      +
      + + + {{-- Right --}} +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +

      Overview

      +
      +
      + +
      + + {{--
      +
      + + + + + + + + + + + + + +
      +
      --}} + +
      + + +
      + + +
      + + +
      + + {{--
      + +
      + +
      + + +
      + +
      + + +
      --}} + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + +@stop + + + + +@section('script') + + + + + + + + + + + + + + + + + + + + + + + + + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/sub-category/index.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/sub-category/index.blade.php new file mode 100644 index 0000000..5aeb255 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/sub-category/index.blade.php @@ -0,0 +1,407 @@ +@extends('layouts.backendTemplate') + +@section('content') + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'CHIANG MAI AND NOWHERE ELSE : Sub Category Management', + 'pageName' => 'Sub Category Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + + +
      + +
      +
      + + + @if (Auth::user()->role != 2) +
      +
      + Add + +
      + +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + + {{--
      + +
      +
      + + + + + + + + +
      +
      + +
      +
      + + + + + + + + +
      +
      + + + +
      --}} + +
      + +
      + + + + + + + + + + + + + + + + + + @foreach ($itemView as $obj) + + + + + + + + + + + + + + + + + @endforeach + + +
      PicSubjectSubject (EN)CreatedActiveManage
      +
      + @if ($obj->image_url && $obj->image_name) + +
      +
      +
      + @else +
      +
      + @endif +
      +
      + + {{ $obj->name }} + + + + {{ $obj->name_en }} + + + {{ Carbon\Carbon::parse($obj->created_at)->format('d, M Y') }} + + @if ($obj->active == 1) + Active + @else + Inactive + @endif + + + {{-- View --}} + + + + + + + + + + {{-- Edit --}} + + + + + + + + + + {{-- Delete --}} + @if ($obj->active == 1 && Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/user/add.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/user/add.blade.php new file mode 100644 index 0000000..e527abb --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/user/add.blade.php @@ -0,0 +1,212 @@ +@extends('layouts.backendTemplate') + +@section('content') + + +
      + +
      + + @include('uc.admin.breadcrumb', [ + 'title' => 'User Add', + 'pageName' => 'Add', + 'pageParent' => 'Users Management', + 'pageParentLink' => url('user'), + ]) + +
      +
      + + +
      + + + + + +
      + +
      + + + +
      + +
      +

      Profile Picture

      +
      + +
      + +
      + + + +
      + +
      + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg image + files are accepted
      + +
      + +
      + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + +
      +
      + + +
      +
      +
      +
      + + +
      +
      +
      +
      + + +
      +
      +
      + +
      + + +
      + +
      + + +
      + + +
      + + +
      + +
      + + +
      + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + +@stop + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/user/edit.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/user/edit.blade.php new file mode 100644 index 0000000..0527305 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/user/edit.blade.php @@ -0,0 +1,244 @@ +@extends('layouts.backendTemplate') + +@section('content') + + +
      + +
      + + @include('uc.admin.breadcrumb', [ + 'title' => 'User Edit', + 'pageName' => 'Edit', + 'pageParent' => 'Users Management', + 'pageParentLink' => url('user'), + ]) + +
      +
      + + +
      + + + + + + +
      + +
      + +
      + +
      +

      Profile Picture

      +
      + +
      + +
      + + + +
      + + @if ($userView->image_url && $userView->image_name) +
      +
      + @else +
      + @endif + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg image + files are accepted
      + + + {{-- Active --}} +
      + +
      +

      Active

      +
      + +
      +
      + +
      + +
      + +
      + +
      + +
      + + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + + + +
      + +
      +
      + role == 0) checked @endif + data-gtm-form-interact-field-id="1"> + +
      +
      +
      +
      + role == 1) checked @endif + data-gtm-form-interact-field-id="1"> + +
      +
      +
      +
      + role == 2) checked @endif + data-gtm-form-interact-field-id="1"> + +
      +
      +
      + + +
      + + +
      + +
      + + +
      + + +
      + + + + + + +
      + +
      + + +
      + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + +@stop + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/user/index.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/user/index.blade.php new file mode 100644 index 0000000..2e95ac2 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/user/index.blade.php @@ -0,0 +1,357 @@ +@extends('layouts.backendTemplate') + +@section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumbList', [ + 'title' => 'Users Management', + 'pageName' => 'User Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + + +
      + +
      +
      + + + + + + + +
      +
      + + +
      + +
      + +
      + + +
      + Add +
      + +
      + +
      + + + +
      + + + + + + + + + + + + + + + + + + + + @foreach ($userView as $key => $obj) + + + + + + + + + + + + + + + @endforeach + + + +
      PicRoleFirst NameLast NameEmailStatusCreated AtActions
      +
      + @if ($obj->image_url && $obj->image_name) + +
      +
      +
      + @else +
      +
      + @endif +
      +
      + @if ($obj->role == 1) + EDITOR + @elseif($obj->role == 2) + CONTRIBUTOR + @else + ADMIN + @endif + {{ $obj->first_name }}{{ $obj->last_name }}{{ $obj->email }} + @if ($obj->active == 1) + Active + @else + Locked + @endif + {{ date('d M, Y', strtotime($obj->created_at)) }} + + {{-- Edit --}} + + + + + + + + + + {{-- Delete --}} + @if ($obj->active == 1) + + + + + + + + + + @endif + +
      +
      +
      +
      +
      +
      +
      + + + {{-- --}} + +@stop + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/video/add.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/video/add.blade.php new file mode 100644 index 0000000..dc3691e --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/video/add.blade.php @@ -0,0 +1,367 @@ + @extends('layouts.backendTemplate') + + @section('content') + + + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Video Add', + 'pageName' => 'Add', + 'pageParent' => 'Video Management', + 'pageParentLink' => url('video'), + ]) + +
      +
      + + + +
      + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + + + + +
      0%
      + +
      Allowed Types .MP4, .MOV
      +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/video/folder/add.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/video/folder/add.blade.php new file mode 100644 index 0000000..fd13876 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/video/folder/add.blade.php @@ -0,0 +1,95 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Video Create Folder', + 'pageName' => 'Create folder', + 'pageParent' => 'Video Management', + 'pageParentLink' => url('video'), + ]) + +
      +
      + +
      + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/video/folder/edit.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/video/folder/edit.blade.php new file mode 100644 index 0000000..1c85136 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/video/folder/edit.blade.php @@ -0,0 +1,96 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Video Edit Folder', + 'pageName' => 'Edit folder', + 'pageParent' => 'Video Management', + 'pageParentLink' => url('Video'), + ]) + +
      +
      + +
      + + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/video/folder/index.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/video/folder/index.blade.php new file mode 100644 index 0000000..9a6eb33 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/video/folder/index.blade.php @@ -0,0 +1,310 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'Video Management Folder ' . $folderView->name, + 'pageName' => 'Video Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +
      + + @if (Auth::user()->role != 2) +
      +
      + Add + +
      +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + +
      + +
      + + + + + + + + + + + + + + + @foreach ($itemView as $obj) + + + + + + + + + + + @endforeach + + +
      NameCreatedManage
      + + + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Download --}} + + + + + {{-- Copy --}} + + + + {{-- Delete --}} + @if (Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/backend/video/index.blade.php b/think-backend.greaterchiangmai.com/resources/views/backend/video/index.blade.php new file mode 100644 index 0000000..c9d5638 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/backend/video/index.blade.php @@ -0,0 +1,440 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'Video Management', + 'pageName' => 'Video Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +
      + + @if (Auth::user()->role != 2) +
      + + + +
      + Add +
      + +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + +
      + +
      + + + + + + + + + + + + + + + @foreach ($folderView as $obj) + + + + + + + + + + @endforeach + + + @foreach ($itemView as $obj) + + + + + + + + + + + @endforeach + + +
      NameCreatedAction
      +
      + + + + + + + + {{ $obj->name }} +
      +
      + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Download --}} + + + + + + {{-- Edit --}} + + + + + + + + + + {{-- Delete --}} + + + + + + + + + +
      + + + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Download --}} + + + + + {{-- Copy --}} + + + {{-- Delete --}} + @if (Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/emails/.DS_Store b/think-backend.greaterchiangmai.com/resources/views/emails/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/think-backend.greaterchiangmai.com/resources/views/emails/.DS_Store differ diff --git a/think-backend.greaterchiangmai.com/resources/views/emails/forgot-password.blade.php b/think-backend.greaterchiangmai.com/resources/views/emails/forgot-password.blade.php new file mode 100644 index 0000000..2a974a3 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/emails/forgot-password.blade.php @@ -0,0 +1,85 @@ + + + + + + +
      + +
      + + + +
      + + +
      +
      + + + + + + +
      + +
      + + +
      +

      + The Greater Chiangmai

      +
      + + +
      +

      + ลืมรหัสผ่าน +

      +

      + เราได้รับคำขอให้รีเซ็ตรหัสผ่านสำหรับบัญชีของคุณ +

      +
      + + +
      + + {{-- Link --}} +

      + ยืนยัน +

      + + +
      +
      +
      +
      +
      +
      +
      +
      + + + diff --git a/think-backend.greaterchiangmai.com/resources/views/emails/reset-password.blade.php b/think-backend.greaterchiangmai.com/resources/views/emails/reset-password.blade.php new file mode 100644 index 0000000..d5d00dd --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/emails/reset-password.blade.php @@ -0,0 +1,81 @@ + + + + + + +
      + +
      + + + +
      + + +
      +
      + + + + + + +
      + +
      + + +
      +

      + The Greater Chiangmai

      +
      + + +
      +

      + รีเซทรหัสผ่าน +

      +

      รหัสผ่านใหม่ด้านล่าง

      +
      + + +
      +

      + {{ $password }}

      + + + +
      +
      +
      +
      +
      +
      +
      +
      + + + diff --git a/think-backend.greaterchiangmai.com/resources/views/errors/404.blade.php b/think-backend.greaterchiangmai.com/resources/views/errors/404.blade.php new file mode 100644 index 0000000..46f502d --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/errors/404.blade.php @@ -0,0 +1,31 @@ +@extends('layouts.errorTemplate') + +@section('main') +
      + +
      +
      + +

      Not Found

      + + +
      We can't find that page.
      + +
      + + +
      + + + + + +
      +
      + +
      +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/errors/500.blade.php b/think-backend.greaterchiangmai.com/resources/views/errors/500.blade.php new file mode 100644 index 0000000..1bc85f2 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/errors/500.blade.php @@ -0,0 +1,32 @@ +@extends('layouts.errorTemplate') + +@section('main') +
      + +
      +
      + +

      Internal Server Error

      + + +
      Something went wrong! Please try again later or contact the + administrator.
      + +
      + + +
      + + + + + +
      +
      + +
      +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/errors/503.blade.php b/think-backend.greaterchiangmai.com/resources/views/errors/503.blade.php new file mode 100644 index 0000000..497fa63 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/errors/503.blade.php @@ -0,0 +1,32 @@ +@extends('layouts.errorTemplate') + +@section('main') +
      + +
      +
      + +

      503 Service Unavailable Error

      + + +
      Something went wrong! Please try again later or contact the + administrator.
      + + + {{--
      + + +
      --}} + + + + +
      +
      + +
      +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/errors/no_access.blade.php b/think-backend.greaterchiangmai.com/resources/views/errors/no_access.blade.php new file mode 100644 index 0000000..18c4a58 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/errors/no_access.blade.php @@ -0,0 +1,25 @@ +@extends('layouts.errorTemplate') + +@section('main') +
      + +
      +
      + +

      No Access

      + + +
      + Sorry, you are not allowed to see this. +
      + + + + +
      +
      + +
      +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/errors/no_permission.blade.php b/think-backend.greaterchiangmai.com/resources/views/errors/no_permission.blade.php new file mode 100644 index 0000000..e174d78 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/errors/no_permission.blade.php @@ -0,0 +1,25 @@ +@extends('layouts.errorTemplate') + +@section('main') +
      + +
      +
      + +

      No Permission

      + + +
      + Sorry, you do not have permission to access this view. +
      + + + + +
      +
      + +
      +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views/layouts/backendTemplate.blade.php b/think-backend.greaterchiangmai.com/resources/views/layouts/backendTemplate.blade.php new file mode 100644 index 0000000..ea58193 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/layouts/backendTemplate.blade.php @@ -0,0 +1,563 @@ + + + + + + + The Greater Chiangmai : Backend + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{-- fileuploader --}} + + + + + + + + + + + + + + + + + + +
      + + Loading... +
      + + +
      + +
      + + @include('uc.header') + + + +
      + + +
      + + + + + + +
      + +
      + + +
      +
      + +
      + + + @yield('content') + +
      + + +
      +
      + + +
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{-- Custom --}} + {{-- + + --}} + + + + + + {{-- fileuploader --}} + + + + + @yield('script') + + + + + diff --git a/think-backend.greaterchiangmai.com/resources/views/layouts/errorTemplate.blade.php b/think-backend.greaterchiangmai.com/resources/views/layouts/errorTemplate.blade.php new file mode 100644 index 0000000..41770c4 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/layouts/errorTemplate.blade.php @@ -0,0 +1,101 @@ + + + + + + + The Greater Chiangmai + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + +
      + + @yield('main') + +
      + +
      + + + + + + + + + + + + + + + @yield('script') + + + + + diff --git a/think-backend.greaterchiangmai.com/resources/views/layouts/loginTemplate.blade.php b/think-backend.greaterchiangmai.com/resources/views/layouts/loginTemplate.blade.php new file mode 100644 index 0000000..13325e4 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/layouts/loginTemplate.blade.php @@ -0,0 +1,129 @@ + + + + + + + The Greater Chiangmai + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + +
      + + + + +
      + + + + + +
      + +
      + +
      + +
      + + +
      + + + + @yield('content') + + +
      + +
      + +
      + +
      + + +
      + +
      + + + + + + + + + + + + + + + {{-- custom --}} + + + @yield('script') + + + + + diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/admin/breadcrumb.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/admin/breadcrumb.blade.php new file mode 100644 index 0000000..0228ca4 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/admin/breadcrumb.blade.php @@ -0,0 +1,43 @@ +
      + +
      + +
      + +

      + {{ $title }} +

      + + + +
      + +
      + +
      diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/admin/breadcrumbList.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/admin/breadcrumbList.blade.php new file mode 100644 index 0000000..be8898d --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/admin/breadcrumbList.blade.php @@ -0,0 +1,30 @@ + +
      + +
      + +
      + +

      + {{ $title }} +

      + + + +
      + +
      + +
      diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/admin/datatableScript.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/admin/datatableScript.blade.php new file mode 100644 index 0000000..a3edb09 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/admin/datatableScript.blade.php @@ -0,0 +1,32 @@ + + diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/admin/datatableStyle.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/admin/datatableStyle.blade.php new file mode 100644 index 0000000..7721efc --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/admin/datatableStyle.blade.php @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/admin/msgFail.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/admin/msgFail.blade.php new file mode 100644 index 0000000..d4f8ead --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/admin/msgFail.blade.php @@ -0,0 +1,6 @@ +
      + + Oh snap! {{ Session::get('messageDetail') }} +
      diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/admin/msgSuccess.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/admin/msgSuccess.blade.php new file mode 100644 index 0000000..6d43651 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/admin/msgSuccess.blade.php @@ -0,0 +1,6 @@ +
      + + Well done! {{ Session::get('messageDetail') }} +
      diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/backHome.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/backHome.blade.php new file mode 100644 index 0000000..52c9b69 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/backHome.blade.php @@ -0,0 +1 @@ +Dashboard diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/bannerSlider.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/bannerSlider.blade.php new file mode 100644 index 0000000..e8af57a --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/bannerSlider.blade.php @@ -0,0 +1,71 @@ +
      +
      +
      + + + @foreach($bannerView['banner'] as $item) + + @if(!empty($bannerView['banner_images'][$item->banner_id]->file_name)) +
      banner_id]->file_name.".".$bannerView['banner_images'][$item->banner_id]->extension) }}');" + > +
      +
      +
      +
      +
      +
      +
      +
      +
      + @else +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + @endif + + @endforeach + + +
      + + +
      +
      +
      + +
      +
      + +{{--
      --}} +{{--
      --}} +{{--
        --}} +{{-- @foreach($bannerView['banner'] as $item)--}} +{{-- --}} +{{--
      • --}} +{{-- @if(!empty($bannerView['banner_images'][$item->banner_id]->file_name))--}} +{{-- banner_id]->file_name.".".$bannerView['banner_images'][$item->banner_id]->extension) }}"--}} +{{-- alt=""--}} +{{-- data-bgposition="center center"--}} +{{-- data-kenburns="on"--}} +{{-- data-duration="25000"--}} +{{-- data-ease="Linear.easeNone" data-bgfit="100" data-bgfitend="120" data-bgpositionend="center top">--}} +{{-- @else--}} +{{-- --}} +{{-- @endif--}} +{{--
      • --}} +{{-- --}} +{{-- @endforeach--}} +{{--
      --}} +{{--
      --}} +{{--
      --}} +{{--
      --}} diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/breadcrumb.blade copy.php b/think-backend.greaterchiangmai.com/resources/views/uc/breadcrumb.blade copy.php new file mode 100644 index 0000000..9de6bf4 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/breadcrumb.blade copy.php @@ -0,0 +1,42 @@ + +
      + +
      + +
      + +

      + {{ $title }} +

      + + + +
      + +
      + +
      diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/breadcrumb.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/breadcrumb.blade.php new file mode 100644 index 0000000..61f26eb --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/breadcrumb.blade.php @@ -0,0 +1,20 @@ +
      +
      +
      + +
      +

      + {{ $title }} +

      +
      +
      +
      +
      diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/breadcrumbList.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/breadcrumbList.blade.php new file mode 100644 index 0000000..eaddb6b --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/breadcrumbList.blade.php @@ -0,0 +1,30 @@ + +
      + +
      + +
      + +

      + {{ $title }} +

      + + + +
      + +
      + +
      diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/crumbsHeader.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/crumbsHeader.blade.php new file mode 100644 index 0000000..618890d --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/crumbsHeader.blade.php @@ -0,0 +1,27 @@ +
      +
      + +
      +
      + {{ trans('global.menu_home') }} / {{ $title }} +
      +
      + +
      + +
      +

      + {{ $title }} + + {{ $desc }} + + + + +

      +
      + +
      + +
      +
      diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/errors.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/errors.blade.php new file mode 100644 index 0000000..49cc16e --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/errors.blade.php @@ -0,0 +1,10 @@ +@if ($errors->any()) +
      +

      Notice

      +
        + @foreach ($errors->all() as $error) +
      • {{ $error }}
      • + @endforeach +
      +
      +@endif diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/header.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/header.blade.php new file mode 100644 index 0000000..d12764f --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/header.blade.php @@ -0,0 +1,134 @@ + +
      + +
      + + +
      +
      + + + + + + + + +
      +
      + + + + + + + +
      + +
      + + + +
      + + + +
      + + + +
      + +
      + + @if (Auth::user()->image_url && Auth::user()->image_name) + The Greater Chiangmai + @else + The Greater Chiangmai + @endif + + +
      + + + + +
      + + +
      + + +
      + + +
      + +
      + diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/messageFail.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/messageFail.blade.php new file mode 100644 index 0000000..bd0f05f --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/messageFail.blade.php @@ -0,0 +1,23 @@ +
      + +
      + + + + + + + +
      +
      +

      Warning

      +
      + {{ Session::get('messageDetail') }} +
      +
      +
      +
      +
      diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/messageSuccess.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/messageSuccess.blade.php new file mode 100644 index 0000000..37fb78e --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/messageSuccess.blade.php @@ -0,0 +1,24 @@ +
      + +
      + + + + + + +
      +
      +

      Success

      +
      + {{ Session::get('messageDetail') }} +
      +
      +
      +
      + +
      diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/pagination/default.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/pagination/default.blade.php new file mode 100644 index 0000000..f582b53 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/pagination/default.blade.php @@ -0,0 +1,39 @@ + + + +
      + +
      diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/pagination/frontend.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/pagination/frontend.blade.php new file mode 100644 index 0000000..624ce13 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/pagination/frontend.blade.php @@ -0,0 +1,33 @@ + + + +
      +
      +
      +
      +
      + + {!! str_replace('/?', '?', $data->render()) !!} + {{-- --}} + {{--
      --}} + {{-- --}} + {{--
      --}} + +
      +
      + +
      diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/topHeader.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/topHeader.blade.php new file mode 100644 index 0000000..9a280fd --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/topHeader.blade.php @@ -0,0 +1,41 @@ +
      + +
      + + +
      +
      + หน้าแรก @if($detail) / {{ $title }} + / {{ $detail }} @else / {{ $title }} @endif +
      +
      + + + +
      +
      +

      {{ $title }}

      +
      +
      + + + +
      + +
      + + +
      + +
      + + diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/topHeaderDetail.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/topHeaderDetail.blade.php new file mode 100644 index 0000000..0f14944 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/topHeaderDetail.blade.php @@ -0,0 +1,41 @@ +
      + +
      + + +
      +
      + หน้าแรก @if($detail) / {{ $title }} + / {{ $detail }} @else / {{ $title }} @endif +
      +
      + + + +
      +
      +

      {{ $title }}

      +
      +
      + + + +
      + +
      + + +
      + +
      + + diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/topHeaderJob.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/topHeaderJob.blade.php new file mode 100644 index 0000000..641056e --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/topHeaderJob.blade.php @@ -0,0 +1,41 @@ +
      + +
      + + +
      +
      + หน้าแรก @if($detail) / {{ $title }} + / {{ $detail }} @else / {{ $title }} @endif +
      +
      + + + +
      +
      +

      {{ $title }}

      +
      +
      + + + +
      + +
      + + +
      + +
      + + diff --git a/think-backend.greaterchiangmai.com/resources/views/uc/topHeaderVolunteer.blade.php b/think-backend.greaterchiangmai.com/resources/views/uc/topHeaderVolunteer.blade.php new file mode 100644 index 0000000..8607e85 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views/uc/topHeaderVolunteer.blade.php @@ -0,0 +1,41 @@ +
      + +
      + + +
      +
      + หน้าแรก @if($detail) / {{ $title }} / {{ $detail }} @else / {{ $title }} @endif +
      +
      + + + +
      +
      +

      {{ $title }}

      +
      +
      + + + +
      + +
      + + +
      + +
      + + diff --git a/think-backend.greaterchiangmai.com/resources/views2/.DS_Store b/think-backend.greaterchiangmai.com/resources/views2/.DS_Store new file mode 100644 index 0000000..71b3a92 Binary files /dev/null and b/think-backend.greaterchiangmai.com/resources/views2/.DS_Store differ diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/article-where-else/add.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/article-where-else/add.blade.php new file mode 100644 index 0000000..6469c6c --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/article-where-else/add.blade.php @@ -0,0 +1,562 @@ + @extends('layouts.backendTemplate') + + @section('content') + + + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'WHERE ELSE : Add Article', + 'pageName' => 'Add', + 'pageParent' => 'Article Management', + 'pageParentLink' => url('where-else/article'), + ]) + +
      +
      + + + +
      + + + + + +
      + +
      + + +
      + + + +
      + +
      + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg + image + files are accepted
      + +
      + + {{-- Active --}} +
      +
      +

      Active

      +
      +
      +
      + + +
      + + +
      + +
      + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + +
      + @foreach ($subCategoriesView as $item) + + @endforeach + +
      + +
      + +
      + +
      + + + + + + + + +
      +
      + +
      + + +
      + + +
      + + +
      + +
      + +
      + +
      + + +
      + +
      + + +
      + + + + + + + + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + + + + + + + + + + + + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/article-where-else/edit.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/article-where-else/edit.blade.php new file mode 100644 index 0000000..b1b4073 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/article-where-else/edit.blade.php @@ -0,0 +1,594 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'WHERE ELSE : Edit Article', + 'pageName' => 'Edit', + 'pageParent' => 'Article Management', + 'pageParentLink' => url('where-else/article'), + ]) +
      +
      + + +
      + + + + + + + {{-- Left --}} +
      + +
      + +
      + + + +
      + + + @if ($itemView->image_url && $itemView->image_name) +
      +
      + @else +
      + @endif + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg + image + files are accepted
      + +
      + +
      + +
      +

      Active

      +
      + +
      +
      + + +
      + +
      +
      + + + {{-- Right --}} +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + +
      + @foreach ($subCategoriesView as $item) + + @endforeach + +
      + +
      + +
      +
      + + + + + + + + + + + + + +
      +
      + +
      + + +
      + + +
      + + +
      + +
      + +
      + +
      + + +
      + +
      + + +
      + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + +@stop + + + + +@section('script') + + + + + + + + + + + + + + + + + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/article-where-else/index.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/article-where-else/index.blade.php new file mode 100644 index 0000000..773f582 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/article-where-else/index.blade.php @@ -0,0 +1,406 @@ +@extends('layouts.backendTemplate') + +@section('content') + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'WHERE ELSE : Article Management', + 'pageName' => 'Article Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + + +
      + +
      +
      + + + @if (Auth::user()->role != 2) +
      +
      + Add + +
      + +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + +
      + +
      +
      + + + + + + + + +
      +
      + +
      +
      + + + + + + + + +
      +
      + + + +
      +
      + +
      + + + + + + + + + + + + + + + + + + + @foreach ($itemView as $obj) + + + + + + + + + + + + + + + + + + + @endforeach + + +
      PicDateSubjectSubject (EN)CreatedActiveManage
      +
      + @if ($obj->image_url && $obj->image_name) + +
      +
      +
      + @else +
      +
      + @endif +
      +
      + {{ Carbon\Carbon::parse($obj->due_date)->format('d, M Y') }} + + + {{ $obj->name }} + + + + {{ $obj->name_en }} + + + {{ Carbon\Carbon::parse($obj->created_at)->format('d, M Y') }} + + @if ($obj->active == 1) + Active + @else + Inactive + @endif + + + {{-- View --}} + {{-- + + + + + + + --}} + + {{-- Edit --}} + + + + + + + + + + {{-- Delete --}} + @if ($obj->active == 1 && Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/article/add.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/article/add.blade.php new file mode 100644 index 0000000..0875c58 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/article/add.blade.php @@ -0,0 +1,575 @@ + @extends('layouts.backendTemplate') + + @section('content') + + + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'CHIANG MAI AND NOWHERE ELSE : Add Article', + 'pageName' => 'Add', + 'pageParent' => 'Article Management', + 'pageParentLink' => url('no-where-else/article'), + ]) + +
      +
      + + + +
      + + + + + +
      + +
      + + +
      + + + +
      + +
      + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg + image + files are accepted
      + +
      + + {{-- Active --}} +
      +
      +

      Active

      +
      +
      +
      + + +
      + + +
      + +
      + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + +
      + @foreach ($subCategoriesView as $item) + + @endforeach + +
      + +
      + +
      + +
      + + + + + + + + +
      +
      + +
      + + +
      + + +
      + + +
      + +
      + +
      + +
      + + +
      + +
      + + +
      + + + + + + + + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + + + + + + + + + + + + + + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/article/edit.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/article/edit.blade.php new file mode 100644 index 0000000..f747ecb --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/article/edit.blade.php @@ -0,0 +1,606 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'CHIANG MAI AND NOWHERE ELSE : Edit Article', + 'pageName' => 'Edit', + 'pageParent' => 'Article Management', + 'pageParentLink' => url('no-where-else/article'), + ]) +
      +
      + + +
      + + + + + + + {{-- Left --}} +
      + +
      + +
      + + + +
      + + + @if ($itemView->image_url && $itemView->image_name) +
      +
      + @else +
      + @endif + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg + image + files are accepted
      + +
      + +
      + +
      +

      Active

      +
      + +
      +
      + + +
      + +
      +
      + + + {{-- Right --}} +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + +
      + @foreach ($subCategoriesView as $item) + + @endforeach + +
      + +
      + +
      +
      + + + + + + + + + + + + + +
      +
      + +
      + + +
      + + +
      + + +
      + +
      + +
      + +
      + + +
      + +
      + + +
      + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + +@stop + + + + +@section('script') + + + + + + + + + + + + + + + + + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/article/index.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/article/index.blade.php new file mode 100644 index 0000000..9ce22db --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/article/index.blade.php @@ -0,0 +1,406 @@ +@extends('layouts.backendTemplate') + +@section('content') + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'CHIANG MAI AND NOWHERE ELSE : Article Management', + 'pageName' => 'Article Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + + +
      + +
      +
      + + + @if (Auth::user()->role != 2) +
      +
      + Add + +
      + +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + +
      + +
      +
      + + + + + + + + +
      +
      + +
      +
      + + + + + + + + +
      +
      + + + +
      +
      + +
      + + + + + + + + + + + + + + + + + + + @foreach ($itemView as $obj) + + + + + + + + + + + + + + + + + + + @endforeach + + +
      PicDateSubjectSubject (EN)CreatedActiveManage
      +
      + @if ($obj->image_url && $obj->image_name) + +
      +
      +
      + @else +
      +
      + @endif +
      +
      + {{ Carbon\Carbon::parse($obj->due_date)->format('d, M Y') }} + + + {{ $obj->name }} + + + + {{ $obj->name_en }} + + + {{ Carbon\Carbon::parse($obj->created_at)->format('d, M Y') }} + + @if ($obj->active == 1) + Active + @else + Inactive + @endif + + + {{-- View --}} + {{-- + + + + + + + --}} + + {{-- Edit --}} + + + + + + + + + + {{-- Delete --}} + @if ($obj->active == 1 && Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/category/add.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/category/add.blade.php new file mode 100644 index 0000000..5e935aa --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/category/add.blade.php @@ -0,0 +1,178 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Category Add', + 'pageName' => 'Add', + 'pageParent' => 'Category Management', + 'pageParentLink' => url('category'), + ]) + +
      +
      + + +
      + + + + + +
      + +
      + +
      + + + +
      + +
      + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg + image + files are accepted
      + +
      + + {{-- Active --}} +
      +
      +

      Active

      +
      +
      +
      + + +
      + + +
      + +
      + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + +
      + + +
      + + +
      + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/category/edit.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/category/edit.blade.php new file mode 100644 index 0000000..ce0c428 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/category/edit.blade.php @@ -0,0 +1,186 @@ +@extends('layouts.backendTemplate') + +@section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Category Edit', + 'pageName' => 'Edit', + 'pageParent' => 'Category Management', + 'pageParentLink' => url('category'), + ]) +
      +
      + + +
      + + + + + + + {{-- Left --}} +
      + +
      + +
      + + + +
      + + + @if ($itemView->image_url && $itemView->image_name) +
      +
      + @else +
      + @endif + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg + image + files are accepted
      + +
      + +
      +
      +

      Active

      +
      +
      +
      + +
      + +
      +
      + + + {{-- Right --}} +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +

      Overview

      +
      +
      + +
      + + +
      + + +
      + + +
      + + +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/category/index.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/category/index.blade.php new file mode 100644 index 0000000..05a7cc5 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/category/index.blade.php @@ -0,0 +1,265 @@ +@extends('layouts.backendTemplate') + +@section('content') + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'Category Management', + 'pageName' => 'Category Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      + +
      + + + + + + + +
      + +
      +
      + +
      + +
      + Add +
      + +
      + +
      + + +
      + + + + + + + + + + + + + + + + + + + + @foreach ($itemView as $obj) + + + + + + + + + + + + + + + + + + + @endforeach + + +
      PicNameName (EN)CreatedActiveActions
      +
      + @if ($obj->image_url && $obj->image_name) + +
      +
      +
      + @else +
      +
      + @endif +
      +
      + {{ $obj->name }} + + {{ $obj->name_en }} + {{ date('d M, Y', strtotime($obj->created_at)) }} + @if ($obj->active == 1) + Active + @else + Inactive + @endif + + + {{-- Edit --}} + + + + + + + + + + {{-- Delete --}} + @if ($obj->active == 1) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/dashboard.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/dashboard.blade.php new file mode 100644 index 0000000..6c5ef73 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/dashboard.blade.php @@ -0,0 +1,316 @@ +@extends('layouts/backendTemplate') + +@section('content') +
      + +
      + +
      + +
      + +
      + +

      + Dashboard +

      + + + +
      + +
      + +
      + + +
      + +
      + + + @if ($itemView['sub_category_no_where_else']) +

      CHIANG MAI AND NOWHERE ELSE

      +
      + @foreach ($itemView['sub_category_no_where_else'] as $item) +
      +
      +
      + +
      + + + + + + +
      + +
      + + + {{ number_format($item['article_count'], 0) }} + + +
      + + {{ $item['name'] ?? '-' }} + +
      +
      + +
      +
      +
      + @endforeach +
      + @endif + + + @if ($itemView['sub_category_where_else']) +

      WHERE ELSE

      +
      + @foreach ($itemView['sub_category_where_else'] as $item) +
      +
      +
      + +
      + + + + + + +
      + +
      + + + {{ number_format($item['article_count'], 0) }} + + +
      + + {{ $item['name'] ?? '-' }} + +
      +
      + +
      +
      +
      + @endforeach +
      + @endif + + +

      FILES

      +
      + +
      + +
      + +
      + +
      + + + + + + + + +
      + + +
      + + + {{ number_format($countVideoView, 0) }} + + + +
      + Video +
      + +
      + +
      + +
      + +
      + +
      + +
      + +
      + +
      + + + + + + + + +
      + + +
      + + + {{ number_format($countSoundView, 0) }} + + + +
      + Sound +
      + +
      + + +
      + +
      + +
      + +
      + +
      + +
      + +
      + + + + + + + + +
      + + +
      + + + {{ number_format($countImageView, 0) }} + + + +
      + Images +
      + +
      + + +
      + +
      + +
      + + +
      + +
      + +
      + +
      + + + + + + + + +
      + + +
      + + + {{ number_format($countDocumentView, 0) }} + + + +
      + Documents +
      + +
      + + +
      + +
      + +
      + + +
      + +
      + +
      + +
      +
      +@endsection + + +@section('script') + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/document/add.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/document/add.blade.php new file mode 100644 index 0000000..f578db9 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/document/add.blade.php @@ -0,0 +1,358 @@ + @extends('layouts.backendTemplate') + + @section('content') + + + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Document Add', + 'pageName' => 'Add', + 'pageParent' => 'Document Management', + 'pageParentLink' => url('document'), + ]) + +
      +
      + + + +
      + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + + + + +
      0%
      + +
      Allowed Types .pdf, .xls, .doc, .docx, .pptx, .csv, + .txt
      +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/document/folder/add.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/document/folder/add.blade.php new file mode 100644 index 0000000..7315fff --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/document/folder/add.blade.php @@ -0,0 +1,95 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Document Create Folder', + 'pageName' => 'Create folder', + 'pageParent' => 'Document Management', + 'pageParentLink' => url('document'), + ]) + +
      +
      + +
      + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/document/folder/edit.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/document/folder/edit.blade.php new file mode 100644 index 0000000..884f778 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/document/folder/edit.blade.php @@ -0,0 +1,96 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Document Edit Folder', + 'pageName' => 'Edit folder', + 'pageParent' => 'Document Management', + 'pageParentLink' => url('document'), + ]) + +
      +
      + +
      + + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/document/folder/index.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/document/folder/index.blade.php new file mode 100644 index 0000000..bf3d946 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/document/folder/index.blade.php @@ -0,0 +1,319 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'Document Management Folder ' . $folderView->name, + 'pageName' => 'Document Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +
      + + @if (Auth::user()->role != 2) +
      +
      + Add + +
      +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + +
      + +
      + + + + + + + + + + + + + + + @foreach ($itemView as $obj) + + + + + + + + + + + @endforeach + + +
      NameCreatedManage
      + + + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Download --}} + + + + + {{-- Copy --}} + + + + {{-- Delete --}} + @if (Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/document/index.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/document/index.blade.php new file mode 100644 index 0000000..0d8c887 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/document/index.blade.php @@ -0,0 +1,438 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'Document Management', + 'pageName' => 'Document Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +
      + + @if (Auth::user()->role != 2) +
      + +
      + Add +
      +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + +
      + +
      + + + + + + + + + + + + + + + + @foreach ($folderView as $obj) + + + + + + + + + + @endforeach + + @foreach ($itemView as $obj) + + + + + + + + + + + @endforeach + + +
      NameCreatedManage
      +
      + + + + + + + + {{ $obj->name }} +
      +
      + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Edit --}} + + + + + + + + + + {{-- Delete --}} + + + + + + + + + +
      + + + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Download --}} + + + + + {{-- Copy --}} + + + + {{-- Delete --}} + @if (Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/forgot_password.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/forgot_password.blade.php new file mode 100644 index 0000000..47baa6b --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/forgot_password.blade.php @@ -0,0 +1,121 @@ +@extends('layouts.loginTemplate') + +@section('content') + +
      + + + + + +
      + +

      Forgot Password

      + +
      + + + + +
      + + + +
      + + + +
      +
      + + Login ? + +
      + + + +
      + +
      + + +
      + +@stop + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/image/add.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/image/add.blade.php new file mode 100644 index 0000000..f286d39 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/image/add.blade.php @@ -0,0 +1,357 @@ + @extends('layouts.backendTemplate') + + @section('content') + + + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Image Add', + 'pageName' => 'Add', + 'pageParent' => 'Image Management', + 'pageParentLink' => url('image'), + ]) + +
      +
      + + + +
      + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + + + + +
      0%
      + +
      Allowed Types .jpg, .bmp, .jpeg, .png
      +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/image/folder/add.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/image/folder/add.blade.php new file mode 100644 index 0000000..1db6f83 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/image/folder/add.blade.php @@ -0,0 +1,95 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Image Create Folder', + 'pageName' => 'Create folder', + 'pageParent' => 'Image Management', + 'pageParentLink' => url('image'), + ]) + +
      +
      + +
      + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/image/folder/edit.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/image/folder/edit.blade.php new file mode 100644 index 0000000..5374897 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/image/folder/edit.blade.php @@ -0,0 +1,96 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Image Edit Folder', + 'pageName' => 'Edit folder', + 'pageParent' => 'Image Management', + 'pageParentLink' => url('image'), + ]) + +
      +
      + +
      + + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/image/folder/index.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/image/folder/index.blade.php new file mode 100644 index 0000000..297dfc8 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/image/folder/index.blade.php @@ -0,0 +1,311 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'Image Management Folder ' . $folderView->name, + 'pageName' => 'Image Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +
      + + @if (Auth::user()->role != 2) +
      +
      + Add + +
      +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + +
      + +
      + + + + + + + + + + + + + + + @foreach ($itemView as $obj) + + + + + + + + + + + @endforeach + + +
      NameCreatedManage
      + + + + + + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Download --}} + + + + + {{-- Copy --}} + + + + {{-- Delete --}} + @if (Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/image/index.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/image/index.blade.php new file mode 100644 index 0000000..4a149fd --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/image/index.blade.php @@ -0,0 +1,436 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'Image Management', + 'pageName' => 'Image Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +
      + + @if (Auth::user()->role != 2) +
      + + + +
      + Add +
      + +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + +
      + +
      + + + + + + + + + + + + + + + @foreach ($folderView as $obj) + + + + + + + + + + @endforeach + + + @foreach ($itemView as $obj) + + + + + + + + + + + + + @endforeach + + +
      NameCreatedAction
      +
      + + + + + + + + {{ $obj->name }} +
      +
      + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Edit --}} + + + + + + + + + + {{-- Delete --}} + + + + + + + + + +
      + + + + + + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Download --}} + + + + + {{-- Copy --}} + + + + {{-- Delete --}} + @if (Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/login.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/login.blade.php new file mode 100644 index 0000000..874a812 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/login.blade.php @@ -0,0 +1,131 @@ +@extends('layouts.loginTemplate') + +@section('content') + +
      + + + + + +
      + +

      + +

      + +
      + + + + +
      + + + +
      + + +
      + + + +
      + + + +
      +
      + + {{-- Forgot + Password ? --}} + +
      + + + +
      + +
      + + +
      + +@stop + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/profile.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/profile.blade.php new file mode 100644 index 0000000..e7094e0 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/profile.blade.php @@ -0,0 +1,110 @@ +@extends('layouts/backendTemplate') + +@section('content') + +
      +
      +
      +

      Profile

      + +
      +
      +
      +
      + +
      + +
      + + +
      +
      + @if (Session::has('messageSuccess')) + @include('uc/messageSuccess') + @endif + + @if (Session::has('messageFail')) + @include('uc/messageFail') + @endif + +
      +
      + + +
      +
      +

      Profile

      +
      + +
      + +
      + + + + + +
      + +
      + +
      +
      + + +
      + +
      + +
      +
      + + +
      + +
      + +
      +
      + + +
      + +
      + +
      +
      + + +
      + + +
      + +
      + + +
      +
      +
      +
      + + + +@stop + +@section('script') + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/reset_password.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/reset_password.blade.php new file mode 100644 index 0000000..322807a --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/reset_password.blade.php @@ -0,0 +1,122 @@ +@extends('layouts.loginTemplate') + +@section('content') + +
      + + + + + + +
      + +

      Reset Password

      + +
      + + + + +
      + + + +
      + + + +
      +
      + + Login ? + +
      + + + +
      + +
      + + +
      + +@stop + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/sound/add.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/sound/add.blade.php new file mode 100644 index 0000000..38d2072 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/sound/add.blade.php @@ -0,0 +1,356 @@ + @extends('layouts.backendTemplate') + + @section('content') + + + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Sound Add', + 'pageName' => 'Add', + 'pageParent' => 'Sound Management', + 'pageParentLink' => url('sound'), + ]) + +
      +
      + + + +
      + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + + + + +
      0%
      + +
      Allowed Types .m4a, .mp4, .mp3, .wav
      +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/sound/folder/add.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/sound/folder/add.blade.php new file mode 100644 index 0000000..ab106f4 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/sound/folder/add.blade.php @@ -0,0 +1,95 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Sound Create Folder', + 'pageName' => 'Create folder', + 'pageParent' => 'Sound Management', + 'pageParentLink' => url('sound'), + ]) + +
      +
      + +
      + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/sound/folder/edit.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/sound/folder/edit.blade.php new file mode 100644 index 0000000..36dda2c --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/sound/folder/edit.blade.php @@ -0,0 +1,96 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Sound Edit Folder', + 'pageName' => 'Edit folder', + 'pageParent' => 'Sound Management', + 'pageParentLink' => url('sound'), + ]) + +
      +
      + +
      + + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/sound/folder/index.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/sound/folder/index.blade.php new file mode 100644 index 0000000..c84a9aa --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/sound/folder/index.blade.php @@ -0,0 +1,306 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'Sound Management Folder ' . $folderView->name, + 'pageName' => 'Sound Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +
      + + @if (Auth::user()->role != 2) +
      +
      + Add + +
      +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + +
      + +
      + + + + + + + + + + + + + + + @foreach ($itemView as $obj) + + + + + + + + + + + @endforeach + + +
      NameCreatedManage
      + + + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Download --}} + + + + + {{-- Copy --}} + + + + {{-- Delete --}} + @if (Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/sound/index.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/sound/index.blade.php new file mode 100644 index 0000000..6ea961c --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/sound/index.blade.php @@ -0,0 +1,427 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'Sound Management', + 'pageName' => 'Sound Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +
      + + @if (Auth::user()->role != 2) +
      + + + +
      + Add +
      + +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + +
      + +
      + + + + + + + + + + + + + + @foreach ($folderView as $obj) + + + + + + + + + + @endforeach + + @foreach ($itemView as $obj) + + + + + + + + + + + + @endforeach + + +
      NameCreatedAction
      +
      + + + + + + + + {{ $obj->name }} +
      +
      + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Edit --}} + + + + + + + + + + {{-- Delete --}} + + + + + + + + + +
      + + + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Download --}} + + + + + {{-- Copy --}} + + + + {{-- Delete --}} + @if (Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category-where-else/add.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category-where-else/add.blade.php new file mode 100644 index 0000000..64663e4 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category-where-else/add.blade.php @@ -0,0 +1,472 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'WHERE ELSE : Add Sub Category', + 'pageName' => 'Add', + 'pageParent' => 'Sub Category Management', + 'pageParentLink' => url('where-else/sub-category'), + ]) + +
      +
      + + + +
      + + + + + +
      + +
      + + +
      + + + +
      + +
      + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg + image + files are accepted
      + +
      + + {{-- Active --}} +
      +
      +

      Active

      +
      +
      +
      + + +
      + + +
      + +
      + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + + + {{--
      + +
      + + + + + + + + +
      +
      --}} + +
      + + +
      + + +
      + + +
      + + {{--
      + +
      + +
      + + +
      + +
      + + +
      --}} + + {{-- + + + + + + --}} + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + + + + + + + + + + + + + + + + + + + + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category-where-else/edit.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category-where-else/edit.blade.php new file mode 100644 index 0000000..2c92690 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category-where-else/edit.blade.php @@ -0,0 +1,505 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'WHERE ELSE : Edit Sub Category', + 'pageName' => 'Edit', + 'pageParent' => 'Sub Category Management', + 'pageParentLink' => url('where-else/sub-category'), + ]) +
      +
      + + +
      + + + + + + + {{-- Left --}} +
      + +
      + +
      + + + +
      + + + @if ($itemView->image_url && $itemView->image_name) +
      +
      + @else +
      + @endif + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg + image + files are accepted
      + +
      + +
      + +
      +

      Active

      +
      + +
      +
      + + +
      + +
      +
      + + + {{-- Right --}} +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +

      Overview

      +
      +
      + +
      + + {{--
      +
      + + + + + + + + + + + + + +
      +
      --}} + +
      + + +
      + + +
      + + +
      + + {{--
      + +
      + +
      + + +
      + +
      + + +
      --}} + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + +@stop + + + + +@section('script') + + + + + {{-- + + + + + + + + + + + + + + + + + --}} + + + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category-where-else/index.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category-where-else/index.blade.php new file mode 100644 index 0000000..66cca5e --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category-where-else/index.blade.php @@ -0,0 +1,403 @@ +@extends('layouts.backendTemplate') + +@section('content') + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'WHERE ELSE : Sub Category Management', + 'pageName' => 'Sub Category Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + + +
      + +
      +
      + + + @if (Auth::user()->role != 2) +
      +
      + Add + +
      + +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + + {{--
      + +
      +
      + + + + + + + + +
      +
      + +
      +
      + + + + + + + + +
      +
      + + + +
      --}} +
      + +
      + + + + + + + + {{-- --}} + + + + + + + + + + + @foreach ($itemView as $obj) + + + + + + + + + + + + + + + + + + @endforeach + + +
      PicDateSubjectSubject (EN)CreatedActiveManage
      +
      + @if ($obj->image_url && $obj->image_name) + +
      +
      +
      + @else +
      +
      + @endif +
      +
      + + {{ $obj->name }} + + + + {{ $obj->name_en }} + + + {{ Carbon\Carbon::parse($obj->created_at)->format('d, M Y') }} + + @if ($obj->active == 1) + Active + @else + Inactive + @endif + + + {{-- View --}} + + + + + + + + + + {{-- Edit --}} + + + + + + + + + + {{-- Delete --}} + @if ($obj->active == 1 && Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category/add.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category/add.blade.php new file mode 100644 index 0000000..d3e2547 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category/add.blade.php @@ -0,0 +1,474 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'CHIANG MAI AND NOWHERE ELSE : Add Category Management', + 'pageName' => 'Add', + 'pageParent' => 'Sub Category Management', + 'pageParentLink' => url('no-where-else/sub-category'), + ]) + +
      +
      + + + +
      + + + + + +
      + +
      + + +
      + + + +
      + +
      + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg + image + files are accepted
      + +
      + + {{-- Active --}} +
      +
      +

      Active

      +
      +
      +
      + + +
      + + +
      + +
      + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + + + {{--
      + +
      + + + + + + + + +
      +
      --}} + +
      + + +
      + + +
      + + +
      + + {{--
      + +
      + +
      + + +
      + +
      + + +
      --}} + + {{-- + + + + + + --}} + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + + + + + + + + + + + + + + + + + + + + + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category/edit.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category/edit.blade.php new file mode 100644 index 0000000..09086e2 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category/edit.blade.php @@ -0,0 +1,505 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'CHIANG MAI AND NOWHERE ELSE : Edit Sub Category Management', + 'pageName' => 'Edit', + 'pageParent' => 'Sub Category Management', + 'pageParentLink' => url('no-where-else/sub-category'), + ]) +
      +
      + + +
      + + + + + + + {{-- Left --}} +
      + +
      + +
      + + + +
      + + + @if ($itemView->image_url && $itemView->image_name) +
      +
      + @else +
      + @endif + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg + image + files are accepted
      + +
      + +
      + +
      +

      Active

      +
      + +
      +
      + + +
      + +
      +
      + + + {{-- Right --}} +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +

      Overview

      +
      +
      + +
      + + {{--
      +
      + + + + + + + + + + + + + +
      +
      --}} + +
      + + +
      + + +
      + + +
      + + {{--
      + +
      + +
      + + +
      + +
      + + +
      --}} + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + +@stop + + + + +@section('script') + + + + + + + + + + + + + + + + + + + + + + + + + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category/index.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category/index.blade.php new file mode 100644 index 0000000..22af011 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category/index.blade.php @@ -0,0 +1,402 @@ +@extends('layouts.backendTemplate') + +@section('content') + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'CHIANG MAI AND NOWHERE ELSE : Sub Category Management', + 'pageName' => 'Sub Category Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + + +
      + +
      +
      + + + @if (Auth::user()->role != 2) +
      +
      + Add + +
      + +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + + {{--
      + +
      +
      + + + + + + + + +
      +
      + +
      +
      + + + + + + + + +
      +
      + + + +
      --}} + +
      + +
      + + + + + + + + + + + + + + + + + + @foreach ($itemView as $obj) + + + + + + + + + + + + + + + + + @endforeach + + +
      PicSubjectSubject (EN)CreatedActiveManage
      +
      + @if ($obj->image_url && $obj->image_name) + +
      +
      +
      + @else +
      +
      + @endif +
      +
      + + {{ $obj->name }} + + + + {{ $obj->name_en }} + + + {{ Carbon\Carbon::parse($obj->created_at)->format('d, M Y') }} + + @if ($obj->active == 1) + Active + @else + Inactive + @endif + + + {{-- View --}} + + + + + + + + + + {{-- Edit --}} + + + + + + + + + + {{-- Delete --}} + @if ($obj->active == 1 && Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category/view.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category/view.blade.php new file mode 100644 index 0000000..e857156 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/sub-category/view.blade.php @@ -0,0 +1,599 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Sub Category Edit', + 'pageName' => 'Edit', + 'pageParent' => 'Sub Category Management', + 'pageParentLink' => url('sub-category'), + ]) +
      +
      + + +
      + + + + + + + {{-- Left --}} +
      + +
      + +
      + +
      +

      Active

      +
      + +
      +
      + + +
      + +
      +
      + + + {{-- Right --}} +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + +
      + @foreach ($categoriesView as $item) + + @endforeach + +
      + +
      + +
      +
      + + + + + + + + + + + + + +
      +
      + +
      + + +
      + + +
      + + +
      + +
      + + +
      + + +
      + + +
      + +
      + + +
      Allowed Types .MP4, .MOV
      +
      +
      + @foreach ($urlsVideoView as $file) +
      +
      +
      + +
      +
      + {{ $file['name'] . '.' . $file['extension'] }} +
      +
      +
      + @endforeach +
      + +
      + + +
      + +
      Allowed Types .jpg, .bmp, .jpeg, .png
      + +
      +
      + + {{-- --}} + @foreach ($urlsImageView as $file) +
      +
      + +
      +
      +
      + +
      +
      +
      + {{ $file['name'] . '.' . $file['extension'] }} +
      +
      +
      + @endforeach +
      +
      + + +
      + +
      Allowed Types .m4a, .mp4, .mp3, .wav
      +
      +
      +
      + @foreach ($urlsSoundView as $file) +
      +
      + +
      +
      + {{ $file['name'] . '.' . $file['extension'] }} +
      +
      + @endforeach +
      +
      + + +
      + + +
      Allowed Types .pdf, .xls, .doc, .docx, .pptx, .csv, + .txt
      +
      + +
      + + @foreach ($urlsDocumentView as $file) + + @endforeach + +
      +
      + +
      + +
      + +
      + + Back + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + +@stop + + + + +@section('script') + + + + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/user/add.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/user/add.blade.php new file mode 100644 index 0000000..e527abb --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/user/add.blade.php @@ -0,0 +1,212 @@ +@extends('layouts.backendTemplate') + +@section('content') + + +
      + +
      + + @include('uc.admin.breadcrumb', [ + 'title' => 'User Add', + 'pageName' => 'Add', + 'pageParent' => 'Users Management', + 'pageParentLink' => url('user'), + ]) + +
      +
      + + +
      + + + + + +
      + +
      + + + +
      + +
      +

      Profile Picture

      +
      + +
      + +
      + + + +
      + +
      + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg image + files are accepted
      + +
      + +
      + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + +
      +
      + + +
      +
      +
      +
      + + +
      +
      +
      +
      + + +
      +
      +
      + +
      + + +
      + +
      + + +
      + + +
      + + +
      + +
      + + +
      + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + +@stop + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/user/edit.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/user/edit.blade.php new file mode 100644 index 0000000..0527305 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/user/edit.blade.php @@ -0,0 +1,244 @@ +@extends('layouts.backendTemplate') + +@section('content') + + +
      + +
      + + @include('uc.admin.breadcrumb', [ + 'title' => 'User Edit', + 'pageName' => 'Edit', + 'pageParent' => 'Users Management', + 'pageParentLink' => url('user'), + ]) + +
      +
      + + +
      + + + + + + +
      + +
      + +
      + +
      +

      Profile Picture

      +
      + +
      + +
      + + + +
      + + @if ($userView->image_url && $userView->image_name) +
      +
      + @else +
      + @endif + + + + + + + + + + + +
      + +
      Set the profile picture. Only *.png, *.jpg and *.jpeg image + files are accepted
      + + + {{-- Active --}} +
      + +
      +

      Active

      +
      + +
      +
      + +
      + +
      + +
      + +
      + +
      + + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + + + +
      + +
      +
      + role == 0) checked @endif + data-gtm-form-interact-field-id="1"> + +
      +
      +
      +
      + role == 1) checked @endif + data-gtm-form-interact-field-id="1"> + +
      +
      +
      +
      + role == 2) checked @endif + data-gtm-form-interact-field-id="1"> + +
      +
      +
      + + +
      + + +
      + +
      + + +
      + + +
      + + + + + + +
      + +
      + + +
      + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + +@stop + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/user/index.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/user/index.blade.php new file mode 100644 index 0000000..17a6450 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/user/index.blade.php @@ -0,0 +1,352 @@ +@extends('layouts.backendTemplate') + +@section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumbList', [ + 'title' => 'Users Management', + 'pageName' => 'User Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + + +
      + +
      +
      + + + + + + + +
      +
      + + +
      + +
      + +
      + + +
      + Add +
      + +
      + +
      + + + +
      + + + + + + + + + + + + + + + + + + + + @foreach ($userView as $key => $obj) + + + + + + + + + + + + + + + @endforeach + + + +
      PicRoleFirst NameLast NameEmailStatusCreated AtActions
      +
      + @if ($obj->image_url && $obj->image_name) + +
      +
      +
      + @else +
      +
      + @endif +
      +
      + @if ($obj->role == 1) + EDITOR + @elseif($obj->role == 2) + CONTRIBUTOR + @else + ADMIN + @endif + {{ $obj->first_name }}{{ $obj->last_name }}{{ $obj->email }} + @if ($obj->active == 1) + Active + @else + Locked + @endif + {{ date('d M, Y', strtotime($obj->created_at)) }} + + {{-- Edit --}} + + + + + + + + + + {{-- Delete --}} + @if ($obj->active == 1) + + + + + + + + + + @endif + +
      +
      +
      +
      +
      +
      +
      + + + {{-- --}} + +@stop + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/video/add.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/video/add.blade.php new file mode 100644 index 0000000..dd8ec6b --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/video/add.blade.php @@ -0,0 +1,357 @@ + @extends('layouts.backendTemplate') + + @section('content') + + + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Video Add', + 'pageName' => 'Add', + 'pageParent' => 'Video Management', + 'pageParentLink' => url('video'), + ]) + +
      +
      + + + +
      + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + + + + +
      0%
      + +
      Allowed Types .MP4, .MOV
      +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/video/folder/add.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/video/folder/add.blade.php new file mode 100644 index 0000000..fd13876 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/video/folder/add.blade.php @@ -0,0 +1,95 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Video Create Folder', + 'pageName' => 'Create folder', + 'pageParent' => 'Video Management', + 'pageParentLink' => url('video'), + ]) + +
      +
      + +
      + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/video/folder/edit.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/video/folder/edit.blade.php new file mode 100644 index 0000000..1c85136 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/video/folder/edit.blade.php @@ -0,0 +1,96 @@ + @extends('layouts.backendTemplate') + + @section('content') + + +
      + +
      + + + @include('uc.admin.breadcrumb', [ + 'title' => 'Video Edit Folder', + 'pageName' => 'Edit folder', + 'pageParent' => 'Video Management', + 'pageParentLink' => url('Video'), + ]) + +
      +
      + +
      + + + + + + +
      + +
      + + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + +
      +
      +

      Overview

      +
      +
      + +
      + +
      + + +
      + + +
      + +
      + +
      + + Cancel + + + +
      + +
      + + +
      +
      + +
      + +
      + +
      + + + @stop + + + @section('script') + + + + @endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/video/folder/index.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/video/folder/index.blade.php new file mode 100644 index 0000000..e24e717 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/video/folder/index.blade.php @@ -0,0 +1,305 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'Video Management Folder ' . $folderView->name, + 'pageName' => 'Video Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +
      + + @if (Auth::user()->role != 2) +
      +
      + Add + +
      +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + +
      + +
      + + + + + + + + + + + + + + + @foreach ($itemView as $obj) + + + + + + + + + + + @endforeach + + +
      NameCreatedManage
      + + + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Download --}} + + + + + {{-- Copy --}} + + + + {{-- Delete --}} + @if (Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/backend/video/index.blade.php b/think-backend.greaterchiangmai.com/resources/views2/backend/video/index.blade.php new file mode 100644 index 0000000..84f8baf --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/backend/video/index.blade.php @@ -0,0 +1,426 @@ +@extends('layouts.backendTemplate') + +@section('content') + + + + +
      + +
      + + + @include('uc.breadcrumbList', [ + 'title' => 'Video Management', + 'pageName' => 'Video Management', + ]) + + +
      + +
      + +
      + + @if (Session::has('messageSuccess')) +
      + @include('uc/messageSuccess') +
      + @endif + + @if (Session::has('messageFail')) +
      + @include('uc/messageFail') +
      + @endif + + +
      +
      +
      + + @if (Auth::user()->role != 2) +
      + + + +
      + Add +
      + +
      + @endif + +
      + + +
      + +
      +
      + + + + + + + + + + +
      +
      + +
      + +
      + + + + + + + + + + + + + + + @foreach ($folderView as $obj) + + + + + + + + + + @endforeach + + + @foreach ($itemView as $obj) + + + + + + + + + + + @endforeach + + +
      NameCreatedAction
      +
      + + + + + + + + {{ $obj->name }} +
      +
      + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Edit --}} + + + + + + + + + + {{-- Delete --}} + + + + + + + + + +
      + + + {{ Carbon\Carbon::parse($obj['created_at'])->format('d, M Y') }} + + + {{-- Download --}} + + + + + {{-- Copy --}} + + + {{-- Delete --}} + @if (Auth::user()->role != 2) + + + + + + + + + + @endif +
      +
      +
      +
      +
      +
      +
      + + +@stop + + +@section('script') + + + +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/emails/.DS_Store b/think-backend.greaterchiangmai.com/resources/views2/emails/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/think-backend.greaterchiangmai.com/resources/views2/emails/.DS_Store differ diff --git a/think-backend.greaterchiangmai.com/resources/views2/emails/approve-booking.blade.php b/think-backend.greaterchiangmai.com/resources/views2/emails/approve-booking.blade.php new file mode 100644 index 0000000..cf00d1f --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/emails/approve-booking.blade.php @@ -0,0 +1,161 @@ + + + + + + + + + + + +
      + +
      + + +
      + + +
      +
      + + + + + + + +
      + +
      + + +
      +

      + The Greater Chiangmai

      +
      + + +
      +

      + Approve Booking {{ $booking_number }} +

      + +
      + + +
      + +

      + Booking summary

      + +
      + + + @foreach ($room_detail as $item) +
      + +
      + {{ $item->room_type_name }} ({{ $item->room_name }}) x 1 +
      + +
      + {{ $item->price }} +
      + +
      + @endforeach + + +
      +
      + + +
      +
      + Fee +
      +
      + {{ $fee }} +
      +
      + + +
      +
      + + +
      +
      + Total +
      +
      + {{ $total }} +
      +
      + + +
      +
      + + + +
      +
      + Grand Total +
      +
      + {{ $grand_total }} +
      +
      + + +
      +
      + + +
      + +
      +
      +
      + +
      + +
      + +
      + + + + + diff --git a/think-backend.greaterchiangmai.com/resources/views2/emails/cancel-booking.blade.php b/think-backend.greaterchiangmai.com/resources/views2/emails/cancel-booking.blade.php new file mode 100644 index 0000000..4471dcd --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/emails/cancel-booking.blade.php @@ -0,0 +1,160 @@ + + + + + + + + + + + +
      + +
      + + +
      + + +
      +
      + + + + + + + +
      + +
      + +
      +

      + The Greater Chiangmai

      +
      + + +
      +

      + Cancel Booking {{ $booking_number }} +

      + +
      + + +
      + +

      + Booking summary

      + +
      + + + @foreach ($room_detail as $item) +
      + +
      + {{ $item->room_type_name }} ({{ $item->room_name }}) x 1 +
      + +
      + {{ $item->price }} +
      + +
      + @endforeach + + +
      +
      + + +
      +
      + Fee +
      +
      + {{ $fee }} +
      +
      + + +
      +
      + + +
      +
      + Total +
      +
      + {{ $total }} +
      +
      + + +
      +
      + + + +
      +
      + Grand Total +
      +
      + {{ $grand_total }} +
      +
      + + +
      +
      + + +
      + +
      +
      +
      + +
      + +
      + +
      + + + + + diff --git a/think-backend.greaterchiangmai.com/resources/views2/emails/forgot-password.blade.php b/think-backend.greaterchiangmai.com/resources/views2/emails/forgot-password.blade.php new file mode 100644 index 0000000..2a974a3 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/emails/forgot-password.blade.php @@ -0,0 +1,85 @@ + + + + + + +
      + +
      + + + +
      + + +
      +
      + + + + + + +
      + +
      + + +
      +

      + The Greater Chiangmai

      +
      + + +
      +

      + ลืมรหัสผ่าน +

      +

      + เราได้รับคำขอให้รีเซ็ตรหัสผ่านสำหรับบัญชีของคุณ +

      +
      + + +
      + + {{-- Link --}} +

      + ยืนยัน +

      + + +
      +
      +
      +
      +
      +
      +
      +
      + + + diff --git a/think-backend.greaterchiangmai.com/resources/views2/emails/reset-password.blade.php b/think-backend.greaterchiangmai.com/resources/views2/emails/reset-password.blade.php new file mode 100644 index 0000000..d5d00dd --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/emails/reset-password.blade.php @@ -0,0 +1,81 @@ + + + + + + +
      + +
      + + + +
      + + +
      +
      + + + + + + +
      + +
      + + +
      +

      + The Greater Chiangmai

      +
      + + +
      +

      + รีเซทรหัสผ่าน +

      +

      รหัสผ่านใหม่ด้านล่าง

      +
      + + +
      +

      + {{ $password }}

      + + + +
      +
      +
      +
      +
      +
      +
      +
      + + + diff --git a/think-backend.greaterchiangmai.com/resources/views2/errors/404.blade.php b/think-backend.greaterchiangmai.com/resources/views2/errors/404.blade.php new file mode 100644 index 0000000..46f502d --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/errors/404.blade.php @@ -0,0 +1,31 @@ +@extends('layouts.errorTemplate') + +@section('main') +
      + +
      +
      + +

      Not Found

      + + +
      We can't find that page.
      + +
      + + +
      + + + + + +
      +
      + +
      +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/errors/500.blade.php b/think-backend.greaterchiangmai.com/resources/views2/errors/500.blade.php new file mode 100644 index 0000000..1bc85f2 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/errors/500.blade.php @@ -0,0 +1,32 @@ +@extends('layouts.errorTemplate') + +@section('main') +
      + +
      +
      + +

      Internal Server Error

      + + +
      Something went wrong! Please try again later or contact the + administrator.
      + +
      + + +
      + + + + + +
      +
      + +
      +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/errors/503.blade.php b/think-backend.greaterchiangmai.com/resources/views2/errors/503.blade.php new file mode 100644 index 0000000..497fa63 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/errors/503.blade.php @@ -0,0 +1,32 @@ +@extends('layouts.errorTemplate') + +@section('main') +
      + +
      +
      + +

      503 Service Unavailable Error

      + + +
      Something went wrong! Please try again later or contact the + administrator.
      + + + {{--
      + + +
      --}} + + + + +
      +
      + +
      +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/errors/no_access.blade.php b/think-backend.greaterchiangmai.com/resources/views2/errors/no_access.blade.php new file mode 100644 index 0000000..18c4a58 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/errors/no_access.blade.php @@ -0,0 +1,25 @@ +@extends('layouts.errorTemplate') + +@section('main') +
      + +
      +
      + +

      No Access

      + + +
      + Sorry, you are not allowed to see this. +
      + + + + +
      +
      + +
      +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/errors/no_permission.blade.php b/think-backend.greaterchiangmai.com/resources/views2/errors/no_permission.blade.php new file mode 100644 index 0000000..e174d78 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/errors/no_permission.blade.php @@ -0,0 +1,25 @@ +@extends('layouts.errorTemplate') + +@section('main') +
      + +
      +
      + +

      No Permission

      + + +
      + Sorry, you do not have permission to access this view. +
      + + + + +
      +
      + +
      +@endsection diff --git a/think-backend.greaterchiangmai.com/resources/views2/layouts/backendTemplate.blade.php b/think-backend.greaterchiangmai.com/resources/views2/layouts/backendTemplate.blade.php new file mode 100644 index 0000000..ea58193 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/layouts/backendTemplate.blade.php @@ -0,0 +1,563 @@ + + + + + + + The Greater Chiangmai : Backend + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{-- fileuploader --}} + + + + + + + + + + + + + + + + + + +
      + + Loading... +
      + + +
      + +
      + + @include('uc.header') + + + +
      + + +
      + + + + + + +
      + +
      + + +
      +
      + +
      + + + @yield('content') + +
      + + +
      +
      + + +
      + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{-- Custom --}} + {{-- + + --}} + + + + + + {{-- fileuploader --}} + + + + + @yield('script') + + + + + diff --git a/think-backend.greaterchiangmai.com/resources/views2/layouts/errorTemplate.blade.php b/think-backend.greaterchiangmai.com/resources/views2/layouts/errorTemplate.blade.php new file mode 100644 index 0000000..41770c4 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/layouts/errorTemplate.blade.php @@ -0,0 +1,101 @@ + + + + + + + The Greater Chiangmai + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + +
      + + @yield('main') + +
      + +
      + + + + + + + + + + + + + + + @yield('script') + + + + + diff --git a/think-backend.greaterchiangmai.com/resources/views2/layouts/loginTemplate.blade.php b/think-backend.greaterchiangmai.com/resources/views2/layouts/loginTemplate.blade.php new file mode 100644 index 0000000..13325e4 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/layouts/loginTemplate.blade.php @@ -0,0 +1,129 @@ + + + + + + + The Greater Chiangmai + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + + +
      + + + + +
      + + + + + +
      + +
      + +
      + +
      + + +
      + + + + @yield('content') + + +
      + +
      + +
      + +
      + + +
      + +
      + + + + + + + + + + + + + + + {{-- custom --}} + + + @yield('script') + + + + + diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/admin/breadcrumb.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/admin/breadcrumb.blade.php new file mode 100644 index 0000000..0228ca4 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/admin/breadcrumb.blade.php @@ -0,0 +1,43 @@ +
      + +
      + +
      + +

      + {{ $title }} +

      + + + +
      + +
      + +
      diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/admin/breadcrumbList.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/admin/breadcrumbList.blade.php new file mode 100644 index 0000000..be8898d --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/admin/breadcrumbList.blade.php @@ -0,0 +1,30 @@ + +
      + +
      + +
      + +

      + {{ $title }} +

      + + + +
      + +
      + +
      diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/admin/datatableScript.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/admin/datatableScript.blade.php new file mode 100644 index 0000000..a3edb09 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/admin/datatableScript.blade.php @@ -0,0 +1,32 @@ + + diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/admin/datatableStyle.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/admin/datatableStyle.blade.php new file mode 100644 index 0000000..7721efc --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/admin/datatableStyle.blade.php @@ -0,0 +1,40 @@ + + + + + + + + diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/admin/msgFail.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/admin/msgFail.blade.php new file mode 100644 index 0000000..d4f8ead --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/admin/msgFail.blade.php @@ -0,0 +1,6 @@ +
      + + Oh snap! {{ Session::get('messageDetail') }} +
      diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/admin/msgSuccess.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/admin/msgSuccess.blade.php new file mode 100644 index 0000000..6d43651 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/admin/msgSuccess.blade.php @@ -0,0 +1,6 @@ +
      + + Well done! {{ Session::get('messageDetail') }} +
      diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/backHome.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/backHome.blade.php new file mode 100644 index 0000000..52c9b69 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/backHome.blade.php @@ -0,0 +1 @@ +Dashboard diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/bannerSlider.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/bannerSlider.blade.php new file mode 100644 index 0000000..e8af57a --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/bannerSlider.blade.php @@ -0,0 +1,71 @@ +
      +
      +
      + + + @foreach($bannerView['banner'] as $item) + + @if(!empty($bannerView['banner_images'][$item->banner_id]->file_name)) +
      banner_id]->file_name.".".$bannerView['banner_images'][$item->banner_id]->extension) }}');" + > +
      +
      +
      +
      +
      +
      +
      +
      +
      + @else +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + @endif + + @endforeach + + +
      + + +
      +
      +
      + +
      +
      + +{{--
      --}} +{{--
      --}} +{{--
        --}} +{{-- @foreach($bannerView['banner'] as $item)--}} +{{-- --}} +{{--
      • --}} +{{-- @if(!empty($bannerView['banner_images'][$item->banner_id]->file_name))--}} +{{-- banner_id]->file_name.".".$bannerView['banner_images'][$item->banner_id]->extension) }}"--}} +{{-- alt=""--}} +{{-- data-bgposition="center center"--}} +{{-- data-kenburns="on"--}} +{{-- data-duration="25000"--}} +{{-- data-ease="Linear.easeNone" data-bgfit="100" data-bgfitend="120" data-bgpositionend="center top">--}} +{{-- @else--}} +{{-- --}} +{{-- @endif--}} +{{--
      • --}} +{{-- --}} +{{-- @endforeach--}} +{{--
      --}} +{{--
      --}} +{{--
      --}} +{{--
      --}} diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/breadcrumb.blade copy.php b/think-backend.greaterchiangmai.com/resources/views2/uc/breadcrumb.blade copy.php new file mode 100644 index 0000000..9de6bf4 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/breadcrumb.blade copy.php @@ -0,0 +1,42 @@ + +
      + +
      + +
      + +

      + {{ $title }} +

      + + + +
      + +
      + +
      diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/breadcrumb.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/breadcrumb.blade.php new file mode 100644 index 0000000..61f26eb --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/breadcrumb.blade.php @@ -0,0 +1,20 @@ +
      +
      +
      + +
      +

      + {{ $title }} +

      +
      +
      +
      +
      diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/breadcrumbList.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/breadcrumbList.blade.php new file mode 100644 index 0000000..eaddb6b --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/breadcrumbList.blade.php @@ -0,0 +1,30 @@ + +
      + +
      + +
      + +

      + {{ $title }} +

      + + + +
      + +
      + +
      diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/crumbsHeader.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/crumbsHeader.blade.php new file mode 100644 index 0000000..618890d --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/crumbsHeader.blade.php @@ -0,0 +1,27 @@ +
      +
      + +
      +
      + {{ trans('global.menu_home') }} / {{ $title }} +
      +
      + +
      + +
      +

      + {{ $title }} + + {{ $desc }} + + + + +

      +
      + +
      + +
      +
      diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/errors.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/errors.blade.php new file mode 100644 index 0000000..49cc16e --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/errors.blade.php @@ -0,0 +1,10 @@ +@if ($errors->any()) +
      +

      Notice

      +
        + @foreach ($errors->all() as $error) +
      • {{ $error }}
      • + @endforeach +
      +
      +@endif diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/header.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/header.blade.php new file mode 100644 index 0000000..d12764f --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/header.blade.php @@ -0,0 +1,134 @@ + +
      + +
      + + +
      +
      + + + + + + + + +
      +
      + + + + + + + +
      + +
      + + + +
      + + + +
      + + + +
      + +
      + + @if (Auth::user()->image_url && Auth::user()->image_name) + The Greater Chiangmai + @else + The Greater Chiangmai + @endif + + +
      + + + + +
      + + +
      + + +
      + + +
      + +
      + diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/messageFail.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/messageFail.blade.php new file mode 100644 index 0000000..bd0f05f --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/messageFail.blade.php @@ -0,0 +1,23 @@ +
      + +
      + + + + + + + +
      +
      +

      Warning

      +
      + {{ Session::get('messageDetail') }} +
      +
      +
      +
      +
      diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/messageSuccess.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/messageSuccess.blade.php new file mode 100644 index 0000000..37fb78e --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/messageSuccess.blade.php @@ -0,0 +1,24 @@ +
      + +
      + + + + + + +
      +
      +

      Success

      +
      + {{ Session::get('messageDetail') }} +
      +
      +
      +
      + +
      diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/pagination/default.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/pagination/default.blade.php new file mode 100644 index 0000000..f582b53 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/pagination/default.blade.php @@ -0,0 +1,39 @@ + + + +
      + +
      diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/pagination/frontend.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/pagination/frontend.blade.php new file mode 100644 index 0000000..624ce13 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/pagination/frontend.blade.php @@ -0,0 +1,33 @@ + + + +
      +
      +
      +
      +
      + + {!! str_replace('/?', '?', $data->render()) !!} + {{-- --}} + {{--
      --}} + {{-- --}} + {{--
      --}} + +
      +
      + +
      diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/topHeader.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/topHeader.blade.php new file mode 100644 index 0000000..9a280fd --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/topHeader.blade.php @@ -0,0 +1,41 @@ +
      + +
      + + +
      +
      + หน้าแรก @if($detail) / {{ $title }} + / {{ $detail }} @else / {{ $title }} @endif +
      +
      + + + +
      +
      +

      {{ $title }}

      +
      +
      + + + +
      + +
      + + +
      + +
      + + diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/topHeaderDetail.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/topHeaderDetail.blade.php new file mode 100644 index 0000000..0f14944 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/topHeaderDetail.blade.php @@ -0,0 +1,41 @@ +
      + +
      + + +
      +
      + หน้าแรก @if($detail) / {{ $title }} + / {{ $detail }} @else / {{ $title }} @endif +
      +
      + + + +
      +
      +

      {{ $title }}

      +
      +
      + + + +
      + +
      + + +
      + +
      + + diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/topHeaderJob.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/topHeaderJob.blade.php new file mode 100644 index 0000000..641056e --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/topHeaderJob.blade.php @@ -0,0 +1,41 @@ +
      + +
      + + +
      +
      + หน้าแรก @if($detail) / {{ $title }} + / {{ $detail }} @else / {{ $title }} @endif +
      +
      + + + +
      +
      +

      {{ $title }}

      +
      +
      + + + +
      + +
      + + +
      + +
      + + diff --git a/think-backend.greaterchiangmai.com/resources/views2/uc/topHeaderVolunteer.blade.php b/think-backend.greaterchiangmai.com/resources/views2/uc/topHeaderVolunteer.blade.php new file mode 100644 index 0000000..8607e85 --- /dev/null +++ b/think-backend.greaterchiangmai.com/resources/views2/uc/topHeaderVolunteer.blade.php @@ -0,0 +1,41 @@ +
      + +
      + + +
      +
      + หน้าแรก @if($detail) / {{ $title }} / {{ $detail }} @else / {{ $title }} @endif +
      +
      + + + +
      +
      +

      {{ $title }}

      +
      +
      + + + +
      + +
      + + +
      + +
      + + diff --git a/think-backend.greaterchiangmai.com/routes/api.php b/think-backend.greaterchiangmai.com/routes/api.php new file mode 100644 index 0000000..889937e --- /dev/null +++ b/think-backend.greaterchiangmai.com/routes/api.php @@ -0,0 +1,19 @@ +get('/user', function (Request $request) { + return $request->user(); +}); diff --git a/think-backend.greaterchiangmai.com/routes/channels.php b/think-backend.greaterchiangmai.com/routes/channels.php new file mode 100644 index 0000000..5d451e1 --- /dev/null +++ b/think-backend.greaterchiangmai.com/routes/channels.php @@ -0,0 +1,18 @@ +id === (int) $id; +}); diff --git a/think-backend.greaterchiangmai.com/routes/console.php b/think-backend.greaterchiangmai.com/routes/console.php new file mode 100644 index 0000000..e05f4c9 --- /dev/null +++ b/think-backend.greaterchiangmai.com/routes/console.php @@ -0,0 +1,19 @@ +comment(Inspiring::quote()); +})->purpose('Display an inspiring quote'); diff --git a/think-backend.greaterchiangmai.com/routes/web.php b/think-backend.greaterchiangmai.com/routes/web.php new file mode 100644 index 0000000..38c67be --- /dev/null +++ b/think-backend.greaterchiangmai.com/routes/web.php @@ -0,0 +1,141 @@ +name('index'); +Route::get('login', [AuthenticateController::class, 'login'])->name('login'); +Route::post('authenticate', [AuthenticateController::class, 'authenticate'])->name('authenticate'); + +Route::get('forgot-password', [AuthenticateController::class, 'forgotPassword'])->name('forgotPassword'); +Route::post('post-forgot-password', [AuthenticateController::class, 'updateForgotPassword'])->name('updateForgotPassword'); + +Route::get('reset-password/{token}', [AuthenticateController::class, 'resetPassword'])->name('resetPassword'); +Route::post('post-reset-password', [AuthenticateController::class, 'updateResetPassword'])->name('updateResetPassword'); + +/* ===== Backend: Authenticate ===== */ +Route::group(["middleware" => ["role: 0|1|2"]], function () { + Route::get('logout', [AuthenticateController::class, 'logout'])->name('logout'); + + Route::get('dashboard', [AdminController::class, 'index'])->name('dashboard'); + + // Subcategory for Category + Route::get('no-where-else/sub-category/{fromDate?}/{toDate?}', [SubCategoryController::class, 'index']); + Route::get('no-where-else/add-sub-category', [SubCategoryController::class, 'add']); + Route::post('no-where-else/insert-sub-category', [SubCategoryController::class, 'insert']); + Route::get('no-where-else/edit-sub-category/{id}', [SubCategoryController::class, 'edit']); + Route::post('no-where-else/update-sub-category', [SubCategoryController::class, 'update']); + Route::post('no-where-else/delete-sub-category', [SubCategoryController::class, 'delete']); + + // Article + Route::get('no-where-else/article/{fromDate?}/{toDate?}', [ArticleController::class, 'index']); + Route::get('no-where-else/add-article', [ArticleController::class, 'add']); + Route::post('no-where-else/insert-article', [ArticleController::class, 'insert']); + Route::get('no-where-else/edit-article/{id}', [ArticleController::class, 'edit']); + Route::post('no-where-else/update-article', [ArticleController::class, 'update']); + Route::post('no-where-else/delete-article', [ArticleController::class, 'delete']); + + + // Subcategory for Category 2 + Route::get('where-else/sub-category/{fromDate?}/{toDate?}', [SubCategoryWhereElseController::class, 'index']); + Route::get('where-else/add-sub-category', [SubCategoryWhereElseController::class, 'add']); + Route::post('where-else/insert-sub-category', [SubCategoryWhereElseController::class, 'insert']); + Route::get('where-else/edit-sub-category/{id}', [SubCategoryWhereElseController::class, 'edit']); + Route::post('where-else/update-sub-category', [SubCategoryWhereElseController::class, 'update']); + Route::post('where-else/delete-sub-category', [SubCategoryWhereElseController::class, 'delete']); + + // Sub Article + Route::get('where-else/article/{fromDate?}/{toDate?}', [ArticleWhereElseController::class, 'index']); + Route::get('where-else/add-article', [ArticleWhereElseController::class, 'add']); + Route::post('where-else/insert-article', [ArticleWhereElseController::class, 'insert']); + Route::get('where-else/edit-article/{id}', [ArticleWhereElseController::class, 'edit']); + Route::post('where-else/update-article', [ArticleWhereElseController::class, 'update']); + Route::post('where-else/delete-article', [ArticleWhereElseController::class, 'delete']); + + + // Video + Route::get('video', [VideoController::class, 'index'])->name('video-index'); + Route::get('video/add/{folderId?}', [VideoController::class, 'add'])->name('video-add'); + Route::post('video/insert', [VideoController::class, 'insert'])->name('video-insert'); + Route::post('video/delete', [VideoController::class, 'delete'])->name('video-delete'); + + + Route::get('video/folder/{folderId}', [VideoController::class, 'folder'])->name('video-folder'); + Route::get('video/add-folder', [VideoController::class, 'addFolder'])->name('video-add-folder'); + Route::post('video/insert-folder', [VideoController::class, 'insertFolder'])->name('video-insert-folder'); + Route::get('video/edit-folder/{folderId}', [VideoController::class, 'editFolder'])->name('video-edit-folder'); + Route::post('video/update-folder', [VideoController::class, 'updateFolder'])->name('video-update'); + Route::post('video/delete-folder', [VideoController::class, 'deleteFolder'])->name('video-delete'); + Route::get('video/download-folder/{folderId}', [VideoController::class, 'downloadFolder']); + + // Sound + Route::get('sound', [SoundController::class, 'index'])->name('sound-index'); + Route::get('sound/add/{folderId?}', [SoundController::class, 'add'])->name('sound-add'); + Route::post('sound/insert', [SoundController::class, 'insert'])->name('sound-insert'); + Route::post('sound/delete', [SoundController::class, 'delete'])->name('sound-delete'); + + Route::get('sound/folder/{folderId}', [SoundController::class, 'folder'])->name('sound-folder'); + Route::get('sound/add-folder', [SoundController::class, 'addFolder'])->name('sound-add-folder'); + Route::post('sound/insert-folder', [SoundController::class, 'insertFolder'])->name('sound-insert-folder'); + Route::get('sound/edit-folder/{folderId}', [SoundController::class, 'editFolder'])->name('sound-edit-folder'); + Route::post('sound/update-folder', [SoundController::class, 'updateFolder'])->name('sound-update'); + Route::post('sound/delete-folder', [SoundController::class, 'deleteFolder'])->name('sound-delete'); + Route::get('sound/download-folder/{folderId}', [SoundController::class, 'downloadFolder']); + + // Image + Route::get('image', [ImageController::class, 'index'])->name('image-index'); + Route::get('image/add/{folderId?}', [ImageController::class, 'add'])->name('image-add'); + Route::post('image/insert', [ImageController::class, 'insert'])->name('image-insert'); + Route::post('image/delete', [ImageController::class, 'delete'])->name('image-delete'); + + Route::get('image/folder/{folderId}', [ImageController::class, 'folder'])->name('image-folder'); + Route::get('image/add-folder', [ImageController::class, 'addFolder'])->name('image-add-folder'); + Route::post('image/insert-folder', [ImageController::class, 'insertFolder'])->name('image-insert-folder'); + Route::get('image/edit-folder/{folderId}', [ImageController::class, 'editFolder'])->name('image-edit-folder'); + Route::post('image/update-folder', [ImageController::class, 'updateFolder'])->name('image-update'); + Route::post('image/delete-folder', [ImageController::class, 'deleteFolder'])->name('image-delete'); + Route::get('image/download-folder/{folderId}', [ImageController::class, 'downloadFolder']); + + // Document + Route::get('document', [DocumentController::class, 'index'])->name('document-index'); + Route::get('document/add/{folderId?}', [DocumentController::class, 'add'])->name('document-add'); + Route::post('document/insert', [DocumentController::class, 'insert'])->name('document-insert'); + Route::post('document/delete', [DocumentController::class, 'delete'])->name('document-delete'); + + Route::get('document/folder/{folderId}', [DocumentController::class, 'folder'])->name('document-folder'); + Route::get('document/add-folder', [DocumentController::class, 'addFolder'])->name('document-add-folder'); + Route::post('document/insert-folder', [DocumentController::class, 'insertFolder'])->name('document-insert-folder'); + Route::get('document/edit-folder/{folderId}', [DocumentController::class, 'editFolder'])->name('document-edit-folder'); + Route::post('document/update-folder', [DocumentController::class, 'updateFolder'])->name('document-update'); + Route::post('document/delete-folder', [DocumentController::class, 'deleteFolder'])->name('document-delete'); + Route::get('document/download-folder/{folderId}', [DocumentController::class, 'downloadFolder']); + + Route::get('user', [UserController::class, 'index'])->name('user-index'); + Route::get('user/add', [UserController::class, 'add'])->name('user-add'); + Route::get('user/edit/{id}', [UserController::class, 'edit'])->name('user-edit'); + Route::post('user/update', [UserController::class, 'update'])->name('user-update'); + Route::post('user/insert', [UserController::class, 'insert'])->name('user-insert'); + Route::post('user/delete', [UserController::class, 'delete'])->name('user-delete'); + + + + + Route::post('no-where-else/article-upload-image', [ArticleController::class, 'uploadImage']); + Route::post('where-else/article-upload-image', [ArticleWhereElseController::class, 'uploadImage']); + + // Ck Editor + // Route::post('ck-editor/upload', [CkEditorHelperController::class, 'upload'])->name('ck-editor-upload'); +}); diff --git a/think-backend.greaterchiangmai.com/storage/.DS_Store b/think-backend.greaterchiangmai.com/storage/.DS_Store new file mode 100644 index 0000000..dbb9bfe Binary files /dev/null and b/think-backend.greaterchiangmai.com/storage/.DS_Store differ diff --git a/think-backend.greaterchiangmai.com/storage/app/.gitignore b/think-backend.greaterchiangmai.com/storage/app/.gitignore new file mode 100644 index 0000000..8f4803c --- /dev/null +++ b/think-backend.greaterchiangmai.com/storage/app/.gitignore @@ -0,0 +1,3 @@ +* +!public/ +!.gitignore diff --git a/think-backend.greaterchiangmai.com/storage/app/public/.gitignore b/think-backend.greaterchiangmai.com/storage/app/public/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/think-backend.greaterchiangmai.com/storage/app/public/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/think-backend.greaterchiangmai.com/storage/framework/.DS_Store b/think-backend.greaterchiangmai.com/storage/framework/.DS_Store new file mode 100644 index 0000000..4a8d379 Binary files /dev/null and b/think-backend.greaterchiangmai.com/storage/framework/.DS_Store differ diff --git a/think-backend.greaterchiangmai.com/storage/framework/.gitignore b/think-backend.greaterchiangmai.com/storage/framework/.gitignore new file mode 100644 index 0000000..05c4471 --- /dev/null +++ b/think-backend.greaterchiangmai.com/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/think-backend.greaterchiangmai.com/storage/framework/cache/.gitignore b/think-backend.greaterchiangmai.com/storage/framework/cache/.gitignore new file mode 100644 index 0000000..01e4a6c --- /dev/null +++ b/think-backend.greaterchiangmai.com/storage/framework/cache/.gitignore @@ -0,0 +1,3 @@ +* +!data/ +!.gitignore diff --git a/think-backend.greaterchiangmai.com/storage/framework/cache/data/.gitignore b/think-backend.greaterchiangmai.com/storage/framework/cache/data/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/think-backend.greaterchiangmai.com/storage/framework/cache/data/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/think-backend.greaterchiangmai.com/storage/framework/sessions/.gitignore b/think-backend.greaterchiangmai.com/storage/framework/sessions/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/think-backend.greaterchiangmai.com/storage/framework/sessions/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/think-backend.greaterchiangmai.com/storage/framework/testing/.gitignore b/think-backend.greaterchiangmai.com/storage/framework/testing/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/think-backend.greaterchiangmai.com/storage/framework/testing/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/think-backend.greaterchiangmai.com/storage/framework/views/.gitignore b/think-backend.greaterchiangmai.com/storage/framework/views/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/think-backend.greaterchiangmai.com/storage/framework/views/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/think-backend.greaterchiangmai.com/storage/logs/.gitignore b/think-backend.greaterchiangmai.com/storage/logs/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/think-backend.greaterchiangmai.com/storage/logs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/think-backend.greaterchiangmai.com/tests/.DS_Store b/think-backend.greaterchiangmai.com/tests/.DS_Store new file mode 100644 index 0000000..21c4152 Binary files /dev/null and b/think-backend.greaterchiangmai.com/tests/.DS_Store differ diff --git a/think-backend.greaterchiangmai.com/tests/CreatesApplication.php b/think-backend.greaterchiangmai.com/tests/CreatesApplication.php new file mode 100644 index 0000000..cc68301 --- /dev/null +++ b/think-backend.greaterchiangmai.com/tests/CreatesApplication.php @@ -0,0 +1,21 @@ +make(Kernel::class)->bootstrap(); + + return $app; + } +} diff --git a/think-backend.greaterchiangmai.com/tests/Feature/ExampleTest.php b/think-backend.greaterchiangmai.com/tests/Feature/ExampleTest.php new file mode 100644 index 0000000..8364a84 --- /dev/null +++ b/think-backend.greaterchiangmai.com/tests/Feature/ExampleTest.php @@ -0,0 +1,19 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/think-backend.greaterchiangmai.com/tests/TestCase.php b/think-backend.greaterchiangmai.com/tests/TestCase.php new file mode 100644 index 0000000..2932d4a --- /dev/null +++ b/think-backend.greaterchiangmai.com/tests/TestCase.php @@ -0,0 +1,10 @@ +assertTrue(true); + } +} diff --git a/think-backend.greaterchiangmai.com/vite.config.js b/think-backend.greaterchiangmai.com/vite.config.js new file mode 100644 index 0000000..421b569 --- /dev/null +++ b/think-backend.greaterchiangmai.com/vite.config.js @@ -0,0 +1,11 @@ +import { defineConfig } from 'vite'; +import laravel from 'laravel-vite-plugin'; + +export default defineConfig({ + plugins: [ + laravel({ + input: ['resources/css/app.css', 'resources/js/app.js'], + refresh: true, + }), + ], +}); diff --git a/think.greaterchiangmai.com/.editorconfig b/think.greaterchiangmai.com/.editorconfig new file mode 100644 index 0000000..8f0de65 --- /dev/null +++ b/think.greaterchiangmai.com/.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/think.greaterchiangmai.com/.gitattributes b/think.greaterchiangmai.com/.gitattributes new file mode 100644 index 0000000..fcb21d3 --- /dev/null +++ b/think.greaterchiangmai.com/.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/think.greaterchiangmai.com/.gitignore b/think.greaterchiangmai.com/.gitignore new file mode 100644 index 0000000..e2d7594 --- /dev/null +++ b/think.greaterchiangmai.com/.gitignore @@ -0,0 +1,20 @@ +/.phpunit.cache +/node_modules +/public/build +/public/hot +/public/uploads +/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/think.greaterchiangmai.com/.htaccess b/think.greaterchiangmai.com/.htaccess new file mode 100644 index 0000000..f577be8 --- /dev/null +++ b/think.greaterchiangmai.com/.htaccess @@ -0,0 +1,10 @@ + RewriteEngine On + + RewriteRule ^.well-known/ - [L,NC] + RewriteCond %{HTTPS} !=on + RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] + + RewriteCond %{REQUEST_URI} !^/public/ + RewriteRule ^(.*)$ /public/$1 [L,QSA] + + RewriteRule ^(.*)$ public/$1 [L] diff --git a/think.greaterchiangmai.com/README.md b/think.greaterchiangmai.com/README.md new file mode 100644 index 0000000..1a4c26b --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/app/Console/Kernel.php b/think.greaterchiangmai.com/app/Console/Kernel.php new file mode 100644 index 0000000..e6b9960 --- /dev/null +++ b/think.greaterchiangmai.com/app/Console/Kernel.php @@ -0,0 +1,27 @@ +command('inspire')->hourly(); + } + + /** + * Register the commands for the application. + */ + protected function commands(): void + { + $this->load(__DIR__.'/Commands'); + + require base_path('routes/console.php'); + } +} diff --git a/think.greaterchiangmai.com/app/Exceptions/Handler.php b/think.greaterchiangmai.com/app/Exceptions/Handler.php new file mode 100644 index 0000000..56af264 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/app/Http/Controllers/Controller.php b/think.greaterchiangmai.com/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..77ec359 --- /dev/null +++ b/think.greaterchiangmai.com/app/Http/Controllers/Controller.php @@ -0,0 +1,12 @@ +hasFile('upload')) { + $originName = $request->file('upload')->getClientOriginalName(); + $fileName = pathinfo($originName, PATHINFO_FILENAME); + $extension = $request->file('upload')->getClientOriginalExtension(); + $fileName = $fileName . '_' . time() . '.' . $extension; + + $request->file('upload')->move(public_path('/uploads/ck-editor/'), $fileName); + + $url = asset('/uploads/ck-editor/' . $fileName); + + return response()->json(['fileName' => $fileName, 'uploaded' => 1, 'url' => $url]); + } + } +} \ No newline at end of file diff --git a/think.greaterchiangmai.com/app/Http/Controllers/Helpers/EmailHelperController.php b/think.greaterchiangmai.com/app/Http/Controllers/Helpers/EmailHelperController.php new file mode 100644 index 0000000..c6bb2c9 --- /dev/null +++ b/think.greaterchiangmai.com/app/Http/Controllers/Helpers/EmailHelperController.php @@ -0,0 +1,73 @@ + $emailTo, + 'link' => url('reset-password/' . $token), + ]; + + Mail::send('emails.forgot-password', $details, function ($message) use ($subject, $details) { + $message->to($details['email']) + ->subject($subject); + }); + } + + public function sendEmailResetPassword($emailTo, $newPassword) + { + // subject + $subject = 'Reset Password: The Greater Chiangmai : Has Sent You a Message! No reply This email'; + + $details = [ + 'email' => $emailTo, + 'password' => $newPassword, + ]; + + Mail::send('emails.reset-password', $details, function ($message) use ($subject, $details) { + $message->to($details['email']) + ->subject($subject); + }); + } + + public function sendEmailCancelBooking($details) + { + + // subject + $subject = 'Cancel Booking: The Greater Chiangmai : Has Sent You a Message! No reply This email'; + + + Mail::send('emails.cancel-booking', $details, function ($message) use ($subject, $details) { + $message->to($details['email']) + ->subject($subject); + }); + } + + + public function sendEmailApproveBooking($details) + { + + // subject + $subject = 'Approve Booking: The Greater Chiangmai : Has Sent You a Message! No reply This email'; + + + Mail::send('emails.approve-booking', $details, function ($message) use ($subject, $details) { + $message->to($details['email']) + ->subject($subject); + }); + } +} diff --git a/think.greaterchiangmai.com/app/Http/Controllers/Helpers/EmailPhpHelperController.php b/think.greaterchiangmai.com/app/Http/Controllers/Helpers/EmailPhpHelperController.php new file mode 100644 index 0000000..e06a7d5 --- /dev/null +++ b/think.greaterchiangmai.com/app/Http/Controllers/Helpers/EmailPhpHelperController.php @@ -0,0 +1,140 @@ + + + + The Greater Chiangmai.com + + + +

      Hi, ' . 'The Greater Chiangmai' . ' ,

      + +

      You have new contact from Contact page, please see the detail below:

      +

      Name: ' . $name . '

      +

      Phone: ' . $phone . '

      +

      อีเมล: ' . $email . '

      +

      ข้อความ: ' . $comment . '

      + +
      +
      +

      Thanks,

      +

      The Greater Chiangmai

      + + + + '; + + // To send HTML mail, the Content-type header must be set + $headers = 'MIME-Version: 1.0' . "\r\n"; + $headers .= 'Content-Type: text/html; charset=utf-8' . "\r\n"; + + // Additional headers + $headers .= 'From:' . $mailSender . "\r\n"; + $headers .= "Reply-To:" . $mailSender . "\r\n"; + $headers .= "Return-Path:" . $mailSender . "\r\n"; + + // Mail it + mail($mailReceiver, $subject, $message, $headers); + } + + public function sendEmailForgotPassword($emailTo, $token) + { + $mailSender = env('MAIL_SENDER'); + + // subject + $subject = 'Forgot Password: The Greater Chiangmai : Has Sent You a Message! No reply This email'; + + $link = url('reset-password/' . $token); + + // message + $message = ' + + + + + + +

      สวัสดี, ' . $emailTo . ' ,

      + +

      เราได้รับคำขอให้รีเซ็ตรหัสผ่านสำหรับบัญชีของคุณ: ' . $emailTo . '

      +

      ' . $link . '

      + +
      +

      Thanks,

      +
      +

      Thai Tourism Volunteers

      + + + + '; + + // To send HTML mail, the Content-type header must be set + $headers = 'MIME-Version: 1.0' . "\r\n"; + $headers .= 'Content-Type: text/html; charset=utf-8' . "\r\n"; + $headers .= 'From:' . $mailSender . "\r\n"; + + // Mail it + mail($emailTo, $subject, $message, $headers); + } + + public function sendEmailResetPassword($emailTo, $newPassword) + { + $mailSender = env('MAIL_SENDER'); + + // subject + $subject = 'Reset Password: The Greater Chiangmai : Has Sent You a Message! No reply This email'; + + // message + $message = ' + + + + + + +

      สวัสดี, ' . $emailTo . ' ,

      + +

      คุณรีเซ็ตรหัสผ่านสำเร็จแล้ว

      +

      รหัสผ่านใหม่ของคุณคือ: ' . $newPassword . '

      + +
      +

      Thanks,

      +

      The Greater Chiangmai

      + + + + '; + + // To send HTML mail, the Content-type header must be set + $headers = 'MIME-Version: 1.0' . "\r\n"; + $headers .= 'Content-Type: text/html; charset=utf-8' . "\r\n"; + + // Additional headers + $headers .= 'From:' . $mailSender . "\r\n"; + + // Mail it + mail($emailTo, $subject, $message, $headers); + } +} diff --git a/think.greaterchiangmai.com/app/Http/Controllers/Helpers/FileHelperController.php b/think.greaterchiangmai.com/app/Http/Controllers/Helpers/FileHelperController.php new file mode 100644 index 0000000..45e38c5 --- /dev/null +++ b/think.greaterchiangmai.com/app/Http/Controllers/Helpers/FileHelperController.php @@ -0,0 +1,286 @@ +IMAGE_TYPE_JPEG = "jpeg"; + $this->IMAGE_TYPE_JPG = 'jpg'; + $this->IMAGE_TYPE_PNG = 'png'; + $this->PDF_TYPE = "pdf"; + $this->DOC_TYPE = 'doc'; + $this->DOCX_TYPE = 'docx'; + $this->XLS_TYPE = 'xls'; + $this->XLSX_TYPE = 'xlsx'; + } + + /* ================== Global ================== */ + public function checkImageType($imageType) + { + return strtolower($imageType) != $this->IMAGE_TYPE_JPEG && strtolower($imageType) != $this->IMAGE_TYPE_JPG && strtolower($imageType) != $this->IMAGE_TYPE_PNG; + } + + public function checkMixType($fileType) + { + return strtolower($fileType) != $this->IMAGE_TYPE_JPEG && + strtolower($fileType) != $this->IMAGE_TYPE_JPG && + strtolower($fileType) != $this->IMAGE_TYPE_PNG && + strtolower($fileType) != $this->PDF_TYPE && + strtolower($fileType) != $this->DOC_TYPE && + strtolower($fileType) != $this->DOCX_TYPE && + strtolower($fileType) != $this->XLS_TYPE && + strtolower($fileType) != $this->XLSX_TYPE; + } + + public function checkImageSize($fileSize) + { + $customFileSize = 20; // able to change here: //Your file size is bigger than 20mb please upload file again + $limitMaxFileSize = 1024 * 1024 * $customFileSize; + return $fileSize > $limitMaxFileSize; + } + + public function checkFileType($fileType) + { + return strtolower($fileType) != $this->PDF_TYPE && + strtolower($fileType) != $this->DOC_TYPE && + strtolower($fileType) != $this->DOCX_TYPE && + strtolower($fileType) != $this->XLS_TYPE && + strtolower($fileType) != $this->XLSX_TYPE; + } + + public function checkFileTypePdfOnly($fileType) + { + return $fileType != $this->PDF_TYPE; + } + + public function checkFileSize($fileSize) + { + $customFileSize = 20; // able to change here: //Your file size is bigger than 20mb please upload file again + $limitMaxFileSize = 1024 * 1024 * $customFileSize; + return $fileSize > $limitMaxFileSize; + } + + public function checkFileSize3MB($fileSize) + { + $customFileSize = 3; // able to change here: //Your file size is bigger than 3mb please upload file again + $limitMaxFileSize = 1024 * 1024 * $customFileSize; + return $fileSize > $limitMaxFileSize; + } + + public function checkFileSize5MB($fileSize) + { + $customFileSize = 5; // able to change here: //Your file size is bigger than 3mb please upload file again + $limitMaxFileSize = 1024 * 1024 * $customFileSize; + return $fileSize > $limitMaxFileSize; + } + + + /* ================== CK Editor ================== */ + + public function uploadImageCkEditor(Request $request) + { + $image = $request->file('upload'); + $url = $this->uploadImg($image); + $funcNum = $_GET['CKEditorFuncNum']; + if ($url == 'errors') { + return ""; + } else { + return ""; + } + } + + public function uploadImg($file) + { + try { + $folder = "uploads/ckeditor/images"; + + if (File::isDirectory($folder) == false) { + Storage::makeDirectory($folder, 0777, true); + } + + $name = $file->getClientOriginalName(); + $ext = pathinfo($name, PATHINFO_EXTENSION); + $rdStr = rand(); + $date = new DateTime(); + $format = $date->format('Ymdhms'); + $newName = $format . '_' . $rdStr . '.' . $ext; + $file->move($folder, $newName); + return $folder . "/" . $newName; + } catch (Exception $e) { + return 'errors'; + } + } + + public function mimeContentTypeFile($type) + { + $typeLower = strtolower($type); + if ($typeLower === 'pdf') { + return 'application/pdf'; + } else if ($typeLower === 'xls' || $typeLower === 'xlsx') { + return 'application/octet-stream'; + } else if ($typeLower === 'doc' || $typeLower === 'docx') { + return 'application/octet-stream'; + } else { + return 'jpg'; + } + } + + public function mimeContentTypeImage($type) + { + $typeLower = strtolower($type); + if ($typeLower === 'png') { + return 'image/png'; + } else if ($typeLower === 'jpg') { + return 'image/jpeg'; + } else if ($typeLower === 'jpeg') { + return 'image/jpeg'; + } else { + return 'image/jpeg'; + } + } + + /* + public function uploadImageCkEditorOld($file) + { + try { + $folder = "uploads/files/ckeditor/images"; + + $name = $file->getClientOriginalName(); + $ext = pathinfo($name, PATHINFO_EXTENSION); + $rdStr = Uuid::generate(); + $date = new DateTime(); + $format = $date->format('Ymdhms'); + $newName = $format . '_' . $rdStr . '.' . $ext; + $file->move($folder, $newName); + + return $folder . "/" . $newName; + } catch (\Exception $e) { + return 'errors'; + } + } + */ +} +/* File Types */ +//[ +// '3gp' => 'video/3gpp', +// '7z' => 'application/x-7z-compressed', +// 'aac' => 'audio/x-aac', +// 'ai' => 'application/postscript', +// 'aif' => 'audio/x-aiff', +// 'asc' => 'text/plain', +// 'asf' => 'video/x-ms-asf', +// 'atom' => 'application/atom+xml', +// 'avi' => 'video/x-msvideo', +// 'bmp' => 'image/bmp', +// 'bz2' => 'application/x-bzip2', +// 'cer' => 'application/pkix-cert', +// 'crl' => 'application/pkix-crl', +// 'crt' => 'application/x-x509-ca-cert', +// 'css' => 'text/css', +// 'csv' => 'text/csv', +// 'cu' => 'application/cu-seeme', +// 'deb' => 'application/x-debian-package', +// 'doc' => 'application/msword', +// 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', +// 'dvi' => 'application/x-dvi', +// 'eot' => 'application/vnd.ms-fontobject', +// 'eps' => 'application/postscript', +// 'epub' => 'application/epub+zip', +// 'etx' => 'text/x-setext', +// 'flac' => 'audio/flac', +// 'flv' => 'video/x-flv', +// 'gif' => 'image/gif', +// 'gz' => 'application/gzip', +// 'htm' => 'text/html', +// 'html' => 'text/html', +// 'ico' => 'image/x-icon', +// 'ics' => 'text/calendar', +// 'ini' => 'text/plain', +// 'iso' => 'application/x-iso9660-image', +// 'jar' => 'application/java-archive', +// 'jpe' => 'image/jpeg', +// 'jpeg' => 'image/jpeg', +// 'jpg' => 'image/jpeg', +// 'js' => 'text/javascript', +// 'json' => 'application/json', +// 'latex' => 'application/x-latex', +// 'log' => 'text/plain', +// 'm4a' => 'audio/mp4', +// 'm4v' => 'video/mp4', +// 'mid' => 'audio/midi', +// 'midi' => 'audio/midi', +// 'mov' => 'video/quicktime', +// 'mkv' => 'video/x-matroska', +// 'mp3' => 'audio/mpeg', +// 'mp4' => 'video/mp4', +// 'mp4a' => 'audio/mp4', +// 'mp4v' => 'video/mp4', +// 'mpe' => 'video/mpeg', +// 'mpeg' => 'video/mpeg', +// 'mpg' => 'video/mpeg', +// 'mpg4' => 'video/mp4', +// 'oga' => 'audio/ogg', +// 'ogg' => 'audio/ogg', +// 'ogv' => 'video/ogg', +// 'ogx' => 'application/ogg', +// 'pbm' => 'image/x-portable-bitmap', +// 'pdf' => 'application/pdf', +// 'pgm' => 'image/x-portable-graymap', +// 'png' => 'image/png', +// 'pnm' => 'image/x-portable-anymap', +// 'ppm' => 'image/x-portable-pixmap', +// 'ppt' => 'application/vnd.ms-powerpoint', +// 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', +// 'ps' => 'application/postscript', +// 'qt' => 'video/quicktime', +// 'rar' => 'application/x-rar-compressed', +// 'ras' => 'image/x-cmu-raster', +// 'rss' => 'application/rss+xml', +// 'rtf' => 'application/rtf', +// 'sgm' => 'text/sgml', +// 'sgml' => 'text/sgml', +// 'svg' => 'image/svg+xml', +// 'swf' => 'application/x-shockwave-flash', +// 'tar' => 'application/x-tar', +// 'tif' => 'image/tiff', +// 'tiff' => 'image/tiff', +// 'torrent' => 'application/x-bittorrent', +// 'ttf' => 'application/x-font-ttf', +// 'txt' => 'text/plain', +// 'wav' => 'audio/x-wav', +// 'webm' => 'video/webm', +// 'webp' => 'image/webp', +// 'wma' => 'audio/x-ms-wma', +// 'wmv' => 'video/x-ms-wmv', +// 'woff' => 'application/x-font-woff', +// 'wsdl' => 'application/wsdl+xml', +// 'xbm' => 'image/x-xbitmap', +// 'xls' => 'application/vnd.ms-excel', +// 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', +// 'xml' => 'application/xml', +// 'xpm' => 'image/x-xpixmap', +// 'xwd' => 'image/x-xwindowdump', +// 'yaml' => 'text/yaml', +// 'yml' => 'text/yaml', +// 'zip' => 'application/zip', +//]; \ No newline at end of file diff --git a/think.greaterchiangmai.com/app/Http/Controllers/HomeController.php b/think.greaterchiangmai.com/app/Http/Controllers/HomeController.php new file mode 100644 index 0000000..4a9a6d9 --- /dev/null +++ b/think.greaterchiangmai.com/app/Http/Controllers/HomeController.php @@ -0,0 +1,317 @@ +where('category_id', 1) + ->limit(4) + ->orderBy('id', 'DESC') + ->get(); + + $articleWhereElse = ArticleModel::where('active', 1) + ->where('category_id', 2) + ->limit(4) + ->orderBy('id', 'DESC') + ->get(); + + $lang = 'index-en'; + if (session()->get('locale') == 'th') { + $lang = 'index'; + } else { + $lang = 'index-en'; + } + return view($lang) + ->with('itemView', $articleCm) + ->with('itemViewWhereElse', $articleWhereElse); + } + public function about() + { + $lang = 'about/index-en'; + if (session()->get('locale') == 'th') { + $lang = 'about/index'; + } else { + $lang = 'about/index-en'; + } + return view($lang); + } + + public function privacyPolicy() + { + $lang = 'about/index-en'; + if (session()->get('locale') == 'th') { + $lang = 'privacy-policy/index'; + } else { + $lang = 'privacy-policy/index-en'; + } + return view($lang); + } + + public function category() + { + $data["sub_category"] = []; + $data["count_article"] = 0; + + $subCategoryList = SubCategoryModel::where('category_id', 1)->where('active', 1)->paginate(20); + + if ($subCategoryList->isNotEmpty()) { + $data["sub_category"] = $subCategoryList; + $data["count_article"] = []; + foreach ($subCategoryList as $subCate) { + $subCategoryId = $subCate->id; + $countSub = ArticleModel::where('active', 1) + ->whereRaw('FIND_IN_SET(?, sub_category_ids)', [$subCategoryId])->count(); + $data["count_article"][$subCategoryId] = $countSub; + } + } + + $lang = 'category/index-en'; + if (session()->get('locale') == 'th') { + $lang = 'category/index'; + } else { + $lang = 'category/index-en'; + } + return view($lang) + ->with('itemView', $data); + } + public function article($subCateId, Request $request) + { + $subCategory = SubCategoryModel::where('id', $subCateId)->where('active', 1)->first(); + if ($subCategory == null) { + return Redirect::to("category/chiangmai") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Not found data'); + } + + // Get query parameters from the request + $keyword = $request->query('search'); + $fromDate = $request->query('from'); + $toDate = $request->query('to'); + + $fromDateFormatted = $fromDate ? date('Y-m-d', strtotime($fromDate)) . ' 00:00:00' : null; + $toDateFormatted = $toDate ? date('Y-m-d', strtotime($toDate)) . ' 23:59:59' : null; + + // Apply filters only if they are provided + $query = ArticleModel::where('active', 1) + ->where('category_id', 1) + ->orderBy('id', 'DESC') + ->whereRaw('FIND_IN_SET(?, sub_category_ids)', [$subCateId]); + + if ($keyword) { + $query->where('name', 'like', "%{$keyword}%"); + $query->orWhere('name_en', 'like', "%{$keyword}%"); + } + + if ($fromDateFormatted && $toDateFormatted) { + $query->whereBetween('due_date', [$fromDateFormatted, $toDateFormatted]); + } + + $query->where('category_id', 1); + $data = $query->paginate(20); + + $lang = 'category/article/index-en'; + if (session()->get('locale') == 'th') { + $lang = 'category/article/index'; + } else { + $lang = 'category/article/index-en'; + } + return view($lang) + ->with('subCategoryView', $subCategory) + ->with('itemView', $data) + ->with('fromDateView', $fromDate) + ->with('toDateView', $toDate) + ->with('keywordView', $keyword); + } + public function articleDetail($id) + { + // get by id + $data = ArticleModel::where('id', $id)->first(); + $subCategories = SubCategoryModel::where('active', 1)->where('category_id', 1)->get(); + + $lang = 'category/article/detail-en'; + if (session()->get('locale') == 'th') { + $lang = 'category/article/detail'; + } else { + $lang = 'category/article/detail-en'; + } + + // get random + $randomArticles = ArticleModel::inRandomOrder() + ->where('id', '!=', $id) + ->limit(4) + ->get(); + + return view($lang) + ->with('itemView', $data) + ->with('subCategoriesView', $subCategories) + ->with('randomArticlesView', $randomArticles); + } + public function updateArticleCount(Request $request) + { + $id = $request->input('id'); + // update count + + $data = ArticleModel::where('id', $id)->first(); + + $count = $data->count_view ?? 0; // If null, set to 0 + $dataUpdate = [ + 'count_view' => $count + 1, // Increment the count by 1 + ]; + + ArticleModel::where('id', $id)->update($dataUpdate); + return response()->json([ + 'status' => true, + 'message' => "successfully" + ]); + } + + + public function categoryWhereElse() + { + $data["sub_category"] = []; + $data["count_article"] = 0; + + $subCategoryList = SubCategoryModel::where('category_id', 2)->where('active', 1)->paginate(20); + + if ($subCategoryList->isNotEmpty()) { + $data["sub_category"] = $subCategoryList; + $data["count_article"] = []; + foreach ($subCategoryList as $subCate) { + $subCategoryId = $subCate->id; + $countSub = ArticleModel::where('active', 1)->whereRaw('FIND_IN_SET(?, sub_category_ids)', [$subCategoryId])->count(); + $data["count_article"][$subCategoryId] = $countSub; + } + } + + $lang = 'category-where-else/index-en'; + if (session()->get('locale') == 'th') { + $lang = 'category-where-else/index'; + } else { + $lang = 'category-where-else/index-en'; + } + return view($lang) + ->with('itemView', $data); + } + public function articleWhereElse($subCateId, Request $request) + { + $subCategory = SubCategoryModel::where('id', $subCateId)->where('active', 1)->first(); + if ($subCategory == null) { + return Redirect::to("category/where-else") + ->withInput() + ->with("messageFail", "Fail") + ->with("messageDetail", 'Not found data'); + } + + // Get query parameters from the request + $keyword = $request->query('search'); + $fromDate = $request->query('from'); + $toDate = $request->query('to'); + + $fromDateFormatted = $fromDate ? date('Y-m-d', strtotime($fromDate)) . ' 00:00:00' : null; + $toDateFormatted = $toDate ? date('Y-m-d', strtotime($toDate)) . ' 23:59:59' : null; + + // Apply filters only if they are provided + $query = ArticleModel::where('active', 1) + ->orderBy('id', 'DESC') + ->whereRaw('FIND_IN_SET(?, sub_category_ids)', [$subCateId]); + + if ($keyword) { + $query->where('name', 'like', "%{$keyword}%"); + $query->orWhere('name_en', 'like', "%{$keyword}%"); + } + + if ($fromDateFormatted && $toDateFormatted) { + $query->whereBetween('due_date', [$fromDateFormatted, $toDateFormatted]); + } + + $query->where('category_id', 2); + $data = $query->paginate(20); + + $lang = 'category-where-else/article/index-en'; + if (session()->get('locale') == 'th') { + $lang = 'category-where-else/article/index'; + } else { + $lang = 'category-where-else/article/index-en'; + } + return view($lang) + ->with('subCategoryView', $subCategory) + ->with('itemView', $data) + ->with('fromDateView', $fromDate) + ->with('toDateView', $toDate) + ->with('keywordView', $keyword); + } + public function articleDetailWhereElse($id) + { + // get by id + $data = ArticleModel::where('id', $id)->first(); + $subCategories = SubCategoryModel::where('active', 1)->where('category_id', 1)->get(); + + $lang = 'category-where-else/article/detail-en'; + if (session()->get('locale') == 'th') { + $lang = 'category-where-else/article/detail'; + } else { + $lang = 'category-where-else/article/detail-en'; + } + + // get random + $randomArticles = ArticleModel::inRandomOrder() + ->where('id', '!=', $id) + ->limit(4) + ->get(); + + + return view($lang) + ->with('itemView', $data) + ->with('subCategoriesView', $subCategories) + ->with('randomArticlesView', $randomArticles); + } + + public function contact() + { + $lang = 'contact/index-en'; + if (session()->get('locale') == 'th') { + $lang = 'contact/index'; + } else { + $lang = 'contact/index-en'; + } + return view($lang); + } + + public function articleAll(Request $request) + { + // Get query parameters from the request + $keyword = $request->query('search'); + + // Apply filters only if they are provided + $query = ArticleModel::where('active', 1) + ->where('category_id', 1) + ->orderBy('id', 'DESC'); + + if ($keyword) { + $query->where('name', 'like', "%{$keyword}%"); + $query->orWhere('name_en', 'like', "%{$keyword}%"); + } + + $data = $query->paginate(20); + + $lang = 'article/index-en'; + if (session()->get('locale') == 'th') { + $lang = 'article/index'; + } else { + $lang = 'article/index-en'; + } + return view($lang) + ->with('itemView', $data) + ->with('keywordView', $keyword); + } +} diff --git a/think.greaterchiangmai.com/app/Http/Kernel.php b/think.greaterchiangmai.com/app/Http/Kernel.php new file mode 100644 index 0000000..e420662 --- /dev/null +++ b/think.greaterchiangmai.com/app/Http/Kernel.php @@ -0,0 +1,69 @@ + + */ + 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, + \App\Http\Middleware\LocaLocalization::class, + ], + + 'api' => [ + // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, + \Illuminate\Routing\Middleware\ThrottleRequests::class.':api', + \Illuminate\Routing\Middleware\SubstituteBindings::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/think.greaterchiangmai.com/app/Http/Middleware/Authenticate.php b/think.greaterchiangmai.com/app/Http/Middleware/Authenticate.php new file mode 100644 index 0000000..d4ef644 --- /dev/null +++ b/think.greaterchiangmai.com/app/Http/Middleware/Authenticate.php @@ -0,0 +1,17 @@ +expectsJson() ? null : route('login'); + } +} diff --git a/think.greaterchiangmai.com/app/Http/Middleware/EncryptCookies.php b/think.greaterchiangmai.com/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 0000000..867695b --- /dev/null +++ b/think.greaterchiangmai.com/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/think.greaterchiangmai.com/app/Http/Middleware/Language.php b/think.greaterchiangmai.com/app/Http/Middleware/Language.php new file mode 100644 index 0000000..cf6ecc5 --- /dev/null +++ b/think.greaterchiangmai.com/app/Http/Middleware/Language.php @@ -0,0 +1,26 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/think.greaterchiangmai.com/app/Http/Middleware/RedirectIfAuthenticated.php b/think.greaterchiangmai.com/app/Http/Middleware/RedirectIfAuthenticated.php new file mode 100644 index 0000000..afc78c4 --- /dev/null +++ b/think.greaterchiangmai.com/app/Http/Middleware/RedirectIfAuthenticated.php @@ -0,0 +1,30 @@ +check()) { + return redirect(RouteServiceProvider::HOME); + } + } + + return $next($request); + } +} diff --git a/think.greaterchiangmai.com/app/Http/Middleware/TrimStrings.php b/think.greaterchiangmai.com/app/Http/Middleware/TrimStrings.php new file mode 100644 index 0000000..88cadca --- /dev/null +++ b/think.greaterchiangmai.com/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,19 @@ + + */ + protected $except = [ + 'current_password', + 'password', + 'password_confirmation', + ]; +} diff --git a/think.greaterchiangmai.com/app/Http/Middleware/TrustHosts.php b/think.greaterchiangmai.com/app/Http/Middleware/TrustHosts.php new file mode 100644 index 0000000..c9c58bd --- /dev/null +++ b/think.greaterchiangmai.com/app/Http/Middleware/TrustHosts.php @@ -0,0 +1,20 @@ + + */ + public function hosts(): array + { + return [ + $this->allSubdomainsOfApplicationUrl(), + ]; + } +} diff --git a/think.greaterchiangmai.com/app/Http/Middleware/TrustProxies.php b/think.greaterchiangmai.com/app/Http/Middleware/TrustProxies.php new file mode 100644 index 0000000..3391630 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/app/Http/Middleware/ValidateSignature.php b/think.greaterchiangmai.com/app/Http/Middleware/ValidateSignature.php new file mode 100644 index 0000000..093bf64 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/app/Http/Middleware/VerifyCsrfToken.php b/think.greaterchiangmai.com/app/Http/Middleware/VerifyCsrfToken.php new file mode 100644 index 0000000..9e86521 --- /dev/null +++ b/think.greaterchiangmai.com/app/Http/Middleware/VerifyCsrfToken.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/think.greaterchiangmai.com/app/Models/ArticleModel.php b/think.greaterchiangmai.com/app/Models/ArticleModel.php new file mode 100644 index 0000000..8599575 --- /dev/null +++ b/think.greaterchiangmai.com/app/Models/ArticleModel.php @@ -0,0 +1,38 @@ + + */ + 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/think.greaterchiangmai.com/app/Providers/AppServiceProvider.php b/think.greaterchiangmai.com/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..452e6b6 --- /dev/null +++ b/think.greaterchiangmai.com/app/Providers/AppServiceProvider.php @@ -0,0 +1,24 @@ + + */ + protected $policies = [ + // + ]; + + /** + * Register any authentication / authorization services. + */ + public function boot(): void + { + // + } +} diff --git a/think.greaterchiangmai.com/app/Providers/BroadcastServiceProvider.php b/think.greaterchiangmai.com/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 0000000..2be04f5 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/app/Providers/RouteServiceProvider.php b/think.greaterchiangmai.com/app/Providers/RouteServiceProvider.php new file mode 100644 index 0000000..1cf5f15 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/artisan b/think.greaterchiangmai.com/artisan new file mode 100644 index 0000000..67a3329 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/bootstrap/app.php b/think.greaterchiangmai.com/bootstrap/app.php new file mode 100644 index 0000000..037e17d --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/bootstrap/cache/.gitignore b/think.greaterchiangmai.com/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/think.greaterchiangmai.com/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/think.greaterchiangmai.com/composer.json b/think.greaterchiangmai.com/composer.json new file mode 100644 index 0000000..1e026b3 --- /dev/null +++ b/think.greaterchiangmai.com/composer.json @@ -0,0 +1,70 @@ +{ + "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", + "league/flysystem-aws-s3-v3": "^3.29" + }, + "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/think.greaterchiangmai.com/composer.lock b/think.greaterchiangmai.com/composer.lock new file mode 100644 index 0000000..880d883 --- /dev/null +++ b/think.greaterchiangmai.com/composer.lock @@ -0,0 +1,8406 @@ +{ + "_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": "e41c2e740ea0e5bc8b3f147b070331bf", + "packages": [ + { + "name": "aws/aws-crt-php", + "version": "v1.2.6", + "source": { + "type": "git", + "url": "https://github.com/awslabs/aws-crt-php.git", + "reference": "a63485b65b6b3367039306496d49737cf1995408" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/a63485b65b6b3367039306496d49737cf1995408", + "reference": "a63485b65b6b3367039306496d49737cf1995408", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35||^5.6.3||^9.5", + "yoast/phpunit-polyfills": "^1.0" + }, + "suggest": { + "ext-awscrt": "Make sure you install awscrt native extension to use any of the functionality." + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "AWS SDK Common Runtime Team", + "email": "aws-sdk-common-runtime@amazon.com" + } + ], + "description": "AWS Common Runtime for PHP", + "homepage": "https://github.com/awslabs/aws-crt-php", + "keywords": [ + "amazon", + "aws", + "crt", + "sdk" + ], + "support": { + "issues": "https://github.com/awslabs/aws-crt-php/issues", + "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.6" + }, + "time": "2024-06-13T17:21:28+00:00" + }, + { + "name": "aws/aws-sdk-php", + "version": "3.324.1", + "source": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-php.git", + "reference": "5b824a9b8015a38f18c53b023975c0f63c7bd3dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/5b824a9b8015a38f18c53b023975c0f63c7bd3dc", + "reference": "5b824a9b8015a38f18c53b023975c0f63c7bd3dc", + "shasum": "" + }, + "require": { + "aws/aws-crt-php": "^1.2.3", + "ext-json": "*", + "ext-pcre": "*", + "ext-simplexml": "*", + "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", + "guzzlehttp/promises": "^1.4.0 || ^2.0", + "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", + "mtdowling/jmespath.php": "^2.6", + "php": ">=7.2.5", + "psr/http-message": "^1.0 || ^2.0" + }, + "require-dev": { + "andrewsville/php-token-reflection": "^1.4", + "aws/aws-php-sns-message-validator": "~1.0", + "behat/behat": "~3.0", + "composer/composer": "^1.10.22", + "dms/phpunit-arraysubset-asserts": "^0.4.0", + "doctrine/cache": "~1.4", + "ext-dom": "*", + "ext-openssl": "*", + "ext-pcntl": "*", + "ext-sockets": "*", + "nette/neon": "^2.3", + "paragonie/random_compat": ">= 2", + "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5", + "psr/cache": "^1.0", + "psr/simple-cache": "^1.0", + "sebastian/comparator": "^1.2.3 || ^4.0", + "yoast/phpunit-polyfills": "^1.0" + }, + "suggest": { + "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", + "doctrine/cache": "To use the DoctrineCacheAdapter", + "ext-curl": "To send requests using cURL", + "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", + "ext-sockets": "To use client-side monitoring" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Aws\\": "src/" + }, + "exclude-from-classmap": [ + "src/data/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Amazon Web Services", + "homepage": "http://aws.amazon.com" + } + ], + "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", + "homepage": "http://aws.amazon.com/sdkforphp", + "keywords": [ + "amazon", + "aws", + "cloud", + "dynamodb", + "ec2", + "glacier", + "s3", + "sdk" + ], + "support": { + "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", + "issues": "https://github.com/aws/aws-sdk-php/issues", + "source": "https://github.com/aws/aws-sdk-php/tree/3.324.1" + }, + "time": "2024-10-11T18:22:01+00:00" + }, + { + "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.2", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", + "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.2" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2023-10-06T06:47:41+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.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", + "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", + "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.3" + }, + "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-07-18T10:29:17+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.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-php80": "^1.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.3" + }, + "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": "2023-12-03T19:50:20+00:00" + }, + { + "name": "laravel/framework", + "version": "v10.48.22", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "c4ea52bb044faef4a103d7dd81746c01b2ec860e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/c4ea52bb044faef4a103d7dd81746c01b2ec860e", + "reference": "c4ea52bb044faef4a103d7dd81746c01b2ec860e", + "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.4.7", + "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": "2024-09-12T15:00:09+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": { + "branch-alias": { + "dev-master": "3.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Sanctum\\SanctumServiceProvider" + ] + } + }, + "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.5", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c", + "reference": "1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c", + "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-09-23T13:33:08+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.10.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "ba4d51eb56de7711b3a37d63aa0643e99a339ae5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/ba4d51eb56de7711b3a37d63aa0643e99a339ae5", + "reference": "ba4d51eb56de7711b3a37d63aa0643e99a339ae5", + "shasum": "" + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.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" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.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.0" + }, + "time": "2024-09-23T13:32:56+00:00" + }, + { + "name": "league/commonmark", + "version": "2.5.3", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "b650144166dfa7703e62a22e493b853b58d874b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/b650144166dfa7703e62a22e493b853b58d874b0", + "reference": "b650144166dfa7703e62a22e493b853b58d874b0", + "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/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.6-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-08-16T11:46:16+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-aws-s3-v3", + "version": "3.29.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", + "reference": "c6ff6d4606e48249b63f269eba7fabdb584e76a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/c6ff6d4606e48249b63f269eba7fabdb584e76a9", + "reference": "c6ff6d4606e48249b63f269eba7fabdb584e76a9", + "shasum": "" + }, + "require": { + "aws/aws-sdk-php": "^3.295.10", + "league/flysystem": "^3.10.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\AwsS3V3\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "AWS S3 filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "aws", + "file", + "files", + "filesystem", + "s3", + "storage" + ], + "support": { + "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.29.0" + }, + "time": "2024-08-17T13:10:48+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.7.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "f4393b648b78a5408747de94fca38beb5f7e9ef8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f4393b648b78a5408747de94fca38beb5f7e9ef8", + "reference": "f4393b648b78a5408747de94fca38beb5f7e9ef8", + "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", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "^10.5.17", + "predis/predis": "^1.1 || ^2", + "ruflin/elastica": "^7", + "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.7.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2024-06-28T09:40:51+00:00" + }, + { + "name": "mtdowling/jmespath.php", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/jmespath/jmespath.php.git", + "reference": "a2a865e05d5f420b50cc2f85bb78d565db12a6bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/a2a865e05d5f420b50cc2f85bb78d565db12a6bc", + "reference": "a2a865e05d5f420b50cc2f85bb78d565db12a6bc", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-mbstring": "^1.17" + }, + "require-dev": { + "composer/xdebug-handler": "^3.0.3", + "phpunit/phpunit": "^8.5.33" + }, + "bin": [ + "bin/jp.php" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "files": [ + "src/JmesPath.php" + ], + "psr-4": { + "JmesPath\\": "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" + } + ], + "description": "Declaratively specify how to extract elements from a JSON document", + "keywords": [ + "json", + "jsonpath" + ], + "support": { + "issues": "https://github.com/jmespath/jmespath.php/issues", + "source": "https://github.com/jmespath/jmespath.php/tree/2.8.0" + }, + "time": "2024-09-04T18:46:31+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.72.5", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "afd46589c216118ecd48ff2b95d77596af1e57ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/afd46589c216118ecd48ff2b95d77596af1e57ed", + "reference": "afd46589c216118ecd48ff2b95d77596af1e57ed", + "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": "*", + "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": { + "branch-alias": { + "dev-master": "3.x-dev", + "dev-2.x": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "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": "2024-06-03T19:18:41+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.3.1", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8eea230464783aa9671db8eea6f8c6ac5285794b", + "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b", + "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.3.1" + }, + "time": "2024-10-08T18:51:32+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v1.15.1", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.0", + "symfony/console": "^5.3.0|^6.0.0" + }, + "require-dev": { + "ergebnis/phpstan-rules": "^1.0.", + "illuminate/console": "^8.0|^9.0", + "illuminate/support": "^8.0|^9.0", + "laravel/pint": "^1.0.0", + "pestphp/pest": "^1.21.0", + "pestphp/pest-plugin-mock": "^1.0", + "phpstan/phpstan": "^1.4.6", + "phpstan/phpstan-strict-rules": "^1.1.0", + "symfony/var-dumper": "^5.2.7|^6.0.0", + "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.15.1" + }, + "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": "2023-02-08T01:06:31+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.4", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "2fd717afa05341b4f8152547f142cd2f130f6818" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/2fd717afa05341b4f8152547f142cd2f130f6818", + "reference": "2fd717afa05341b4f8152547f142cd2f130f6818", + "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": { + "branch-alias": { + "dev-main": "0.12.x-dev" + }, + "bamarni-bin": { + "bin-links": false, + "forward-command": false + } + }, + "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.4" + }, + "time": "2024-06-10T01:18:23+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.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "72d080eb9edf80e36c19be61f72c98ed8273b765" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/72d080eb9edf80e36c19be61f72c98ed8273b765", + "reference": "72d080eb9edf80e36c19be61f72c98ed8273b765", + "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.12" + }, + "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-20T08:15:52+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v7.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/1c7cee86c6f812896af54434f8ce29c8d94f9ff4", + "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v7.1.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-05-31T14:57:53+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "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.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-04-18T09:32:20+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v6.4.10", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "231f1b2ee80f72daa1972f7340297d67439224f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/231f1b2ee80f72daa1972f7340297d67439224f0", + "reference": "231f1b2ee80f72daa1972f7340297d67439224f0", + "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.10" + }, + "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-07-26T12:30:32+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v7.1.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", + "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^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/v7.1.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-05-31T14:57:53+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "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.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-04-18T09:32:20+00:00" + }, + { + "name": "symfony/finder", + "version": "v6.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "d7eb6daf8cd7e9ac4976e9576b32042ef7253453" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/d7eb6daf8cd7e9ac4976e9576b32042ef7253453", + "reference": "d7eb6daf8cd7e9ac4976e9576b32042ef7253453", + "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.11" + }, + "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-08-13T14:27:37+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v6.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "133ac043875f59c26c55e79cf074562127cce4d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/133ac043875f59c26c55e79cf074562127cce4d2", + "reference": "133ac043875f59c26c55e79cf074562127cce4d2", + "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.3" + }, + "require-dev": { + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.3|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "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.12" + }, + "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-20T08:18:25+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v6.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "96df83d51b5f78804f70c093b97310794fd6257b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/96df83d51b5f78804f70c093b97310794fd6257b", + "reference": "96df83d51b5f78804f70c093b97310794fd6257b", + "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.12" + }, + "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-21T06:02:57+00:00" + }, + { + "name": "symfony/mailer", + "version": "v6.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "b6a25408c569ae2366b3f663a4edad19420a9c26" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/b6a25408c569ae2366b3f663a4edad19420a9c26", + "reference": "b6a25408c569ae2366b3f663a4edad19420a9c26", + "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.12" + }, + "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-08T12:30:05+00:00" + }, + { + "name": "symfony/mime", + "version": "v6.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "abe16ee7790b16aa525877419deb0f113953f0e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/abe16ee7790b16aa525877419deb0f113953f0e1", + "reference": "abe16ee7790b16aa525877419deb0f113953f0e1", + "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.12" + }, + "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-20T08:18:25+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": { + "name": "symfony/polyfill", + "url": "https://github.com/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": { + "name": "symfony/polyfill", + "url": "https://github.com/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": { + "name": "symfony/polyfill", + "url": "https://github.com/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": { + "name": "symfony/polyfill", + "url": "https://github.com/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": { + "name": "symfony/polyfill", + "url": "https://github.com/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": { + "name": "symfony/polyfill", + "url": "https://github.com/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": { + "name": "symfony/polyfill", + "url": "https://github.com/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": { + "name": "symfony/polyfill", + "url": "https://github.com/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.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "3f94e5f13ff58df371a7ead461b6e8068900fbb3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/3f94e5f13ff58df371a7ead461b6e8068900fbb3", + "reference": "3f94e5f13ff58df371a7ead461b6e8068900fbb3", + "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.12" + }, + "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-17T12:47:12+00:00" + }, + { + "name": "symfony/routing", + "version": "v6.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "a7c8036bd159486228dc9be3e846a00a0dda9f9f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/a7c8036bd159486228dc9be3e846a00a0dda9f9f", + "reference": "a7c8036bd159486228dc9be3e846a00a0dda9f9f", + "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.12" + }, + "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-20T08:32:26+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "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": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "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.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-04-18T09:32:20+00:00" + }, + { + "name": "symfony/string", + "version": "v7.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "d66f9c343fa894ec2037cc928381df90a7ad4306" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/d66f9c343fa894ec2037cc928381df90a7ad4306", + "reference": "d66f9c343fa894ec2037cc928381df90a7ad4306", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "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/emoji": "^7.1", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^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/v7.1.5" + }, + "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-20T08:28:38+00:00" + }, + { + "name": "symfony/translation", + "version": "v6.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "cf8360b8352b086be620fae8342c4d96e391a489" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/cf8360b8352b086be620fae8342c4d96e391a489", + "reference": "cf8360b8352b086be620fae8342c4d96e391a489", + "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.12" + }, + "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-16T06:02:54+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "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.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-04-18T09:32:20+00:00" + }, + { + "name": "symfony/uid", + "version": "v6.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "2f16054e0a9b194b8ca581d4a64eee3f7d4a9d4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/2f16054e0a9b194b8ca581d4a64eee3f7d4a9d4d", + "reference": "2f16054e0a9b194b8ca581d4a64eee3f7d4a9d4d", + "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.12" + }, + "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-20T08:32:26+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v6.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "ee14c8254a480913268b1e3b1cba8045ed122694" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ee14c8254a480913268b1e3b1cba8045ed122694", + "reference": "ee14c8254a480913268b1e3b1cba8045ed122694", + "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.11" + }, + "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-08-30T16:03:21+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.2.7", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.5 || ^7.0 || ^8.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.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.2.7" + }, + "time": "2023-12-08T13:03:43+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.1", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b56450eed252f6801410d810c8e1727224ae0743" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", + "reference": "b56450eed252f6801410d810c8e1727224ae0743", + "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": "http://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.1" + }, + "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": "2022-03-08T17:03:00+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.23.1", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", + "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.23.1" + }, + "time": "2024-01-02T13:46:09+00:00" + }, + { + "name": "filp/whoops", + "version": "2.16.0", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "befcdc0e5dce67252aa6322d82424be928214fa2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/befcdc0e5dce67252aa6322d82424be928214fa2", + "reference": "befcdc0e5dce67252aa6322d82424be928214fa2", + "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.16.0" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2024-09-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.18.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/pint.git", + "reference": "35c00c05ec43e6b46d295efc0f4386ceb30d50d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pint/zipball/35c00c05ec43e6b46d295efc0f4386ceb30d50d9", + "reference": "35c00c05ec43e6b46d295efc0f4386ceb30d50d9", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "php": "^8.1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.64.0", + "illuminate/view": "^10.48.20", + "larastan/larastan": "^2.9.8", + "laravel-zero/framework": "^10.4.0", + "mockery/mockery": "^1.6.12", + "nunomaduro/termwind": "^1.15.1", + "pestphp/pest": "^2.35.1" + }, + "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": "2024-09-24T17:22:50+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.35.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "992bc2d9e52174c79515967f30849d21daa334d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/992bc2d9e52174c79515967f30849d21daa334d8", + "reference": "992bc2d9e52174c79515967f30849d21daa334d8", + "shasum": "" + }, + "require": { + "illuminate/console": "^9.52.16|^10.0|^11.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0", + "illuminate/support": "^9.52.16|^10.0|^11.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", + "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": "2024-10-08T14:45:26+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.12.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "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.12.0" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2024-06-12T14:39:25+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v7.10.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "49ec67fa7b002712da8526678abd651c09f375b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/49ec67fa7b002712da8526678abd651c09f375b2", + "reference": "49ec67fa7b002712da8526678abd651c09f375b2", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.15.3", + "nunomaduro/termwind": "^1.15.1", + "php": "^8.1.0", + "symfony/console": "^6.3.4" + }, + "conflict": { + "laravel/framework": ">=11.0.0" + }, + "require-dev": { + "brianium/paratest": "^7.3.0", + "laravel/framework": "^10.28.0", + "laravel/pint": "^1.13.3", + "laravel/sail": "^1.25.0", + "laravel/sanctum": "^3.3.1", + "laravel/tinker": "^2.8.2", + "nunomaduro/larastan": "^2.6.4", + "orchestra/testbench-core": "^8.13.0", + "pestphp/pest": "^2.23.2", + "phpunit/phpunit": "^10.4.1", + "sebastian/environment": "^6.0.1", + "spatie/laravel-ignition": "^2.3.1" + }, + "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": "2023-10-11T15:45:01+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.36", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "aa0a8ce701ea7ee314b0dfaa8970dc94f3f8c870" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/aa0a8ce701ea7ee314b0dfaa8970dc94f3f8c870", + "reference": "aa0a8ce701ea7ee314b0dfaa8970dc94f3f8c870", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.12.0", + "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.2", + "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.36" + }, + "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": "2024-10-08T15:36:51+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.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2d3e04c3b4c1e84a5e7382221ad8883c8fbc4f53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2d3e04c3b4c1e84a5e7382221ad8883c8fbc4f53", + "reference": "2d3e04c3b4c1e84a5e7382221ad8883c8fbc4f53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.4" + }, + "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.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-08-12T06:03:08+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.6.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/backtrace.git", + "reference": "1a9a145b044677ae3424693f7b06479fc8c137a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/1a9a145b044677ae3424693f7b06479fc8c137a9", + "reference": "1a9a145b044677ae3424693f7b06479fc8c137a9", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "ext-json": "*", + "laravel/serializable-closure": "^1.3", + "phpunit/phpunit": "^9.3", + "spatie/phpunit-snapshot-assertions": "^4.2", + "symfony/var-dumper": "^5.1" + }, + "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.6.2" + }, + "funding": [ + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + }, + { + "url": "https://spatie.be/open-source/support-us", + "type": "other" + } + ], + "time": "2024-07-22T08:21:24+00:00" + }, + { + "name": "spatie/error-solutions", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/error-solutions.git", + "reference": "ae7393122eda72eed7cc4f176d1e96ea444f2d67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/error-solutions/zipball/ae7393122eda72eed7cc4f176d1e96ea444f2d67", + "reference": "ae7393122eda72eed7cc4f176d1e96ea444f2d67", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "illuminate/broadcasting": "^10.0|^11.0", + "illuminate/cache": "^10.0|^11.0", + "illuminate/support": "^10.0|^11.0", + "livewire/livewire": "^2.11|^3.3.5", + "openai-php/client": "^0.10.1", + "orchestra/testbench": "^7.0|8.22.3|^9.0", + "pestphp/pest": "^2.20", + "phpstan/phpstan": "^1.11", + "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.1" + }, + "funding": [ + { + "url": "https://github.com/Spatie", + "type": "github" + } + ], + "time": "2024-07-25T11:06:04+00:00" + }, + { + "name": "spatie/flare-client-php", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/flare-client-php.git", + "reference": "180f8ca4c0d0d6fc51477bd8c53ce37ab5a96122" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/180f8ca4c0d0d6fc51477bd8c53ce37ab5a96122", + "reference": "180f8ca4c0d0d6fc51477bd8c53ce37ab5a96122", + "shasum": "" + }, + "require": { + "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.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.8.0" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-08-01T08:27:26+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.8.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-ignition.git", + "reference": "3c067b75bfb50574db8f7e2c3978c65eed71126c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/3c067b75bfb50574db8f7e2c3978c65eed71126c", + "reference": "3c067b75bfb50574db8f7e2c3978c65eed71126c", + "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": { + "providers": [ + "Spatie\\LaravelIgnition\\IgnitionServiceProvider" + ], + "aliases": { + "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" + } + } + }, + "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-06-12T15:01:18+00:00" + }, + { + "name": "symfony/yaml", + "version": "v7.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "4e561c316e135e053bd758bf3b3eb291d9919de4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/4e561c316e135e053bd758bf3b3eb291d9919de4", + "reference": "4e561c316e135e053bd758bf3b3eb291d9919de4", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^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/v7.1.5" + }, + "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-17T12:49:58+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/think.greaterchiangmai.com/config/app.php b/think.greaterchiangmai.com/config/app.php new file mode 100644 index 0000000..9207160 --- /dev/null +++ b/think.greaterchiangmai.com/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' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | 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/think.greaterchiangmai.com/config/auth.php b/think.greaterchiangmai.com/config/auth.php new file mode 100644 index 0000000..9548c15 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/config/broadcasting.php b/think.greaterchiangmai.com/config/broadcasting.php new file mode 100644 index 0000000..2410485 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/config/cache.php b/think.greaterchiangmai.com/config/cache.php new file mode 100644 index 0000000..d4171e2 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/config/cors.php b/think.greaterchiangmai.com/config/cors.php new file mode 100644 index 0000000..8a39e6d --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/config/database.php b/think.greaterchiangmai.com/config/database.php new file mode 100644 index 0000000..137ad18 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/config/filesystems.php b/think.greaterchiangmai.com/config/filesystems.php new file mode 100644 index 0000000..168d5e3 --- /dev/null +++ b/think.greaterchiangmai.com/config/filesystems.php @@ -0,0 +1,87 @@ + 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, + ], + + 'r2' => [ + 'driver' => 's3', + 'key' => env('R2_ACCESS_KEY_ID'), + 'secret' => env('R2_SECRET_ACCESS_KEY'), + 'region' => env('R2_REGION', 'auto'), + 'bucket' => env('R2_BUCKET'), + 'url' => env('R2_URL'), + 'endpoint' => env('R2_ENDPOINT'), + 'use_path_style_endpoint' => true, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | 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/think.greaterchiangmai.com/config/hashing.php b/think.greaterchiangmai.com/config/hashing.php new file mode 100644 index 0000000..0e8a0bb --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/config/logging.php b/think.greaterchiangmai.com/config/logging.php new file mode 100644 index 0000000..c44d276 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/config/mail.php b/think.greaterchiangmai.com/config/mail.php new file mode 100644 index 0000000..e894b2e --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/config/queue.php b/think.greaterchiangmai.com/config/queue.php new file mode 100644 index 0000000..01c6b05 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/config/sanctum.php b/think.greaterchiangmai.com/config/sanctum.php new file mode 100644 index 0000000..35d75b3 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/config/services.php b/think.greaterchiangmai.com/config/services.php new file mode 100644 index 0000000..0ace530 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/config/session.php b/think.greaterchiangmai.com/config/session.php new file mode 100644 index 0000000..e738cb3 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/config/view.php b/think.greaterchiangmai.com/config/view.php new file mode 100644 index 0000000..22b8a18 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/database/.gitignore b/think.greaterchiangmai.com/database/.gitignore new file mode 100644 index 0000000..9b19b93 --- /dev/null +++ b/think.greaterchiangmai.com/database/.gitignore @@ -0,0 +1 @@ +*.sqlite* diff --git a/think.greaterchiangmai.com/database/factories/UserFactory.php b/think.greaterchiangmai.com/database/factories/UserFactory.php new file mode 100644 index 0000000..584104c --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/database/migrations/2014_10_12_000000_create_users_table.php b/think.greaterchiangmai.com/database/migrations/2014_10_12_000000_create_users_table.php new file mode 100644 index 0000000..444fafb --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php b/think.greaterchiangmai.com/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php new file mode 100644 index 0000000..81a7229 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/think.greaterchiangmai.com/database/migrations/2019_08_19_000000_create_failed_jobs_table.php new file mode 100644 index 0000000..249da81 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/think.greaterchiangmai.com/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php new file mode 100644 index 0000000..e828ad8 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/database/seeders/DatabaseSeeder.php b/think.greaterchiangmai.com/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..a9f4519 --- /dev/null +++ b/think.greaterchiangmai.com/database/seeders/DatabaseSeeder.php @@ -0,0 +1,22 @@ +create(); + + // \App\Models\User::factory()->create([ + // 'name' => 'Test User', + // 'email' => 'test@example.com', + // ]); + } +} diff --git a/think.greaterchiangmai.com/package.json b/think.greaterchiangmai.com/package.json new file mode 100644 index 0000000..56f5ddc --- /dev/null +++ b/think.greaterchiangmai.com/package.json @@ -0,0 +1,13 @@ +{ + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build" + }, + "devDependencies": { + "axios": "^1.6.4", + "laravel-vite-plugin": "^1.0.0", + "vite": "^5.0.0" + } +} diff --git a/think.greaterchiangmai.com/phpunit.xml b/think.greaterchiangmai.com/phpunit.xml new file mode 100644 index 0000000..bc86714 --- /dev/null +++ b/think.greaterchiangmai.com/phpunit.xml @@ -0,0 +1,32 @@ + + + + + tests/Unit + + + tests/Feature + + + + + app + + + + + + + + + + + + + + + diff --git a/think.greaterchiangmai.com/public/.htaccess b/think.greaterchiangmai.com/public/.htaccess new file mode 100644 index 0000000..3aec5e2 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/public/css/bootsnav.css b/think.greaterchiangmai.com/public/css/bootsnav.css new file mode 100644 index 0000000..9d859ae --- /dev/null +++ b/think.greaterchiangmai.com/public/css/bootsnav.css @@ -0,0 +1,284 @@ +/* ============================================================== + +Template name : Bootsnav - Multi Purpose Header +Categorie : Bootstrap Menu in CSS +Author : adamnurdin01 +Version : v.1.2 +Created : 2016-06-02 +Last update : 2016-10-19 + +============================================================== */ + +nav.bootsnav .megamenu-fw .dropdown-menu {left: auto;} +nav.bootsnav .megamenu-content {padding: 15px; width: 100%;} +nav.bootsnav .megamenu-content .title{margin-top: 0;} +nav.bootsnav .dropdown.megamenu-fw .dropdown-menu {left: 0; right: 0;} + +/* navbar */ +nav.navbar.bootsnav{margin-bottom: 0; -moz-border-radius: 0px; -webkit-border-radius: 0px; -o-border-radius: 0px; border-radius: 0px; border: none; border-bottom: solid 1px #e0e0e0;} +nav.navbar.bootsnav ul.nav > li > a{color: #6f6f6f; background-color: transparent !important;} +nav.navbar.bootsnav ul.nav li.megamenu-fw > a:hover,nav.navbar.bootsnav ul.nav li.megamenu-fw > a:focus,nav.navbar.bootsnav ul.nav li.active > a:hover,nav.navbar.bootsnav ul.nav li.active > a:focus,nav.navbar.bootsnav ul.nav li.active > a{background-color: transparent;} +nav.navbar.bootsnav .navbar-toggle{background-color: transparent !important; border: none; padding: 0; font-size: 18px; position: relative; top: 5px;} +nav.navbar.bootsnav ul.nav ul.dropdown-menu > li > a{white-space:normal;} +ul.menu-col{padding: 0; margin: 0; list-style: none;} +ul.menu-col li a{ color: #6f6f6f;} +ul.menu-col li a:hover,ul.menu-col li a:focus{text-decoration: none;} + +/* navbar full */ +nav.bootsnav.navbar-full{padding-bottom: 10px;padding-top: 10px;} +nav.bootsnav.navbar-full .navbar-header{display: block;} +nav.bootsnav.navbar-full .navbar-toggler{display: inline-block; margin-right: 0; position: relative; top: 0; font-size: 30px; -webkit-transition: all 1s ease-in-out; -moz-transition: all 1s ease-in-out; -o-transition: all 1s ease-in-out; -ms-transition: all 1s ease-in-out; transition: all 1s ease-in-out; margin: 0;} +nav.bootsnav.navbar-full .navbar-toggler:hover, nav.bootsnav.navbar-full .navbar-toggler:focus {background-color: inherit;} +nav.bootsnav.navbar-full .navbar-collapse{ position: fixed; width: 100%; height: 100% !important; top: 0; left: 0; padding: 0; display: none !important; z-index: 9; max-height: 100% !important} +nav.bootsnav.navbar-full .navbar-collapse.in{ display: block !important;} +nav.bootsnav.navbar-full .navbar-collapse .nav-full{ overflow: auto;} +nav.bootsnav.navbar-full .navbar-collapse .wrap-full-menu{ display: table-cell;vertical-align: middle; overflow: auto; background: rgba(0,0,0,.88)} +nav.bootsnav.navbar-full .navbar-collapse .nav-full::-webkit-scrollbar {width: 0;} +nav.bootsnav.navbar-full .navbar-collapse .nav-full::-moz-scrollbar { width: 0;} +nav.bootsnav.navbar-full .navbar-collapse .nav-full::-ms-scrollbar { width: 0;} +nav.bootsnav.navbar-full .navbar-collapse .nav-full::-o-scrollbar { width: 0;} +nav.bootsnav.navbar-full .navbar-collapse .nav{ display: block; width: 100%; } +nav.navbar.bootsnav.navbar-full li{margin: 20px 0} +nav.navbar.bootsnav.navbar-full li a{font-size: 22px !important; color: #232323; font-weight: bold; line-height: 26px !important; background: transparent} +nav.navbar.bootsnav.navbar-full li.dropdown ul{padding: 5px 15px !important} +nav.navbar.bootsnav.navbar-full li.dropdown ul.dropdown-menu {top: 0px !important; left: auto; margin: 0; top: 10px; padding:10px 20px; position: relative; float: none; background: inherit; border: 0; box-shadow: none;} +nav.navbar.bootsnav.navbar-full li.dropdown ul.dropdown-menu li{margin: 5px 0; } +nav.navbar.bootsnav.navbar-full li.dropdown ul.dropdown-menu li a {color: #232323 !important; border: none !important; padding: 0; font-size: 14px !important; font-weight: normal} +nav.navbar.bootsnav.navbar-full li.dropdown ul.dropdown-menu li a:hover {color: #ff214f !important;} +nav.navbar.bootsnav.navbar-full ul > li a {padding-left: 35px;position: relative;} +nav.navbar.bootsnav.navbar-full ul > li a:hover, nav.navbar.bootsnav.navbar-full ul li.dropdown.open a{color:#ff214f; } +nav.navbar.bootsnav.navbar-full ul > li a:hover:after, nav.navbar.bootsnav.navbar-full ul li.dropdown.open a:after{background: #ff214f} +nav.navbar.bootsnav.navbar-full ul > li a::after {background: #dbdbdb none repeat scroll 0 0; content: ""; display: inline-block; height: 4px;left: 0;position: absolute;top: 14px;width: 18px;} +nav.navbar.bootsnav.navbar-full ul > li.dropdown ul.dropdown-menu li a:after{display: none} +nav.navbar.bootsnav.navbar-full ul > li.dropdown ul.dropdown-menu{padding-left: 50px !important} +.close-full-menu { background: #000 none repeat scroll 0 0; position: absolute; right: 0; top: 0; z-index: 78} +.close-full-menu > a {float: left; padding: 10px 15px;} + +/* atribute navigation */ +.attr-nav{float: right;display: inline-block;margin-left: 13px;margin-right: -15px;} +.attr-nav > ul{ padding: 0; margin: 0 0 -7px 0; list-style: none; display: inline-block;} +.attr-nav > ul > li{float: left;display: block;} +.attr-nav > ul > li > a{color: #6f6f6f;display: block;padding: 28px 15px;position: relative;} +.attr-nav > ul > li > a span.badge{position: absolute; top: 50%; margin-top: -15px; right: 5px; font-size: 10px; padding: 0; width: 15px; height: 15px; padding-top: 2px;} +.attr-nav > ul > li.dropdown ul.dropdown-menu{ -moz-border-radius: 0px; -webkit-border-radius: 0px; -o-border-radius: 0px;border-radius: 0px; border: solid 1px #e0e0e0;} +ul.cart-list{ padding: 0 !important; width: 250px !important;} +ul.cart-list > li{ position: relative; border-bottom: solid 1px #efefef; padding: 15px 15px 23px 15px !important;} +ul.cart-list > li > a.photo{ padding: 0 !important; margin-right: 15px; float: left; display: block; width: 50px; height: 50px; left: 15px;top: 15px;} +ul.cart-list > li img{ width: 50px; height: 50px; border: solid 1px #efefef;} +ul.cart-list > li > h6{margin: 0;} +ul.cart-list > li > h6 > a.photo{ padding: 0 !important; display: block;} +ul.cart-list > li > p{ margin-bottom: 0;} +ul.cart-list > li.total{ background-color: #f5f5f5; padding-bottom: 15px !important;} +ul.cart-list > li.total > .btn{ display: inline-block; border-bottom: solid 1px #efefef !important;} +ul.cart-list > li .price{font-weight: bold;} +ul.cart-list > li.total > span{ padding-top: 8px;} + +/* top search */ +.top-search{background-color: #333;padding: 10px 0; display: none;} +.top-search input.form-control{ background-color: transparent; border: none; color: #fff; height: 40px; padding: 0 15px;} +.top-search .input-group-addon{ background-color: transparent; border: none; color: #fff; padding-left: 0; padding-right: 0;} +.top-search .input-group-addon.close-search{ cursor: pointer;} + +/* side menu */ +body{ -webkit-transition: all 0.3s ease-in-out;-moz-transition: all 0.3s ease-in-out;-o-transition: all 0.3s ease-in-out;-ms-transition: all 0.3s ease-in-out;transition: all 0.3s ease-in-out;} +body.on-side{ margin-left: -280px;} +.side{ position: fixed;overflow-y: auto; top: 0; right: -280px; width: 280px;padding: 25px 30px; height: 100%; display: block;background-color: #333; -webkit-transition: all 0.3s ease-in-out;-moz-transition: all 0.3s ease-in-out;-o-transition: all 0.3s ease-in-out;-ms-transition: all 0.3s ease-in-out;transition: all 0.3s ease-in-out;z-index: 9;} +.side.on{ right: 0;} +.side .close-side{ float: right; color: #fff; position: relative; z-index: 2; font-size: 16px;} +.side .widget{ position: relative; z-index: 1; margin-bottom: 25px;} +.side .widget .title{color: #fff;margin-bottom: 15px;} +.side .widget ul.link{padding: 0;margin: 0; list-style: none;} +.side .widget ul.link li a{color: #9f9f9f; letter-spacing: 1px;} +.side .widget ul.link li a:focus, +.side .widget ul.link li a:hover{color: #fff; text-decoration: none;} + +/* share */ +nav.navbar.bootsnav .share{padding: 0 30px; margin-bottom: 30px;} +nav.navbar.bootsnav .share ul{display: inline-block; padding: 0; margin: 0 0 -7px 0;list-style: none;} +nav.navbar.bootsnav .share ul > li{float: left;display: block;margin-right: 5px;} +nav.navbar.bootsnav .share ul > li > a{display: table-cell; vertical-align: middle;text-align: center; width: 35px; height: 35px;-moz-border-radius: 50%;-webkit-border-radius: 50%; -o-border-radius: 50%; border-radius: 50%; background-color: #cfcfcf; color: #fff;} + +/* transparent */ +nav.navbar.bootsnav.navbar-fixed{ position: fixed; display: block; width: 100%;} +nav.navbar.bootsnav.no-background{ -webkit-transition: all 1s ease-in-out;-moz-transition: all 1s ease-in-out;-o-transition: all 1s ease-in-out;-ms-transition: all 1s ease-in-out;transition: all 1s ease-in-out;} + +/* navbar sticky */ +.wrap-sticky{ position: relative; -webkit-transition: all 0.3s ease-in-out;-moz-transition: all 0.3s ease-in-out;-o-transition: all 0.3s ease-in-out;-ms-transition: all 0.3s ease-in-out;transition: all 0.3s ease-in-out;} +.wrap-sticky nav.navbar.bootsnav{ position: absolute; width: 100%; left: 0; top: 0;} +.wrap-sticky nav.navbar.bootsnav.sticked{ position: fixed; -webkit-transition: all 0.2s ease-in-out;-moz-transition: all 0.2s ease-in-out;-o-transition: all 0.2s ease-in-out;-ms-transition: all 0.2s ease-in-out;transition: all 0.2s ease-in-out;} +body.on-side .wrap-sticky nav.navbar.bootsnav.sticked{left: -280px;} + +@media (min-width: 1024px) and (max-width:1400px) { + + body.wrap-nav-sidebar .wrapper .container{width: 100%;padding-left: 30px;} +} + +@media (min-width: 1024px) { + + /* general navbar */ + nav.navbar.bootsnav ul.nav > li > a {padding: 30px 15px;} + nav.navbar.bootsnav ul.nav > li.dropdown > a.dropdown-toggle:after{font-family: 'FontAwesome'; content: "\f0d7"; margin-left: 5px; margin-top: 2px;} + nav.navbar.bootsnav li.dropdown ul.dropdown-menu{-moz-border-radius: 0px;-webkit-border-radius: 0px;-o-border-radius: 0px; border-radius: 0px; border: none;} + nav.navbar.bootsnav li.dropdown ul.dropdown-menu > li a:hover, + nav.navbar.bootsnav li.dropdown ul.dropdown-menu > li:last-child > a{border-bottom: none;} + nav.navbar.bootsnav ul.navbar-right li.dropdown ul.dropdown-menu li a{text-align: right;} + nav.navbar.bootsnav ul.dropdown-menu.megamenu-content.tabbed{padding: 0;} + nav.navbar.bootsnav ul.dropdown-menu.megamenu-content.tabbed > li{padding: 0;} + nav.navbar.bootsnav ul.dropdown-menu.megamenu-content .col-menu{padding: 0 30px; margin: 0 -0.5px; border-left: solid 1px #f0f0f0;} + nav.navbar.bootsnav ul.dropdown-menu.megamenu-content .col-menu:first-child{border-left: none;} + nav.navbar.bootsnav ul.dropdown-menu.megamenu-content .col-menu:last-child{border-right: none;} + nav.navbar.bootsnav ul.dropdown-menu.megamenu-content .content{display: none;} + nav.navbar.bootsnav ul.dropdown-menu.megamenu-content .content ul.menu-col li a{text-align: left;padding: 5px 0;display: block;width: 100%;margin-bottom: 0;border-bottom: none;color: #6f6f6f;} + nav.navbar.bootsnav.on ul.dropdown-menu.megamenu-content .content{display: block !important;height: auto !important;} + + /* navbar transparent */ + nav.navbar.bootsnav.no-background{ background-color: transparent; border: none;} + nav.navbar.bootsnav.navbar-transparent .attr-nav{ padding-left: 15px; margin-left: 30px; } + + nav.navbar.bootsnav.navbar-transparent.white{ background-color: rgba(255,255,255,0.3); border-bottom: solid 1px #bbb; } + nav.navbar.navbar-inverse.bootsnav.navbar-transparent.dark, nav.navbar.bootsnav.navbar-transparent.dark{ background-color: rgba(0,0,0,0.3); border-bottom: solid 1px #555;} + nav.navbar.bootsnav.navbar-transparent.white .attr-nav{ border-left: solid 1px #bbb; } + nav.navbar.navbar-inverse.bootsnav.navbar-transparent.dark .attr-nav, nav.navbar.bootsnav.navbar-transparent.dark .attr-nav{ border-left: solid 1px #555; } + nav.navbar.bootsnav.no-background.white .attr-nav > ul > li > a, nav.navbar.bootsnav.navbar-transparent.white .attr-nav > ul > li > a, nav.navbar.bootsnav.navbar-transparent.white ul.nav > li > a, nav.navbar.bootsnav.no-background.white ul.nav > li > a{ color: #fff; } + nav.navbar.bootsnav.navbar-fixed.navbar-transparent .logo-scrolled, nav.navbar.bootsnav.navbar-fixed.no-background .logo-scrolled{ display: none; } + nav.navbar.bootsnav.navbar-fixed.navbar-transparent .logo-display, nav.navbar.bootsnav.navbar-fixed.no-background .logo-display{ display: block; } + nav.navbar.bootsnav.navbar-fixed .logo-display{ display: none; } + nav.navbar.bootsnav.navbar-fixed .logo-scrolled{ display: block; } + + /* atribute navigation */ + .attr-nav > ul > li.dropdown ul.dropdown-menu{ margin-top: 0; margin-left: 55px; width: 250px; left: -250px; } + + /* menu center */ + nav.navbar.bootsnav.menu-center .container{ position: relative; } + nav.navbar.bootsnav.menu-center ul.nav.navbar-center{ float:none; margin: 0 auto; display: table; table-layout: fixed; } + nav.navbar.bootsnav.menu-center .navbar-header, nav.navbar.bootsnav.menu-center .attr-nav{ position: absolute; } + nav.navbar.bootsnav.menu-center .attr-nav{ right: 15px; } + + /* navbar brand top */ + nav.bootsnav.navbar-brand-top .navbar-header{ display: block; width: 100%; text-align: center; } + nav.bootsnav.navbar-brand-top ul.nav > li.dropdown > ul.dropdown-menu{ margin-top: 2px; } + nav.bootsnav.navbar-brand-top ul.nav > li.dropdown.megamenu-fw > ul.dropdown-menu{ margin-top: 0; } + nav.bootsnav.navbar-brand-top .navbar-header .navbar-brand{ display: inline-block; float: none; margin: 0; } + nav.bootsnav.navbar-brand-top .navbar-collapse{ text-align: center; } + /*nav.bootsnav.navbar-brand-top ul.nav{ display: inline-block; float: none; margin: 0 0 -5px 0; }*/ + + /* navbar center */ + nav.bootsnav.brand-center .navbar-header{ display: block; width: 100%; position: absolute; text-align: center; top: 0; left: 0; } + nav.bootsnav.brand-center .navbar-brand{ display: inline-block; float: none; } + nav.bootsnav.brand-center .navbar-collapse{ text-align: center; display: inline-block; padding-left: 0; padding-right: 0;} + nav.bootsnav.brand-center ul.nav > li.dropdown > ul.dropdown-menu{ margin-top: 2px; } + nav.bootsnav.brand-center ul.nav > li.dropdown.megamenu-fw > ul.dropdown-menu{ margin-top: 0; } + nav.bootsnav.brand-center .navbar-collapse .col-half{ width: 50%; float: left; display: block; } + nav.bootsnav.brand-center .navbar-collapse .col-half.left{ text-align: right; padding-right: 100px; } + nav.bootsnav.brand-center .navbar-collapse .col-half.right{ text-align: left; padding-left: 100px; } + nav.bootsnav.brand-center ul.nav{ float: none !important; margin-bottom: -5px !important; display: inline-block !important; } + nav.bootsnav.brand-center ul.nav.navbar-right{ margin: 0; } + nav.bootsnav.brand-center.center-side .navbar-collapse .col-half.left{ text-align: left; padding-right: 100px; } + nav.bootsnav.brand-center.center-side .navbar-collapse .col-half.right{ text-align: right; padding-left: 100px;} + + /* navbar sidebar */ + body.wrap-nav-sidebar .wrapper{ padding-left:260px;overflow-x:hidden; } + nav.bootsnav.navbar-sidebar{ position:fixed;width:260px;overflow:hidden;left:0;padding:0 0 0 0 !important;background:#fff; } + nav.bootsnav.navbar-sidebar .scroller{ width:280px;overflow-y:auto;overflow-x:hidden; } + nav.bootsnav.navbar-sidebar .container-fluid, nav.bootsnav.navbar-sidebar .container{ padding:0 !important; } + nav.bootsnav.navbar-sidebar .navbar-header{ float:none;display:block;width:260px;padding:10px 15px;margin:10px 0 0 0 !important; } + nav.bootsnav.navbar-sidebar .navbar-collapse{ padding:0 !important;width:260px; } + nav.bootsnav.navbar-sidebar ul.nav{ float:none;display:block;width:100%;padding:0 15px !important;margin:0 0 30px 0; } + nav.bootsnav.navbar-sidebar ul.nav li{ float:none !important; } + nav.bootsnav.navbar-sidebar ul.nav > li > a{ padding:10px 15px;font-weight:bold; } + nav.bootsnav.navbar-sidebar ul.nav > li.dropdown > a:after{ float:right; } + nav.bootsnav.navbar-sidebar ul.nav li.dropdown ul.dropdown-menu{ left:100%;top:0;position:relative !important;left:0 !important;width:100% !important;height:auto !important;background-color:transparent;border:none !important;padding:0; } + nav.bootsnav.navbar-sidebar ul.nav .megamenu-content .col-menu{ border:none !important; } + nav.bootsnav.navbar-sidebar ul.nav > li.dropdown > ul.dropdown-menu{ margin-bottom:15px; } + nav.bootsnav.navbar-sidebar ul.nav li.dropdown ul.dropdown-menu{ padding-left:0;float:none;margin-bottom:0; } + nav.bootsnav.navbar-sidebar ul.nav li.dropdown ul.dropdown-menu li a{ padding:5px 15px;color:#6f6f6f;border:none; } + nav.bootsnav.navbar-sidebar ul.nav li.dropdown ul.dropdown-menu ul.dropdown-menu{ padding-left:15px;margin-top:0; } + nav.bootsnav.navbar-sidebar ul.nav li.dropdown ul.dropdown-menu li.dropdown > a:before{ font-family:'FontAwesome';content:"\f105";float:right; } + nav.bootsnav.navbar-sidebar ul.nav li.dropdown.on ul.dropdown-menu li.dropdown.on > a:before{ content:"\f107"; } + nav.bootsnav.navbar-sidebar ul.dropdown-menu.megamenu-content > li{ padding:0 !important; } + nav.bootsnav.navbar-sidebar .dropdown .megamenu-content .col-menu{ display:block;float:none !important;padding:0;margin:0;width:100%; } + nav.bootsnav.navbar-sidebar .dropdown .megamenu-content .col-menu .title{ padding:7px 0;text-transform:none;font-weight:400;letter-spacing:0px;margin-bottom:0;cursor:pointer;color:#6f6f6f; } + nav.bootsnav.navbar-sidebar .dropdown .megamenu-content .col-menu .title:before{ font-family:'FontAwesome';content:"\f105";float:right; } + nav.bootsnav.navbar-sidebar .dropdown .megamenu-content .col-menu.on .title:before{ content:"\f107"; } + nav.bootsnav.navbar-sidebar .dropdown .megamenu-content .col-menu{ border:none; } + nav.bootsnav.navbar-sidebar .dropdown .megamenu-content .col-menu .content{ padding:0 0 0 15px; } + nav.bootsnav.navbar-sidebar .dropdown .megamenu-content .col-menu ul.menu-col li a{ padding:3px 0 !important; } + +} + +@media (max-width: 991px) { + + /* navbar responsive */ + nav.navbar.bootsnav .navbar-brand{ display:inline-block;float:none !important;margin:0 !important; } + nav.navbar.bootsnav .navbar-header{ float:none;display:block;text-align:center;padding-left:30px;padding-right:30px; } + nav.navbar.bootsnav .navbar-toggler{ display:inline-block;float:right;margin-right:0;margin-top:0px;padding: 0; } + nav.navbar.bootsnav .navbar-collapse{ border:none;margin-bottom:0; } + nav.navbar.bootsnav.no-full .navbar-collapse{ max-height:335px;overflow-y:auto !important; } + nav.navbar.bootsnav .navbar-collapse.collapse{ display:none !important; } + nav.navbar.bootsnav .navbar-collapse.collapse.in, nav.navbar.bootsnav .navbar-collapse.collapse.show{ display:block !important; } + nav.navbar.bootsnav .navbar-nav{ float:none !important;padding-left:30px;padding-right:30px;margin:0px -15px; } + nav.navbar.bootsnav.navbar-full .navbar-nav{ padding:0;margin:0 } + nav.navbar.bootsnav .navbar-nav > li{ float:none; } + nav.navbar.bootsnav .navbar-nav > li > a{ display:block;width:100%;border-bottom:solid 1px #e0e0e0;padding:10px 0;border-top:solid 1px #e0e0e0;margin-bottom:-1px; } + nav.navbar.bootsnav .navbar-nav > li:first-child > a{ border-top:none; } + nav.navbar.bootsnav ul.navbar-nav.navbar-left > li:last-child > ul.dropdown-menu{ border-bottom:solid 1px #e0e0e0; } + nav.navbar.bootsnav ul.nav li.dropdown li a.dropdown-toggle{ float:none !important;position:relative;display:block;width:100%; } + nav.navbar.bootsnav ul.nav li.dropdown ul.dropdown-menu{ width:100%;position:relative !important;background-color:transparent;float:none;border:none;padding:0 0 0 15px !important;margin:0 0 -1px 0 !important;border-radius:0px 0px 0px; } + nav.navbar.bootsnav ul.nav li.dropdown ul.dropdown-menu > li > a{ display:block;width:100%;border-bottom:solid 1px #e0e0e0;padding:10px 0;color:#6f6f6f; } + nav.navbar.bootsnav ul.nav ul.dropdown-menu li a:hover, nav.navbar.bootsnav ul.nav ul.dropdown-menu li a:focus{ background-color:transparent; } + nav.navbar.bootsnav ul.nav ul.dropdown-menu ul.dropdown-menu{ float:none !important;left:0;padding:0 0 0 15px;position:relative;background:transparent;width:100%; } + nav.navbar.bootsnav ul.nav ul.dropdown-menu li.dropdown.on > ul.dropdown-menu{ display:inline-block;margin-top:-10px; } + nav.navbar.bootsnav li.dropdown ul.dropdown-menu li.dropdown > a.dropdown-toggle:after{ display:none; } + nav.navbar.bootsnav .dropdown .megamenu-content .col-menu .title{ padding:10px 15px 10px 0;line-height:24px;text-transform:none;font-weight:400;letter-spacing:0px;margin-bottom:0;cursor:pointer;border-bottom:solid 1px #e0e0e0;color:#6f6f6f; } + nav.navbar.bootsnav .dropdown .megamenu-content .col-menu ul > li > a{ display:block;width:100%;border-bottom:solid 1px #e0e0e0;padding:8px 0; } + nav.navbar.bootsnav .dropdown .megamenu-content .col-menu .title:before{ font-family:'FontAwesome';content:"\f105";float:right;font-size:16px;margin-left:10px;position:relative;right:-15px; } + nav.navbar.bootsnav .dropdown .megamenu-content .col-menu:last-child .title{ border-bottom:none; } + nav.navbar.bootsnav .dropdown .megamenu-content .col-menu.on:last-child .title{ border-bottom:solid 1px #e0e0e0; } + nav.navbar.bootsnav .dropdown .megamenu-content .col-menu:last-child ul.menu-col li:last-child a{ border-bottom:none; } + nav.navbar.bootsnav .dropdown .megamenu-content .col-menu.on .title:before{ content:"\f107"; } + nav.navbar.bootsnav .dropdown .megamenu-content .col-menu .content{ padding:0 0 0 15px; } + nav.bootsnav.brand-center .navbar-collapse{ display:block; } + nav.bootsnav.brand-center ul.nav{ margin-bottom:0px !important; } + nav.bootsnav.brand-center .navbar-collapse .col-half{ width:100%;float:none;display:block; } + nav.bootsnav.brand-center .navbar-collapse .col-half.left{ margin-bottom:0; } + nav.bootsnav .megamenu-content{ padding:0; } + nav.bootsnav .megamenu-content .col-menu{ padding-bottom:0; } + nav.bootsnav .megamenu-content .title{ cursor:pointer;display:block;padding:10px 15px;margin-bottom:0;font-weight:normal; } + nav.bootsnav .megamenu-content .content{ display:none; } + .attr-nav{ position:absolute;right:60px; } + .attr-nav > ul{ padding:0;margin:0 -15px -7px 0; } + .attr-nav > ul > li > a{ padding:16px 15px 15px; } + .attr-nav > ul > li.dropdown > a.dropdown-toggle:before{ display:none; } + .attr-nav > ul > li.dropdown ul.dropdown-menu{ margin-top:2px;margin-left:55px;width:250px;left:-250px;border-top:solid 5px; } + .top-search .container{ padding:0 45px; } + + /* navbar full responsive */ + nav.bootsnav.navbar-full ul.nav{ margin-left: 0; } + nav.bootsnav.navbar-full ul.nav > li > a{ border: none; } + nav.bootsnav.navbar-full .navbar-brand { float: left !important; padding-left: 0; } + nav.bootsnav.navbar-full .navbar-toggler { display: inline-block; float: right; margin-right: 0; margin-top: 10px; } + nav.bootsnav.navbar-full .navbar-header { padding-left: 15px; padding-right: 15px; } + + /* navbar sidebar */ + nav.navbar.bootsnav.navbar-sidebar .share{ padding: 30px 15px; margin-bottom: 0; } + + /* tab */ + nav.navbar.bootsnav .megamenu-content.tabbed{ padding-left: 0 !important; } + nav.navbar.bootsnav .tabbed > li{ padding: 25px 0; margin-left: -15px !important; } + + /* mobile navigation */ + body > .wrapper{ -webkit-transition: all 0.3s ease-in-out; -moz-transition: all 0.3s ease-in-out; -o-transition: all 0.3s ease-in-out; -ms-transition: all 0.3s ease-in-out;transition: all 0.3s ease-in-out; } + body.side-right > .wrapper{ margin-left: 280px; margin-right: -280px !important; } + nav.navbar.bootsnav.navbar-mobile .navbar-collapse{ position: fixed; overflow-y: auto !important; overflow-x: hidden !important; display: block; background: #fff; z-index: 99; width: 280px; height: 100% !important; left: -280px; top: 0; padding: 0; -webkit-transition: all 0.3s ease-in-out; -moz-transition: all 0.3s ease-in-out; -o-transition: all 0.3s ease-in-out; -ms-transition: all 0.3s ease-in-out; transition: all 0.3s ease-in-out; } + nav.navbar.bootsnav.navbar-mobile .navbar-collapse.in{ left: 0; } + nav.navbar.bootsnav.navbar-mobile ul.nav{ width: 293px; padding-right: 0; padding-left: 15px; } + nav.navbar.bootsnav.navbar-mobile ul.nav > li > a{ padding: 15px 15px; } + nav.navbar.bootsnav.navbar-mobile ul.nav ul.dropdown-menu > li > a{ padding-right: 15px !important; padding-top: 15px !important; padding-bottom: 15px !important; } + nav.navbar.bootsnav.navbar-mobile ul.nav ul.dropdown-menu .col-menu .title{ padding-right: 30px !important; padding-top: 13px !important; padding-bottom: 13px !important; } + nav.navbar.bootsnav.navbar-mobile ul.nav ul.dropdown-menu .col-menu ul.menu-col li a{ padding-top: 13px !important; padding-bottom: 13px !important; } + nav.navbar.bootsnav.navbar-mobile .navbar-collapse [class*=' col-'] { width: 100%; } + nav.navbar.bootsnav.navbar-fixed .logo-scrolled{ display: block !important; } + nav.navbar.bootsnav.navbar-fixed .logo-display{ display: none !important; } + nav.navbar.bootsnav.navbar-mobile .tab-menu, + nav.navbar.bootsnav.navbar-mobile .tab-content{ width: 100%; display: block; } +} \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/css/bootstrap.min.css.map b/think.greaterchiangmai.com/public/css/bootstrap.min.css.map new file mode 100644 index 0000000..afcd9e3 --- /dev/null +++ b/think.greaterchiangmai.com/public/css/bootstrap.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_border-radius.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/_tables.scss","../../scss/mixins/_table-variants.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_form-select.scss","../../scss/forms/_form-check.scss","../../scss/forms/_form-range.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/mixins/_forms.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/_button-group.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_accordion.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_toasts.scss","../../scss/_modal.scss","../../scss/mixins/_backdrop.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/mixins/_clearfix.scss","../../scss/_spinners.scss","../../scss/_offcanvas.scss","../../scss/_placeholders.scss","../../scss/helpers/_colored-links.scss","../../scss/helpers/_ratio.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"iBAAA;;;;;ACAA,MAQI,UAAA,QAAA,YAAA,QAAA,YAAA,QAAA,UAAA,QAAA,SAAA,QAAA,YAAA,QAAA,YAAA,QAAA,WAAA,QAAA,UAAA,QAAA,UAAA,QAAA,WAAA,KAAA,UAAA,QAAA,eAAA,QAIA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAAA,cAAA,QAIA,aAAA,QAAA,eAAA,QAAA,aAAA,QAAA,UAAA,QAAA,aAAA,QAAA,YAAA,QAAA,WAAA,QAAA,UAAA,QAIA,iBAAA,EAAA,CAAA,GAAA,CAAA,IAAA,mBAAA,GAAA,CAAA,GAAA,CAAA,IAAA,iBAAA,EAAA,CAAA,GAAA,CAAA,GAAA,cAAA,EAAA,CAAA,GAAA,CAAA,IAAA,iBAAA,GAAA,CAAA,GAAA,CAAA,EAAA,gBAAA,GAAA,CAAA,EAAA,CAAA,GAAA,eAAA,GAAA,CAAA,GAAA,CAAA,IAAA,cAAA,EAAA,CAAA,EAAA,CAAA,GAGF,eAAA,GAAA,CAAA,GAAA,CAAA,IACA,eAAA,CAAA,CAAA,CAAA,CAAA,EACA,cAAA,EAAA,CAAA,EAAA,CAAA,GAMA,qBAAA,SAAA,CAAA,aAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,WAAA,CAAA,iBAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,iBAAA,CAAA,mBACA,oBAAA,cAAA,CAAA,KAAA,CAAA,MAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,UACA,cAAA,2EAQA,sBAAA,0BACA,oBAAA,KACA,sBAAA,IACA,sBAAA,IACA,gBAAA,QAIA,aAAA,KClCF,EC+CA,QADA,SD3CE,WAAA,WAeE,8CANJ,MAOM,gBAAA,QAcN,KACE,OAAA,EACA,YAAA,2BEmPI,UAAA,yBFjPJ,YAAA,2BACA,YAAA,2BACA,MAAA,qBACA,WAAA,0BACA,iBAAA,kBACA,yBAAA,KACA,4BAAA,YAUF,GACE,OAAA,KAAA,EACA,MAAA,QACA,iBAAA,aACA,OAAA,EACA,QAAA,IAGF,eACE,OAAA,IAUF,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GACE,WAAA,EACA,cAAA,MAGA,YAAA,IACA,YAAA,IAIF,IAAA,GEwMQ,UAAA,uBAlKJ,0BFtCJ,IAAA,GE+MQ,UAAA,QF1MR,IAAA,GEmMQ,UAAA,sBAlKJ,0BFjCJ,IAAA,GE0MQ,UAAA,MFrMR,IAAA,GE8LQ,UAAA,oBAlKJ,0BF5BJ,IAAA,GEqMQ,UAAA,SFhMR,IAAA,GEyLQ,UAAA,sBAlKJ,0BFvBJ,IAAA,GEgMQ,UAAA,QF3LR,IAAA,GEgLM,UAAA,QF3KN,IAAA,GE2KM,UAAA,KFhKN,EACE,WAAA,EACA,cAAA,KCmBF,6BDRA,YAEE,wBAAA,UAAA,OAAA,gBAAA,UAAA,OACA,OAAA,KACA,iCAAA,KAAA,yBAAA,KAMF,QACE,cAAA,KACA,WAAA,OACA,YAAA,QAMF,GCIA,GDFE,aAAA,KCQF,GDLA,GCIA,GDDE,WAAA,EACA,cAAA,KAGF,MCKA,MACA,MAFA,MDAE,cAAA,EAGF,GACE,YAAA,IAKF,GACE,cAAA,MACA,YAAA,EAMF,WACE,OAAA,EAAA,EAAA,KAQF,ECNA,ODQE,YAAA,OAQF,OAAA,ME4EM,UAAA,OFrEN,MAAA,KACE,QAAA,KACA,iBAAA,QASF,ICpBA,IDsBE,SAAA,SEwDI,UAAA,MFtDJ,YAAA,EACA,eAAA,SAGF,IAAM,OAAA,OACN,IAAM,IAAA,MAKN,EACE,MAAA,QACA,gBAAA,UAEA,QACE,MAAA,QAWF,2BAAA,iCAEE,MAAA,QACA,gBAAA,KCxBJ,KACA,ID8BA,IC7BA,KDiCE,YAAA,yBEcI,UAAA,IFZJ,UAAA,IACA,aAAA,cAOF,IACE,QAAA,MACA,WAAA,EACA,cAAA,KACA,SAAA,KEAI,UAAA,OFKJ,SELI,UAAA,QFOF,MAAA,QACA,WAAA,OAIJ,KEZM,UAAA,OFcJ,MAAA,QACA,UAAA,WAGA,OACE,MAAA,QAIJ,IACE,QAAA,MAAA,MExBI,UAAA,OF0BJ,MAAA,KACA,iBAAA,QG7SE,cAAA,MHgTF,QACE,QAAA,EE/BE,UAAA,IFiCF,YAAA,IASJ,OACE,OAAA,EAAA,EAAA,KAMF,ICjDA,IDmDE,eAAA,OAQF,MACE,aAAA,OACA,gBAAA,SAGF,QACE,YAAA,MACA,eAAA,MACA,MAAA,QACA,WAAA,KAOF,GAEE,WAAA,QACA,WAAA,qBCxDF,MAGA,GAFA,MAGA,GDuDA,MCzDA,GD+DE,aAAA,QACA,aAAA,MACA,aAAA,EAQF,MACE,QAAA,aAMF,OAEE,cAAA,EAQF,iCACE,QAAA,ECtEF,OD2EA,MCzEA,SADA,OAEA,SD6EE,OAAA,EACA,YAAA,QE9HI,UAAA,QFgIJ,YAAA,QAIF,OC5EA,OD8EE,eAAA,KAKF,cACE,OAAA,QAGF,OAGE,UAAA,OAGA,gBACE,QAAA,EAOJ,0CACE,QAAA,KClFF,cACA,aACA,cDwFA,OAIE,mBAAA,OCxFF,6BACA,4BACA,6BDyFI,sBACE,OAAA,QAON,mBACE,QAAA,EACA,aAAA,KAKF,SACE,OAAA,SAUF,SACE,UAAA,EACA,QAAA,EACA,OAAA,EACA,OAAA,EAQF,OACE,MAAA,KACA,MAAA,KACA,QAAA,EACA,cAAA,MEnNM,UAAA,sBFsNN,YAAA,QExXE,0BFiXJ,OExMQ,UAAA,QFiNN,SACE,MAAA,KChGJ,kCDuGA,uCCxGA,mCADA,+BAGA,oCAJA,6BAKA,mCD4GE,QAAA,EAGF,4BACE,OAAA,KASF,cACE,eAAA,KACA,mBAAA,UAmBF,4BACE,mBAAA,KAKF,+BACE,QAAA,EAMF,uBACE,KAAA,QAMF,6BACE,KAAA,QACA,mBAAA,OAKF,OACE,QAAA,aAKF,OACE,OAAA,EAOF,QACE,QAAA,UACA,OAAA,QAQF,SACE,eAAA,SAQF,SACE,QAAA,eInlBF,MFyQM,UAAA,QEvQJ,YAAA,IAKA,WFsQM,UAAA,uBEpQJ,YAAA,IACA,YAAA,IFiGA,0BEpGF,WF6QM,UAAA,ME7QN,WFsQM,UAAA,uBEpQJ,YAAA,IACA,YAAA,IFiGA,0BEpGF,WF6QM,UAAA,QE7QN,WFsQM,UAAA,uBEpQJ,YAAA,IACA,YAAA,IFiGA,0BEpGF,WF6QM,UAAA,ME7QN,WFsQM,UAAA,uBEpQJ,YAAA,IACA,YAAA,IFiGA,0BEpGF,WF6QM,UAAA,QE7QN,WFsQM,UAAA,uBEpQJ,YAAA,IACA,YAAA,IFiGA,0BEpGF,WF6QM,UAAA,ME7QN,WFsQM,UAAA,uBEpQJ,YAAA,IACA,YAAA,IFiGA,0BEpGF,WF6QM,UAAA,QEvPR,eCrDE,aAAA,EACA,WAAA,KDyDF,aC1DE,aAAA,EACA,WAAA,KD4DF,kBACE,QAAA,aAEA,mCACE,aAAA,MAUJ,YFsNM,UAAA,OEpNJ,eAAA,UAIF,YACE,cAAA,KF+MI,UAAA,QE5MJ,wBACE,cAAA,EAIJ,mBACE,WAAA,MACA,cAAA,KFqMI,UAAA,OEnMJ,MAAA,QAEA,2BACE,QAAA,KE9FJ,WCIE,UAAA,KAGA,OAAA,KDDF,eACE,QAAA,OACA,iBAAA,KACA,OAAA,IAAA,MAAA,QHGE,cAAA,OIRF,UAAA,KAGA,OAAA,KDcF,QAEE,QAAA,aAGF,YACE,cAAA,MACA,YAAA,EAGF,gBJ+PM,UAAA,OI7PJ,MAAA,QElCA,WPqmBF,iBAGA,cACA,cACA,cAHA,cADA,eQzmBE,MAAA,KACA,cAAA,0BACA,aAAA,0BACA,aAAA,KACA,YAAA,KCwDE,yBF5CE,WAAA,cACE,UAAA,OE2CJ,yBF5CE,WAAA,cAAA,cACE,UAAA,OE2CJ,yBF5CE,WAAA,cAAA,cAAA,cACE,UAAA,OE2CJ,0BF5CE,WAAA,cAAA,cAAA,cAAA,cACE,UAAA,QE2CJ,0BF5CE,WAAA,cAAA,cAAA,cAAA,cAAA,eACE,UAAA,QGfN,KCAA,cAAA,OACA,cAAA,EACA,QAAA,KACA,UAAA,KACA,WAAA,8BACA,aAAA,+BACA,YAAA,+BDHE,OCYF,YAAA,EACA,MAAA,KACA,UAAA,KACA,cAAA,8BACA,aAAA,8BACA,WAAA,mBA+CI,KACE,KAAA,EAAA,EAAA,GAGF,iBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,cACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,cACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,UAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,OAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,QAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,UAxDV,YAAA,YAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,IAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,IAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,aAwDU,UAxDV,YAAA,IAwDU,WAxDV,YAAA,aAwDU,WAxDV,YAAA,aAmEM,KXusBR,MWrsBU,cAAA,EAGF,KXusBR,MWrsBU,cAAA,EAPF,KXitBR,MW/sBU,cAAA,QAGF,KXitBR,MW/sBU,cAAA,QAPF,KX2tBR,MWztBU,cAAA,OAGF,KX2tBR,MWztBU,cAAA,OAPF,KXquBR,MWnuBU,cAAA,KAGF,KXquBR,MWnuBU,cAAA,KAPF,KX+uBR,MW7uBU,cAAA,OAGF,KX+uBR,MW7uBU,cAAA,OAPF,KXyvBR,MWvvBU,cAAA,KAGF,KXyvBR,MWvvBU,cAAA,KFzDN,yBESE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QX45BR,SW15BU,cAAA,EAGF,QX45BR,SW15BU,cAAA,EAPF,QXs6BR,SWp6BU,cAAA,QAGF,QXs6BR,SWp6BU,cAAA,QAPF,QXg7BR,SW96BU,cAAA,OAGF,QXg7BR,SW96BU,cAAA,OAPF,QX07BR,SWx7BU,cAAA,KAGF,QX07BR,SWx7BU,cAAA,KAPF,QXo8BR,SWl8BU,cAAA,OAGF,QXo8BR,SWl8BU,cAAA,OAPF,QX88BR,SW58BU,cAAA,KAGF,QX88BR,SW58BU,cAAA,MFzDN,yBESE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QXinCR,SW/mCU,cAAA,EAGF,QXinCR,SW/mCU,cAAA,EAPF,QX2nCR,SWznCU,cAAA,QAGF,QX2nCR,SWznCU,cAAA,QAPF,QXqoCR,SWnoCU,cAAA,OAGF,QXqoCR,SWnoCU,cAAA,OAPF,QX+oCR,SW7oCU,cAAA,KAGF,QX+oCR,SW7oCU,cAAA,KAPF,QXypCR,SWvpCU,cAAA,OAGF,QXypCR,SWvpCU,cAAA,OAPF,QXmqCR,SWjqCU,cAAA,KAGF,QXmqCR,SWjqCU,cAAA,MFzDN,yBESE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QXs0CR,SWp0CU,cAAA,EAGF,QXs0CR,SWp0CU,cAAA,EAPF,QXg1CR,SW90CU,cAAA,QAGF,QXg1CR,SW90CU,cAAA,QAPF,QX01CR,SWx1CU,cAAA,OAGF,QX01CR,SWx1CU,cAAA,OAPF,QXo2CR,SWl2CU,cAAA,KAGF,QXo2CR,SWl2CU,cAAA,KAPF,QX82CR,SW52CU,cAAA,OAGF,QX82CR,SW52CU,cAAA,OAPF,QXw3CR,SWt3CU,cAAA,KAGF,QXw3CR,SWt3CU,cAAA,MFzDN,0BESE,QACE,KAAA,EAAA,EAAA,GAGF,oBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,iBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,aAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,UAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,aAxDV,YAAA,EAwDU,aAxDV,YAAA,YAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,aAwDU,aAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAmEM,QX2hDR,SWzhDU,cAAA,EAGF,QX2hDR,SWzhDU,cAAA,EAPF,QXqiDR,SWniDU,cAAA,QAGF,QXqiDR,SWniDU,cAAA,QAPF,QX+iDR,SW7iDU,cAAA,OAGF,QX+iDR,SW7iDU,cAAA,OAPF,QXyjDR,SWvjDU,cAAA,KAGF,QXyjDR,SWvjDU,cAAA,KAPF,QXmkDR,SWjkDU,cAAA,OAGF,QXmkDR,SWjkDU,cAAA,OAPF,QX6kDR,SW3kDU,cAAA,KAGF,QX6kDR,SW3kDU,cAAA,MFzDN,0BESE,SACE,KAAA,EAAA,EAAA,GAGF,qBApCJ,KAAA,EAAA,EAAA,KACA,MAAA,KAcA,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,KAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,eAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,IAFF,kBACE,KAAA,EAAA,EAAA,KACA,MAAA,eA+BE,cAhDJ,KAAA,EAAA,EAAA,KACA,MAAA,KAqDQ,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,YA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,WAhEN,KAAA,EAAA,EAAA,KACA,MAAA,IA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,aA+DM,YAhEN,KAAA,EAAA,EAAA,KACA,MAAA,KAuEQ,cAxDV,YAAA,EAwDU,cAxDV,YAAA,YAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,IAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,aAwDU,cAxDV,YAAA,IAwDU,eAxDV,YAAA,aAwDU,eAxDV,YAAA,aAmEM,SXgvDR,UW9uDU,cAAA,EAGF,SXgvDR,UW9uDU,cAAA,EAPF,SX0vDR,UWxvDU,cAAA,QAGF,SX0vDR,UWxvDU,cAAA,QAPF,SXowDR,UWlwDU,cAAA,OAGF,SXowDR,UWlwDU,cAAA,OAPF,SX8wDR,UW5wDU,cAAA,KAGF,SX8wDR,UW5wDU,cAAA,KAPF,SXwxDR,UWtxDU,cAAA,OAGF,SXwxDR,UWtxDU,cAAA,OAPF,SXkyDR,UWhyDU,cAAA,KAGF,SXkyDR,UWhyDU,cAAA,MCpHV,OACE,cAAA,YACA,qBAAA,YACA,yBAAA,QACA,sBAAA,oBACA,wBAAA,QACA,qBAAA,mBACA,uBAAA,QACA,oBAAA,qBAEA,MAAA,KACA,cAAA,KACA,MAAA,QACA,eAAA,IACA,aAAA,QAOA,yBACE,QAAA,MAAA,MACA,iBAAA,mBACA,oBAAA,IACA,WAAA,MAAA,EAAA,EAAA,EAAA,OAAA,0BAGF,aACE,eAAA,QAGF,aACE,eAAA,OAIF,uCACE,oBAAA,aASJ,aACE,aAAA,IAUA,4BACE,QAAA,OAAA,OAeF,gCACE,aAAA,IAAA,EAGA,kCACE,aAAA,EAAA,IAOJ,oCACE,oBAAA,EASF,yCACE,qBAAA,2BACA,MAAA,8BAQJ,cACE,qBAAA,0BACA,MAAA,6BAQA,4BACE,qBAAA,yBACA,MAAA,4BCxHF,eAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,iBAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,eAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,YAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,eAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,cAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,aAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QAfF,YAME,cAAA,QACA,sBAAA,QACA,yBAAA,KACA,qBAAA,QACA,wBAAA,KACA,oBAAA,QACA,uBAAA,KAEA,MAAA,KACA,aAAA,QDgIA,kBACE,WAAA,KACA,2BAAA,MHvEF,4BGqEA,qBACE,WAAA,KACA,2BAAA,OHvEF,4BGqEA,qBACE,WAAA,KACA,2BAAA,OHvEF,4BGqEA,qBACE,WAAA,KACA,2BAAA,OHvEF,6BGqEA,qBACE,WAAA,KACA,2BAAA,OHvEF,6BGqEA,sBACE,WAAA,KACA,2BAAA,OE/IN,YACE,cAAA,MASF,gBACE,YAAA,oBACA,eAAA,oBACA,cAAA,EboRI,UAAA,QahRJ,YAAA,IAIF,mBACE,YAAA,kBACA,eAAA,kBb0QI,UAAA,QatQN,mBACE,YAAA,mBACA,eAAA,mBboQI,UAAA,QcjSN,WACE,WAAA,OdgSI,UAAA,Oc5RJ,MAAA,QCLF,cACE,QAAA,MACA,MAAA,KACA,QAAA,QAAA,Of8RI,UAAA,Ke3RJ,YAAA,IACA,YAAA,IACA,MAAA,QACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,QACA,mBAAA,KAAA,gBAAA,KAAA,WAAA,KdGE,cAAA,OeHE,WAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAIA,uCDhBN,cCiBQ,WAAA,MDGN,yBACE,SAAA,OAEA,wDACE,OAAA,QAKJ,oBACE,MAAA,QACA,iBAAA,KACA,aAAA,QACA,QAAA,EAKE,WAAA,EAAA,EAAA,EAAA,OAAA,qBAOJ,2CAEE,OAAA,MAIF,gCACE,MAAA,QAEA,QAAA,EAHF,2BACE,MAAA,QAEA,QAAA,EAQF,uBAAA,wBAEE,iBAAA,QAGA,QAAA,EAIF,oCACE,QAAA,QAAA,OACA,OAAA,SAAA,QACA,mBAAA,OAAA,kBAAA,OACA,MAAA,QE3EF,iBAAA,QF6EE,eAAA,KACA,aAAA,QACA,aAAA,MACA,aAAA,EACA,wBAAA,IACA,cAAA,ECtEE,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAIA,uCDuDJ,oCCtDM,WAAA,MDqEN,yEACE,iBAAA,QAGF,0CACE,QAAA,QAAA,OACA,OAAA,SAAA,QACA,mBAAA,OAAA,kBAAA,OACA,MAAA,QE9FF,iBAAA,QFgGE,eAAA,KACA,aAAA,QACA,aAAA,MACA,aAAA,EACA,wBAAA,IACA,cAAA,ECzFE,mBAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAAA,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAIA,uCD0EJ,0CCzEM,mBAAA,KAAA,WAAA,MDwFN,+EACE,iBAAA,QASJ,wBACE,QAAA,MACA,MAAA,KACA,QAAA,QAAA,EACA,cAAA,EACA,YAAA,IACA,MAAA,QACA,iBAAA,YACA,OAAA,MAAA,YACA,aAAA,IAAA,EAEA,wCAAA,wCAEE,cAAA,EACA,aAAA,EAWJ,iBACE,WAAA,0BACA,QAAA,OAAA,MfmJI,UAAA,QClRF,cAAA,McmIF,uCACE,QAAA,OAAA,MACA,OAAA,QAAA,OACA,mBAAA,MAAA,kBAAA,MAGF,6CACE,QAAA,OAAA,MACA,OAAA,QAAA,OACA,mBAAA,MAAA,kBAAA,MAIJ,iBACE,WAAA,yBACA,QAAA,MAAA,KfgII,UAAA,QClRF,cAAA,McsJF,uCACE,QAAA,MAAA,KACA,OAAA,OAAA,MACA,mBAAA,KAAA,kBAAA,KAGF,6CACE,QAAA,MAAA,KACA,OAAA,OAAA,MACA,mBAAA,KAAA,kBAAA,KAQF,sBACE,WAAA,2BAGF,yBACE,WAAA,0BAGF,yBACE,WAAA,yBAKJ,oBACE,MAAA,KACA,OAAA,KACA,QAAA,QAEA,mDACE,OAAA,QAGF,uCACE,OAAA,Md/LA,cAAA,OcmMF,0CACE,OAAA,MdpMA,cAAA,OiBdJ,aACE,QAAA,MACA,MAAA,KACA,QAAA,QAAA,QAAA,QAAA,OAEA,mBAAA,oBlB2RI,UAAA,KkBxRJ,YAAA,IACA,YAAA,IACA,MAAA,QACA,iBAAA,KACA,iBAAA,gOACA,kBAAA,UACA,oBAAA,MAAA,OAAA,OACA,gBAAA,KAAA,KACA,OAAA,IAAA,MAAA,QjBFE,cAAA,OeHE,WAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YESJ,mBAAA,KAAA,gBAAA,KAAA,WAAA,KFLI,uCEfN,aFgBQ,WAAA,MEMN,mBACE,aAAA,QACA,QAAA,EAKE,WAAA,EAAA,EAAA,EAAA,OAAA,qBAIJ,uBAAA,mCAEE,cAAA,OACA,iBAAA,KAGF,sBAEE,iBAAA,QAKF,4BACE,MAAA,YACA,YAAA,EAAA,EAAA,EAAA,QAIJ,gBACE,YAAA,OACA,eAAA,OACA,aAAA,MlByOI,UAAA,QkBrON,gBACE,YAAA,MACA,eAAA,MACA,aAAA,KlBkOI,UAAA,QmBjSN,YACE,QAAA,MACA,WAAA,OACA,aAAA,MACA,cAAA,QAEA,8BACE,MAAA,KACA,YAAA,OAIJ,kBACE,MAAA,IACA,OAAA,IACA,WAAA,MACA,eAAA,IACA,iBAAA,KACA,kBAAA,UACA,oBAAA,OACA,gBAAA,QACA,OAAA,IAAA,MAAA,gBACA,mBAAA,KAAA,gBAAA,KAAA,WAAA,KACA,2BAAA,MAAA,aAAA,MAGA,iClBXE,cAAA,MkBeF,8BAEE,cAAA,IAGF,yBACE,OAAA,gBAGF,wBACE,aAAA,QACA,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,OAAA,qBAGF,0BACE,iBAAA,QACA,aAAA,QAEA,yCAII,iBAAA,8NAIJ,sCAII,iBAAA,sIAKN,+CACE,iBAAA,QACA,aAAA,QAKE,iBAAA,wNAIJ,2BACE,eAAA,KACA,OAAA,KACA,QAAA,GAOA,6CAAA,8CACE,QAAA,GAcN,aACE,aAAA,MAEA,+BACE,MAAA,IACA,YAAA,OACA,iBAAA,uJACA,oBAAA,KAAA,OlB9FA,cAAA,IeHE,WAAA,oBAAA,KAAA,YAIA,uCGyFJ,+BHxFM,WAAA,MGgGJ,qCACE,iBAAA,yIAGF,uCACE,oBAAA,MAAA,OAKE,iBAAA,sIAMR,mBACE,QAAA,aACA,aAAA,KAGF,WACE,SAAA,SACA,KAAA,cACA,eAAA,KAIE,yBAAA,0BACE,eAAA,KACA,OAAA,KACA,QAAA,IC9IN,YACE,MAAA,KACA,OAAA,OACA,QAAA,EACA,iBAAA,YACA,mBAAA,KAAA,gBAAA,KAAA,WAAA,KAEA,kBACE,QAAA,EAIA,wCAA0B,WAAA,EAAA,EAAA,EAAA,IAAA,IAAA,CAAA,EAAA,EAAA,EAAA,OAAA,qBAC1B,oCAA0B,WAAA,EAAA,EAAA,EAAA,IAAA,IAAA,CAAA,EAAA,EAAA,EAAA,OAAA,qBAG5B,8BACE,OAAA,EAGF,kCACE,MAAA,KACA,OAAA,KACA,WAAA,QHzBF,iBAAA,QG2BE,OAAA,EnBZA,cAAA,KeHE,mBAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAAA,WAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YImBF,mBAAA,KAAA,WAAA,KJfE,uCIMJ,kCJLM,mBAAA,KAAA,WAAA,MIgBJ,yCHjCF,iBAAA,QGsCA,2CACE,MAAA,KACA,OAAA,MACA,MAAA,YACA,OAAA,QACA,iBAAA,QACA,aAAA,YnB7BA,cAAA,KmBkCF,8BACE,MAAA,KACA,OAAA,KHnDF,iBAAA,QGqDE,OAAA,EnBtCA,cAAA,KeHE,gBAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAAA,WAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YI6CF,gBAAA,KAAA,WAAA,KJzCE,uCIiCJ,8BJhCM,gBAAA,KAAA,WAAA,MI0CJ,qCH3DF,iBAAA,QGgEA,8BACE,MAAA,KACA,OAAA,MACA,MAAA,YACA,OAAA,QACA,iBAAA,QACA,aAAA,YnBvDA,cAAA,KmB4DF,qBACE,eAAA,KAEA,2CACE,iBAAA,QAGF,uCACE,iBAAA,QCvFN,eACE,SAAA,SAEA,6BtB+iFF,4BsB7iFI,OAAA,mBACA,YAAA,KAGF,qBACE,SAAA,SACA,IAAA,EACA,KAAA,EACA,OAAA,KACA,QAAA,KAAA,OACA,eAAA,KACA,OAAA,IAAA,MAAA,YACA,iBAAA,EAAA,ELDE,WAAA,QAAA,IAAA,WAAA,CAAA,UAAA,IAAA,YAIA,uCKXJ,qBLYM,WAAA,MKCN,6BACE,QAAA,KAAA,OAEA,+CACE,MAAA,YADF,0CACE,MAAA,YAGF,0DAEE,YAAA,SACA,eAAA,QAHF,mCAAA,qDAEE,YAAA,SACA,eAAA,QAGF,8CACE,YAAA,SACA,eAAA,QAIJ,4BACE,YAAA,SACA,eAAA,QAMA,gEACE,QAAA,IACA,UAAA,WAAA,mBAAA,mBAFF,yCtBmjFJ,2DACA,kCsBnjFM,QAAA,IACA,UAAA,WAAA,mBAAA,mBAKF,oDACE,QAAA,IACA,UAAA,WAAA,mBAAA,mBCtDN,aACE,SAAA,SACA,QAAA,KACA,UAAA,KACA,YAAA,QACA,MAAA,KAEA,2BvB2mFF,0BuBzmFI,SAAA,SACA,KAAA,EAAA,EAAA,KACA,MAAA,GACA,UAAA,EAIF,iCvBymFF,gCuBvmFI,QAAA,EAMF,kBACE,SAAA,SACA,QAAA,EAEA,wBACE,QAAA,EAWN,kBACE,QAAA,KACA,YAAA,OACA,QAAA,QAAA,OtBsPI,UAAA,KsBpPJ,YAAA,IACA,YAAA,IACA,MAAA,QACA,WAAA,OACA,YAAA,OACA,iBAAA,QACA,OAAA,IAAA,MAAA,QrBpCE,cAAA,OFuoFJ,qBuBzlFA,8BvBulFA,6BACA,kCuBplFE,QAAA,MAAA,KtBgOI,UAAA,QClRF,cAAA,MFgpFJ,qBuBzlFA,8BvBulFA,6BACA,kCuBplFE,QAAA,OAAA,MtBuNI,UAAA,QClRF,cAAA,MqBgEJ,6BvBulFA,6BuBrlFE,cAAA,KvB0lFF,uEuB7kFI,8FrB/DA,wBAAA,EACA,2BAAA,EFgpFJ,iEuB3kFI,2FrBtEA,wBAAA,EACA,2BAAA,EqBgFF,0IACE,YAAA,KrBpEA,uBAAA,EACA,0BAAA,EsBzBF,gBACE,QAAA,KACA,MAAA,KACA,WAAA,OvByQE,UAAA,OuBtQF,MAAA,QAGF,eACE,SAAA,SACA,IAAA,KACA,QAAA,EACA,QAAA,KACA,UAAA,KACA,QAAA,OAAA,MACA,WAAA,MvB4PE,UAAA,QuBzPF,MAAA,KACA,iBAAA,mBtB1BA,cAAA,OFmsFJ,0BACA,yBwBrqFI,sCxBmqFJ,qCwBjqFM,QAAA,MA9CF,uBAAA,mCAoDE,aAAA,QAGE,cAAA,qBACA,iBAAA,2OACA,kBAAA,UACA,oBAAA,MAAA,wBAAA,OACA,gBAAA,sBAAA,sBAGF,6BAAA,yCACE,aAAA,QACA,WAAA,EAAA,EAAA,EAAA,OAAA,oBAhEJ,2CAAA,+BAyEI,cAAA,qBACA,oBAAA,IAAA,wBAAA,MAAA,wBA1EJ,sBAAA,kCAiFE,aAAA,QAGE,kDAAA,gDAAA,8DAAA,4DAEE,cAAA,SACA,iBAAA,+NAAA,CAAA,2OACA,oBAAA,MAAA,OAAA,MAAA,CAAA,OAAA,MAAA,QACA,gBAAA,KAAA,IAAA,CAAA,sBAAA,sBAIJ,4BAAA,wCACE,aAAA,QACA,WAAA,EAAA,EAAA,EAAA,OAAA,oBA/FJ,2BAAA,uCAsGE,aAAA,QAEA,mCAAA,+CACE,iBAAA,QAGF,iCAAA,6CACE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAGF,6CAAA,yDACE,MAAA,QAKJ,qDACE,YAAA,KAvHF,oCxBwwFJ,mCwBxwFI,gDxBuwFJ,+CwBxoFQ,QAAA,EAIF,0CxB0oFN,yCwB1oFM,sDxByoFN,qDwBxoFQ,QAAA,EAjHN,kBACE,QAAA,KACA,MAAA,KACA,WAAA,OvByQE,UAAA,OuBtQF,MAAA,QAGF,iBACE,SAAA,SACA,IAAA,KACA,QAAA,EACA,QAAA,KACA,UAAA,KACA,QAAA,OAAA,MACA,WAAA,MvB4PE,UAAA,QuBzPF,MAAA,KACA,iBAAA,mBtB1BA,cAAA,OF4xFJ,8BACA,6BwB9vFI,0CxB4vFJ,yCwB1vFM,QAAA,MA9CF,yBAAA,qCAoDE,aAAA,QAGE,cAAA,qBACA,iBAAA,2TACA,kBAAA,UACA,oBAAA,MAAA,wBAAA,OACA,gBAAA,sBAAA,sBAGF,+BAAA,2CACE,aAAA,QACA,WAAA,EAAA,EAAA,EAAA,OAAA,oBAhEJ,6CAAA,iCAyEI,cAAA,qBACA,oBAAA,IAAA,wBAAA,MAAA,wBA1EJ,wBAAA,oCAiFE,aAAA,QAGE,oDAAA,kDAAA,gEAAA,8DAEE,cAAA,SACA,iBAAA,+NAAA,CAAA,2TACA,oBAAA,MAAA,OAAA,MAAA,CAAA,OAAA,MAAA,QACA,gBAAA,KAAA,IAAA,CAAA,sBAAA,sBAIJ,8BAAA,0CACE,aAAA,QACA,WAAA,EAAA,EAAA,EAAA,OAAA,oBA/FJ,6BAAA,yCAsGE,aAAA,QAEA,qCAAA,iDACE,iBAAA,QAGF,mCAAA,+CACE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAGF,+CAAA,2DACE,MAAA,QAKJ,uDACE,YAAA,KAvHF,sCxBi2FJ,qCwBj2FI,kDxBg2FJ,iDwB/tFQ,QAAA,EAEF,4CxBmuFN,2CwBnuFM,wDxBkuFN,uDwBjuFQ,QAAA,ECtIR,KACE,QAAA,aAEA,YAAA,IACA,YAAA,IACA,MAAA,QACA,WAAA,OACA,gBAAA,KAEA,eAAA,OACA,OAAA,QACA,oBAAA,KAAA,iBAAA,KAAA,YAAA,KACA,iBAAA,YACA,OAAA,IAAA,MAAA,YC8GA,QAAA,QAAA,OzBsKI,UAAA,KClRF,cAAA,OeHE,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAIA,uCQhBN,KRiBQ,WAAA,MQAN,WACE,MAAA,QAIF,sBAAA,WAEE,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,OAAA,qBAcF,cAAA,cAAA,uBAGE,eAAA,KACA,QAAA,IAYF,aCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,mBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,8BAAA,mBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAIJ,+BAAA,gCAAA,oBAAA,oBAAA,mCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,qCAAA,sCAAA,0BAAA,0BAAA,yCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,oBAKN,sBAAA,sBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,eCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,qBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,gCAAA,qBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,qBAIJ,iCAAA,kCAAA,sBAAA,sBAAA,qCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,uCAAA,wCAAA,4BAAA,4BAAA,2CAKI,WAAA,EAAA,EAAA,EAAA,OAAA,qBAKN,wBAAA,wBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,aCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,mBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,8BAAA,mBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAIJ,+BAAA,gCAAA,oBAAA,oBAAA,mCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,qCAAA,sCAAA,0BAAA,0BAAA,yCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,oBAKN,sBAAA,sBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,UCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,gBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,2BAAA,gBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAIJ,4BAAA,6BAAA,iBAAA,iBAAA,gCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,kCAAA,mCAAA,uBAAA,uBAAA,sCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,oBAKN,mBAAA,mBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,aCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,mBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,8BAAA,mBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,mBAIJ,+BAAA,gCAAA,oBAAA,oBAAA,mCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,qCAAA,sCAAA,0BAAA,0BAAA,yCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,mBAKN,sBAAA,sBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,YCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,kBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,6BAAA,kBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,mBAIJ,8BAAA,+BAAA,mBAAA,mBAAA,kCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,oCAAA,qCAAA,yBAAA,yBAAA,wCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,mBAKN,qBAAA,qBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,WCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,iBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,4BAAA,iBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,qBAIJ,6BAAA,8BAAA,kBAAA,kBAAA,iCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,mCAAA,oCAAA,wBAAA,wBAAA,uCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,qBAKN,oBAAA,oBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDZF,UCvCA,MAAA,KRhBA,iBAAA,QQkBA,aAAA,QAGA,gBACE,MAAA,KRtBF,iBAAA,QQwBE,aAAA,QAGF,2BAAA,gBAEE,MAAA,KR7BF,iBAAA,QQ+BE,aAAA,QAKE,WAAA,EAAA,EAAA,EAAA,OAAA,kBAIJ,4BAAA,6BAAA,iBAAA,iBAAA,gCAKE,MAAA,KACA,iBAAA,QAGA,aAAA,QAEA,kCAAA,mCAAA,uBAAA,uBAAA,sCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,kBAKN,mBAAA,mBAEE,MAAA,KACA,iBAAA,QAGA,aAAA,QDNF,qBCmBA,MAAA,QACA,aAAA,QAEA,2BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,sCAAA,2BAEE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAGF,uCAAA,wCAAA,4BAAA,0CAAA,4BAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,6CAAA,8CAAA,kCAAA,gDAAA,kCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,oBAKN,8BAAA,8BAEE,MAAA,QACA,iBAAA,YDvDF,uBCmBA,MAAA,QACA,aAAA,QAEA,6BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,wCAAA,6BAEE,WAAA,EAAA,EAAA,EAAA,OAAA,qBAGF,yCAAA,0CAAA,8BAAA,4CAAA,8BAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,+CAAA,gDAAA,oCAAA,kDAAA,oCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,qBAKN,gCAAA,gCAEE,MAAA,QACA,iBAAA,YDvDF,qBCmBA,MAAA,QACA,aAAA,QAEA,2BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,sCAAA,2BAEE,WAAA,EAAA,EAAA,EAAA,OAAA,mBAGF,uCAAA,wCAAA,4BAAA,0CAAA,4BAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,6CAAA,8CAAA,kCAAA,gDAAA,kCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,mBAKN,8BAAA,8BAEE,MAAA,QACA,iBAAA,YDvDF,kBCmBA,MAAA,QACA,aAAA,QAEA,wBACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,mCAAA,wBAEE,WAAA,EAAA,EAAA,EAAA,OAAA,oBAGF,oCAAA,qCAAA,yBAAA,uCAAA,yBAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,0CAAA,2CAAA,+BAAA,6CAAA,+BAKI,WAAA,EAAA,EAAA,EAAA,OAAA,oBAKN,2BAAA,2BAEE,MAAA,QACA,iBAAA,YDvDF,qBCmBA,MAAA,QACA,aAAA,QAEA,2BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,sCAAA,2BAEE,WAAA,EAAA,EAAA,EAAA,OAAA,mBAGF,uCAAA,wCAAA,4BAAA,0CAAA,4BAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,6CAAA,8CAAA,kCAAA,gDAAA,kCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,mBAKN,8BAAA,8BAEE,MAAA,QACA,iBAAA,YDvDF,oBCmBA,MAAA,QACA,aAAA,QAEA,0BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,qCAAA,0BAEE,WAAA,EAAA,EAAA,EAAA,OAAA,mBAGF,sCAAA,uCAAA,2BAAA,yCAAA,2BAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,4CAAA,6CAAA,iCAAA,+CAAA,iCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,mBAKN,6BAAA,6BAEE,MAAA,QACA,iBAAA,YDvDF,mBCmBA,MAAA,QACA,aAAA,QAEA,yBACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,oCAAA,yBAEE,WAAA,EAAA,EAAA,EAAA,OAAA,qBAGF,qCAAA,sCAAA,0BAAA,wCAAA,0BAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,2CAAA,4CAAA,gCAAA,8CAAA,gCAKI,WAAA,EAAA,EAAA,EAAA,OAAA,qBAKN,4BAAA,4BAEE,MAAA,QACA,iBAAA,YDvDF,kBCmBA,MAAA,QACA,aAAA,QAEA,wBACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,mCAAA,wBAEE,WAAA,EAAA,EAAA,EAAA,OAAA,kBAGF,oCAAA,qCAAA,yBAAA,uCAAA,yBAKE,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,0CAAA,2CAAA,+BAAA,6CAAA,+BAKI,WAAA,EAAA,EAAA,EAAA,OAAA,kBAKN,2BAAA,2BAEE,MAAA,QACA,iBAAA,YD3CJ,UACE,YAAA,IACA,MAAA,QACA,gBAAA,UAEA,gBACE,MAAA,QAQF,mBAAA,mBAEE,MAAA,QAWJ,mBAAA,QCuBE,QAAA,MAAA,KzBsKI,UAAA,QClRF,cAAA,MuByFJ,mBAAA,QCmBE,QAAA,OAAA,MzBsKI,UAAA,QClRF,cAAA,MyBnBJ,MVgBM,WAAA,QAAA,KAAA,OAIA,uCUpBN,MVqBQ,WAAA,MUlBN,iBACE,QAAA,EAMF,qBACE,QAAA,KAIJ,YACE,OAAA,EACA,SAAA,OVDI,WAAA,OAAA,KAAA,KAIA,uCULN,YVMQ,WAAA,MUDN,gCACE,MAAA,EACA,OAAA,KVNE,WAAA,MAAA,KAAA,KAIA,uCUAJ,gCVCM,WAAA,MjBs3GR,UADA,SAEA,W4B34GA,QAIE,SAAA,SAGF,iBACE,YAAA,OCqBE,wBACE,QAAA,aACA,YAAA,OACA,eAAA,OACA,QAAA,GAhCJ,WAAA,KAAA,MACA,aAAA,KAAA,MAAA,YACA,cAAA,EACA,YAAA,KAAA,MAAA,YAqDE,8BACE,YAAA,ED3CN,eACE,SAAA,SACA,QAAA,KACA,QAAA,KACA,UAAA,MACA,QAAA,MAAA,EACA,OAAA,E3B+QI,UAAA,K2B7QJ,MAAA,QACA,WAAA,KACA,WAAA,KACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,gB1BVE,cAAA,O0BcF,+BACE,IAAA,KACA,KAAA,EACA,WAAA,QAYA,qBACE,cAAA,MAEA,qCACE,MAAA,KACA,KAAA,EAIJ,mBACE,cAAA,IAEA,mCACE,MAAA,EACA,KAAA,KnBCJ,yBmBfA,wBACE,cAAA,MAEA,wCACE,MAAA,KACA,KAAA,EAIJ,sBACE,cAAA,IAEA,sCACE,MAAA,EACA,KAAA,MnBCJ,yBmBfA,wBACE,cAAA,MAEA,wCACE,MAAA,KACA,KAAA,EAIJ,sBACE,cAAA,IAEA,sCACE,MAAA,EACA,KAAA,MnBCJ,yBmBfA,wBACE,cAAA,MAEA,wCACE,MAAA,KACA,KAAA,EAIJ,sBACE,cAAA,IAEA,sCACE,MAAA,EACA,KAAA,MnBCJ,0BmBfA,wBACE,cAAA,MAEA,wCACE,MAAA,KACA,KAAA,EAIJ,sBACE,cAAA,IAEA,sCACE,MAAA,EACA,KAAA,MnBCJ,0BmBfA,yBACE,cAAA,MAEA,yCACE,MAAA,KACA,KAAA,EAIJ,uBACE,cAAA,IAEA,uCACE,MAAA,EACA,KAAA,MAUN,uCACE,IAAA,KACA,OAAA,KACA,WAAA,EACA,cAAA,QC9CA,gCACE,QAAA,aACA,YAAA,OACA,eAAA,OACA,QAAA,GAzBJ,WAAA,EACA,aAAA,KAAA,MAAA,YACA,cAAA,KAAA,MACA,YAAA,KAAA,MAAA,YA8CE,sCACE,YAAA,ED0BJ,wCACE,IAAA,EACA,MAAA,KACA,KAAA,KACA,WAAA,EACA,YAAA,QC5DA,iCACE,QAAA,aACA,YAAA,OACA,eAAA,OACA,QAAA,GAlBJ,WAAA,KAAA,MAAA,YACA,aAAA,EACA,cAAA,KAAA,MAAA,YACA,YAAA,KAAA,MAuCE,uCACE,YAAA,EDoCF,iCACE,eAAA,EAMJ,0CACE,IAAA,EACA,MAAA,KACA,KAAA,KACA,WAAA,EACA,aAAA,QC7EA,mCACE,QAAA,aACA,YAAA,OACA,eAAA,OACA,QAAA,GAWA,mCACE,QAAA,KAGF,oCACE,QAAA,aACA,aAAA,OACA,eAAA,OACA,QAAA,GA9BN,WAAA,KAAA,MAAA,YACA,aAAA,KAAA,MACA,cAAA,KAAA,MAAA,YAiCE,yCACE,YAAA,EDqDF,oCACE,eAAA,EAON,kBACE,OAAA,EACA,OAAA,MAAA,EACA,SAAA,OACA,WAAA,IAAA,MAAA,gBAMF,eACE,QAAA,MACA,MAAA,KACA,QAAA,OAAA,KACA,MAAA,KACA,YAAA,IACA,MAAA,QACA,WAAA,QACA,gBAAA,KACA,YAAA,OACA,iBAAA,YACA,OAAA,EAcA,qBAAA,qBAEE,MAAA,QVzJF,iBAAA,QU8JA,sBAAA,sBAEE,MAAA,KACA,gBAAA,KVjKF,iBAAA,QUqKA,wBAAA,wBAEE,MAAA,QACA,eAAA,KACA,iBAAA,YAMJ,oBACE,QAAA,MAIF,iBACE,QAAA,MACA,QAAA,MAAA,KACA,cAAA,E3B0GI,UAAA,Q2BxGJ,MAAA,QACA,YAAA,OAIF,oBACE,QAAA,MACA,QAAA,OAAA,KACA,MAAA,QAIF,oBACE,MAAA,QACA,iBAAA,QACA,aAAA,gBAGA,mCACE,MAAA,QAEA,yCAAA,yCAEE,MAAA,KVhNJ,iBAAA,sBUoNE,0CAAA,0CAEE,MAAA,KVtNJ,iBAAA,QU0NE,4CAAA,4CAEE,MAAA,QAIJ,sCACE,aAAA,gBAGF,wCACE,MAAA,QAGF,qCACE,MAAA,QE5OJ,W9B2rHA,oB8BzrHE,SAAA,SACA,QAAA,YACA,eAAA,O9B6rHF,yB8B3rHE,gBACE,SAAA,SACA,KAAA,EAAA,EAAA,K9BmsHJ,4CACA,0CAIA,gCADA,gCADA,+BADA,+B8BhsHE,mC9ByrHF,iCAIA,uBADA,uBADA,sBADA,sB8BprHI,QAAA,EAKJ,aACE,QAAA,KACA,UAAA,KACA,gBAAA,WAEA,0BACE,MAAA,K9BgsHJ,wC8B1rHE,kCAEE,YAAA,K9B4rHJ,4C8BxrHE,uD5BRE,wBAAA,EACA,2BAAA,EFqsHJ,6C8BrrHE,+B9BorHF,iCEvrHI,uBAAA,EACA,0BAAA,E4BqBJ,uBACE,cAAA,SACA,aAAA,SAEA,8BAAA,uCAAA,sCAGE,YAAA,EAGF,0CACE,aAAA,EAIJ,0CAAA,+BACE,cAAA,QACA,aAAA,QAGF,0CAAA,+BACE,cAAA,OACA,aAAA,OAoBF,oBACE,eAAA,OACA,YAAA,WACA,gBAAA,OAEA,yB9BmpHF,+B8BjpHI,MAAA,K9BqpHJ,iD8BlpHE,2CAEE,WAAA,K9BopHJ,qD8BhpHE,gE5BvFE,2BAAA,EACA,0BAAA,EF2uHJ,sD8BhpHE,8B5B1GE,uBAAA,EACA,wBAAA,E6BxBJ,KACE,QAAA,KACA,UAAA,KACA,aAAA,EACA,cAAA,EACA,WAAA,KAGF,UACE,QAAA,MACA,QAAA,MAAA,KAGA,MAAA,QACA,gBAAA,KdHI,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,YAIA,uCcPN,UdQQ,WAAA,McCN,gBAAA,gBAEE,MAAA,QAKF,mBACE,MAAA,QACA,eAAA,KACA,OAAA,QAQJ,UACE,cAAA,IAAA,MAAA,QAEA,oBACE,cAAA,KACA,WAAA,IACA,OAAA,IAAA,MAAA,Y7BlBA,uBAAA,OACA,wBAAA,O6BoBA,0BAAA,0BAEE,aAAA,QAAA,QAAA,QAEA,UAAA,QAGF,6BACE,MAAA,QACA,iBAAA,YACA,aAAA,Y/BixHN,mC+B7wHE,2BAEE,MAAA,QACA,iBAAA,KACA,aAAA,QAAA,QAAA,KAGF,yBAEE,WAAA,K7B5CA,uBAAA,EACA,wBAAA,E6BuDF,qBACE,WAAA,IACA,OAAA,E7BnEA,cAAA,O6BuEF,4B/BmwHF,2B+BjwHI,MAAA,KbxFF,iBAAA,QlB+1HF,oB+B5vHE,oBAEE,KAAA,EAAA,EAAA,KACA,WAAA,O/B+vHJ,yB+B1vHE,yBAEE,WAAA,EACA,UAAA,EACA,WAAA,OAMF,8B/BuvHF,mC+BtvHI,MAAA,KAUF,uBACE,QAAA,KAEF,qBACE,QAAA,MCxHJ,QACE,SAAA,SACA,QAAA,KACA,UAAA,KACA,YAAA,OACA,gBAAA,cACA,YAAA,MAEA,eAAA,MAOA,mBhCs2HF,yBAGA,sBADA,sBADA,sBAGA,sBACA,uBgC12HI,QAAA,KACA,UAAA,QACA,YAAA,OACA,gBAAA,cAoBJ,cACE,YAAA,SACA,eAAA,SACA,aAAA,K/B2OI,UAAA,Q+BzOJ,gBAAA,KACA,YAAA,OAaF,YACE,QAAA,KACA,eAAA,OACA,aAAA,EACA,cAAA,EACA,WAAA,KAEA,sBACE,cAAA,EACA,aAAA,EAGF,2BACE,SAAA,OASJ,aACE,YAAA,MACA,eAAA,MAYF,iBACE,WAAA,KACA,UAAA,EAGA,YAAA,OAIF,gBACE,QAAA,OAAA,O/B6KI,UAAA,Q+B3KJ,YAAA,EACA,iBAAA,YACA,OAAA,IAAA,MAAA,Y9BzGE,cAAA,OeHE,WAAA,WAAA,KAAA,YAIA,uCemGN,gBflGQ,WAAA,Me2GN,sBACE,gBAAA,KAGF,sBACE,gBAAA,KACA,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,OAMJ,qBACE,QAAA,aACA,MAAA,MACA,OAAA,MACA,eAAA,OACA,kBAAA,UACA,oBAAA,OACA,gBAAA,KAGF,mBACE,WAAA,6BACA,WAAA,KvB1FE,yBuBsGA,kBAEI,UAAA,OACA,gBAAA,WAEA,8BACE,eAAA,IAEA,6CACE,SAAA,SAGF,wCACE,cAAA,MACA,aAAA,MAIJ,qCACE,SAAA,QAGF,mCACE,QAAA,eACA,WAAA,KAGF,kCACE,QAAA,KAGF,oCACE,QAAA,KAGF,6BACE,SAAA,QACA,OAAA,EACA,QAAA,KACA,UAAA,EACA,WAAA,kBACA,iBAAA,YACA,aAAA,EACA,YAAA,EfhMJ,WAAA,KekMI,UAAA,KhC+yHV,oCgC7yHQ,iCAEE,OAAA,KACA,WAAA,EACA,cAAA,EAGF,kCACE,QAAA,KACA,UAAA,EACA,QAAA,EACA,WAAA,SvBhKN,yBuBsGA,kBAEI,UAAA,OACA,gBAAA,WAEA,8BACE,eAAA,IAEA,6CACE,SAAA,SAGF,wCACE,cAAA,MACA,aAAA,MAIJ,qCACE,SAAA,QAGF,mCACE,QAAA,eACA,WAAA,KAGF,kCACE,QAAA,KAGF,oCACE,QAAA,KAGF,6BACE,SAAA,QACA,OAAA,EACA,QAAA,KACA,UAAA,EACA,WAAA,kBACA,iBAAA,YACA,aAAA,EACA,YAAA,EfhMJ,WAAA,KekMI,UAAA,KhCo2HV,oCgCl2HQ,iCAEE,OAAA,KACA,WAAA,EACA,cAAA,EAGF,kCACE,QAAA,KACA,UAAA,EACA,QAAA,EACA,WAAA,SvBhKN,yBuBsGA,kBAEI,UAAA,OACA,gBAAA,WAEA,8BACE,eAAA,IAEA,6CACE,SAAA,SAGF,wCACE,cAAA,MACA,aAAA,MAIJ,qCACE,SAAA,QAGF,mCACE,QAAA,eACA,WAAA,KAGF,kCACE,QAAA,KAGF,oCACE,QAAA,KAGF,6BACE,SAAA,QACA,OAAA,EACA,QAAA,KACA,UAAA,EACA,WAAA,kBACA,iBAAA,YACA,aAAA,EACA,YAAA,EfhMJ,WAAA,KekMI,UAAA,KhCy5HV,oCgCv5HQ,iCAEE,OAAA,KACA,WAAA,EACA,cAAA,EAGF,kCACE,QAAA,KACA,UAAA,EACA,QAAA,EACA,WAAA,SvBhKN,0BuBsGA,kBAEI,UAAA,OACA,gBAAA,WAEA,8BACE,eAAA,IAEA,6CACE,SAAA,SAGF,wCACE,cAAA,MACA,aAAA,MAIJ,qCACE,SAAA,QAGF,mCACE,QAAA,eACA,WAAA,KAGF,kCACE,QAAA,KAGF,oCACE,QAAA,KAGF,6BACE,SAAA,QACA,OAAA,EACA,QAAA,KACA,UAAA,EACA,WAAA,kBACA,iBAAA,YACA,aAAA,EACA,YAAA,EfhMJ,WAAA,KekMI,UAAA,KhC88HV,oCgC58HQ,iCAEE,OAAA,KACA,WAAA,EACA,cAAA,EAGF,kCACE,QAAA,KACA,UAAA,EACA,QAAA,EACA,WAAA,SvBhKN,0BuBsGA,mBAEI,UAAA,OACA,gBAAA,WAEA,+BACE,eAAA,IAEA,8CACE,SAAA,SAGF,yCACE,cAAA,MACA,aAAA,MAIJ,sCACE,SAAA,QAGF,oCACE,QAAA,eACA,WAAA,KAGF,mCACE,QAAA,KAGF,qCACE,QAAA,KAGF,8BACE,SAAA,QACA,OAAA,EACA,QAAA,KACA,UAAA,EACA,WAAA,kBACA,iBAAA,YACA,aAAA,EACA,YAAA,EfhMJ,WAAA,KekMI,UAAA,KhCmgIV,qCgCjgIQ,kCAEE,OAAA,KACA,WAAA,EACA,cAAA,EAGF,mCACE,QAAA,KACA,UAAA,EACA,QAAA,EACA,WAAA,SA1DN,eAEI,UAAA,OACA,gBAAA,WAEA,2BACE,eAAA,IAEA,0CACE,SAAA,SAGF,qCACE,cAAA,MACA,aAAA,MAIJ,kCACE,SAAA,QAGF,gCACE,QAAA,eACA,WAAA,KAGF,+BACE,QAAA,KAGF,iCACE,QAAA,KAGF,0BACE,SAAA,QACA,OAAA,EACA,QAAA,KACA,UAAA,EACA,WAAA,kBACA,iBAAA,YACA,aAAA,EACA,YAAA,EfhMJ,WAAA,KekMI,UAAA,KhCujIV,iCgCrjIQ,8BAEE,OAAA,KACA,WAAA,EACA,cAAA,EAGF,+BACE,QAAA,KACA,UAAA,EACA,QAAA,EACA,WAAA,QAcR,4BACE,MAAA,eAEA,kCAAA,kCAEE,MAAA,eAKF,oCACE,MAAA,gBAEA,0CAAA,0CAEE,MAAA,eAGF,6CACE,MAAA,ehCqiIR,2CgCjiII,0CAEE,MAAA,eAIJ,8BACE,MAAA,gBACA,aAAA,eAGF,mCACE,iBAAA,4OAGF,2BACE,MAAA,gBAEA,6BhC8hIJ,mCADA,mCgC1hIM,MAAA,eAOJ,2BACE,MAAA,KAEA,iCAAA,iCAEE,MAAA,KAKF,mCACE,MAAA,sBAEA,yCAAA,yCAEE,MAAA,sBAGF,4CACE,MAAA,sBhCqhIR,0CgCjhII,yCAEE,MAAA,KAIJ,6BACE,MAAA,sBACA,aAAA,qBAGF,kCACE,iBAAA,kPAGF,0BACE,MAAA,sBACA,4BhC+gIJ,kCADA,kCgC3gIM,MAAA,KCvUN,MACE,SAAA,SACA,QAAA,KACA,eAAA,OACA,UAAA,EAEA,UAAA,WACA,iBAAA,KACA,gBAAA,WACA,OAAA,IAAA,MAAA,iB/BME,cAAA,O+BFF,SACE,aAAA,EACA,YAAA,EAGF,kBACE,WAAA,QACA,cAAA,QAEA,8BACE,iBAAA,E/BCF,uBAAA,mBACA,wBAAA,mB+BEA,6BACE,oBAAA,E/BUF,2BAAA,mBACA,0BAAA,mB+BJF,+BjCk1IF,+BiCh1II,WAAA,EAIJ,WAGE,KAAA,EAAA,EAAA,KACA,QAAA,KAAA,KAIF,YACE,cAAA,MAGF,eACE,WAAA,QACA,cAAA,EAGF,sBACE,cAAA,EAQA,sBACE,YAAA,KAQJ,aACE,QAAA,MAAA,KACA,cAAA,EAEA,iBAAA,gBACA,cAAA,IAAA,MAAA,iBAEA,yB/BpEE,cAAA,mBAAA,mBAAA,EAAA,E+ByEJ,aACE,QAAA,MAAA,KAEA,iBAAA,gBACA,WAAA,IAAA,MAAA,iBAEA,wB/B/EE,cAAA,EAAA,EAAA,mBAAA,mB+ByFJ,kBACE,aAAA,OACA,cAAA,OACA,YAAA,OACA,cAAA,EAUF,mBACE,aAAA,OACA,YAAA,OAIF,kBACE,SAAA,SACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,K/BnHE,cAAA,mB+BuHJ,UjCozIA,iBADA,ciChzIE,MAAA,KAGF,UjCmzIA,cEv6II,uBAAA,mBACA,wBAAA,mB+BwHJ,UjCozIA,iBE/5II,2BAAA,mBACA,0BAAA,mB+BuHF,kBACE,cAAA,OxBpGA,yBwBgGJ,YAQI,QAAA,KACA,UAAA,IAAA,KAGA,kBAEE,KAAA,EAAA,EAAA,GACA,cAAA,EAEA,wBACE,YAAA,EACA,YAAA,EAKA,mC/BpJJ,wBAAA,EACA,2BAAA,EF+7IJ,gDiCzyIU,iDAGE,wBAAA,EjC0yIZ,gDiCxyIU,oDAGE,2BAAA,EAIJ,oC/BrJJ,uBAAA,EACA,0BAAA,EF67IJ,iDiCtyIU,kDAGE,uBAAA,EjCuyIZ,iDiCryIU,qDAGE,0BAAA,GC7MZ,kBACE,SAAA,SACA,QAAA,KACA,YAAA,OACA,MAAA,KACA,QAAA,KAAA,QjC4RI,UAAA,KiC1RJ,MAAA,QACA,WAAA,KACA,iBAAA,KACA,OAAA,EhCKE,cAAA,EgCHF,gBAAA,KjBAI,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,WAAA,CAAA,cAAA,KAAA,KAIA,uCiBhBN,kBjBiBQ,WAAA,MiBFN,kCACE,MAAA,QACA,iBAAA,QACA,WAAA,MAAA,EAAA,KAAA,EAAA,iBAEA,yCACE,iBAAA,gRACA,UAAA,gBAKJ,yBACE,YAAA,EACA,MAAA,QACA,OAAA,QACA,YAAA,KACA,QAAA,GACA,iBAAA,gRACA,kBAAA,UACA,gBAAA,QjBvBE,WAAA,UAAA,IAAA,YAIA,uCiBWJ,yBjBVM,WAAA,MiBsBN,wBACE,QAAA,EAGF,wBACE,QAAA,EACA,aAAA,QACA,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,OAAA,qBAIJ,kBACE,cAAA,EAGF,gBACE,iBAAA,KACA,OAAA,IAAA,MAAA,iBAEA,8BhCnCE,uBAAA,OACA,wBAAA,OgCqCA,gDhCtCA,uBAAA,mBACA,wBAAA,mBgC0CF,oCACE,WAAA,EAIF,6BhClCE,2BAAA,OACA,0BAAA,OgCqCE,yDhCtCF,2BAAA,mBACA,0BAAA,mBgC0CA,iDhC3CA,2BAAA,OACA,0BAAA,OgCgDJ,gBACE,QAAA,KAAA,QASA,qCACE,aAAA,EAGF,iCACE,aAAA,EACA,YAAA,EhCxFA,cAAA,EgC2FA,6CAAgB,WAAA,EAChB,4CAAe,cAAA,EAEf,mDhC9FA,cAAA,EiCnBJ,YACE,QAAA,KACA,UAAA,KACA,QAAA,EAAA,EACA,cAAA,KAEA,WAAA,KAOA,kCACE,aAAA,MAEA,0CACE,MAAA,KACA,cAAA,MACA,MAAA,QACA,QAAA,kCAIJ,wBACE,MAAA,QCzBJ,YACE,QAAA,KhCGA,aAAA,EACA,WAAA,KgCAF,WACE,SAAA,SACA,QAAA,MACA,MAAA,QACA,gBAAA,KACA,iBAAA,KACA,OAAA,IAAA,MAAA,QnBKI,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAIA,uCmBfN,WnBgBQ,WAAA,MmBPN,iBACE,QAAA,EACA,MAAA,QAEA,iBAAA,QACA,aAAA,QAGF,iBACE,QAAA,EACA,MAAA,QACA,iBAAA,QACA,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,OAAA,qBAKF,wCACE,YAAA,KAGF,6BACE,QAAA,EACA,MAAA,KlBlCF,iBAAA,QkBoCE,aAAA,QAGF,+BACE,MAAA,QACA,eAAA,KACA,iBAAA,KACA,aAAA,QC3CF,WACE,QAAA,QAAA,OAOI,kCnCqCJ,uBAAA,OACA,0BAAA,OmChCI,iCnCiBJ,wBAAA,OACA,2BAAA,OmChCF,0BACE,QAAA,OAAA,OpCgSE,UAAA,QoCzRE,iDnCqCJ,uBAAA,MACA,0BAAA,MmChCI,gDnCiBJ,wBAAA,MACA,2BAAA,MmChCF,0BACE,QAAA,OAAA,MpCgSE,UAAA,QoCzRE,iDnCqCJ,uBAAA,MACA,0BAAA,MmChCI,gDnCiBJ,wBAAA,MACA,2BAAA,MoC/BJ,OACE,QAAA,aACA,QAAA,MAAA,MrC8RI,UAAA,MqC5RJ,YAAA,IACA,YAAA,EACA,MAAA,KACA,WAAA,OACA,YAAA,OACA,eAAA,SpCKE,cAAA,OoCAF,aACE,QAAA,KAKJ,YACE,SAAA,SACA,IAAA,KCvBF,OACE,SAAA,SACA,QAAA,KAAA,KACA,cAAA,KACA,OAAA,IAAA,MAAA,YrCWE,cAAA,OqCNJ,eAEE,MAAA,QAIF,YACE,YAAA,IAQF,mBACE,cAAA,KAGA,8BACE,SAAA,SACA,IAAA,EACA,MAAA,EACA,QAAA,EACA,QAAA,QAAA,KAeF,eClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,2BACE,MAAA,QD6CF,iBClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,6BACE,MAAA,QD6CF,eClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,2BACE,MAAA,QD6CF,YClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,wBACE,MAAA,QD6CF,eClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,2BACE,MAAA,QD6CF,cClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,0BACE,MAAA,QD6CF,aClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,yBACE,MAAA,QD6CF,YClDA,MAAA,QtBEA,iBAAA,QsBAA,aAAA,QAEA,wBACE,MAAA,QCHF,wCACE,GAAK,sBAAA,MADP,gCACE,GAAK,sBAAA,MAKT,UACE,QAAA,KACA,OAAA,KACA,SAAA,OxCwRI,UAAA,OwCtRJ,iBAAA,QvCIE,cAAA,OuCCJ,cACE,QAAA,KACA,eAAA,OACA,gBAAA,OACA,SAAA,OACA,MAAA,KACA,WAAA,OACA,YAAA,OACA,iBAAA,QxBZI,WAAA,MAAA,IAAA,KAIA,uCwBAN,cxBCQ,WAAA,MwBWR,sBvBYE,iBAAA,iKuBVA,gBAAA,KAAA,KAIA,uBACE,kBAAA,GAAA,OAAA,SAAA,qBAAA,UAAA,GAAA,OAAA,SAAA,qBAGE,uCAJJ,uBAKM,kBAAA,KAAA,UAAA,MCvCR,YACE,QAAA,KACA,eAAA,OAGA,aAAA,EACA,cAAA,ExCSE,cAAA,OwCLJ,qBACE,gBAAA,KACA,cAAA,QAEA,gCAEE,QAAA,uBAAA,KACA,kBAAA,QAUJ,wBACE,MAAA,KACA,MAAA,QACA,WAAA,QAGA,8BAAA,8BAEE,QAAA,EACA,MAAA,QACA,gBAAA,KACA,iBAAA,QAGF,+BACE,MAAA,QACA,iBAAA,QASJ,iBACE,SAAA,SACA,QAAA,MACA,QAAA,MAAA,KACA,MAAA,QACA,gBAAA,KACA,iBAAA,KACA,OAAA,IAAA,MAAA,iBAEA,6BxCrCE,uBAAA,QACA,wBAAA,QwCwCF,4BxC3BE,2BAAA,QACA,0BAAA,QwC8BF,0BAAA,0BAEE,MAAA,QACA,eAAA,KACA,iBAAA,KAIF,wBACE,QAAA,EACA,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,kCACE,iBAAA,EAEA,yCACE,WAAA,KACA,iBAAA,IAcF,uBACE,eAAA,IAGE,oDxCrCJ,0BAAA,OAZA,wBAAA,EwCsDI,mDxCtDJ,wBAAA,OAYA,0BAAA,EwC+CI,+CACE,WAAA,EAGF,yDACE,iBAAA,IACA,kBAAA,EAEA,gEACE,YAAA,KACA,kBAAA,IjCpER,yBiC4CA,0BACE,eAAA,IAGE,uDxCrCJ,0BAAA,OAZA,wBAAA,EwCsDI,sDxCtDJ,wBAAA,OAYA,0BAAA,EwC+CI,kDACE,WAAA,EAGF,4DACE,iBAAA,IACA,kBAAA,EAEA,mEACE,YAAA,KACA,kBAAA,KjCpER,yBiC4CA,0BACE,eAAA,IAGE,uDxCrCJ,0BAAA,OAZA,wBAAA,EwCsDI,sDxCtDJ,wBAAA,OAYA,0BAAA,EwC+CI,kDACE,WAAA,EAGF,4DACE,iBAAA,IACA,kBAAA,EAEA,mEACE,YAAA,KACA,kBAAA,KjCpER,yBiC4CA,0BACE,eAAA,IAGE,uDxCrCJ,0BAAA,OAZA,wBAAA,EwCsDI,sDxCtDJ,wBAAA,OAYA,0BAAA,EwC+CI,kDACE,WAAA,EAGF,4DACE,iBAAA,IACA,kBAAA,EAEA,mEACE,YAAA,KACA,kBAAA,KjCpER,0BiC4CA,0BACE,eAAA,IAGE,uDxCrCJ,0BAAA,OAZA,wBAAA,EwCsDI,sDxCtDJ,wBAAA,OAYA,0BAAA,EwC+CI,kDACE,WAAA,EAGF,4DACE,iBAAA,IACA,kBAAA,EAEA,mEACE,YAAA,KACA,kBAAA,KjCpER,0BiC4CA,2BACE,eAAA,IAGE,wDxCrCJ,0BAAA,OAZA,wBAAA,EwCsDI,uDxCtDJ,wBAAA,OAYA,0BAAA,EwC+CI,mDACE,WAAA,EAGF,6DACE,iBAAA,IACA,kBAAA,EAEA,oEACE,YAAA,KACA,kBAAA,KAcZ,kBxC9HI,cAAA,EwCiIF,mCACE,aAAA,EAAA,EAAA,IAEA,8CACE,oBAAA,ECpJJ,yBACE,MAAA,QACA,iBAAA,QAGE,sDAAA,sDAEE,MAAA,QACA,iBAAA,QAGF,uDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,2BACE,MAAA,QACA,iBAAA,QAGE,wDAAA,wDAEE,MAAA,QACA,iBAAA,QAGF,yDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,yBACE,MAAA,QACA,iBAAA,QAGE,sDAAA,sDAEE,MAAA,QACA,iBAAA,QAGF,uDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,sBACE,MAAA,QACA,iBAAA,QAGE,mDAAA,mDAEE,MAAA,QACA,iBAAA,QAGF,oDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,yBACE,MAAA,QACA,iBAAA,QAGE,sDAAA,sDAEE,MAAA,QACA,iBAAA,QAGF,uDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,wBACE,MAAA,QACA,iBAAA,QAGE,qDAAA,qDAEE,MAAA,QACA,iBAAA,QAGF,sDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,uBACE,MAAA,QACA,iBAAA,QAGE,oDAAA,oDAEE,MAAA,QACA,iBAAA,QAGF,qDACE,MAAA,KACA,iBAAA,QACA,aAAA,QAdN,sBACE,MAAA,QACA,iBAAA,QAGE,mDAAA,mDAEE,MAAA,QACA,iBAAA,QAGF,oDACE,MAAA,KACA,iBAAA,QACA,aAAA,QCbR,WACE,WAAA,YACA,MAAA,IACA,OAAA,IACA,QAAA,MAAA,MACA,MAAA,KACA,WAAA,YAAA,0TAAA,MAAA,CAAA,IAAA,KAAA,UACA,OAAA,E1COE,cAAA,O0CLF,QAAA,GAGA,iBACE,MAAA,KACA,gBAAA,KACA,QAAA,IAGF,iBACE,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,OAAA,qBACA,QAAA,EAGF,oBAAA,oBAEE,eAAA,KACA,oBAAA,KAAA,iBAAA,KAAA,YAAA,KACA,QAAA,IAIJ,iBACE,OAAA,UAAA,gBAAA,iBCtCF,OACE,MAAA,MACA,UAAA,K5CmSI,UAAA,Q4ChSJ,eAAA,KACA,iBAAA,sBACA,gBAAA,YACA,OAAA,IAAA,MAAA,eACA,WAAA,EAAA,MAAA,KAAA,gB3CUE,cAAA,O2CPF,eACE,QAAA,EAGF,kBACE,QAAA,KAIJ,iBACE,MAAA,oBAAA,MAAA,iBAAA,MAAA,YACA,UAAA,KACA,eAAA,KAEA,mCACE,cAAA,OAIJ,cACE,QAAA,KACA,YAAA,OACA,QAAA,MAAA,OACA,MAAA,QACA,iBAAA,sBACA,gBAAA,YACA,cAAA,IAAA,MAAA,gB3CVE,uBAAA,mBACA,wBAAA,mB2CYF,yBACE,aAAA,SACA,YAAA,OAIJ,YACE,QAAA,OACA,UAAA,WC1CF,OACE,SAAA,MACA,IAAA,EACA,KAAA,EACA,QAAA,KACA,QAAA,KACA,MAAA,KACA,OAAA,KACA,WAAA,OACA,WAAA,KAGA,QAAA,EAOF,cACE,SAAA,SACA,MAAA,KACA,OAAA,MAEA,eAAA,KAGA,0B7BlBI,WAAA,UAAA,IAAA,S6BoBF,UAAA,mB7BhBE,uC6BcJ,0B7BbM,WAAA,M6BiBN,0BACE,UAAA,KAIF,kCACE,UAAA,YAIJ,yBACE,OAAA,kBAEA,wCACE,WAAA,KACA,SAAA,OAGF,qCACE,WAAA,KAIJ,uBACE,QAAA,KACA,YAAA,OACA,WAAA,kBAIF,eACE,SAAA,SACA,QAAA,KACA,eAAA,OACA,MAAA,KAGA,eAAA,KACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,e5C3DE,cAAA,M4C+DF,QAAA,EAIF,gBCpFE,SAAA,MACA,IAAA,EACA,KAAA,EACA,QAAA,KACA,MAAA,MACA,OAAA,MACA,iBAAA,KAGA,qBAAS,QAAA,EACT,qBAAS,QAAA,GDgFX,cACE,QAAA,KACA,YAAA,EACA,YAAA,OACA,gBAAA,cACA,QAAA,KAAA,KACA,cAAA,IAAA,MAAA,Q5CtEE,uBAAA,kBACA,wBAAA,kB4CwEF,yBACE,QAAA,MAAA,MACA,OAAA,OAAA,OAAA,OAAA,KAKJ,aACE,cAAA,EACA,YAAA,IAKF,YACE,SAAA,SAGA,KAAA,EAAA,EAAA,KACA,QAAA,KAIF,cACE,QAAA,KACA,UAAA,KACA,YAAA,EACA,YAAA,OACA,gBAAA,SACA,QAAA,OACA,WAAA,IAAA,MAAA,Q5CzFE,2BAAA,kBACA,0BAAA,kB4C8FF,gBACE,OAAA,OrC3EA,yBqCkFF,cACE,UAAA,MACA,OAAA,QAAA,KAGF,yBACE,OAAA,oBAGF,uBACE,WAAA,oBAOF,UAAY,UAAA,OrCnGV,yBqCuGF,U9CywKF,U8CvwKI,UAAA,OrCzGA,0BqC8GF,UAAY,UAAA,QASV,kBACE,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EAEA,iCACE,OAAA,KACA,OAAA,E5C3KJ,cAAA,E4C+KE,gC5C/KF,cAAA,E4CmLE,8BACE,WAAA,KAGF,gC5CvLF,cAAA,EOyDA,4BqC0GA,0BACE,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EAEA,yCACE,OAAA,KACA,OAAA,E5C3KJ,cAAA,E4C+KE,wC5C/KF,cAAA,E4CmLE,sCACE,WAAA,KAGF,wC5CvLF,cAAA,GOyDA,4BqC0GA,0BACE,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EAEA,yCACE,OAAA,KACA,OAAA,E5C3KJ,cAAA,E4C+KE,wC5C/KF,cAAA,E4CmLE,sCACE,WAAA,KAGF,wC5CvLF,cAAA,GOyDA,4BqC0GA,0BACE,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EAEA,yCACE,OAAA,KACA,OAAA,E5C3KJ,cAAA,E4C+KE,wC5C/KF,cAAA,E4CmLE,sCACE,WAAA,KAGF,wC5CvLF,cAAA,GOyDA,6BqC0GA,0BACE,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EAEA,yCACE,OAAA,KACA,OAAA,E5C3KJ,cAAA,E4C+KE,wC5C/KF,cAAA,E4CmLE,sCACE,WAAA,KAGF,wC5CvLF,cAAA,GOyDA,6BqC0GA,2BACE,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EAEA,0CACE,OAAA,KACA,OAAA,E5C3KJ,cAAA,E4C+KE,yC5C/KF,cAAA,E4CmLE,uCACE,WAAA,KAGF,yC5CvLF,cAAA,G8ClBJ,SACE,SAAA,SACA,QAAA,KACA,QAAA,MACA,OAAA,ECJA,YAAA,0BAEA,WAAA,OACA,YAAA,IACA,YAAA,IACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KACA,eAAA,OACA,WAAA,OACA,aAAA,OACA,YAAA,OACA,WAAA,KhDsRI,UAAA,Q+C1RJ,UAAA,WACA,QAAA,EAEA,cAAS,QAAA,GAET,wBACE,SAAA,SACA,QAAA,MACA,MAAA,MACA,OAAA,MAEA,gCACE,SAAA,SACA,QAAA,GACA,aAAA,YACA,aAAA,MAKN,6CAAA,gBACE,QAAA,MAAA,EAEA,4DAAA,+BACE,OAAA,EAEA,oEAAA,uCACE,IAAA,KACA,aAAA,MAAA,MAAA,EACA,iBAAA,KAKN,+CAAA,gBACE,QAAA,EAAA,MAEA,8DAAA,+BACE,KAAA,EACA,MAAA,MACA,OAAA,MAEA,sEAAA,uCACE,MAAA,KACA,aAAA,MAAA,MAAA,MAAA,EACA,mBAAA,KAKN,gDAAA,mBACE,QAAA,MAAA,EAEA,+DAAA,kCACE,IAAA,EAEA,uEAAA,0CACE,OAAA,KACA,aAAA,EAAA,MAAA,MACA,oBAAA,KAKN,8CAAA,kBACE,QAAA,EAAA,MAEA,6DAAA,iCACE,MAAA,EACA,MAAA,MACA,OAAA,MAEA,qEAAA,yCACE,KAAA,KACA,aAAA,MAAA,EAAA,MAAA,MACA,kBAAA,KAqBN,eACE,UAAA,MACA,QAAA,OAAA,MACA,MAAA,KACA,WAAA,OACA,iBAAA,K9C7FE,cAAA,OgDnBJ,SACE,SAAA,SACA,IAAA,EACA,KAAA,EACA,QAAA,KACA,QAAA,MACA,UAAA,MDLA,YAAA,0BAEA,WAAA,OACA,YAAA,IACA,YAAA,IACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KACA,eAAA,OACA,WAAA,OACA,aAAA,OACA,YAAA,OACA,WAAA,KhDsRI,UAAA,QiDzRJ,UAAA,WACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,ehDIE,cAAA,MgDAF,wBACE,SAAA,SACA,QAAA,MACA,MAAA,KACA,OAAA,MAEA,+BAAA,gCAEE,SAAA,SACA,QAAA,MACA,QAAA,GACA,aAAA,YACA,aAAA,MAMJ,4DAAA,+BACE,OAAA,mBAEA,oEAAA,uCACE,OAAA,EACA,aAAA,MAAA,MAAA,EACA,iBAAA,gBAGF,mEAAA,sCACE,OAAA,IACA,aAAA,MAAA,MAAA,EACA,iBAAA,KAMJ,8DAAA,+BACE,KAAA,mBACA,MAAA,MACA,OAAA,KAEA,sEAAA,uCACE,KAAA,EACA,aAAA,MAAA,MAAA,MAAA,EACA,mBAAA,gBAGF,qEAAA,sCACE,KAAA,IACA,aAAA,MAAA,MAAA,MAAA,EACA,mBAAA,KAMJ,+DAAA,kCACE,IAAA,mBAEA,uEAAA,0CACE,IAAA,EACA,aAAA,EAAA,MAAA,MAAA,MACA,oBAAA,gBAGF,sEAAA,yCACE,IAAA,IACA,aAAA,EAAA,MAAA,MAAA,MACA,oBAAA,KAKJ,wEAAA,2CACE,SAAA,SACA,IAAA,EACA,KAAA,IACA,QAAA,MACA,MAAA,KACA,YAAA,OACA,QAAA,GACA,cAAA,IAAA,MAAA,QAKF,6DAAA,iCACE,MAAA,mBACA,MAAA,MACA,OAAA,KAEA,qEAAA,yCACE,MAAA,EACA,aAAA,MAAA,EAAA,MAAA,MACA,kBAAA,gBAGF,oEAAA,wCACE,MAAA,IACA,aAAA,MAAA,EAAA,MAAA,MACA,kBAAA,KAqBN,gBACE,QAAA,MAAA,KACA,cAAA,EjDuJI,UAAA,KiDpJJ,iBAAA,QACA,cAAA,IAAA,MAAA,ehDtHE,uBAAA,kBACA,wBAAA,kBgDwHF,sBACE,QAAA,KAIJ,cACE,QAAA,KAAA,KACA,MAAA,QC/IF,UACE,SAAA,SAGF,wBACE,aAAA,MAGF,gBACE,SAAA,SACA,MAAA,KACA,SAAA,OCtBA,uBACE,QAAA,MACA,MAAA,KACA,QAAA,GDuBJ,eACE,SAAA,SACA,QAAA,KACA,MAAA,KACA,MAAA,KACA,aAAA,MACA,4BAAA,OAAA,oBAAA,OlClBI,WAAA,UAAA,IAAA,YAIA,uCkCQN,elCPQ,WAAA,MjBgzLR,oBACA,oBmDhyLA,sBAGE,QAAA,MnDmyLF,0BmD/xLA,8CAEE,UAAA,iBnDkyLF,4BmD/xLA,4CAEE,UAAA,kBAWA,8BACE,QAAA,EACA,oBAAA,QACA,UAAA,KnD0xLJ,uDACA,qDmDxxLE,qCAGE,QAAA,EACA,QAAA,EnDyxLJ,yCmDtxLE,2CAEE,QAAA,EACA,QAAA,ElC/DE,WAAA,QAAA,GAAA,IAIA,uCjBq1LN,yCmD7xLE,2ClCvDM,WAAA,MjB01LR,uBmDtxLA,uBAEE,SAAA,SACA,IAAA,EACA,OAAA,EACA,QAAA,EAEA,QAAA,KACA,YAAA,OACA,gBAAA,OACA,MAAA,IACA,QAAA,EACA,MAAA,KACA,WAAA,OACA,WAAA,IACA,OAAA,EACA,QAAA,GlCzFI,WAAA,QAAA,KAAA,KAIA,uCjB82LN,uBmDzyLA,uBlCpEQ,WAAA,MjBm3LR,6BADA,6BmD1xLE,6BAAA,6BAEE,MAAA,KACA,gBAAA,KACA,QAAA,EACA,QAAA,GAGJ,uBACE,KAAA,EAGF,uBACE,MAAA,EnD8xLF,4BmDzxLA,4BAEE,QAAA,aACA,MAAA,KACA,OAAA,KACA,kBAAA,UACA,oBAAA,IACA,gBAAA,KAAA,KAWF,4BACE,iBAAA,wPAEF,4BACE,iBAAA,yPAQF,qBACE,SAAA,SACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,EACA,QAAA,KACA,gBAAA,OACA,QAAA,EAEA,aAAA,IACA,cAAA,KACA,YAAA,IACA,WAAA,KAEA,sCACE,WAAA,YACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,OAAA,IACA,QAAA,EACA,aAAA,IACA,YAAA,IACA,YAAA,OACA,OAAA,QACA,iBAAA,KACA,gBAAA,YACA,OAAA,EAEA,WAAA,KAAA,MAAA,YACA,cAAA,KAAA,MAAA,YACA,QAAA,GlC5KE,WAAA,QAAA,IAAA,KAIA,uCkCwJJ,sClCvJM,WAAA,MkC2KN,6BACE,QAAA,EASJ,kBACE,SAAA,SACA,MAAA,IACA,OAAA,QACA,KAAA,IACA,YAAA,QACA,eAAA,QACA,MAAA,KACA,WAAA,OnDoxLF,2CmD9wLE,2CAEE,OAAA,UAAA,eAGF,qDACE,iBAAA,KAGF,iCACE,MAAA,KE7NJ,kCACE,GAAK,UAAA,gBADP,0BACE,GAAK,UAAA,gBAIP,gBACE,QAAA,aACA,MAAA,KACA,OAAA,KACA,eAAA,QACA,OAAA,MAAA,MAAA,aACA,mBAAA,YAEA,cAAA,IACA,kBAAA,KAAA,OAAA,SAAA,eAAA,UAAA,KAAA,OAAA,SAAA,eAGF,mBACE,MAAA,KACA,OAAA,KACA,aAAA,KAQF,gCACE,GACE,UAAA,SAEF,IACE,QAAA,EACA,UAAA,MANJ,wBACE,GACE,UAAA,SAEF,IACE,QAAA,EACA,UAAA,MAKJ,cACE,QAAA,aACA,MAAA,KACA,OAAA,KACA,eAAA,QACA,iBAAA,aAEA,cAAA,IACA,QAAA,EACA,kBAAA,KAAA,OAAA,SAAA,aAAA,UAAA,KAAA,OAAA,SAAA,aAGF,iBACE,MAAA,KACA,OAAA,KAIA,uCACE,gBrDo/LJ,cqDl/LM,2BAAA,KAAA,mBAAA,MCjEN,WACE,SAAA,MACA,OAAA,EACA,QAAA,KACA,QAAA,KACA,eAAA,OACA,UAAA,KAEA,WAAA,OACA,iBAAA,KACA,gBAAA,YACA,QAAA,ErCKI,WAAA,UAAA,IAAA,YAIA,uCqCpBN,WrCqBQ,WAAA,MqCLR,oBPdE,SAAA,MACA,IAAA,EACA,KAAA,EACA,QAAA,KACA,MAAA,MACA,OAAA,MACA,iBAAA,KAGA,yBAAS,QAAA,EACT,yBAAS,QAAA,GOQX,kBACE,QAAA,KACA,YAAA,OACA,gBAAA,cACA,QAAA,KAAA,KAEA,6BACE,QAAA,MAAA,MACA,WAAA,OACA,aAAA,OACA,cAAA,OAIJ,iBACE,cAAA,EACA,YAAA,IAGF,gBACE,UAAA,EACA,QAAA,KAAA,KACA,WAAA,KAGF,iBACE,IAAA,EACA,KAAA,EACA,MAAA,MACA,aAAA,IAAA,MAAA,eACA,UAAA,kBAGF,eACE,IAAA,EACA,MAAA,EACA,MAAA,MACA,YAAA,IAAA,MAAA,eACA,UAAA,iBAGF,eACE,IAAA,EACA,MAAA,EACA,KAAA,EACA,OAAA,KACA,WAAA,KACA,cAAA,IAAA,MAAA,eACA,UAAA,kBAGF,kBACE,MAAA,EACA,KAAA,EACA,OAAA,KACA,WAAA,KACA,WAAA,IAAA,MAAA,eACA,UAAA,iBAGF,gBACE,UAAA,KCjFF,aACE,QAAA,aACA,WAAA,IACA,eAAA,OACA,OAAA,KACA,iBAAA,aACA,QAAA,GAEA,yBACE,QAAA,aACA,QAAA,GAKJ,gBACE,WAAA,KAGF,gBACE,WAAA,KAGF,gBACE,WAAA,MAKA,+BACE,kBAAA,iBAAA,GAAA,YAAA,SAAA,UAAA,iBAAA,GAAA,YAAA,SAIJ,oCACE,IACE,QAAA,IAFJ,4BACE,IACE,QAAA,IAIJ,kBACE,mBAAA,8DAAA,WAAA,8DACA,kBAAA,KAAA,KAAA,UAAA,KAAA,KACA,kBAAA,iBAAA,GAAA,OAAA,SAAA,UAAA,iBAAA,GAAA,OAAA,SAGF,oCACE,KACE,sBAAA,MAAA,GAAA,cAAA,MAAA,IAFJ,4BACE,KACE,sBAAA,MAAA,GAAA,cAAA,MAAA,IH9CF,iBACE,QAAA,MACA,MAAA,KACA,QAAA,GIJF,cACE,MAAA,QAGE,oBAAA,oBAEE,MAAA,QANN,gBACE,MAAA,QAGE,sBAAA,sBAEE,MAAA,QANN,cACE,MAAA,QAGE,oBAAA,oBAEE,MAAA,QANN,WACE,MAAA,QAGE,iBAAA,iBAEE,MAAA,QANN,cACE,MAAA,QAGE,oBAAA,oBAEE,MAAA,QANN,aACE,MAAA,QAGE,mBAAA,mBAEE,MAAA,QANN,YACE,MAAA,QAGE,kBAAA,kBAEE,MAAA,QANN,WACE,MAAA,QAGE,iBAAA,iBAEE,MAAA,QCLR,OACE,SAAA,SACA,MAAA,KAEA,eACE,QAAA,MACA,YAAA,uBACA,QAAA,GAGF,SACE,SAAA,SACA,IAAA,EACA,KAAA,EACA,MAAA,KACA,OAAA,KAKF,WACE,kBAAA,KADF,WACE,kBAAA,mBADF,YACE,kBAAA,oBADF,YACE,kBAAA,oBCrBJ,WACE,SAAA,MACA,IAAA,EACA,MAAA,EACA,KAAA,EACA,QAAA,KAGF,cACE,SAAA,MACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,KAQE,YACE,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,KjDqCF,yBiDxCA,eACE,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,MjDqCF,yBiDxCA,eACE,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,MjDqCF,yBiDxCA,eACE,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,MjDqCF,0BiDxCA,eACE,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,MjDqCF,0BiDxCA,gBACE,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,MCzBN,QACE,QAAA,KACA,eAAA,IACA,YAAA,OACA,WAAA,QAGF,QACE,QAAA,KACA,KAAA,EAAA,EAAA,KACA,eAAA,OACA,WAAA,QCRF,iB5Dk4MA,0D6D93ME,SAAA,mBACA,MAAA,cACA,OAAA,cACA,QAAA,YACA,OAAA,eACA,SAAA,iBACA,KAAA,wBACA,YAAA,iBACA,OAAA,YCXA,uBACE,SAAA,SACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,EACA,QAAA,GCRJ,eCAE,SAAA,OACA,cAAA,SACA,YAAA,OCNF,IACE,QAAA,aACA,WAAA,QACA,MAAA,IACA,WAAA,IACA,iBAAA,aACA,QAAA,ICyDM,gBAOI,eAAA,mBAPJ,WAOI,eAAA,cAPJ,cAOI,eAAA,iBAPJ,cAOI,eAAA,iBAPJ,mBAOI,eAAA,sBAPJ,gBAOI,eAAA,mBAPJ,aAOI,MAAA,eAPJ,WAOI,MAAA,gBAPJ,YAOI,MAAA,eAPJ,WAOI,QAAA,YAPJ,YAOI,QAAA,cAPJ,YAOI,QAAA,aAPJ,YAOI,QAAA,cAPJ,aAOI,QAAA,YAPJ,eAOI,SAAA,eAPJ,iBAOI,SAAA,iBAPJ,kBAOI,SAAA,kBAPJ,iBAOI,SAAA,iBAPJ,UAOI,QAAA,iBAPJ,gBAOI,QAAA,uBAPJ,SAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,SAOI,QAAA,gBAPJ,aAOI,QAAA,oBAPJ,cAOI,QAAA,qBAPJ,QAOI,QAAA,eAPJ,eAOI,QAAA,sBAPJ,QAOI,QAAA,eAPJ,QAOI,WAAA,EAAA,MAAA,KAAA,0BAPJ,WAOI,WAAA,EAAA,QAAA,OAAA,2BAPJ,WAOI,WAAA,EAAA,KAAA,KAAA,2BAPJ,aAOI,WAAA,eAPJ,iBAOI,SAAA,iBAPJ,mBAOI,SAAA,mBAPJ,mBAOI,SAAA,mBAPJ,gBAOI,SAAA,gBAPJ,iBAOI,SAAA,yBAAA,SAAA,iBAPJ,OAOI,IAAA,YAPJ,QAOI,IAAA,cAPJ,SAOI,IAAA,eAPJ,UAOI,OAAA,YAPJ,WAOI,OAAA,cAPJ,YAOI,OAAA,eAPJ,SAOI,KAAA,YAPJ,UAOI,KAAA,cAPJ,WAOI,KAAA,eAPJ,OAOI,MAAA,YAPJ,QAOI,MAAA,cAPJ,SAOI,MAAA,eAPJ,kBAOI,UAAA,+BAPJ,oBAOI,UAAA,2BAPJ,oBAOI,UAAA,2BAPJ,QAOI,OAAA,IAAA,MAAA,kBAPJ,UAOI,OAAA,YAPJ,YAOI,WAAA,IAAA,MAAA,kBAPJ,cAOI,WAAA,YAPJ,YAOI,aAAA,IAAA,MAAA,kBAPJ,cAOI,aAAA,YAPJ,eAOI,cAAA,IAAA,MAAA,kBAPJ,iBAOI,cAAA,YAPJ,cAOI,YAAA,IAAA,MAAA,kBAPJ,gBAOI,YAAA,YAPJ,gBAOI,aAAA,kBAPJ,kBAOI,aAAA,kBAPJ,gBAOI,aAAA,kBAPJ,aAOI,aAAA,kBAPJ,gBAOI,aAAA,kBAPJ,eAOI,aAAA,kBAPJ,cAOI,aAAA,kBAPJ,aAOI,aAAA,kBAPJ,cAOI,aAAA,eAPJ,UAOI,aAAA,cAPJ,UAOI,aAAA,cAPJ,UAOI,aAAA,cAPJ,UAOI,aAAA,cAPJ,UAOI,aAAA,cAPJ,MAOI,MAAA,cAPJ,MAOI,MAAA,cAPJ,MAOI,MAAA,cAPJ,OAOI,MAAA,eAPJ,QAOI,MAAA,eAPJ,QAOI,UAAA,eAPJ,QAOI,MAAA,gBAPJ,YAOI,UAAA,gBAPJ,MAOI,OAAA,cAPJ,MAOI,OAAA,cAPJ,MAOI,OAAA,cAPJ,OAOI,OAAA,eAPJ,QAOI,OAAA,eAPJ,QAOI,WAAA,eAPJ,QAOI,OAAA,gBAPJ,YAOI,WAAA,gBAPJ,WAOI,KAAA,EAAA,EAAA,eAPJ,UAOI,eAAA,cAPJ,aAOI,eAAA,iBAPJ,kBAOI,eAAA,sBAPJ,qBAOI,eAAA,yBAPJ,aAOI,UAAA,YAPJ,aAOI,UAAA,YAPJ,eAOI,YAAA,YAPJ,eAOI,YAAA,YAPJ,WAOI,UAAA,eAPJ,aAOI,UAAA,iBAPJ,mBAOI,UAAA,uBAPJ,OAOI,IAAA,YAPJ,OAOI,IAAA,iBAPJ,OAOI,IAAA,gBAPJ,OAOI,IAAA,eAPJ,OAOI,IAAA,iBAPJ,OAOI,IAAA,eAPJ,uBAOI,gBAAA,qBAPJ,qBAOI,gBAAA,mBAPJ,wBAOI,gBAAA,iBAPJ,yBAOI,gBAAA,wBAPJ,wBAOI,gBAAA,uBAPJ,wBAOI,gBAAA,uBAPJ,mBAOI,YAAA,qBAPJ,iBAOI,YAAA,mBAPJ,oBAOI,YAAA,iBAPJ,sBAOI,YAAA,mBAPJ,qBAOI,YAAA,kBAPJ,qBAOI,cAAA,qBAPJ,mBAOI,cAAA,mBAPJ,sBAOI,cAAA,iBAPJ,uBAOI,cAAA,wBAPJ,sBAOI,cAAA,uBAPJ,uBAOI,cAAA,kBAPJ,iBAOI,WAAA,eAPJ,kBAOI,WAAA,qBAPJ,gBAOI,WAAA,mBAPJ,mBAOI,WAAA,iBAPJ,qBAOI,WAAA,mBAPJ,oBAOI,WAAA,kBAPJ,aAOI,MAAA,aAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,SAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,KAOI,OAAA,YAPJ,KAOI,OAAA,iBAPJ,KAOI,OAAA,gBAPJ,KAOI,OAAA,eAPJ,KAOI,OAAA,iBAPJ,KAOI,OAAA,eAPJ,QAOI,OAAA,eAPJ,MAOI,aAAA,YAAA,YAAA,YAPJ,MAOI,aAAA,iBAAA,YAAA,iBAPJ,MAOI,aAAA,gBAAA,YAAA,gBAPJ,MAOI,aAAA,eAAA,YAAA,eAPJ,MAOI,aAAA,iBAAA,YAAA,iBAPJ,MAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,MAOI,WAAA,YAAA,cAAA,YAPJ,MAOI,WAAA,iBAAA,cAAA,iBAPJ,MAOI,WAAA,gBAAA,cAAA,gBAPJ,MAOI,WAAA,eAAA,cAAA,eAPJ,MAOI,WAAA,iBAAA,cAAA,iBAPJ,MAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,MAOI,WAAA,YAPJ,MAOI,WAAA,iBAPJ,MAOI,WAAA,gBAPJ,MAOI,WAAA,eAPJ,MAOI,WAAA,iBAPJ,MAOI,WAAA,eAPJ,SAOI,WAAA,eAPJ,MAOI,aAAA,YAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,gBAPJ,MAOI,aAAA,eAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,eAPJ,SAOI,aAAA,eAPJ,MAOI,cAAA,YAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,gBAPJ,MAOI,cAAA,eAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,eAPJ,SAOI,cAAA,eAPJ,MAOI,YAAA,YAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,gBAPJ,MAOI,YAAA,eAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,eAPJ,SAOI,YAAA,eAPJ,KAOI,QAAA,YAPJ,KAOI,QAAA,iBAPJ,KAOI,QAAA,gBAPJ,KAOI,QAAA,eAPJ,KAOI,QAAA,iBAPJ,KAOI,QAAA,eAPJ,MAOI,cAAA,YAAA,aAAA,YAPJ,MAOI,cAAA,iBAAA,aAAA,iBAPJ,MAOI,cAAA,gBAAA,aAAA,gBAPJ,MAOI,cAAA,eAAA,aAAA,eAPJ,MAOI,cAAA,iBAAA,aAAA,iBAPJ,MAOI,cAAA,eAAA,aAAA,eAPJ,MAOI,YAAA,YAAA,eAAA,YAPJ,MAOI,YAAA,iBAAA,eAAA,iBAPJ,MAOI,YAAA,gBAAA,eAAA,gBAPJ,MAOI,YAAA,eAAA,eAAA,eAPJ,MAOI,YAAA,iBAAA,eAAA,iBAPJ,MAOI,YAAA,eAAA,eAAA,eAPJ,MAOI,YAAA,YAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,gBAPJ,MAOI,YAAA,eAPJ,MAOI,YAAA,iBAPJ,MAOI,YAAA,eAPJ,MAOI,cAAA,YAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,gBAPJ,MAOI,cAAA,eAPJ,MAOI,cAAA,iBAPJ,MAOI,cAAA,eAPJ,MAOI,eAAA,YAPJ,MAOI,eAAA,iBAPJ,MAOI,eAAA,gBAPJ,MAOI,eAAA,eAPJ,MAOI,eAAA,iBAPJ,MAOI,eAAA,eAPJ,MAOI,aAAA,YAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,gBAPJ,MAOI,aAAA,eAPJ,MAOI,aAAA,iBAPJ,MAOI,aAAA,eAPJ,gBAOI,YAAA,mCAPJ,MAOI,UAAA,iCAPJ,MAOI,UAAA,gCAPJ,MAOI,UAAA,8BAPJ,MAOI,UAAA,gCAPJ,MAOI,UAAA,kBAPJ,MAOI,UAAA,eAPJ,YAOI,WAAA,iBAPJ,YAOI,WAAA,iBAPJ,UAOI,YAAA,cAPJ,YAOI,YAAA,kBAPJ,WAOI,YAAA,cAPJ,SAOI,YAAA,cAPJ,WAOI,YAAA,iBAPJ,MAOI,YAAA,YAPJ,OAOI,YAAA,eAPJ,SAOI,YAAA,cAPJ,OAOI,YAAA,YAPJ,YAOI,WAAA,eAPJ,UAOI,WAAA,gBAPJ,aAOI,WAAA,iBAPJ,sBAOI,gBAAA,eAPJ,2BAOI,gBAAA,oBAPJ,8BAOI,gBAAA,uBAPJ,gBAOI,eAAA,oBAPJ,gBAOI,eAAA,oBAPJ,iBAOI,eAAA,qBAPJ,WAOI,YAAA,iBAPJ,aAOI,YAAA,iBAPJ,YAOI,UAAA,qBAAA,WAAA,qBAPJ,cAIQ,kBAAA,EAGJ,MAAA,6DAPJ,gBAIQ,kBAAA,EAGJ,MAAA,+DAPJ,cAIQ,kBAAA,EAGJ,MAAA,6DAPJ,WAIQ,kBAAA,EAGJ,MAAA,0DAPJ,cAIQ,kBAAA,EAGJ,MAAA,6DAPJ,aAIQ,kBAAA,EAGJ,MAAA,4DAPJ,YAIQ,kBAAA,EAGJ,MAAA,2DAPJ,WAIQ,kBAAA,EAGJ,MAAA,0DAPJ,YAIQ,kBAAA,EAGJ,MAAA,2DAPJ,YAIQ,kBAAA,EAGJ,MAAA,2DAPJ,WAIQ,kBAAA,EAGJ,MAAA,0DAPJ,YAIQ,kBAAA,EAGJ,MAAA,kBAPJ,eAIQ,kBAAA,EAGJ,MAAA,yBAPJ,eAIQ,kBAAA,EAGJ,MAAA,+BAPJ,YAIQ,kBAAA,EAGJ,MAAA,kBAjBJ,iBACE,kBAAA,KADF,iBACE,kBAAA,IADF,iBACE,kBAAA,KADF,kBACE,kBAAA,EASF,YAIQ,gBAAA,EAGJ,iBAAA,2DAPJ,cAIQ,gBAAA,EAGJ,iBAAA,6DAPJ,YAIQ,gBAAA,EAGJ,iBAAA,2DAPJ,SAIQ,gBAAA,EAGJ,iBAAA,wDAPJ,YAIQ,gBAAA,EAGJ,iBAAA,2DAPJ,WAIQ,gBAAA,EAGJ,iBAAA,0DAPJ,UAIQ,gBAAA,EAGJ,iBAAA,yDAPJ,SAIQ,gBAAA,EAGJ,iBAAA,wDAPJ,UAIQ,gBAAA,EAGJ,iBAAA,yDAPJ,UAIQ,gBAAA,EAGJ,iBAAA,yDAPJ,SAIQ,gBAAA,EAGJ,iBAAA,wDAPJ,gBAIQ,gBAAA,EAGJ,iBAAA,sBAjBJ,eACE,gBAAA,IADF,eACE,gBAAA,KADF,eACE,gBAAA,IADF,eACE,gBAAA,KADF,gBACE,gBAAA,EASF,aAOI,iBAAA,6BAPJ,iBAOI,oBAAA,cAAA,iBAAA,cAAA,YAAA,cAPJ,kBAOI,oBAAA,eAAA,iBAAA,eAAA,YAAA,eAPJ,kBAOI,oBAAA,eAAA,iBAAA,eAAA,YAAA,eAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,eAPJ,SAOI,cAAA,iBAPJ,WAOI,cAAA,YAPJ,WAOI,cAAA,gBAPJ,WAOI,cAAA,iBAPJ,WAOI,cAAA,gBAPJ,gBAOI,cAAA,cAPJ,cAOI,cAAA,gBAPJ,aAOI,uBAAA,iBAAA,wBAAA,iBAPJ,aAOI,wBAAA,iBAAA,2BAAA,iBAPJ,gBAOI,2BAAA,iBAAA,0BAAA,iBAPJ,eAOI,0BAAA,iBAAA,uBAAA,iBAPJ,SAOI,WAAA,kBAPJ,WAOI,WAAA,iBzDPR,yByDAI,gBAOI,MAAA,eAPJ,cAOI,MAAA,gBAPJ,eAOI,MAAA,eAPJ,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,UAOI,IAAA,YAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,gBAPJ,UAOI,IAAA,eAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,eAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,eAOI,WAAA,eAPJ,aAOI,WAAA,gBAPJ,gBAOI,WAAA,kBzDPR,yByDAI,gBAOI,MAAA,eAPJ,cAOI,MAAA,gBAPJ,eAOI,MAAA,eAPJ,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,UAOI,IAAA,YAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,gBAPJ,UAOI,IAAA,eAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,eAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,eAOI,WAAA,eAPJ,aAOI,WAAA,gBAPJ,gBAOI,WAAA,kBzDPR,yByDAI,gBAOI,MAAA,eAPJ,cAOI,MAAA,gBAPJ,eAOI,MAAA,eAPJ,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,UAOI,IAAA,YAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,gBAPJ,UAOI,IAAA,eAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,eAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,eAOI,WAAA,eAPJ,aAOI,WAAA,gBAPJ,gBAOI,WAAA,kBzDPR,0ByDAI,gBAOI,MAAA,eAPJ,cAOI,MAAA,gBAPJ,eAOI,MAAA,eAPJ,aAOI,QAAA,iBAPJ,mBAOI,QAAA,uBAPJ,YAOI,QAAA,gBAPJ,WAOI,QAAA,eAPJ,YAOI,QAAA,gBAPJ,gBAOI,QAAA,oBAPJ,iBAOI,QAAA,qBAPJ,WAOI,QAAA,eAPJ,kBAOI,QAAA,sBAPJ,WAOI,QAAA,eAPJ,cAOI,KAAA,EAAA,EAAA,eAPJ,aAOI,eAAA,cAPJ,gBAOI,eAAA,iBAPJ,qBAOI,eAAA,sBAPJ,wBAOI,eAAA,yBAPJ,gBAOI,UAAA,YAPJ,gBAOI,UAAA,YAPJ,kBAOI,YAAA,YAPJ,kBAOI,YAAA,YAPJ,cAOI,UAAA,eAPJ,gBAOI,UAAA,iBAPJ,sBAOI,UAAA,uBAPJ,UAOI,IAAA,YAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,gBAPJ,UAOI,IAAA,eAPJ,UAOI,IAAA,iBAPJ,UAOI,IAAA,eAPJ,0BAOI,gBAAA,qBAPJ,wBAOI,gBAAA,mBAPJ,2BAOI,gBAAA,iBAPJ,4BAOI,gBAAA,wBAPJ,2BAOI,gBAAA,uBAPJ,2BAOI,gBAAA,uBAPJ,sBAOI,YAAA,qBAPJ,oBAOI,YAAA,mBAPJ,uBAOI,YAAA,iBAPJ,yBAOI,YAAA,mBAPJ,wBAOI,YAAA,kBAPJ,wBAOI,cAAA,qBAPJ,sBAOI,cAAA,mBAPJ,yBAOI,cAAA,iBAPJ,0BAOI,cAAA,wBAPJ,yBAOI,cAAA,uBAPJ,0BAOI,cAAA,kBAPJ,oBAOI,WAAA,eAPJ,qBAOI,WAAA,qBAPJ,mBAOI,WAAA,mBAPJ,sBAOI,WAAA,iBAPJ,wBAOI,WAAA,mBAPJ,uBAOI,WAAA,kBAPJ,gBAOI,MAAA,aAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,YAOI,MAAA,YAPJ,eAOI,MAAA,YAPJ,QAOI,OAAA,YAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,gBAPJ,QAOI,OAAA,eAPJ,QAOI,OAAA,iBAPJ,QAOI,OAAA,eAPJ,WAOI,OAAA,eAPJ,SAOI,aAAA,YAAA,YAAA,YAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,gBAAA,YAAA,gBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,aAAA,iBAAA,YAAA,iBAPJ,SAOI,aAAA,eAAA,YAAA,eAPJ,YAOI,aAAA,eAAA,YAAA,eAPJ,SAOI,WAAA,YAAA,cAAA,YAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,gBAAA,cAAA,gBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,iBAAA,cAAA,iBAPJ,SAOI,WAAA,eAAA,cAAA,eAPJ,YAOI,WAAA,eAAA,cAAA,eAPJ,SAOI,WAAA,YAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,gBAPJ,SAOI,WAAA,eAPJ,SAOI,WAAA,iBAPJ,SAOI,WAAA,eAPJ,YAOI,WAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,YAOI,aAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,YAOI,cAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,YAOI,YAAA,eAPJ,QAOI,QAAA,YAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,gBAPJ,QAOI,QAAA,eAPJ,QAOI,QAAA,iBAPJ,QAOI,QAAA,eAPJ,SAOI,cAAA,YAAA,aAAA,YAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,gBAAA,aAAA,gBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,cAAA,iBAAA,aAAA,iBAPJ,SAOI,cAAA,eAAA,aAAA,eAPJ,SAOI,YAAA,YAAA,eAAA,YAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,gBAAA,eAAA,gBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,iBAAA,eAAA,iBAPJ,SAOI,YAAA,eAAA,eAAA,eAPJ,SAOI,YAAA,YAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,gBAPJ,SAOI,YAAA,eAPJ,SAOI,YAAA,iBAPJ,SAOI,YAAA,eAPJ,SAOI,cAAA,YAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,gBAPJ,SAOI,cAAA,eAPJ,SAOI,cAAA,iBAPJ,SAOI,cAAA,eAPJ,SAOI,eAAA,YAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,gBAPJ,SAOI,eAAA,eAPJ,SAOI,eAAA,iBAPJ,SAOI,eAAA,eAPJ,SAOI,aAAA,YAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,gBAPJ,SAOI,aAAA,eAPJ,SAOI,aAAA,iBAPJ,SAOI,aAAA,eAPJ,eAOI,WAAA,eAPJ,aAOI,WAAA,gBAPJ,gBAOI,WAAA,kBzDPR,0ByDAI,iBAOI,MAAA,eAPJ,eAOI,MAAA,gBAPJ,gBAOI,MAAA,eAPJ,cAOI,QAAA,iBAPJ,oBAOI,QAAA,uBAPJ,aAOI,QAAA,gBAPJ,YAOI,QAAA,eAPJ,aAOI,QAAA,gBAPJ,iBAOI,QAAA,oBAPJ,kBAOI,QAAA,qBAPJ,YAOI,QAAA,eAPJ,mBAOI,QAAA,sBAPJ,YAOI,QAAA,eAPJ,eAOI,KAAA,EAAA,EAAA,eAPJ,cAOI,eAAA,cAPJ,iBAOI,eAAA,iBAPJ,sBAOI,eAAA,sBAPJ,yBAOI,eAAA,yBAPJ,iBAOI,UAAA,YAPJ,iBAOI,UAAA,YAPJ,mBAOI,YAAA,YAPJ,mBAOI,YAAA,YAPJ,eAOI,UAAA,eAPJ,iBAOI,UAAA,iBAPJ,uBAOI,UAAA,uBAPJ,WAOI,IAAA,YAPJ,WAOI,IAAA,iBAPJ,WAOI,IAAA,gBAPJ,WAOI,IAAA,eAPJ,WAOI,IAAA,iBAPJ,WAOI,IAAA,eAPJ,2BAOI,gBAAA,qBAPJ,yBAOI,gBAAA,mBAPJ,4BAOI,gBAAA,iBAPJ,6BAOI,gBAAA,wBAPJ,4BAOI,gBAAA,uBAPJ,4BAOI,gBAAA,uBAPJ,uBAOI,YAAA,qBAPJ,qBAOI,YAAA,mBAPJ,wBAOI,YAAA,iBAPJ,0BAOI,YAAA,mBAPJ,yBAOI,YAAA,kBAPJ,yBAOI,cAAA,qBAPJ,uBAOI,cAAA,mBAPJ,0BAOI,cAAA,iBAPJ,2BAOI,cAAA,wBAPJ,0BAOI,cAAA,uBAPJ,2BAOI,cAAA,kBAPJ,qBAOI,WAAA,eAPJ,sBAOI,WAAA,qBAPJ,oBAOI,WAAA,mBAPJ,uBAOI,WAAA,iBAPJ,yBAOI,WAAA,mBAPJ,wBAOI,WAAA,kBAPJ,iBAOI,MAAA,aAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,aAOI,MAAA,YAPJ,gBAOI,MAAA,YAPJ,SAOI,OAAA,YAPJ,SAOI,OAAA,iBAPJ,SAOI,OAAA,gBAPJ,SAOI,OAAA,eAPJ,SAOI,OAAA,iBAPJ,SAOI,OAAA,eAPJ,YAOI,OAAA,eAPJ,UAOI,aAAA,YAAA,YAAA,YAPJ,UAOI,aAAA,iBAAA,YAAA,iBAPJ,UAOI,aAAA,gBAAA,YAAA,gBAPJ,UAOI,aAAA,eAAA,YAAA,eAPJ,UAOI,aAAA,iBAAA,YAAA,iBAPJ,UAOI,aAAA,eAAA,YAAA,eAPJ,aAOI,aAAA,eAAA,YAAA,eAPJ,UAOI,WAAA,YAAA,cAAA,YAPJ,UAOI,WAAA,iBAAA,cAAA,iBAPJ,UAOI,WAAA,gBAAA,cAAA,gBAPJ,UAOI,WAAA,eAAA,cAAA,eAPJ,UAOI,WAAA,iBAAA,cAAA,iBAPJ,UAOI,WAAA,eAAA,cAAA,eAPJ,aAOI,WAAA,eAAA,cAAA,eAPJ,UAOI,WAAA,YAPJ,UAOI,WAAA,iBAPJ,UAOI,WAAA,gBAPJ,UAOI,WAAA,eAPJ,UAOI,WAAA,iBAPJ,UAOI,WAAA,eAPJ,aAOI,WAAA,eAPJ,UAOI,aAAA,YAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBAPJ,UAOI,aAAA,eAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,eAPJ,aAOI,aAAA,eAPJ,UAOI,cAAA,YAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBAPJ,UAOI,cAAA,eAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,eAPJ,aAOI,cAAA,eAPJ,UAOI,YAAA,YAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,gBAPJ,UAOI,YAAA,eAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,eAPJ,aAOI,YAAA,eAPJ,SAOI,QAAA,YAPJ,SAOI,QAAA,iBAPJ,SAOI,QAAA,gBAPJ,SAOI,QAAA,eAPJ,SAOI,QAAA,iBAPJ,SAOI,QAAA,eAPJ,UAOI,cAAA,YAAA,aAAA,YAPJ,UAOI,cAAA,iBAAA,aAAA,iBAPJ,UAOI,cAAA,gBAAA,aAAA,gBAPJ,UAOI,cAAA,eAAA,aAAA,eAPJ,UAOI,cAAA,iBAAA,aAAA,iBAPJ,UAOI,cAAA,eAAA,aAAA,eAPJ,UAOI,YAAA,YAAA,eAAA,YAPJ,UAOI,YAAA,iBAAA,eAAA,iBAPJ,UAOI,YAAA,gBAAA,eAAA,gBAPJ,UAOI,YAAA,eAAA,eAAA,eAPJ,UAOI,YAAA,iBAAA,eAAA,iBAPJ,UAOI,YAAA,eAAA,eAAA,eAPJ,UAOI,YAAA,YAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,gBAPJ,UAOI,YAAA,eAPJ,UAOI,YAAA,iBAPJ,UAOI,YAAA,eAPJ,UAOI,cAAA,YAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,gBAPJ,UAOI,cAAA,eAPJ,UAOI,cAAA,iBAPJ,UAOI,cAAA,eAPJ,UAOI,eAAA,YAPJ,UAOI,eAAA,iBAPJ,UAOI,eAAA,gBAPJ,UAOI,eAAA,eAPJ,UAOI,eAAA,iBAPJ,UAOI,eAAA,eAPJ,UAOI,aAAA,YAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,gBAPJ,UAOI,aAAA,eAPJ,UAOI,aAAA,iBAPJ,UAOI,aAAA,eAPJ,gBAOI,WAAA,eAPJ,cAOI,WAAA,gBAPJ,iBAOI,WAAA,kBCnDZ,0BD4CQ,MAOI,UAAA,iBAPJ,MAOI,UAAA,eAPJ,MAOI,UAAA,kBAPJ,MAOI,UAAA,kBChCZ,aDyBQ,gBAOI,QAAA,iBAPJ,sBAOI,QAAA,uBAPJ,eAOI,QAAA,gBAPJ,cAOI,QAAA,eAPJ,eAOI,QAAA,gBAPJ,mBAOI,QAAA,oBAPJ,oBAOI,QAAA,qBAPJ,cAOI,QAAA,eAPJ,qBAOI,QAAA,sBAPJ,cAOI,QAAA","sourcesContent":["/*!\n * Bootstrap v5.1.0 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// scss-docs-start import-stack\n// Configuration\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"utilities\";\n\n// Layout & components\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"containers\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"accordion\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"alert\";\n@import \"progress\";\n@import \"list-group\";\n@import \"close\";\n@import \"toasts\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"spinners\";\n@import \"offcanvas\";\n@import \"placeholders\";\n\n// Helpers\n@import \"helpers\";\n\n// Utilities\n@import \"utilities/api\";\n// scss-docs-end import-stack\n",":root {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$variable-prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$variable-prefix}#{$color}-rgb: #{$value};\n }\n\n --#{$variable-prefix}white-rgb: #{to-rgb($white)};\n --#{$variable-prefix}black-rgb: #{to-rgb($black)};\n --#{$variable-prefix}body-rgb: #{to-rgb($body-color)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$variable-prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$variable-prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$variable-prefix}gradient: #{$gradient};\n\n // Root and body\n // stylelint-disable custom-property-empty-line-before\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$variable-prefix}root-font-size: #{$font-size-root};\n }\n --#{$variable-prefix}body-font-family: #{$font-family-base};\n --#{$variable-prefix}body-font-size: #{$font-size-base};\n --#{$variable-prefix}body-font-weight: #{$font-weight-base};\n --#{$variable-prefix}body-line-height: #{$line-height-base};\n --#{$variable-prefix}body-color: #{$body-color};\n @if $body-text-align != null {\n --#{$variable-prefix}body-text-align: #{$body-text-align};\n }\n --#{$variable-prefix}body-bg: #{$body-bg};\n // scss-docs-end root-body-variables\n // stylelint-enable custom-property-empty-line-before\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n font-size: var(--#{$variable-prefix}-root-font-size);\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$variable-prefix}body-font-family);\n @include font-size(var(--#{$variable-prefix}body-font-size));\n font-weight: var(--#{$variable-prefix}body-font-weight);\n line-height: var(--#{$variable-prefix}body-line-height);\n color: var(--#{$variable-prefix}body-color);\n text-align: var(--#{$variable-prefix}body-text-align);\n background-color: var(--#{$variable-prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n background-color: currentColor;\n border: 0;\n opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

      `-`

      ` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

      `s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n\n &:hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n direction: ltr #{\"/* rtl:ignore */\"};\n unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},a.fn.magnificPopup=function(c){A();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=u?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),u?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var C,D,E,F="inline",G=function(){E&&(D.after(E.addClass(C)).detach(),E=null)};a.magnificPopup.registerModule(F,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(F),w(h+"."+F,function(){G()})},getInline:function(c,d){if(G(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(D||(C=e.hiddenClass,D=x(C),C="mfp-"+C),E=f.after(D).detach().removeClass(C)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("

      ");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var H,I="ajax",J=function(){H&&a(document.body).removeClass(H)},K=function(){J(),b.req&&b.req.abort()};a.magnificPopup.registerModule(I,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'The content could not be loaded.'},proto:{initAjax:function(){b.types.push(I),H=b.st.ajax.cursor,w(h+"."+I,K),w("BeforeChange."+I,K)},getAjax:function(c){H&&a(document.body).addClass(H),b.updateStatus("loading");var d=a.extend({url:c.src,success:function(d,e,f){var g={data:d,xhr:f};y("ParseAjax",g),b.appendContent(a(g.data),I),c.finished=!0,J(),b._setFocus(),setTimeout(function(){b.wrap.addClass(q)},16),b.updateStatus("ready"),y("AjaxContentAdded")},error:function(){J(),c.finished=c.loadError=!0,b.updateStatus("error",b.st.ajax.tError.replace("%url%",c.src))}},b.st.ajax.settings);return b.req=a.ajax(d),""}}});var L,M=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'
      ',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'The image could not be loaded.'},proto:{initImage:function(){var c=b.st.image,d=".image";b.types.push("image"),w(m+d,function(){"image"===b.currItem.type&&c.cursor&&a(document.body).addClass(c.cursor)}),w(h+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),v.off("resize"+p)}),w("Resize"+d,b.resizeImage),b.isLowIE&&w("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,L&&clearInterval(L),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){L&&clearInterval(L),L=setInterval(function(){return d.naturalWidth>0?void b._onImageHasSize(a):(c>200&&clearInterval(L),c++,void(3===c?e(10):40===c?e(50):100===c&&e(500)))},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,y("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.el&&c.el.find("img").length&&(j.alt=c.el.find("img").attr("alt")),c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:M(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(L&&clearInterval(L),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var N,O=function(){return void 0===N&&(N=void 0!==document.createElement("p").style.MozTransform),N};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,j=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};w("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return void k();f=j(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,y("ZoomAnimationEnded")},16)},g)},16)}}),w(i+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=j(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),w(h+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(u?d.innerHeight():d[0].offsetHeight)-g-f};return O()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var P="iframe",Q="//about:blank",R=function(a){if(b.currTemplate[P]){var c=b.currTemplate[P].find("iframe");c.length&&(a||(c[0].src=Q),b.isIE8&&c.css("display",a?"block":"none"))}};a.magnificPopup.registerModule(P,{options:{markup:'
      ',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){b.types.push(P),w("BeforeChange",function(a,b,c){b!==c&&(b===P?R():c===P&&R(!0))}),w(h+"."+P,function(){R()})},getIframe:function(c,d){var e=c.src,f=b.st.iframe;a.each(f.patterns,function(){return e.indexOf(this.index)>-1?(this.id&&(e="string"==typeof this.id?e.substr(e.lastIndexOf(this.id)+this.id.length,e.length):this.id.call(this,e)),e=this.src.replace("%id%",e),!1):void 0});var g={};return f.srcAction&&(g[f.srcAction]=e),b._parseMarkup(d,g,c),b.updateStatus("ready"),d}}});var S=function(a){var c=b.items.length;return a>c-1?a-c:0>a?c+a:a},T=function(a,b,c){return a.replace(/%curr%/gi,b+1).replace(/%total%/gi,c)};a.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var c=b.st.gallery,e=".mfp-gallery";return b.direction=!0,c&&c.enabled?(f+=" mfp-gallery",w(m+e,function(){c.navigateByImgClick&&b.wrap.on("click"+e,".mfp-img",function(){return b.items.length>1?(b.next(),!1):void 0}),d.on("keydown"+e,function(a){37===a.keyCode?b.prev():39===a.keyCode&&b.next()})}),w("UpdateStatus"+e,function(a,c){c.text&&(c.text=T(c.text,b.currItem.index,b.items.length))}),w(l+e,function(a,d,e,f){var g=b.items.length;e.counter=g>1?T(c.tCounter,f.index,g):""}),w("BuildControls"+e,function(){if(b.items.length>1&&c.arrows&&!b.arrowLeft){var d=c.arrowMarkup,e=b.arrowLeft=a(d.replace(/%title%/gi,c.tPrev).replace(/%dir%/gi,"left")).addClass(s),f=b.arrowRight=a(d.replace(/%title%/gi,c.tNext).replace(/%dir%/gi,"right")).addClass(s);e.click(function(){b.prev()}),f.click(function(){b.next()}),b.container.append(e.add(f))}}),w(n+e,function(){b._preloadTimeout&&clearTimeout(b._preloadTimeout),b._preloadTimeout=setTimeout(function(){b.preloadNearbyImages(),b._preloadTimeout=null},16)}),void w(h+e,function(){d.off(e),b.wrap.off("click"+e),b.arrowRight=b.arrowLeft=null})):!1},next:function(){b.direction=!0,b.index=S(b.index+1),b.updateItemHTML()},prev:function(){b.direction=!1,b.index=S(b.index-1),b.updateItemHTML()},goTo:function(a){b.direction=a>=b.index,b.index=a,b.updateItemHTML()},preloadNearbyImages:function(){var a,c=b.st.gallery.preload,d=Math.min(c[0],b.items.length),e=Math.min(c[1],b.items.length);for(a=1;a<=(b.direction?e:d);a++)b._preloadItem(b.index+a);for(a=1;a<=(b.direction?d:e);a++)b._preloadItem(b.index-a)},_preloadItem:function(c){if(c=S(c),!b.items[c].preloaded){var d=b.items[c];d.parsed||(d=b.parseEl(c)),y("LazyLoad",d),"image"===d.type&&(d.img=a('').on("load.mfploader",function(){d.hasSize=!0}).on("error.mfploader",function(){d.hasSize=!0,d.loadError=!0,y("LazyLoadError",d)}).attr("src",d.src)),d.preloaded=!0}}}});var U="retina";a.magnificPopup.registerModule(U,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(w("ImageHasSize."+U,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),w("ElementParse."+U,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),A()}); + +/* +WOW +Version: 1.3.0 - 2016-10-04 +Plugin URI: https://wowjs.uk +License: Copyright (c) 2016 Thomas Grainger; | Released under the MIT License +*/ +(function(){var t,e,n,i,o,r=function(t,e){return function(){return t.apply(e,arguments)}},s=[].indexOf||function(t){for(var e=0,n=this.length;n>e;e++)if(e in this&&this[e]===t)return e;return-1};e=function(){function t(){}return t.prototype.extend=function(t,e){var n,i;for(n in e)i=e[n],null==t[n]&&(t[n]=i);return t},t.prototype.isMobile=function(t){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(t)},t.prototype.createEvent=function(t,e,n,i){var o;return null==e&&(e=!1),null==n&&(n=!1),null==i&&(i=null),null!=document.createEvent?(o=document.createEvent("CustomEvent")).initCustomEvent(t,e,n,i):null!=document.createEventObject?(o=document.createEventObject()).eventType=t:o.eventName=t,o},t.prototype.emitEvent=function(t,e){return null!=t.dispatchEvent?t.dispatchEvent(e):e in(null!=t)?t[e]():"on"+e in(null!=t)?t["on"+e]():void 0},t.prototype.addEvent=function(t,e,n){return null!=t.addEventListener?t.addEventListener(e,n,!1):null!=t.attachEvent?t.attachEvent("on"+e,n):t[e]=n},t.prototype.removeEvent=function(t,e,n){return null!=t.removeEventListener?t.removeEventListener(e,n,!1):null!=t.detachEvent?t.detachEvent("on"+e,n):delete t[e]},t.prototype.innerHeight=function(){return"innerHeight"in window?window.innerHeight:document.documentElement.clientHeight},t}(),n=this.WeakMap||this.MozWeakMap||(n=function(){function t(){this.keys=[],this.values=[]}return t.prototype.get=function(t){var e,n,i,o;for(e=n=0,i=(o=this.keys).length;i>n;e=++n)if(o[e]===t)return this.values[e]},t.prototype.set=function(t,e){var n,i,o,r;for(n=i=0,o=(r=this.keys).length;o>i;n=++i)if(r[n]===t)return void(this.values[n]=e);return this.keys.push(t),this.values.push(e)},t}()),t=this.MutationObserver||this.WebkitMutationObserver||this.MozMutationObserver||(t=function(){function t(){"undefined"!=typeof console&&null!==console&&console.warn("MutationObserver is not supported by your browser."),"undefined"!=typeof console&&null!==console&&console.warn("WOW.js cannot detect dom mutations, please call .sync() after loading new content.")}return t.notSupported=!0,t.prototype.observe=function(){},t}()),i=this.getComputedStyle||function(t,e){return this.getPropertyValue=function(e){var n;return"float"===e&&(e="styleFloat"),o.test(e)&&e.replace(o,function(t,e){return e.toUpperCase()}),(null!=(n=t.currentStyle)?n[e]:void 0)||null},this},o=/(\-([a-z]){1})/g,this.WOW=function(){function o(t){null==t&&(t={}),this.scrollCallback=r(this.scrollCallback,this),this.scrollHandler=r(this.scrollHandler,this),this.resetAnimation=r(this.resetAnimation,this),this.start=r(this.start,this),this.scrolled=!0,this.config=this.util().extend(t,this.defaults),null!=t.scrollContainer&&(this.config.scrollContainer=document.querySelector(t.scrollContainer)),this.animationNameCache=new n,this.wowEvent=this.util().createEvent(this.config.boxClass)}return o.prototype.defaults={boxClass:"wow",animateClass:"animated",offset:0,mobile:!0,live:!0,callback:null,scrollContainer:null},o.prototype.init=function(){var t;return this.element=window.document.documentElement,"interactive"===(t=document.readyState)||"complete"===t?this.start():this.util().addEvent(document,"DOMContentLoaded",this.start),this.finished=[]},o.prototype.start=function(){var e,n,i,o;if(this.stopped=!1,this.boxes=function(){var t,n,i,o;for(o=[],t=0,n=(i=this.element.querySelectorAll("."+this.config.boxClass)).length;n>t;t++)e=i[t],o.push(e);return o}.call(this),this.all=function(){var t,n,i,o;for(o=[],t=0,n=(i=this.boxes).length;n>t;t++)e=i[t],o.push(e);return o}.call(this),this.boxes.length)if(this.disabled())this.resetStyle();else for(n=0,i=(o=this.boxes).length;i>n;n++)e=o[n],this.applyStyle(e,!0);return this.disabled()||(this.util().addEvent(this.config.scrollContainer||window,"scroll",this.scrollHandler),this.util().addEvent(window,"resize",this.scrollHandler),this.interval=setInterval(this.scrollCallback,50)),this.config.live?new t(function(t){return function(e){var n,i,o,r,s;for(s=[],n=0,i=e.length;i>n;n++)r=e[n],s.push(function(){var t,e,n,i;for(i=[],t=0,e=(n=r.addedNodes||[]).length;e>t;t++)o=n[t],i.push(this.doSync(o));return i}.call(t));return s}}(this)).observe(document.body,{childList:!0,subtree:!0}):void 0},o.prototype.stop=function(){return this.stopped=!0,this.util().removeEvent(this.config.scrollContainer||window,"scroll",this.scrollHandler),this.util().removeEvent(window,"resize",this.scrollHandler),null!=this.interval?clearInterval(this.interval):void 0},o.prototype.sync=function(e){return t.notSupported?this.doSync(this.element):void 0},o.prototype.doSync=function(t){var e,n,i,o,r;if(null==t&&(t=this.element),1===t.nodeType){for(r=[],n=0,i=(o=(t=t.parentNode||t).querySelectorAll("."+this.config.boxClass)).length;i>n;n++)e=o[n],s.call(this.all,e)<0?(this.boxes.push(e),this.all.push(e),this.stopped||this.disabled()?this.resetStyle():this.applyStyle(e,!0),r.push(this.scrolled=!0)):r.push(void 0);return r}},o.prototype.show=function(t){return this.applyStyle(t),t.className=t.className+" "+this.config.animateClass,null!=this.config.callback&&this.config.callback(t),this.util().emitEvent(t,this.wowEvent),this.util().addEvent(t,"animationend",this.resetAnimation),this.util().addEvent(t,"oanimationend",this.resetAnimation),this.util().addEvent(t,"webkitAnimationEnd",this.resetAnimation),this.util().addEvent(t,"MSAnimationEnd",this.resetAnimation),t},o.prototype.applyStyle=function(t,e){var n,i,o,r;return i=t.getAttribute("data-wow-duration"),n=t.getAttribute("data-wow-delay"),o=t.getAttribute("data-wow-iteration"),this.animate((r=this,function(){return r.customStyle(t,e,i,n,o)}))},o.prototype.animate="requestAnimationFrame"in window?function(t){return window.requestAnimationFrame(t)}:function(t){return t()},o.prototype.resetStyle=function(){var t,e,n,i,o;for(o=[],e=0,n=(i=this.boxes).length;n>e;e++)t=i[e],o.push(t.style.visibility="visible");return o},o.prototype.resetAnimation=function(t){var e;return t.type.toLowerCase().indexOf("animationend")>=0?(e=t.target||t.srcElement).className=e.className.replace(this.config.animateClass,"").trim():void 0},o.prototype.customStyle=function(t,e,n,i,o){return e&&this.cacheAnimationName(t),t.style.visibility=e?"hidden":"visible",n&&this.vendorSet(t.style,{animationDuration:n}),i&&this.vendorSet(t.style,{animationDelay:i}),o&&this.vendorSet(t.style,{animationIterationCount:o}),this.vendorSet(t.style,{animationName:e?"none":this.cachedAnimationName(t)}),t},o.prototype.vendors=["moz","webkit"],o.prototype.vendorSet=function(t,e){var n,i,o,r;for(n in i=[],e)o=e[n],t[""+n]=o,i.push(function(){var e,i,s,l;for(l=[],e=0,i=(s=this.vendors).length;i>e;e++)r=s[e],l.push(t[""+r+n.charAt(0).toUpperCase()+n.substr(1)]=o);return l}.call(this));return i},o.prototype.vendorCSS=function(t,e){var n,o,r,s,l,a;for(s=(l=i(t)).getPropertyCSSValue(e),n=0,o=(r=this.vendors).length;o>n;n++)a=r[n],s=s||l.getPropertyCSSValue("-"+a+"-"+e);return s},o.prototype.animationName=function(t){var e;try{e=this.vendorCSS(t,"animation-name").cssText}catch(n){e=i(t).getPropertyValue("animation-name")}return"none"===e?"":e},o.prototype.cacheAnimationName=function(t){return this.animationNameCache.set(t,this.animationName(t))},o.prototype.cachedAnimationName=function(t){return this.animationNameCache.get(t)},o.prototype.scrollHandler=function(){return this.scrolled=!0},o.prototype.scrollCallback=function(){var t;return!this.scrolled||(this.scrolled=!1,this.boxes=function(){var e,n,i,o;for(o=[],e=0,n=(i=this.boxes).length;n>e;e++)(t=i[e])&&(this.isVisible(t)?this.show(t):o.push(t));return o}.call(this),this.boxes.length||this.config.live)?void 0:this.stop()},o.prototype.offsetTop=function(t){for(var e;void 0===t.offsetTop;)t=t.parentNode;for(e=t.offsetTop;t=t.offsetParent;)e+=t.offsetTop;return e},o.prototype.isVisible=function(t){var e,n,i,o,r;return n=t.getAttribute("data-wow-offset")||this.config.offset,o=(r=this.config.scrollContainer&&this.config.scrollContainer.scrollTop||window.pageYOffset)+Math.min(this.element.clientHeight,this.util().innerHeight())-n,e=(i=this.offsetTop(t))+t.clientHeight,o>=i&&e>=r},o.prototype.util=function(){return null!=this._util?this._util:this._util=new e},o.prototype.disabled=function(){return!this.config.mobile&&this.util().isMobile(navigator.userAgent)},o.prototype.removeBox=function(t){var e=this.boxes.indexOf(t);e>-1&&this.boxes.splice(e,1)},o}()}).call(this); + +/* +Isotope +Version: 3.0.6 +Plugin URI: https://isotope.metafizzy.co +License: Copyright 2010-2018 Metafizzy | Licensed GPLv3 for open source use or Isotope Commercial License for commercial use +*/ +!function(t,e){"function"==typeof define&&define.amd?define("jquery-bridget/jquery-bridget",["jquery"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("jquery")):t.jQueryBridget=e(t,t.jQuery)}(window,function(t,e){"use strict";function i(i,s,a){function u(t,e,o){var n,s="$()."+i+'("'+e+'")';return t.each(function(t,u){var h=a.data(u,i);if(!h)return void r(i+" not initialized. Cannot call methods, i.e. "+s);var d=h[e];if(!d||"_"==e.charAt(0))return void r(s+" is not a valid method");var l=d.apply(h,o);n=void 0===n?l:n}),void 0!==n?n:t}function h(t,e){t.each(function(t,o){var n=a.data(o,i);n?(n.option(e),n._init()):(n=new s(o,e),a.data(o,i,n))})}a=a||e||t.jQuery,a&&(s.prototype.option||(s.prototype.option=function(t){a.isPlainObject(t)&&(this.options=a.extend(!0,this.options,t))}),a.fn[i]=function(t){if("string"==typeof t){var e=n.call(arguments,1);return u(this,t,e)}return h(this,t),this},o(a))}function o(t){!t||t&&t.bridget||(t.bridget=i)}var n=Array.prototype.slice,s=t.console,r="undefined"==typeof s?function(){}:function(t){s.error(t)};return o(e||t.jQuery),i}),function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},o=i[t]=i[t]||[];return o.indexOf(e)==-1&&o.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{},o=i[t]=i[t]||{};return o[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var o=i.indexOf(e);return o!=-1&&i.splice(o,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){i=i.slice(0),e=e||[];for(var o=this._onceEvents&&this._onceEvents[t],n=0;n
      '),intervalId:null},this.scrollBarOn=!1,this.checkWidthIntervalId=null,this.galleryWidth=t.width(),this.$gallery=t};r.prototype.getSuffix=function(t,i){var e,s;for(e=i .jg-caption");return 0===i.length?null:i},r.prototype.displayEntry=function(t,i,e,s,n,r){t.width(s),t.height(r),t.css("top",e),t.css("left",i);var o=this.imgFromEntry(t);if(null!==o){o.css("width",s),o.css("height",n),o.css("margin-left",-s/2),o.css("margin-top",-n/2);var a=o.data("jg.src");if(a){a=this.newSrc(a,s,n,o[0]),o.one("error",function(){this.resetImgSrc(o)});var h=function(){o.attr("src",a)};"skipped"===t.data("jg.loaded")&&a?this.onImageEvent(a,function(){this.showImg(t,h),t.data("jg.loaded",!0)}.bind(this)):this.showImg(t,h)}}else this.showImg(t);this.displayEntryCaption(t)},r.prototype.displayEntryCaption=function(t){var i=this.imgFromEntry(t);if(null!==i&&this.settings.captions){var e=this.captionFromEntry(t);if(null===e){var s=i.attr("alt");this.isValidCaption(s)||(s=t.attr("title")),this.isValidCaption(s)&&(e=l('
      '+s+"
      "),t.append(e),t.data("jg.createdCaption",!0))}null!==e&&(this.settings.cssAnimation||e.stop().fadeTo(0,this.settings.captionSettings.nonVisibleOpacity),this.addCaptionEventsHandlers(t))}else this.removeCaptionEventsHandlers(t)},r.prototype.isValidCaption=function(t){return void 0!==t&&0this.settings.justifyThreshold;if(i||t&&"hide"===this.settings.lastRow&&!d){for(e=0;e img, > a > img").fadeTo(0,0));return-1}for(t&&!d&&"justify"!==this.settings.lastRow&&"hide"!==this.settings.lastRow&&(a=!1,0this.settings.justifyThreshold)),e=0;ethis.settings.refreshSensitivity&&(this.galleryWidth=t,this.rewind(),this.rememberGalleryHeight(),this.startImgAnalyzer(!0))}},this),this.settings.refreshTime)},r.prototype.isSpinnerActive=function(){return null!==this.spinner.intervalId},r.prototype.getSpinnerHeight=function(){return this.spinner.$el.innerHeight()},r.prototype.stopLoadingSpinnerAnimation=function(){clearInterval(this.spinner.intervalId),this.spinner.intervalId=null,this.setGalleryTempHeight(this.$gallery.height()-this.getSpinnerHeight()),this.spinner.$el.detach()},r.prototype.startLoadingSpinnerAnimation=function(){var t=this.spinner,i=t.$el.find("span");clearInterval(t.intervalId),this.$gallery.append(t.$el),this.setGalleryTempHeight(this.offY+this.buildingRow.height+this.getSpinnerHeight()),t.intervalId=setInterval(function(){t.phase=this.yield.every))return void this.startImgAnalyzer(t)}else if("error"!==e.data("jg.loaded"))return}0 img, > a > img, > svg, > a > svg",triggerEvent:function(t){this.$gallery.trigger(t)}},l.fn.justifiedGallery=function(n){return this.each(function(t,i){var e=l(i);e.addClass("justified-gallery");var s=e.data("jg.controller");if(void 0===s){if(null!=n&&"object"!==l.type(n)){if("destroy"===n)return;throw"The argument must be an object"}s=new r(e,l.extend({},r.prototype.defaults,n)),e.data("jg.controller",s)}else if("norewind"===n);else{if("destroy"===n)return void s.destroy();s.updateSettings(n),s.rewind()}s.updateEntries("norewind"===n)&&s.init()})}}); + +/* +Easy pie chart +Version: 2.1.7 +Plugin URI: https://rendro.github.io/easy-pie-chart/ +License: Robert Fleischmann (http://robert-fleischmann.de) +*/ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){var b=function(a,b){var c,d=document.createElement("canvas");a.appendChild(d),"object"==typeof G_vmlCanvasManager&&G_vmlCanvasManager.initElement(d);var e=d.getContext("2d");d.width=d.height=b.size;var f=1;window.devicePixelRatio>1&&(f=window.devicePixelRatio,d.style.width=d.style.height=[b.size,"px"].join(""),d.width=d.height=b.size*f,e.scale(f,f)),e.translate(b.size/2,b.size/2),e.rotate((-0.5+b.rotate/180)*Math.PI);var g=(b.size-b.lineWidth)/2;b.scaleColor&&b.scaleLength&&(g-=b.scaleLength+2),Date.now=Date.now||function(){return+new Date};var h=function(a,b,c){c=Math.min(Math.max(-1,c||0),1);var d=0>=c?!0:!1;e.beginPath(),e.arc(0,0,g,0,2*Math.PI*c,d),e.strokeStyle=a,e.lineWidth=b,e.stroke()},i=function(){var a,c;e.lineWidth=1,e.fillStyle=b.scaleColor,e.save();for(var d=24;d>0;--d)d%6===0?(c=b.scaleLength,a=0):(c=.6*b.scaleLength,a=b.scaleLength-c),e.fillRect(-b.size/2+a,0,c,1),e.rotate(Math.PI/12);e.restore()},j=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||function(a){window.setTimeout(a,1e3/60)}}(),k=function(){b.scaleColor&&i(),b.trackColor&&h(b.trackColor,b.trackWidth||b.lineWidth,1)};this.getCanvas=function(){return d},this.getCtx=function(){return e},this.clear=function(){e.clearRect(b.size/-2,b.size/-2,b.size,b.size)},this.draw=function(a){b.scaleColor||b.trackColor?e.getImageData&&e.putImageData?c?e.putImageData(c,0,0):(k(),c=e.getImageData(0,0,b.size*f,b.size*f)):(this.clear(),k()):this.clear(),e.lineCap=b.lineCap;var d;d="function"==typeof b.barColor?b.barColor(a):b.barColor,h(d,b.lineWidth,a/100)}.bind(this),this.animate=function(a,c){var d=Date.now();b.onStart(a,c);var e=function(){var f=Math.min(Date.now()-d,b.animate.duration),g=b.easing(this,f,a,c-a,b.animate.duration);this.draw(g),b.onStep(a,c,g),f>=b.animate.duration?b.onStop(a,c):j(e)}.bind(this);j(e)}.bind(this)},c=function(a,c){var d={barColor:"#ef1e25",trackColor:"#f9f9f9",scaleColor:"#dfe0e0",scaleLength:5,lineCap:"round",lineWidth:3,trackWidth:void 0,size:110,rotate:0,animate:{duration:1e3,enabled:!0},easing:function(a,b,c,d,e){return b/=e/2,1>b?d/2*b*b+c:-d/2*(--b*(b-2)-1)+c},onStart:function(a,b){},onStep:function(a,b,c){},onStop:function(a,b){}};if("undefined"!=typeof b)d.renderer=b;else{if("undefined"==typeof SVGRenderer)throw new Error("Please load either the SVG- or the CanvasRenderer");d.renderer=SVGRenderer}var e={},f=0,g=function(){this.el=a,this.options=e;for(var b in d)d.hasOwnProperty(b)&&(e[b]=c&&"undefined"!=typeof c[b]?c[b]:d[b],"function"==typeof e[b]&&(e[b]=e[b].bind(this)));"string"==typeof e.easing&&"undefined"!=typeof jQuery&&jQuery.isFunction(jQuery.easing[e.easing])?e.easing=jQuery.easing[e.easing]:e.easing=d.easing,"number"==typeof e.animate&&(e.animate={duration:e.animate,enabled:!0}),"boolean"!=typeof e.animate||e.animate||(e.animate={duration:1e3,enabled:e.animate}),this.renderer=new e.renderer(a,e),this.renderer.draw(f),a.dataset&&a.dataset.percent?this.update(parseFloat(a.dataset.percent)):a.getAttribute&&a.getAttribute("data-percent")&&this.update(parseFloat(a.getAttribute("data-percent")))}.bind(this);this.update=function(a){return a=parseFloat(a),e.animate.enabled?this.renderer.animate(f,a):this.renderer.draw(a),f=a,this}.bind(this),this.disableAnimation=function(){return e.animate.enabled=!1,this},this.enableAnimation=function(){return e.animate.enabled=!0,this},g()};a.fn.easyPieChart=function(b){return this.each(function(){var d;a.data(this,"easyPieChart")||(d=a.extend({},b,a(this).data()),a.data(this,"easyPieChart",new c(this,d)))})}}); + +/* +Countdown +Version: 2.2.0 +Plugin URI: http://hilios.github.io/jQuery.countdown/ +License: Copyright (c) 2016 Edson Hilios +*/ +!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){"use strict";function b(a){if(a instanceof Date)return a;if(String(a).match(g))return String(a).match(/^[0-9]*$/)&&(a=Number(a)),String(a).match(/\-/)&&(a=String(a).replace(/\-/g,"/")),new Date(a);throw new Error("Couldn't cast `"+a+"` to a date object.")}function c(a){var b=a.toString().replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1");return new RegExp(b)}function d(a){return function(b){var d=b.match(/%(-|!)?[A-Z]{1}(:[^;]+;)?/gi);if(d)for(var f=0,g=d.length;f1?c:d}var f=[],g=[],h={precision:100,elapse:!1,defer:!1};g.push(/^[0-9]*$/.source),g.push(/([0-9]{1,2}\/){2}[0-9]{4}( [0-9]{1,2}(:[0-9]{2}){2})?/.source),g.push(/[0-9]{4}([\/\-][0-9]{1,2}){2}( [0-9]{1,2}(:[0-9]{2}){2})?/.source),g=new RegExp(g.join("|"));var i={Y:"years",m:"months",n:"daysToMonth",d:"daysToWeek",w:"weeks",W:"weeksToMonth",H:"hours",M:"minutes",S:"seconds",D:"totalDays",I:"totalHours",N:"totalMinutes",T:"totalSeconds"},j=function(b,c,d){this.el=b,this.$el=a(b),this.interval=null,this.offset={},this.options=a.extend({},h),this.instanceNumber=f.length,f.push(this),this.$el.data("countdown-instance",this.instanceNumber),d&&("function"==typeof d?(this.$el.on("update.countdown",d),this.$el.on("stoped.countdown",d),this.$el.on("finish.countdown",d)):this.options=a.extend({},h,d)),this.setFinalDate(c),this.options.defer===!1&&this.start()};a.extend(j.prototype,{start:function(){null!==this.interval&&clearInterval(this.interval);var a=this;this.update(),this.interval=setInterval(function(){a.update.call(a)},this.options.precision)},stop:function(){clearInterval(this.interval),this.interval=null,this.dispatchEvent("stoped")},toggle:function(){this.interval?this.stop():this.start()},pause:function(){this.stop()},resume:function(){this.start()},remove:function(){this.stop.call(this),f[this.instanceNumber]=null,delete this.$el.data().countdownInstance},setFinalDate:function(a){this.finalDate=b(a)},update:function(){if(0===this.$el.closest("html").length)return void this.remove();var b,c=void 0!==a._data(this.el,"events"),d=new Date;b=this.finalDate.getTime()-d.getTime(),b=Math.ceil(b/1e3),b=!this.options.elapse&&b<0?0:Math.abs(b),this.totalSecsLeft!==b&&c&&(this.totalSecsLeft=b,this.elapsed=d>=this.finalDate,this.offset={seconds:this.totalSecsLeft%60,minutes:Math.floor(this.totalSecsLeft/60)%60,hours:Math.floor(this.totalSecsLeft/60/60)%24,days:Math.floor(this.totalSecsLeft/60/60/24)%7,daysToWeek:Math.floor(this.totalSecsLeft/60/60/24)%7,daysToMonth:Math.floor(this.totalSecsLeft/60/60/24%30.4368),weeks:Math.floor(this.totalSecsLeft/60/60/24/7),weeksToMonth:Math.floor(this.totalSecsLeft/60/60/24/7)%4,months:Math.floor(this.totalSecsLeft/60/60/24/30.4368),years:Math.abs(this.finalDate.getFullYear()-d.getFullYear()),totalDays:Math.floor(this.totalSecsLeft/60/60/24),totalHours:Math.floor(this.totalSecsLeft/60/60),totalMinutes:Math.floor(this.totalSecsLeft/60),totalSeconds:this.totalSecsLeft},this.options.elapse||0!==this.totalSecsLeft?this.dispatchEvent("update"):(this.stop(),this.dispatchEvent("finish")))},dispatchEvent:function(b){var c=a.Event(b+".countdown");c.finalDate=this.finalDate,c.elapsed=this.elapsed,c.offset=a.extend({},this.offset),c.strftime=d(this.offset),this.$el.trigger(c)}}),a.fn.countdown=function(){var b=Array.prototype.slice.call(arguments,0);return this.each(function(){var c=a(this).data("countdown-instance");if(void 0!==c){var d=f[c],e=b[0];j.prototype.hasOwnProperty(e)?d[e].apply(d,b.slice(1)):null===String(e).match(/^[$A-Z_][0-9A-Z_$]*$/i)?(d.setFinalDate.call(d,e),d.start()):a.error("Method %s does not exist on jQuery.countdown".replace(/\%s/gi,e))}else new j(this,b[0],b[1])})}}); + +/* +FitVids +Version: 1.1 +Plugin URI: http://fitvidsjs.com/ +License: Copyright 2013, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com | Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/ | Released under the WTFPL license - http://sam.zoy.org/wtfpl/ +*/ +!function(t){"use strict";t.fn.fitVids=function(e){var i={customSelector:null,ignore:null};if(!document.getElementById("fit-vids-style")){var r=document.head||document.getElementsByTagName("head")[0],a=document.createElement("div");a.innerHTML='

      x

      ',r.appendChild(a.childNodes[1])}return e&&t.extend(i,e),this.each(function(){var e=['iframe[src*="player.vimeo.com"]','iframe[src*="youtube.com"]','iframe[src*="youtube-nocookie.com"]','iframe[src*="kickstarter.com"][src*="video.html"]',"object","embed"];i.customSelector&&e.push(i.customSelector);var r=".fitvidsignore";i.ignore&&(r=r+", "+i.ignore);var a=t(this).find(e.join(","));(a=(a=a.not("object object")).not(r)).each(function(e){var i=t(this);if(!(i.parents(r).length>0||"embed"===this.tagName.toLowerCase()&&i.parent("object").length||i.parent(".fluid-width-video-wrapper").length)){i.css("height")||i.css("width")||!isNaN(i.attr("height"))&&!isNaN(i.attr("width"))||(i.attr("height",9),i.attr("width",16));var a=("object"===this.tagName.toLowerCase()||i.attr("height")&&!isNaN(parseInt(i.attr("height"),10))?parseInt(i.attr("height"),10):i.height())/(isNaN(parseInt(i.attr("width"),10))?i.width():parseInt(i.attr("width"),10));if(!i.attr("id")){var d="fitvid"+e;i.attr("id",d)}i.wrap('
      ').parent(".fluid-width-video-wrapper").css("padding-top",100*a+"%"),i.removeAttr("height").removeAttr("width")}})})}}(window.jQuery||window.Zepto); + +/* +Retina +Version: 1.3.0 +Plugin URI: http://imulus.github.io/retinajs/ +License: Copyright 2014 Imulus, LLC | Released under the MIT license +*/ +!function(){function a(){}function b(a){return f.retinaImageSuffix+a}function c(a,c){if(this.path=a||"","undefined"!=typeof c&&null!==c)this.at_2x_path=c,this.perform_check=!1;else{if(void 0!==document.createElement){var d=document.createElement("a");d.href=this.path,d.pathname=d.pathname.replace(g,b),this.at_2x_path=d.href}else{var e=this.path.split("?");e[0]=e[0].replace(g,b),this.at_2x_path=e.join("?")}this.perform_check=!0}}function d(a){this.el=a,this.path=new c(this.el.getAttribute("src"),this.el.getAttribute("data-at2x"));var b=this;this.path.check_2x_variant(function(a){a&&b.swap()})}var e="undefined"==typeof exports?window:exports,f={retinaImageSuffix:"@2x",check_mime_type:!0,force_original_dimensions:!0};e.Retina=a,a.configure=function(a){null===a&&(a={});for(var b in a)a.hasOwnProperty(b)&&(f[b]=a[b])},a.init=function(a){null===a&&(a=e);var b=a.onload||function(){};a.onload=function(){var a,c,e=document.getElementsByTagName("img"),f=[];for(a=0;a1?!0:e.matchMedia&&e.matchMedia(a).matches?!0:!1};var g=/\.\w+$/;e.RetinaImagePath=c,c.confirmed_paths=[],c.prototype.is_external=function(){return!(!this.path.match(/^https?\:/i)||this.path.match("//"+document.domain))},c.prototype.check_2x_variant=function(a){var b,d=this;return this.is_external()?a(!1):this.perform_check||"undefined"==typeof this.at_2x_path||null===this.at_2x_path?this.at_2x_path in c.confirmed_paths?a(!0):(b=new XMLHttpRequest,b.open("HEAD",this.at_2x_path),b.onreadystatechange=function(){if(4!==b.readyState)return a(!1);if(b.status>=200&&b.status<=399){if(f.check_mime_type){var e=b.getResponseHeader("Content-Type");if(null===e||!e.match(/^image/i))return a(!1)}return c.confirmed_paths.push(d.at_2x_path),a(!0)}return a(!1)},b.send(),void 0):a(!0)},e.RetinaImage=d,d.prototype.swap=function(a){function b(){c.el.complete?(f.force_original_dimensions&&(c.el.setAttribute("width",c.el.offsetWidth),c.el.setAttribute("height",c.el.offsetHeight)),c.el.setAttribute("src",a)):setTimeout(b,5)}"undefined"==typeof a&&(a=this.path.at_2x_path);var c=this;b()},a.isRetina()&&a.init(e)}(); +//# sourceMappingURL=retina.min.js.map + +/* page scroll */ +!function(){var e,t,o,n,r={frameRate:150,animationTime:400,stepSize:100,pulseAlgorithm:!0,pulseScale:4,pulseNormalize:1,accelerationDelta:50,accelerationMax:3,keyboardSupport:!0,arrowScroll:50,fixedBackground:!0,excluded:""},a=r,l=!1,i=!1,c={x:0,y:0},u=!1,s=document.documentElement,d=[],f=/^Mac/.test(navigator.platform),m={left:37,up:38,right:39,down:40,spacebar:32,pageup:33,pagedown:34,end:35,home:36},h={37:1,38:1,39:1,40:1};function w(){if(!u&&document.body){u=!0;var n=document.body,r=document.documentElement,c=window.innerHeight,d=n.scrollHeight;if(s=document.compatMode.indexOf("CSS")>=0?r:n,e=n,a.keyboardSupport&&A("keydown",S),top!=self)i=!0;else if(Z&&d>c&&(n.offsetHeight<=c||r.offsetHeight<=c)){var f,m=document.createElement("div");m.style.cssText="position:absolute; z-index:-10000; top:0; left:0; right:0; height:"+s.scrollHeight+"px",document.body.appendChild(m),o=function(){f||(f=setTimeout(function(){l||(m.style.height="0",m.style.height=s.scrollHeight+"px",f=null)},500))},setTimeout(o,10),A("resize",o);if((t=new q(o)).observe(n,{attributes:!0,childList:!0,characterData:!1}),s.offsetHeight<=c){var h=document.createElement("div");h.style.clear="both",n.appendChild(h)}}a.fixedBackground||l||(n.style.backgroundAttachment="scroll",r.style.backgroundAttachment="scroll")}}var p=[],v=!1,y=Date.now();function b(e,t,o){var n,r;if(n=(n=t)>0?1:-1,r=(r=o)>0?1:-1,(c.x!==n||c.y!==r)&&(c.x=n,c.y=r,p=[],y=0),1!=a.accelerationMax){var l=Date.now()-y;if(l1&&(i=Math.min(i,a.accelerationMax),t*=i,o*=i)}y=Date.now()}if(p.push({x:t,y:o,lastX:t<0?.99:-.99,lastY:o<0?.99:-.99,start:Date.now()}),!v){var u=V(),s=e===u||e===document.body;null==e.$scrollBehavior&&function(e){var t=M(e);if(null==B[t]){var o=getComputedStyle(e,"")["scroll-behavior"];B[t]="smooth"==o}return B[t]}(e)&&(e.$scrollBehavior=e.style.scrollBehavior,e.style.scrollBehavior="auto");var d=function(n){for(var r=Date.now(),l=0,i=0,c=0;c=a.animationTime,h=m?1:f/a.animationTime;a.pulseAlgorithm&&(h=I(h));var w=u.x*h-u.lastX>>0,y=u.y*h-u.lastY>>0;l+=w,i+=y,u.lastX+=w,u.lastY+=y,m&&(p.splice(c,1),c--)}s?window.scrollBy(l,i):(l&&(e.scrollLeft+=l),i&&(e.scrollTop+=i)),t||o||(p=[]),p.length?R(d,e,1e3/a.frameRate+1):(v=!1,null!=e.$scrollBehavior&&(e.style.scrollBehavior=e.$scrollBehavior,e.$scrollBehavior=null))};R(d,e,0),v=!0}}function g(t){u||w();var o=t.target;if(t.defaultPrevented||t.ctrlKey)return!0;if(K(e,"embed")||K(o,"embed")&&/\.pdf/i.test(o.src)||K(e,"object")||o.shadowRoot)return!0;var r=-t.wheelDeltaX||t.deltaX||0,l=-t.wheelDeltaY||t.deltaY||0;f&&(t.wheelDeltaX&&P(t.wheelDeltaX,120)&&(r=t.wheelDeltaX/Math.abs(t.wheelDeltaX)*-120),t.wheelDeltaY&&P(t.wheelDeltaY,120)&&(l=t.wheelDeltaY/Math.abs(t.wheelDeltaY)*-120)),r||l||(l=-t.wheelDelta||0),1===t.deltaMode&&(r*=40,l*=40);var c=L(o);return c?!!function(e){if(!e)return;d.length||(d=[e,e,e]);e=Math.abs(e),d.push(e),d.shift(),clearTimeout(n),n=setTimeout(function(){try{localStorage.SS_deltaBuffer=d.join(",")}catch(e){}},1e3);var t=e>120&&$(e);return!$(120)&&!$(100)&&!t}(l)||(Math.abs(r)>1.2&&(r*=a.stepSize/120),Math.abs(l)>1.2&&(l*=a.stepSize/120),b(c,r,l),t.preventDefault(),void C()):!i||!U||(Object.defineProperty(t,"target",{value:window.frameElement}),parent.wheel(t))}function S(t){var o=t.target,n=t.ctrlKey||t.altKey||t.metaKey||t.shiftKey&&t.keyCode!==m.spacebar;document.body.contains(e)||(e=document.activeElement);var r=/^(button|submit|radio|checkbox|file|color|image)$/i;if(t.defaultPrevented||/^(textarea|select|embed|object)$/i.test(o.nodeName)||K(o,"input")&&!r.test(o.type)||K(e,"video")||function(e){var t=e.target,o=!1;if(-1!=document.URL.indexOf("www.youtube.com/watch"))do{if(o=t.classList&&t.classList.contains("html5-video-controls"))break}while(t=t.parentNode);return o}(t)||o.isContentEditable||n)return!0;if((K(o,"button")||K(o,"input")&&r.test(o.type))&&t.keyCode===m.spacebar)return!0;if(K(o,"input")&&"radio"==o.type&&h[t.keyCode])return!0;var l=0,c=0,u=L(e);if(!u)return!i||!U||parent.keydown(t);var s=u.clientHeight;switch(u==document.body&&(s=window.innerHeight),t.keyCode){case m.up:c=-a.arrowScroll;break;case m.down:c=a.arrowScroll;break;case m.spacebar:c=-(t.shiftKey?1:-1)*s*.9;break;case m.pageup:c=.9*-s;break;case m.pagedown:c=.9*s;break;case m.home:u==document.body&&document.scrollingElement&&(u=document.scrollingElement),c=-u.scrollTop;break;case m.end:var d=u.scrollHeight-u.scrollTop-s;c=d>0?d+10:0;break;case m.left:l=-a.arrowScroll;break;case m.right:l=a.arrowScroll;break;default:return!0}b(u,l,c),t.preventDefault(),C()}function x(t){e=t.target}var k,D,M=(k=0,function(e){return e.uniqueID||(e.uniqueID=k++)}),E={},T={},B={};function C(){clearTimeout(D),D=setInterval(function(){E=T=B={}},1e3)}function H(e,t,o){for(var n=o?E:T,r=e.length;r--;)n[M(e[r])]=t;return t}function z(e,t){return(t?E:T)[M(e)]}function L(e){var t=[],o=document.body,n=s.scrollHeight;do{var r=z(e,!1);if(r)return H(t,r);if(t.push(e),n===e.scrollHeight){var a=X(s)&&X(o)||Y(s);if(i&&O(s)||!i&&a)return H(t,V())}else if(O(e)&&Y(e))return H(t,e)}while(e=e.parentElement)}function O(e){return e.clientHeight+10=1?1:e<=0?0:(1==a.pulseNormalize&&(a.pulseNormalize/=F(1)),F(e))}var _=window.navigator.userAgent,W=/Edge/.test(_),U=/chrome/i.test(_)&&!W,G=/safari/i.test(_)&&!W,J=/mobile/i.test(_),Q=/Windows NT 6.1/i.test(_)&&/rv:11/i.test(_),Z=G&&(/Version\/8/i.test(_)||/Version\/9/i.test(_)),ee=(U||G||Q)&&!J,te=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){te=!0}}))}catch(e){}var oe=!!te&&{passive:!1},ne="onwheel"in document.createElement("div")?"wheel":"mousewheel";function re(e){for(var t in e)r.hasOwnProperty(t)&&(a[t]=e[t])}ne&&ee&&(A(ne,g,oe),A("mousedown",x),A("load",w)),re.destroy=function(){t&&t.disconnect(),N(ne,g),N("mousedown",x),N("keydown",S),N("resize",o),N("load",w)},window.SmoothScrollOptions&&re(window.SmoothScrollOptions),"function"==typeof define&&define.amd?define(function(){return re}):"object"==typeof exports?module.exports=re:window.SmoothScroll=re}(); + +/* +Skrollr +Plugin URI: https://github.com/Prinzhorn/skrollr +License: skrollr 0.6.30 (2015-08-12) | Alexander Prinzhorn | Free to use under terms of MIT license +*/ +!function(a,b,c){"use strict";function d(c){if(e=b.documentElement,f=b.body,T(),ha=this,c=c||{},ma=c.constants||{},c.easing)for(var d in c.easing)W[d]=c.easing[d];ta=c.edgeStrategy||"set",ka={beforerender:c.beforerender,render:c.render,keyframe:c.keyframe},la=c.forceHeight!==!1,la&&(Ka=c.scale||1),na=c.mobileDeceleration||y,pa=c.smoothScrolling!==!1,qa=c.smoothScrollingDuration||A,ra={targetTop:ha.getScrollTop()},Sa=(c.mobileCheck||function(){return/Android|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent||navigator.vendor||a.opera)})(),Sa?(ja=b.getElementById(c.skrollrBody||z),ja&&ga(),X(),Ea(e,[s,v],[t])):Ea(e,[s,u],[t]),ha.refresh(),wa(a,"resize orientationchange",function(){var a=e.clientWidth,b=e.clientHeight;(b!==Pa||a!==Oa)&&(Pa=b,Oa=a,Qa=!0)});var g=U();return function h(){$(),va=g(h)}(),ha}var e,f,g={get:function(){return ha},init:function(a){return ha||new d(a)},VERSION:"0.6.30"},h=Object.prototype.hasOwnProperty,i=a.Math,j=a.getComputedStyle,k="touchstart",l="touchmove",m="touchcancel",n="touchend",o="skrollable",p=o+"-before",q=o+"-between",r=o+"-after",s="skrollr",t="no-"+s,u=s+"-desktop",v=s+"-mobile",w="linear",x=1e3,y=.004,z="skrollr-body",A=200,B="start",C="end",D="center",E="bottom",F="___skrollable_id",G=/^(?:input|textarea|button|select)$/i,H=/^\s+|\s+$/g,I=/^data(?:-(_\w+))?(?:-?(-?\d*\.?\d+p?))?(?:-?(start|end|top|center|bottom))?(?:-?(top|center|bottom))?$/,J=/\s*(@?[\w\-\[\]]+)\s*:\s*(.+?)\s*(?:;|$)/gi,K=/^(@?[a-z\-]+)\[(\w+)\]$/,L=/-([a-z0-9_])/g,M=function(a,b){return b.toUpperCase()},N=/[\-+]?[\d]*\.?[\d]+/g,O=/\{\?\}/g,P=/rgba?\(\s*-?\d+\s*,\s*-?\d+\s*,\s*-?\d+/g,Q=/[a-z\-]+-gradient/g,R="",S="",T=function(){var a=/^(?:O|Moz|webkit|ms)|(?:-(?:o|moz|webkit|ms)-)/;if(j){var b=j(f,null);for(var c in b)if(R=c.match(a)||+c==c&&b[c].match(a))break;if(!R)return void(R=S="");R=R[0],"-"===R.slice(0,1)?(S=R,R={"-webkit-":"webkit","-moz-":"Moz","-ms-":"ms","-o-":"O"}[R]):S="-"+R.toLowerCase()+"-"}},U=function(){var b=a.requestAnimationFrame||a[R.toLowerCase()+"RequestAnimationFrame"],c=Ha();return(Sa||!b)&&(b=function(b){var d=Ha()-c,e=i.max(0,1e3/60-d);return a.setTimeout(function(){c=Ha(),b()},e)}),b},V=function(){var b=a.cancelAnimationFrame||a[R.toLowerCase()+"CancelAnimationFrame"];return(Sa||!b)&&(b=function(b){return a.clearTimeout(b)}),b},W={begin:function(){return 0},end:function(){return 1},linear:function(a){return a},quadratic:function(a){return a*a},cubic:function(a){return a*a*a},swing:function(a){return-i.cos(a*i.PI)/2+.5},sqrt:function(a){return i.sqrt(a)},outCubic:function(a){return i.pow(a-1,3)+1},bounce:function(a){var b;if(.5083>=a)b=3;else if(.8489>=a)b=9;else if(.96208>=a)b=27;else{if(!(.99981>=a))return 1;b=91}return 1-i.abs(3*i.cos(a*b*1.028)/b)}};d.prototype.refresh=function(a){var d,e,f=!1;for(a===c?(f=!0,ia=[],Ra=0,a=b.getElementsByTagName("*")):a.length===c&&(a=[a]),d=0,e=a.length;e>d;d++){var g=a[d],h=g,i=[],j=pa,k=ta,l=!1;if(f&&F in g&&delete g[F],g.attributes){for(var m=0,n=g.attributes.length;n>m;m++){var p=g.attributes[m];if("data-anchor-target"!==p.name)if("data-smooth-scrolling"!==p.name)if("data-edge-strategy"!==p.name)if("data-emit-events"!==p.name){var q=p.name.match(I);if(null!==q){var r={props:p.value,element:g,eventType:p.name.replace(L,M)};i.push(r);var s=q[1];s&&(r.constant=s.substr(1));var t=q[2];/p$/.test(t)?(r.isPercentage=!0,r.offset=(0|t.slice(0,-1))/100):r.offset=0|t;var u=q[3],v=q[4]||u;u&&u!==B&&u!==C?(r.mode="relative",r.anchors=[u,v]):(r.mode="absolute",u===C?r.isEnd=!0:r.isPercentage||(r.offset=r.offset*Ka))}}else l=!0;else k=p.value;else j="off"!==p.value;else if(h=b.querySelector(p.value),null===h)throw'Unable to find anchor target "'+p.value+'"'}if(i.length){var w,x,y;!f&&F in g?(y=g[F],w=ia[y].styleAttr,x=ia[y].classAttr):(y=g[F]=Ra++,w=g.style.cssText,x=Da(g)),ia[y]={element:g,styleAttr:w,classAttr:x,anchorTarget:h,keyFrames:i,smoothScrolling:j,edgeStrategy:k,emitEvents:l,lastFrameIndex:-1},Ea(g,[o],[])}}}for(Aa(),d=0,e=a.length;e>d;d++){var z=ia[a[d][F]];z!==c&&(_(z),ba(z))}return ha},d.prototype.relativeToAbsolute=function(a,b,c){var d=e.clientHeight,f=a.getBoundingClientRect(),g=f.top,h=f.bottom-f.top;return b===E?g-=d:b===D&&(g-=d/2),c===E?g+=h:c===D&&(g+=h/2),g+=ha.getScrollTop(),g+.5|0},d.prototype.animateTo=function(a,b){b=b||{};var d=Ha(),e=ha.getScrollTop(),f=b.duration===c?x:b.duration;return oa={startTop:e,topDiff:a-e,targetTop:a,duration:f,startTime:d,endTime:d+f,easing:W[b.easing||w],done:b.done},oa.topDiff||(oa.done&&oa.done.call(ha,!1),oa=c),ha},d.prototype.stopAnimateTo=function(){oa&&oa.done&&oa.done.call(ha,!0),oa=c},d.prototype.isAnimatingTo=function(){return!!oa},d.prototype.isMobile=function(){return Sa},d.prototype.setScrollTop=function(b,c){return sa=c===!0,Sa?Ta=i.min(i.max(b,0),Ja):a.scrollTo(0,b),ha},d.prototype.getScrollTop=function(){return Sa?Ta:a.pageYOffset||e.scrollTop||f.scrollTop||0},d.prototype.getMaxScrollTop=function(){return Ja},d.prototype.on=function(a,b){return ka[a]=b,ha},d.prototype.off=function(a){return delete ka[a],ha},d.prototype.destroy=function(){var a=V();a(va),ya(),Ea(e,[t],[s,u,v]);for(var b=0,d=ia.length;d>b;b++)fa(ia[b].element);e.style.overflow=f.style.overflow="",e.style.height=f.style.height="",ja&&g.setStyle(ja,"transform","none"),ha=c,ja=c,ka=c,la=c,Ja=0,Ka=1,ma=c,na=c,La="down",Ma=-1,Oa=0,Pa=0,Qa=!1,oa=c,pa=c,qa=c,ra=c,sa=c,Ra=0,ta=c,Sa=!1,Ta=0,ua=c};var X=function(){var d,g,h,j,o,p,q,r,s,t,u,v;wa(e,[k,l,m,n].join(" "),function(a){var e=a.changedTouches[0];for(j=a.target;3===j.nodeType;)j=j.parentNode;switch(o=e.clientY,p=e.clientX,t=a.timeStamp,G.test(j.tagName)||a.preventDefault(),a.type){case k:d&&d.blur(),ha.stopAnimateTo(),d=j,g=q=o,h=p,s=t;break;case l:G.test(j.tagName)&&b.activeElement!==j&&a.preventDefault(),r=o-q,v=t-u,ha.setScrollTop(Ta-r,!0),q=o,u=t;break;default:case m:case n:var f=g-o,w=h-p,x=w*w+f*f;if(49>x){if(!G.test(d.tagName)){d.focus();var y=b.createEvent("MouseEvents");y.initMouseEvent("click",!0,!0,a.view,1,e.screenX,e.screenY,e.clientX,e.clientY,a.ctrlKey,a.altKey,a.shiftKey,a.metaKey,0,null),d.dispatchEvent(y)}return}d=c;var z=r/v;z=i.max(i.min(z,3),-3);var A=i.abs(z/na),B=z*A+.5*na*A*A,C=ha.getScrollTop()-B,D=0;C>Ja?(D=(Ja-C)/B,C=Ja):0>C&&(D=-C/B,C=0),A*=1-D,ha.animateTo(C+.5|0,{easing:"outCubic",duration:A})}}),a.scrollTo(0,0),e.style.overflow=f.style.overflow="hidden"},Y=function(){var a,b,c,d,f,g,h,j,k,l,m,n=e.clientHeight,o=Ba();for(j=0,k=ia.length;k>j;j++)for(a=ia[j],b=a.element,c=a.anchorTarget,d=a.keyFrames,f=0,g=d.length;g>f;f++)h=d[f],l=h.offset,m=o[h.constant]||0,h.frame=l,h.isPercentage&&(l*=n,h.frame=l),"relative"===h.mode&&(fa(b),h.frame=ha.relativeToAbsolute(c,h.anchors[0],h.anchors[1])-l,fa(b,!0)),h.frame+=m,la&&!h.isEnd&&h.frame>Ja&&(Ja=h.frame);for(Ja=i.max(Ja,Ca()),j=0,k=ia.length;k>j;j++){for(a=ia[j],d=a.keyFrames,f=0,g=d.length;g>f;f++)h=d[f],m=o[h.constant]||0,h.isEnd&&(h.frame=Ja-h.offset+m);a.keyFrames.sort(Ia)}},Z=function(a,b){for(var c=0,d=ia.length;d>c;c++){var e,f,i=ia[c],j=i.element,k=i.smoothScrolling?a:b,l=i.keyFrames,m=l.length,n=l[0],s=l[l.length-1],t=ks.frame,v=t?n:s,w=i.emitEvents,x=i.lastFrameIndex;if(t||u){if(t&&-1===i.edge||u&&1===i.edge)continue;switch(t?(Ea(j,[p],[r,q]),w&&x>-1&&(za(j,n.eventType,La),i.lastFrameIndex=-1)):(Ea(j,[r],[p,q]),w&&m>x&&(za(j,s.eventType,La),i.lastFrameIndex=m)),i.edge=t?-1:1,i.edgeStrategy){case"reset":fa(j);continue;case"ease":k=v.frame;break;default:case"set":var y=v.props;for(e in y)h.call(y,e)&&(f=ea(y[e].value),0===e.indexOf("@")?j.setAttribute(e.substr(1),f):g.setStyle(j,e,f));continue}}else 0!==i.edge&&(Ea(j,[o,q],[p,r]),i.edge=0);for(var z=0;m-1>z;z++)if(k>=l[z].frame&&k<=l[z+1].frame){var A=l[z],B=l[z+1];for(e in A.props)if(h.call(A.props,e)){var C=(k-A.frame)/(B.frame-A.frame);C=A.props[e].easing(C),f=da(A.props[e].value,B.props[e].value,C),f=ea(f),0===e.indexOf("@")?j.setAttribute(e.substr(1),f):g.setStyle(j,e,f)}w&&x!==z&&("down"===La?za(j,A.eventType,La):za(j,B.eventType,La),i.lastFrameIndex=z);break}}},$=function(){Qa&&(Qa=!1,Aa());var a,b,d=ha.getScrollTop(),e=Ha();if(oa)e>=oa.endTime?(d=oa.targetTop,a=oa.done,oa=c):(b=oa.easing((e-oa.startTime)/oa.duration),d=oa.startTop+b*oa.topDiff|0),ha.setScrollTop(d,!0);else if(!sa){var f=ra.targetTop-d;f&&(ra={startTop:Ma,topDiff:d-Ma,targetTop:d,startTime:Na,endTime:Na+qa}),e<=ra.endTime&&(b=W.sqrt((e-ra.startTime)/qa),d=ra.startTop+b*ra.topDiff|0)}if(sa||Ma!==d){La=d>Ma?"down":Ma>d?"up":La,sa=!1;var h={curTop:d,lastTop:Ma,maxTop:Ja,direction:La},i=ka.beforerender&&ka.beforerender.call(ha,h);i!==!1&&(Z(d,ha.getScrollTop()),Sa&&ja&&g.setStyle(ja,"transform","translate(0, "+-Ta+"px) "+ua),Ma=d,ka.render&&ka.render.call(ha,h)),a&&a.call(ha,!1)}Na=e},_=function(a){for(var b=0,c=a.keyFrames.length;c>b;b++){for(var d,e,f,g,h=a.keyFrames[b],i={};null!==(g=J.exec(h.props));)f=g[1],e=g[2],d=f.match(K),null!==d?(f=d[1],d=d[2]):d=w,e=e.indexOf("!")?aa(e):[e.slice(1)],i[f]={value:e,easing:W[d]};h.props=i}},aa=function(a){var b=[];return P.lastIndex=0,a=a.replace(P,function(a){return a.replace(N,function(a){return a/255*100+"%"})}),S&&(Q.lastIndex=0,a=a.replace(Q,function(a){return S+a})),a=a.replace(N,function(a){return b.push(+a),"{?}"}),b.unshift(a),b},ba=function(a){var b,c,d={};for(b=0,c=a.keyFrames.length;c>b;b++)ca(a.keyFrames[b],d);for(d={},b=a.keyFrames.length-1;b>=0;b--)ca(a.keyFrames[b],d)},ca=function(a,b){var c;for(c in b)h.call(a.props,c)||(a.props[c]=b[c]);for(c in a.props)b[c]=a.props[c]},da=function(a,b,c){var d,e=a.length;if(e!==b.length)throw"Can't interpolate between \""+a[0]+'" and "'+b[0]+'"';var f=[a[0]];for(d=1;e>d;d++)f[d]=a[d]+(b[d]-a[d])*c;return f},ea=function(a){var b=1;return O.lastIndex=0,a[0].replace(O,function(){return a[b++]})},fa=function(a,b){a=[].concat(a);for(var c,d,e=0,f=a.length;f>e;e++)d=a[e],c=ia[d[F]],c&&(b?(d.style.cssText=c.dirtyStyleAttr,Ea(d,c.dirtyClassAttr)):(c.dirtyStyleAttr=d.style.cssText,c.dirtyClassAttr=Da(d),d.style.cssText=c.styleAttr,Ea(d,c.classAttr)))},ga=function(){ua="translateZ(0)",g.setStyle(ja,"transform",ua);var a=j(ja),b=a.getPropertyValue("transform"),c=a.getPropertyValue(S+"transform"),d=b&&"none"!==b||c&&"none"!==c;d||(ua="")};g.setStyle=function(a,b,c){var d=a.style;if(b=b.replace(L,M).replace("-",""),"zIndex"===b)isNaN(c)?d[b]=c:d[b]=""+(0|c);else if("float"===b)d.styleFloat=d.cssFloat=c;else try{R&&(d[R+b.slice(0,1).toUpperCase()+b.slice(1)]=c),d[b]=c}catch(e){}};var ha,ia,ja,ka,la,ma,na,oa,pa,qa,ra,sa,ta,ua,va,wa=g.addEvent=function(b,c,d){var e=function(b){return b=b||a.event,b.target||(b.target=b.srcElement),b.preventDefault||(b.preventDefault=function(){b.returnValue=!1,b.defaultPrevented=!0}),d.call(this,b)};c=c.split(" ");for(var f,g=0,h=c.length;h>g;g++)f=c[g],b.addEventListener?b.addEventListener(f,d,!1):b.attachEvent("on"+f,e),Ua.push({element:b,name:f,listener:d})},xa=g.removeEvent=function(a,b,c){b=b.split(" ");for(var d=0,e=b.length;e>d;d++)a.removeEventListener?a.removeEventListener(b[d],c,!1):a.detachEvent("on"+b[d],c)},ya=function(){for(var a,b=0,c=Ua.length;c>b;b++)a=Ua[b],xa(a.element,a.name,a.listener);Ua=[]},za=function(a,b,c){ka.keyframe&&ka.keyframe.call(ha,a,b,c)},Aa=function(){var a=ha.getScrollTop();Ja=0,la&&!Sa&&(f.style.height=""),Y(),la&&!Sa&&(f.style.height=Ja+e.clientHeight+"px"),Sa?ha.setScrollTop(i.min(ha.getScrollTop(),Ja)):ha.setScrollTop(a,!0),sa=!0},Ba=function(){var a,b,c=e.clientHeight,d={};for(a in ma)b=ma[a],"function"==typeof b?b=b.call(ha):/p$/.test(b)&&(b=b.slice(0,-1)/100*c),d[a]=b;return d},Ca=function(){var a,b=0;return ja&&(b=i.max(ja.offsetHeight,ja.scrollHeight)),a=i.max(b,f.scrollHeight,f.offsetHeight,e.scrollHeight,e.offsetHeight,e.clientHeight),a-e.clientHeight},Da=function(b){var c="className";return a.SVGElement&&b instanceof a.SVGElement&&(b=b[c],c="baseVal"),b[c]},Ea=function(b,d,e){var f="className";if(a.SVGElement&&b instanceof a.SVGElement&&(b=b[f],f="baseVal"),e===c)return void(b[f]=d);for(var g=b[f],h=0,i=e.length;i>h;h++)g=Ga(g).replace(Ga(e[h])," ");g=Fa(g);for(var j=0,k=d.length;k>j;j++)-1===Ga(g).indexOf(Ga(d[j]))&&(g+=" "+d[j]);b[f]=Fa(g)},Fa=function(a){return a.replace(H,"")},Ga=function(a){return" "+a+" "},Ha=Date.now||function(){return+new Date},Ia=function(a,b){return a.frame-b.frame},Ja=0,Ka=1,La="down",Ma=-1,Na=Ha(),Oa=0,Pa=0,Qa=!1,Ra=0,Sa=!1,Ta=0,Ua=[];"function"==typeof define&&define.amd?define([],function(){return g}):"undefined"!=typeof module&&module.exports?module.exports=g:a.skrollr=g}(window,document); + +/* +Classie +Version: 1.0.1 +Plugin URI: https://github.com/ded/bonzo +*/ +!function(s){"use strict";function e(s){return new RegExp("(^|\\s+)"+s+"(\\s+|$)")}var n,a,t;function c(s,e){(n(s,e)?t:a)(s,e)}"classList"in document.documentElement?(n=function(s,e){return s.classList.contains(e)},a=function(s,e){s.classList.add(e)},t=function(s,e){s.classList.remove(e)}):(n=function(s,n){return e(n).test(s.className)},a=function(s,e){n(s,e)||(s.className=s.className+" "+e)},t=function(s,n){s.className=s.className.replace(e(n)," ")});var i={hasClass:n,addClass:a,removeClass:t,toggleClass:c,has:n,add:a,remove:t,toggle:c};"function"==typeof define&&define.amd?define(i):s.classie=i}(window); + +/* +Pofo custom parallax +*/ +!function(n){var t=n(window),o=t.height();t.resize(function(){o=t.height()}),n.fn.parallax=function(i,e,l){var r,u=n(this);function c(){var l=t.scrollTop();u.each(function(){var t=n(this),c=t.offset().top;c+r(t)l+o||(n(window).width()>1050?u.css("backgroundPosition",i+" "+(c-l)*e+"px"):u.css("backgroundPosition",""))})}u.each(function(n){u.offset().top}),(arguments.length<1||null===i)&&(i="50%"),(arguments.length<2||null===e)&&(e=.5),(arguments.length<3||null===l)&&(l=!0),(arguments.length<4||null===pos)&&(pos=0),r=l?function(n){return n.outerHeight(!0)}:function(n){return n.height()},t.bind("scroll",c).resize(c),c()},n.fn.parallaxImg=function(i,e){var l,r=n(this);function u(){var e=t.scrollTop();r.each(function(){var t=n(this),u=t.offset().top;u+l(t)e+o||(n(window).width()>1050?r.css("bottom",i/10*-(u-e)+"px"):r.css("bottom",""))})}(arguments.length<1||null===i)&&(i=1),(arguments.length<2||null===e)&&(e=!0),l=e?function(n){return n.outerHeight(!0)}:function(n){return n.height()},t.bind("scroll",u).resize(u),u()}}(jQuery); + diff --git a/think.greaterchiangmai.com/public/revolution/assets/coloredbg.png b/think.greaterchiangmai.com/public/revolution/assets/coloredbg.png new file mode 100644 index 0000000..db75b7a Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/assets/coloredbg.png differ diff --git a/think.greaterchiangmai.com/public/revolution/assets/gridtile.png b/think.greaterchiangmai.com/public/revolution/assets/gridtile.png new file mode 100644 index 0000000..b07e396 Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/assets/gridtile.png differ diff --git a/think.greaterchiangmai.com/public/revolution/assets/gridtile_3x3.png b/think.greaterchiangmai.com/public/revolution/assets/gridtile_3x3.png new file mode 100644 index 0000000..6f2c31d Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/assets/gridtile_3x3.png differ diff --git a/think.greaterchiangmai.com/public/revolution/assets/gridtile_3x3_white.png b/think.greaterchiangmai.com/public/revolution/assets/gridtile_3x3_white.png new file mode 100644 index 0000000..a8830fc Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/assets/gridtile_3x3_white.png differ diff --git a/think.greaterchiangmai.com/public/revolution/assets/gridtile_white.png b/think.greaterchiangmai.com/public/revolution/assets/gridtile_white.png new file mode 100644 index 0000000..7fd43e0 Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/assets/gridtile_white.png differ diff --git a/think.greaterchiangmai.com/public/revolution/assets/index.php b/think.greaterchiangmai.com/public/revolution/assets/index.php new file mode 100644 index 0000000..e69de29 diff --git a/think.greaterchiangmai.com/public/revolution/assets/loader.gif b/think.greaterchiangmai.com/public/revolution/assets/loader.gif new file mode 100644 index 0000000..53dd589 Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/assets/loader.gif differ diff --git a/think.greaterchiangmai.com/public/revolution/assets/sources/fb.png b/think.greaterchiangmai.com/public/revolution/assets/sources/fb.png new file mode 100644 index 0000000..9eb46b9 Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/assets/sources/fb.png differ diff --git a/think.greaterchiangmai.com/public/revolution/assets/sources/fr.png b/think.greaterchiangmai.com/public/revolution/assets/sources/fr.png new file mode 100644 index 0000000..827859a Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/assets/sources/fr.png differ diff --git a/think.greaterchiangmai.com/public/revolution/assets/sources/ig.png b/think.greaterchiangmai.com/public/revolution/assets/sources/ig.png new file mode 100644 index 0000000..0ddc86e Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/assets/sources/ig.png differ diff --git a/think.greaterchiangmai.com/public/revolution/assets/sources/index.php b/think.greaterchiangmai.com/public/revolution/assets/sources/index.php new file mode 100644 index 0000000..e69de29 diff --git a/think.greaterchiangmai.com/public/revolution/assets/sources/post.png b/think.greaterchiangmai.com/public/revolution/assets/sources/post.png new file mode 100644 index 0000000..45ddcc9 Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/assets/sources/post.png differ diff --git a/think.greaterchiangmai.com/public/revolution/assets/sources/revolution_slide1.png b/think.greaterchiangmai.com/public/revolution/assets/sources/revolution_slide1.png new file mode 100644 index 0000000..99ead16 Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/assets/sources/revolution_slide1.png differ diff --git a/think.greaterchiangmai.com/public/revolution/assets/sources/revolution_slide2.png b/think.greaterchiangmai.com/public/revolution/assets/sources/revolution_slide2.png new file mode 100644 index 0000000..4b945ef Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/assets/sources/revolution_slide2.png differ diff --git a/think.greaterchiangmai.com/public/revolution/assets/sources/tw.png b/think.greaterchiangmai.com/public/revolution/assets/sources/tw.png new file mode 100644 index 0000000..53b1133 Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/assets/sources/tw.png differ diff --git a/think.greaterchiangmai.com/public/revolution/assets/sources/vm.png b/think.greaterchiangmai.com/public/revolution/assets/sources/vm.png new file mode 100644 index 0000000..824933b Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/assets/sources/vm.png differ diff --git a/think.greaterchiangmai.com/public/revolution/assets/sources/wc.png b/think.greaterchiangmai.com/public/revolution/assets/sources/wc.png new file mode 100644 index 0000000..80233ca Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/assets/sources/wc.png differ diff --git a/think.greaterchiangmai.com/public/revolution/assets/sources/yt.png b/think.greaterchiangmai.com/public/revolution/assets/sources/yt.png new file mode 100644 index 0000000..84849e8 Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/assets/sources/yt.png differ diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_3d_rotation_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_3d_rotation_24px.svg new file mode 100644 index 0000000..db31710 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_3d_rotation_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_accessibility_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_accessibility_24px.svg new file mode 100644 index 0000000..fda62ae --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_accessibility_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_accessible_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_accessible_24px.svg new file mode 100644 index 0000000..7f14189 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_accessible_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_account_balance_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_account_balance_24px.svg new file mode 100644 index 0000000..1faddad --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_account_balance_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_account_balance_wallet_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_account_balance_wallet_24px.svg new file mode 100644 index 0000000..e71a765 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_account_balance_wallet_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_account_box_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_account_box_24px.svg new file mode 100644 index 0000000..d581147 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_account_box_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_account_circle_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_account_circle_24px.svg new file mode 100644 index 0000000..01dc062 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_account_circle_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_add_shopping_cart_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_add_shopping_cart_24px.svg new file mode 100644 index 0000000..3331ecc --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_add_shopping_cart_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_alarm_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_alarm_24px.svg new file mode 100644 index 0000000..edfa7a6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_alarm_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_alarm_add_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_alarm_add_24px.svg new file mode 100644 index 0000000..8bf2e6c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_alarm_add_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_alarm_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_alarm_off_24px.svg new file mode 100644 index 0000000..58edb5d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_alarm_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_alarm_on_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_alarm_on_24px.svg new file mode 100644 index 0000000..79de6cb --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_alarm_on_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_all_out_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_all_out_24px.svg new file mode 100644 index 0000000..6ad5c9c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_all_out_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_android_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_android_24px.svg new file mode 100644 index 0000000..600a26a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_android_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_announcement_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_announcement_24px.svg new file mode 100644 index 0000000..fd7463c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_announcement_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_aspect_ratio_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_aspect_ratio_24px.svg new file mode 100644 index 0000000..d84112f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_aspect_ratio_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assessment_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assessment_24px.svg new file mode 100644 index 0000000..cc7768b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assessment_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assignment_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assignment_24px.svg new file mode 100644 index 0000000..cb7fd32 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assignment_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assignment_ind_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assignment_ind_24px.svg new file mode 100644 index 0000000..3c0a273 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assignment_ind_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assignment_late_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assignment_late_24px.svg new file mode 100644 index 0000000..ad82055 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assignment_late_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assignment_return_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assignment_return_24px.svg new file mode 100644 index 0000000..4bfb1e5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assignment_return_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assignment_returned_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assignment_returned_24px.svg new file mode 100644 index 0000000..4417ebc --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assignment_returned_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assignment_turned_in_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assignment_turned_in_24px.svg new file mode 100644 index 0000000..841afa5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_assignment_turned_in_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_autorenew_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_autorenew_24px.svg new file mode 100644 index 0000000..a260be6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_autorenew_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_backup_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_backup_24px.svg new file mode 100644 index 0000000..69a9622 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_backup_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_book_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_book_24px.svg new file mode 100644 index 0000000..f5dd104 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_book_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_bookmark_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_bookmark_24px.svg new file mode 100644 index 0000000..1d507a6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_bookmark_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_bookmark_border_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_bookmark_border_24px.svg new file mode 100644 index 0000000..f178b05 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_bookmark_border_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_bug_report_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_bug_report_24px.svg new file mode 100644 index 0000000..0ac92ab --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_bug_report_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_build_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_build_24px.svg new file mode 100644 index 0000000..447e292 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_build_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_cached_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_cached_24px.svg new file mode 100644 index 0000000..9bd4422 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_cached_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_camera_enhance_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_camera_enhance_24px.svg new file mode 100644 index 0000000..a2471c1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_camera_enhance_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_card_giftcard_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_card_giftcard_24px.svg new file mode 100644 index 0000000..30e51d6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_card_giftcard_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_card_membership_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_card_membership_24px.svg new file mode 100644 index 0000000..daadcd4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_card_membership_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_card_travel_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_card_travel_24px.svg new file mode 100644 index 0000000..e4149b3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_card_travel_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_change_history_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_change_history_24px.svg new file mode 100644 index 0000000..301bfa9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_change_history_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_check_circle_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_check_circle_24px.svg new file mode 100644 index 0000000..1741e30 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_check_circle_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_chrome_reader_mode_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_chrome_reader_mode_24px.svg new file mode 100644 index 0000000..ba864e1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_chrome_reader_mode_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_class_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_class_24px.svg new file mode 100644 index 0000000..f5dd104 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_class_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_code_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_code_24px.svg new file mode 100644 index 0000000..612ca55 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_code_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_compare_arrows_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_compare_arrows_24px.svg new file mode 100644 index 0000000..21a0239 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_compare_arrows_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_copyright_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_copyright_24px.svg new file mode 100644 index 0000000..33d8465 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_copyright_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_credit_card_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_credit_card_24px.svg new file mode 100644 index 0000000..99afa68 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_credit_card_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_dashboard_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_dashboard_24px.svg new file mode 100644 index 0000000..1682295 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_dashboard_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_date_range_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_date_range_24px.svg new file mode 100644 index 0000000..6d8cee4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_date_range_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_delete_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_delete_24px.svg new file mode 100644 index 0000000..0969a4d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_delete_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_description_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_description_24px.svg new file mode 100644 index 0000000..1585a6c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_description_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_dns_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_dns_24px.svg new file mode 100644 index 0000000..4079ced --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_dns_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_done_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_done_24px.svg new file mode 100644 index 0000000..20a7f2d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_done_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_done_all_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_done_all_24px.svg new file mode 100644 index 0000000..24e36cf --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_done_all_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_donut_large_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_donut_large_24px.svg new file mode 100644 index 0000000..bbc39e6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_donut_large_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_donut_small_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_donut_small_24px.svg new file mode 100644 index 0000000..36987e6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_donut_small_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_eject_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_eject_24px.svg new file mode 100644 index 0000000..a8fc5a1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_eject_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_event_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_event_24px.svg new file mode 100644 index 0000000..1b084e8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_event_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_event_seat_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_event_seat_24px.svg new file mode 100644 index 0000000..6ec648c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_event_seat_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_exit_to_app_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_exit_to_app_24px.svg new file mode 100644 index 0000000..b5763e9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_exit_to_app_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_explore_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_explore_24px.svg new file mode 100644 index 0000000..4243343 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_explore_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_extension_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_extension_24px.svg new file mode 100644 index 0000000..39f275c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_extension_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_face_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_face_24px.svg new file mode 100644 index 0000000..993149b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_face_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_favorite_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_favorite_24px.svg new file mode 100644 index 0000000..8a7ea03 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_favorite_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_favorite_border_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_favorite_border_24px.svg new file mode 100644 index 0000000..999e319 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_favorite_border_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_feedback_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_feedback_24px.svg new file mode 100644 index 0000000..72b0945 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_feedback_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_find_in_page_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_find_in_page_24px.svg new file mode 100644 index 0000000..eacc8e8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_find_in_page_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_find_replace_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_find_replace_24px.svg new file mode 100644 index 0000000..cede6cd --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_find_replace_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_fingerprint_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_fingerprint_24px.svg new file mode 100644 index 0000000..c6802fe --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_fingerprint_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_flight_land_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_flight_land_24px.svg new file mode 100644 index 0000000..0b6c294 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_flight_land_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_flight_takeoff_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_flight_takeoff_24px.svg new file mode 100644 index 0000000..fe40880 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_flight_takeoff_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_flip_to_back_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_flip_to_back_24px.svg new file mode 100644 index 0000000..7e641b6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_flip_to_back_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_flip_to_front_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_flip_to_front_24px.svg new file mode 100644 index 0000000..d2d1664 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_flip_to_front_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_gavel_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_gavel_24px.svg new file mode 100644 index 0000000..2092083 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_gavel_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_get_app_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_get_app_24px.svg new file mode 100644 index 0000000..ef421c3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_get_app_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_gif_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_gif_24px.svg new file mode 100644 index 0000000..d16cb7c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_gif_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_grade_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_grade_24px.svg new file mode 100644 index 0000000..46d104b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_grade_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_group_work_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_group_work_24px.svg new file mode 100644 index 0000000..0f3fd5a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_group_work_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_help_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_help_24px.svg new file mode 100644 index 0000000..dd1cd77 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_help_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_help_outline_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_help_outline_24px.svg new file mode 100644 index 0000000..3e980a4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_help_outline_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_highlight_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_highlight_off_24px.svg new file mode 100644 index 0000000..848183c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_highlight_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_history_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_history_24px.svg new file mode 100644 index 0000000..c00b86b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_history_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_home_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_home_24px.svg new file mode 100644 index 0000000..6bd84cf --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_home_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_hourglass_empty_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_hourglass_empty_24px.svg new file mode 100644 index 0000000..48298a7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_hourglass_empty_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_hourglass_full_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_hourglass_full_24px.svg new file mode 100644 index 0000000..e33ac31 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_hourglass_full_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_http_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_http_24px.svg new file mode 100644 index 0000000..4a8c23a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_http_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_https_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_https_24px.svg new file mode 100644 index 0000000..2154a2c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_https_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_important_devices_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_important_devices_24px.svg new file mode 100644 index 0000000..9d0162b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_important_devices_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_info_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_info_24px.svg new file mode 100644 index 0000000..22ef137 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_info_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_info_outline_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_info_outline_24px.svg new file mode 100644 index 0000000..bb86e65 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_info_outline_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_input_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_input_24px.svg new file mode 100644 index 0000000..64d1d0b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_input_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_invert_colors_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_invert_colors_24px.svg new file mode 100644 index 0000000..d7165a2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_invert_colors_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_label_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_label_24px.svg new file mode 100644 index 0000000..e0f42a3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_label_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_label_outline_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_label_outline_24px.svg new file mode 100644 index 0000000..aca61dc --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_label_outline_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_language_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_language_24px.svg new file mode 100644 index 0000000..0349db4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_language_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_launch_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_launch_24px.svg new file mode 100644 index 0000000..40f6564 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_launch_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_lightbulb_outline_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_lightbulb_outline_24px.svg new file mode 100644 index 0000000..4351f81 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_lightbulb_outline_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_line_style_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_line_style_24px.svg new file mode 100644 index 0000000..7fc27b1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_line_style_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_line_weight_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_line_weight_24px.svg new file mode 100644 index 0000000..e1321a7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_line_weight_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_list_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_list_24px.svg new file mode 100644 index 0000000..f280e6a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_list_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_lock_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_lock_24px.svg new file mode 100644 index 0000000..2154a2c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_lock_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_lock_open_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_lock_open_24px.svg new file mode 100644 index 0000000..4481b0e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_lock_open_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_lock_outline_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_lock_outline_24px.svg new file mode 100644 index 0000000..b8b5c01 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_lock_outline_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_loyalty_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_loyalty_24px.svg new file mode 100644 index 0000000..c151715 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_loyalty_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_markunread_mailbox_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_markunread_mailbox_24px.svg new file mode 100644 index 0000000..7237f6b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_markunread_mailbox_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_motorcycle_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_motorcycle_24px.svg new file mode 100644 index 0000000..bc98009 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_motorcycle_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_note_add_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_note_add_24px.svg new file mode 100644 index 0000000..36c9d08 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_note_add_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_offline_pin_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_offline_pin_24px.svg new file mode 100644 index 0000000..c1abee0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_offline_pin_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_opacity_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_opacity_24px.svg new file mode 100644 index 0000000..af841ac --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_opacity_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_open_in_browser_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_open_in_browser_24px.svg new file mode 100644 index 0000000..39bc1c0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_open_in_browser_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_open_in_new_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_open_in_new_24px.svg new file mode 100644 index 0000000..40f6564 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_open_in_new_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_open_with_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_open_with_24px.svg new file mode 100644 index 0000000..e7fc349 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_open_with_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_pageview_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_pageview_24px.svg new file mode 100644 index 0000000..224cf28 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_pageview_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_pan_tool_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_pan_tool_24px.svg new file mode 100644 index 0000000..a89a41c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_pan_tool_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_payment_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_payment_24px.svg new file mode 100644 index 0000000..99afa68 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_payment_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_camera_mic_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_camera_mic_24px.svg new file mode 100644 index 0000000..e5ef14b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_camera_mic_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_contact_calendar_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_contact_calendar_24px.svg new file mode 100644 index 0000000..903123a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_contact_calendar_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_data_setting_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_data_setting_24px.svg new file mode 100644 index 0000000..3720f3a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_data_setting_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_device_information_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_device_information_24px.svg new file mode 100644 index 0000000..89a3a8a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_device_information_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_identity_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_identity_24px.svg new file mode 100644 index 0000000..a1ac943 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_identity_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_media_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_media_24px.svg new file mode 100644 index 0000000..7420f7b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_media_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_phone_msg_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_phone_msg_24px.svg new file mode 100644 index 0000000..aa35fb8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_phone_msg_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_scan_wifi_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_scan_wifi_24px.svg new file mode 100644 index 0000000..97dff31 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_perm_scan_wifi_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_pets_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_pets_24px.svg new file mode 100644 index 0000000..e4d7d48 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_pets_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_picture_in_picture_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_picture_in_picture_24px.svg new file mode 100644 index 0000000..b74607d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_picture_in_picture_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_picture_in_picture_alt_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_picture_in_picture_alt_24px.svg new file mode 100644 index 0000000..7f7e861 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_picture_in_picture_alt_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_play_for_work_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_play_for_work_24px.svg new file mode 100644 index 0000000..3fd53d5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_play_for_work_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_polymer_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_polymer_24px.svg new file mode 100644 index 0000000..11dfede --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_polymer_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_power_settings_new_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_power_settings_new_24px.svg new file mode 100644 index 0000000..27e5293 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_power_settings_new_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_pregnant_woman_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_pregnant_woman_24px.svg new file mode 100644 index 0000000..7e1be40 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_pregnant_woman_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_print_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_print_24px.svg new file mode 100644 index 0000000..6128bd8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_print_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_query_builder_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_query_builder_24px.svg new file mode 100644 index 0000000..fac5f2e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_query_builder_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_question_answer_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_question_answer_24px.svg new file mode 100644 index 0000000..8c958d9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_question_answer_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_receipt_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_receipt_24px.svg new file mode 100644 index 0000000..1357bbd --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_receipt_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_record_voice_over_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_record_voice_over_24px.svg new file mode 100644 index 0000000..2ce9798 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_record_voice_over_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_redeem_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_redeem_24px.svg new file mode 100644 index 0000000..30e51d6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_redeem_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_reorder_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_reorder_24px.svg new file mode 100644 index 0000000..7f277b8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_reorder_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_report_problem_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_report_problem_24px.svg new file mode 100644 index 0000000..dfcf997 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_report_problem_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_restore_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_restore_24px.svg new file mode 100644 index 0000000..c00b86b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_restore_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_room_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_room_24px.svg new file mode 100644 index 0000000..490afe9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_room_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_rounded_corner_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_rounded_corner_24px.svg new file mode 100644 index 0000000..8dc2bf4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_rounded_corner_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_rowing_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_rowing_24px.svg new file mode 100644 index 0000000..5c9f926 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_rowing_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_schedule_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_schedule_24px.svg new file mode 100644 index 0000000..fac5f2e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_schedule_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_search_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_search_24px.svg new file mode 100644 index 0000000..1244005 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_search_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_24px.svg new file mode 100644 index 0000000..a09d544 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_applications_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_applications_24px.svg new file mode 100644 index 0000000..38d4313 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_applications_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_backup_restore_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_backup_restore_24px.svg new file mode 100644 index 0000000..c5bb02b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_backup_restore_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_bluetooth_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_bluetooth_24px.svg new file mode 100644 index 0000000..e4b2766 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_bluetooth_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_brightness_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_brightness_24px.svg new file mode 100644 index 0000000..d372055 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_brightness_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_cell_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_cell_24px.svg new file mode 100644 index 0000000..3f833df --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_cell_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_ethernet_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_ethernet_24px.svg new file mode 100644 index 0000000..8f9c077 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_ethernet_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_input_antenna_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_input_antenna_24px.svg new file mode 100644 index 0000000..12500f6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_input_antenna_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_input_component_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_input_component_24px.svg new file mode 100644 index 0000000..df14aab --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_input_component_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_input_composite_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_input_composite_24px.svg new file mode 100644 index 0000000..df14aab --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_input_composite_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_input_hdmi_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_input_hdmi_24px.svg new file mode 100644 index 0000000..38b19d2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_input_hdmi_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_input_svideo_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_input_svideo_24px.svg new file mode 100644 index 0000000..94d1cc3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_input_svideo_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_overscan_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_overscan_24px.svg new file mode 100644 index 0000000..6befe39 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_overscan_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_phone_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_phone_24px.svg new file mode 100644 index 0000000..dd68714 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_phone_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_power_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_power_24px.svg new file mode 100644 index 0000000..e27fec1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_power_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_remote_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_remote_24px.svg new file mode 100644 index 0000000..37fd295 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_remote_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_voice_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_voice_24px.svg new file mode 100644 index 0000000..c55b677 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_settings_voice_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_shop_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_shop_24px.svg new file mode 100644 index 0000000..0b4e499 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_shop_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_shop_two_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_shop_two_24px.svg new file mode 100644 index 0000000..534daf6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_shop_two_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_shopping_basket_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_shopping_basket_24px.svg new file mode 100644 index 0000000..3706021 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_shopping_basket_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_shopping_cart_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_shopping_cart_24px.svg new file mode 100644 index 0000000..ee758e6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_shopping_cart_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_speaker_notes_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_speaker_notes_24px.svg new file mode 100644 index 0000000..d21630c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_speaker_notes_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_spellcheck_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_spellcheck_24px.svg new file mode 100644 index 0000000..3c1dd06 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_spellcheck_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_stars_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_stars_24px.svg new file mode 100644 index 0000000..ff48df4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_stars_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_store_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_store_24px.svg new file mode 100644 index 0000000..2b06cc5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_store_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_subject_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_subject_24px.svg new file mode 100644 index 0000000..3772a0b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_subject_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_supervisor_account_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_supervisor_account_24px.svg new file mode 100644 index 0000000..004b4af --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_supervisor_account_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_swap_horiz_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_swap_horiz_24px.svg new file mode 100644 index 0000000..86e9cad --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_swap_horiz_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_swap_vert_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_swap_vert_24px.svg new file mode 100644 index 0000000..bcdee8d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_swap_vert_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_swap_vertical_circle_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_swap_vertical_circle_24px.svg new file mode 100644 index 0000000..40e62a2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_swap_vertical_circle_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_system_update_alt_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_system_update_alt_24px.svg new file mode 100644 index 0000000..4f3e4a2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_system_update_alt_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_tab_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_tab_24px.svg new file mode 100644 index 0000000..f7e96a8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_tab_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_tab_unselected_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_tab_unselected_24px.svg new file mode 100644 index 0000000..f5d8a3d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_tab_unselected_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_theaters_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_theaters_24px.svg new file mode 100644 index 0000000..74652a6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_theaters_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_thumb_down_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_thumb_down_24px.svg new file mode 100644 index 0000000..a27f6dc --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_thumb_down_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_thumb_up_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_thumb_up_24px.svg new file mode 100644 index 0000000..f64ad7b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_thumb_up_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_thumbs_up_down_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_thumbs_up_down_24px.svg new file mode 100644 index 0000000..39e9a0e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_thumbs_up_down_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_timeline_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_timeline_24px.svg new file mode 100644 index 0000000..9dc0ca3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_timeline_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_toc_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_toc_24px.svg new file mode 100644 index 0000000..238110f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_toc_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_today_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_today_24px.svg new file mode 100644 index 0000000..f99cddc --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_today_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_toll_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_toll_24px.svg new file mode 100644 index 0000000..a1b0cf1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_toll_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_touch_app_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_touch_app_24px.svg new file mode 100644 index 0000000..18b65e1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_touch_app_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_track_changes_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_track_changes_24px.svg new file mode 100644 index 0000000..9a9c9df --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_track_changes_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_translate_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_translate_24px.svg new file mode 100644 index 0000000..0821ae1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_translate_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_trending_down_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_trending_down_24px.svg new file mode 100644 index 0000000..7a49746 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_trending_down_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_trending_flat_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_trending_flat_24px.svg new file mode 100644 index 0000000..bc56f81 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_trending_flat_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_trending_up_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_trending_up_24px.svg new file mode 100644 index 0000000..4728d22 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_trending_up_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_turned_in_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_turned_in_24px.svg new file mode 100644 index 0000000..1d507a6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_turned_in_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_turned_in_not_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_turned_in_not_24px.svg new file mode 100644 index 0000000..f178b05 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_turned_in_not_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_update_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_update_24px.svg new file mode 100644 index 0000000..d9576fd --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_update_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_verified_user_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_verified_user_24px.svg new file mode 100644 index 0000000..56460ee --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_verified_user_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_agenda_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_agenda_24px.svg new file mode 100644 index 0000000..b5258fe --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_agenda_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_array_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_array_24px.svg new file mode 100644 index 0000000..b969592 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_array_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_carousel_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_carousel_24px.svg new file mode 100644 index 0000000..27483c8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_carousel_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_column_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_column_24px.svg new file mode 100644 index 0000000..3ef9eab --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_column_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_day_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_day_24px.svg new file mode 100644 index 0000000..34972e0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_day_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_headline_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_headline_24px.svg new file mode 100644 index 0000000..1ee5f9a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_headline_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_list_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_list_24px.svg new file mode 100644 index 0000000..3e82bad --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_list_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_module_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_module_24px.svg new file mode 100644 index 0000000..c5383b1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_module_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_quilt_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_quilt_24px.svg new file mode 100644 index 0000000..545037a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_quilt_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_stream_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_stream_24px.svg new file mode 100644 index 0000000..6c81f14 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_stream_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_week_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_week_24px.svg new file mode 100644 index 0000000..cc535ed --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_view_week_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_visibility_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_visibility_24px.svg new file mode 100644 index 0000000..5c700e3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_visibility_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_visibility_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_visibility_off_24px.svg new file mode 100644 index 0000000..a09d176 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_visibility_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_watch_later_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_watch_later_24px.svg new file mode 100644 index 0000000..aad70b2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_watch_later_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_work_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_work_24px.svg new file mode 100644 index 0000000..ac4f81c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_work_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_youtube_searched_for_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_youtube_searched_for_24px.svg new file mode 100644 index 0000000..36e47e6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_youtube_searched_for_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_zoom_in_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_zoom_in_24px.svg new file mode 100644 index 0000000..fd48a80 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_zoom_in_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_zoom_out_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_zoom_out_24px.svg new file mode 100644 index 0000000..e70df37 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/action/ic_zoom_out_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/alert/ic_add_alert_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/alert/ic_add_alert_24px.svg new file mode 100644 index 0000000..53ee4ab --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/alert/ic_add_alert_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/alert/ic_error_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/alert/ic_error_24px.svg new file mode 100644 index 0000000..d30cc3a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/alert/ic_error_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/alert/ic_error_outline_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/alert/ic_error_outline_24px.svg new file mode 100644 index 0000000..ad877f3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/alert/ic_error_outline_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/alert/ic_warning_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/alert/ic_warning_24px.svg new file mode 100644 index 0000000..dfcf997 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/alert/ic_warning_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_add_to_queue_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_add_to_queue_24px.svg new file mode 100644 index 0000000..1970312 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_add_to_queue_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_airplay_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_airplay_24px.svg new file mode 100644 index 0000000..15939cb --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_airplay_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_album_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_album_24px.svg new file mode 100644 index 0000000..e153be6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_album_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_art_track_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_art_track_24px.svg new file mode 100644 index 0000000..88a17a6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_art_track_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_av_timer_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_av_timer_24px.svg new file mode 100644 index 0000000..cc59272 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_av_timer_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_closed_caption_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_closed_caption_24px.svg new file mode 100644 index 0000000..4df1e8f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_closed_caption_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_equalizer_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_equalizer_24px.svg new file mode 100644 index 0000000..d6031c3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_equalizer_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_explicit_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_explicit_24px.svg new file mode 100644 index 0000000..0eb1bb1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_explicit_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fast_forward_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fast_forward_24px.svg new file mode 100644 index 0000000..e81f756 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fast_forward_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fast_rewind_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fast_rewind_24px.svg new file mode 100644 index 0000000..cb82d8a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fast_rewind_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fiber_dvr_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fiber_dvr_24px.svg new file mode 100644 index 0000000..26b046f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fiber_dvr_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fiber_manual_record_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fiber_manual_record_24px.svg new file mode 100644 index 0000000..54da42f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fiber_manual_record_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fiber_new_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fiber_new_24px.svg new file mode 100644 index 0000000..943be16 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fiber_new_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fiber_pin_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fiber_pin_24px.svg new file mode 100644 index 0000000..e4a5e0c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fiber_pin_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fiber_smart_record_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fiber_smart_record_24px.svg new file mode 100644 index 0000000..02602c4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_fiber_smart_record_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_forward_10_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_forward_10_24px.svg new file mode 100644 index 0000000..9907f51 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_forward_10_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_forward_30_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_forward_30_24px.svg new file mode 100644 index 0000000..1903072 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_forward_30_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_forward_5_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_forward_5_24px.svg new file mode 100644 index 0000000..c604ca3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_forward_5_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_games_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_games_24px.svg new file mode 100644 index 0000000..62a4c9b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_games_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_hd_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_hd_24px.svg new file mode 100644 index 0000000..1fd7a76 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_hd_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_hearing_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_hearing_24px.svg new file mode 100644 index 0000000..1efd85f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_hearing_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_high_quality_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_high_quality_24px.svg new file mode 100644 index 0000000..8d8a29d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_high_quality_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_library_add_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_library_add_24px.svg new file mode 100644 index 0000000..baea3e9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_library_add_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_library_books_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_library_books_24px.svg new file mode 100644 index 0000000..614c7bf --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_library_books_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_library_music_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_library_music_24px.svg new file mode 100644 index 0000000..357e6d4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_library_music_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_loop_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_loop_24px.svg new file mode 100644 index 0000000..327ff63 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_loop_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_mic_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_mic_24px.svg new file mode 100644 index 0000000..e5691ca --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_mic_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_mic_none_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_mic_none_24px.svg new file mode 100644 index 0000000..d82849a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_mic_none_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_mic_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_mic_off_24px.svg new file mode 100644 index 0000000..4c27fb5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_mic_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_movie_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_movie_24px.svg new file mode 100644 index 0000000..8bbbb53 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_movie_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_music_video_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_music_video_24px.svg new file mode 100644 index 0000000..2fe246c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_music_video_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_new_releases_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_new_releases_24px.svg new file mode 100644 index 0000000..37ed86f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_new_releases_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_not_interested_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_not_interested_24px.svg new file mode 100644 index 0000000..065210c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_not_interested_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_pause_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_pause_24px.svg new file mode 100644 index 0000000..c20e156 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_pause_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_pause_circle_filled_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_pause_circle_filled_24px.svg new file mode 100644 index 0000000..e4763b2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_pause_circle_filled_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_pause_circle_outline_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_pause_circle_outline_24px.svg new file mode 100644 index 0000000..b1ea4fe --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_pause_circle_outline_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_play_arrow_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_play_arrow_24px.svg new file mode 100644 index 0000000..c5e1a4c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_play_arrow_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_play_circle_filled_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_play_circle_filled_24px.svg new file mode 100644 index 0000000..dd022c5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_play_circle_filled_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_play_circle_outline_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_play_circle_outline_24px.svg new file mode 100644 index 0000000..90b5a4e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_play_circle_outline_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_playlist_add_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_playlist_add_24px.svg new file mode 100644 index 0000000..a0ee454 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_playlist_add_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_playlist_add_check_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_playlist_add_check_24px.svg new file mode 100644 index 0000000..c455dab --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_playlist_add_check_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_playlist_play_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_playlist_play_24px.svg new file mode 100644 index 0000000..4b049f7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_playlist_play_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_queue_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_queue_24px.svg new file mode 100644 index 0000000..baea3e9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_queue_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_queue_music_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_queue_music_24px.svg new file mode 100644 index 0000000..5fed92b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_queue_music_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_queue_play_next_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_queue_play_next_24px.svg new file mode 100644 index 0000000..db90329 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_queue_play_next_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_radio_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_radio_24px.svg new file mode 100644 index 0000000..6729cf5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_radio_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_recent_actors_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_recent_actors_24px.svg new file mode 100644 index 0000000..f1d8deb --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_recent_actors_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_remove_from_queue_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_remove_from_queue_24px.svg new file mode 100644 index 0000000..bbd2791 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_remove_from_queue_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_repeat_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_repeat_24px.svg new file mode 100644 index 0000000..6c58d4e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_repeat_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_repeat_one_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_repeat_one_24px.svg new file mode 100644 index 0000000..fcc3d14 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_repeat_one_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_replay_10_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_replay_10_24px.svg new file mode 100644 index 0000000..6ddad5d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_replay_10_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_replay_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_replay_24px.svg new file mode 100644 index 0000000..c3c75e7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_replay_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_replay_30_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_replay_30_24px.svg new file mode 100644 index 0000000..7c98374 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_replay_30_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_replay_5_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_replay_5_24px.svg new file mode 100644 index 0000000..93d1b21 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_replay_5_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_shuffle_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_shuffle_24px.svg new file mode 100644 index 0000000..f5bcf6f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_shuffle_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_skip_next_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_skip_next_24px.svg new file mode 100644 index 0000000..178eca3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_skip_next_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_skip_previous_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_skip_previous_24px.svg new file mode 100644 index 0000000..e719ff5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_skip_previous_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_slow_motion_video_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_slow_motion_video_24px.svg new file mode 100644 index 0000000..b28f886 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_slow_motion_video_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_snooze_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_snooze_24px.svg new file mode 100644 index 0000000..738bda8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_snooze_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_sort_by_alpha_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_sort_by_alpha_24px.svg new file mode 100644 index 0000000..b9975f9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_sort_by_alpha_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_stop_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_stop_24px.svg new file mode 100644 index 0000000..48d3f2d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_stop_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_subscriptions_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_subscriptions_24px.svg new file mode 100644 index 0000000..b5b5250 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_subscriptions_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_subtitles_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_subtitles_24px.svg new file mode 100644 index 0000000..ea10bfd --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_subtitles_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_surround_sound_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_surround_sound_24px.svg new file mode 100644 index 0000000..675fd39 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_surround_sound_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_video_library_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_video_library_24px.svg new file mode 100644 index 0000000..f69f3cb --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_video_library_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_videocam_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_videocam_24px.svg new file mode 100644 index 0000000..a2606b1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_videocam_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_videocam_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_videocam_off_24px.svg new file mode 100644 index 0000000..134c583 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_videocam_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_volume_down_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_volume_down_24px.svg new file mode 100644 index 0000000..b993e7c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_volume_down_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_volume_mute_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_volume_mute_24px.svg new file mode 100644 index 0000000..66b7daf --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_volume_mute_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_volume_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_volume_off_24px.svg new file mode 100644 index 0000000..b10f2bf --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_volume_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_volume_up_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_volume_up_24px.svg new file mode 100644 index 0000000..fe7100e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_volume_up_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_web_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_web_24px.svg new file mode 100644 index 0000000..2f2150c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_web_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_web_asset_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_web_asset_24px.svg new file mode 100644 index 0000000..74e61d3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/av/ic_web_asset_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/NewTux.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/NewTux.svg new file mode 100644 index 0000000..da9140f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/NewTux.svg @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/abacus.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/abacus.svg new file mode 100644 index 0000000..275a16f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/abacus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/address-book.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/address-book.svg new file mode 100644 index 0000000..45dc0c0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/address-book.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/address-book2.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/address-book2.svg new file mode 100644 index 0000000..fbafcf2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/address-book2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/aim.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/aim.svg new file mode 100644 index 0000000..642997c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/aim.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/alarm.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/alarm.svg new file mode 100644 index 0000000..82d97c1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/alarm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/apple.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/apple.svg new file mode 100644 index 0000000..32b869d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/apple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/arrow-left.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/arrow-left.svg new file mode 100644 index 0000000..57f39f9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/arrow-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/arrow-right.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/arrow-right.svg new file mode 100644 index 0000000..8b23383 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/arrows-updown.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/arrows-updown.svg new file mode 100644 index 0000000..7503050 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/arrows-updown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/atm-cash.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/atm-cash.svg new file mode 100644 index 0000000..79c00ba --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/atm-cash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/award1.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/award1.svg new file mode 100644 index 0000000..ec80c5b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/award1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/award2.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/award2.svg new file mode 100644 index 0000000..6c6d052 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/award2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/award3.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/award3.svg new file mode 100644 index 0000000..8aa754a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/award3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/award4.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/award4.svg new file mode 100644 index 0000000..4919081 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/award4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/award5.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/award5.svg new file mode 100644 index 0000000..f9f3c50 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/award5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/badge01.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/badge01.svg new file mode 100644 index 0000000..276eb96 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/badge01.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/badge02.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/badge02.svg new file mode 100644 index 0000000..00c801c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/badge02.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/bank.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/bank.svg new file mode 100644 index 0000000..293a0d9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/bank.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/bank2.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/bank2.svg new file mode 100644 index 0000000..286b118 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/bank2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/bell.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/bell.svg new file mode 100644 index 0000000..762fff6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/bell.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/binoculars.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/binoculars.svg new file mode 100644 index 0000000..5f7ec31 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/binoculars.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/bomb.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/bomb.svg new file mode 100644 index 0000000..eee7859 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/bomb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/bonsai.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/bonsai.svg new file mode 100644 index 0000000..8c900c7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/bonsai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/book-apple.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/book-apple.svg new file mode 100644 index 0000000..c2d1c3a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/book-apple.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/book.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/book.svg new file mode 100644 index 0000000..7ec5e82 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/book.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/bookmark.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/bookmark.svg new file mode 100644 index 0000000..c46944a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/bookmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/box.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/box.svg new file mode 100644 index 0000000..d304f90 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/box.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/brain.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/brain.svg new file mode 100644 index 0000000..35a8628 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/brain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/briefcase.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/briefcase.svg new file mode 100644 index 0000000..4f895e3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/briefcase.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/browser01.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/browser01.svg new file mode 100644 index 0000000..c10baf1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/browser01.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/browser02.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/browser02.svg new file mode 100644 index 0000000..dd1c304 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/browser02.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/buildings.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/buildings.svg new file mode 100644 index 0000000..e56322c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/buildings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/buy-sign.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/buy-sign.svg new file mode 100644 index 0000000..2b88bd0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/buy-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calculator1.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calculator1.svg new file mode 100644 index 0000000..f0abdc7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calculator1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calculator2.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calculator2.svg new file mode 100644 index 0000000..ace1328 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calculator2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calculator3.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calculator3.svg new file mode 100644 index 0000000..39154f6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calculator3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calendar1.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calendar1.svg new file mode 100644 index 0000000..8b4eb29 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calendar1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calendar2.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calendar2.svg new file mode 100644 index 0000000..d1ebed8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calendar2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calendar3.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calendar3.svg new file mode 100644 index 0000000..ef2c4e4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calendar3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calendar4.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calendar4.svg new file mode 100644 index 0000000..83d65e6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calendar4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calendar5.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calendar5.svg new file mode 100644 index 0000000..9c268db --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/calendar5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/certificate.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/certificate.svg new file mode 100644 index 0000000..4607db6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/certificate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/champagne.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/champagne.svg new file mode 100644 index 0000000..96ec85a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/champagne.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character01.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character01.svg new file mode 100644 index 0000000..c297e50 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character01.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character02.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character02.svg new file mode 100644 index 0000000..d5863e7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character02.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character03.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character03.svg new file mode 100644 index 0000000..df6db97 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character03.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character04.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character04.svg new file mode 100644 index 0000000..7867a47 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character04.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character05.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character05.svg new file mode 100644 index 0000000..600a2fc --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character05.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character06.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character06.svg new file mode 100644 index 0000000..3d6beca --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character06.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character07.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character07.svg new file mode 100644 index 0000000..9ce3688 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character07.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character08.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character08.svg new file mode 100644 index 0000000..3b9a663 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/character08.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart-analysis.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart-analysis.svg new file mode 100644 index 0000000..da1eaf7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart-analysis.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart-board.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart-board.svg new file mode 100644 index 0000000..88816e2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart-board.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart-pyramid.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart-pyramid.svg new file mode 100644 index 0000000..433ba2e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart-pyramid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart01.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart01.svg new file mode 100644 index 0000000..1a0969a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart01.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart02.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart02.svg new file mode 100644 index 0000000..55d7111 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart02.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart03.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart03.svg new file mode 100644 index 0000000..2d2dc08 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart03.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart04.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart04.svg new file mode 100644 index 0000000..479b46f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart04.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart05.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart05.svg new file mode 100644 index 0000000..2d3107c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart05.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart06.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart06.svg new file mode 100644 index 0000000..c3bb6cb --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart06.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart07.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart07.svg new file mode 100644 index 0000000..a34ad63 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart07.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart08.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart08.svg new file mode 100644 index 0000000..d47a2a9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart08.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart09.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart09.svg new file mode 100644 index 0000000..4b8b166 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart09.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart10.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart10.svg new file mode 100644 index 0000000..ac38722 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart10.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart11.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart11.svg new file mode 100644 index 0000000..450ce6c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart11.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart12.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart12.svg new file mode 100644 index 0000000..450ec12 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart12.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart13.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart13.svg new file mode 100644 index 0000000..2394383 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart13.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart14.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart14.svg new file mode 100644 index 0000000..cd30a5f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart14.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart15.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart15.svg new file mode 100644 index 0000000..4e3c83a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart15.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart16.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart16.svg new file mode 100644 index 0000000..8d2302a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart16.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart17.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart17.svg new file mode 100644 index 0000000..00470b2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart17.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart18.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart18.svg new file mode 100644 index 0000000..39a8eda --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart18.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart19.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart19.svg new file mode 100644 index 0000000..e91443b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart19.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart20.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart20.svg new file mode 100644 index 0000000..76d681a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart20.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart21.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart21.svg new file mode 100644 index 0000000..c797594 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chart21.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chat.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chat.svg new file mode 100644 index 0000000..b1d0ce4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/checklist.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/checklist.svg new file mode 100644 index 0000000..9f3bb68 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/checklist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/checklist2.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/checklist2.svg new file mode 100644 index 0000000..1d6685b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/checklist2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/checklist3.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/checklist3.svg new file mode 100644 index 0000000..40a8f2e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/checklist3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chemistry.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chemistry.svg new file mode 100644 index 0000000..ee646f0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chemistry.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chess-knight.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chess-knight.svg new file mode 100644 index 0000000..55a71da --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chess-knight.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chess-rook.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chess-rook.svg new file mode 100644 index 0000000..38a5857 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chess-rook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chess.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chess.svg new file mode 100644 index 0000000..de86d9b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/chess.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/clock.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/clock.svg new file mode 100644 index 0000000..3fe7761 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/clock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/closed-sign.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/closed-sign.svg new file mode 100644 index 0000000..60b5c24 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/closed-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/cloud-coins.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/cloud-coins.svg new file mode 100644 index 0000000..c362699 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/cloud-coins.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/cloud-down.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/cloud-down.svg new file mode 100644 index 0000000..a02c09b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/cloud-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/cloud-up.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/cloud-up.svg new file mode 100644 index 0000000..770a414 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/cloud-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/coffee.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/coffee.svg new file mode 100644 index 0000000..7fb17d5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/coffee.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/conference.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/conference.svg new file mode 100644 index 0000000..96601f7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/conference.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/contact-book.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/contact-book.svg new file mode 100644 index 0000000..6cd2f9b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/contact-book.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/coupon.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/coupon.svg new file mode 100644 index 0000000..297ec04 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/coupon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/credit-card.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/credit-card.svg new file mode 100644 index 0000000..f46e204 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/credit-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/crown.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/crown.svg new file mode 100644 index 0000000..d8893ee --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/crown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/currencies.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/currencies.svg new file mode 100644 index 0000000..e1e361d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/currencies.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/database.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/database.svg new file mode 100644 index 0000000..7609c75 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/database.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/delivery.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/delivery.svg new file mode 100644 index 0000000..2bf9882 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/delivery.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/diagram-hierarchy.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/diagram-hierarchy.svg new file mode 100644 index 0000000..a2a5ede --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/diagram-hierarchy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/diamond.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/diamond.svg new file mode 100644 index 0000000..18a78c3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/diamond.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/dollar.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/dollar.svg new file mode 100644 index 0000000..fc5e779 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/dollar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/drawer.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/drawer.svg new file mode 100644 index 0000000..ec1ae17 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/drawer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/egg.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/egg.svg new file mode 100644 index 0000000..7e74c7b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/egg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/emblem.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/emblem.svg new file mode 100644 index 0000000..c88263e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/emblem.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/envelope-money.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/envelope-money.svg new file mode 100644 index 0000000..436d054 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/envelope-money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/envelopes.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/envelopes.svg new file mode 100644 index 0000000..71a0ff3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/envelopes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/euro.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/euro.svg new file mode 100644 index 0000000..c0aac7c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/euro.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/exchange.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/exchange.svg new file mode 100644 index 0000000..113d900 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/exchange.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/exit.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/exit.svg new file mode 100644 index 0000000..27f59b0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/exit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/factory.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/factory.svg new file mode 100644 index 0000000..1b0d359 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/factory.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/fax.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/fax.svg new file mode 100644 index 0000000..c086dc3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/fax.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file01.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file01.svg new file mode 100644 index 0000000..4dc2be6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file01.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file02.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file02.svg new file mode 100644 index 0000000..048e6db --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file02.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file03.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file03.svg new file mode 100644 index 0000000..7265e35 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file03.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file04.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file04.svg new file mode 100644 index 0000000..6c80af6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file04.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file05.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file05.svg new file mode 100644 index 0000000..813a6e5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file05.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file06.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file06.svg new file mode 100644 index 0000000..e105c30 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file06.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file07.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file07.svg new file mode 100644 index 0000000..5aae1fa --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file07.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file08.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file08.svg new file mode 100644 index 0000000..7eca7d4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file08.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file09.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file09.svg new file mode 100644 index 0000000..60c4cc9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file09.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file10.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file10.svg new file mode 100644 index 0000000..5a758ca --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/file10.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/files.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/files.svg new file mode 100644 index 0000000..f3e506b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/files.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/fire.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/fire.svg new file mode 100644 index 0000000..a718bc0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/fire.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/fish.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/fish.svg new file mode 100644 index 0000000..0247f65 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/fish.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/flag.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/flag.svg new file mode 100644 index 0000000..e3e8065 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/flag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folder-add.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folder-add.svg new file mode 100644 index 0000000..9a9d43b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folder-add.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folder-delete.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folder-delete.svg new file mode 100644 index 0000000..1418eb0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folder-delete.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folder-online.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folder-online.svg new file mode 100644 index 0000000..988f0d7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folder-online.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folder-private.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folder-private.svg new file mode 100644 index 0000000..8e0b35e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folder-private.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folder-remove.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folder-remove.svg new file mode 100644 index 0000000..292e835 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folder-remove.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folder.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folder.svg new file mode 100644 index 0000000..47acbe4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folder.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folders.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folders.svg new file mode 100644 index 0000000..a01994f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/folders.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/funnel-money.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/funnel-money.svg new file mode 100644 index 0000000..a3194c9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/funnel-money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/funnel.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/funnel.svg new file mode 100644 index 0000000..9204d45 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/funnel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/gauge.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/gauge.svg new file mode 100644 index 0000000..309ec58 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/gauge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/gauge2.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/gauge2.svg new file mode 100644 index 0000000..6673f11 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/gauge2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/gears1.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/gears1.svg new file mode 100644 index 0000000..80e98a2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/gears1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/gears2.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/gears2.svg new file mode 100644 index 0000000..688fbe1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/gears2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/glasses-moustache.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/glasses-moustache.svg new file mode 100644 index 0000000..ab9d3b5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/glasses-moustache.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/globe-money.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/globe-money.svg new file mode 100644 index 0000000..0282cdb --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/globe-money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/globe.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/globe.svg new file mode 100644 index 0000000..a85a87a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/globe2.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/globe2.svg new file mode 100644 index 0000000..3776fef --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/globe2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/graduation-hat.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/graduation-hat.svg new file mode 100644 index 0000000..5c5b116 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/graduation-hat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hand-globe.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hand-globe.svg new file mode 100644 index 0000000..2ebd72d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hand-globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hand-key.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hand-key.svg new file mode 100644 index 0000000..96a3384 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hand-key.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hand-money.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hand-money.svg new file mode 100644 index 0000000..9bfcc10 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hand-money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hand-money2.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hand-money2.svg new file mode 100644 index 0000000..ed71a21 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hand-money2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/handshake.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/handshake.svg new file mode 100644 index 0000000..ef17076 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/handshake.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hat-moustache.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hat-moustache.svg new file mode 100644 index 0000000..9a571d0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hat-moustache.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hat.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hat.svg new file mode 100644 index 0000000..1e5c314 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-arrows.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-arrows.svg new file mode 100644 index 0000000..c1ba61a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-arrows.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-battery.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-battery.svg new file mode 100644 index 0000000..1c2499c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-battery.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-check.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-check.svg new file mode 100644 index 0000000..363ee64 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-compass.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-compass.svg new file mode 100644 index 0000000..a0f9fae --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-compass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-dollar.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-dollar.svg new file mode 100644 index 0000000..82f28f4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-dollar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-exclamation.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-exclamation.svg new file mode 100644 index 0000000..e2e876b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-flash.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-flash.svg new file mode 100644 index 0000000..e1be808 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-flash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-gauge.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-gauge.svg new file mode 100644 index 0000000..369ca13 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-gauge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-gears.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-gears.svg new file mode 100644 index 0000000..786f77c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-gears.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-hourglass.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-hourglass.svg new file mode 100644 index 0000000..58e3afb --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-hourglass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-idea.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-idea.svg new file mode 100644 index 0000000..d94b224 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-idea.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-question.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-question.svg new file mode 100644 index 0000000..55deb94 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-structure.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-structure.svg new file mode 100644 index 0000000..0f6f223 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head-structure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head.svg new file mode 100644 index 0000000..d055185 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/head.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/headquarters.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/headquarters.svg new file mode 100644 index 0000000..26e0d13 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/headquarters.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hourglass.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hourglass.svg new file mode 100644 index 0000000..0692007 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hourglass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hours.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hours.svg new file mode 100644 index 0000000..d2e4ecb --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/hours.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/incoming.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/incoming.svg new file mode 100644 index 0000000..f79eb07 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/incoming.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/ingots.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/ingots.svg new file mode 100644 index 0000000..3294cd5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/ingots.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/key.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/key.svg new file mode 100644 index 0000000..7e29939 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/key.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/key2.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/key2.svg new file mode 100644 index 0000000..971fa8d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/key2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/keyboard.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/keyboard.svg new file mode 100644 index 0000000..62a1dec --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/keyboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/label.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/label.svg new file mode 100644 index 0000000..fed49c2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/label.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/lamp.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/lamp.svg new file mode 100644 index 0000000..64e7386 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/lamp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-article.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-article.svg new file mode 100644 index 0000000..3e8ecac --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-article.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-cart.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-cart.svg new file mode 100644 index 0000000..94ddbe9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-cart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-chart.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-chart.svg new file mode 100644 index 0000000..4ccd200 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-chart2.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-chart2.svg new file mode 100644 index 0000000..d606fe6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-chart2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-diagram.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-diagram.svg new file mode 100644 index 0000000..0942729 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-diagram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-envelope.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-envelope.svg new file mode 100644 index 0000000..acec624 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-envelope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-finance.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-finance.svg new file mode 100644 index 0000000..eb4f6be --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-finance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-privacy.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-privacy.svg new file mode 100644 index 0000000..0907fb1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-privacy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-settings.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-settings.svg new file mode 100644 index 0000000..5526c0d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-user.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-user.svg new file mode 100644 index 0000000..911bbc7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop.svg new file mode 100644 index 0000000..fabd89a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/laptop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/lightbulb-green.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/lightbulb-green.svg new file mode 100644 index 0000000..af57114 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/lightbulb-green.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/lightbulb.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/lightbulb.svg new file mode 100644 index 0000000..a3ab446 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/lightbulb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/lightning.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/lightning.svg new file mode 100644 index 0000000..74a8963 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/lightning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/like.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/like.svg new file mode 100644 index 0000000..835f011 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/like.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/lock.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/lock.svg new file mode 100644 index 0000000..a02af35 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/magnet-money.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/magnet-money.svg new file mode 100644 index 0000000..41add94 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/magnet-money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/magnifying-glass.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/magnifying-glass.svg new file mode 100644 index 0000000..11b218b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/magnifying-glass.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/manager-globe.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/manager-globe.svg new file mode 100644 index 0000000..b9c5df0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/manager-globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/manager-idea.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/manager-idea.svg new file mode 100644 index 0000000..aa512f8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/manager-idea.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/manager01.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/manager01.svg new file mode 100644 index 0000000..b5c3022 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/manager01.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/manager02.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/manager02.svg new file mode 100644 index 0000000..3f774c8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/manager02.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/meditation.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/meditation.svg new file mode 100644 index 0000000..bd6ae84 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/meditation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/megaphone.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/megaphone.svg new file mode 100644 index 0000000..0decaea --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/megaphone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money-growth.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money-growth.svg new file mode 100644 index 0000000..5773b05 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money-growth.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money-scales.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money-scales.svg new file mode 100644 index 0000000..5b5264d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money-scales.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money.svg new file mode 100644 index 0000000..41095a4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money2.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money2.svg new file mode 100644 index 0000000..df56ac3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money3.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money3.svg new file mode 100644 index 0000000..771e0dd --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money4.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money4.svg new file mode 100644 index 0000000..a849b68 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money5.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money5.svg new file mode 100644 index 0000000..4480c96 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money6.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money6.svg new file mode 100644 index 0000000..46a7e9b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/money6.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/monitor.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/monitor.svg new file mode 100644 index 0000000..b021062 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/monitor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/mouse.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/mouse.svg new file mode 100644 index 0000000..533be9d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/mouse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/nest-money.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/nest-money.svg new file mode 100644 index 0000000..fe2dcee --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/nest-money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/newspaper-jobs.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/newspaper-jobs.svg new file mode 100644 index 0000000..86e364d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/newspaper-jobs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/newspaper-pen.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/newspaper-pen.svg new file mode 100644 index 0000000..c728687 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/newspaper-pen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/newspaper.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/newspaper.svg new file mode 100644 index 0000000..3022637 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/newspaper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/note-paper.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/note-paper.svg new file mode 100644 index 0000000..d5cad1b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/note-paper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/office-chair.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/office-chair.svg new file mode 100644 index 0000000..9ef31aa --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/office-chair.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/open-sign.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/open-sign.svg new file mode 100644 index 0000000..5474059 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/open-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/outgoing.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/outgoing.svg new file mode 100644 index 0000000..f7ac21c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/outgoing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/paper-clip.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/paper-clip.svg new file mode 100644 index 0000000..c9c360b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/paper-clip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/paper-plane.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/paper-plane.svg new file mode 100644 index 0000000..c9c360b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/paper-plane.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pen.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pen.svg new file mode 100644 index 0000000..f1f0957 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pen2.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pen2.svg new file mode 100644 index 0000000..e68aa71 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pen2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pencil.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pencil.svg new file mode 100644 index 0000000..a6b5db7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pencil.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pens-pencils.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pens-pencils.svg new file mode 100644 index 0000000..725a1de --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pens-pencils.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-arrows06.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-arrows06.svg new file mode 100644 index 0000000..d78cad8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-arrows06.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-gears.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-gears.svg new file mode 100644 index 0000000..f973324 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-gears.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-handshake.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-handshake.svg new file mode 100644 index 0000000..20b6069 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-handshake.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-idea.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-idea.svg new file mode 100644 index 0000000..0ac0e0d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-idea.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-meeting.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-meeting.svg new file mode 100644 index 0000000..65385c3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-meeting.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-meeting02.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-meeting02.svg new file mode 100644 index 0000000..1743ca2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-meeting02.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-search01.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-search01.svg new file mode 100644 index 0000000..d791f71 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-search01.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-search02.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-search02.svg new file mode 100644 index 0000000..832b62b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-search02.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure.svg new file mode 100644 index 0000000..07116b8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure01.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure01.svg new file mode 100644 index 0000000..0a3ed2f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure01.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure02.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure02.svg new file mode 100644 index 0000000..088d2d0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure02.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure03.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure03.svg new file mode 100644 index 0000000..d70fa0b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure03.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure04.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure04.svg new file mode 100644 index 0000000..c3a6981 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure04.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure05.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure05.svg new file mode 100644 index 0000000..46068f3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure05.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure06.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure06.svg new file mode 100644 index 0000000..a779cf9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure06.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure07.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure07.svg new file mode 100644 index 0000000..b969421 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/people-structure07.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/percent.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/percent.svg new file mode 100644 index 0000000..2eabdab --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/percent.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/periscopemoney.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/periscopemoney.svg new file mode 100644 index 0000000..61d8b49 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/periscopemoney.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-arrows01.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-arrows01.svg new file mode 100644 index 0000000..fd2ab6c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-arrows01.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-arrows012.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-arrows012.svg new file mode 100644 index 0000000..7f22c58 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-arrows012.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-arrows02.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-arrows02.svg new file mode 100644 index 0000000..89b319b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-arrows02.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-arrows022.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-arrows022.svg new file mode 100644 index 0000000..73d8e6d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-arrows022.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-arrows03.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-arrows03.svg new file mode 100644 index 0000000..c4dcec8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-arrows03.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-checkmark.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-checkmark.svg new file mode 100644 index 0000000..f4116d6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-checkmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-cross.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-cross.svg new file mode 100644 index 0000000..f439ba2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-cross.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-data.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-data.svg new file mode 100644 index 0000000..ba78d0b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-data.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-dollar.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-dollar.svg new file mode 100644 index 0000000..57d1196 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-dollar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-finance.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-finance.svg new file mode 100644 index 0000000..7983ba8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-finance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-flag.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-flag.svg new file mode 100644 index 0000000..d535a54 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-flag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-globe.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-globe.svg new file mode 100644 index 0000000..014f4ef --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-idea02.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-idea02.svg new file mode 100644 index 0000000..f616a13 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-idea02.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-info.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-info.svg new file mode 100644 index 0000000..a2d0722 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-puzzle.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-puzzle.svg new file mode 100644 index 0000000..2475652 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-puzzle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-scales.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-scales.svg new file mode 100644 index 0000000..141d420 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-scales.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-time.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-time.svg new file mode 100644 index 0000000..0039aba --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-time.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-umbrella.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-umbrella.svg new file mode 100644 index 0000000..cff8a98 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/person-umbrella.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/phone.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/phone.svg new file mode 100644 index 0000000..fd3148b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pie-chart01.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pie-chart01.svg new file mode 100644 index 0000000..5a863f3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pie-chart01.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pie-chart02.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pie-chart02.svg new file mode 100644 index 0000000..51a4210 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pie-chart02.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/piggy-bank.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/piggy-bank.svg new file mode 100644 index 0000000..112b5c4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/piggy-bank.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pin.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pin.svg new file mode 100644 index 0000000..e664f5e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/plant-money.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/plant-money.svg new file mode 100644 index 0000000..f6dcc06 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/plant-money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/plant.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/plant.svg new file mode 100644 index 0000000..bcf1d7d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/plant.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pound.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pound.svg new file mode 100644 index 0000000..9499139 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pound.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/presentation.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/presentation.svg new file mode 100644 index 0000000..514bcd0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/presentation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/presentation02.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/presentation02.svg new file mode 100644 index 0000000..ebe3ae3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/presentation02.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/preson-chart02.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/preson-chart02.svg new file mode 100644 index 0000000..98564a4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/preson-chart02.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/preson-chart03.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/preson-chart03.svg new file mode 100644 index 0000000..1e295fb --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/preson-chart03.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/preson-chart04.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/preson-chart04.svg new file mode 100644 index 0000000..1ffad6e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/preson-chart04.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/preson-laurels.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/preson-laurels.svg new file mode 100644 index 0000000..ad3ebff --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/preson-laurels.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/preson-megaphone.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/preson-megaphone.svg new file mode 100644 index 0000000..08480d1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/preson-megaphone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/preson-stairs.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/preson-stairs.svg new file mode 100644 index 0000000..8578566 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/preson-stairs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/printer.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/printer.svg new file mode 100644 index 0000000..a57c767 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/printer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/profile.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/profile.svg new file mode 100644 index 0000000..b0a3ade --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/profile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pulse.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pulse.svg new file mode 100644 index 0000000..1015cf7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/pulse.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/puzzle.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/puzzle.svg new file mode 100644 index 0000000..0b471f5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/puzzle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/quill.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/quill.svg new file mode 100644 index 0000000..c69f329 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/quill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/recycle.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/recycle.svg new file mode 100644 index 0000000..d146b7a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/recycle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/rocket.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/rocket.svg new file mode 100644 index 0000000..01f7a18 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/rocket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/rocket2.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/rocket2.svg new file mode 100644 index 0000000..e040e6e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/rocket2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/ruble.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/ruble.svg new file mode 100644 index 0000000..a113695 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/ruble.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/ruler-compasses.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/ruler-compasses.svg new file mode 100644 index 0000000..31188d2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/ruler-compasses.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/safe.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/safe.svg new file mode 100644 index 0000000..9f932fe --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/safe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/sale-sign.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/sale-sign.svg new file mode 100644 index 0000000..d810fa1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/sale-sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/satellite-dish.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/satellite-dish.svg new file mode 100644 index 0000000..63a7a70 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/satellite-dish.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/scales.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/scales.svg new file mode 100644 index 0000000..7e2a82a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/scales.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/scissors.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/scissors.svg new file mode 100644 index 0000000..31f0563 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/scissors.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/security.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/security.svg new file mode 100644 index 0000000..8721ace --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/security.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/send.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/send.svg new file mode 100644 index 0000000..6268be7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/send.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/shield.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/shield.svg new file mode 100644 index 0000000..94a7e6f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/shield.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/shopping-cart.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/shopping-cart.svg new file mode 100644 index 0000000..1f2c55d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/shopping-cart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/sign.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/sign.svg new file mode 100644 index 0000000..b6e71f5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/sign.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone-chart.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone-chart.svg new file mode 100644 index 0000000..1902520 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone-chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone-exclamation.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone-exclamation.svg new file mode 100644 index 0000000..e20d253 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone-exclamation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone-gears.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone-gears.svg new file mode 100644 index 0000000..9204900 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone-gears.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone-growth.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone-growth.svg new file mode 100644 index 0000000..185d840 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone-growth.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone-money.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone-money.svg new file mode 100644 index 0000000..0e8aced --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone-money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone-user.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone-user.svg new file mode 100644 index 0000000..335606f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone.svg new file mode 100644 index 0000000..2186261 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/smartphone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/speaker.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/speaker.svg new file mode 100644 index 0000000..dddf5a1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/speaker.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/speaker02.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/speaker02.svg new file mode 100644 index 0000000..cdb1466 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/speaker02.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/speech-bubble.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/speech-bubble.svg new file mode 100644 index 0000000..d01de4c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/speech-bubble.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/stamp.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/stamp.svg new file mode 100644 index 0000000..a5068c9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/stamp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/star.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/star.svg new file mode 100644 index 0000000..2ee4271 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/steering-wheel.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/steering-wheel.svg new file mode 100644 index 0000000..8e15b82 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/steering-wheel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/strategy03.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/strategy03.svg new file mode 100644 index 0000000..6ee6986 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/strategy03.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/strategy1.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/strategy1.svg new file mode 100644 index 0000000..52cc4ae --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/strategy1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/strategy2.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/strategy2.svg new file mode 100644 index 0000000..18194ef --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/strategy2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/support-person.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/support-person.svg new file mode 100644 index 0000000..0d5bc55 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/support-person.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet-article.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet-article.svg new file mode 100644 index 0000000..7d6e9a5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet-article.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet-chart.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet-chart.svg new file mode 100644 index 0000000..16fd3d6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet-chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet-chart2.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet-chart2.svg new file mode 100644 index 0000000..d99f1ad --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet-chart2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet-chart3.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet-chart3.svg new file mode 100644 index 0000000..f36f409 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet-chart3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet-pie-chart.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet-pie-chart.svg new file mode 100644 index 0000000..c044072 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet-pie-chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet-pie-chart2.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet-pie-chart2.svg new file mode 100644 index 0000000..6219b8d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet-pie-chart2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet.svg new file mode 100644 index 0000000..136cfac --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tablet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/target.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/target.svg new file mode 100644 index 0000000..07eed69 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/target.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/team.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/team.svg new file mode 100644 index 0000000..a4e29d9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/team.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/telescope.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/telescope.svg new file mode 100644 index 0000000..984f9aa --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/telescope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tie.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tie.svg new file mode 100644 index 0000000..50c2d41 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tools.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tools.svg new file mode 100644 index 0000000..c3e9537 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tools.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tools2.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tools2.svg new file mode 100644 index 0000000..3e8acb6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/tools2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/trash-bin.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/trash-bin.svg new file mode 100644 index 0000000..52ce78a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/trash-bin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/umbrella.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/umbrella.svg new file mode 100644 index 0000000..37f899e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/umbrella.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user01.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user01.svg new file mode 100644 index 0000000..2695475 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user01.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user02.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user02.svg new file mode 100644 index 0000000..ce3ef6e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user02.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user03.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user03.svg new file mode 100644 index 0000000..5586ea8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user03.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user04.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user04.svg new file mode 100644 index 0000000..a38dc97 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user04.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user05.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user05.svg new file mode 100644 index 0000000..52498bc --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user05.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user06.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user06.svg new file mode 100644 index 0000000..6492f34 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user06.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user07.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user07.svg new file mode 100644 index 0000000..8756d7c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user07.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user08.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user08.svg new file mode 100644 index 0000000..63f904c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user08.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user09.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user09.svg new file mode 100644 index 0000000..2ffe6b8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/user09.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/users.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/users.svg new file mode 100644 index 0000000..7f7b172 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/users.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/venn-diagram.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/venn-diagram.svg new file mode 100644 index 0000000..fdac681 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/venn-diagram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/wallet.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/wallet.svg new file mode 100644 index 0000000..40a318b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/wallet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/wrench.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/wrench.svg new file mode 100644 index 0000000..1df349d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/wrench.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/yen.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/yen.svg new file mode 100644 index 0000000..8bb5f67 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/yen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/yinyang.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/yinyang.svg new file mode 100644 index 0000000..ab65a57 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/busy-icons-svg/yinyang.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_business_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_business_24px.svg new file mode 100644 index 0000000..bfaefa1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_business_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_24px.svg new file mode 100644 index 0000000..5908b6a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_end_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_end_24px.svg new file mode 100644 index 0000000..c3fe17b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_end_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_made_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_made_24px.svg new file mode 100644 index 0000000..6a58bdf --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_made_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_merge_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_merge_24px.svg new file mode 100644 index 0000000..b10772d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_merge_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_missed_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_missed_24px.svg new file mode 100644 index 0000000..db0f8cc --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_missed_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_missed_outgoing_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_missed_outgoing_24px.svg new file mode 100644 index 0000000..3385d42 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_missed_outgoing_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_received_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_received_24px.svg new file mode 100644 index 0000000..0516080 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_received_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_split_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_split_24px.svg new file mode 100644 index 0000000..9dd562c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_call_split_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_chat_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_chat_24px.svg new file mode 100644 index 0000000..1c68f72 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_chat_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_chat_bubble_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_chat_bubble_24px.svg new file mode 100644 index 0000000..d447be3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_chat_bubble_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_chat_bubble_outline_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_chat_bubble_outline_24px.svg new file mode 100644 index 0000000..e1a36ee --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_chat_bubble_outline_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_clear_all_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_clear_all_24px.svg new file mode 100644 index 0000000..82a7e3c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_clear_all_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_comment_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_comment_24px.svg new file mode 100644 index 0000000..db645e8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_comment_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_contact_mail_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_contact_mail_24px.svg new file mode 100644 index 0000000..ad23103 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_contact_mail_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_contact_phone_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_contact_phone_24px.svg new file mode 100644 index 0000000..6945887 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_contact_phone_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_contacts_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_contacts_24px.svg new file mode 100644 index 0000000..e9a0749 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_contacts_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_dialer_sip_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_dialer_sip_24px.svg new file mode 100644 index 0000000..247068a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_dialer_sip_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_dialpad_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_dialpad_24px.svg new file mode 100644 index 0000000..1d82c79 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_dialpad_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_email_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_email_24px.svg new file mode 100644 index 0000000..f2c5b4f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_email_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_forum_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_forum_24px.svg new file mode 100644 index 0000000..8c958d9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_forum_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_import_contacts_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_import_contacts_24px.svg new file mode 100644 index 0000000..154d45b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_import_contacts_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_import_export_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_import_export_24px.svg new file mode 100644 index 0000000..1af2dbf --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_import_export_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_invert_colors_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_invert_colors_off_24px.svg new file mode 100644 index 0000000..c880d9b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_invert_colors_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_live_help_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_live_help_24px.svg new file mode 100644 index 0000000..abe3129 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_live_help_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_location_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_location_off_24px.svg new file mode 100644 index 0000000..270259b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_location_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_location_on_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_location_on_24px.svg new file mode 100644 index 0000000..490afe9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_location_on_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_mail_outline_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_mail_outline_24px.svg new file mode 100644 index 0000000..c8798e6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_mail_outline_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_message_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_message_24px.svg new file mode 100644 index 0000000..0dfd671 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_message_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_no_sim_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_no_sim_24px.svg new file mode 100644 index 0000000..d6b8e22 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_no_sim_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_phone_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_phone_24px.svg new file mode 100644 index 0000000..5908b6a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_phone_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_phonelink_erase_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_phonelink_erase_24px.svg new file mode 100644 index 0000000..6d99266 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_phonelink_erase_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_phonelink_lock_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_phonelink_lock_24px.svg new file mode 100644 index 0000000..cbf3606 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_phonelink_lock_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_phonelink_ring_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_phonelink_ring_24px.svg new file mode 100644 index 0000000..34cb3a8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_phonelink_ring_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_phonelink_setup_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_phonelink_setup_24px.svg new file mode 100644 index 0000000..0aef7a0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_phonelink_setup_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_portable_wifi_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_portable_wifi_off_24px.svg new file mode 100644 index 0000000..c7fc011 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_portable_wifi_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_present_to_all_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_present_to_all_24px.svg new file mode 100644 index 0000000..d63f7b9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_present_to_all_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_ring_volume_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_ring_volume_24px.svg new file mode 100644 index 0000000..25f1b5d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_ring_volume_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_screen_share_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_screen_share_24px.svg new file mode 100644 index 0000000..4cb0976 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_screen_share_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_speaker_phone_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_speaker_phone_24px.svg new file mode 100644 index 0000000..e812da7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_speaker_phone_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_stay_current_landscape_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_stay_current_landscape_24px.svg new file mode 100644 index 0000000..b6c98c2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_stay_current_landscape_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_stay_current_portrait_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_stay_current_portrait_24px.svg new file mode 100644 index 0000000..fed6cce --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_stay_current_portrait_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_stay_primary_landscape_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_stay_primary_landscape_24px.svg new file mode 100644 index 0000000..b6c98c2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_stay_primary_landscape_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_stay_primary_portrait_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_stay_primary_portrait_24px.svg new file mode 100644 index 0000000..fed6cce --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_stay_primary_portrait_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_stop_screen_share_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_stop_screen_share_24px.svg new file mode 100644 index 0000000..ec70b9b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_stop_screen_share_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_swap_calls_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_swap_calls_24px.svg new file mode 100644 index 0000000..53ab208 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_swap_calls_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_textsms_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_textsms_24px.svg new file mode 100644 index 0000000..b427d45 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_textsms_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_voicemail_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_voicemail_24px.svg new file mode 100644 index 0000000..2b24059 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_voicemail_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_vpn_key_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_vpn_key_24px.svg new file mode 100644 index 0000000..555d034 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/communication/ic_vpn_key_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_add_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_add_24px.svg new file mode 100644 index 0000000..58f73e9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_add_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_add_box_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_add_box_24px.svg new file mode 100644 index 0000000..c091cfc --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_add_box_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_add_circle_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_add_circle_24px.svg new file mode 100644 index 0000000..60aaa95 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_add_circle_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_add_circle_outline_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_add_circle_outline_24px.svg new file mode 100644 index 0000000..55c6b1b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_add_circle_outline_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_archive_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_archive_24px.svg new file mode 100644 index 0000000..bab7497 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_archive_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_backspace_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_backspace_24px.svg new file mode 100644 index 0000000..6ebbe51 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_backspace_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_block_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_block_24px.svg new file mode 100644 index 0000000..661cdf1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_block_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_clear_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_clear_24px.svg new file mode 100644 index 0000000..865788b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_clear_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_content_copy_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_content_copy_24px.svg new file mode 100644 index 0000000..7c6b60a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_content_copy_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_content_cut_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_content_cut_24px.svg new file mode 100644 index 0000000..b89a0d0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_content_cut_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_content_paste_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_content_paste_24px.svg new file mode 100644 index 0000000..af63a64 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_content_paste_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_create_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_create_24px.svg new file mode 100644 index 0000000..f5ddfe1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_create_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_drafts_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_drafts_24px.svg new file mode 100644 index 0000000..2d5456b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_drafts_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_filter_list_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_filter_list_24px.svg new file mode 100644 index 0000000..972d401 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_filter_list_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_flag_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_flag_24px.svg new file mode 100644 index 0000000..eaf3ff4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_flag_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_font_download_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_font_download_24px.svg new file mode 100644 index 0000000..60ea38d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_font_download_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_forward_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_forward_24px.svg new file mode 100644 index 0000000..c9353ea --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_forward_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_gesture_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_gesture_24px.svg new file mode 100644 index 0000000..dac332c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_gesture_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_inbox_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_inbox_24px.svg new file mode 100644 index 0000000..8297501 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_inbox_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_link_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_link_24px.svg new file mode 100644 index 0000000..f39e2a7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_link_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_mail_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_mail_24px.svg new file mode 100644 index 0000000..f2c5b4f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_mail_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_markunread_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_markunread_24px.svg new file mode 100644 index 0000000..f2c5b4f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_markunread_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_move_to_inbox_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_move_to_inbox_24px.svg new file mode 100644 index 0000000..cbc97ad --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_move_to_inbox_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_next_week_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_next_week_24px.svg new file mode 100644 index 0000000..6e52679 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_next_week_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_redo_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_redo_24px.svg new file mode 100644 index 0000000..764ab77 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_redo_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_remove_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_remove_24px.svg new file mode 100644 index 0000000..9128833 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_remove_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_remove_circle_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_remove_circle_24px.svg new file mode 100644 index 0000000..0f978ec --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_remove_circle_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_remove_circle_outline_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_remove_circle_outline_24px.svg new file mode 100644 index 0000000..d35e183 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_remove_circle_outline_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_reply_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_reply_24px.svg new file mode 100644 index 0000000..65c02ca --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_reply_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_reply_all_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_reply_all_24px.svg new file mode 100644 index 0000000..5c90b4b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_reply_all_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_report_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_report_24px.svg new file mode 100644 index 0000000..d09adbb --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_report_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_save_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_save_24px.svg new file mode 100644 index 0000000..1d3c300 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_save_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_select_all_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_select_all_24px.svg new file mode 100644 index 0000000..4614449 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_select_all_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_send_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_send_24px.svg new file mode 100644 index 0000000..b679858 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_send_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_sort_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_sort_24px.svg new file mode 100644 index 0000000..84efa53 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_sort_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_text_format_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_text_format_24px.svg new file mode 100644 index 0000000..92ec329 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_text_format_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_unarchive_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_unarchive_24px.svg new file mode 100644 index 0000000..6192fa7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_unarchive_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_undo_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_undo_24px.svg new file mode 100644 index 0000000..c37cf40 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_undo_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_weekend_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_weekend_24px.svg new file mode 100644 index 0000000..f4e56cc --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/content/ic_weekend_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_access_alarm_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_access_alarm_24px.svg new file mode 100644 index 0000000..edfa7a6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_access_alarm_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_access_alarms_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_access_alarms_24px.svg new file mode 100644 index 0000000..a799163 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_access_alarms_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_access_time_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_access_time_24px.svg new file mode 100644 index 0000000..fac5f2e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_access_time_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_add_alarm_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_add_alarm_24px.svg new file mode 100644 index 0000000..8bf2e6c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_add_alarm_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_airplanemode_active_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_airplanemode_active_24px.svg new file mode 100644 index 0000000..240d1b6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_airplanemode_active_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_airplanemode_inactive_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_airplanemode_inactive_24px.svg new file mode 100644 index 0000000..c2828d8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_airplanemode_inactive_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_20_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_20_24px.svg new file mode 100644 index 0000000..db91e43 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_20_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_30_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_30_24px.svg new file mode 100644 index 0000000..305e322 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_30_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_50_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_50_24px.svg new file mode 100644 index 0000000..c8205f8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_50_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_60_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_60_24px.svg new file mode 100644 index 0000000..42d8bba --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_60_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_80_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_80_24px.svg new file mode 100644 index 0000000..1633055 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_80_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_90_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_90_24px.svg new file mode 100644 index 0000000..4a242c5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_90_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_alert_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_alert_24px.svg new file mode 100644 index 0000000..08d3008 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_alert_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_20_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_20_24px.svg new file mode 100644 index 0000000..9b90d8c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_20_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_30_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_30_24px.svg new file mode 100644 index 0000000..b21330f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_30_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_50_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_50_24px.svg new file mode 100644 index 0000000..9958350 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_50_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_60_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_60_24px.svg new file mode 100644 index 0000000..a9e5d40 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_60_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_80_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_80_24px.svg new file mode 100644 index 0000000..1695004 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_80_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_90_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_90_24px.svg new file mode 100644 index 0000000..2fc050e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_90_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_full_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_full_24px.svg new file mode 100644 index 0000000..1efa7d3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_charging_full_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_full_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_full_24px.svg new file mode 100644 index 0000000..122ea41 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_full_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_std_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_std_24px.svg new file mode 100644 index 0000000..122ea41 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_std_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_unknown_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_unknown_24px.svg new file mode 100644 index 0000000..7ef9a9a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_battery_unknown_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_bluetooth_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_bluetooth_24px.svg new file mode 100644 index 0000000..ad1e4f2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_bluetooth_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_bluetooth_connected_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_bluetooth_connected_24px.svg new file mode 100644 index 0000000..90b3a58 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_bluetooth_connected_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_bluetooth_disabled_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_bluetooth_disabled_24px.svg new file mode 100644 index 0000000..2974d2b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_bluetooth_disabled_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_bluetooth_searching_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_bluetooth_searching_24px.svg new file mode 100644 index 0000000..8bb176e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_bluetooth_searching_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_brightness_auto_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_brightness_auto_24px.svg new file mode 100644 index 0000000..074d7b1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_brightness_auto_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_brightness_high_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_brightness_high_24px.svg new file mode 100644 index 0000000..f4a2b29 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_brightness_high_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_brightness_low_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_brightness_low_24px.svg new file mode 100644 index 0000000..2b6d29d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_brightness_low_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_brightness_medium_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_brightness_medium_24px.svg new file mode 100644 index 0000000..dc29999 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_brightness_medium_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_data_usage_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_data_usage_24px.svg new file mode 100644 index 0000000..7f0786a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_data_usage_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_developer_mode_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_developer_mode_24px.svg new file mode 100644 index 0000000..b64293b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_developer_mode_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_devices_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_devices_24px.svg new file mode 100644 index 0000000..266e993 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_devices_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_dvr_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_dvr_24px.svg new file mode 100644 index 0000000..fd28af7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_dvr_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_gps_fixed_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_gps_fixed_24px.svg new file mode 100644 index 0000000..394dc36 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_gps_fixed_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_gps_not_fixed_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_gps_not_fixed_24px.svg new file mode 100644 index 0000000..f05e9b0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_gps_not_fixed_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_gps_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_gps_off_24px.svg new file mode 100644 index 0000000..c1435e3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_gps_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_graphic_eq_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_graphic_eq_24px.svg new file mode 100644 index 0000000..e980427 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_graphic_eq_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_location_disabled_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_location_disabled_24px.svg new file mode 100644 index 0000000..c1435e3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_location_disabled_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_location_searching_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_location_searching_24px.svg new file mode 100644 index 0000000..f05e9b0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_location_searching_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_network_cell_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_network_cell_24px.svg new file mode 100644 index 0000000..0024136 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_network_cell_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_network_wifi_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_network_wifi_24px.svg new file mode 100644 index 0000000..6e03e50 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_network_wifi_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_nfc_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_nfc_24px.svg new file mode 100644 index 0000000..49cffc9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_nfc_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_screen_lock_landscape_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_screen_lock_landscape_24px.svg new file mode 100644 index 0000000..1b0925d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_screen_lock_landscape_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_screen_lock_portrait_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_screen_lock_portrait_24px.svg new file mode 100644 index 0000000..cd382ac --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_screen_lock_portrait_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_screen_lock_rotation_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_screen_lock_rotation_24px.svg new file mode 100644 index 0000000..30e015f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_screen_lock_rotation_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_screen_rotation_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_screen_rotation_24px.svg new file mode 100644 index 0000000..3750ddc --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_screen_rotation_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_sd_storage_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_sd_storage_24px.svg new file mode 100644 index 0000000..15ab481 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_sd_storage_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_settings_system_daydream_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_settings_system_daydream_24px.svg new file mode 100644 index 0000000..6d35778 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_settings_system_daydream_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_0_bar_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_0_bar_24px.svg new file mode 100644 index 0000000..0f29463 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_0_bar_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_1_bar_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_1_bar_24px.svg new file mode 100644 index 0000000..8c785b4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_1_bar_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_2_bar_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_2_bar_24px.svg new file mode 100644 index 0000000..22352ef --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_2_bar_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_3_bar_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_3_bar_24px.svg new file mode 100644 index 0000000..0024136 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_3_bar_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_4_bar_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_4_bar_24px.svg new file mode 100644 index 0000000..dc28eb7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_4_bar_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_connected_no_internet_0_bar_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_connected_no_internet_0_bar_24px.svg new file mode 100644 index 0000000..fe6765f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_connected_no_internet_0_bar_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_connected_no_internet_1_bar_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_connected_no_internet_1_bar_24px.svg new file mode 100644 index 0000000..de2550c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_connected_no_internet_1_bar_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_connected_no_internet_2_bar_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_connected_no_internet_2_bar_24px.svg new file mode 100644 index 0000000..8bfeb23 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_connected_no_internet_2_bar_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_connected_no_internet_3_bar_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_connected_no_internet_3_bar_24px.svg new file mode 100644 index 0000000..fd79f00 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_connected_no_internet_3_bar_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_connected_no_internet_4_bar_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_connected_no_internet_4_bar_24px.svg new file mode 100644 index 0000000..0faee96 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_connected_no_internet_4_bar_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_no_sim_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_no_sim_24px.svg new file mode 100644 index 0000000..d6b8e22 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_no_sim_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_null_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_null_24px.svg new file mode 100644 index 0000000..f3293a5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_null_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_off_24px.svg new file mode 100644 index 0000000..a8de8db --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_cellular_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_0_bar_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_0_bar_24px.svg new file mode 100644 index 0000000..46a2cc6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_0_bar_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_1_bar_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_1_bar_24px.svg new file mode 100644 index 0000000..19227d6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_1_bar_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_1_bar_lock_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_1_bar_lock_24px.svg new file mode 100644 index 0000000..86e1b5d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_1_bar_lock_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_2_bar_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_2_bar_24px.svg new file mode 100644 index 0000000..7f0f951 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_2_bar_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_2_bar_lock_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_2_bar_lock_24px.svg new file mode 100644 index 0000000..c96053c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_2_bar_lock_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_3_bar_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_3_bar_24px.svg new file mode 100644 index 0000000..6e03e50 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_3_bar_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_3_bar_lock_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_3_bar_lock_24px.svg new file mode 100644 index 0000000..10ff8c0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_3_bar_lock_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_4_bar_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_4_bar_24px.svg new file mode 100644 index 0000000..d013bfd --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_4_bar_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_4_bar_lock_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_4_bar_lock_24px.svg new file mode 100644 index 0000000..45a8294 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_4_bar_lock_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_off_24px.svg new file mode 100644 index 0000000..fcf92d0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_1_bar_26x24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_1_bar_26x24px.svg new file mode 100644 index 0000000..0e0f35e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_1_bar_26x24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_2_bar_26x24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_2_bar_26x24px.svg new file mode 100644 index 0000000..60e9aea --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_2_bar_26x24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_3_bar_26x24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_3_bar_26x24px.svg new file mode 100644 index 0000000..cc0ccd5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_3_bar_26x24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_4_bar_26x24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_4_bar_26x24px.svg new file mode 100644 index 0000000..e13eaec --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_4_bar_26x24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_connected_no_internet_1_26x24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_connected_no_internet_1_26x24px.svg new file mode 100644 index 0000000..5908265 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_connected_no_internet_1_26x24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_connected_no_internet_26x24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_connected_no_internet_26x24px.svg new file mode 100644 index 0000000..f7d09ed --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_connected_no_internet_26x24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_connected_no_internet_2_26x24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_connected_no_internet_2_26x24px.svg new file mode 100644 index 0000000..23c1201 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_connected_no_internet_2_26x24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_connected_no_internet_3_26x24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_connected_no_internet_3_26x24px.svg new file mode 100644 index 0000000..ac1ea92 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_connected_no_internet_3_26x24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_connected_no_internet_4_26x24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_connected_no_internet_4_26x24px.svg new file mode 100644 index 0000000..5349383 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_connected_no_internet_4_26x24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_not_connected_26x24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_not_connected_26x24px.svg new file mode 100644 index 0000000..7b2d595 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_not_connected_26x24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_null_26x24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_null_26x24px.svg new file mode 100644 index 0000000..551fa6e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_signal_wifi_statusbar_null_26x24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_storage_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_storage_24px.svg new file mode 100644 index 0000000..8cae0c1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_storage_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_usb_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_usb_24px.svg new file mode 100644 index 0000000..b08014a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_usb_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_wallpaper_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_wallpaper_24px.svg new file mode 100644 index 0000000..74c082b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_wallpaper_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_widgets_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_widgets_24px.svg new file mode 100644 index 0000000..fcc2293 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_widgets_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_wifi_lock_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_wifi_lock_24px.svg new file mode 100644 index 0000000..710d716 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_wifi_lock_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_wifi_tethering_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_wifi_tethering_24px.svg new file mode 100644 index 0000000..f16f282 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/device/ic_wifi_tethering_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_attach_file_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_attach_file_24px.svg new file mode 100644 index 0000000..471fb99 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_attach_file_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_attach_money_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_attach_money_24px.svg new file mode 100644 index 0000000..76e3e17 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_attach_money_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_all_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_all_24px.svg new file mode 100644 index 0000000..4537456 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_all_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_bottom_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_bottom_24px.svg new file mode 100644 index 0000000..61be129 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_bottom_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_clear_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_clear_24px.svg new file mode 100644 index 0000000..a585f80 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_clear_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_color_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_color_24px.svg new file mode 100644 index 0000000..4f6e788 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_color_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_horizontal_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_horizontal_24px.svg new file mode 100644 index 0000000..f84b852 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_horizontal_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_inner_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_inner_24px.svg new file mode 100644 index 0000000..a5a4677 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_inner_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_left_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_left_24px.svg new file mode 100644 index 0000000..894c809 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_left_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_outer_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_outer_24px.svg new file mode 100644 index 0000000..23fbba8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_outer_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_right_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_right_24px.svg new file mode 100644 index 0000000..f8965e1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_right_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_style_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_style_24px.svg new file mode 100644 index 0000000..179e8d6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_style_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_top_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_top_24px.svg new file mode 100644 index 0000000..7f6795f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_top_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_vertical_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_vertical_24px.svg new file mode 100644 index 0000000..719ddf6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_border_vertical_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_drag_handle_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_drag_handle_24px.svg new file mode 100644 index 0000000..a292338 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_drag_handle_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_align_center_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_align_center_24px.svg new file mode 100644 index 0000000..82214e6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_align_center_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_align_justify_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_align_justify_24px.svg new file mode 100644 index 0000000..3dd6fed --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_align_justify_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_align_left_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_align_left_24px.svg new file mode 100644 index 0000000..77d7810 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_align_left_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_align_right_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_align_right_24px.svg new file mode 100644 index 0000000..a786d99 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_align_right_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_bold_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_bold_24px.svg new file mode 100644 index 0000000..2b7d0f1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_bold_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_clear_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_clear_24px.svg new file mode 100644 index 0000000..bb78cd7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_clear_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_color_fill_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_color_fill_24px.svg new file mode 100644 index 0000000..1cc9972 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_color_fill_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_color_reset_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_color_reset_24px.svg new file mode 100644 index 0000000..4027103 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_color_reset_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_color_text_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_color_text_24px.svg new file mode 100644 index 0000000..49858ad --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_color_text_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_indent_decrease_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_indent_decrease_24px.svg new file mode 100644 index 0000000..61dc59f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_indent_decrease_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_indent_increase_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_indent_increase_24px.svg new file mode 100644 index 0000000..d46f676 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_indent_increase_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_italic_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_italic_24px.svg new file mode 100644 index 0000000..c8acbb8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_italic_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_line_spacing_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_line_spacing_24px.svg new file mode 100644 index 0000000..ff11d3a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_line_spacing_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_list_bulleted_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_list_bulleted_24px.svg new file mode 100644 index 0000000..90b6364 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_list_bulleted_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_list_numbered_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_list_numbered_24px.svg new file mode 100644 index 0000000..82f85bb --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_list_numbered_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_paint_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_paint_24px.svg new file mode 100644 index 0000000..6d988b3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_paint_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_quote_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_quote_24px.svg new file mode 100644 index 0000000..9d8fa8b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_quote_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_shapes_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_shapes_24px.svg new file mode 100644 index 0000000..a14bb86 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_shapes_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_size_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_size_24px.svg new file mode 100644 index 0000000..51d9371 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_size_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_strikethrough_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_strikethrough_24px.svg new file mode 100644 index 0000000..1ce6765 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_strikethrough_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_textdirection_l_to_r_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_textdirection_l_to_r_24px.svg new file mode 100644 index 0000000..f9e7290 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_textdirection_l_to_r_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_textdirection_r_to_l_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_textdirection_r_to_l_24px.svg new file mode 100644 index 0000000..7259c4e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_textdirection_r_to_l_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_underlined_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_underlined_24px.svg new file mode 100644 index 0000000..24f0729 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_format_underlined_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_functions_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_functions_24px.svg new file mode 100644 index 0000000..003ef30 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_functions_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_highlight_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_highlight_24px.svg new file mode 100644 index 0000000..ac55df1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_highlight_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_chart_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_chart_24px.svg new file mode 100644 index 0000000..cc7768b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_chart_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_comment_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_comment_24px.svg new file mode 100644 index 0000000..c82fbff --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_comment_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_drive_file_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_drive_file_24px.svg new file mode 100644 index 0000000..6aa287e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_drive_file_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_emoticon_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_emoticon_24px.svg new file mode 100644 index 0000000..57bea0f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_emoticon_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_invitation_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_invitation_24px.svg new file mode 100644 index 0000000..1b084e8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_invitation_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_link_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_link_24px.svg new file mode 100644 index 0000000..f39e2a7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_link_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_photo_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_photo_24px.svg new file mode 100644 index 0000000..6ccc16a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_insert_photo_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_linear_scale_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_linear_scale_24px.svg new file mode 100644 index 0000000..9b57080 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_linear_scale_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_merge_type_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_merge_type_24px.svg new file mode 100644 index 0000000..b10772d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_merge_type_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_mode_comment_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_mode_comment_24px.svg new file mode 100644 index 0000000..912954d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_mode_comment_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_mode_edit_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_mode_edit_24px.svg new file mode 100644 index 0000000..f5ddfe1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_mode_edit_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_money_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_money_off_24px.svg new file mode 100644 index 0000000..c48bc8c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_money_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_publish_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_publish_24px.svg new file mode 100644 index 0000000..88faf16 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_publish_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_short_text_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_short_text_24px.svg new file mode 100644 index 0000000..f73c4f8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_short_text_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_space_bar_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_space_bar_24px.svg new file mode 100644 index 0000000..0f1e7c5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_space_bar_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_strikethrough_s_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_strikethrough_s_24px.svg new file mode 100644 index 0000000..7f218d0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_strikethrough_s_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_text_fields_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_text_fields_24px.svg new file mode 100644 index 0000000..705cd75 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_text_fields_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_vertical_align_bottom_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_vertical_align_bottom_24px.svg new file mode 100644 index 0000000..070f193 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_vertical_align_bottom_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_vertical_align_center_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_vertical_align_center_24px.svg new file mode 100644 index 0000000..b0272c7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_vertical_align_center_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_vertical_align_top_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_vertical_align_top_24px.svg new file mode 100644 index 0000000..7a1cadd --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_vertical_align_top_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_wrap_text_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_wrap_text_24px.svg new file mode 100644 index 0000000..3e11084 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/editor/ic_wrap_text_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_attachment_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_attachment_24px.svg new file mode 100644 index 0000000..d244845 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_attachment_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_24px.svg new file mode 100644 index 0000000..63f946c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_circle_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_circle_24px.svg new file mode 100644 index 0000000..859be00 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_circle_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_done_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_done_24px.svg new file mode 100644 index 0000000..96e49c4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_done_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_download_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_download_24px.svg new file mode 100644 index 0000000..25d4096 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_download_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_off_24px.svg new file mode 100644 index 0000000..16e58c5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_queue_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_queue_24px.svg new file mode 100644 index 0000000..22ddd7d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_queue_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_upload_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_upload_24px.svg new file mode 100644 index 0000000..69a9622 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_cloud_upload_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_create_new_folder_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_create_new_folder_24px.svg new file mode 100644 index 0000000..3c9da3d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_create_new_folder_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_file_download_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_file_download_24px.svg new file mode 100644 index 0000000..ef421c3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_file_download_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_file_upload_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_file_upload_24px.svg new file mode 100644 index 0000000..0fe9aad --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_file_upload_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_folder_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_folder_24px.svg new file mode 100644 index 0000000..e70b01c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_folder_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_folder_open_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_folder_open_24px.svg new file mode 100644 index 0000000..0f59689 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_folder_open_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_folder_shared_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_folder_shared_24px.svg new file mode 100644 index 0000000..348100e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/file/ic_folder_shared_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_cast_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_cast_24px.svg new file mode 100644 index 0000000..5686cc4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_cast_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_cast_connected_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_cast_connected_24px.svg new file mode 100644 index 0000000..38ca2c7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_cast_connected_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_computer_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_computer_24px.svg new file mode 100644 index 0000000..6a0af7e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_computer_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_desktop_mac_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_desktop_mac_24px.svg new file mode 100644 index 0000000..8e408af --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_desktop_mac_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_desktop_windows_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_desktop_windows_24px.svg new file mode 100644 index 0000000..56d3324 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_desktop_windows_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_developer_board_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_developer_board_24px.svg new file mode 100644 index 0000000..4efcd93 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_developer_board_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_device_hub_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_device_hub_24px.svg new file mode 100644 index 0000000..f1c8e73 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_device_hub_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_devices_other_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_devices_other_24px.svg new file mode 100644 index 0000000..43768e8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_devices_other_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_dock_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_dock_24px.svg new file mode 100644 index 0000000..ee94230 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_dock_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_gamepad_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_gamepad_24px.svg new file mode 100644 index 0000000..62a4c9b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_gamepad_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_headset_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_headset_24px.svg new file mode 100644 index 0000000..bdeb1eb --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_headset_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_headset_mic_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_headset_mic_24px.svg new file mode 100644 index 0000000..dba0e66 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_headset_mic_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_24px.svg new file mode 100644 index 0000000..acbf11c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_arrow_down_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_arrow_down_24px.svg new file mode 100644 index 0000000..ed92639 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_arrow_down_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_arrow_left_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_arrow_left_24px.svg new file mode 100644 index 0000000..7002d84 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_arrow_left_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_arrow_right_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_arrow_right_24px.svg new file mode 100644 index 0000000..e74898b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_arrow_right_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_arrow_up_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_arrow_up_24px.svg new file mode 100644 index 0000000..607eb15 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_arrow_up_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_backspace_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_backspace_24px.svg new file mode 100644 index 0000000..26fc18e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_backspace_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_capslock_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_capslock_24px.svg new file mode 100644 index 0000000..2420341 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_capslock_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_hide_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_hide_24px.svg new file mode 100644 index 0000000..7f279fa --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_hide_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_return_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_return_24px.svg new file mode 100644 index 0000000..48b52b6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_return_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_tab_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_tab_24px.svg new file mode 100644 index 0000000..7348895 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_tab_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_voice_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_voice_24px.svg new file mode 100644 index 0000000..513e0fd --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_keyboard_voice_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_laptop_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_laptop_24px.svg new file mode 100644 index 0000000..405ef0a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_laptop_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_laptop_chromebook_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_laptop_chromebook_24px.svg new file mode 100644 index 0000000..0918cf8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_laptop_chromebook_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_laptop_mac_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_laptop_mac_24px.svg new file mode 100644 index 0000000..e630d7e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_laptop_mac_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_laptop_windows_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_laptop_windows_24px.svg new file mode 100644 index 0000000..0522324 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_laptop_windows_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_memory_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_memory_24px.svg new file mode 100644 index 0000000..b7fe44f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_memory_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_mouse_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_mouse_24px.svg new file mode 100644 index 0000000..ff5184c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_mouse_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_phone_android_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_phone_android_24px.svg new file mode 100644 index 0000000..b7a256b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_phone_android_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_phone_iphone_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_phone_iphone_24px.svg new file mode 100644 index 0000000..91ad0e0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_phone_iphone_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_phonelink_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_phonelink_24px.svg new file mode 100644 index 0000000..266e993 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_phonelink_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_phonelink_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_phonelink_off_24px.svg new file mode 100644 index 0000000..33b4771 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_phonelink_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_power_input_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_power_input_24px.svg new file mode 100644 index 0000000..353d4ce --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_power_input_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_router_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_router_24px.svg new file mode 100644 index 0000000..0c38782 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_router_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_scanner_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_scanner_24px.svg new file mode 100644 index 0000000..827c151 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_scanner_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_security_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_security_24px.svg new file mode 100644 index 0000000..f855309 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_security_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_sim_card_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_sim_card_24px.svg new file mode 100644 index 0000000..b717193 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_sim_card_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_smartphone_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_smartphone_24px.svg new file mode 100644 index 0000000..db4537f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_smartphone_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_speaker_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_speaker_24px.svg new file mode 100644 index 0000000..fe95bef --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_speaker_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_speaker_group_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_speaker_group_24px.svg new file mode 100644 index 0000000..5ea98a7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_speaker_group_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_tablet_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_tablet_24px.svg new file mode 100644 index 0000000..f5390cc --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_tablet_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_tablet_android_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_tablet_android_24px.svg new file mode 100644 index 0000000..9e4301b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_tablet_android_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_tablet_mac_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_tablet_mac_24px.svg new file mode 100644 index 0000000..cb4ae22 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_tablet_mac_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_toys_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_toys_24px.svg new file mode 100644 index 0000000..faef6a0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_toys_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_tv_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_tv_24px.svg new file mode 100644 index 0000000..6954135 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_tv_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_videogame_asset_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_videogame_asset_24px.svg new file mode 100644 index 0000000..af4c4b0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_videogame_asset_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_watch_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_watch_24px.svg new file mode 100644 index 0000000..a759e1b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/hardware/ic_watch_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_add_a_photo_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_add_a_photo_24px.svg new file mode 100644 index 0000000..98c6d86 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_add_a_photo_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_add_to_photos_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_add_to_photos_24px.svg new file mode 100644 index 0000000..baea3e9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_add_to_photos_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_adjust_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_adjust_24px.svg new file mode 100644 index 0000000..a096236 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_adjust_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_assistant_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_assistant_24px.svg new file mode 100644 index 0000000..a183f73 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_assistant_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_assistant_photo_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_assistant_photo_24px.svg new file mode 100644 index 0000000..eaf3ff4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_assistant_photo_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_audiotrack_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_audiotrack_24px.svg new file mode 100644 index 0000000..0cda5dd --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_audiotrack_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_blur_circular_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_blur_circular_24px.svg new file mode 100644 index 0000000..3a91b1d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_blur_circular_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_blur_linear_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_blur_linear_24px.svg new file mode 100644 index 0000000..1f2590f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_blur_linear_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_blur_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_blur_off_24px.svg new file mode 100644 index 0000000..532ef8f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_blur_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_blur_on_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_blur_on_24px.svg new file mode 100644 index 0000000..0983b48 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_blur_on_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_1_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_1_24px.svg new file mode 100644 index 0000000..575b111 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_1_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_2_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_2_24px.svg new file mode 100644 index 0000000..c963e0b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_2_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_3_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_3_24px.svg new file mode 100644 index 0000000..3048e31 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_3_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_4_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_4_24px.svg new file mode 100644 index 0000000..2566874 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_4_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_5_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_5_24px.svg new file mode 100644 index 0000000..2b6d29d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_5_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_6_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_6_24px.svg new file mode 100644 index 0000000..dc29999 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_6_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_7_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_7_24px.svg new file mode 100644 index 0000000..f4a2b29 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brightness_7_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_broken_image_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_broken_image_24px.svg new file mode 100644 index 0000000..fe22b4b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_broken_image_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brush_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brush_24px.svg new file mode 100644 index 0000000..5f79966 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_brush_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_camera_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_camera_24px.svg new file mode 100644 index 0000000..e78e6b3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_camera_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_camera_alt_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_camera_alt_24px.svg new file mode 100644 index 0000000..94960bf --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_camera_alt_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_camera_front_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_camera_front_24px.svg new file mode 100644 index 0000000..43ea4d2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_camera_front_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_camera_rear_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_camera_rear_24px.svg new file mode 100644 index 0000000..3c6fbb1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_camera_rear_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_camera_roll_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_camera_roll_24px.svg new file mode 100644 index 0000000..06c7023 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_camera_roll_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_center_focus_strong_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_center_focus_strong_24px.svg new file mode 100644 index 0000000..85b0d4b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_center_focus_strong_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_center_focus_weak_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_center_focus_weak_24px.svg new file mode 100644 index 0000000..330a82f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_center_focus_weak_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_collections_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_collections_24px.svg new file mode 100644 index 0000000..3af788b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_collections_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_collections_bookmark_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_collections_bookmark_24px.svg new file mode 100644 index 0000000..7f7c541 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_collections_bookmark_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_color_lens_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_color_lens_24px.svg new file mode 100644 index 0000000..c5fc873 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_color_lens_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_colorize_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_colorize_24px.svg new file mode 100644 index 0000000..ccdd273 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_colorize_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_compare_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_compare_24px.svg new file mode 100644 index 0000000..131506b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_compare_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_control_point_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_control_point_24px.svg new file mode 100644 index 0000000..9275b0e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_control_point_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_control_point_duplicate_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_control_point_duplicate_24px.svg new file mode 100644 index 0000000..fe09988 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_control_point_duplicate_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_16_9_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_16_9_24px.svg new file mode 100644 index 0000000..7be7919 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_16_9_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_24px.svg new file mode 100644 index 0000000..f508de3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_3_2_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_3_2_24px.svg new file mode 100644 index 0000000..3dee425 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_3_2_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_5_4_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_5_4_24px.svg new file mode 100644 index 0000000..13c5050 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_5_4_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_7_5_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_7_5_24px.svg new file mode 100644 index 0000000..8a48573 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_7_5_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_din_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_din_24px.svg new file mode 100644 index 0000000..7a2362a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_din_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_free_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_free_24px.svg new file mode 100644 index 0000000..99f7183 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_free_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_landscape_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_landscape_24px.svg new file mode 100644 index 0000000..13c5050 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_landscape_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_original_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_original_24px.svg new file mode 100644 index 0000000..4084151 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_original_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_portrait_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_portrait_24px.svg new file mode 100644 index 0000000..78a7fe1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_portrait_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_rotate_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_rotate_24px.svg new file mode 100644 index 0000000..3661fff --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_rotate_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_square_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_square_24px.svg new file mode 100644 index 0000000..ac46175 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_crop_square_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_dehaze_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_dehaze_24px.svg new file mode 100644 index 0000000..bae2109 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_dehaze_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_details_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_details_24px.svg new file mode 100644 index 0000000..3eca3fb --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_details_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_edit_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_edit_24px.svg new file mode 100644 index 0000000..f5ddfe1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_edit_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_exposure_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_exposure_24px.svg new file mode 100644 index 0000000..c5a3382 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_exposure_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_exposure_neg_1_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_exposure_neg_1_24px.svg new file mode 100644 index 0000000..71be874 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_exposure_neg_1_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_exposure_neg_2_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_exposure_neg_2_24px.svg new file mode 100644 index 0000000..b1f453d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_exposure_neg_2_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_exposure_plus_1_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_exposure_plus_1_24px.svg new file mode 100644 index 0000000..f5921c2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_exposure_plus_1_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_exposure_plus_2_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_exposure_plus_2_24px.svg new file mode 100644 index 0000000..14c3e09 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_exposure_plus_2_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_exposure_zero_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_exposure_zero_24px.svg new file mode 100644 index 0000000..cf710bb --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_exposure_zero_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_1_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_1_24px.svg new file mode 100644 index 0000000..0e81a46 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_1_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_24px.svg new file mode 100644 index 0000000..40ccd8c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_2_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_2_24px.svg new file mode 100644 index 0000000..101c3b3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_2_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_3_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_3_24px.svg new file mode 100644 index 0000000..57d2cd7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_3_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_4_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_4_24px.svg new file mode 100644 index 0000000..2bb6ee7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_4_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_5_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_5_24px.svg new file mode 100644 index 0000000..6e4a763 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_5_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_6_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_6_24px.svg new file mode 100644 index 0000000..e3f31f3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_6_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_7_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_7_24px.svg new file mode 100644 index 0000000..76e3aaf --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_7_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_8_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_8_24px.svg new file mode 100644 index 0000000..fc7305d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_8_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_9_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_9_24px.svg new file mode 100644 index 0000000..636b205 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_9_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_9_plus_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_9_plus_24px.svg new file mode 100644 index 0000000..5f30216 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_9_plus_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_b_and_w_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_b_and_w_24px.svg new file mode 100644 index 0000000..1c97939 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_b_and_w_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_center_focus_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_center_focus_24px.svg new file mode 100644 index 0000000..c501264 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_center_focus_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_drama_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_drama_24px.svg new file mode 100644 index 0000000..6e12efc --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_drama_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_frames_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_frames_24px.svg new file mode 100644 index 0000000..1332006 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_frames_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_hdr_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_hdr_24px.svg new file mode 100644 index 0000000..b239af7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_hdr_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_none_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_none_24px.svg new file mode 100644 index 0000000..36f86a3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_none_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_tilt_shift_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_tilt_shift_24px.svg new file mode 100644 index 0000000..a2ce281 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_tilt_shift_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_vintage_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_vintage_24px.svg new file mode 100644 index 0000000..a78b53b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_filter_vintage_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_flare_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_flare_24px.svg new file mode 100644 index 0000000..198a483 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_flare_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_flash_auto_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_flash_auto_24px.svg new file mode 100644 index 0000000..beeccfd --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_flash_auto_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_flash_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_flash_off_24px.svg new file mode 100644 index 0000000..b0ec0ee --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_flash_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_flash_on_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_flash_on_24px.svg new file mode 100644 index 0000000..e948043 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_flash_on_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_flip_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_flip_24px.svg new file mode 100644 index 0000000..4131540 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_flip_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_gradient_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_gradient_24px.svg new file mode 100644 index 0000000..8320b4a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_gradient_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_grain_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_grain_24px.svg new file mode 100644 index 0000000..66c0588 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_grain_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_grid_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_grid_off_24px.svg new file mode 100644 index 0000000..58702c8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_grid_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_grid_on_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_grid_on_24px.svg new file mode 100644 index 0000000..3caf213 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_grid_on_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_hdr_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_hdr_off_24px.svg new file mode 100644 index 0000000..1232bbf --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_hdr_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_hdr_on_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_hdr_on_24px.svg new file mode 100644 index 0000000..9acaafa --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_hdr_on_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_hdr_strong_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_hdr_strong_24px.svg new file mode 100644 index 0000000..cf68b9e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_hdr_strong_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_hdr_weak_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_hdr_weak_24px.svg new file mode 100644 index 0000000..1554922 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_hdr_weak_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_healing_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_healing_24px.svg new file mode 100644 index 0000000..cf4ec96 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_healing_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_image_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_image_24px.svg new file mode 100644 index 0000000..6ccc16a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_image_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_image_aspect_ratio_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_image_aspect_ratio_24px.svg new file mode 100644 index 0000000..4a8b293 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_image_aspect_ratio_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_iso_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_iso_24px.svg new file mode 100644 index 0000000..873aaa2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_iso_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_landscape_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_landscape_24px.svg new file mode 100644 index 0000000..b239af7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_landscape_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_leak_add_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_leak_add_24px.svg new file mode 100644 index 0000000..9b861bc --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_leak_add_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_leak_remove_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_leak_remove_24px.svg new file mode 100644 index 0000000..546c3d8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_leak_remove_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_lens_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_lens_24px.svg new file mode 100644 index 0000000..ced343a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_lens_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_linked_camera_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_linked_camera_24px.svg new file mode 100644 index 0000000..ec78871 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_linked_camera_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_24px.svg new file mode 100644 index 0000000..b4ca971 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_3_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_3_24px.svg new file mode 100644 index 0000000..114d59a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_3_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_4_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_4_24px.svg new file mode 100644 index 0000000..393b327 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_4_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_5_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_5_24px.svg new file mode 100644 index 0000000..6a1d1ed --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_5_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_6_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_6_24px.svg new file mode 100644 index 0000000..c323da8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_6_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_one_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_one_24px.svg new file mode 100644 index 0000000..b399d47 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_one_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_two_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_two_24px.svg new file mode 100644 index 0000000..845b590 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_looks_two_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_loupe_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_loupe_24px.svg new file mode 100644 index 0000000..dcd1a4b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_loupe_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_monochrome_photos_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_monochrome_photos_24px.svg new file mode 100644 index 0000000..2b72560 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_monochrome_photos_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_movie_creation_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_movie_creation_24px.svg new file mode 100644 index 0000000..8bbbb53 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_movie_creation_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_movie_filter_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_movie_filter_24px.svg new file mode 100644 index 0000000..f9a216e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_movie_filter_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_music_note_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_music_note_24px.svg new file mode 100644 index 0000000..cdc42fc --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_music_note_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_nature_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_nature_24px.svg new file mode 100644 index 0000000..1d1e1c7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_nature_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_nature_people_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_nature_people_24px.svg new file mode 100644 index 0000000..28a2e89 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_nature_people_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_navigate_before_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_navigate_before_24px.svg new file mode 100644 index 0000000..36e6e99 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_navigate_before_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_navigate_next_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_navigate_next_24px.svg new file mode 100644 index 0000000..47ed5fe --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_navigate_next_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_palette_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_palette_24px.svg new file mode 100644 index 0000000..c5fc873 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_palette_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_panorama_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_panorama_24px.svg new file mode 100644 index 0000000..312bb52 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_panorama_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_panorama_fish_eye_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_panorama_fish_eye_24px.svg new file mode 100644 index 0000000..81123c6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_panorama_fish_eye_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_panorama_horizontal_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_panorama_horizontal_24px.svg new file mode 100644 index 0000000..56791f0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_panorama_horizontal_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_panorama_vertical_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_panorama_vertical_24px.svg new file mode 100644 index 0000000..5f428f5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_panorama_vertical_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_panorama_wide_angle_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_panorama_wide_angle_24px.svg new file mode 100644 index 0000000..45996f8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_panorama_wide_angle_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_24px.svg new file mode 100644 index 0000000..6ccc16a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_album_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_album_24px.svg new file mode 100644 index 0000000..5da0d40 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_album_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_camera_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_camera_24px.svg new file mode 100644 index 0000000..94960bf --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_camera_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_filter_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_filter_24px.svg new file mode 100644 index 0000000..cc4b526 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_filter_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_library_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_library_24px.svg new file mode 100644 index 0000000..3af788b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_library_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_size_select_actual_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_size_select_actual_24px.svg new file mode 100644 index 0000000..1102b34 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_size_select_actual_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_size_select_large_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_size_select_large_24px.svg new file mode 100644 index 0000000..074d75a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_size_select_large_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_size_select_small_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_size_select_small_24px.svg new file mode 100644 index 0000000..7dbd961 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_photo_size_select_small_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_picture_as_pdf_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_picture_as_pdf_24px.svg new file mode 100644 index 0000000..e50f55f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_picture_as_pdf_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_portrait_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_portrait_24px.svg new file mode 100644 index 0000000..685a339 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_portrait_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_remove_red_eye_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_remove_red_eye_24px.svg new file mode 100644 index 0000000..5c700e3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_remove_red_eye_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_rotate_90_degrees_ccw_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_rotate_90_degrees_ccw_24px.svg new file mode 100644 index 0000000..4268bb7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_rotate_90_degrees_ccw_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_rotate_left_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_rotate_left_24px.svg new file mode 100644 index 0000000..6766814 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_rotate_left_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_rotate_right_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_rotate_right_24px.svg new file mode 100644 index 0000000..0269224 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_rotate_right_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_slideshow_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_slideshow_24px.svg new file mode 100644 index 0000000..079a6be --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_slideshow_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_straighten_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_straighten_24px.svg new file mode 100644 index 0000000..d161c5e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_straighten_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_style_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_style_24px.svg new file mode 100644 index 0000000..cce7564 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_style_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_switch_camera_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_switch_camera_24px.svg new file mode 100644 index 0000000..979b015 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_switch_camera_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_switch_video_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_switch_video_24px.svg new file mode 100644 index 0000000..821e50d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_switch_video_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_tag_faces_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_tag_faces_24px.svg new file mode 100644 index 0000000..57bea0f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_tag_faces_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_texture_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_texture_24px.svg new file mode 100644 index 0000000..b86bf95 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_texture_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_timelapse_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_timelapse_24px.svg new file mode 100644 index 0000000..6a3e4fe --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_timelapse_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_timer_10_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_timer_10_24px.svg new file mode 100644 index 0000000..95c3304 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_timer_10_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_timer_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_timer_24px.svg new file mode 100644 index 0000000..e113e76 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_timer_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_timer_3_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_timer_3_24px.svg new file mode 100644 index 0000000..88b7b90 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_timer_3_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_timer_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_timer_off_24px.svg new file mode 100644 index 0000000..aea789e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_timer_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_tonality_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_tonality_24px.svg new file mode 100644 index 0000000..5a34a05 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_tonality_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_transform_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_transform_24px.svg new file mode 100644 index 0000000..b11ce4a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_transform_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_tune_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_tune_24px.svg new file mode 100644 index 0000000..24dbcd6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_tune_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_view_comfy_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_view_comfy_24px.svg new file mode 100644 index 0000000..07cefea --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_view_comfy_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_view_compact_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_view_compact_24px.svg new file mode 100644 index 0000000..77c2483 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_view_compact_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_vignette_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_vignette_24px.svg new file mode 100644 index 0000000..c54a045 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_vignette_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_wb_auto_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_wb_auto_24px.svg new file mode 100644 index 0000000..1b76925 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_wb_auto_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_wb_cloudy_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_wb_cloudy_24px.svg new file mode 100644 index 0000000..47f8947 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_wb_cloudy_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_wb_incandescent_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_wb_incandescent_24px.svg new file mode 100644 index 0000000..4cac930 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_wb_incandescent_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_wb_iridescent_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_wb_iridescent_24px.svg new file mode 100644 index 0000000..1a54d92 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_wb_iridescent_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_wb_sunny_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_wb_sunny_24px.svg new file mode 100644 index 0000000..d83b6ca --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/image/ic_wb_sunny_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/index.php b/think.greaterchiangmai.com/public/revolution/assets/svg/index.php new file mode 100644 index 0000000..e69de29 diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_add_location_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_add_location_24px.svg new file mode 100644 index 0000000..6d2721b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_add_location_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_beenhere_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_beenhere_24px.svg new file mode 100644 index 0000000..36264e3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_beenhere_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_24px.svg new file mode 100644 index 0000000..dd924bf --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_bike_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_bike_24px.svg new file mode 100644 index 0000000..025c7e2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_bike_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_boat_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_boat_24px.svg new file mode 100644 index 0000000..5226b67 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_boat_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_bus_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_bus_24px.svg new file mode 100644 index 0000000..ade3c4d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_bus_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_car_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_car_24px.svg new file mode 100644 index 0000000..7cd866c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_car_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_railway_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_railway_24px.svg new file mode 100644 index 0000000..b7bdcba --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_railway_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_run_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_run_24px.svg new file mode 100644 index 0000000..7296105 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_run_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_subway_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_subway_24px.svg new file mode 100644 index 0000000..22a47ce --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_subway_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_transit_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_transit_24px.svg new file mode 100644 index 0000000..22a47ce --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_transit_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_walk_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_walk_24px.svg new file mode 100644 index 0000000..3572cb3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_directions_walk_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_edit_location_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_edit_location_24px.svg new file mode 100644 index 0000000..b14fc61 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_edit_location_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_flight_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_flight_24px.svg new file mode 100644 index 0000000..240d1b6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_flight_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_hotel_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_hotel_24px.svg new file mode 100644 index 0000000..f1cca2c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_hotel_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_layers_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_layers_24px.svg new file mode 100644 index 0000000..02160fa --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_layers_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_layers_clear_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_layers_clear_24px.svg new file mode 100644 index 0000000..b0a40d4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_layers_clear_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_activity_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_activity_24px.svg new file mode 100644 index 0000000..cb28463 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_activity_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_airport_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_airport_24px.svg new file mode 100644 index 0000000..2fe1dea --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_airport_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_atm_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_atm_24px.svg new file mode 100644 index 0000000..a893448 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_atm_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_bar_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_bar_24px.svg new file mode 100644 index 0000000..9232c7d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_bar_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_cafe_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_cafe_24px.svg new file mode 100644 index 0000000..dfdee9c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_cafe_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_car_wash_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_car_wash_24px.svg new file mode 100644 index 0000000..611f73d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_car_wash_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_convenience_store_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_convenience_store_24px.svg new file mode 100644 index 0000000..8070a89 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_convenience_store_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_dining_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_dining_24px.svg new file mode 100644 index 0000000..3be0060 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_dining_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_drink_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_drink_24px.svg new file mode 100644 index 0000000..4ba9152 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_drink_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_florist_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_florist_24px.svg new file mode 100644 index 0000000..bf9d45f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_florist_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_gas_station_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_gas_station_24px.svg new file mode 100644 index 0000000..08cb670 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_gas_station_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_grocery_store_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_grocery_store_24px.svg new file mode 100644 index 0000000..ee758e6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_grocery_store_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_hospital_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_hospital_24px.svg new file mode 100644 index 0000000..85da4ff --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_hospital_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_hotel_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_hotel_24px.svg new file mode 100644 index 0000000..f1cca2c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_hotel_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_laundry_service_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_laundry_service_24px.svg new file mode 100644 index 0000000..a519c04 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_laundry_service_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_library_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_library_24px.svg new file mode 100644 index 0000000..5fa5109 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_library_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_mall_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_mall_24px.svg new file mode 100644 index 0000000..35683c7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_mall_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_movies_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_movies_24px.svg new file mode 100644 index 0000000..74652a6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_movies_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_offer_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_offer_24px.svg new file mode 100644 index 0000000..20ad1fe --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_offer_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_parking_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_parking_24px.svg new file mode 100644 index 0000000..0cc3198 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_parking_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_pharmacy_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_pharmacy_24px.svg new file mode 100644 index 0000000..7272010 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_pharmacy_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_phone_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_phone_24px.svg new file mode 100644 index 0000000..5908b6a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_phone_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_pizza_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_pizza_24px.svg new file mode 100644 index 0000000..d67936e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_pizza_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_play_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_play_24px.svg new file mode 100644 index 0000000..cb28463 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_play_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_post_office_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_post_office_24px.svg new file mode 100644 index 0000000..f2c5b4f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_post_office_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_printshop_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_printshop_24px.svg new file mode 100644 index 0000000..6128bd8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_printshop_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_see_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_see_24px.svg new file mode 100644 index 0000000..94960bf --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_see_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_shipping_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_shipping_24px.svg new file mode 100644 index 0000000..c928262 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_shipping_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_taxi_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_taxi_24px.svg new file mode 100644 index 0000000..e3559e9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_local_taxi_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_map_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_map_24px.svg new file mode 100644 index 0000000..5fd9669 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_map_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_my_location_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_my_location_24px.svg new file mode 100644 index 0000000..394dc36 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_my_location_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_navigation_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_navigation_24px.svg new file mode 100644 index 0000000..2891c58 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_navigation_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_near_me_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_near_me_24px.svg new file mode 100644 index 0000000..33afbe0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_near_me_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_person_pin_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_person_pin_24px.svg new file mode 100644 index 0000000..1955081 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_person_pin_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_person_pin_circle_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_person_pin_circle_24px.svg new file mode 100644 index 0000000..f21fb22 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_person_pin_circle_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_pin_drop_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_pin_drop_24px.svg new file mode 100644 index 0000000..498d663 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_pin_drop_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_place_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_place_24px.svg new file mode 100644 index 0000000..490afe9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_place_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_rate_review_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_rate_review_24px.svg new file mode 100644 index 0000000..ce447b6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_rate_review_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_restaurant_menu_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_restaurant_menu_24px.svg new file mode 100644 index 0000000..3be0060 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_restaurant_menu_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_satellite_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_satellite_24px.svg new file mode 100644 index 0000000..ef3e5ff --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_satellite_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_store_mall_directory_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_store_mall_directory_24px.svg new file mode 100644 index 0000000..2b06cc5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_store_mall_directory_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_terrain_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_terrain_24px.svg new file mode 100644 index 0000000..b239af7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_terrain_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_traffic_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_traffic_24px.svg new file mode 100644 index 0000000..9560743 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_traffic_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_zoom_out_map_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_zoom_out_map_24px.svg new file mode 100644 index 0000000..587ef03 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/maps/ic_zoom_out_map_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_apps_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_apps_24px.svg new file mode 100644 index 0000000..b0ccb6c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_apps_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_apps_36px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_apps_36px.svg new file mode 100644 index 0000000..ca46161 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_apps_36px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_back_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_back_24px.svg new file mode 100644 index 0000000..00d44bf --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_back_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_back_36px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_back_36px.svg new file mode 100644 index 0000000..22ca607 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_back_36px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_downward_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_downward_24px.svg new file mode 100644 index 0000000..27ddfa1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_downward_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_drop_down_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_drop_down_24px.svg new file mode 100644 index 0000000..6e4510d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_drop_down_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_drop_down_36px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_drop_down_36px.svg new file mode 100644 index 0000000..5f5b32d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_drop_down_36px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_drop_down_circle_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_drop_down_circle_24px.svg new file mode 100644 index 0000000..689107c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_drop_down_circle_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_drop_up_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_drop_up_24px.svg new file mode 100644 index 0000000..b9aa2cc --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_drop_up_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_drop_up_36px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_drop_up_36px.svg new file mode 100644 index 0000000..4d62423 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_drop_up_36px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_forward_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_forward_24px.svg new file mode 100644 index 0000000..c4a2c18 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_forward_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_forward_36px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_forward_36px.svg new file mode 100644 index 0000000..9526d2f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_forward_36px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_upward_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_upward_24px.svg new file mode 100644 index 0000000..e4d9a7e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_arrow_upward_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_cancel_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_cancel_24px.svg new file mode 100644 index 0000000..d6e55da --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_cancel_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_cancel_36px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_cancel_36px.svg new file mode 100644 index 0000000..19aec76 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_cancel_36px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_check_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_check_24px.svg new file mode 100644 index 0000000..a608f7d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_check_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_check_36px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_check_36px.svg new file mode 100644 index 0000000..16d7e30 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_check_36px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_chevron_left_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_chevron_left_24px.svg new file mode 100644 index 0000000..36e6e99 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_chevron_left_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_chevron_left_36px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_chevron_left_36px.svg new file mode 100644 index 0000000..3893bf3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_chevron_left_36px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_chevron_right_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_chevron_right_24px.svg new file mode 100644 index 0000000..47ed5fe --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_chevron_right_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_chevron_right_36px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_chevron_right_36px.svg new file mode 100644 index 0000000..f18671b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_chevron_right_36px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_close_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_close_24px.svg new file mode 100644 index 0000000..865788b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_close_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_close_36px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_close_36px.svg new file mode 100644 index 0000000..6b3c0a5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_close_36px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_expand_less_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_expand_less_24px.svg new file mode 100644 index 0000000..1b5a326 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_expand_less_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_expand_less_36px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_expand_less_36px.svg new file mode 100644 index 0000000..62a97de --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_expand_less_36px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_expand_more_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_expand_more_24px.svg new file mode 100644 index 0000000..e3e13c5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_expand_more_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_expand_more_36px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_expand_more_36px.svg new file mode 100644 index 0000000..69532ad --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_expand_more_36px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_fullscreen_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_fullscreen_24px.svg new file mode 100644 index 0000000..e5eb6a2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_fullscreen_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_fullscreen_36px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_fullscreen_36px.svg new file mode 100644 index 0000000..7eaea7a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_fullscreen_36px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_fullscreen_exit_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_fullscreen_exit_24px.svg new file mode 100644 index 0000000..9d3ff86 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_fullscreen_exit_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_fullscreen_exit_36px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_fullscreen_exit_36px.svg new file mode 100644 index 0000000..e76862f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_fullscreen_exit_36px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_menu_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_menu_24px.svg new file mode 100644 index 0000000..ae7c36c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_menu_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_menu_36px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_menu_36px.svg new file mode 100644 index 0000000..3370d36 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_menu_36px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_more_horiz_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_more_horiz_24px.svg new file mode 100644 index 0000000..afb392c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_more_horiz_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_more_horiz_36px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_more_horiz_36px.svg new file mode 100644 index 0000000..fe6cf99 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_more_horiz_36px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_more_vert_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_more_vert_24px.svg new file mode 100644 index 0000000..f2427f8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_more_vert_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_more_vert_36px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_more_vert_36px.svg new file mode 100644 index 0000000..94e9462 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_more_vert_36px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_refresh_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_refresh_24px.svg new file mode 100644 index 0000000..f5d626c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_refresh_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_refresh_36px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_refresh_36px.svg new file mode 100644 index 0000000..a05c5d1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_refresh_36px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_subdirectory_arrow_left_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_subdirectory_arrow_left_24px.svg new file mode 100644 index 0000000..a64ef9f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_subdirectory_arrow_left_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_subdirectory_arrow_right_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_subdirectory_arrow_right_24px.svg new file mode 100644 index 0000000..dd10ac6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_subdirectory_arrow_right_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_unfold_less_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_unfold_less_24px.svg new file mode 100644 index 0000000..d84a82d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_unfold_less_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_unfold_less_36px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_unfold_less_36px.svg new file mode 100644 index 0000000..f80d1e2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_unfold_less_36px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_unfold_more_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_unfold_more_24px.svg new file mode 100644 index 0000000..5cb8b46 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_unfold_more_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_unfold_more_36px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_unfold_more_36px.svg new file mode 100644 index 0000000..8085c68 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/navigation/ic_unfold_more_36px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_adb_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_adb_24px.svg new file mode 100644 index 0000000..ca94af5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_adb_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_flat_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_flat_24px.svg new file mode 100644 index 0000000..a1bd66d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_flat_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_flat_angled_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_flat_angled_24px.svg new file mode 100644 index 0000000..fa89cc0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_flat_angled_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_individual_suite_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_individual_suite_24px.svg new file mode 100644 index 0000000..5539558 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_individual_suite_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_legroom_extra_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_legroom_extra_24px.svg new file mode 100644 index 0000000..dff07be --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_legroom_extra_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_legroom_normal_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_legroom_normal_24px.svg new file mode 100644 index 0000000..6ecb22b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_legroom_normal_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_legroom_reduced_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_legroom_reduced_24px.svg new file mode 100644 index 0000000..a640230 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_legroom_reduced_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_recline_extra_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_recline_extra_24px.svg new file mode 100644 index 0000000..eaf3b35 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_recline_extra_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_recline_normal_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_recline_normal_24px.svg new file mode 100644 index 0000000..46d6d9b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_airline_seat_recline_normal_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_bluetooth_audio_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_bluetooth_audio_24px.svg new file mode 100644 index 0000000..8bb176e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_bluetooth_audio_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_confirmation_number_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_confirmation_number_24px.svg new file mode 100644 index 0000000..1206bad --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_confirmation_number_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_disc_full_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_disc_full_24px.svg new file mode 100644 index 0000000..fd462d8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_disc_full_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_do_not_disturb_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_do_not_disturb_24px.svg new file mode 100644 index 0000000..065210c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_do_not_disturb_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_do_not_disturb_alt_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_do_not_disturb_alt_24px.svg new file mode 100644 index 0000000..9f91150 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_do_not_disturb_alt_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_drive_eta_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_drive_eta_24px.svg new file mode 100644 index 0000000..85b07ca --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_drive_eta_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_enhanced_encryption_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_enhanced_encryption_24px.svg new file mode 100644 index 0000000..2d0ddf8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_enhanced_encryption_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_event_available_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_event_available_24px.svg new file mode 100644 index 0000000..035b5c8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_event_available_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_event_busy_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_event_busy_24px.svg new file mode 100644 index 0000000..d3e6d7f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_event_busy_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_event_note_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_event_note_24px.svg new file mode 100644 index 0000000..5beeb71 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_event_note_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_folder_special_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_folder_special_24px.svg new file mode 100644 index 0000000..adccedd --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_folder_special_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_live_tv_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_live_tv_24px.svg new file mode 100644 index 0000000..67e98e7 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_live_tv_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_mms_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_mms_24px.svg new file mode 100644 index 0000000..f15436c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_mms_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_more_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_more_24px.svg new file mode 100644 index 0000000..ad5567a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_more_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_network_check_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_network_check_24px.svg new file mode 100644 index 0000000..6b31ab9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_network_check_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_network_locked_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_network_locked_24px.svg new file mode 100644 index 0000000..3a5c0d6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_network_locked_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_no_encryption_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_no_encryption_24px.svg new file mode 100644 index 0000000..0528c12 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_no_encryption_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_ondemand_video_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_ondemand_video_24px.svg new file mode 100644 index 0000000..239690b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_ondemand_video_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_personal_video_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_personal_video_24px.svg new file mode 100644 index 0000000..a4169e9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_personal_video_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_phone_bluetooth_speaker_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_phone_bluetooth_speaker_24px.svg new file mode 100644 index 0000000..69f9398 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_phone_bluetooth_speaker_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_phone_forwarded_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_phone_forwarded_24px.svg new file mode 100644 index 0000000..c21cfc1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_phone_forwarded_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_phone_in_talk_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_phone_in_talk_24px.svg new file mode 100644 index 0000000..c73964c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_phone_in_talk_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_phone_locked_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_phone_locked_24px.svg new file mode 100644 index 0000000..aca754f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_phone_locked_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_phone_missed_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_phone_missed_24px.svg new file mode 100644 index 0000000..bb68b75 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_phone_missed_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_phone_paused_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_phone_paused_24px.svg new file mode 100644 index 0000000..2aa7400 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_phone_paused_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_power_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_power_24px.svg new file mode 100644 index 0000000..3cb2846 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_power_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_rv_hookup_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_rv_hookup_24px.svg new file mode 100644 index 0000000..c261516 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_rv_hookup_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sd_card_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sd_card_24px.svg new file mode 100644 index 0000000..15ab481 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sd_card_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sim_card_alert_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sim_card_alert_24px.svg new file mode 100644 index 0000000..f471892 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sim_card_alert_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sms_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sms_24px.svg new file mode 100644 index 0000000..b427d45 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sms_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sms_failed_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sms_failed_24px.svg new file mode 100644 index 0000000..72b0945 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sms_failed_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sync_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sync_24px.svg new file mode 100644 index 0000000..327ff63 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sync_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sync_disabled_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sync_disabled_24px.svg new file mode 100644 index 0000000..cb82f21 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sync_disabled_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sync_problem_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sync_problem_24px.svg new file mode 100644 index 0000000..797674e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_sync_problem_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_system_update_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_system_update_24px.svg new file mode 100644 index 0000000..1013886 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_system_update_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_tap_and_play_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_tap_and_play_24px.svg new file mode 100644 index 0000000..6951de4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_tap_and_play_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_time_to_leave_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_time_to_leave_24px.svg new file mode 100644 index 0000000..85b07ca --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_time_to_leave_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_vibration_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_vibration_24px.svg new file mode 100644 index 0000000..789d044 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_vibration_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_voice_chat_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_voice_chat_24px.svg new file mode 100644 index 0000000..9e72309 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_voice_chat_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_vpn_lock_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_vpn_lock_24px.svg new file mode 100644 index 0000000..6c4c795 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_vpn_lock_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_wc_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_wc_24px.svg new file mode 100644 index 0000000..022dcde --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_wc_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_wifi_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_wifi_24px.svg new file mode 100644 index 0000000..cafae9c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/notification/ic_wifi_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_ac_unit_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_ac_unit_24px.svg new file mode 100644 index 0000000..c4cc71f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_ac_unit_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_airport_shuttle_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_airport_shuttle_24px.svg new file mode 100644 index 0000000..392d651 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_airport_shuttle_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_all_inclusive_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_all_inclusive_24px.svg new file mode 100644 index 0000000..090d242 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_all_inclusive_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_beach_access_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_beach_access_24px.svg new file mode 100644 index 0000000..3c32044 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_beach_access_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_business_center_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_business_center_24px.svg new file mode 100644 index 0000000..a979c93 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_business_center_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_casino_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_casino_24px.svg new file mode 100644 index 0000000..ea9b900 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_casino_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_child_care_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_child_care_24px.svg new file mode 100644 index 0000000..f73f9df --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_child_care_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_child_friendly_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_child_friendly_24px.svg new file mode 100644 index 0000000..ba51048 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_child_friendly_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_fitness_center_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_fitness_center_24px.svg new file mode 100644 index 0000000..828dba8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_fitness_center_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_free_breakfast_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_free_breakfast_24px.svg new file mode 100644 index 0000000..c56a433 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_free_breakfast_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_golf_course_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_golf_course_24px.svg new file mode 100644 index 0000000..500a00f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_golf_course_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_hot_tub_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_hot_tub_24px.svg new file mode 100644 index 0000000..865ea75 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_hot_tub_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_kitchen_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_kitchen_24px.svg new file mode 100644 index 0000000..aa0616a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_kitchen_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_pool_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_pool_24px.svg new file mode 100644 index 0000000..b08944e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_pool_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_room_service_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_room_service_24px.svg new file mode 100644 index 0000000..560f160 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_room_service_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_smoke_free_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_smoke_free_24px.svg new file mode 100644 index 0000000..0bed46f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_smoke_free_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_smoking_rooms_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_smoking_rooms_24px.svg new file mode 100644 index 0000000..e8aec2d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_smoking_rooms_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_spa_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_spa_24px.svg new file mode 100644 index 0000000..7300651 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/places/ic_spa_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_cake_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_cake_24px.svg new file mode 100644 index 0000000..23dc09f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_cake_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_domain_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_domain_24px.svg new file mode 100644 index 0000000..bfaefa1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_domain_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_group_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_group_24px.svg new file mode 100644 index 0000000..bd9a133 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_group_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_group_add_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_group_add_24px.svg new file mode 100644 index 0000000..f863fa5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_group_add_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_location_city_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_location_city_24px.svg new file mode 100644 index 0000000..357849b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_location_city_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_mood_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_mood_24px.svg new file mode 100644 index 0000000..57bea0f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_mood_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_mood_bad_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_mood_bad_24px.svg new file mode 100644 index 0000000..400f4da --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_mood_bad_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_notifications_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_notifications_24px.svg new file mode 100644 index 0000000..cdb3331 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_notifications_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_notifications_active_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_notifications_active_24px.svg new file mode 100644 index 0000000..6d72315 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_notifications_active_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_notifications_none_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_notifications_none_24px.svg new file mode 100644 index 0000000..7509df6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_notifications_none_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_notifications_off_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_notifications_off_24px.svg new file mode 100644 index 0000000..0827f2a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_notifications_off_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_notifications_paused_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_notifications_paused_24px.svg new file mode 100644 index 0000000..06ed575 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_notifications_paused_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_pages_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_pages_24px.svg new file mode 100644 index 0000000..c8a0421 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_pages_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_party_mode_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_party_mode_24px.svg new file mode 100644 index 0000000..12a8ee3 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_party_mode_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_people_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_people_24px.svg new file mode 100644 index 0000000..bd9a133 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_people_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_people_outline_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_people_outline_24px.svg new file mode 100644 index 0000000..901e72c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_people_outline_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_person_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_person_24px.svg new file mode 100644 index 0000000..e22d151 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_person_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_person_add_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_person_add_24px.svg new file mode 100644 index 0000000..97e4d3a --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_person_add_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_person_outline_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_person_outline_24px.svg new file mode 100644 index 0000000..a1ac943 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_person_outline_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_plus_one_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_plus_one_24px.svg new file mode 100644 index 0000000..09b83d6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_plus_one_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_poll_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_poll_24px.svg new file mode 100644 index 0000000..cc7768b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_poll_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_public_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_public_24px.svg new file mode 100644 index 0000000..6356e73 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_public_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_school_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_school_24px.svg new file mode 100644 index 0000000..3a6524b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_school_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_share_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_share_24px.svg new file mode 100644 index 0000000..ed3e530 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_share_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_whatshot_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_whatshot_24px.svg new file mode 100644 index 0000000..d064899 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/social/ic_whatshot_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_check_box_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_check_box_24px.svg new file mode 100644 index 0000000..36658a4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_check_box_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_check_box_outline_blank_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_check_box_outline_blank_24px.svg new file mode 100644 index 0000000..03aea59 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_check_box_outline_blank_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_indeterminate_check_box_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_indeterminate_check_box_24px.svg new file mode 100644 index 0000000..4a7533d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_indeterminate_check_box_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_radio_button_checked_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_radio_button_checked_24px.svg new file mode 100644 index 0000000..2cb138b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_radio_button_checked_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_radio_button_unchecked_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_radio_button_unchecked_24px.svg new file mode 100644 index 0000000..acce6d1 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_radio_button_unchecked_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_star_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_star_24px.svg new file mode 100644 index 0000000..46d104b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_star_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_star_border_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_star_border_24px.svg new file mode 100644 index 0000000..98e7040 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_star_border_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_star_half_24px.svg b/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_star_half_24px.svg new file mode 100644 index 0000000..a07f7d0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/assets/svg/toggle/ic_star_half_24px.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/css/.DS_Store b/think.greaterchiangmai.com/public/revolution/css/.DS_Store new file mode 100644 index 0000000..d2b917c Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/css/.DS_Store differ diff --git a/think.greaterchiangmai.com/public/revolution/css/closedhand.cur b/think.greaterchiangmai.com/public/revolution/css/closedhand.cur new file mode 100644 index 0000000..41aaa62 Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/css/closedhand.cur differ diff --git a/think.greaterchiangmai.com/public/revolution/css/index.php b/think.greaterchiangmai.com/public/revolution/css/index.php new file mode 100644 index 0000000..e69de29 diff --git a/think.greaterchiangmai.com/public/revolution/css/layers.css b/think.greaterchiangmai.com/public/revolution/css/layers.css new file mode 100644 index 0000000..18b49f5 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/css/layers.css @@ -0,0 +1,5805 @@ +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Layer Style Settings - + +Screen Stylesheet + +version: 5.0.0 +date: 18/03/15 +author: themepunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ + +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.tp-caption.Twitter-Content a,.tp-caption.Twitter-Content a:visited +{ + color:#0084B4!important; +} + +.tp-caption.Twitter-Content a:hover +{ + color:#0084B4!important; + text-decoration:underline!important; +} + +.tp-caption.medium_grey,.medium_grey +{ + background-color:#888; + border-style:none; + border-width:0; + color:#fff; + font-family:Arial; + font-size:20px; + font-weight:700; + line-height:20px; + margin:0; + padding:2px 4px; + position:absolute; + text-shadow:0 2px 5px rgba(0,0,0,0.5); + white-space:nowrap; +} + +.tp-caption.small_text,.small_text +{ + border-style:none; + border-width:0; + color:#fff; + font-family:Arial; + font-size:14px; + font-weight:700; + line-height:20px; + margin:0; + position:absolute; + text-shadow:0 2px 5px rgba(0,0,0,0.5); + white-space:nowrap; +} + +.tp-caption.medium_text,.medium_text +{ + border-style:none; + border-width:0; + color:#fff; + font-family:Arial; + font-size:20px; + font-weight:700; + line-height:20px; + margin:0; + position:absolute; + text-shadow:0 2px 5px rgba(0,0,0,0.5); + white-space:nowrap; +} + +.tp-caption.large_text,.large_text +{ + border-style:none; + border-width:0; + color:#fff; + font-family:Arial; + font-size:40px; + font-weight:700; + line-height:40px; + margin:0; + position:absolute; + text-shadow:0 2px 5px rgba(0,0,0,0.5); + white-space:nowrap; +} + +.tp-caption.very_large_text,.very_large_text +{ + border-style:none; + border-width:0; + color:#fff; + font-family:Arial; + font-size:60px; + font-weight:700; + letter-spacing:-2px; + line-height:60px; + margin:0; + position:absolute; + text-shadow:0 2px 5px rgba(0,0,0,0.5); + white-space:nowrap; +} + +.tp-caption.very_big_white,.very_big_white +{ + background-color:#000; + border-style:none; + border-width:0; + color:#fff; + font-family:Arial; + font-size:60px; + font-weight:800; + line-height:60px; + margin:0; + padding:1px 4px 0; + position:absolute; + text-shadow:none; + white-space:nowrap; +} + +.tp-caption.very_big_black,.very_big_black +{ + background-color:#fff; + border-style:none; + border-width:0; + color:#000; + font-family:Arial; + font-size:60px; + font-weight:700; + line-height:60px; + margin:0; + padding:1px 4px 0; + position:absolute; + text-shadow:none; + white-space:nowrap; +} + +.tp-caption.modern_medium_fat,.modern_medium_fat +{ + border-style:none; + border-width:0; + color:#000; + font-family:"Open Sans", sans-serif; + font-size:24px; + font-weight:800; + line-height:20px; + margin:0; + position:absolute; + text-shadow:none; + white-space:nowrap; +} + +.tp-caption.modern_medium_fat_white,.modern_medium_fat_white +{ + border-style:none; + border-width:0; + color:#fff; + font-family:"Open Sans", sans-serif; + font-size:24px; + font-weight:800; + line-height:20px; + margin:0; + position:absolute; + text-shadow:none; + white-space:nowrap; +} + +.tp-caption.modern_medium_light,.modern_medium_light +{ + border-style:none; + border-width:0; + color:#000; + font-family:"Open Sans", sans-serif; + font-size:24px; + font-weight:300; + line-height:20px; + margin:0; + position:absolute; + text-shadow:none; + white-space:nowrap; +} + +.tp-caption.modern_big_bluebg,.modern_big_bluebg +{ + background-color:#4e5b6c; + border-style:none; + border-width:0; + color:#fff; + font-family:"Open Sans", sans-serif; + font-size:30px; + font-weight:800; + letter-spacing:0; + line-height:36px; + margin:0; + padding:3px 10px; + position:absolute; + text-shadow:none; +} + +.tp-caption.modern_big_redbg,.modern_big_redbg +{ + background-color:#de543e; + border-style:none; + border-width:0; + color:#fff; + font-family:"Open Sans", sans-serif; + font-size:30px; + font-weight:300; + letter-spacing:0; + line-height:36px; + margin:0; + padding:1px 10px 3px; + position:absolute; + text-shadow:none; +} + +.tp-caption.modern_small_text_dark,.modern_small_text_dark +{ + border-style:none; + border-width:0; + color:#555; + font-family:Arial; + font-size:14px; + line-height:22px; + margin:0; + position:absolute; + text-shadow:none; + white-space:nowrap; +} + +.tp-caption.boxshadow,.boxshadow +{ + box-shadow:0 0 20px rgba(0,0,0,0.5); +} + +.tp-caption.black,.black +{ + color:#000; + text-shadow:none; +} + +.tp-caption.noshadow,.noshadow +{ + text-shadow:none; +} + +.tp-caption.thinheadline_dark,.thinheadline_dark +{ + background-color:transparent; + color:rgba(0,0,0,0.85); + font-family:"Open Sans"; + font-size:30px; + font-weight:300; + line-height:30px; + position:absolute; + text-shadow:none; +} + +.tp-caption.thintext_dark,.thintext_dark +{ + background-color:transparent; + color:rgba(0,0,0,0.85); + font-family:"Open Sans"; + font-size:16px; + font-weight:300; + line-height:26px; + position:absolute; + text-shadow:none; +} + +.tp-caption.largeblackbg,.largeblackbg +{ + + + background-color:#000; + border-radius:0; + color:#fff; + font-family:"Open Sans"; + font-size:50px; + font-weight:300; + line-height:70px; + padding:0 20px; + position:absolute; + text-shadow:none; +} + +.tp-caption.largepinkbg,.largepinkbg +{ + + + background-color:#db4360; + border-radius:0; + color:#fff; + font-family:"Open Sans"; + font-size:50px; + font-weight:300; + line-height:70px; + padding:0 20px; + position:absolute; + text-shadow:none; +} + +.tp-caption.largewhitebg,.largewhitebg +{ + + + background-color:#fff; + border-radius:0; + color:#000; + font-family:"Open Sans"; + font-size:50px; + font-weight:300; + line-height:70px; + padding:0 20px; + position:absolute; + text-shadow:none; +} + +.tp-caption.largegreenbg,.largegreenbg +{ + + + background-color:#67ae73; + border-radius:0; + color:#fff; + font-family:"Open Sans"; + font-size:50px; + font-weight:300; + line-height:70px; + padding:0 20px; + position:absolute; + text-shadow:none; +} + +.tp-caption.excerpt,.excerpt +{ + background-color:rgba(0,0,0,1); + border-color:#fff; + border-style:none; + border-width:0; + color:#fff; + font-family:Arial; + font-size:36px; + font-weight:700; + height:auto; + letter-spacing:-1.5px; + line-height:36px; + margin:0; + padding:1px 4px 0; + text-decoration:none; + text-shadow:none; + white-space:normal!important; + width:150px; +} + +.tp-caption.large_bold_grey,.large_bold_grey +{ + background-color:transparent; + border-color:#ffd658; + border-style:none; + border-width:0; + color:#666; + font-family:"Open Sans"; + font-size:60px; + font-weight:800; + line-height:60px; + margin:0; + padding:1px 4px 0; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.medium_thin_grey,.medium_thin_grey +{ + background-color:transparent; + border-color:#ffd658; + border-style:none; + border-width:0; + color:#666; + font-family:"Open Sans"; + font-size:34px; + font-weight:300; + line-height:30px; + margin:0; + padding:1px 4px 0; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.small_thin_grey,.small_thin_grey +{ + background-color:transparent; + border-color:#ffd658; + border-style:none; + border-width:0; + color:#757575; + font-family:"Open Sans"; + font-size:18px; + font-weight:300; + line-height:26px; + margin:0; + padding:1px 4px 0; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.lightgrey_divider,.lightgrey_divider +{ + background-color:rgba(235,235,235,1); + background-position:initial; + background-repeat:initial; + border-color:#222; + border-style:none; + border-width:0; + height:3px; + text-decoration:none; + width:370px; +} + +.tp-caption.large_bold_darkblue,.large_bold_darkblue +{ + background-color:transparent; + border-color:#ffd658; + border-style:none; + border-width:0; + color:#34495e; + font-family:"Open Sans"; + font-size:58px; + font-weight:800; + line-height:60px; + text-decoration:none; +} + +.tp-caption.medium_bg_darkblue,.medium_bg_darkblue +{ + background-color:#34495e; + border-color:#ffd658; + border-style:none; + border-width:0; + color:#fff; + font-family:"Open Sans"; + font-size:20px; + font-weight:800; + line-height:20px; + padding:10px; + text-decoration:none; +} + +.tp-caption.medium_bold_red,.medium_bold_red +{ + background-color:transparent; + border-color:#ffd658; + border-style:none; + border-width:0; + color:#e33a0c; + font-family:"Open Sans"; + font-size:24px; + font-weight:800; + line-height:30px; + padding:0; + text-decoration:none; +} + +.tp-caption.medium_light_red,.medium_light_red +{ + background-color:transparent; + border-color:#ffd658; + border-style:none; + border-width:0; + color:#e33a0c; + font-family:"Open Sans"; + font-size:21px; + font-weight:300; + line-height:26px; + padding:0; + text-decoration:none; +} + +.tp-caption.medium_bg_red,.medium_bg_red +{ + background-color:#e33a0c; + border-color:#ffd658; + border-style:none; + border-width:0; + color:#fff; + font-family:"Open Sans"; + font-size:20px; + font-weight:800; + line-height:20px; + padding:10px; + text-decoration:none; +} + +.tp-caption.medium_bold_orange,.medium_bold_orange +{ + background-color:transparent; + border-color:#ffd658; + border-style:none; + border-width:0; + color:#f39c12; + font-family:"Open Sans"; + font-size:24px; + font-weight:800; + line-height:30px; + text-decoration:none; +} + +.tp-caption.medium_bg_orange,.medium_bg_orange +{ + background-color:#f39c12; + border-color:#ffd658; + border-style:none; + border-width:0; + color:#fff; + font-family:"Open Sans"; + font-size:20px; + font-weight:800; + line-height:20px; + padding:10px; + text-decoration:none; +} + +.tp-caption.grassfloor,.grassfloor +{ + background-color:rgba(160,179,151,1); + border-color:#222; + border-style:none; + border-width:0; + height:150px; + text-decoration:none; + width:4000px; +} + +.tp-caption.large_bold_white,.large_bold_white +{ + background-color:transparent; + border-color:#ffd658; + border-style:none; + border-width:0; + color:#fff; + font-family:"Open Sans"; + font-size:58px; + font-weight:800; + line-height:60px; + text-decoration:none; +} + +.tp-caption.medium_light_white,.medium_light_white +{ + background-color:transparent; + border-color:#ffd658; + border-style:none; + border-width:0; + color:#fff; + font-family:"Open Sans"; + font-size:30px; + font-weight:300; + line-height:36px; + padding:0; + text-decoration:none; +} + +.tp-caption.mediumlarge_light_white,.mediumlarge_light_white +{ + background-color:transparent; + border-color:#ffd658; + border-style:none; + border-width:0; + color:#fff; + font-family:"Open Sans"; + font-size:34px; + font-weight:300; + line-height:40px; + padding:0; + text-decoration:none; +} + +.tp-caption.mediumlarge_light_white_center,.mediumlarge_light_white_center +{ + background-color:transparent; + border-color:#ffd658; + border-style:none; + border-width:0; + color:#fff; + font-family:"Open Sans"; + font-size:34px; + font-weight:300; + line-height:40px; + padding:0; + text-align:center; + text-decoration:none; +} + +.tp-caption.medium_bg_asbestos,.medium_bg_asbestos +{ + background-color:#7f8c8d; + border-color:#ffd658; + border-style:none; + border-width:0; + color:#fff; + font-family:"Open Sans"; + font-size:20px; + font-weight:800; + line-height:20px; + padding:10px; + text-decoration:none; +} + +.tp-caption.medium_light_black,.medium_light_black +{ + background-color:transparent; + border-color:#ffd658; + border-style:none; + border-width:0; + color:#000; + font-family:"Open Sans"; + font-size:30px; + font-weight:300; + line-height:36px; + padding:0; + text-decoration:none; +} + +.tp-caption.large_bold_black,.large_bold_black +{ + background-color:transparent; + border-color:#ffd658; + border-style:none; + border-width:0; + color:#000; + font-family:"Open Sans"; + font-size:58px; + font-weight:800; + line-height:60px; + text-decoration:none; +} + +.tp-caption.mediumlarge_light_darkblue,.mediumlarge_light_darkblue +{ + background-color:transparent; + border-color:#ffd658; + border-style:none; + border-width:0; + color:#34495e; + font-family:"Open Sans"; + font-size:34px; + font-weight:300; + line-height:40px; + padding:0; + text-decoration:none; +} + +.tp-caption.small_light_white,.small_light_white +{ + background-color:transparent; + border-color:#ffd658; + border-style:none; + border-width:0; + color:#fff; + font-family:"Open Sans"; + font-size:17px; + font-weight:300; + line-height:28px; + padding:0; + text-decoration:none; +} + +.tp-caption.roundedimage,.roundedimage +{ + border-color:#222; + border-style:none; + border-width:0; +} + +.tp-caption.large_bg_black,.large_bg_black +{ + background-color:#000; + border-color:#ffd658; + border-style:none; + border-width:0; + color:#fff; + font-family:"Open Sans"; + font-size:40px; + font-weight:800; + line-height:40px; + padding:10px 20px 15px; + text-decoration:none; +} + +.tp-caption.mediumwhitebg,.mediumwhitebg +{ + background-color:#fff; + border-color:#000; + border-style:none; + border-width:0; + color:#000; + font-family:"Open Sans"; + font-size:30px; + font-weight:300; + line-height:30px; + padding:5px 15px 10px; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.maincaption,.maincaption +{ + background-color:transparent; + border-color:#000; + border-style:none; + border-width:0; + color:#212a40; + font-family:roboto; + font-size:33px; + font-weight:500; + line-height:43px; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.miami_title_60px,.miami_title_60px +{ + background-color:transparent; + border-color:#000; + border-style:none; + border-width:0; + color:#fff; + font-family:"Source Sans Pro"; + font-size:60px; + font-weight:700; + letter-spacing:1px; + line-height:60px; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.miami_subtitle,.miami_subtitle +{ + background-color:transparent; + border-color:#000; + border-style:none; + border-width:0; + color:rgba(255,255,255,0.65); + font-family:"Source Sans Pro"; + font-size:17px; + font-weight:400; + letter-spacing:2px; + line-height:24px; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.divideline30px,.divideline30px +{ + background:#fff; + background-color:#fff; + border-color:#222; + border-style:none; + border-width:0; + height:2px; + min-width:30px; + text-decoration:none; +} + +.tp-caption.Miami_nostyle,.Miami_nostyle +{ + border-color:#222; + border-style:none; + border-width:0; +} + +.tp-caption.miami_content_light,.miami_content_light +{ + background-color:transparent; + border-color:#000; + border-style:none; + border-width:0; + color:#fff; + font-family:"Source Sans Pro"; + font-size:22px; + font-weight:400; + letter-spacing:0; + line-height:28px; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.miami_title_60px_dark,.miami_title_60px_dark +{ + background-color:transparent; + border-color:#000; + border-style:none; + border-width:0; + color:#333; + font-family:"Source Sans Pro"; + font-size:60px; + font-weight:700; + letter-spacing:1px; + line-height:60px; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.miami_content_dark,.miami_content_dark +{ + background-color:transparent; + border-color:#000; + border-style:none; + border-width:0; + color:#666; + font-family:"Source Sans Pro"; + font-size:22px; + font-weight:400; + letter-spacing:0; + line-height:28px; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.divideline30px_dark,.divideline30px_dark +{ + background-color:#333; + border-color:#222; + border-style:none; + border-width:0; + height:2px; + min-width:30px; + text-decoration:none; +} + +.tp-caption.ellipse70px,.ellipse70px +{ + background-color:rgba(0,0,0,0.14902); + border-color:#222; + border-radius:50px 50px 50px 50px; + border-style:none; + border-width:0; + cursor:pointer; + line-height:1px; + min-height:70px; + min-width:70px; + text-decoration:none; +} + +.tp-caption.arrowicon,.arrowicon +{ + border-color:#222; + border-style:none; + border-width:0; + line-height:1px; +} + +.tp-caption.MarkerDisplay,.MarkerDisplay +{ + background-color:transparent; + border-color:#000; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + font-family:"Permanent Marker"; + font-style:normal; + padding:0; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.Restaurant-Display,.Restaurant-Display +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:#fff; + font-family:Roboto; + font-size:120px; + font-style:normal; + font-weight:700; + line-height:120px; + padding:0; + text-decoration:none; +} + +.tp-caption.Restaurant-Cursive,.Restaurant-Cursive +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:#fff; + font-family:"Nothing you could do"; + font-size:30px; + font-style:normal; + font-weight:400; + letter-spacing:2px; + line-height:30px; + padding:0; + text-decoration:none; +} + +.tp-caption.Restaurant-ScrollDownText,.Restaurant-ScrollDownText +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:#fff; + font-family:Roboto; + font-size:17px; + font-style:normal; + font-weight:400; + letter-spacing:2px; + line-height:17px; + padding:0; + text-decoration:none; +} + +.tp-caption.Restaurant-Description,.Restaurant-Description +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:#fff; + font-family:Roboto; + font-size:20px; + font-style:normal; + font-weight:300; + letter-spacing:3px; + line-height:30px; + padding:0; + text-decoration:none; +} + +.tp-caption.Restaurant-Price,.Restaurant-Price +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:#fff; + font-family:Roboto; + font-size:30px; + font-style:normal; + font-weight:300; + letter-spacing:3px; + line-height:30px; + padding:0; + text-decoration:none; +} + +.tp-caption.Restaurant-Menuitem,.Restaurant-Menuitem +{ + background-color:rgba(0,0,0,1.00); + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Roboto; + font-size:17px; + font-style:normal; + font-weight:400; + letter-spacing:2px; + line-height:17px; + padding:10px 30px; + text-align:left; + text-decoration:none; +} + +.tp-caption.Furniture-LogoText,.Furniture-LogoText +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(230,207,163,1.00); + font-family:Raleway; + font-size:160px; + font-style:normal; + font-weight:300; + line-height:150px; + padding:0; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.Furniture-Plus,.Furniture-Plus +{ + background-color:rgba(255,255,255,1.00); + border-color:transparent; + border-radius:30px 30px 30px 30px; + border-style:none; + border-width:0; + box-shadow:rgba(0,0,0,0.1) 0 1px 3px; + color:rgba(230,207,163,1.00); + font-family:Raleway; + font-size:20px; + font-style:normal; + font-weight:400; + line-height:20px; + padding:6px 7px 4px; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.Furniture-Title,.Furniture-Title +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(0,0,0,1.00); + font-family:Raleway; + font-size:20px; + font-style:normal; + font-weight:700; + letter-spacing:3px; + line-height:20px; + padding:0; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.Furniture-Subtitle,.Furniture-Subtitle +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(0,0,0,1.00); + font-family:Raleway; + font-size:17px; + font-style:normal; + font-weight:300; + line-height:20px; + padding:0; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.Gym-Display,.Gym-Display +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:80px; + font-style:normal; + font-weight:900; + line-height:70px; + padding:0; + text-decoration:none; +} + +.tp-caption.Gym-Subline,.Gym-Subline +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:30px; + font-style:normal; + font-weight:100; + letter-spacing:5px; + line-height:30px; + padding:0; + text-decoration:none; +} + +.tp-caption.Gym-SmallText,.Gym-SmallText +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:17px; + font-style:normal; + font-weight:300; + line-height:22; + padding:0; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.Fashion-SmallText,.Fashion-SmallText +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:12px; + font-style:normal; + font-weight:600; + letter-spacing:2px; + line-height:20px; + padding:0; + text-decoration:none; +} + +.tp-caption.Fashion-BigDisplay,.Fashion-BigDisplay +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(0,0,0,1.00); + font-family:Raleway; + font-size:60px; + font-style:normal; + font-weight:900; + letter-spacing:2px; + line-height:60px; + padding:0; + text-decoration:none; +} + +.tp-caption.Fashion-TextBlock,.Fashion-TextBlock +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(0,0,0,1.00); + font-family:Raleway; + font-size:20px; + font-style:normal; + font-weight:400; + letter-spacing:2px; + line-height:40px; + padding:0; + text-decoration:none; +} + +.tp-caption.Sports-Display,.Sports-Display +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:130px; + font-style:normal; + font-weight:100; + letter-spacing:13px; + line-height:130px; + padding:0; + text-decoration:none; +} + +.tp-caption.Sports-DisplayFat,.Sports-DisplayFat +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:130px; + font-style:normal; + font-weight:900; + line-height:130px; + padding:0; + text-decoration:none; +} + +.tp-caption.Sports-Subline,.Sports-Subline +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(0,0,0,1.00); + font-family:Raleway; + font-size:32px; + font-style:normal; + font-weight:400; + letter-spacing:4px; + line-height:32px; + padding:0; + text-decoration:none; +} + +.tp-caption.Instagram-Caption,.Instagram-Caption +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Roboto; + font-size:20px; + font-style:normal; + font-weight:900; + line-height:20px; + padding:0; + text-decoration:none; +} + +.tp-caption.News-Title,.News-Title +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:"Roboto Slab"; + font-size:70px; + font-style:normal; + font-weight:400; + line-height:60px; + padding:0; + text-decoration:none; +} + +.tp-caption.News-Subtitle,.News-Subtitle +{ + background-color:rgba(255,255,255,0); + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:"Roboto Slab"; + font-size:15px; + font-style:normal; + font-weight:300; + line-height:24px; + padding:0; + text-decoration:none; +} + +.tp-caption.News-Subtitle:hover,.News-Subtitle:hover +{ + background-color:rgba(255,255,255,0); + border-color:transparent; + border-radius:0 0 0 0; + border-style:solid; + border-width:0; + color:rgba(255,255,255,0.65); + text-decoration:none; +} + +.tp-caption.Photography-Display,.Photography-Display +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:80px; + font-style:normal; + font-weight:100; + letter-spacing:5px; + line-height:70px; + padding:0; + text-decoration:none; +} + +.tp-caption.Photography-Subline,.Photography-Subline +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(119,119,119,1.00); + font-family:Raleway; + font-size:20px; + font-style:normal; + font-weight:300; + letter-spacing:3px; + line-height:30px; + padding:0; + text-decoration:none; +} + +.tp-caption.Photography-ImageHover,.Photography-ImageHover +{ + background-color:transparent; + border-color:rgba(255,255,255,0); + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-size:20px; + font-style:normal; + font-weight:400; + line-height:22; + padding:0; + text-decoration:none; +} + +.tp-caption.Photography-ImageHover:hover,.Photography-ImageHover:hover +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + text-decoration:none; +} + +.tp-caption.Photography-Menuitem,.Photography-Menuitem +{ + background-color:rgba(0,0,0,0.65); + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:20px; + font-style:normal; + font-weight:300; + letter-spacing:2px; + line-height:20px; + padding:3px 5px 3px 8px; + text-decoration:none; +} + +.tp-caption.Photography-Menuitem:hover,.Photography-Menuitem:hover +{ + background-color:rgba(0,255,222,0.65); + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + text-decoration:none; +} + +.tp-caption.Photography-Textblock,.Photography-Textblock +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:17px; + font-style:normal; + font-weight:300; + letter-spacing:2px; + line-height:30px; + padding:0; + text-decoration:none; +} + +.tp-caption.Photography-Subline-2,.Photography-Subline-2 +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,0.35); + font-family:Raleway; + font-size:20px; + font-style:normal; + font-weight:300; + letter-spacing:3px; + line-height:30px; + padding:0; + text-decoration:none; +} + +.tp-caption.Photography-ImageHover2,.Photography-ImageHover2 +{ + background-color:transparent; + border-color:rgba(255,255,255,0); + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Arial; + font-size:20px; + font-style:normal; + font-weight:400; + line-height:22; + padding:0; + text-decoration:none; +} + +.tp-caption.Photography-ImageHover2:hover,.Photography-ImageHover2:hover +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + text-decoration:none; +} + +.tp-caption.WebProduct-Title,.WebProduct-Title +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(51,51,51,1.00); + font-family:Raleway; + font-size:90px; + font-style:normal; + font-weight:100; + line-height:90px; + padding:0; + text-decoration:none; +} + +.tp-caption.WebProduct-SubTitle,.WebProduct-SubTitle +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(153,153,153,1.00); + font-family:Raleway; + font-size:15px; + font-style:normal; + font-weight:400; + line-height:20px; + padding:0; + text-decoration:none; +} + +.tp-caption.WebProduct-Content,.WebProduct-Content +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(153,153,153,1.00); + font-family:Raleway; + font-size:16px; + font-style:normal; + font-weight:600; + line-height:24px; + padding:0; + text-decoration:none; +} + +.tp-caption.WebProduct-Menuitem,.WebProduct-Menuitem +{ + background-color:rgba(51,51,51,1.00); + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:15px; + font-style:normal; + font-weight:500; + letter-spacing:2px; + line-height:20px; + padding:3px 5px 3px 8px; + text-align:left; + text-decoration:none; +} + +.tp-caption.WebProduct-Menuitem:hover,.WebProduct-Menuitem:hover +{ + background-color:rgba(255,255,255,1.00); + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(153,153,153,1.00); + text-decoration:none; +} + +.tp-caption.WebProduct-Title-Light,.WebProduct-Title-Light +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:90px; + font-style:normal; + font-weight:100; + line-height:90px; + padding:0; + text-align:left; + text-decoration:none; +} + +.tp-caption.WebProduct-SubTitle-Light,.WebProduct-SubTitle-Light +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,0.35); + font-family:Raleway; + font-size:15px; + font-style:normal; + font-weight:400; + line-height:20px; + padding:0; + text-align:left; + text-decoration:none; +} + +.tp-caption.WebProduct-Content-Light,.WebProduct-Content-Light +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,0.65); + font-family:Raleway; + font-size:16px; + font-style:normal; + font-weight:600; + line-height:24px; + padding:0; + text-align:left; + text-decoration:none; +} + +.tp-caption.FatRounded,.FatRounded +{ + background-color:rgba(0,0,0,0.50); + border-color:rgba(211,211,211,1.00); + border-radius:50px 50px 50px 50px; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:30px; + font-style:normal; + font-weight:900; + line-height:30px; + padding:20px 22px 20px 25px; + text-align:left; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.FatRounded:hover,.FatRounded:hover +{ + background-color:rgba(0,0,0,1.00); + border-color:rgba(211,211,211,1.00); + border-radius:50px 50px 50px 50px; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + text-decoration:none; +} + +.tp-caption.NotGeneric-Title,.NotGeneric-Title +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:70px; + font-style:normal; + font-weight:800; + line-height:70px; + padding:10px 0; + text-decoration:none; +} + +.tp-caption.NotGeneric-SubTitle,.NotGeneric-SubTitle +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:13px; + font-style:normal; + font-weight:500; + letter-spacing:4px; + line-height:20px; + padding:0; + text-align:left; + text-decoration:none; +} + +.tp-caption.NotGeneric-CallToAction,.NotGeneric-CallToAction +{ + background-color:rgba(0,0,0,0); + border-color:rgba(255,255,255,0.50); + border-radius:0 0 0 0; + border-style:solid; + border-width:1px; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:14px; + font-style:normal; + font-weight:500; + letter-spacing:3px; + line-height:14px; + padding:10px 30px; + text-align:left; + text-decoration:none; +} + +.tp-caption.NotGeneric-CallToAction:hover,.NotGeneric-CallToAction:hover +{ + background-color:transparent; + border-color:rgba(255,255,255,1.00); + border-radius:0 0 0 0; + border-style:solid; + border-width:1px; + color:rgba(255,255,255,1.00); + text-decoration:none; +} + +.tp-caption.NotGeneric-Icon,.NotGeneric-Icon +{ + background-color:rgba(0,0,0,0); + border-color:rgba(255,255,255,0); + border-radius:0 0 0 0; + border-style:solid; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:30px; + font-style:normal; + font-weight:400; + letter-spacing:3px; + line-height:30px; + padding:0; + text-align:left; + text-decoration:none; +} + +.tp-caption.NotGeneric-Menuitem,.NotGeneric-Menuitem +{ + background-color:rgba(0,0,0,0); + border-color:rgba(255,255,255,0.15); + border-radius:0 0 0 0; + border-style:solid; + border-width:1px; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:14px; + font-style:normal; + font-weight:500; + letter-spacing:3px; + line-height:14px; + padding:27px 30px; + text-align:left; + text-decoration:none; +} + +.tp-caption.NotGeneric-Menuitem:hover,.NotGeneric-Menuitem:hover +{ + background-color:rgba(0,0,0,0); + border-color:rgba(255,255,255,1.00); + border-radius:0 0 0 0; + border-style:solid; + border-width:1px; + color:rgba(255,255,255,1.00); + text-decoration:none; +} + +.tp-caption.MarkerStyle,.MarkerStyle +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:"Permanent Marker"; + font-size:17px; + font-style:normal; + font-weight:100; + line-height:30px; + padding:0; + text-align:left; + text-decoration:none; +} + +.tp-caption.Gym-Menuitem,.Gym-Menuitem +{ + background-color:rgba(0,0,0,1.00); + border-color:rgba(255,255,255,0); + border-radius:3px 3px 3px 3px; + border-style:solid; + border-width:2px; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:20px; + font-style:normal; + font-weight:300; + letter-spacing:2px; + line-height:20px; + padding:3px 5px 3px 8px; + text-align:left; + text-decoration:none; +} + +.tp-caption.Gym-Menuitem:hover,.Gym-Menuitem:hover +{ + background-color:rgba(0,0,0,1.00); + border-color:rgba(255,255,255,0.25); + border-radius:3px 3px 3px 3px; + border-style:solid; + border-width:2px; + color:rgba(255,255,255,1.00); + text-decoration:none; +} + +.tp-caption.Newspaper-Button,.Newspaper-Button +{ + background-color:rgba(255,255,255,0); + border-color:rgba(255,255,255,0.25); + border-radius:0 0 0 0; + border-style:solid; + border-width:1px; + color:rgba(255,255,255,1.00); + font-family:Roboto; + font-size:13px; + font-style:normal; + font-weight:700; + letter-spacing:2px; + line-height:17px; + padding:12px 35px; + text-align:left; + text-decoration:none; +} + +.tp-caption.Newspaper-Button:hover,.Newspaper-Button:hover +{ + background-color:rgba(255,255,255,1.00); + border-color:rgba(255,255,255,1.00); + border-radius:0 0 0 0; + border-style:solid; + border-width:1px; + color:rgba(0,0,0,1.00); + text-decoration:none; +} + +.tp-caption.Newspaper-Subtitle,.Newspaper-Subtitle +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(168,216,238,1.00); + font-family:Roboto; + font-size:15px; + font-style:normal; + font-weight:900; + line-height:20px; + padding:0; + text-align:left; + text-decoration:none; +} + +.tp-caption.Newspaper-Title,.Newspaper-Title +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:"Roboto Slab"; + font-size:50px; + font-style:normal; + font-weight:400; + line-height:55px; + padding:0 0 10px; + text-align:left; + text-decoration:none; +} + +.tp-caption.Newspaper-Title-Centered,.Newspaper-Title-Centered +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:"Roboto Slab"; + font-size:50px; + font-style:normal; + font-weight:400; + line-height:55px; + padding:0 0 10px; + text-align:center; + text-decoration:none; +} + +.tp-caption.Hero-Button,.Hero-Button +{ + background-color:rgba(0,0,0,0); + border-color:rgba(255,255,255,0.50); + border-radius:0 0 0 0; + border-style:solid; + border-width:1px; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:14px; + font-style:normal; + font-weight:500; + letter-spacing:3px; + line-height:14px; + padding:10px 30px; + text-align:left; + text-decoration:none; +} + +.tp-caption.Hero-Button:hover,.Hero-Button:hover +{ + background-color:rgba(255,255,255,1.00); + border-color:rgba(255,255,255,1.00); + border-radius:0 0 0 0; + border-style:solid; + border-width:1px; + color:rgba(0,0,0,1.00); + text-decoration:none; +} + +.tp-caption.Video-Title,.Video-Title +{ + background-color:rgba(0,0,0,1.00); + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:30px; + font-style:normal; + font-weight:900; + line-height:30px; + padding:5px; + text-align:left; + text-decoration:none; +} + +.tp-caption.Video-SubTitle,.Video-SubTitle +{ + background-color:rgba(0,0,0,0.35); + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:12px; + font-style:normal; + font-weight:600; + letter-spacing:2px; + line-height:12px; + padding:5px; + text-align:left; + text-decoration:none; +} + +.tp-caption.NotGeneric-Button,.NotGeneric-Button +{ + background-color:rgba(0,0,0,0); + border-color:rgba(255,255,255,0.50); + border-radius:0 0 0 0; + border-style:solid; + border-width:1px; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:14px; + font-style:normal; + font-weight:500; + letter-spacing:3px; + line-height:14px; + padding:10px 30px; + text-align:left; + text-decoration:none; +} + +.tp-caption.NotGeneric-Button:hover,.NotGeneric-Button:hover +{ + background-color:transparent; + border-color:rgba(255,255,255,1.00); + border-radius:0 0 0 0; + border-style:solid; + border-width:1px; + color:rgba(255,255,255,1.00); + text-decoration:none; +} + +.tp-caption.NotGeneric-BigButton,.NotGeneric-BigButton +{ + background-color:rgba(0,0,0,0); + border-color:rgba(255,255,255,0.15); + border-radius:0 0 0 0; + border-style:solid; + border-width:1px; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:14px; + font-style:normal; + font-weight:500; + letter-spacing:3px; + line-height:14px; + padding:27px 30px; + text-align:left; + text-decoration:none; +} + +.tp-caption.NotGeneric-BigButton:hover,.NotGeneric-BigButton:hover +{ + background-color:rgba(0,0,0,0); + border-color:rgba(255,255,255,1.00); + border-radius:0 0 0 0; + border-style:solid; + border-width:1px; + color:rgba(255,255,255,1.00); + text-decoration:none; +} + +.tp-caption.WebProduct-Button,.WebProduct-Button +{ + background-color:rgba(51,51,51,1.00); + border-color:rgba(0,0,0,1.00); + border-radius:0 0 0 0; + border-style:none; + border-width:2px; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:16px; + font-style:normal; + font-weight:600; + letter-spacing:1px; + line-height:48px; + padding:0 40px; + text-align:left; + text-decoration:none; +} + +.tp-caption.WebProduct-Button:hover,.WebProduct-Button:hover +{ + background-color:rgba(255,255,255,1.00); + border-color:rgba(0,0,0,1.00); + border-radius:0 0 0 0; + border-style:none; + border-width:2px; + color:rgba(51,51,51,1.00); + text-decoration:none; +} + +.tp-caption.Restaurant-Button,.Restaurant-Button +{ + background-color:rgba(10,10,10,0); + border-color:rgba(255,255,255,0.50); + border-radius:0 0 0 0; + border-style:solid; + border-width:2px; + color:rgba(255,255,255,1.00); + font-family:Roboto; + font-size:17px; + font-style:normal; + font-weight:500; + letter-spacing:3px; + line-height:17px; + padding:12px 35px; + text-align:left; + text-decoration:none; +} + +.tp-caption.Restaurant-Button:hover,.Restaurant-Button:hover +{ + background-color:rgba(0,0,0,0); + border-color:rgba(255,224,129,1.00); + border-radius:0 0 0 0; + border-style:solid; + border-width:2px; + color:rgba(255,255,255,1.00); + text-decoration:none; +} + +.tp-caption.Gym-Button,.Gym-Button +{ + background-color:rgba(139,192,39,1.00); + border-color:rgba(0,0,0,0); + border-radius:30px 30px 30px 30px; + border-style:solid; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:15px; + font-style:normal; + font-weight:600; + letter-spacing:1px; + line-height:15px; + padding:13px 35px; + text-align:left; + text-decoration:none; +} + +.tp-caption.Gym-Button:hover,.Gym-Button:hover +{ + background-color:rgba(114,168,0,1.00); + border-color:rgba(0,0,0,0); + border-radius:30px 30px 30px 30px; + border-style:solid; + border-width:0; + color:rgba(255,255,255,1.00); + text-decoration:none; +} + +.tp-caption.Gym-Button-Light,.Gym-Button-Light +{ + background-color:transparent; + border-color:rgba(255,255,255,0.25); + border-radius:30px 30px 30px 30px; + border-style:solid; + border-width:2px; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:15px; + font-style:normal; + font-weight:600; + line-height:15px; + padding:12px 35px; + text-align:left; + text-decoration:none; +} + +.tp-caption.Gym-Button-Light:hover,.Gym-Button-Light:hover +{ + background-color:rgba(114,168,0,0); + border-color:rgba(139,192,39,1.00); + border-radius:30px 30px 30px 30px; + border-style:solid; + border-width:2px; + color:rgba(255,255,255,1.00); + text-decoration:none; +} + +.tp-caption.Sports-Button-Light,.Sports-Button-Light +{ + background-color:rgba(0,0,0,0); + border-color:rgba(255,255,255,0.50); + border-radius:0 0 0 0; + border-style:solid; + border-width:2px; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:17px; + font-style:normal; + font-weight:600; + letter-spacing:2px; + line-height:17px; + padding:12px 35px; + text-align:left; + text-decoration:none; +} + +.tp-caption.Sports-Button-Light:hover,.Sports-Button-Light:hover +{ + background-color:rgba(0,0,0,0); + border-color:rgba(255,255,255,1.00); + border-radius:0 0 0 0; + border-style:solid; + border-width:2px; + color:rgba(255,255,255,1.00); + text-decoration:none; +} + +.tp-caption.Sports-Button-Red,.Sports-Button-Red +{ + background-color:rgba(219,28,34,1.00); + border-color:rgba(219,28,34,0); + border-radius:0 0 0 0; + border-style:solid; + border-width:2px; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:17px; + font-style:normal; + font-weight:600; + letter-spacing:2px; + line-height:17px; + padding:12px 35px; + text-align:left; + text-decoration:none; +} + +.tp-caption.Sports-Button-Red:hover,.Sports-Button-Red:hover +{ + background-color:rgba(0,0,0,1.00); + border-color:rgba(0,0,0,1.00); + border-radius:0 0 0 0; + border-style:solid; + border-width:2px; + color:rgba(255,255,255,1.00); + text-decoration:none; +} + +.tp-caption.Photography-Button,.Photography-Button +{ + background-color:rgba(0,0,0,0); + border-color:rgba(255,255,255,0.25); + border-radius:30px 30px 30px 30px; + border-style:solid; + border-width:1px; + color:rgba(255,255,255,1.00); + font-family:Raleway; + font-size:15px; + font-style:normal; + font-weight:600; + letter-spacing:1px; + line-height:15px; + padding:13px 35px; + text-align:left; + text-decoration:none; +} + +.tp-caption.Photography-Button:hover,.Photography-Button:hover +{ + background-color:rgba(0,0,0,0); + border-color:rgba(255,255,255,1.00); + border-radius:30px 30px 30px 30px; + border-style:solid; + border-width:1px; + color:rgba(255,255,255,1.00); + text-decoration:none; +} + +.tp-caption.Newspaper-Button-2,.Newspaper-Button-2 +{ + background-color:rgba(0,0,0,0); + border-color:rgba(255,255,255,0.50); + border-radius:3px 3px 3px 3px; + border-style:solid; + border-width:2px; + color:rgba(255,255,255,1.00); + font-family:Roboto; + font-size:15px; + font-style:normal; + font-weight:900; + line-height:15px; + padding:10px 30px; + text-align:left; + text-decoration:none; +} + +.tp-caption.Newspaper-Button-2:hover,.Newspaper-Button-2:hover +{ + background-color:rgba(0,0,0,0); + border-color:rgba(255,255,255,1.00); + border-radius:3px 3px 3px 3px; + border-style:solid; + border-width:2px; + color:rgba(255,255,255,1.00); + text-decoration:none; +} + +.tp-caption.Feature-Tour,.Feature-Tour +{ + background-color:rgba(139,192,39,1.00); + border-color:rgba(0,0,0,0); + border-radius:30px 30px 30px 30px; + border-style:solid; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Roboto; + font-size:17px; + font-style:normal; + font-weight:700; + line-height:17px; + padding:17px 35px; + text-align:left; + text-decoration:none; +} + +.tp-caption.Feature-Tour:hover,.Feature-Tour:hover +{ + background-color:rgba(114,168,0,1.00); + border-color:rgba(0,0,0,0); + border-radius:30px 30px 30px 30px; + border-style:solid; + border-width:0; + color:rgba(255,255,255,1.00); + text-decoration:none; +} + +.tp-caption.Feature-Examples,.Feature-Examples +{ + background-color:transparent; + border-color:rgba(33,42,64,0.15); + border-radius:30px 30px 30px 30px; + border-style:solid; + border-width:2px; + color:rgba(33,42,64,0.50); + font-family:Roboto; + font-size:17px; + font-style:normal; + font-weight:700; + line-height:17px; + padding:15px 35px; + text-align:left; + text-decoration:none; +} + +.tp-caption.Feature-Examples:hover,.Feature-Examples:hover +{ + background-color:transparent; + border-color:rgba(139,192,39,1.00); + border-radius:30px 30px 30px 30px; + border-style:solid; + border-width:2px; + color:rgba(139,192,39,1.00); + text-decoration:none; +} + +.tp-caption.subcaption,.subcaption +{ + background-color:transparent; + border-color:rgba(0,0,0,1.00); + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(111,124,130,1.00); + font-family:roboto; + font-size:19px; + font-style:normal; + font-weight:400; + line-height:24px; + padding:0; + text-align:left; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.menutab,.menutab +{ + background-color:transparent; + border-color:rgba(0,0,0,1.00); + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(41,46,49,1.00); + font-family:roboto; + font-size:25px; + font-style:normal; + font-weight:300; + line-height:30px; + padding:0; + text-align:left; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.menutab:hover,.menutab:hover +{ + background-color:transparent; + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(213,0,0,1.00); + text-decoration:none; +} + +.tp-caption.maincontent,.maincontent +{ + background-color:transparent; + border-color:rgba(0,0,0,1.00); + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(41,46,49,1.00); + font-family:roboto; + font-size:21px; + font-style:normal; + font-weight:300; + line-height:26px; + padding:0; + text-align:left; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.minitext,.minitext +{ + background-color:transparent; + border-color:rgba(0,0,0,1.00); + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(185,186,187,1.00); + font-family:roboto; + font-size:15px; + font-style:normal; + font-weight:400; + line-height:20px; + padding:0; + text-align:left; + text-decoration:none; + text-shadow:none; +} + +.tp-caption.Feature-Buy,.Feature-Buy +{ + background-color:rgba(0,154,238,1.00); + border-color:rgba(0,0,0,0); + border-radius:30px 30px 30px 30px; + border-style:solid; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Roboto; + font-size:17px; + font-style:normal; + font-weight:700; + line-height:17px; + padding:17px 35px; + text-align:left; + text-decoration:none; +} + +.tp-caption.Feature-Buy:hover,.Feature-Buy:hover +{ + background-color:rgba(0,133,214,1.00); + border-color:rgba(0,0,0,0); + border-radius:30px 30px 30px 30px; + border-style:solid; + border-width:0; + color:rgba(255,255,255,1.00); + text-decoration:none; +} + +.tp-caption.Feature-Examples-Light,.Feature-Examples-Light +{ + background-color:transparent; + border-color:rgba(255,255,255,0.15); + border-radius:30px 30px 30px 30px; + border-style:solid; + border-width:2px; + color:rgba(255,255,255,1.00); + font-family:Roboto; + font-size:17px; + font-style:normal; + font-weight:700; + line-height:17px; + padding:15px 35px; + text-align:left; + text-decoration:none; +} + +.tp-caption.Feature-Examples-Light:hover,.Feature-Examples-Light:hover +{ + background-color:transparent; + border-color:rgba(255,255,255,1.00); + border-radius:30px 30px 30px 30px; + border-style:solid; + border-width:2px; + color:rgba(255,255,255,1.00); + text-decoration:none; +} + +.tp-caption.Facebook-Likes,.Facebook-Likes +{ + background-color:rgba(59,89,153,1.00); + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + font-family:Roboto; + font-size:15px; + font-style:normal; + font-weight:500; + line-height:22px; + padding:5px 15px; + text-align:left; + text-decoration:none; +} + +.tp-caption.Twitter-Favorites,.Twitter-Favorites +{ + background-color:rgba(255,255,255,0); + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(136,153,166,1.00); + font-family:Roboto; + font-size:15px; + font-style:normal; + font-weight:500; + line-height:22px; + padding:0; + text-align:left; + text-decoration:none; +} + +.tp-caption.Twitter-Link,.Twitter-Link +{ + background-color:rgba(255,255,255,1.00); + border-color:transparent; + border-radius:30px 30px 30px 30px; + border-style:none; + border-width:0; + color:rgba(135,153,165,1.00); + font-family:Roboto; + font-size:15px; + font-style:normal; + font-weight:500; + line-height:15px; + padding:11px 11px 9px; + text-align:left; + text-decoration:none; +} + +.tp-caption.Twitter-Link:hover,.Twitter-Link:hover +{ + background-color:rgba(0,132,180,1.00); + border-color:transparent; + border-radius:30px 30px 30px 30px; + border-style:none; + border-width:0; + color:rgba(255,255,255,1.00); + text-decoration:none; +} + +.tp-caption.Twitter-Retweet,.Twitter-Retweet +{ + background-color:rgba(255,255,255,0); + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(136,153,166,1.00); + font-family:Roboto; + font-size:15px; + font-style:normal; + font-weight:500; + line-height:22px; + padding:0; + text-align:left; + text-decoration:none; +} + +.tp-caption.Twitter-Content,.Twitter-Content +{ + background-color:rgba(255,255,255,1.00); + border-color:transparent; + border-radius:0 0 0 0; + border-style:none; + border-width:0; + color:rgba(41,47,51,1.00); + font-family:Roboto; + font-size:20px; + font-style:normal; + font-weight:500; + line-height:28px; + padding:30px 30px 70px; + text-align:left; + text-decoration:none; +} + +.revtp-searchform input[type="text"], +.revtp-searchform input[type="email"], +.revtp-form input[type="text"], +.revtp-form input[type="email"]{ + font-family: "Arial", sans-serif; + font-size: 15px; + color: #000; + background-color: #fff; + line-height: 46px; + padding: 0 20px; + cursor: text; + border: 0; + width: 400px; + margin-bottom: 0px; + -webkit-transition: background-color 0.5s; + -moz-transition: background-color 0.5s; + -o-transition: background-color 0.5s; + -ms-transition: background-color 0.5s; + transition: background-color 0.5s; + + + border-radius: 0px; +} + + +.tp-caption.BigBold-Title, +.BigBold-Title { + color: rgba(255, 255, 255, 1.00); + font-size: 110px; + line-height: 100px; + font-weight: 800; + font-style: normal; + font-family: Raleway; + padding: 10px 0px 10px 0; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.BigBold-SubTitle, +.BigBold-SubTitle { + color: rgba(255, 255, 255, 0.50); + font-size: 15px; + line-height: 24px; + font-weight: 500; + font-style: normal; + font-family: Raleway; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left; + letter-spacing: 1px +} +.tp-caption.BigBold-Button, +.BigBold-Button { + color: rgba(255, 255, 255, 1.00); + font-size: 13px; + line-height: 13px; + font-weight: 500; + font-style: normal; + font-family: Raleway; + padding: 15px 50px 15px 50px; + text-decoration: none; + background-color: rgba(0, 0, 0, 0); + border-color: rgba(255, 255, 255, 0.50); + border-style: solid; + border-width: 1px; + border-radius: 0px 0px 0px 0px; + text-align: left; + letter-spacing: 1px +} +.tp-caption.BigBold-Button:hover, +.BigBold-Button:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: transparent; + border-color: rgba(255, 255, 255, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 0px 0px 0px 0px +} +.tp-caption.FoodCarousel-Content, +.FoodCarousel-Content { + color: rgba(41, 46, 49, 1.00); + font-size: 17px; + line-height: 28px; + font-weight: 500; + font-style: normal; + font-family: Raleway; + padding: 30px 30px 30px 30px; + text-decoration: none; + background-color: rgba(255, 255, 255, 1.00); + border-color: rgba(41, 46, 49, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.FoodCarousel-Button, +.FoodCarousel-Button { + color: rgba(41, 46, 49, 1.00); + font-size: 13px; + line-height: 13px; + font-weight: 700; + font-style: normal; + font-family: Raleway; + padding: 15px 70px 15px 50px; + text-decoration: none; + background-color: rgba(255, 255, 255, 1.00); + border-color: rgba(41, 46, 49, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 0px 0px 0px 0px; + text-align: left; + letter-spacing: 1px +} +.tp-caption.FoodCarousel-Button:hover, +.FoodCarousel-Button:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: rgba(41, 46, 49, 1.00); + border-color: rgba(41, 46, 49, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 0px 0px 0px 0px +} +.tp-caption.FoodCarousel-CloseButton, +.FoodCarousel-CloseButton { + color: rgba(41, 46, 49, 1.00); + font-size: 20px; + line-height: 20px; + font-weight: 700; + font-style: normal; + font-family: Raleway; + padding: 14px 14px 14px 16px; + text-decoration: none; + background-color: rgba(0, 0, 0, 0); + border-color: rgba(41, 46, 49, 0); + border-style: solid; + border-width: 1px; + border-radius: 30px 30px 30px 30px; + text-align: left; + letter-spacing: 1px +} +.tp-caption.FoodCarousel-CloseButton:hover, +.FoodCarousel-CloseButton:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: rgba(41, 46, 49, 1.00); + border-color: rgba(41, 46, 49, 0); + border-style: solid; + border-width: 1px; + border-radius: 30px 30px 30px 30px +} +.tp-caption.Video-SubTitle, +.Video-SubTitle { + color: rgba(255, 255, 255, 1.00); + font-size: 12px; + line-height: 12px; + font-weight: 600; + font-style: normal; + font-family: Raleway; + padding: 5px 5px 5px 5px; + text-decoration: none; + background-color: rgba(0, 0, 0, 0.35); + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + letter-spacing: 2px; + text-align: left +} +.tp-caption.Video-Title, +.Video-Title { + color: rgba(255, 255, 255, 1.00); + font-size: 30px; + line-height: 30px; + font-weight: 900; + font-style: normal; + font-family: Raleway; + padding: 5px 5px 5px 5px; + text-decoration: none; + background-color: rgba(0, 0, 0, 1.00); + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.Travel-BigCaption, +.Travel-BigCaption { + color: rgba(255, 255, 255, 1.00); + font-size: 50px; + line-height: 50px; + font-weight: 400; + font-style: normal; + font-family: Roboto; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.Travel-SmallCaption, +.Travel-SmallCaption { + color: rgba(255, 255, 255, 1.00); + font-size: 25px; + line-height: 30px; + font-weight: 300; + font-style: normal; + font-family: Roboto; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.Travel-CallToAction, +.Travel-CallToAction { + color: rgba(255, 255, 255, 1.00); + font-size: 25px; + line-height: 25px; + font-weight: 500; + font-style: normal; + font-family: Roboto; + padding: 12px 20px 12px 20px; + text-decoration: none; + background-color: rgba(255, 255, 255, 0.05); + border-color: rgba(255, 255, 255, 1.00); + border-style: solid; + border-width: 2px; + border-radius: 5px 5px 5px 5px; + text-align: left; + letter-spacing: 1px +} +.tp-caption.Travel-CallToAction:hover, +.Travel-CallToAction:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: rgba(255, 255, 255, 0.15); + border-color: rgba(255, 255, 255, 1.00); + border-style: solid; + border-width: 2px; + border-radius: 5px 5px 5px 5px +} + + +.tp-caption.RotatingWords-TitleWhite, +.RotatingWords-TitleWhite { + color: rgba(255, 255, 255, 1.00); + font-size: 70px; + line-height: 70px; + font-weight: 800; + font-style: normal; + font-family: Raleway; + padding: 0px 0px 0px 0; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.RotatingWords-Button, +.RotatingWords-Button { + color: rgba(255, 255, 255, 1.00); + font-size: 20px; + line-height: 20px; + font-weight: 700; + font-style: normal; + font-family: Raleway; + padding: 20px 50px 20px 50px; + text-decoration: none; + background-color: rgba(0, 0, 0, 0); + border-color: rgba(255, 255, 255, 0.15); + border-style: solid; + border-width: 2px; + border-radius: 0px 0px 0px 0px; + text-align: left; + letter-spacing: 3px +} +.tp-caption.RotatingWords-Button:hover, +.RotatingWords-Button:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: transparent; + border-color: rgba(255, 255, 255, 1.00); + border-style: solid; + border-width: 2px; + border-radius: 0px 0px 0px 0px +} +.tp-caption.RotatingWords-SmallText, +.RotatingWords-SmallText { + color: rgba(255, 255, 255, 1.00); + font-size: 14px; + line-height: 20px; + font-weight: 400; + font-style: normal; + font-family: Raleway; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left; + text-shadow: none +} + + + + +.tp-caption.ContentZoom-SmallTitle, +.ContentZoom-SmallTitle { + color: rgba(41, 46, 49, 1.00); + font-size: 33px; + line-height: 45px; + font-weight: 600; + font-style: normal; + font-family: Raleway; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.ContentZoom-SmallSubtitle, +.ContentZoom-SmallSubtitle { + color: rgba(111, 124, 130, 1.00); + font-size: 16px; + line-height: 24px; + font-weight: 600; + font-style: normal; + font-family: Raleway; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.ContentZoom-SmallIcon, +.ContentZoom-SmallIcon { + color: rgba(41, 46, 49, 1.00); + font-size: 20px; + line-height: 20px; + font-weight: 400; + font-style: normal; + font-family: Raleway; + padding: 10px 10px 10px 10px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.ContentZoom-SmallIcon:hover, +.ContentZoom-SmallIcon:hover { + color: rgba(111, 124, 130, 1.00); + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px +} +.tp-caption.ContentZoom-DetailTitle, +.ContentZoom-DetailTitle { + color: rgba(41, 46, 49, 1.00); + font-size: 70px; + line-height: 70px; + font-weight: 500; + font-style: normal; + font-family: Raleway; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.ContentZoom-DetailSubTitle, +.ContentZoom-DetailSubTitle { + color: rgba(111, 124, 130, 1.00); + font-size: 25px; + line-height: 25px; + font-weight: 500; + font-style: normal; + font-family: Raleway; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.ContentZoom-DetailContent, +.ContentZoom-DetailContent { + color: rgba(111, 124, 130, 1.00); + font-size: 17px; + line-height: 28px; + font-weight: 500; + font-style: normal; + font-family: Raleway; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.ContentZoom-Button, +.ContentZoom-Button { + color: rgba(41, 46, 49, 1.00); + font-size: 13px; + line-height: 13px; + font-weight: 700; + font-style: normal; + font-family: Raleway; + padding: 15px 50px 15px 50px; + text-decoration: none; + background-color: rgba(0, 0, 0, 0); + border-color: rgba(41, 46, 49, 0.50); + border-style: solid; + border-width: 1px; + border-radius: 0px 0px 0px 0px; + text-align: left; + letter-spacing: 1px +} +.tp-caption.ContentZoom-Button:hover, +.ContentZoom-Button:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: rgba(41, 46, 49, 1.00); + border-color: rgba(41, 46, 49, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 0px 0px 0px 0px +} +.tp-caption.ContentZoom-ButtonClose, +.ContentZoom-ButtonClose { + color: rgba(41, 46, 49, 1.00); + font-size: 13px; + line-height: 13px; + font-weight: 700; + font-style: normal; + font-family: Raleway; + padding: 14px 14px 14px 16px; + text-decoration: none; + background-color: rgba(0, 0, 0, 0); + border-color: rgba(41, 46, 49, 0.50); + border-style: solid; + border-width: 1px; + border-radius: 30px 30px 30px 30px; + text-align: left; + letter-spacing: 1px +} +.tp-caption.ContentZoom-ButtonClose:hover, +.ContentZoom-ButtonClose:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: rgba(41, 46, 49, 1.00); + border-color: rgba(41, 46, 49, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 30px 30px 30px 30px +} +.tp-caption.Newspaper-Title, +.Newspaper-Title { + color: rgba(255, 255, 255, 1.00); + font-size: 50px; + line-height: 55px; + font-weight: 400; + font-style: normal; + font-family: "Roboto Slab"; + padding: 0 0 10px 0; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.Newspaper-Subtitle, +.Newspaper-Subtitle { + color: rgba(168, 216, 238, 1.00); + font-size: 15px; + line-height: 20px; + font-weight: 900; + font-style: normal; + font-family: Roboto; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.Newspaper-Button, +.Newspaper-Button { + color: rgba(255, 255, 255, 1.00); + font-size: 13px; + line-height: 17px; + font-weight: 700; + font-style: normal; + font-family: Roboto; + padding: 12px 35px 12px 35px; + text-decoration: none; + background-color: rgba(255, 255, 255, 0); + border-color: rgba(255, 255, 255, 0.25); + border-style: solid; + border-width: 1px; + border-radius: 0px 0px 0px 0px; + letter-spacing: 2px; + text-align: left +} +.tp-caption.Newspaper-Button:hover, +.Newspaper-Button:hover { + color: rgba(0, 0, 0, 1.00); + text-decoration: none; + background-color: rgba(255, 255, 255, 1.00); + border-color: rgba(255, 255, 255, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 0px 0px 0px 0px +} +.tp-caption.rtwhitemedium, +.rtwhitemedium { + font-size: 22px; + line-height: 26px; + color: rgb(255, 255, 255); + text-decoration: none; + background-color: transparent; + border-width: 0px; + border-color: rgb(0, 0, 0); + border-style: none; + text-shadow: none +} + +@media only screen and (max-width: 767px) { + .revtp-searchform input[type="text"], + .revtp-searchform input[type="email"], + .revtp-form input[type="text"], + .revtp-form input[type="email"] { width: 200px !important; } +} + +.revtp-searchform input[type="submit"], +.revtp-form input[type="submit"] { + font-family: "Arial", sans-serif; + line-height: 46px; + letter-spacing: 1px; + text-transform: uppercase; + font-size: 15px; + font-weight: 700; + padding: 0 20px; + border: 0; + background: #009aee; + color: #fff; + + + border-radius: 0px; +} + +.tp-caption.Twitter-Content a, + .tp-caption.Twitter-Content a:visited { + color: #0084B4 !important + } + .tp-caption.Twitter-Content a:hover { + color: #0084B4 !important; + text-decoration: underline !important + } + .tp-caption.Concept-Title, + .Concept-Title { + color: rgba(255, 255, 255, 1.00); + font-size: 70px; + line-height: 70px; + font-weight: 700; + font-style: normal; + font-family: "Roboto Condensed"; + padding: 0px 0px 10px 0px; + text-decoration: none; + text-align: left; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0px 0px 0px 0px; + letter-spacing: 5px + } + .tp-caption.Concept-SubTitle, + .Concept-SubTitle { + color: rgba(255, 255, 255, 0.65); + font-size: 25px; + line-height: 25px; + font-weight: 700; + font-style: italic; + font-family: ""Playfair Display""; + padding: 0px 0px 10px 0px; + text-decoration: none; + text-align: left; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0px 0px 0px 0px + } + .tp-caption.Concept-Content, + .Concept-Content { + color: rgba(255, 255, 255, 1.00); + font-size: 20px; + line-height: 30px; + font-weight: 400; + font-style: normal; + font-family: "Roboto Condensed"; + padding: 0px 0px 0px 0px; + text-decoration: none; + text-align: center; + background-color: rgba(0, 0, 0, 0); + border-color: rgba(255, 255, 255, 1.00); + border-style: none; + border-width: 2px; + border-radius: 0px 0px 0px 0px + } + .tp-caption.Concept-MoreBtn, + .Concept-MoreBtn { + color: rgba(255, 255, 255, 1.00); + font-size: 30px; + line-height: 30px; + font-weight: 300; + font-style: normal; + font-family: Roboto; + padding: 10px 8px 7px 10px; + text-decoration: none; + text-align: left; + background-color: transparent; + border-color: rgba(255, 255, 255, 0); + border-style: solid; + border-width: 0px; + border-radius: 50px 50px 50px 50px; + letter-spacing: 1px; + text-align: left + } + .tp-caption.Concept-MoreBtn:hover, + .Concept-MoreBtn:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: rgba(255, 255, 255, 0.15); + border-color: rgba(255, 255, 255, 0); + border-style: solid; + border-width: 0px; + border-radius: 50px 50px 50px 50px + } + .tp-caption.Concept-LessBtn, + .Concept-LessBtn { + color: rgba(255, 255, 255, 1.00); + font-size: 30px; + line-height: 30px; + font-weight: 300; + font-style: normal; + font-family: Roboto; + padding: 10px 8px 7px 10px; + text-decoration: none; + text-align: left; + background-color: rgba(0, 0, 0, 1.00); + border-color: rgba(255, 255, 255, 0); + border-style: solid; + border-width: 0px; + border-radius: 50px 50px 50px 50px; + letter-spacing: 1px; + text-align: left + } + .tp-caption.Concept-LessBtn:hover, + .Concept-LessBtn:hover { + color: rgba(0, 0, 0, 1.00); + text-decoration: none; + background-color: rgba(255, 255, 255, 1.00); + border-color: rgba(255, 255, 255, 0); + border-style: solid; + border-width: 0px; + border-radius: 50px 50px 50px 50px + } + .tp-caption.Concept-SubTitle-Dark, + .Concept-SubTitle-Dark { + color: rgba(0, 0, 0, 0.65); + font-size: 25px; + line-height: 25px; + font-weight: 700; + font-style: italic; + font-family: "Playfair Display"; + padding: 0px 0px 10px 0px; + text-decoration: none; + text-align: left; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0px 0px 0px 0px + } + .tp-caption.Concept-Title-Dark, + .Concept-Title-Dark { + color: rgba(0, 0, 0, 1.00); + font-size: 70px; + line-height: 70px; + font-weight: 700; + font-style: normal; + font-family: "Roboto Condensed"; + padding: 0px 0px 10px 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0px 0px 0px 0px; + letter-spacing: 5px + } + .tp-caption.Concept-MoreBtn-Dark, + .Concept-MoreBtn-Dark { + color: rgba(0, 0, 0, 1.00); + font-size: 30px; + line-height: 30px; + font-weight: 300; + font-style: normal; + font-family: Roboto; + padding: 10px 8px 7px 10px; + text-decoration: none; + text-align: left; + background-color: transparent; + border-color: rgba(255, 255, 255, 0); + border-style: solid; + border-width: 0px; + border-radius: 50px 50px 50px 50px; + letter-spacing: 1px; + text-align: left + } + .tp-caption.Concept-MoreBtn-Dark:hover, + .Concept-MoreBtn-Dark:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: rgba(0, 0, 0, 1.00); + border-color: rgba(255, 255, 255, 0); + border-style: solid; + border-width: 0px; + border-radius: 50px 50px 50px 50px + } + .tp-caption.Concept-Content-Dark, + .Concept-Content-Dark { + color: rgba(0, 0, 0, 1.00); + font-size: 20px; + line-height: 30px; + font-weight: 400; + font-style: normal; + font-family: "Roboto Condensed"; + padding: 0px 0px 0px 0px; + text-decoration: none; + text-align: center; + background-color: rgba(0, 0, 0, 0); + border-color: rgba(255, 255, 255, 1.00); + border-style: none; + border-width: 2px; + border-radius: 0px 0px 0px 0px + } + .tp-caption.Concept-Notice, + .Concept-Notice { + color: rgba(255, 255, 255, 1.00); + font-size: 15px; + line-height: 15px; + font-weight: 400; + font-style: normal; + font-family: "Roboto Condensed"; + padding: 0px 0px 0px 0px; + text-decoration: none; + text-align: center; + background-color: rgba(0, 0, 0, 0); + border-color: rgba(255, 255, 255, 1.00); + border-style: none; + border-width: 2px; + border-radius: 0px 0px 0px 0px; + letter-spacing: 2px + } + .tp-caption.Concept-Content a, + .tp-caption.Concept-Content a:visited { + color: #fff !important; + border-bottom: 1px solid #fff !important; + font-weight: 700 !important; + } + .tp-caption.Concept-Content a:hover { + border-bottom: 1px solid transparent !important; + } + .tp-caption.Concept-Content-Dark a, + .tp-caption.Concept-Content-Dark a:visited { + color: #000 !important; + border-bottom: 1px solid #000 !important; + font-weight: 700 !important; + } + .tp-caption.Concept-Content-Dark a:hover { + border-bottom: 1px solid transparent !important; + } + + .tp-caption.Twitter-Content a, + .tp-caption.Twitter-Content a:visited { + color: #0084B4 !important + } + .tp-caption.Twitter-Content a:hover { + color: #0084B4 !important; + text-decoration: underline !important + } + .tp-caption.Creative-Title, + .Creative-Title { + color: rgba(255, 255, 255, 1.00); + font-size: 70px; + line-height: 70px; + font-weight: 400; + font-style: normal; + font-family: "Playfair Display"; + padding: 0px 0px 0px 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0px 0px 0px 0px + } + .tp-caption.Creative-SubTitle, + .Creative-SubTitle { + color: rgba(205, 176, 131, 1.00); + font-size: 14px; + line-height: 14px; + font-weight: 400; + font-style: normal; + font-family: Lato; + padding: 0px 0px 0px 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0px 0px 0px 0px; + letter-spacing: 2px + } + .tp-caption.Creative-Button, + .Creative-Button { + color: rgba(205, 176, 131, 1.00); + font-size: 13px; + line-height: 13px; + font-weight: 400; + font-style: normal; + font-family: Lato; + padding: 15px 50px 15px 50px; + text-decoration: none; + text-align: left; + background-color: rgba(0, 0, 0, 0); + border-color: rgba(205, 176, 131, 0.25); + border-style: solid; + border-width: 1px; + border-radius: 0px 0px 0px 0px; + letter-spacing: 2px + } + .tp-caption.Creative-Button:hover, + .Creative-Button:hover { + color: rgba(205, 176, 131, 1.00); + text-decoration: none; + background-color: rgba(0, 0, 0, 0); + border-color: rgba(205, 176, 131, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 0px 0px 0px 0px + } + +.tp-caption.subcaption, + .subcaption { + color: rgba(111, 124, 130, 1.00); + font-size: 19px; + line-height: 24px; + font-weight: 400; + font-style: normal; + font-family: roboto; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: rgba(0, 0, 0, 1.00); + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-shadow: none; + text-align: left + } + .tp-caption.RedDot, + .RedDot { + color: rgba(0, 0, 0, 1.00); + font-weight: 400; + font-style: normal; + padding: 0px 0px 0px 0px; + text-decoration: none; + text-align: left; + background-color: rgba(213, 0, 0, 1.00); + border-color: rgba(255, 255, 255, 1.00); + border-style: solid; + border-width: 5px; + border-radius: 50px 50px 50px 50px + } + .tp-caption.RedDot:hover, + .RedDot:hover { + color: rgba(0, 0, 0, 1.00); + text-decoration: none; + background-color: rgba(255, 255, 255, 0.75); + border-color: rgba(213, 0, 0, 1.00); + border-style: solid; + border-width: 5px; + border-radius: 50px 50px 50px 50px + } + + .tp-caption.SlidingOverlays-Title, + .SlidingOverlays-Title { + color: rgba(255, 255, 255, 1.00); + font-size: 50px; + line-height: 50px; + font-weight: 400; + font-style: normal; + font-family: "Playfair Display"; + padding: 0px 0px 0px 0px; + text-decoration: none; + text-align: left; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0px 0px 0px 0px + } + .tp-caption.SlidingOverlays-Title, + .SlidingOverlays-Title { + color: rgba(255, 255, 255, 1.00); + font-size: 50px; + line-height: 50px; + font-weight: 400; + font-style: normal; + font-family: "Playfair Display"; + padding: 0px 0px 0px 0px; + text-decoration: none; + text-align: left; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0px 0px 0px 0px + } + + .tp-caption.Woo-TitleLarge, + .Woo-TitleLarge { + color: rgba(0, 0, 0, 1.00); + font-size: 40px; + line-height: 40px; + font-weight: 400; + font-style: normal; + font-family: "Playfair Display"; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center; + + } + .tp-caption.Woo-Rating, + .Woo-Rating { + color: rgba(0, 0, 0, 1.00); + font-size: 14px; + line-height: 30px; + font-weight: 300; + font-style: normal; + font-family: Roboto; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left; + + } + .tp-caption.Woo-SubTitle, + .Woo-SubTitle { + color: rgba(0, 0, 0, 1.00); + font-size: 18px; + line-height: 18px; + font-weight: 300; + font-style: normal; + font-family: Roboto; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center; + letter-spacing: 2px; + + } + .tp-caption.Woo-PriceLarge, + .Woo-PriceLarge { + color: rgba(0, 0, 0, 1.00); + font-size: 60px; + line-height: 60px; + font-weight: 700; + font-style: normal; + font-family: Roboto; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center; + + } + .tp-caption.Woo-ProductInfo, + .Woo-ProductInfo { + color: rgba(0, 0, 0, 1.00); + font-size: 15px; + line-height: 15px; + font-weight: 500; + font-style: normal; + font-family: Roboto; + padding: 12px 75px 12px 50px; + text-decoration: none; + background-color: rgba(254, 207, 114, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 4px 4px 4px 4px; + text-align: left; + + } + .tp-caption.Woo-ProductInfo:hover, + .Woo-ProductInfo:hover { + color: rgba(0, 0, 0, 1.00); + text-decoration: none; + background-color: rgba(243, 168, 71, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 4px 4px 4px 4px + } + .tp-caption.Woo-AddToCart, + .Woo-AddToCart { + color: rgba(0, 0, 0, 1.00); + font-size: 15px; + line-height: 15px; + font-weight: 500; + font-style: normal; + font-family: Roboto; + padding: 12px 35px 12px 35px; + text-decoration: none; + background-color: rgba(254, 207, 114, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 4px 4px 4px 4px; + text-align: left; + + } + .tp-caption.Woo-AddToCart:hover, + .Woo-AddToCart:hover { + color: rgba(0, 0, 0, 1.00); + text-decoration: none; + background-color: rgba(243, 168, 71, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 4px 4px 4px 4px + } + .tp-caption.Woo-TitleLarge, + .Woo-TitleLarge { + color: rgba(0, 0, 0, 1.00); + font-size: 40px; + line-height: 40px; + font-weight: 400; + font-style: normal; + font-family: "Playfair Display"; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center; + + } + .tp-caption.Woo-SubTitle, + .Woo-SubTitle { + color: rgba(0, 0, 0, 1.00); + font-size: 18px; + line-height: 18px; + font-weight: 300; + font-style: normal; + font-family: Roboto; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center; + letter-spacing: 2px; + + } + .tp-caption.Woo-PriceLarge, + .Woo-PriceLarge { + color: rgba(0, 0, 0, 1.00); + font-size: 60px; + line-height: 60px; + font-weight: 700; + font-style: normal; + font-family: Roboto; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center; + + } + .tp-caption.Woo-ProductInfo, + .Woo-ProductInfo { + color: rgba(0, 0, 0, 1.00); + font-size: 15px; + line-height: 15px; + font-weight: 500; + font-style: normal; + font-family: Roboto; + padding: 12px 75px 12px 50px; + text-decoration: none; + background-color: rgba(254, 207, 114, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 4px 4px 4px 4px; + text-align: left; + + } + .tp-caption.Woo-ProductInfo:hover, + .Woo-ProductInfo:hover { + color: rgba(0, 0, 0, 1.00); + text-decoration: none; + background-color: rgba(243, 168, 71, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 4px 4px 4px 4px + } + .tp-caption.Woo-AddToCart, + .Woo-AddToCart { + color: rgba(0, 0, 0, 1.00); + font-size: 15px; + line-height: 15px; + font-weight: 500; + font-style: normal; + font-family: Roboto; + padding: 12px 35px 12px 35px; + text-decoration: none; + background-color: rgba(254, 207, 114, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 4px 4px 4px 4px; + text-align: left; + + } + .tp-caption.Woo-AddToCart:hover, + .Woo-AddToCart:hover { + color: rgba(0, 0, 0, 1.00); + text-decoration: none; + background-color: rgba(243, 168, 71, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 4px 4px 4px 4px + } + + .tp-caption.FullScreen-Toggle, + .FullScreen-Toggle { + color: rgba(255, 255, 255, 1.00); + font-size: 20px; + line-height: 20px; + font-weight: 400; + font-style: normal; + font-family: Raleway; + padding: 11px 8px 11px 12px; + text-decoration: none; + text-align: left; + background-color: rgba(0, 0, 0, 0.50); + border-color: rgba(255, 255, 255, 0); + border-style: solid; + border-width: 0px; + border-radius: 0px 0px 0px 0px; + letter-spacing: 3px; + text-align: left + } + .tp-caption.FullScreen-Toggle:hover, + .FullScreen-Toggle:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: rgba(0, 0, 0, 1.00); + border-color: rgba(255, 255, 255, 0); + border-style: solid; + border-width: 0px; + border-radius: 0px 0px 0px 0px + } + + .tp-caption.Agency-Title, +.Agency-Title { + color: rgba(255, 255, 255, 1.00); + font-size: 70px; + line-height: 70px; + font-weight: 900; + font-style: normal; + font-family: lato; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left; + letter-spacing: 10px +} +.tp-caption.Agency-SubTitle, +.Agency-SubTitle { + color: rgba(255, 255, 255, 1.00); + font-size: 20px; + line-height: 20px; + font-weight: 400; + font-style: italic; + font-family: Georgia, serif; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center +} +.tp-caption.Agency-PlayBtn, +.Agency-PlayBtn { + color: rgba(255, 255, 255, 1.00); + font-size: 30px; + line-height: 71px; + font-weight: 500; + font-style: normal; + font-family: Roboto; + padding: 0px 0px 0px 0px; + text-decoration: none; + background-color: transparent; + border-color: rgba(255, 255, 255, 1.00); + border-style: solid; + border-width: 2px; + border-radius: 100px 100px 100px 100px; + text-align: center +} +.tp-caption.Agency-PlayBtn:hover, +.Agency-PlayBtn:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: transparent; + border-color: rgba(255, 255, 255, 1.00); + border-style: solid; + border-width: 2px; + border-radius: 100px 100px 100px 100px; + cursor: pointer +} +.tp-caption.Agency-SmallText, +.Agency-SmallText { + color: rgba(255, 255, 255, 1.00); + font-size: 12px; + line-height: 12px; + font-weight: 900; + font-style: normal; + font-family: lato; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left; + letter-spacing: 5px +} +.tp-caption.Agency-Social, +.Agency-Social { + color: rgba(51, 51, 51, 1.00); + font-size: 25px; + line-height: 50px; + font-weight: 400; + font-style: normal; + font-family: Georgia, serif; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: rgba(51, 51, 51, 1.00); + border-style: solid; + border-width: 2px; + border-radius: 30px 30px 30px 30px; + text-align: center +} +.tp-caption.Agency-Social:hover, +.Agency-Social:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: rgba(51, 51, 51, 1.00); + border-color: rgba(51, 51, 51, 1.00); + border-style: solid; + border-width: 2px; + border-radius: 30px 30px 30px 30px; + cursor: pointer +} +.tp-caption.Agency-CloseBtn, +.Agency-CloseBtn { + color: rgba(255, 255, 255, 1.00); + font-size: 50px; + line-height: 50px; + font-weight: 500; + font-style: normal; + font-family: Roboto; + padding: 0px 0px 0px 0px; + text-decoration: none; + background-color: transparent; + border-color: rgba(255, 255, 255, 0); + border-style: none; + border-width: 0px; + border-radius: 100px 100px 100px 100px; + text-align: center +} +.tp-caption.Agency-CloseBtn:hover, +.Agency-CloseBtn:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: transparent; + border-color: rgba(255, 255, 255, 0); + border-style: none; + border-width: 0px; + border-radius: 100px 100px 100px 100px; + cursor: pointer +} + +.tp-caption.Dining-Title, +.Dining-Title { + color: rgba(255, 255, 255, 1.00); + font-size: 70px; + line-height: 70px; + font-weight: 400; + font-style: normal; + font-family: Georgia, serif; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left; + letter-spacing: 10px +} +.tp-caption.Dining-SubTitle, +.Dining-SubTitle { + color: rgba(255, 255, 255, 1.00); + font-size: 20px; + line-height: 20px; + font-weight: 400; + font-style: normal; + font-family: Georgia, serif; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.Dining-BtnLight, +.Dining-BtnLight { + color: rgba(255, 255, 255, 0.50); + font-size: 15px; + line-height: 15px; + font-weight: 700; + font-style: normal; + font-family: Lato; + padding: 17px 73px 17px 50px; + text-decoration: none; + background-color: rgba(0, 0, 0, 0); + border-color: rgba(255, 255, 255, 0.25); + border-style: solid; + border-width: 1px; + border-radius: 0px 0px 0px 0px; + text-align: left; + letter-spacing: 2px +} +.tp-caption.Dining-BtnLight:hover, +.Dining-BtnLight:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: rgba(0, 0, 0, 0); + border-color: rgba(255, 255, 255, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 0px 0px 0px 0px +} +.tp-caption.Dining-Social, +.Dining-Social { + color: rgba(255, 255, 255, 1.00); + font-size: 25px; + line-height: 50px; + font-weight: 400; + font-style: normal; + font-family: Georgia, serif; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: rgba(255, 255, 255, 0.25); + border-style: solid; + border-width: 1px; + border-radius: 30px 30px 30px 30px; + text-align: center +} +.tp-caption.Dining-Social:hover, +.Dining-Social:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: transparent; + border-color: rgba(255, 255, 255, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 30px 30px 30px 30px; + cursor: pointer +} +tp-caption.Team-Thumb, +.Team-Thumb { + color: rgba(255, 255, 255, 1.00); + font-size: 20px; + line-height: 22px; + font-weight: 400; + font-style: normal; + font-family: Arial; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.Team-Thumb:hover, +.Team-Thumb:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + cursor: pointer +} +.tp-caption.Team-Name, +.Team-Name { + color: rgba(255, 255, 255, 1.00); + font-size: 70px; + line-height: 70px; + font-weight: 900; + font-style: normal; + font-family: Roboto; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.Team-Position, +.Team-Position { + color: rgba(255, 255, 255, 1.00); + font-size: 30px; + line-height: 30px; + font-weight: 400; + font-style: normal; + font-family: Georgia, serif; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.Team-Description, +.Team-Description { + color: rgba(255, 255, 255, 1.00); + font-size: 18px; + line-height: 28px; + font-weight: 400; + font-style: normal; + font-family: Roboto; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.Team-Social, +.Team-Social { + color: rgba(255, 255, 255, 1.00); + font-size: 50px; + line-height: 50px; + font-weight: 400; + font-style: normal; + font-family: Arial; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center +} +.tp-caption.Team-Social:hover, +.Team-Social:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0px 0px 0px 0px; + cursor: pointer +} + +.tp-caption.VideoControls-Play, +.VideoControls-Play { + color: rgba(0, 0, 0, 1.00); + font-size: 50px; + line-height: 120px; + font-weight: 500; + font-style: normal; + font-family: Roboto; + padding: 0px 0px 0px 7px; + text-decoration: none; + background-color: rgba(255, 255, 255, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 0px; + border-radius: 100px 100px 100px 100px; + text-align: center +} +.tp-caption.VideoControls-Play:hover, +.VideoControls-Play:hover { + color: rgba(0, 0, 0, 1.00); + text-decoration: none; + background-color: rgba(255, 255, 255, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 0px; + border-radius: 100px 100px 100px 100px; + cursor: pointer +} +.tp-caption.VideoPlayer-Title, +.VideoPlayer-Title { + color: rgba(255, 255, 255, 1.00); + font-size: 40px; + line-height: 40px; + font-weight: 900; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left; + letter-spacing: 10px +} +.tp-caption.VideoPlayer-SubTitle, +.VideoPlayer-SubTitle { + color: rgba(255, 255, 255, 1.00); + font-size: 20px; + line-height: 20px; + font-weight: 400; + font-style: italic; + font-family: Georgia, serif; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center +} +.tp-caption.VideoPlayer-Social, +.VideoPlayer-Social { + color: rgba(255, 255, 255, 1.00); + font-size: 50px; + line-height: 50px; + font-weight: 400; + font-style: normal; + font-family: Arial; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center +} +.tp-caption.VideoPlayer-Social:hover, +.VideoPlayer-Social:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0px 0px 0px 0px; + cursor: pointer +} +.tp-caption.VideoControls-Mute, +.VideoControls-Mute { + color: rgba(0, 0, 0, 1.00); + font-size: 20px; + line-height: 50px; + font-weight: 500; + font-style: normal; + font-family: Roboto; + padding: 0px 0px 0px 0px; + text-decoration: none; + background-color: rgba(255, 255, 255, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 0px; + border-radius: 100px 100px 100px 100px; + text-align: center +} +.tp-caption.VideoControls-Mute:hover, +.VideoControls-Mute:hover { + color: rgba(0, 0, 0, 1.00); + text-decoration: none; + background-color: rgba(255, 255, 255, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 0px; + border-radius: 100px 100px 100px 100px; + cursor: pointer +} +.tp-caption.VideoControls-Pause, +.VideoControls-Pause { + color: rgba(0, 0, 0, 1.00); + font-size: 20px; + line-height: 50px; + font-weight: 500; + font-style: normal; + font-family: Roboto; + padding: 0px 0px 0px 0px; + text-decoration: none; + background-color: rgba(255, 255, 255, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 0px; + border-radius: 100px 100px 100px 100px; + text-align: center +} +.tp-caption.VideoControls-Pause:hover, +.VideoControls-Pause:hover { + color: rgba(0, 0, 0, 1.00); + text-decoration: none; + background-color: rgba(255, 255, 255, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 0px; + border-radius: 100px 100px 100px 100px; + cursor: pointer + } + +.soundcloudwrapper iframe { + width: 100% !important +} +.tp-caption.SleekLanding-Title, +.SleekLanding-Title { + color: rgba(255, 255, 255, 1.00); + font-size: 35px; + line-height: 40px; + font-weight: 400; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: left; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left; + letter-spacing: 5px +} +.tp-caption.SleekLanding-ButtonBG, +.SleekLanding-ButtonBG { + color: rgba(0, 0, 0, 1.00); + + font-weight: 700; + font-style: normal; + padding: 0 0 0 0px; + text-decoration: none; + text-align: left; + background-color: rgba(255, 255, 255, 0.10); + border-color: rgba(0, 0, 0, 0); + border-style: solid; + border-width: 0px; + border-radius: 5px 5px 5px 5px; + text-align: left; + box-shadow: inset 0px 2px 0px 0px rgba(0, 0, 0, 0.15) +} +.tp-caption.SleekLanding-SmallTitle, +.SleekLanding-SmallTitle { + color: rgba(255, 255, 255, 1.00); + font-size: 13px; + line-height: 50px; + font-weight: 900; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: left; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left; + letter-spacing: 2px +} +.tp-caption.SleekLanding-BottomText, +.SleekLanding-BottomText { + color: rgba(255, 255, 255, 1.00); + font-size: 15px; + line-height: 24px; + font-weight: 400; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: left; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.SleekLanding-Social, +.SleekLanding-Social { + color: rgba(255, 255, 255, 1.00); + font-size: 22px; + line-height: 30px; + font-weight: 400; + font-style: normal; + font-family: Arial; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center +} +.tp-caption.SleekLanding-Social:hover, +.SleekLanding-Social:hover { + color: rgba(0, 0, 0, 0.25); + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + cursor: pointer +} +#rev_slider_429_1_wrapper .tp-loader.spinner2 { + background-color: #555555 !important; +} +.tp-fat { + font-weight: 900 !important; +} + +.tp-caption.PostSlider-Category, +.PostSlider-Category { + color: rgba(0, 0, 0, 1.00); + font-size: 15px; + line-height: 15px; + font-weight: 300; + font-style: normal; + font-family: Roboto; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + letter-spacing: 3px; + text-align: left +} +.tp-caption.PostSlider-Title, +.PostSlider-Title { + color: rgba(0, 0, 0, 1.00); + font-size: 40px; + line-height: 40px; + font-weight: 400; + font-style: normal; + font-family: "Playfair Display"; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.PostSlider-Content, +.PostSlider-Content { + color: rgba(119, 119, 119, 1.00); + font-size: 15px; + line-height: 23px; + font-weight: 400; + font-style: normal; + font-family: Roboto; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.PostSlider-Button, +.PostSlider-Button { + color: rgba(0, 0, 0, 1.00); + font-size: 15px; + line-height: 40px; + font-weight: 500; + font-style: normal; + font-family: Roboto; + padding: 1px 56px 1px 32px; + text-decoration: none; + background-color: rgba(255, 255, 255, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 0px 0px 0px 0px; + text-align: left +} +.tp-caption.PostSlider-Button:hover, +.PostSlider-Button:hover { + color: rgba(0, 0, 0, 1.00); + text-decoration: none; + background-color: rgba(238, 238, 238, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 0px 0px 0px 0px; + cursor: pointer +} + +/* media queries */ + +@media only screen and (max-width: 960px) {} @media only screen and (max-width: 768px) {} .tp-caption.LandingPage-Title, +.LandingPage-Title { + color:rgba(255, + 255, + 255, + 1.00); + font-size:70px; + line-height:80px; + font-weight:900; + font-style:normal; + font-family:Lato; + padding:0 0 0 0px; + text-decoration:none; + background-color:transparent; + border-color:transparent; + border-style:none; + border-width:0px; + border-radius:0 0 0 0px; + text-align:left; + letter-spacing:10px +} +.tp-caption.LandingPage-SubTitle, +.LandingPage-SubTitle { + color: rgba(255, 255, 255, 1.00); + font-size: 20px; + line-height: 30px; + font-weight: 400; + font-style: italic; + font-family: Georgia, serif; + padding: 0 0 0 0px; + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.LandingPage-Button, +.LandingPage-Button { + color: rgba(0, 0, 0, 1.00); + font-size: 15px; + line-height: 54px; + font-weight: 500; + font-style: normal; + font-family: Roboto; + padding: 0px 35px 0px 35px; + text-decoration: none; + background-color: rgba(255, 255, 255, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 0px; + border-radius: 0px 0px 0px 0px; + text-align: left; + letter-spacing: 3px +} +.tp-caption.LandingPage-Button:hover, +.LandingPage-Button:hover { + color: rgba(0, 0, 0, 1.00); + text-decoration: none; + background-color: rgba(255, 255, 255, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 0px; + border-radius: 0px 0px 0px 0px; + cursor: pointer +} +.tp-caption.App-Content a, +.tp-caption.App-Content a:visited { + color: #89124e !important; + border-bottom: 1px solid transparent !important; + font-weight: bold !important; +} +.tp-caption.App-Content a:hover { + border-bottom: 1px solid #89124e !important; +} +.tp-caption.RockBand-LogoText, +.RockBand-LogoText { + color: rgba(255, 255, 255, 1.00); + font-size: 60px; + line-height: 60px; + font-weight: 700; + font-style: normal; + font-family: Oswald; + padding: 0 0 0 0px; + text-decoration: none; + text-align: left; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.Twitter-Content a, +.tp-caption.Twitter-Content a:visited { + color: #fff !important; + text-decoration: underline !important; +} +.tp-caption.Twitter-Content a:hover { + color: #fff !important; + text-decoration: none !important; +} +.soundcloudwrapper iframe { + width: 100% !important +} + +.tp-caption.Agency-LogoText, +.Agency-LogoText { + color: rgba(255, 255, 255, 1.00); + font-size: 12px; + line-height: 20px; + font-weight: 400; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center; + letter-spacing: 1px +} +.tp-caption.ComingSoon-Highlight, +.ComingSoon-Highlight { + color: rgba(255, 255, 255, 1.00); + font-size: 20px; + line-height: 37px; + font-weight: 400; + font-style: normal; + font-family: Lato; + padding: 0 20px 3px 20px; + text-decoration: none; + text-align: left; + background-color: rgba(0, 154, 238, 1.00); + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.ComingSoon-Count, +.ComingSoon-Count { + color: rgba(255, 255, 255, 1.00); + font-size: 50px; + line-height: 50px; + font-weight: 900; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: left; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.ComingSoon-CountUnit, +.ComingSoon-CountUnit { + color: rgba(255, 255, 255, 1.00); + font-size: 20px; + line-height: 20px; + font-weight: 400; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center +} +.tp-caption.ComingSoon-NotifyMe, +.ComingSoon-NotifyMe { + color: rgba(164, 157, 143, 1.00); + font-size: 27px; + line-height: 35px; + font-weight: 600; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center +} + +#mc_embed_signup input#mce-EMAIL { + font-family: "Lato", sans-serif; + font-size: 15px; + color: #000; + background-color: #fff; + line-height: 46px; + padding: 0 20px; + cursor: text; + border: 1px solid #fff; + width: 400px; + margin-bottom: 0px; + -webkit-transition: background-color 0.5s; + -moz-transition: background-color 0.5s; + -o-transition: background-color 0.5s; + -ms-transition: background-color 0.5s; + transition: background-color 0.5s; + + + border-radius: 0px; +} +#mc_embed_signup input#mce-EMAIL[type="email"]:focus { + background-color: #fff; + border: 1px solid #666; + border-right: 0; +} +#mc_embed_signup input#mc-embedded-subscribe, +#mc_embed_signup input#mc-embedded-subscribe:focus { + font-family: "Lato", sans-serif; + line-height: 46px; + letter-spacing: 1px; + text-transform: uppercase; + font-size: 13px; + font-weight: 900; + padding: 0 20px; + border: 1px solid #009aee; + background: #009aee; + color: #fff; + + + border-radius: 0px; +} +#mc_embed_signup input#mc-embedded-subscribe:hover { + background: #0083d4; +} +@media only screen and (max-width: 767px) { + #mc_embed_signup input#mce-EMAIL { + width: 200px; + } +} +.tp-caption.Agency-SmallTitle, +.Agency-SmallTitle { + color: rgba(255, 255, 255, 1.00); + font-size: 15px; + line-height: 22px; + font-weight: 400; + font-style: normal; + font-family: lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center; + letter-spacing: 6px +} +.tp-caption.Agency-SmallContent, +.Agency-SmallContent { + color: rgba(255, 255, 255, 1.00); + font-size: 15px; + line-height: 24px; + font-weight: 400; + font-style: normal; + font-family: lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center +} +.tp-caption.Agency-SmallLink, +.Agency-SmallLink { + color: rgba(248, 124, 9, 1.00); + font-size: 12px; + line-height: 22px; + font-weight: 700; + font-style: normal; + font-family: lato; + padding: 0 0 0px 0; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center; + letter-spacing: 2px; + border-bottom: 1px solid #f87c09 !important +} +.tp-caption.Agency-SmallLink:hover, +.Agency-SmallLink:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + cursor: pointer +} +.tp-caption.Agency-NavButton, +.Agency-NavButton { + color: rgba(51, 51, 51, 1.00); + font-size: 17px; + line-height: 50px; + font-weight: 500; + font-style: normal; + font-family: Roboto; + padding: 0px 0px 0px 0px; + text-decoration: none; + text-align: center; + background-color: rgba(255, 255, 255, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 0px; + border-radius: 0px 0px 0px 0px; + text-align: center +} +.tp-caption.Agency-NavButton:hover, +.Agency-NavButton:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: rgba(51, 51, 51, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 0px; + border-radius: 0px 0px 0px 0px; + cursor: pointer +} +.tp-caption.Agency-SmallLinkGreen, +.Agency-SmallLinkGreen { + color: rgba(109, 177, 155, 1.00); + font-size: 12px; + line-height: 22px; + font-weight: 700; + font-style: normal; + font-family: lato; + padding: 0 0 0px 0; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center; + letter-spacing: 2px; + border-bottom: 1px solid #6db19b !important +} +.tp-caption.Agency-SmallLinkGreen:hover, +.Agency-SmallLinkGreen:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + cursor: pointer +} +.tp-caption.Agency-SmallLinkBlue, +.Agency-SmallLinkBlue { + color: rgba(153, 153, 153, 1.00); + font-size: 12px; + line-height: 22px; + font-weight: 700; + font-style: normal; + font-family: lato; + padding: 0 0 0px 0; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center; + letter-spacing: 2px; + border-bottom: 1px solid #999 !important +} +.tp-caption.Agency-SmallLinkBlue:hover, +.Agency-SmallLinkBlue:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + cursor: pointer +} +.tp-caption.Agency-LogoText, +.Agency-LogoText { + color: rgba(255, 255, 255, 1.00); + font-size: 12px; + line-height: 20px; + font-weight: 400; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center; + letter-spacing: 1px +} +.tp-caption.Agency-ArrowTooltip, +.Agency-ArrowTooltip { + color: rgba(51, 51, 51, 1.00); + font-size: 15px; + line-height: 20px; + font-weight: 400; + font-style: normal; + font-family: "Permanent Marker"; + padding: 0 0 0 0px; + text-decoration: none; + text-align: left; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left +} +.tp-caption.Agency-SmallSocial, +.Agency-SmallSocial { + color: rgba(255, 255, 255, 1.00); + font-size: 30px; + line-height: 30px; + font-weight: 400; + font-style: normal; + font-family: Arial; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center +} +.tp-caption.Agency-SmallSocial:hover, +.Agency-SmallSocial:hover { + color: rgba(51, 51, 51, 1.00); + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0px 0px 0px 0px; + cursor: pointer +} +.tp-caption.Twitter-Content a, +.tp-caption.Twitter-Content a:visited { + color: #0084B4 !important +} +.tp-caption.Twitter-Content a:hover { + color: #0084B4 !important; + text-decoration: underline !important +} +.tp-caption.CreativeFrontPage-Btn, +.CreativeFrontPage-Btn { + color: rgba(255, 255, 255, 1.00); + font-size: 14px; + line-height: 60px; + font-weight: 900; + font-style: normal; + font-family: Roboto; + padding: 0px 50px 0px 50px; + text-decoration: none; + text-align: left; + background-color: rgba(0, 104, 92, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 0px; + border-radius: 4px 4px 4px 4px; + letter-spacing: 2px +} +.tp-caption.CreativeFrontPage-Btn:hover, +.CreativeFrontPage-Btn:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: rgba(0, 0, 0, 0.25); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 0px; + border-radius: 4px 4px 4px 4px; + cursor: pointer +} +.tp-caption.CreativeFrontPage-Menu, +.CreativeFrontPage-Menu { + color: rgba(255, 255, 255, 1.00); + font-size: 14px; + line-height: 14px; + font-weight: 500; + font-style: normal; + font-family: roboto; + padding: 0 0 0 0px; + text-decoration: none; + text-align: left; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + letter-spacing: 2px +} +.tp-flip-index { + z-index: 1000 !important; +} +.tp-caption.Twitter-Content a, +.tp-caption.Twitter-Content a:visited { + color: #0084B4 !important +} +.tp-caption.Twitter-Content a:hover { + color: #0084B4 !important; + text-decoration: underline !important +} +.tp-caption.FullScreenMenu-Category, +.FullScreenMenu-Category { + color: rgba(17, 17, 17, 1.00); + font-size: 20px; + line-height: 20px; + font-weight: 700; + font-style: normal; + font-family: BenchNine; + padding: 21px 30px 16px 30px; + text-decoration: none; + text-align: left; + background-color: rgba(255, 255, 255, 0.90); + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + letter-spacing: 3px +} +.tp-caption.FullScreenMenu-Title, +.FullScreenMenu-Title { + color: rgba(255, 255, 255, 1.00); + font-size: 65px; + line-height: 70px; + font-weight: 700; + font-style: normal; + font-family: BenchNine; + padding: 21px 30px 16px 30px; + text-decoration: none; + text-align: left; + background-color: rgba(17, 17, 17, 0.90); + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px +} +.tp-caption.Twitter-Content a, +.tp-caption.Twitter-Content a:visited { + color: #0084B4 !important +} +.tp-caption.Twitter-Content a:hover { + color: #0084B4 !important; + text-decoration: underline !important +} +.tp-caption.TechJournal-Button, +.TechJournal-Button { + color: rgba(255, 255, 255, 1.00); + font-size: 13px; + line-height: 40px; + font-weight: 900; + font-style: normal; + font-family: Raleway; + padding: 1px 30px 1px 30px; + text-decoration: none; + text-align: left; + background-color: rgba(138, 0, 255, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 0px; + border-radius: 0px 0px 0px 0px; + letter-spacing: 3px +} +.tp-caption.TechJournal-Button:hover, +.TechJournal-Button:hover { + color: rgba(0, 0, 0, 1.00); + text-decoration: none; + background-color: rgba(255, 255, 255, 1.00); + border-color: rgba(0, 0, 0, 1.00); + border-style: solid; + border-width: 0px; + border-radius: 0px 0px 0px 0px; + cursor: pointer +} +.tp-caption.TechJournal-Big, +.TechJournal-Big { + color: rgba(255, 255, 255, 1.00); + font-size: 120px; + line-height: 120px; + font-weight: 900; + font-style: normal; + font-family: Raleway; + padding: 0 0 0 0px; + text-decoration: none; + text-align: left; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + letter-spacing: 0px +} +.rev_slider { + overflow: hidden; +} +.effect_layer { + position: absolute; + top: 0px; + left: 0px; + width: 100%; + height: 100%; +} + +.tp-caption.Twitter-Content a, + .tp-caption.Twitter-Content a:visited { + color: #0084B4 !important + } + .tp-caption.Twitter-Content a:hover { + color: #0084B4 !important; + text-decoration: underline !important + } + #menu_forcefullwidth { + z-index: 5000; + position: fixed !important; + top: 0px; + left: 0px; + width: 100% + } + .tp-caption.FullSiteBlock-Title, + .FullSiteBlock-Title { + color: rgba(51, 51, 51, 1.00); + font-size: 55px; + line-height: 65px; + font-weight: 300; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center + } + .tp-caption.FullSiteBlock-SubTitle, + .FullSiteBlock-SubTitle { + color: rgba(51, 51, 51, 1.00); + font-size: 25px; + line-height: 34px; + font-weight: 300; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center + } + .tp-caption.FullSiteBlock-Link, + .FullSiteBlock-Link { + color: rgba(0, 150, 255, 1.00); + font-size: 25px; + line-height: 24px; + font-weight: 300; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center + } + .tp-caption.FullSiteBlock-Link:hover, + .FullSiteBlock-Link:hover { + color: rgba(51, 51, 51, 1.00); + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + cursor: pointer + } + .tp-caption.FullSiteBlock-DownButton, + .FullSiteBlock-DownButton { + color: rgba(51, 51, 51, 1.00); + font-size: 25px; + line-height: 32px; + font-weight: 500; + font-style: normal; + font-family: Roboto; + padding: 1px 1px 1px 1px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: rgba(51, 51, 51, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 30px 30px 30px 30px; + text-align: center + } + .tp-caption.FullSiteBlock-DownButton:hover, + .FullSiteBlock-DownButton:hover { + color: rgba(0, 150, 255, 1.00); + text-decoration: none; + background-color: transparent; + border-color: rgba(0, 150, 255, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 30px 30px 30px 30px; + cursor: pointer + } + .tp-caption.FullSiteBlock-Title, + .FullSiteBlock-Title { + color: rgba(51, 51, 51, 1.00); + font-size: 55px; + line-height: 65px; + font-weight: 300; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center + } + .tp-caption.FullSiteBlock-SubTitle, + .FullSiteBlock-SubTitle { + color: rgba(51, 51, 51, 1.00); + font-size: 25px; + line-height: 34px; + font-weight: 300; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center + } + .tp-caption.FullSiteBlock-Link, + .FullSiteBlock-Link { + color: rgba(0, 150, 255, 1.00); + font-size: 25px; + line-height: 24px; + font-weight: 300; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center + } + .tp-caption.FullSiteBlock-Link:hover, + .FullSiteBlock-Link:hover { + color: rgba(51, 51, 51, 1.00); + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + cursor: pointer + } + .tp-caption.FullSiteBlock-DownButton, + .FullSiteBlock-DownButton { + color: rgba(51, 51, 51, 1.00); + font-size: 25px; + line-height: 32px; + font-weight: 500; + font-style: normal; + font-family: Roboto; + padding: 1px 1px 1px 1px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: rgba(51, 51, 51, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 30px 30px 30px 30px; + text-align: center + } + .tp-caption.FullSiteBlock-DownButton:hover, + .FullSiteBlock-DownButton:hover { + color: rgba(0, 150, 255, 1.00); + text-decoration: none; + background-color: transparent; + border-color: rgba(0, 150, 255, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 30px 30px 30px 30px; + cursor: pointer + } + .tp-caption.FullSiteBlock-Title, + .FullSiteBlock-Title { + color: rgba(51, 51, 51, 1.00); + font-size: 55px; + line-height: 65px; + font-weight: 300; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center + } + .tp-caption.FullSiteBlock-SubTitle, + .FullSiteBlock-SubTitle { + color: rgba(51, 51, 51, 1.00); + font-size: 25px; + line-height: 34px; + font-weight: 300; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center + } + .tp-caption.FullSiteBlock-DownButton, + .FullSiteBlock-DownButton { + color: rgba(51, 51, 51, 1.00); + font-size: 25px; + line-height: 32px; + font-weight: 500; + font-style: normal; + font-family: Roboto; + padding: 1px 1px 1px 1px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: rgba(51, 51, 51, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 30px 30px 30px 30px; + text-align: center + } + .tp-caption.FullSiteBlock-DownButton:hover, + .FullSiteBlock-DownButton:hover { + color: rgba(0, 150, 255, 1.00); + text-decoration: none; + background-color: transparent; + border-color: rgba(0, 150, 255, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 30px 30px 30px 30px; + cursor: pointer + } + .tp-caption.FullSiteBlock-Title, + .FullSiteBlock-Title { + color: rgba(51, 51, 51, 1.00); + font-size: 55px; + line-height: 65px; + font-weight: 300; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center + } + .tp-caption.FullSiteBlock-SubTitle, + .FullSiteBlock-SubTitle { + color: rgba(51, 51, 51, 1.00); + font-size: 25px; + line-height: 34px; + font-weight: 300; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center + } + .tp-caption.FullSiteBlock-Link, + .FullSiteBlock-Link { + color: rgba(0, 150, 255, 1.00); + font-size: 25px; + line-height: 24px; + font-weight: 300; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center + } + .tp-caption.FullSiteBlock-Link:hover, + .FullSiteBlock-Link:hover { + color: rgba(51, 51, 51, 1.00); + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + cursor: pointer + } + .tp-caption.FullSiteBlock-DownButton, + .FullSiteBlock-DownButton { + color: rgba(51, 51, 51, 1.00); + font-size: 25px; + line-height: 32px; + font-weight: 500; + font-style: normal; + font-family: Roboto; + padding: 1px 1px 1px 1px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: rgba(51, 51, 51, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 30px 30px 30px 30px; + text-align: center + } + .tp-caption.FullSiteBlock-DownButton:hover, + .FullSiteBlock-DownButton:hover { + color: rgba(0, 150, 255, 1.00); + text-decoration: none; + background-color: transparent; + border-color: rgba(0, 150, 255, 1.00); + border-style: solid; + border-width: 1px; + border-radius: 30px 30px 30px 30px; + cursor: pointer + } + .rev_slider { + overflow: hidden; + } + .effect_layer { + position: absolute; + top: 0px; + left: 0px; + width: 100%; + height: 100%; + } + .gyges .tp-thumb { + opacity: 1 + } + .gyges .tp-thumb-img-wrap { + padding: 3px; + background-color: rgba(0, 0, 0, 0.25); + display: inline-block; + width: 100%; + height: 100%; + position: relative; + margin: 0px; + box-sizing: border-box; + transition: all 0.3s; + -webkit-transition: all 0.3s; + } + .gyges .tp-thumb-image { + padding: 3px; + display: block; + box-sizing: border-box; + position: relative; + -webkit-box-shadow: inset 5px 5px 10px 0px rgba(0, 0, 0, 0.25); + -moz-box-shadow: inset 5px 5px 10px 0px rgba(0, 0, 0, 0.25); + box-shadow: inset 5px 5px 10px 0px rgba(0, 0, 0, 0.25); + } + .gyges .tp-thumb:hover .tp-thumb-img-wrap, + .gyges .tp-thumb.selected .tp-thumb-img-wrap { + background: -moz-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(255, 255, 255, 1)), color-stop(100%, rgba(255, 255, 255, 1))); + background: -webkit-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 1) 100%); + background: -o-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 1) 100%); + background: -ms-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 1) 100%); + background: linear-gradient(to bottom, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 1) 100%); + } + .tp-caption.FullSiteBlock-Title, + .FullSiteBlock-Title { + color: rgba(51, 51, 51, 1.00); + font-size: 55px; + line-height: 65px; + font-weight: 300; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center + } + .tp-caption.FullSiteBlock-SubTitle, + .FullSiteBlock-SubTitle { + color: rgba(51, 51, 51, 1.00); + font-size: 25px; + line-height: 34px; + font-weight: 300; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center + } + .tp-caption.FullSiteBlock-Link, + .FullSiteBlock-Link { + color: rgba(0, 150, 255, 1.00); + font-size: 25px; + line-height: 24px; + font-weight: 300; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center + } + .tp-caption.FullSiteBlock-Link:hover, + .FullSiteBlock-Link:hover { + color: rgba(51, 51, 51, 1.00); + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + cursor: pointer + } + .tp-caption.FullSiteBlock-SubTitle, + .FullSiteBlock-SubTitle { + color: rgba(51, 51, 51, 1.00); + font-size: 25px; + line-height: 34px; + font-weight: 300; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center + } + .tp-caption.FullSiteBlock-SubTitle, + .FullSiteBlock-SubTitle { + color: rgba(51, 51, 51, 1.00); + font-size: 25px; + line-height: 34px; + font-weight: 300; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center + } + .tp-caption.FullSiteBlock-FooterLink, + .FullSiteBlock-FooterLink { + color: rgba(85, 85, 85, 1.00); + font-size: 15px; + line-height: 20px; + font-weight: 300; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: left; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: left + } + .tp-caption.FullSiteBlock-FooterLink:hover, + .FullSiteBlock-FooterLink:hover { + color: rgba(0, 150, 255, 1.00); + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + cursor: pointer + } + .fb-share-button.fb_iframe_widget iframe { + width: 115px!important; + } + #tp-socialwrapper { + opacity: 0; + } + + .tp-caption.Twitter-Content a, + .tp-caption.Twitter-Content a:visited { + color: #0084B4 !important + } + .tp-caption.Twitter-Content a:hover { + color: #0084B4 !important; + text-decoration: underline !important + } + #menu_forcefullwidth { + z-index: 5000; + position: fixed !important; + top: 0px; + left: 0px; + width: 100% + } + #tp-menubg { + background: -moz-linear-gradient(top, rgba(0, 0, 0, 0.75) 0%, rgba(0, 0, 0, 0) 100%); + /* FF3.6-15 */ + + background: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.75) 0%, rgba(0, 0, 0, 0) 100%); + /* Chrome10-25,Safari5.1-6 */ + + background: linear-gradient(to bottom, rgba(0, 0, 0, 0.75) 0%, rgba(0, 0, 0, 0) 100%); + /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ + + filter: progid: DXImageTransform.Microsoft.gradient( startColorstr='#d9000000', endColorstr='#00000000', GradientType=0); + /* IE6-9 */ + } + #mc_embed_signup input[type="email"] { + font-family: "Lato", sans-serif; + font-size: 16px; + font-weight: 400; + background-color: #fff; + color: #888 !important; + line-height: 46px; + padding: 0 20px; + cursor: text; + border: 0; + width: 400px; + margin-bottom: 0px; + -webkit-transition: background-color 0.5s; + -moz-transition: background-color 0.5s; + -o-transition: background-color 0.5s; + -ms-transition: background-color 0.5s; + transition: background-color 0.5s; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + } + #mc_embed_signup input[type="email"]::-webkit-input-placeholder { + color: #888 !important; + } + #mc_embed_signup input[type="email"]::-moz-placeholder { + color: #888 !important; + } + #mc_embed_signup input[type="email"]:-ms-input-placeholder { + color: #888 !important; + } + #mc_embed_signup input[type="email"]:focus { + background-color: #f5f5f5; + color: #454545; + } + #mc_embed_signup input#mc-embedded-subscribe, + #mc_embed_signup input#mc-embedded-subscribe:focus { + font-family: "Lato", sans-serif; + line-height: 46px; + font-size: 16px; + font-weight: 700; + padding: 0 30px; + border: 0; + background: #f04531; + text-transform: none; + color: #fff; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + } + #mc_embed_signup input#mc-embedded-subscribe:hover { + background: #e03727; + } + @media only screen and (max-width: 767px) { + #mc_embed_signup input[type="email"] { + width: 260px; + } + } + @media only screen and (max-width: 480px) { + #mc_embed_signup input[type="email"] { + width: 160px; + } + } + #rev_slider_167_6 .uranus.tparrows { + width: 50px; + height: 50px; + background: rgba(255, 255, 255, 0); + } + #rev_slider_167_6 .uranus.tparrows:before { + width: 50px; + height: 50px; + line-height: 50px; + font-size: 40px; + transition: all 0.3s; + -webkit-transition: all 0.3s; + } + #rev_slider_167_6 .uranus.tparrows:hover:before { + opacity: 0.75; + } + .tp-caption.FullSiteBlock-SubTitle, + .FullSiteBlock-SubTitle { + color: rgba(51, 51, 51, 1.00); + font-size: 25px; + line-height: 34px; + font-weight: 300; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center + } + .tp-caption.ParallaxWebsite-FooterItem, + .ParallaxWebsite-FooterItem { + color: rgba(255, 255, 255, 0.50); + font-size: 16px; + line-height: 24px; + font-weight: 400; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: left; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px + } + .tp-caption.ParallaxWebsite-FooterItem:hover, + .ParallaxWebsite-FooterItem:hover { + color: rgba(255, 255, 255, 1.00); + text-decoration: none; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + cursor: pointer + } + .fb-share-button.fb_iframe_widget iframe { + width: 115px!important; + } + iframe.twitter-share-button { + display: none; + } + .fb-share-button.fb_iframe_widget iframe { + display: none; + } + + .tp-caption.FullSiteBlock-Link, + .FullSiteBlock-Link { + color: rgba(0,150,255,1.00); + font-size: 25px; + line-height: 24px; + font-weight: 300; + font-style: normal; + font-family: Lato; + padding: 0 0 0 0px; + text-decoration: none; + text-align: center; + background-color: transparent; + border-color: transparent; + border-style: none; + border-width: 0px; + border-radius: 0 0 0 0px; + text-align: center; +} \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/css/navigation-skins/ares.css b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/ares.css new file mode 100644 index 0000000..da4fb61 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/ares.css @@ -0,0 +1,241 @@ +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + ARES SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +.ares.tparrows { + cursor:pointer; + background:#fff; + min-width:60px; + min-height:60px; + position:absolute; + display:block; + z-index:100; + border-radius:50%; +} +.ares.tparrows:hover { +} +.ares.tparrows:before { + font-family: "revicons"; + font-size:25px; + color:#aaa; + display:block; + line-height: 60px; + text-align: center; + -webkit-transition: color 0.3s; + -moz-transition: color 0.3s; + transition: color 0.3s; + z-index:2; + position:relative; +} +.ares.tparrows.tp-leftarrow:before { + content: "\e81f"; +} +.ares.tparrows.tp-rightarrow:before { + content: "\e81e"; +} +.ares.tparrows:hover:before { + color:#000; + } +.tp-title-wrap { + position:absolute; + z-index:1; + display:inline-block; + background:#fff; + min-height:60px; + line-height:60px; + top:0px; + margin-left:30px; + border-radius:0px 30px 30px 0px; + overflow:hidden; + -webkit-transition: -webkit-transform 0.3s; + transition: transform 0.3s; + transform:scaleX(0); + -webkit-transform:scaleX(0); + transform-origin:0% 50%; + -webkit-transform-origin:0% 50%; +} + .ares.tp-rightarrow .tp-title-wrap { + right:0px; + margin-right:30px;margin-left:0px; + -webkit-transform-origin:100% 50%; +border-radius:30px 0px 0px 30px; + } +.ares.tparrows:hover .tp-title-wrap { + transform:scaleX(1) scaleY(1); + -webkit-transform:scaleX(1) scaleY(1); +} +.ares .tp-arr-titleholder { + position:relative; + -webkit-transition: -webkit-transform 0.3s; + transition: transform 0.3s; + transform:translateX(200px); + text-transform:uppercase; + color:#000; + font-weight:400; + font-size:14px; + line-height:60px; + white-space:nowrap; + padding:0px 20px; + margin-left:10px; + opacity:0; +} + +.ares.tp-rightarrow .tp-arr-titleholder { + transform:translateX(-200px); + margin-left:0px; margin-right:10px; + } + +.ares.tparrows:hover .tp-arr-titleholder { + transform:translateX(0px); + -webkit-transform:translateX(0px); + transition-delay: 0.1s; + opacity:1; +} + +/* BULLETS */ +.ares.tp-bullets { +} +.ares.tp-bullets:before { + content:" "; + position:absolute; + width:100%; + height:100%; + background:transparent; + padding:10px; + margin-left:-10px;margin-top:-10px; + box-sizing:content-box; +} +.ares .tp-bullet { + width:13px; + height:13px; + position:absolute; + background:#e5e5e5; + border-radius:50%; + cursor: pointer; + box-sizing:content-box; +} +.ares .tp-bullet:hover, +.ares .tp-bullet.selected { + background:#fff; +} +.ares .tp-bullet-title { + position:absolute; + color:#888; + font-size:12px; + padding:0px 10px; + font-weight:600; + right:27px; + top:-4px; + background:#fff; + background:rgba(255,255,255,0.75); + visibility:hidden; + transform:translateX(-20px); + -webkit-transform:translateX(-20px); + transition:transform 0.3s; + -webkit-transition:transform 0.3s; + line-height:20px; + white-space:nowrap; +} + +.ares .tp-bullet-title:after { + width: 0px; + height: 0px; + border-style: solid; + border-width: 10px 0 10px 10px; + border-color: transparent transparent transparent rgba(255,255,255,0.75); + content:" "; + position:absolute; + right:-10px; + top:0px; +} + +.ares .tp-bullet:hover .tp-bullet-title{ + visibility:visible; + transform:translateX(0px); + -webkit-transform:translateX(0px); +} + +.ares .tp-bullet.selected:hover .tp-bullet-title { + background:#fff; + } +.ares .tp-bullet.selected:hover .tp-bullet-title:after { + border-color:transparent transparent transparent #fff; +} +.ares.tp-bullets:hover .tp-bullet-title { + visibility:hidden; +} +.ares.tp-bullets:hover .tp-bullet:hover .tp-bullet-title { + visibility:visible; + } + +/* TABS */ +.ares .tp-tab { + opacity:1; + padding:10px; + box-sizing:border-box; + font-family: "Roboto", sans-serif; + border-bottom: 1px solid #e5e5e5; + } +.ares .tp-tab-image +{ + width:60px; + height:60px; max-height:100%; max-width:100%; + position:relative; + display:inline-block; + float:left; + +} +.ares .tp-tab-content +{ + background:rgba(0,0,0,0); + position:relative; + padding:15px 15px 15px 85px; + left:0px; + overflow:hidden; + margin-top:-15px; + box-sizing:border-box; + color:#333; + display: inline-block; + width:100%; + height:100%; + position:absolute; } +.ares .tp-tab-date + { + display:block; + color: #aaa; + font-weight:500; + font-size:12px; + margin-bottom:0px; + } +.ares .tp-tab-title +{ + display:block; + text-align:left; + color:#333; + font-size:14px; + font-weight:500; + text-transform:none; + line-height:17px; +} +.ares .tp-tab:hover, +.ares .tp-tab.selected { + background:#eee; +} + +.ares .tp-tab-mask { +} + +/* MEDIA QUERIES */ +@media only screen and (max-width: 960px) { + +} +@media only screen and (max-width: 768px) { + +} + diff --git a/think.greaterchiangmai.com/public/revolution/css/navigation-skins/custom.css b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/custom.css new file mode 100644 index 0000000..6d80ed4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/custom.css @@ -0,0 +1,79 @@ +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + CUSTOM SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.custom.tparrows { + cursor:pointer; + background:#000; + background:rgba(0,0,0,0.5); + width:40px; + height:40px; + position:absolute; + display:block; + z-index:100; +} +.custom.tparrows:hover { + background:#000; +} +.custom.tparrows:before { + font-family: "revicons"; + font-size:15px; + color:#fff; + display:block; + line-height: 40px; + text-align: center; +} +.custom.tparrows.tp-leftarrow:before { + content: "\e824"; +} +.custom.tparrows.tp-rightarrow:before { + content: "\e825"; +} + + + +/* BULLETS */ +.custom.tp-bullets { +} +.custom.tp-bullets:before { + content:" "; + position:absolute; + width:100%; + height:100%; + background:transparent; + padding:10px; + margin-left:-10px;margin-top:-10px; + box-sizing:content-box; +} +.custom .tp-bullet { + width:12px; + height:12px; + position:absolute; + background:#aaa; + background:rgba(125,125,125,0.5); + cursor: pointer; + box-sizing:content-box; +} +.custom .tp-bullet:hover, +.custom .tp-bullet.selected { + background:rgb(125,125,125); +} +.custom .tp-bullet-image { +} +.custom .tp-bullet-title { +} + + +/* THUMBS */ + + +/* TABS */ + + diff --git a/think.greaterchiangmai.com/public/revolution/css/navigation-skins/dione.css b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/dione.css new file mode 100644 index 0000000..82c18c8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/dione.css @@ -0,0 +1,177 @@ +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + DIONE SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.dione.tparrows { + height:100%; + width:100px; + background:transparent; + background:rgba(0,0,0,0); + line-height:100%; + transition:all 0.3s; +-webkit-transition:all 0.3s; +} + +.dione.tparrows:hover { + background:rgba(0,0,0,0.45); + } +.dione .tp-arr-imgwrapper { + width:100px; + left:0px; + position:absolute; + height:100%; + top:0px; + overflow:hidden; + } +.dione.tp-rightarrow .tp-arr-imgwrapper { +left:auto; +right:0px; +} + +.dione .tp-arr-imgholder { +background-position:center center; +background-size:cover; +width:100px; +height:100%; +top:0px; +visibility:hidden; +transform:translateX(-50px); +-webkit-transform:translateX(-50px); +transition:all 0.3s; +-webkit-transition:all 0.3s; +opacity:0; +left:0px; +} + +.dione.tparrows.tp-rightarrow .tp-arr-imgholder { + right:0px; + left:auto; + transform:translateX(50px); + -webkit-transform:translateX(50px); +} + +.dione.tparrows:before { +position:absolute; +line-height:30px; +margin-left:-22px; +top:50%; +left:50%; +font-size:30px; +margin-top:-15px; +transition:all 0.3s; +-webkit-transition:all 0.3s; +} + +.dione.tparrows.tp-rightarrow:before { +margin-left:6px; +} + +.dione.tparrows:hover:before { + transform:translateX(-20px); +-webkit-transform:translateX(-20px); +opacity:0; +} + +.dione.tparrows.tp-rightarrow:hover:before { + transform:translateX(20px); +-webkit-transform:translateX(20px); +} + +.dione.tparrows:hover .tp-arr-imgholder { + transform:translateX(0px); +-webkit-transform:translateX(0px); +opacity:1; +visibility:visible; +} + + + +/* BULLETS */ +.dione .tp-bullet { + opacity:1; + width:50px; + height:50px; + padding:3px; + background:#000; + background-color:rgba(0,0,0,0.25); + margin:0px; + box-sizing:border-box; + transition:all 0.3s; + -webkit-transition:all 0.3s; + + } + +.dione .tp-bullet-image { + display:block; + box-sizing:border-box; + position:relative; + -webkit-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + -moz-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + width:44px; + height:44px; + background-size:cover; + background-position:center center; + } +.dione .tp-bullet-title { + position:absolute; + bottom:65px; + display:inline-block; + left:50%; + background:#000; + background:rgba(0,0,0,0.75); + color:#fff; + padding:10px 30px; + border-radius:4px; + -webkit-border-radius:4px; + opacity:0; + transition:all 0.3s; + -webkit-transition:all 0.3s; + transform: translateZ(0.001px) translateX(-50%) translateY(14px); + transform-origin:50% 100%; + -webkit-transform: translateZ(0.001px) translateX(-50%) translateY(14px); + -webkit-transform-origin:50% 100%; + opacity:0; + white-space:nowrap; + } + +.dione .tp-bullet:hover .tp-bullet-title { + transform:rotateX(0deg) translateX(-50%); + -webkit-transform:rotateX(0deg) translateX(-50%); + opacity:1; +} + +.dione .tp-bullet.selected, +.dione .tp-bullet:hover { + + background: rgba(255,255,255,1); + background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(255,255,255,1)), color-stop(100%, rgba(119,119,119,1))); + background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -o-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -ms-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#ffffff", endColorstr="#777777", GradientType=0 ); + + } +.dione .tp-bullet-title:after { + content:" "; + position:absolute; + left:50%; + margin-left:-8px; + width: 0; + height: 0; + border-style: solid; + border-width: 8px 8px 0 8px; + border-color: rgba(0,0,0,0.75) transparent transparent transparent; + bottom:-8px; + } + + diff --git a/think.greaterchiangmai.com/public/revolution/css/navigation-skins/erinyen.css b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/erinyen.css new file mode 100644 index 0000000..60a0821 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/erinyen.css @@ -0,0 +1,276 @@ +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + ERINYEN SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.erinyen.tparrows { + cursor:pointer; + background:#000; + background:rgba(0,0,0,0.5); + min-width:70px; + min-height:70px; + position:absolute; + display:block; + z-index:100; + border-radius:35px; +} + +.erinyen.tparrows:before { + font-family: "revicons"; + font-size:20px; + color:#fff; + display:block; + line-height: 70px; + text-align: center; + z-index:2; + position:relative; +} +.erinyen.tparrows.tp-leftarrow:before { + content: "\e824"; +} +.erinyen.tparrows.tp-rightarrow:before { + content: "\e825"; +} + +.erinyen .tp-title-wrap { + position:absolute; + z-index:1; + display:inline-block; + background:#000; + background:rgba(0,0,0,0.5); + min-height:70px; + line-height:70px; + top:0px; + margin-left:0px; + border-radius:35px; + overflow:hidden; + transition: opacity 0.3s; + -webkit-transition:opacity 0.3s; + -moz-transition:opacity 0.3s; + -webkit-transform: scale(0); + -moz-transform: scale(0); + transform: scale(0); + visibility:hidden; + opacity:0; +} + +.erinyen.tparrows:hover .tp-title-wrap{ + -webkit-transform: scale(1); + -moz-transform: scale(1); + transform: scale(1); + opacity:1; + visibility:visible; +} + + .erinyen.tp-rightarrow .tp-title-wrap { + right:0px; + margin-right:0px;margin-left:0px; + -webkit-transform-origin:100% 50%; + border-radius:35px; + padding-right:20px; + padding-left:10px; + } + + +.erinyen.tp-leftarrow .tp-title-wrap { + padding-left:20px; + padding-right:10px; +} + +.erinyen .tp-arr-titleholder { + letter-spacing: 3px; + position:relative; + -webkit-transition: -webkit-transform 0.3s; + transition: transform 0.3s; + transform:translateX(200px); + text-transform:uppercase; + color:#fff; + font-weight:600; + font-size:13px; + line-height:70px; + white-space:nowrap; + padding:0px 20px; + margin-left:11px; + opacity:0; +} + +.erinyen .tp-arr-imgholder { + width:100%; + height:100%; + position:absolute; + top:0px; + left:0px; + background-position:center center; + background-size:cover; + } + .erinyen .tp-arr-img-over { + width:100%; + height:100%; + position:absolute; + top:0px; + left:0px; + background:#000; + background:rgba(0,0,0,0.5); + } +.erinyen.tp-rightarrow .tp-arr-titleholder { + transform:translateX(-200px); + margin-left:0px; margin-right:11px; + } + +.erinyen.tparrows:hover .tp-arr-titleholder { + transform:translateX(0px); + -webkit-transform:translateX(0px); + transition-delay: 0.1s; + opacity:1; +} + +/* BULLETS */ +.erinyen.tp-bullets { +} +.erinyen.tp-bullets:before { + content:" "; + position:absolute; + width:100%; + height:100%; + background: #555555; /* old browsers */ + background: -moz-linear-gradient(top, #555555 0%, #222222 100%); /* ff3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#555555), color-stop(100%,#222222)); /* chrome,safari4+ */ + background: -webkit-linear-gradient(top, #555555 0%,#222222 100%); /* chrome10+,safari5.1+ */ + background: -o-linear-gradient(top, #555555 0%,#222222 100%); /* opera 11.10+ */ + background: -ms-linear-gradient(top, #555555 0%,#222222 100%); /* ie10+ */ + background: linear-gradient(to bottom, #555555 0%,#222222 100%); /* w3c */ + filter: progid:dximagetransform.microsoft.gradient( startcolorstr="#555555", endcolorstr="#222222",gradienttype=0 ); /* ie6-9 */ + padding:10px 15px; + margin-left:-15px;margin-top:-10px; + box-sizing:content-box; + border-radius:10px; + box-shadow:0px 0px 2px 1px rgba(33,33,33,0.3); +} +.erinyen .tp-bullet { + width:13px; + height:13px; + position:absolute; + background:#111; + border-radius:50%; + cursor: pointer; + box-sizing:content-box; +} +.erinyen .tp-bullet:hover, +.erinyen .tp-bullet.selected { + background: #e5e5e5; /* old browsers */ +background: -moz-linear-gradient(top, #e5e5e5 0%, #999999 100%); /* ff3.6+ */ +background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e5e5e5), color-stop(100%,#999999)); /* chrome,safari4+ */ +background: -webkit-linear-gradient(top, #e5e5e5 0%,#999999 100%); /* chrome10+,safari5.1+ */ +background: -o-linear-gradient(top, #e5e5e5 0%,#999999 100%); /* opera 11.10+ */ +background: -ms-linear-gradient(top, #e5e5e5 0%,#999999 100%); /* ie10+ */ +background: linear-gradient(to bottom, #e5e5e5 0%,#999999 100%); /* w3c */ +filter: progid:dximagetransform.microsoft.gradient( startcolorstr="#e5e5e5", endcolorstr="#999999",gradienttype=0 ); /* ie6-9 */ + border:1px solid #555; + width:12px;height:12px; +} +.erinyen .tp-bullet-image { +} +.erinyen .tp-bullet-title { +} + + +/* THUMBS */ +.erinyen .tp-thumb { +opacity:1 +} + +.erinyen .tp-thumb-over { + background:#000; + background:rgba(0,0,0,0.25); + width:100%; + height:100%; + position:absolute; + top:0px; + left:0px; + z-index:1; + -webkit-transition:all 0.3s; + transition:all 0.3s; +} + +.erinyen .tp-thumb-more:before { + font-family: "revicons"; + font-size:12px; + color:#aaa; + color:rgba(255,255,255,0.75); + display:block; + line-height: 12px; + text-align: left; + z-index:2; + position:absolute; + top:20px; + right:20px; + z-index:2; +} +.erinyen .tp-thumb-more:before { + content: "\e825"; +} + +.erinyen .tp-thumb-title { + font-family:"Raleway"; + letter-spacing:1px; + font-size:12px; + color:#fff; + display:block; + line-height: 15px; + text-align: left; + z-index:2; + position:absolute; + top:0px; + left:0px; + z-index:2; + padding:20px 35px 20px 20px; + width:100%; + height:100%; + box-sizing:border-box; + transition:all 0.3s; + -webkit-transition:all 0.3s; + font-weight:500; +} + +.erinyen .tp-thumb.selected .tp-thumb-more:before, +.erinyen .tp-thumb:hover .tp-thumb-more:before { + color:#aaa; + +} + +.erinyen .tp-thumb.selected .tp-thumb-over, +.erinyen .tp-thumb:hover .tp-thumb-over { + background:#fff; +} +.erinyen .tp-thumb.selected .tp-thumb-title, +.erinyen .tp-thumb:hover .tp-thumb-title { + color:#000; + +} + + +/* TABS */ +.erinyen .tp-tab-title { + color:#a8d8ee; + font-size:13px; + font-weight:700; + text-transform:uppercase; + font-family:"Roboto Slab" + margin-bottom:5px; +} + +.erinyen .tp-tab-desc { + font-size:18px; + font-weight:400; + color:#fff; + line-height:25px; + font-family:"Roboto Slab"; +} + + diff --git a/think.greaterchiangmai.com/public/revolution/css/navigation-skins/gyges.css b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/gyges.css new file mode 100644 index 0000000..e3b9f14 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/gyges.css @@ -0,0 +1,209 @@ +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + GYGES SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ + + +/* BULLETS */ +.gyges.tp-bullets { +} +.gyges.tp-bullets:before { + content:" "; + position:absolute; + width:100%; + height:100%; + background: #777777; /* Old browsers */ + background: -moz-linear-gradient(top, #777777 0%, #666666 100%); + background: -webkit-gradient(linear, left top, left bottom, + color-stop(0%,#777777), color-stop(100%,#666666)); + background: -webkit-linear-gradient(top, #777777 0%,#666666 100%); + background: -o-linear-gradient(top, #777777 0%,#666666 100%); + background: -ms-linear-gradient(top, #777777 0%,#666666 100%); + background: linear-gradient(to bottom, #777777 0%,#666666 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#777777", + endColorstr="#666666",GradientType=0 ); + padding:10px; + margin-left:-10px;margin-top:-10px; + box-sizing:content-box; + border-radius:10px; +} +.gyges .tp-bullet { + width:12px; + height:12px; + position:absolute; + background:#333; + border:3px solid #444; + border-radius:50%; + cursor: pointer; + box-sizing:content-box; +} +.gyges .tp-bullet:hover, +.gyges .tp-bullet.selected { + background: #ffffff; /* Old browsers */ + background: -moz-linear-gradient(top, #ffffff 0%, #e1e1e1 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, + color-stop(0%,#ffffff), color-stop(100%,#e1e1e1)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #ffffff 0%,#e1e1e1 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #ffffff 0%,#e1e1e1 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #ffffff 0%,#e1e1e1 100%); /* IE10+ */ + background: linear-gradient(to bottom, #ffffff 0%,#e1e1e1 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#ffffff", + endColorstr="#e1e1e1",GradientType=0 ); /* IE6-9 */ + +} +.gyges .tp-bullet-image { +} +.gyges .tp-bullet-title { +} + + +/* THUMBS */ +.gyges .tp-thumb { + opacity:1 + } +.gyges .tp-thumb-img-wrap { + padding:3px; + background:#000; + background-color:rgba(0,0,0,0.25); + display:inline-block; + + width:100%; + height:100%; + position:relative; + margin:0px; + box-sizing:border-box; + transition:all 0.3s; + -webkit-transition:all 0.3s; +} +.gyges .tp-thumb-image { + padding:3px; + display:block; + box-sizing:border-box; + position:relative; + -webkit-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + -moz-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + } +.gyges .tp-thumb-title { + position:absolute; + bottom:100%; + display:inline-block; + left:50%; + background:rgba(255,255,255,0.8); + padding:10px 30px; + border-radius:4px; + -webkit-border-radius:4px; + margin-bottom:20px; + opacity:0; + transition:all 0.3s; + -webkit-transition:all 0.3s; + transform: translateZ(0.001px) translateX(-50%) translateY(14px); + transform-origin:50% 100%; + -webkit-transform: translateZ(0.001px) translateX(-50%) translateY(14px); + -webkit-transform-origin:50% 100%; + white-space:nowrap; + } +.gyges .tp-thumb:hover .tp-thumb-title { + transform:rotateX(0deg) translateX(-50%); + -webkit-transform:rotateX(0deg) translateX(-50%); + opacity:1; +} + +.gyges .tp-thumb:hover .tp-thumb-img-wrap, + .gyges .tp-thumb.selected .tp-thumb-img-wrap { + + background: rgba(255,255,255,1); + background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(255,255,255,1)), color-stop(100%, rgba(119,119,119,1))); + background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -o-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -ms-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#ffffff", endColorstr="#777777", GradientType=0 ); + } +.gyges .tp-thumb-title:after { + content:" "; + position:absolute; + left:50%; + margin-left:-8px; + width: 0; + height: 0; + border-style: solid; + border-width: 8px 8px 0 8px; + border-color: rgba(255,255,255,0.8) transparent transparent transparent; + bottom:-8px; + } + + +/* TABS */ +.gyges .tp-tab { + opacity:1; + padding:10px; + box-sizing:border-box; + font-family: "Roboto", sans-serif; + border-bottom: 1px solid rgba(255,255,255,0.15); + } +.gyges .tp-tab-image +{ + width:60px; + height:60px; max-height:100%; max-width:100%; + position:relative; + display:inline-block; + float:left; + +} +.gyges .tp-tab-content +{ + background:rgba(0,0,0,0); + position:relative; + padding:15px 15px 15px 85px; + left:0px; + overflow:hidden; + margin-top:-15px; + box-sizing:border-box; + color:#333; + display: inline-block; + width:100%; + height:100%; + position:absolute; } +.gyges .tp-tab-date + { + display:block; + color: rgba(255,255,255,0.25); + font-weight:500; + font-size:12px; + margin-bottom:0px; + } +.gyges .tp-tab-title +{ + display:block; + text-align:left; + color:#fff; + font-size:14px; + font-weight:500; + text-transform:none; + line-height:17px; +} +.gyges .tp-tab:hover, +.gyges .tp-tab.selected { + background:rgba(0,0,0,0.5); +} + +.gyges .tp-tab-mask { +} + +/* MEDIA QUERIES */ +@media only screen and (max-width: 960px) { + +} +@media only screen and (max-width: 768px) { + +} + diff --git a/think.greaterchiangmai.com/public/revolution/css/navigation-skins/hades.css b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/hades.css new file mode 100644 index 0000000..21b540c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/hades.css @@ -0,0 +1,256 @@ +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + HADES SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.hades.tparrows { + cursor:pointer; + background:#000; + background:rgba(0,0,0,0.15); + width:100px; + height:100px; + position:absolute; + display:block; + z-index:100; +} + +.hades.tparrows:before { + font-family: "revicons"; + font-size:30px; + color:#fff; + display:block; + line-height: 100px; + text-align: center; + transition: background 0.3s, color 0.3s; +} +.hades.tparrows.tp-leftarrow:before { + content: "\e824"; +} +.hades.tparrows.tp-rightarrow:before { + content: "\e825"; +} + +.hades.tparrows:hover:before { + color:#aaa; + background:#fff; + background:rgba(255,255,255,1); + } +.hades .tp-arr-allwrapper { + position:absolute; + left:100%; + top:0px; + background:#888; + width:100px;height:100px; + -webkit-transition: all 0.3s; + transition: all 0.3s; + -ms-filter: "progid:dximagetransform.microsoft.alpha(opacity=0)"; + filter: alpha(opacity=0); + -moz-opacity: 0.0; + -khtms-opacity: 0.0; + opacity: 0.0; + -webkit-transform: rotatey(-90deg); + transform: rotatey(-90deg); + -webkit-transform-origin: 0% 50%; + transform-origin: 0% 50%; +} +.hades.tp-rightarrow .tp-arr-allwrapper { + left:auto; + right:100%; + -webkit-transform-origin: 100% 50%; + transform-origin: 100% 50%; + -webkit-transform: rotatey(90deg); + transform: rotatey(90deg); +} + +.hades:hover .tp-arr-allwrapper { + -ms-filter: "progid:dximagetransform.microsoft.alpha(opacity=100)"; + filter: alpha(opacity=100); + -moz-opacity: 1; + -khtms-opacity: 1; + opacity: 1; + -webkit-transform: rotatey(0deg); + transform: rotatey(0deg); + + } + +.hades .tp-arr-iwrapper { +} +.hades .tp-arr-imgholder { + background-size:cover; + position:absolute; + top:0px;left:0px; + width:100%;height:100%; +} +.hades .tp-arr-titleholder { +} +.hades .tp-arr-subtitleholder { +} + + +/* BULLETS */ +.hades.tp-bullets { +} +.hades.tp-bullets:before { + content:" "; + position:absolute; + width:100%; + height:100%; + background:transparent; + padding:10px; + margin-left:-10px;margin-top:-10px; + box-sizing:content-box; +} +.hades .tp-bullet { + width:3px; + height:3px; + position:absolute; + background:#888; + cursor: pointer; + border:5px solid #fff; + box-sizing:content-box; + box-shadow:0px 0px 3px 1px rgba(0,0,0,0.2); + -webkit-perspective:400; + perspective:400; + -webkit-transform:translatez(0.01px); + transform:translatez(0.01px); +} +.hades .tp-bullet:hover, +.hades .tp-bullet.selected { + background:#555; + +} + +.hades .tp-bullet-image { + position:absolute;top:-80px; left:-60px;width:120px;height:60px; + background-position:center center; + background-size:cover; + visibility:hidden; + opacity:0; + transition:all 0.3s; + -webkit-transform-style:flat; + transform-style:flat; + perspective:600; + -webkit-perspective:600; + transform: rotatex(-90deg); + -webkit-transform: rotatex(-90deg); + box-shadow:0px 0px 3px 1px rgba(0,0,0,0.2); + transform-origin:50% 100%; + -webkit-transform-origin:50% 100%; + + +} +.hades .tp-bullet:hover .tp-bullet-image { + display:block; + opacity:1; + transform: rotatex(0deg); + -webkit-transform: rotatex(0deg); + visibility:visible; + } +.hades .tp-bullet-title { +} + + +/* THUMBS */ +.hades .tp-thumb { + opacity:1 + } +.hades .tp-thumb-img-wrap { + border-radius:50%; + padding:3px; + display:inline-block; +background:#000; + background-color:rgba(0,0,0,0.25); + width:100%; + height:100%; + position:relative; + margin:0px; + box-sizing:border-box; + transition:all 0.3s; + -webkit-transition:all 0.3s; +} +.hades .tp-thumb-image { + padding:3px; + border-radius:50%; + display:block; + box-sizing:border-box; + position:relative; + -webkit-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + -moz-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + } + + +.hades .tp-thumb:hover .tp-thumb-img-wrap, +.hades .tp-thumb.selected .tp-thumb-img-wrap { + + background: rgba(255,255,255,1); + background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(255,255,255,1)), color-stop(100%, rgba(119,119,119,1))); + background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -o-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -ms-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#ffffff", endColorstr="#777777", GradientType=0 ); + + } +.hades .tp-thumb-title:after { + content:" "; + position:absolute; + left:50%; + margin-left:-8px; + width: 0; + height: 0; + border-style: solid; + border-width: 8px 8px 0 8px; + border-color: rgba(0,0,0,0.75) transparent transparent transparent; + bottom:-8px; + } + + +/* TABS */ +.hades .tp-tab { + opacity:1; + } + +.hades .tp-tab-title + { + display:block; + color:#333; + font-weight:600; + font-size:18px; + text-align:center; + line-height:25px; + } +.hades .tp-tab-price + { + display:block; + text-align:center; + color:#999; + font-size:16px; + margin-top:10px; + line-height:20px +} + +.hades .tp-tab-button { + display:inline-block; + margin-top:15px; + text-align:center; + padding:5px 15px; + color:#fff; + font-size:14px; + background:#219bd7; + border-radius:4px; + font-weight:400; +} +.hades .tp-tab-inner { + text-align:center; +} + + + diff --git a/think.greaterchiangmai.com/public/revolution/css/navigation-skins/hebe.css b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/hebe.css new file mode 100644 index 0000000..1156bd4 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/hebe.css @@ -0,0 +1,196 @@ +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + HEBE SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.hebe.tparrows { + cursor:pointer; + background:#fff; + min-width:70px; + min-height:70px; + position:absolute; + display:block; + z-index:100; +} +.hebe.tparrows:hover { +} +.hebe.tparrows:before { + font-family: "revicons"; + font-size:30px; + color:#aaa; + display:block; + line-height: 70px; + text-align: center; + -webkit-transition: color 0.3s; + -moz-transition: color 0.3s; + transition: color 0.3s; + z-index:2; + position:relative; + background:#fff; + min-width:70px; + min-height:70px; +} +.hebe.tparrows.tp-leftarrow:before { + content: "\e824"; +} +.hebe.tparrows.tp-rightarrow:before { + content: "\e825"; +} +.hebe.tparrows:hover:before { + color:#000; + } +.tp-title-wrap { + position:absolute; + z-index:0; + display:inline-block; + background:#000; + background:rgba(0,0,0,0.75); + min-height:60px; + line-height:60px; + top:-10px; + margin-left:0px; + -webkit-transition: -webkit-transform 0.3s; + transition: transform 0.3s; + transform:scaleX(0); + -webkit-transform:scaleX(0); + transform-origin:0% 50%; + -webkit-transform-origin:0% 50%; +} + .hebe.tp-rightarrow .tp-title-wrap { + right:0px; + -webkit-transform-origin:100% 50%; + } +.hebe.tparrows:hover .tp-title-wrap { + transform:scaleX(1); + -webkit-transform:scaleX(1); +} +.hebe .tp-arr-titleholder { + position:relative; + text-transform:uppercase; + color:#fff; + font-weight:600; + font-size:12px; + line-height:90px; + white-space:nowrap; + padding:0px 20px 0px 90px; +} + +.hebe.tp-rightarrow .tp-arr-titleholder { + margin-left:0px; + padding:0px 90px 0px 20px; + } + +.hebe.tparrows:hover .tp-arr-titleholder { + transform:translateX(0px); + -webkit-transform:translateX(0px); + transition-delay: 0.1s; + opacity:1; +} + +.hebe .tp-arr-imgholder{ + width:90px; + height:90px; + position:absolute; + left:100%; + display:block; + background-size:cover; + background-position:center center; + top:0px; right:-90px; + } +.hebe.tp-rightarrow .tp-arr-imgholder{ + right:auto;left:-90px; + } + +/* BULLETS */ +.hebe.tp-bullets { +} +.hebe.tp-bullets:before { + content:" "; + position:absolute; + width:100%; + height:100%; + background:transparent; + padding:10px; + margin-left:-10px;margin-top:-10px; + box-sizing:content-box; +} + +.hebe .tp-bullet { + width:3px; + height:3px; + position:absolute; + background:#fff; + cursor: pointer; + border:5px solid #222; + border-radius:50%; + box-sizing:content-box; + -webkit-perspective:400; + perspective:400; + -webkit-transform:translateZ(0.01px); + transform:translateZ(0.01px); + transition:all 0.3s; +} +.hebe .tp-bullet:hover, +.hebe .tp-bullet.selected { + background:#222; + border-color:#fff; +} + +.hebe .tp-bullet-image { + position:absolute; + top:-90px; left:-40px; + width:70px; + height:70px; + background-position:center center; + background-size:cover; + visibility:hidden; + opacity:0; + transition:all 0.3s; + -webkit-transform-style:flat; + transform-style:flat; + perspective:600; + -webkit-perspective:600; + transform: scale(0); + -webkit-transform: scale(0); + transform-origin:50% 100%; + -webkit-transform-origin:50% 100%; +border-radius:6px; + + +} +.hebe .tp-bullet:hover .tp-bullet-image { + display:block; + opacity:1; + transform: scale(1); + -webkit-transform: scale(1); + visibility:visible; + } +.hebe .tp-bullet-title { +} + + +/* TABS */ +.hebe .tp-tab-title { + color:#a8d8ee; + font-size:13px; + font-weight:700; + text-transform:uppercase; + font-family:"Roboto Slab" + margin-bottom:5px; +} + +.hebe .tp-tab-desc { + font-size:18px; + font-weight:400; + color:#fff; + line-height:25px; + font-family:"Roboto Slab"; +} + + diff --git a/think.greaterchiangmai.com/public/revolution/css/navigation-skins/hephaistos.css b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/hephaistos.css new file mode 100644 index 0000000..735eecf --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/hephaistos.css @@ -0,0 +1,81 @@ +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + HEPHAISTOS SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.hephaistos.tparrows { + cursor:pointer; + background:#000; + background:rgba(0,0,0,0.5); + width:40px; + height:40px; + position:absolute; + display:block; + z-index:100; + border-radius:50%; +} +.hephaistos.tparrows:hover { + background:#000; +} +.hephaistos.tparrows:before { + font-family: "revicons"; + font-size:18px; + color:#fff; + display:block; + line-height: 40px; + text-align: center; +} +.hephaistos.tparrows.tp-leftarrow:before { + content: "\e82c"; + margin-left:-2px; + +} +.hephaistos.tparrows.tp-rightarrow:before { + content: "\e82d"; + margin-right:-2px; +} + + + +/* BULLETS */ +.hephaistos.tp-bullets { +} +.hephaistos.tp-bullets:before { + content:" "; + position:absolute; + width:100%; + height:100%; + background:transparent; + padding:10px; + margin-left:-10px;margin-top:-10px; + box-sizing:content-box; +} +.hephaistos .tp-bullet { + width:12px; + height:12px; + position:absolute; + background:#999; + border:3px solid #f5f5f5; + border-radius:50%; + cursor: pointer; + box-sizing:content-box; + box-shadow: 0px 0px 2px 1px rgba(130,130,130, 0.3); + +} +.hephaistos .tp-bullet:hover, +.hephaistos .tp-bullet.selected { + background:#fff; + border-color:#000; +} +.hephaistos .tp-bullet-image { +} +.hephaistos .tp-bullet-title { +} + + diff --git a/think.greaterchiangmai.com/public/revolution/css/navigation-skins/hermes.css b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/hermes.css new file mode 100644 index 0000000..df6cf50 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/hermes.css @@ -0,0 +1,223 @@ +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + HERMES SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.hermes.tparrows { + cursor:pointer; + background:#000; + background:rgba(0,0,0,0.5); + width:30px; + height:110px; + position:absolute; + display:block; + z-index:100; +} + +.hermes.tparrows:before { + font-family: "revicons"; + font-size:15px; + color:#fff; + display:block; + line-height: 110px; + text-align: center; + transform:translateX(0px); + -webkit-transform:translateX(0px); + transition:all 0.3s; + -webkit-transition:all 0.3s; +} +.hermes.tparrows.tp-leftarrow:before { + content: "\e824"; +} +.hermes.tparrows.tp-rightarrow:before { + content: "\e825"; +} +.hermes.tparrows.tp-leftarrow:hover:before { + transform:translateX(-20px); + -webkit-transform:translateX(-20px); + opacity:0; +} +.hermes.tparrows.tp-rightarrow:hover:before { + transform:translateX(20px); + -webkit-transform:translateX(20px); + opacity:0; +} + +.hermes .tp-arr-allwrapper { + overflow:hidden; + position:absolute; + width:180px; + height:140px; + top:0px; + left:0px; + visibility:hidden; + -webkit-transition: -webkit-transform 0.3s 0.3s; + transition: transform 0.3s 0.3s; + -webkit-perspective: 1000px; + perspective: 1000px; + } +.hermes.tp-rightarrow .tp-arr-allwrapper { + right:0px;left:auto; + } +.hermes.tparrows:hover .tp-arr-allwrapper { + visibility:visible; + } +.hermes .tp-arr-imgholder { + width:180px;position:absolute; + left:0px;top:0px;height:110px; + transform:translateX(-180px); + -webkit-transform:translateX(-180px); + transition:all 0.3s; + transition-delay:0.3s; +} +.hermes.tp-rightarrow .tp-arr-imgholder{ + transform:translateX(180px); + -webkit-transform:translateX(180px); + } + +.hermes.tparrows:hover .tp-arr-imgholder { + transform:translateX(0px); + -webkit-transform:translateX(0px); +} +.hermes .tp-arr-titleholder { + top:110px; + width:180px; + text-align:left; + display:block; + padding:0px 10px; + line-height:30px; background:#000; + background:rgba(0,0,0,0.75);color:#fff; + font-weight:600; position:absolute; + font-size:12px; + white-space:nowrap; + letter-spacing:1px; + -webkit-transition: all 0.3s; + transition: all 0.3s; + -webkit-transform: rotateX(-90deg); + transform: rotateX(-90deg); + -webkit-transform-origin: 50% 0; + transform-origin: 50% 0; + box-sizing:border-box; + +} +.hermes.tparrows:hover .tp-arr-titleholder { + -webkit-transition-delay: 0.6s; + transition-delay: 0.6s; + -webkit-transform: rotateX(0deg); + transform: rotateX(0deg); +} + + +/* BULLETS */ +.hermes.tp-bullets { +} + +.hermes .tp-bullet { + overflow:hidden; + border-radius:50%; + width:16px; + height:16px; + background-color: rgba(0, 0, 0, 0); + box-shadow: inset 0 0 0 2px #FFF; + -webkit-transition: background 0.3s ease; + transition: background 0.3s ease; + position:absolute; +} + +.hermes .tp-bullet:hover { + background-color: rgba(0, 0, 0, 0.2); +} +.hermes .tp-bullet:after { + content: ' '; + position: absolute; + bottom: 0; + height: 0; + left: 0; + width: 100%; + background-color: #FFF; + box-shadow: 0 0 1px #FFF; + -webkit-transition: height 0.3s ease; + transition: height 0.3s ease; +} +.hermes .tp-bullet.selected:after { + height:100%; +} + + +/* TABS */ +.hermes .tp-tab { + opacity:1; + padding-right:10px; + box-sizing:border-box; + } +.hermes .tp-tab-image +{ + width:100%; + height:60%; + position:relative; +} +.hermes .tp-tab-content +{ + background:rgb(54,54,54); + position:absolute; + padding:20px 20px 20px 30px; + box-sizing:border-box; + color:#fff; + display:block; + width:100%; + min-height:40%; + bottom:0px; + left:-10px; + } +.hermes .tp-tab-date + { + display:block; + color:#888; + font-weight:600; + font-size:12px; + margin-bottom:10px; + } +.hermes .tp-tab-title +{ + display:block; + color:#fff; + font-size:16px; + font-weight:800; + text-transform:uppercase; + line-height:19px; +} + +.hermes .tp-tab.selected .tp-tab-title:after { + width: 0px; + height: 0px; + border-style: solid; + border-width: 30px 0 30px 10px; + border-color: transparent transparent transparent rgb(54,54,54); + content:" "; + position:absolute; + right:-9px; + bottom:50%; + margin-bottom:-30px; +} +.hermes .tp-tab-mask { + padding-right:10px !important; + } + +/* MEDIA QUERIES */ +@media only screen and (max-width: 960px) { + .hermes .tp-tab .tp-tab-title {font-size:14px;line-height:16px;} + .hermes .tp-tab-date { font-size:11px; line-height:13px;margin-bottom:10px;} + .hermes .tp-tab-content { padding:15px 15px 15px 25px;} +} +@media only screen and (max-width: 768px) { + .hermes .tp-tab .tp-tab-title {font-size:12px;line-height:14px;} + .hermes .tp-tab-date {font-size:10px; line-height:12px;margin-bottom:5px;} + .hermes .tp-tab-content {padding:10px 10px 10px 20px;} +} + diff --git a/think.greaterchiangmai.com/public/revolution/css/navigation-skins/hesperiden.css b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/hesperiden.css new file mode 100644 index 0000000..4994583 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/hesperiden.css @@ -0,0 +1,187 @@ +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + HESPERIDEN SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.hesperiden.tparrows { + cursor:pointer; + background:#000; + background:rgba(0,0,0,0.5); + width:40px; + height:40px; + position:absolute; + display:block; + z-index:100; + border-radius: 50%; +} +.hesperiden.tparrows:hover { + background:#000; +} +.hesperiden.tparrows:before { + font-family: "revicons"; + font-size:20px; + color:#fff; + display:block; + line-height: 40px; + text-align: center; +} +.hesperiden.tparrows.tp-leftarrow:before { + content: "\e82c"; + margin-left:-3px; +} +.hesperiden.tparrows.tp-rightarrow:before { + content: "\e82d"; + margin-right:-3px; +} + +/* BULLETS */ +.hesperiden.tp-bullets { +} +.hesperiden.tp-bullets:before { + content:" "; + position:absolute; + width:100%; + height:100%; + background:transparent; + padding:10px; + margin-left:-10px;margin-top:-10px; + box-sizing:content-box; + border-radius:8px; + +} +.hesperiden .tp-bullet { + width:12px; + height:12px; + position:absolute; + background: #999999; /* old browsers */ + background: -moz-linear-gradient(top, #999999 0%, #e1e1e1 100%); /* ff3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#999999), + color-stop(100%,#e1e1e1)); /* chrome,safari4+ */ + background: -webkit-linear-gradient(top, #999999 0%,#e1e1e1 100%); /* chrome10+,safari5.1+ */ + background: -o-linear-gradient(top, #999999 0%,#e1e1e1 100%); /* opera 11.10+ */ + background: -ms-linear-gradient(top, #999999 0%,#e1e1e1 100%); /* ie10+ */ + background: linear-gradient(to bottom, #999999 0%,#e1e1e1 100%); /* w3c */ + filter: progid:dximagetransform.microsoft.gradient( + startcolorstr="#999999", endcolorstr="#e1e1e1",gradienttype=0 ); /* ie6-9 */ + border:3px solid #e5e5e5; + border-radius:50%; + cursor: pointer; + box-sizing:content-box; +} +.hesperiden .tp-bullet:hover, +.hesperiden .tp-bullet.selected { + background:#666; +} +.hesperiden .tp-bullet-image { +} +.hesperiden .tp-bullet-title { +} + + +/* THUMBS */ +.hesperiden .tp-thumb { + opacity:1; + -webkit-perspective: 600px; + perspective: 600px; +} +.hesperiden .tp-thumb .tp-thumb-title { + font-size:12px; + position:absolute; + margin-top:-10px; + color:#fff; + display:block; + z-index:1000; + background-color:#000; + padding:5px 10px; + bottom:0px; + left:0px; + width:100%; + box-sizing:border-box; + text-align:center; + overflow:hidden; + white-space:nowrap; + transition:all 0.3s; + -webkit-transition:all 0.3s; + transform:rotatex(90deg) translatez(0.001px); + transform-origin:50% 100%; + -webkit-transform:rotatex(90deg) translatez(0.001px); + -webkit-transform-origin:50% 100%; + opacity:0; + } +.hesperiden .tp-thumb:hover .tp-thumb-title { + transform:rotatex(0deg); + -webkit-transform:rotatex(0deg); + opacity:1; +} + +/* TABS */ +.hesperiden .tp-tab { + opacity:1; + padding:10px; + box-sizing:border-box; + font-family: "Roboto", sans-serif; + border-bottom: 1px solid #e5e5e5; + } +.hesperiden .tp-tab-image +{ + width:60px; + height:60px; max-height:100%; max-width:100%; + position:relative; + display:inline-block; + float:left; + +} +.hesperiden .tp-tab-content +{ + background:rgba(0,0,0,0); + position:relative; + padding:15px 15px 15px 85px; + left:0px; + overflow:hidden; + margin-top:-15px; + box-sizing:border-box; + color:#333; + display: inline-block; + width:100%; + height:100%; + position:absolute; } +.hesperiden .tp-tab-date + { + display:block; + color: #aaa; + font-weight:500; + font-size:12px; + margin-bottom:0px; + } +.hesperiden .tp-tab-title +{ + display:block; + text-align:left; + color:#333; + font-size:14px; + font-weight:500; + text-transform:none; + line-height:17px; +} +.hesperiden .tp-tab:hover, +.hesperiden .tp-tab.selected { + background:#eee; +} + +.hesperiden .tp-tab-mask { +} + +/* MEDIA QUERIES */ +@media only screen and (max-width: 960px) { + +} +@media only screen and (max-width: 768px) { + +} + diff --git a/think.greaterchiangmai.com/public/revolution/css/navigation-skins/metis.css b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/metis.css new file mode 100644 index 0000000..47559d6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/metis.css @@ -0,0 +1,206 @@ +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + METIS SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.metis.tparrows { + background:#fff; + padding:10px; + transition:all 0.3s; + -webkit-transition:all 0.3s; + width:60px; + height:60px; + box-sizing:border-box; + } + + .metis.tparrows:hover { + background:#fff; + background:rgba(255,255,255,0.75); + } + + .metis.tparrows:before { + color:#000; + transition:all 0.3s; + -webkit-transition:all 0.3s; + } + + .metis.tparrows:hover:before { + transform:scale(1.5); + } + + +/* BULLETS */ +.metis .tp-bullet { + opacity:1; + width:50px; + height:50px; + padding:3px; + background:#000; + background-color:rgba(0,0,0,0.25); + margin:0px; + box-sizing:border-box; + transition:all 0.3s; + -webkit-transition:all 0.3s; + border-radius:50%; + } + +.metis .tp-bullet-image { + + border-radius:50%; + display:block; + box-sizing:border-box; + position:relative; + -webkit-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + -moz-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + width:44px; + height:44px; + background-size:cover; + background-position:center center; + } +.metis .tp-bullet-title { + position:absolute; + bottom:65px; + display:inline-block; + left:50%; + background:#000; + background:rgba(0,0,0,0.75); + color:#fff; + padding:10px 30px; + border-radius:4px; + -webkit-border-radius:4px; + opacity:0; + transition:all 0.3s; + -webkit-transition:all 0.3s; + transform: translateZ(0.001px) translateX(-50%) translateY(14px); + transform-origin:50% 100%; + -webkit-transform: translateZ(0.001px) translateX(-50%) translateY(14px); + -webkit-transform-origin:50% 100%; + opacity:0; + white-space:nowrap; + } + +.metis .tp-bullet:hover .tp-bullet-title { + transform:rotateX(0deg) translateX(-50%); + -webkit-transform:rotateX(0deg) translateX(-50%); + opacity:1; +} + +.metis .tp-bullet.selected, +.metis .tp-bullet:hover { + + background: rgba(255,255,255,1); + background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(255,255,255,1)), color-stop(100%, rgba(119,119,119,1))); + background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -o-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -ms-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#ffffff", endColorstr="#777777", GradientType=0 ); + + } +.metis .tp-bullet-title:after { + content:" "; + position:absolute; + left:50%; + margin-left:-8px; + width: 0; + height: 0; + border-style: solid; + border-width: 8px 8px 0 8px; + border-color: rgba(0,0,0,0.75) transparent transparent transparent; + bottom:-8px; + } + +/* METIS TAB */ +.metis .tp-tab-number { + color: #fff; + font-size: 40px; + line-height: 30px; + font-weight: 400; + font-family: "Playfair Display"; + width: 50px; + margin-right: 17px; + display: inline-block; + float: left; + } + .metis .tp-tab-mask { + padding-left: 20px; + left: 0px; + max-width: 90px !important; + transition: 0.4s padding-left, 0.4s left, 0.4s max-width; + } + .metis:hover .tp-tab-mask { + padding-left: 0px; + left: 50px; + max-width: 500px !important; + } + .metis .tp-tab-divider { + border-right: 1px solid transparent; + height: 30px; + width: 1px; + margin-top: 5px; + display: inline-block; + float: left; + } + .metis .tp-tab-title { + color: #fff; + font-size: 20px; + line-height: 20px; + font-weight: 400; + font-family: "Playfair Display"; + position: relative; + padding-top: 10px; + padding-left: 30px; + display: inline-block; + transform: translateX(-100%); + transition: 0.4s all; + } + .metis .tp-tab-title-mask { + position: absolute; + overflow: hidden; + left: 67px; + } + .metis:hover .tp-tab-title { + transform: translateX(0); + } + .metis .tp-tab { + opacity: 0.15; + transition: 0.4s all; + } + .metis .tp-tab:hover, + .metis .tp-tab.selected { + opacity: 1; + } + .metis .tp-tab.selected .tp-tab-divider { + border-right: 1px solid #cdb083; + } + .metis.tp-tabs { + max-width: 118px !important; + padding-left: 50px; + } + .metis.tp-tabs:before { + content: " "; + height: 100%; + width: 88px; + background: rgba(0, 0, 0, 0.15); + border-right: 1px solid rgba(255, 255, 255, 0.10); + left: 0px; + top: 0px; + position: absolute; + transition: 0.4s all; + } + .metis.tp-tabs:hover:before { + width: 118px; + } + @media (max-width: 499px) { + .metis.tp-tabs:before { + background: rgba(0, 0, 0, 0.75); + } + } diff --git a/think.greaterchiangmai.com/public/revolution/css/navigation-skins/persephone.css b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/persephone.css new file mode 100644 index 0000000..3ea192f --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/persephone.css @@ -0,0 +1,74 @@ +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + PERSEPHONE SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.persephone.tparrows { + cursor:pointer; + background:#aaa; + background:rgba(200,200,200,0.5); + width:40px; + height:40px; + position:absolute; + display:block; + z-index:100; + border:1px solid #f5f5f5; +} +.persephone.tparrows:hover { + background:#333; +} +.persephone.tparrows:before { + font-family: "revicons"; + font-size:15px; + color:#fff; + display:block; + line-height: 40px; + text-align: center; +} +.persephone.tparrows.tp-leftarrow:before { + content: "\e824"; +} +.persephone.tparrows.tp-rightarrow:before { + content: "\e825"; +} + + + +/* BULLETS */ +.persephone.tp-bullets { +} +.persephone.tp-bullets:before { + content:" "; + position:absolute; + width:100%; + height:100%; + background:#transparent; + padding:10px; + margin-left:-10px;margin-top:-10px; + box-sizing:content-box; +} +.persephone .tp-bullet { + width:12px; + height:12px; + position:absolute; + background:#aaa; + border:1px solid #e5e5e5; + cursor: pointer; + box-sizing:content-box; +} +.persephone .tp-bullet:hover, +.persephone .tp-bullet.selected { + background:#222; +} +.persephone .tp-bullet-image { +} +.persephone .tp-bullet-title { +} + + diff --git a/think.greaterchiangmai.com/public/revolution/css/navigation-skins/uranus.css b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/uranus.css new file mode 100644 index 0000000..b3fc192 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/uranus.css @@ -0,0 +1,72 @@ +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + URANUS SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.uranus.tparrows { + width:50px; + height:50px; + background:transparent; + } + .uranus.tparrows:before { + width:50px; + height:50px; + line-height:50px; + font-size:40px; + transition:all 0.3s; +-webkit-transition:all 0.3s; + } + + .uranus.tparrows:hover:before { + opacity:0.75; + } + +/* BULLETS */ +.uranus .tp-bullet{ + border-radius: 50%; + box-shadow: 0 0 0 2px rgba(255, 255, 255, 0); + -webkit-transition: box-shadow 0.3s ease; + transition: box-shadow 0.3s ease; + background:transparent; +} +.uranus .tp-bullet.selected, +.uranus .tp-bullet:hover { + box-shadow: 0 0 0 2px #FFF; + border:none; + border-radius: 50%; + + background:transparent; +} + + + +.uranus .tp-bullet-inner { + background-color: rgba(255, 255, 255, 0.7); + -webkit-transition: background-color 0.3s ease, -webkit-transform 0.3s ease; + transition: background-color 0.3s ease, transform 0.3s ease; + top: 0; + left: 0; + width: 100%; + height: 100%; + outline: none; + border-radius: 50%; + background-color: #FFF; + background-color: rgba(255, 255, 255, 0.3); + text-indent: -999em; + cursor: pointer; + position: absolute; +} + +.uranus .tp-bullet.selected .tp-bullet-inner, +.uranus .tp-bullet:hover .tp-bullet-inner{ + transform: scale(0.4); + -webkit-transform: scale(0.4); + background-color:#fff; +} + diff --git a/think.greaterchiangmai.com/public/revolution/css/navigation-skins/zeus.css b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/zeus.css new file mode 100644 index 0000000..2631f2e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/css/navigation-skins/zeus.css @@ -0,0 +1,280 @@ +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + ZEUS SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.zeus.tparrows { + cursor:pointer; + min-width:70px; + min-height:70px; + position:absolute; + display:block; + z-index:100; + border-radius:35px; + overflow:hidden; + background:rgba(0,0,0,0.10); +} + +.zeus.tparrows:before { + font-family: "revicons"; + font-size:20px; + color:#fff; + display:block; + line-height: 70px; + text-align: center; + z-index:2; + position:relative; +} +.zeus.tparrows.tp-leftarrow:before { + content: "\e824"; +} +.zeus.tparrows.tp-rightarrow:before { + content: "\e825"; +} + +.zeus .tp-title-wrap { + background:#000; + background:rgba(0,0,0,0.5); + width:100%; + height:100%; + top:0px; + left:0px; + position:absolute; + opacity:0; + transform:scale(0); + -webkit-transform:scale(0); + transition: all 0.3s; + -webkit-transition:all 0.3s; + -moz-transition:all 0.3s; + border-radius:50%; + } +.zeus .tp-arr-imgholder { + width:100%; + height:100%; + position:absolute; + top:0px; + left:0px; + background-position:center center; + background-size:cover; + border-radius:50%; + transform:translateX(-100%); + -webkit-transform:translateX(-100%); + transition: all 0.3s; + -webkit-transition:all 0.3s; + -moz-transition:all 0.3s; + + } +.zeus.tp-rightarrow .tp-arr-imgholder { + transform:translateX(100%); + -webkit-transform:translateX(100%); + } +.zeus.tparrows:hover .tp-arr-imgholder { + transform:translateX(0); + -webkit-transform:translateX(0); + opacity:1; +} + +.zeus.tparrows:hover .tp-title-wrap { + transform:scale(1); + -webkit-transform:scale(1); + opacity:1; +} + + +/* BULLETS */ +.zeus .tp-bullet { + box-sizing:content-box; -webkit-box-sizing:content-box; border-radius:50%; + background-color: rgba(0, 0, 0, 0); + -webkit-transition: opacity 0.3s ease; + transition: opacity 0.3s ease; + width:13px;height:13px; + border:2px solid #fff; + } +.zeus .tp-bullet:after { + content: ""; + position: absolute; + width: 100%; + height: 100%; + left: 0; + border-radius: 50%; + background-color: #FFF; + -webkit-transform: scale(0); + transform: scale(0); + -webkit-transform-origin: 50% 50%; + transform-origin: 50% 50%; + -webkit-transition: -webkit-transform 0.3s ease; + transition: transform 0.3s ease; +} +.zeus .tp-bullet:hover:after, +.zeus .tp-bullet.selected:after{ + -webkit-transform: scale(1.2); + transform: scale(1.2); +} + + .zeus .tp-bullet-image, + .zeus .tp-bullet-imageoverlay{ + width:135px; + height:60px; + position:absolute; + background:#000; + background:rgba(0,0,0,0.5); + bottom:25px; + left:50%; + margin-left:-65px; + box-sizing:border-box; + background-size:cover; + background-position:center center; + visibility:hidden; + opacity:0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform-origin: 50% 50%; + transform-origin: 50% 50%; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border-radius:4px; + +} + + +.zeus .tp-bullet-title, +.zeus .tp-bullet-imageoverlay { + z-index:2; + -webkit-transition: all 0.5s ease; + transition: all 0.5s ease; +} +.zeus .tp-bullet-title { + color:#fff; + text-align:center; + line-height:15px; + font-size:13px; + font-weight:600; + z-index:3; + visibility:hidden; + opacity:0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform-origin: 50% 50%; + transform-origin: 50% 50%; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + position:absolute; + bottom:45px; + width:135px; + vertical-align:middle; + left:-57px; +} + +.zeus .tp-bullet:hover .tp-bullet-title, +.zeus .tp-bullet:hover .tp-bullet-image, +.zeus .tp-bullet:hover .tp-bullet-imageoverlay{ + opacity:1; + visibility:visible; + -webkit-transform:translateY(0px); + transform:translateY(0px); + } + +/* THUMBS */ +.zeus .tp-thumb { +opacity:1 +} + +.zeus .tp-thumb-over { + background:#000; + background:rgba(0,0,0,0.25); + width:100%; + height:100%; + position:absolute; + top:0px; + left:0px; + z-index:1; + -webkit-transition:all 0.3s; + transition:all 0.3s; +} + +.zeus .tp-thumb-more:before { + font-family: "revicons"; + font-size:12px; + color:#aaa; + color:rgba(255,255,255,0.75); + display:block; + line-height: 12px; + text-align: left; + z-index:2; + position:absolute; + top:20px; + right:20px; + z-index:2; +} +.zeus .tp-thumb-more:before { + content: "\e825"; +} + +.zeus .tp-thumb-title { + font-family:"Raleway"; + letter-spacing:1px; + font-size:12px; + color:#fff; + display:block; + line-height: 15px; + text-align: left; + z-index:2; + position:absolute; + top:0px; + left:0px; + z-index:2; + padding:20px 35px 20px 20px; + width:100%; + height:100%; + box-sizing:border-box; + transition:all 0.3s; + -webkit-transition:all 0.3s; + font-weight:500; +} + +.zeus .tp-thumb.selected .tp-thumb-more:before, +.zeus .tp-thumb:hover .tp-thumb-more:before { + color:#aaa; + +} + +.zeus .tp-thumb.selected .tp-thumb-over, +.zeus .tp-thumb:hover .tp-thumb-over { + background:#000; +} +.zeus .tp-thumb.selected .tp-thumb-title, +.zeus .tp-thumb:hover .tp-thumb-title { + color:#fff; + +} + + +/* TABS */ +.zeus .tp-tab { + opacity:1; + box-sizing:border-box; +} + +.zeus .tp-tab-title { +display: block; +text-align: center; +background: rgba(0,0,0,0.25); +font-family: "Roboto Slab", serif; +font-weight: 700; +font-size: 13px; +line-height: 13px; +color: #fff; +padding: 9px 10px; } + +.zeus .tp-tab:hover .tp-tab-title, +.zeus .tp-tab.selected .tp-tab-title { + color: #000; + background:rgba(255,255,255,1); +} + diff --git a/think.greaterchiangmai.com/public/revolution/css/navigation.css b/think.greaterchiangmai.com/public/revolution/css/navigation.css new file mode 100644 index 0000000..4c8d70c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/css/navigation.css @@ -0,0 +1,2642 @@ +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + ARES SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +.ares.tparrows { + cursor:pointer; + background:#fff; + min-width:60px; + min-height:60px; + position:absolute; + display:block; + z-index:100; + border-radius:50%; +} +.ares.tparrows:hover { +} +.ares.tparrows:before { + font-family: "revicons"; + font-size:25px; + color:#aaa; + display:block; + line-height: 60px; + text-align: center; + -webkit-transition: color 0.3s; + -moz-transition: color 0.3s; + transition: color 0.3s; + z-index:2; + position:relative; +} +.ares.tparrows.tp-leftarrow:before { + content: "\e81f"; +} +.ares.tparrows.tp-rightarrow:before { + content: "\e81e"; +} +.ares.tparrows:hover:before { + color:#000; + } +.ares .tp-title-wrap { + position:absolute; + z-index:1; + display:inline-block; + background:#fff; + min-height:60px; + line-height:60px; + top:0px; + margin-left:30px; + border-radius:0px 30px 30px 0px; + overflow:hidden; + -webkit-transition: -webkit-transform 0.3s; + transition: transform 0.3s; + transform:scaleX(0); + -webkit-transform:scaleX(0); + transform-origin:0% 50%; + -webkit-transform-origin:0% 50%; +} + .ares.tp-rightarrow .tp-title-wrap { + right:0px; + margin-right:30px;margin-left:0px; + -webkit-transform-origin:100% 50%; +border-radius:30px 0px 0px 30px; + } +.ares.tparrows:hover .tp-title-wrap { + transform:scaleX(1) scaleY(1); + -webkit-transform:scaleX(1) scaleY(1); +} +.ares .tp-arr-titleholder { + position:relative; + -webkit-transition: -webkit-transform 0.3s; + transition: transform 0.3s; + transform:translateX(200px); + text-transform:uppercase; + color:#000; + font-weight:400; + font-size:14px; + line-height:60px; + white-space:nowrap; + padding:0px 20px; + margin-left:10px; + opacity:0; +} + +.ares.tp-rightarrow .tp-arr-titleholder { + transform:translateX(-200px); + margin-left:0px; margin-right:10px; + } + +.ares.tparrows:hover .tp-arr-titleholder { + transform:translateX(0px); + -webkit-transform:translateX(0px); + transition-delay: 0.1s; + opacity:1; +} + +/* BULLETS */ +.ares.tp-bullets { +} +.ares.tp-bullets:before { + content:" "; + position:absolute; + width:100%; + height:100%; + background:transparent; + padding:10px; + margin-left:-10px;margin-top:-10px; + box-sizing:content-box; +} +.ares .tp-bullet { + width:13px; + height:13px; + position:absolute; + background:#e5e5e5; + border-radius:50%; + cursor: pointer; + box-sizing:content-box; +} +.ares .tp-bullet:hover, +.ares .tp-bullet.selected { + background:#fff; +} +.ares .tp-bullet-title { + position:absolute; + color:#888; + font-size:12px; + padding:0px 10px; + font-weight:600; + right:27px; + top:-4px; + background:#fff; + background:rgba(255,255,255,0.75); + visibility:hidden; + transform:translateX(-20px); + -webkit-transform:translateX(-20px); + transition:transform 0.3s; + -webkit-transition:transform 0.3s; + line-height:20px; + white-space:nowrap; +} + +.ares .tp-bullet-title:after { + width: 0px; + height: 0px; + border-style: solid; + border-width: 10px 0 10px 10px; + border-color: transparent transparent transparent rgba(255,255,255,0.75); + content:" "; + position:absolute; + right:-10px; + top:0px; +} + +.ares .tp-bullet:hover .tp-bullet-title{ + visibility:visible; + transform:translateX(0px); + -webkit-transform:translateX(0px); +} + +.ares .tp-bullet.selected:hover .tp-bullet-title { + background:#fff; + } +.ares .tp-bullet.selected:hover .tp-bullet-title:after { + border-color:transparent transparent transparent #fff; +} +.ares.tp-bullets:hover .tp-bullet-title { + visibility:hidden; +} +.ares.tp-bullets:hover .tp-bullet:hover .tp-bullet-title { + visibility:visible; + } + +/* TABS */ +.ares .tp-tab { + opacity:1; + padding:10px; + box-sizing:border-box; + font-family: "Roboto", sans-serif; + border-bottom: 1px solid #e5e5e5; + } +.ares .tp-tab-image +{ + width:60px; + height:60px; max-height:100%; max-width:100%; + position:relative; + display:inline-block; + float:left; + +} +.ares .tp-tab-content +{ + background:rgba(0,0,0,0); + position:relative; + padding:15px 15px 15px 85px; + left:0px; + overflow:hidden; + margin-top:-15px; + box-sizing:border-box; + color:#333; + display: inline-block; + width:100%; + height:100%; + position:absolute; } +.ares .tp-tab-date + { + display:block; + color: #aaa; + font-weight:500; + font-size:12px; + margin-bottom:0px; + } +.ares .tp-tab-title +{ + display:block; + text-align:left; + color:#333; + font-size:14px; + font-weight:500; + text-transform:none; + line-height:17px; +} +.ares .tp-tab:hover, +.ares .tp-tab.selected { + background:#eee; +} + +.ares .tp-tab-mask { +} + +/* MEDIA QUERIES */ +@media only screen and (max-width: 960px) { + +} +@media only screen and (max-width: 768px) { + +} + +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + CUSTOM SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.custom.tparrows { + cursor:pointer; + background:#000; + background:rgba(0,0,0,0.5); + width:40px; + height:40px; + position:absolute; + display:block; + z-index:10000; +} +.custom.tparrows:hover { + background:#000; +} +.custom.tparrows:before { + font-family: "revicons"; + font-size:15px; + color:#fff; + display:block; + line-height: 40px; + text-align: center; +} +.custom.tparrows.tp-leftarrow:before { + content: "\e824"; +} +.custom.tparrows.tp-rightarrow:before { + content: "\e825"; +} + + + +/* BULLETS */ +.custom.tp-bullets { +} +.custom.tp-bullets:before { + content:" "; + position:absolute; + width:100%; + height:100%; + background:transparent; + padding:10px; + margin-left:-10px;margin-top:-10px; + box-sizing:content-box; +} +.custom .tp-bullet { + width:12px; + height:12px; + position:absolute; + background:#aaa; + background:rgba(125,125,125,0.5); + cursor: pointer; + box-sizing:content-box; +} +.custom .tp-bullet:hover, +.custom .tp-bullet.selected { + background:rgb(125,125,125); +} +.custom .tp-bullet-image { +} +.custom .tp-bullet-title { +} + + +/* THUMBS */ + + +/* TABS */ + + +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + DIONE SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.dione.tparrows { + height:100%; + width:100px; + background:transparent; + background:rgba(0,0,0,0); + line-height:100%; + transition:all 0.3s; +-webkit-transition:all 0.3s; +} + +.dione.tparrows:hover { + background:rgba(0,0,0,0.45); + } +.dione .tp-arr-imgwrapper { + width:100px; + left:0px; + position:absolute; + height:100%; + top:0px; + overflow:hidden; + } +.dione.tp-rightarrow .tp-arr-imgwrapper { +left:auto; +right:0px; +} + +.dione .tp-arr-imgholder { +background-position:center center; +background-size:cover; +width:100px; +height:100%; +top:0px; +visibility:hidden; +transform:translateX(-50px); +-webkit-transform:translateX(-50px); +transition:all 0.3s; +-webkit-transition:all 0.3s; +opacity:0; +left:0px; +} + +.dione.tparrows.tp-rightarrow .tp-arr-imgholder { + right:0px; + left:auto; + transform:translateX(50px); + -webkit-transform:translateX(50px); +} + +.dione.tparrows:before { +position:absolute; +line-height:30px; +margin-left:-22px; +top:50%; +left:50%; +font-size:30px; +margin-top:-15px; +transition:all 0.3s; +-webkit-transition:all 0.3s; +} + +.dione.tparrows.tp-rightarrow:before { +margin-left:6px; +} + +.dione.tparrows:hover:before { + transform:translateX(-20px); +-webkit-transform:translateX(-20px); +opacity:0; +} + +.dione.tparrows.tp-rightarrow:hover:before { + transform:translateX(20px); +-webkit-transform:translateX(20px); +} + +.dione.tparrows:hover .tp-arr-imgholder { + transform:translateX(0px); +-webkit-transform:translateX(0px); +opacity:1; +visibility:visible; +} + + + +/* BULLETS */ +.dione .tp-bullet { + opacity:1; + width:50px; + height:50px; + padding:3px; + background:#000; + background-color:rgba(0,0,0,0.25); + margin:0px; + box-sizing:border-box; + transition:all 0.3s; + -webkit-transition:all 0.3s; + + } + +.dione .tp-bullet-image { + display:block; + box-sizing:border-box; + position:relative; + -webkit-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + -moz-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + width:44px; + height:44px; + background-size:cover; + background-position:center center; + } +.dione .tp-bullet-title { + position:absolute; + bottom:65px; + display:inline-block; + left:50%; + background:#000; + background:rgba(0,0,0,0.75); + color:#fff; + padding:10px 30px; + border-radius:4px; + -webkit-border-radius:4px; + opacity:0; + transition:all 0.3s; + -webkit-transition:all 0.3s; + transform: translateZ(0.001px) translateX(-50%) translateY(14px); + transform-origin:50% 100%; + -webkit-transform: translateZ(0.001px) translateX(-50%) translateY(14px); + -webkit-transform-origin:50% 100%; + opacity:0; + white-space:nowrap; + } + +.dione .tp-bullet:hover .tp-bullet-title { + transform:rotateX(0deg) translateX(-50%); + -webkit-transform:rotateX(0deg) translateX(-50%); + opacity:1; +} + +.dione .tp-bullet.selected, +.dione .tp-bullet:hover { + + background: rgba(255,255,255,1); + background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(255,255,255,1)), color-stop(100%, rgba(119,119,119,1))); + background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -o-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -ms-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#ffffff", endColorstr="#777777", GradientType=0 ); + + } +.dione .tp-bullet-title:after { + content:" "; + position:absolute; + left:50%; + margin-left:-8px; + width: 0; + height: 0; + border-style: solid; + border-width: 8px 8px 0 8px; + border-color: rgba(0,0,0,0.75) transparent transparent transparent; + bottom:-8px; + } + + +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + ERINYEN SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.erinyen.tparrows { + cursor:pointer; + background:#000; + background:rgba(0,0,0,0.5); + min-width:70px; + min-height:70px; + position:absolute; + display:block; + z-index:1000; + border-radius:35px; +} + +.erinyen.tparrows:before { + font-family: "revicons"; + font-size:20px; + color:#fff; + display:block; + line-height: 70px; + text-align: center; + z-index:2; + position:relative; +} +.erinyen.tparrows.tp-leftarrow:before { + content: "\e824"; +} +.erinyen.tparrows.tp-rightarrow:before { + content: "\e825"; +} + +.erinyen .tp-title-wrap { + position:absolute; + z-index:1; + display:inline-block; + background:#000; + background:rgba(0,0,0,0.5); + min-height:70px; + line-height:70px; + top:0px; + margin-left:0px; + border-radius:35px; + overflow:hidden; + transition: opacity 0.3s; + -webkit-transition:opacity 0.3s; + -moz-transition:opacity 0.3s; + -webkit-transform: scale(0); + -moz-transform: scale(0); + transform: scale(0); + visibility:hidden; + opacity:0; +} + +.erinyen.tparrows:hover .tp-title-wrap{ + -webkit-transform: scale(1); + -moz-transform: scale(1); + transform: scale(1); + opacity:1; + visibility:visible; +} + + .erinyen.tp-rightarrow .tp-title-wrap { + right:0px; + margin-right:0px;margin-left:0px; + -webkit-transform-origin:100% 50%; + border-radius:35px; + padding-right:20px; + padding-left:10px; + } + + +.erinyen.tp-leftarrow .tp-title-wrap { + padding-left:20px; + padding-right:10px; +} + +.erinyen .tp-arr-titleholder { + letter-spacing: 3px; + position:relative; + -webkit-transition: -webkit-transform 0.3s; + transition: transform 0.3s; + transform:translateX(200px); + text-transform:uppercase; + color:#fff; + font-weight:600; + font-size:13px; + line-height:70px; + white-space:nowrap; + padding:0px 20px; + margin-left:11px; + opacity:0; +} + +.erinyen .tp-arr-imgholder { + width:100%; + height:100%; + position:absolute; + top:0px; + left:0px; + background-position:center center; + background-size:cover; + } + .erinyen .tp-arr-img-over { + width:100%; + height:100%; + position:absolute; + top:0px; + left:0px; + background:#000; + background:rgba(0,0,0,0.5); + } +.erinyen.tp-rightarrow .tp-arr-titleholder { + transform:translateX(-200px); + margin-left:0px; margin-right:11px; + } + +.erinyen.tparrows:hover .tp-arr-titleholder { + transform:translateX(0px); + -webkit-transform:translateX(0px); + transition-delay: 0.1s; + opacity:1; +} + +/* BULLETS */ +.erinyen.tp-bullets { +} +.erinyen.tp-bullets:before { + content:" "; + position:absolute; + width:100%; + height:100%; + background: #555555; /* old browsers */ + background: -moz-linear-gradient(top, #555555 0%, #222222 100%); /* ff3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#555555), color-stop(100%,#222222)); /* chrome,safari4+ */ + background: -webkit-linear-gradient(top, #555555 0%,#222222 100%); /* chrome10+,safari5.1+ */ + background: -o-linear-gradient(top, #555555 0%,#222222 100%); /* opera 11.10+ */ + background: -ms-linear-gradient(top, #555555 0%,#222222 100%); /* ie10+ */ + background: linear-gradient(to bottom, #555555 0%,#222222 100%); /* w3c */ + filter: progid:dximagetransform.microsoft.gradient( startcolorstr="#555555", endcolorstr="#222222",gradienttype=0 ); /* ie6-9 */ + padding:10px 15px; + margin-left:-15px;margin-top:-10px; + box-sizing:content-box; + border-radius:10px; + box-shadow:0px 0px 2px 1px rgba(33,33,33,0.3); +} +.erinyen .tp-bullet { + width:13px; + height:13px; + position:absolute; + background:#111; + border-radius:50%; + cursor: pointer; + box-sizing:content-box; +} +.erinyen .tp-bullet:hover, +.erinyen .tp-bullet.selected { + background: #e5e5e5; /* old browsers */ +background: -moz-linear-gradient(top, #e5e5e5 0%, #999999 100%); /* ff3.6+ */ +background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e5e5e5), color-stop(100%,#999999)); /* chrome,safari4+ */ +background: -webkit-linear-gradient(top, #e5e5e5 0%,#999999 100%); /* chrome10+,safari5.1+ */ +background: -o-linear-gradient(top, #e5e5e5 0%,#999999 100%); /* opera 11.10+ */ +background: -ms-linear-gradient(top, #e5e5e5 0%,#999999 100%); /* ie10+ */ +background: linear-gradient(to bottom, #e5e5e5 0%,#999999 100%); /* w3c */ +filter: progid:dximagetransform.microsoft.gradient( startcolorstr="#e5e5e5", endcolorstr="#999999",gradienttype=0 ); /* ie6-9 */ + border:1px solid #555; + width:12px;height:12px; +} +.erinyen .tp-bullet-image { +} +.erinyen .tp-bullet-title { +} + + +/* THUMBS */ +.erinyen .tp-thumb { +opacity:1 +} + +.erinyen .tp-thumb-over { + background:#000; + background:rgba(0,0,0,0.25); + width:100%; + height:100%; + position:absolute; + top:0px; + left:0px; + z-index:1; + -webkit-transition:all 0.3s; + transition:all 0.3s; +} + +.erinyen .tp-thumb-more:before { + font-family: "revicons"; + font-size:12px; + color:#aaa; + color:rgba(255,255,255,0.75); + display:block; + line-height: 12px; + text-align: left; + z-index:2; + position:absolute; + top:20px; + right:20px; + z-index:2; +} +.erinyen .tp-thumb-more:before { + content: "\e825"; +} + +.erinyen .tp-thumb-title { + font-family:"Raleway"; + letter-spacing:1px; + font-size:12px; + color:#fff; + display:block; + line-height: 15px; + text-align: left; + z-index:2; + position:absolute; + top:0px; + left:0px; + z-index:2; + padding:20px 35px 20px 20px; + width:100%; + height:100%; + box-sizing:border-box; + transition:all 0.3s; + -webkit-transition:all 0.3s; + font-weight:500; +} + +.erinyen .tp-thumb.selected .tp-thumb-more:before, +.erinyen .tp-thumb:hover .tp-thumb-more:before { + color:#aaa; + +} + +.erinyen .tp-thumb.selected .tp-thumb-over, +.erinyen .tp-thumb:hover .tp-thumb-over { + background:#fff; +} +.erinyen .tp-thumb.selected .tp-thumb-title, +.erinyen .tp-thumb:hover .tp-thumb-title { + color:#000; + +} + + +/* TABS */ +.erinyen .tp-tab-title { + color:#a8d8ee; + font-size:13px; + font-weight:700; + text-transform:uppercase; + font-family:"Roboto Slab" + margin-bottom:5px; +} + +.erinyen .tp-tab-desc { + font-size:18px; + font-weight:400; + color:#fff; + line-height:25px; + font-family:"Roboto Slab"; +} + + +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + GYGES SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ + + +/* BULLETS */ +.gyges.tp-bullets { +} +.gyges.tp-bullets:before { + content:" "; + position:absolute; + width:100%; + height:100%; + background: #777777; /* Old browsers */ + background: -moz-linear-gradient(top, #777777 0%, #666666 100%); + background: -webkit-gradient(linear, left top, left bottom, + color-stop(0%,#777777), color-stop(100%,#666666)); + background: -webkit-linear-gradient(top, #777777 0%,#666666 100%); + background: -o-linear-gradient(top, #777777 0%,#666666 100%); + background: -ms-linear-gradient(top, #777777 0%,#666666 100%); + background: linear-gradient(to bottom, #777777 0%,#666666 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#777777", + endColorstr="#666666",GradientType=0 ); + padding:10px; + margin-left:-10px;margin-top:-10px; + box-sizing:content-box; + border-radius:10px; +} +.gyges .tp-bullet { + width:12px; + height:12px; + position:absolute; + background:#333; + border:3px solid #444; + border-radius:50%; + cursor: pointer; + box-sizing:content-box; +} +.gyges .tp-bullet:hover, +.gyges .tp-bullet.selected { + background: #ffffff; /* Old browsers */ + background: -moz-linear-gradient(top, #ffffff 0%, #e1e1e1 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, + color-stop(0%,#ffffff), color-stop(100%,#e1e1e1)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #ffffff 0%,#e1e1e1 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #ffffff 0%,#e1e1e1 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #ffffff 0%,#e1e1e1 100%); /* IE10+ */ + background: linear-gradient(to bottom, #ffffff 0%,#e1e1e1 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#ffffff", + endColorstr="#e1e1e1",GradientType=0 ); /* IE6-9 */ + +} +.gyges .tp-bullet-image { +} +.gyges .tp-bullet-title { +} + + +/* THUMBS */ +.gyges .tp-thumb { + opacity:1 + } +.gyges .tp-thumb-img-wrap { + padding:3px; + background:#000; + background-color:rgba(0,0,0,0.25); + display:inline-block; + + width:100%; + height:100%; + position:relative; + margin:0px; + box-sizing:border-box; + transition:all 0.3s; + -webkit-transition:all 0.3s; +} +.gyges .tp-thumb-image { + padding:3px; + display:block; + box-sizing:border-box; + position:relative; + -webkit-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + -moz-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + } +.gyges .tp-thumb-title { + position:absolute; + bottom:100%; + display:inline-block; + left:50%; + background:rgba(255,255,255,0.8); + padding:10px 30px; + border-radius:4px; + -webkit-border-radius:4px; + margin-bottom:20px; + opacity:0; + transition:all 0.3s; + -webkit-transition:all 0.3s; + transform: translateZ(0.001px) translateX(-50%) translateY(14px); + transform-origin:50% 100%; + -webkit-transform: translateZ(0.001px) translateX(-50%) translateY(14px); + -webkit-transform-origin:50% 100%; + white-space:nowrap; + } +.gyges .tp-thumb:hover .tp-thumb-title { + transform:rotateX(0deg) translateX(-50%); + -webkit-transform:rotateX(0deg) translateX(-50%); + opacity:1; +} + +.gyges .tp-thumb:hover .tp-thumb-img-wrap, + .gyges .tp-thumb.selected .tp-thumb-img-wrap { + + background: rgba(255,255,255,1); + background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(255,255,255,1)), color-stop(100%, rgba(119,119,119,1))); + background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -o-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -ms-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#ffffff", endColorstr="#777777", GradientType=0 ); + } +.gyges .tp-thumb-title:after { + content:" "; + position:absolute; + left:50%; + margin-left:-8px; + width: 0; + height: 0; + border-style: solid; + border-width: 8px 8px 0 8px; + border-color: rgba(255,255,255,0.8) transparent transparent transparent; + bottom:-8px; + } + + +/* TABS */ +.gyges .tp-tab { + opacity:1; + padding:10px; + box-sizing:border-box; + font-family: "Roboto", sans-serif; + border-bottom: 1px solid rgba(255,255,255,0.15); + } +.gyges .tp-tab-image +{ + width:60px; + height:60px; max-height:100%; max-width:100%; + position:relative; + display:inline-block; + float:left; + +} +.gyges .tp-tab-content +{ + background:rgba(0,0,0,0); + position:relative; + padding:15px 15px 15px 85px; + left:0px; + overflow:hidden; + margin-top:-15px; + box-sizing:border-box; + color:#333; + display: inline-block; + width:100%; + height:100%; + position:absolute; } +.gyges .tp-tab-date + { + display:block; + color: rgba(255,255,255,0.25); + font-weight:500; + font-size:12px; + margin-bottom:0px; + } +.gyges .tp-tab-title +{ + display:block; + text-align:left; + color:#fff; + font-size:14px; + font-weight:500; + text-transform:none; + line-height:17px; +} +.gyges .tp-tab:hover, +.gyges .tp-tab.selected { + background:rgba(0,0,0,0.5); +} + +.gyges .tp-tab-mask { +} + +/* MEDIA QUERIES */ +@media only screen and (max-width: 960px) { + +} +@media only screen and (max-width: 768px) { + +} + +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + HADES SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.hades.tparrows { + cursor:pointer; + background:#000; + background:rgba(0,0,0,0.15); + width:100px; + height:100px; + position:absolute; + display:block; + z-index:1000; +} + +.hades.tparrows:before { + font-family: "revicons"; + font-size:30px; + color:#fff; + display:block; + line-height: 100px; + text-align: center; + transition: background 0.3s, color 0.3s; +} +.hades.tparrows.tp-leftarrow:before { + content: "\e824"; +} +.hades.tparrows.tp-rightarrow:before { + content: "\e825"; +} + +.hades.tparrows:hover:before { + color:#aaa; + background:#fff; + background:rgba(255,255,255,1); + } +.hades .tp-arr-allwrapper { + position:absolute; + left:100%; + top:0px; + background:#888; + width:100px;height:100px; + -webkit-transition: all 0.3s; + transition: all 0.3s; + -ms-filter: "progid:dximagetransform.microsoft.alpha(opacity=0)"; + filter: alpha(opacity=0); + -moz-opacity: 0.0; + -khtms-opacity: 0.0; + opacity: 0.0; + -webkit-transform: rotatey(-90deg); + transform: rotatey(-90deg); + -webkit-transform-origin: 0% 50%; + transform-origin: 0% 50%; +} +.hades.tp-rightarrow .tp-arr-allwrapper { + left:auto; + right:100%; + -webkit-transform-origin: 100% 50%; + transform-origin: 100% 50%; + -webkit-transform: rotatey(90deg); + transform: rotatey(90deg); +} + +.hades:hover .tp-arr-allwrapper { + -ms-filter: "progid:dximagetransform.microsoft.alpha(opacity=100)"; + filter: alpha(opacity=100); + -moz-opacity: 1; + -khtms-opacity: 1; + opacity: 1; + -webkit-transform: rotatey(0deg); + transform: rotatey(0deg); + + } + +.hades .tp-arr-iwrapper { +} +.hades .tp-arr-imgholder { + background-size:cover; + position:absolute; + top:0px;left:0px; + width:100%;height:100%; +} +.hades .tp-arr-titleholder { +} +.hades .tp-arr-subtitleholder { +} + + +/* BULLETS */ +.hades.tp-bullets { +} +.hades.tp-bullets:before { + content:" "; + position:absolute; + width:100%; + height:100%; + background:transparent; + padding:10px; + margin-left:-10px;margin-top:-10px; + box-sizing:content-box; +} +.hades .tp-bullet { + width:3px; + height:3px; + position:absolute; + background:#888; + cursor: pointer; + border:5px solid #fff; + box-sizing:content-box; + box-shadow:0px 0px 3px 1px rgba(0,0,0,0.2); + -webkit-perspective:400; + perspective:400; + -webkit-transform:translatez(0.01px); + transform:translatez(0.01px); +} +.hades .tp-bullet:hover, +.hades .tp-bullet.selected { + background:#555; + +} + +.hades .tp-bullet-image { + position:absolute;top:-80px; left:-60px;width:120px;height:60px; + background-position:center center; + background-size:cover; + visibility:hidden; + opacity:0; + transition:all 0.3s; + -webkit-transform-style:flat; + transform-style:flat; + perspective:600; + -webkit-perspective:600; + transform: rotatex(-90deg); + -webkit-transform: rotatex(-90deg); + box-shadow:0px 0px 3px 1px rgba(0,0,0,0.2); + transform-origin:50% 100%; + -webkit-transform-origin:50% 100%; + + +} +.hades .tp-bullet:hover .tp-bullet-image { + display:block; + opacity:1; + transform: rotatex(0deg); + -webkit-transform: rotatex(0deg); + visibility:visible; + } +.hades .tp-bullet-title { +} + + +/* THUMBS */ +.hades .tp-thumb { + opacity:1 + } +.hades .tp-thumb-img-wrap { + border-radius:50%; + padding:3px; + display:inline-block; +background:#000; + background-color:rgba(0,0,0,0.25); + width:100%; + height:100%; + position:relative; + margin:0px; + box-sizing:border-box; + transition:all 0.3s; + -webkit-transition:all 0.3s; +} +.hades .tp-thumb-image { + padding:3px; + border-radius:50%; + display:block; + box-sizing:border-box; + position:relative; + -webkit-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + -moz-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + } + + +.hades .tp-thumb:hover .tp-thumb-img-wrap, +.hades .tp-thumb.selected .tp-thumb-img-wrap { + + background: rgba(255,255,255,1); + background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(255,255,255,1)), color-stop(100%, rgba(119,119,119,1))); + background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -o-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -ms-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#ffffff", endColorstr="#777777", GradientType=0 ); + + } +.hades .tp-thumb-title:after { + content:" "; + position:absolute; + left:50%; + margin-left:-8px; + width: 0; + height: 0; + border-style: solid; + border-width: 8px 8px 0 8px; + border-color: rgba(0,0,0,0.75) transparent transparent transparent; + bottom:-8px; + } + + +/* TABS */ +.hades .tp-tab { + opacity:1; + } + +.hades .tp-tab-title + { + display:block; + color:#333; + font-weight:600; + font-size:18px; + text-align:center; + line-height:25px; + } +.hades .tp-tab-price + { + display:block; + text-align:center; + color:#999; + font-size:16px; + margin-top:10px; + line-height:20px +} + +.hades .tp-tab-button { + display:inline-block; + margin-top:15px; + text-align:center; + padding:5px 15px; + color:#fff; + font-size:14px; + background:#219bd7; + border-radius:4px; + font-weight:400; +} +.hades .tp-tab-inner { + text-align:center; +} + + + +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + HEBE SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.hebe.tparrows { + cursor:pointer; + background:#fff; + min-width:70px; + min-height:70px; + position:absolute; + display:block; + z-index:1000; +} +.hebe.tparrows:hover { +} +.hebe.tparrows:before { + font-family: "revicons"; + font-size:30px; + color:#aaa; + display:block; + line-height: 70px; + text-align: center; + -webkit-transition: color 0.3s; + -moz-transition: color 0.3s; + transition: color 0.3s; + z-index:2; + position:relative; + background:#fff; + min-width:70px; + min-height:70px; +} +.hebe.tparrows.tp-leftarrow:before { + content: "\e824"; +} +.hebe.tparrows.tp-rightarrow:before { + content: "\e825"; +} +.hebe.tparrows:hover:before { + color:#000; + } +.hebe .tp-title-wrap { + position:absolute; + z-index:0; + display:inline-block; + background:#000; + background:rgba(0,0,0,0.75); + min-height:60px; + line-height:60px; + top:-10px; + margin-left:0px; + -webkit-transition: -webkit-transform 0.3s; + transition: transform 0.3s; + transform:scaleX(0); + -webkit-transform:scaleX(0); + transform-origin:0% 50%; + -webkit-transform-origin:0% 50%; +} + .hebe.tp-rightarrow .tp-title-wrap { + right:0px; + -webkit-transform-origin:100% 50%; + } +.hebe.tparrows:hover .tp-title-wrap { + transform:scaleX(1); + -webkit-transform:scaleX(1); +} +.hebe .tp-arr-titleholder { + position:relative; + text-transform:uppercase; + color:#fff; + font-weight:600; + font-size:12px; + line-height:90px; + white-space:nowrap; + padding:0px 20px 0px 90px; +} + +.hebe.tp-rightarrow .tp-arr-titleholder { + margin-left:0px; + padding:0px 90px 0px 20px; + } + +.hebe.tparrows:hover .tp-arr-titleholder { + transform:translateX(0px); + -webkit-transform:translateX(0px); + transition-delay: 0.1s; + opacity:1; +} + +.hebe .tp-arr-imgholder{ + width:90px; + height:90px; + position:absolute; + left:100%; + display:block; + background-size:cover; + background-position:center center; + top:0px; right:-90px; + } +.hebe.tp-rightarrow .tp-arr-imgholder{ + right:auto;left:-90px; + } + +/* BULLETS */ +.hebe.tp-bullets { +} +.hebe.tp-bullets:before { + content:" "; + position:absolute; + width:100%; + height:100%; + background:transparent; + padding:10px; + margin-left:-10px;margin-top:-10px; + box-sizing:content-box; +} + +.hebe .tp-bullet { + width:3px; + height:3px; + position:absolute; + background:#fff; + cursor: pointer; + border:5px solid #222; + border-radius:50%; + box-sizing:content-box; + -webkit-perspective:400; + perspective:400; + -webkit-transform:translateZ(0.01px); + transform:translateZ(0.01px); + transition:all 0.3s; +} +.hebe .tp-bullet:hover, +.hebe .tp-bullet.selected { + background:#222; + border-color:#fff; +} + +.hebe .tp-bullet-image { + position:absolute; + top:-90px; left:-40px; + width:70px; + height:70px; + background-position:center center; + background-size:cover; + visibility:hidden; + opacity:0; + transition:all 0.3s; + -webkit-transform-style:flat; + transform-style:flat; + perspective:600; + -webkit-perspective:600; + transform: scale(0); + -webkit-transform: scale(0); + transform-origin:50% 100%; + -webkit-transform-origin:50% 100%; +border-radius:6px; + + +} +.hebe .tp-bullet:hover .tp-bullet-image { + display:block; + opacity:1; + transform: scale(1); + -webkit-transform: scale(1); + visibility:visible; + } +.hebe .tp-bullet-title { +} + + +/* TABS */ +.hebe .tp-tab-title { + color:#a8d8ee; + font-size:13px; + font-weight:700; + text-transform:uppercase; + font-family:"Roboto Slab" + margin-bottom:5px; +} + +.hebe .tp-tab-desc { + font-size:18px; + font-weight:400; + color:#fff; + line-height:25px; + font-family:"Roboto Slab"; +} + + +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + HEPHAISTOS SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.hephaistos.tparrows { + cursor:pointer; + background:#000; + background:rgba(0,0,0,0.5); + width:40px; + height:40px; + position:absolute; + display:block; + z-index:1000; + border-radius:50%; +} +.hephaistos.tparrows:hover { + background:#000; +} +.hephaistos.tparrows:before { + font-family: "revicons"; + font-size:18px; + color:#fff; + display:block; + line-height: 40px; + text-align: center; +} +.hephaistos.tparrows.tp-leftarrow:before { + content: "\e82c"; + margin-left:-2px; + +} +.hephaistos.tparrows.tp-rightarrow:before { + content: "\e82d"; + margin-right:-2px; +} + + + +/* BULLETS */ +.hephaistos.tp-bullets { +} +.hephaistos.tp-bullets:before { + content:" "; + position:absolute; + width:100%; + height:100%; + background:transparent; + padding:10px; + margin-left:-10px;margin-top:-10px; + box-sizing:content-box; +} +.hephaistos .tp-bullet { + width:12px; + height:12px; + position:absolute; + background:#999; + border:3px solid #f5f5f5; + border-radius:50%; + cursor: pointer; + box-sizing:content-box; + box-shadow: 0px 0px 2px 1px rgba(130,130,130, 0.3); + +} +.hephaistos .tp-bullet:hover, +.hephaistos .tp-bullet.selected { + background:#fff; + border-color:#000; +} +.hephaistos .tp-bullet-image { +} +.hephaistos .tp-bullet-title { +} + + +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + HERMES SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.hermes.tparrows { + cursor:pointer; + background:#000; + background:rgba(0,0,0,0.5); + width:30px; + height:110px; + position:absolute; + display:block; + z-index:1000; +} + +.hermes.tparrows:before { + font-family: "revicons"; + font-size:15px; + color:#fff; + display:block; + line-height: 110px; + text-align: center; + transform:translateX(0px); + -webkit-transform:translateX(0px); + transition:all 0.3s; + -webkit-transition:all 0.3s; +} +.hermes.tparrows.tp-leftarrow:before { + content: "\e824"; +} +.hermes.tparrows.tp-rightarrow:before { + content: "\e825"; +} +.hermes.tparrows.tp-leftarrow:hover:before { + transform:translateX(-20px); + -webkit-transform:translateX(-20px); + opacity:0; +} +.hermes.tparrows.tp-rightarrow:hover:before { + transform:translateX(20px); + -webkit-transform:translateX(20px); + opacity:0; +} + +.hermes .tp-arr-allwrapper { + overflow:hidden; + position:absolute; + width:180px; + height:140px; + top:0px; + left:0px; + visibility:hidden; + -webkit-transition: -webkit-transform 0.3s 0.3s; + transition: transform 0.3s 0.3s; + -webkit-perspective: 1000px; + perspective: 1000px; + } +.hermes.tp-rightarrow .tp-arr-allwrapper { + right:0px;left:auto; + } +.hermes.tparrows:hover .tp-arr-allwrapper { + visibility:visible; + } +.hermes .tp-arr-imgholder { + width:180px;position:absolute; + left:0px;top:0px;height:110px; + transform:translateX(-180px); + -webkit-transform:translateX(-180px); + transition:all 0.3s; + transition-delay:0.3s; +} +.hermes.tp-rightarrow .tp-arr-imgholder{ + transform:translateX(180px); + -webkit-transform:translateX(180px); + } + +.hermes.tparrows:hover .tp-arr-imgholder { + transform:translateX(0px); + -webkit-transform:translateX(0px); +} +.hermes .tp-arr-titleholder { + top:110px; + width:180px; + text-align:left; + display:block; + padding:0px 10px; + line-height:30px; background:#000; + background:rgba(0,0,0,0.75);color:#fff; + font-weight:600; position:absolute; + font-size:12px; + white-space:nowrap; + letter-spacing:1px; + -webkit-transition: all 0.3s; + transition: all 0.3s; + -webkit-transform: rotateX(-90deg); + transform: rotateX(-90deg); + -webkit-transform-origin: 50% 0; + transform-origin: 50% 0; + box-sizing:border-box; + +} +.hermes.tparrows:hover .tp-arr-titleholder { + -webkit-transition-delay: 0.6s; + transition-delay: 0.6s; + -webkit-transform: rotateX(0deg); + transform: rotateX(0deg); +} + + +/* BULLETS */ +.hermes.tp-bullets { +} + +.hermes .tp-bullet { + overflow:hidden; + border-radius:50%; + width:16px; + height:16px; + background-color: rgba(0, 0, 0, 0); + box-shadow: inset 0 0 0 2px #FFF; + -webkit-transition: background 0.3s ease; + transition: background 0.3s ease; + position:absolute; +} + +.hermes .tp-bullet:hover { + background-color: rgba(0, 0, 0, 0.2); +} +.hermes .tp-bullet:after { + content: ' '; + position: absolute; + bottom: 0; + height: 0; + left: 0; + width: 100%; + background-color: #FFF; + box-shadow: 0 0 1px #FFF; + -webkit-transition: height 0.3s ease; + transition: height 0.3s ease; +} +.hermes .tp-bullet.selected:after { + height:100%; +} + + +/* TABS */ +.hermes .tp-tab { + opacity:1; + padding-right:10px; + box-sizing:border-box; + } +.hermes .tp-tab-image +{ + width:100%; + height:60%; + position:relative; +} +.hermes .tp-tab-content +{ + background:rgb(54,54,54); + position:absolute; + padding:20px 20px 20px 30px; + box-sizing:border-box; + color:#fff; + display:block; + width:100%; + min-height:40%; + bottom:0px; + left:-10px; + } +.hermes .tp-tab-date + { + display:block; + color:#888; + font-weight:600; + font-size:12px; + margin-bottom:10px; + } +.hermes .tp-tab-title +{ + display:block; + color:#fff; + font-size:16px; + font-weight:800; + text-transform:uppercase; + line-height:19px; +} + +.hermes .tp-tab.selected .tp-tab-title:after { + width: 0px; + height: 0px; + border-style: solid; + border-width: 30px 0 30px 10px; + border-color: transparent transparent transparent rgb(54,54,54); + content:" "; + position:absolute; + right:-9px; + bottom:50%; + margin-bottom:-30px; +} +.hermes .tp-tab-mask { + padding-right:10px !important; + } + +/* MEDIA QUERIES */ +@media only screen and (max-width: 960px) { + .hermes .tp-tab .tp-tab-title {font-size:14px;line-height:16px;} + .hermes .tp-tab-date { font-size:11px; line-height:13px;margin-bottom:10px;} + .hermes .tp-tab-content { padding:15px 15px 15px 25px;} +} +@media only screen and (max-width: 768px) { + .hermes .tp-tab .tp-tab-title {font-size:12px;line-height:14px;} + .hermes .tp-tab-date {font-size:10px; line-height:12px;margin-bottom:5px;} + .hermes .tp-tab-content {padding:10px 10px 10px 20px;} +} + +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + HESPERIDEN SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.hesperiden.tparrows { + cursor:pointer; + background:#000; + background:rgba(0,0,0,0.5); + width:40px; + height:40px; + position:absolute; + display:block; + z-index:1000; + border-radius: 50%; +} +.hesperiden.tparrows:hover { + background:#000; +} +.hesperiden.tparrows:before { + font-family: "revicons"; + font-size:20px; + color:#fff; + display:block; + line-height: 40px; + text-align: center; +} +.hesperiden.tparrows.tp-leftarrow:before { + content: "\e82c"; + margin-left:-3px; +} +.hesperiden.tparrows.tp-rightarrow:before { + content: "\e82d"; + margin-right:-3px; +} + +/* BULLETS */ +.hesperiden.tp-bullets { +} +.hesperiden.tp-bullets:before { + content:" "; + position:absolute; + width:100%; + height:100%; + background:transparent; + padding:10px; + margin-left:-10px;margin-top:-10px; + box-sizing:content-box; + border-radius:8px; + +} +.hesperiden .tp-bullet { + width:12px; + height:12px; + position:absolute; + background: #999999; /* old browsers */ + background: -moz-linear-gradient(top, #999999 0%, #e1e1e1 100%); /* ff3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#999999), + color-stop(100%,#e1e1e1)); /* chrome,safari4+ */ + background: -webkit-linear-gradient(top, #999999 0%,#e1e1e1 100%); /* chrome10+,safari5.1+ */ + background: -o-linear-gradient(top, #999999 0%,#e1e1e1 100%); /* opera 11.10+ */ + background: -ms-linear-gradient(top, #999999 0%,#e1e1e1 100%); /* ie10+ */ + background: linear-gradient(to bottom, #999999 0%,#e1e1e1 100%); /* w3c */ + filter: progid:dximagetransform.microsoft.gradient( + startcolorstr="#999999", endcolorstr="#e1e1e1",gradienttype=0 ); /* ie6-9 */ + border:3px solid #e5e5e5; + border-radius:50%; + cursor: pointer; + box-sizing:content-box; +} +.hesperiden .tp-bullet:hover, +.hesperiden .tp-bullet.selected { + background:#666; +} +.hesperiden .tp-bullet-image { +} +.hesperiden .tp-bullet-title { +} + + +/* THUMBS */ +.hesperiden .tp-thumb { + opacity:1; + -webkit-perspective: 600px; + perspective: 600px; +} +.hesperiden .tp-thumb .tp-thumb-title { + font-size:12px; + position:absolute; + margin-top:-10px; + color:#fff; + display:block; + z-index:10000; + background-color:#000; + padding:5px 10px; + bottom:0px; + left:0px; + width:100%; + box-sizing:border-box; + text-align:center; + overflow:hidden; + white-space:nowrap; + transition:all 0.3s; + -webkit-transition:all 0.3s; + transform:rotatex(90deg) translatez(0.001px); + transform-origin:50% 100%; + -webkit-transform:rotatex(90deg) translatez(0.001px); + -webkit-transform-origin:50% 100%; + opacity:0; + } +.hesperiden .tp-thumb:hover .tp-thumb-title { + transform:rotatex(0deg); + -webkit-transform:rotatex(0deg); + opacity:1; +} + +/* TABS */ +.hesperiden .tp-tab { + opacity:1; + padding:10px; + box-sizing:border-box; + font-family: "Roboto", sans-serif; + border-bottom: 1px solid #e5e5e5; + } +.hesperiden .tp-tab-image +{ + width:60px; + height:60px; max-height:100%; max-width:100%; + position:relative; + display:inline-block; + float:left; + +} +.hesperiden .tp-tab-content +{ + background:rgba(0,0,0,0); + position:relative; + padding:15px 15px 15px 85px; + left:0px; + overflow:hidden; + margin-top:-15px; + box-sizing:border-box; + color:#333; + display: inline-block; + width:100%; + height:100%; + position:absolute; } +.hesperiden .tp-tab-date + { + display:block; + color: #aaa; + font-weight:500; + font-size:12px; + margin-bottom:0px; + } +.hesperiden .tp-tab-title +{ + display:block; + text-align:left; + color:#333; + font-size:14px; + font-weight:500; + text-transform:none; + line-height:17px; +} +.hesperiden .tp-tab:hover, +.hesperiden .tp-tab.selected { + background:#eee; +} + +.hesperiden .tp-tab-mask { +} + +/* MEDIA QUERIES */ +@media only screen and (max-width: 960px) { + +} +@media only screen and (max-width: 768px) { + +} + +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + METIS SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.metis.tparrows { + background:#fff; + padding:10px; + transition:all 0.3s; + -webkit-transition:all 0.3s; + width:60px; + height:60px; + box-sizing:border-box; + } + + .metis.tparrows:hover { + background:#fff; + background:rgba(255,255,255,0.75); + } + + .metis.tparrows:before { + color:#000; + transition:all 0.3s; + -webkit-transition:all 0.3s; + } + + .metis.tparrows:hover:before { + transform:scale(1.5); + } + + +/* BULLETS */ +.metis .tp-bullet { + opacity:1; + width:50px; + height:50px; + padding:3px; + background:#000; + background-color:rgba(0,0,0,0.25); + margin:0px; + box-sizing:border-box; + transition:all 0.3s; + -webkit-transition:all 0.3s; + border-radius:50%; + } + +.metis .tp-bullet-image { + + border-radius:50%; + display:block; + box-sizing:border-box; + position:relative; + -webkit-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + -moz-box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + box-shadow: inset 5px 5px 10px 0px rgba(0,0,0,0.25); + width:44px; + height:44px; + background-size:cover; + background-position:center center; + } +.metis .tp-bullet-title { + position:absolute; + bottom:65px; + display:inline-block; + left:50%; + background:#000; + background:rgba(0,0,0,0.75); + color:#fff; + padding:10px 30px; + border-radius:4px; + -webkit-border-radius:4px; + opacity:0; + transition:all 0.3s; + -webkit-transition:all 0.3s; + transform: translateZ(0.001px) translateX(-50%) translateY(14px); + transform-origin:50% 100%; + -webkit-transform: translateZ(0.001px) translateX(-50%) translateY(14px); + -webkit-transform-origin:50% 100%; + opacity:0; + white-space:nowrap; + } + +.metis .tp-bullet:hover .tp-bullet-title { + transform:rotateX(0deg) translateX(-50%); + -webkit-transform:rotateX(0deg) translateX(-50%); + opacity:1; +} + +.metis .tp-bullet.selected, +.metis .tp-bullet:hover { + + background: rgba(255,255,255,1); + background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -webkit-gradient(left top, left bottom, color-stop(0%, rgba(255,255,255,1)), color-stop(100%, rgba(119,119,119,1))); + background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -o-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: -ms-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + background: linear-gradient(to bottom, rgba(255,255,255,1) 0%, rgba(119,119,119,1) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#ffffff", endColorstr="#777777", GradientType=0 ); + + } +.metis .tp-bullet-title:after { + content:" "; + position:absolute; + left:50%; + margin-left:-8px; + width: 0; + height: 0; + border-style: solid; + border-width: 8px 8px 0 8px; + border-color: rgba(0,0,0,0.75) transparent transparent transparent; + bottom:-8px; + } + +.metis .tp-tab-number { + color: #fff; + font-size: 40px; + line-height: 30px; + font-weight: 400; + font-family: "Playfair Display"; + width: 50px; + margin-right: 17px; + display: inline-block; + float: left; + } + .metis .tp-tab-mask { + padding-left: 20px; + left: 0px; + max-width: 90px !important; + transition: 0.4s padding-left, 0.4s left, 0.4s max-width; + } + .metis:hover .tp-tab-mask { + padding-left: 0px; + left: 50px; + max-width: 500px !important; + } + .metis .tp-tab-divider { + border-right: 1px solid transparent; + height: 30px; + width: 1px; + margin-top: 5px; + display: inline-block; + float: left; + } + .metis .tp-tab-title { + color: #fff; + font-size: 20px; + line-height: 20px; + font-weight: 400; + font-family: "Playfair Display"; + position: relative; + padding-top: 10px; + padding-left: 30px; + display: inline-block; + transform: translateX(-100%); + transition: 0.4s all; + } + .metis .tp-tab-title-mask { + position: absolute; + overflow: hidden; + left: 67px; + } + .metis:hover .tp-tab-title { + transform: translateX(0); + } + .metis .tp-tab { + opacity: 0.15; + transition: 0.4s all; + } + .metis .tp-tab:hover, + .metis .tp-tab.selected { + opacity: 1; + } + .metis .tp-tab.selected .tp-tab-divider { + border-right: 1px solid #cdb083; + } + .metis.tp-tabs { + max-width: 118px !important; + padding-left: 50px; + } + .metis.tp-tabs:before { + content: " "; + height: 100%; + width: 88px; + background: rgba(0, 0, 0, 0.15); + border-right: 1px solid rgba(255, 255, 255, 0.10); + left: 0px; + top: 0px; + position: absolute; + transition: 0.4s all; + } + .metis.tp-tabs:hover:before { + width: 118px; + } + @media (max-width: 499px) { + .metis.tp-tabs:before { + background: rgba(0, 0, 0, 0.75); + } + } + +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + PERSEPHONE SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.persephone.tparrows { + cursor:pointer; + background:#aaa; + background:rgba(200,200,200,0.5); + width:40px; + height:40px; + position:absolute; + display:block; + z-index:100; + border:1px solid #f5f5f5; +} +.persephone.tparrows:hover { + background:#333; +} +.persephone.tparrows:before { + font-family: "revicons"; + font-size:15px; + color:#fff; + display:block; + line-height: 40px; + text-align: center; +} +.persephone.tparrows.tp-leftarrow:before { + content: "\e824"; +} +.persephone.tparrows.tp-rightarrow:before { + content: "\e825"; +} + + + +/* BULLETS */ +.persephone.tp-bullets { +} +.persephone.tp-bullets:before { + content:" "; + position:absolute; + width:100%; + height:100%; + background:#transparent; + padding:10px; + margin-left:-10px;margin-top:-10px; + box-sizing:content-box; +} +.persephone .tp-bullet { + width:12px; + height:12px; + position:absolute; + background:#aaa; + border:1px solid #e5e5e5; + cursor: pointer; + box-sizing:content-box; +} +.persephone .tp-bullet:hover, +.persephone .tp-bullet.selected { + background:#222; +} +.persephone .tp-bullet-image { +} +.persephone .tp-bullet-title { +} + + +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + URANUS SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.uranus.tparrows { + width:50px; + height:50px; + background:transparent; + } + .uranus.tparrows:before { + width:50px; + height:50px; + line-height:50px; + font-size:40px; + transition:all 0.3s; +-webkit-transition:all 0.3s; + } + + .uranus.tparrows:hover:before { + opacity:0.75; + } + +/* BULLETS */ +.uranus .tp-bullet{ + border-radius: 50%; + box-shadow: 0 0 0 2px rgba(255, 255, 255, 0); + -webkit-transition: box-shadow 0.3s ease; + transition: box-shadow 0.3s ease; + background:transparent; +} +.uranus .tp-bullet.selected, +.uranus .tp-bullet:hover { + box-shadow: 0 0 0 2px #FFF; + border:none; + border-radius: 50%; + + background:transparent; +} + + + +.uranus .tp-bullet-inner { + background-color: rgba(255, 255, 255, 0.7); + -webkit-transition: background-color 0.3s ease, -webkit-transform 0.3s ease; + transition: background-color 0.3s ease, transform 0.3s ease; + top: 0; + left: 0; + width: 100%; + height: 100%; + outline: none; + border-radius: 50%; + background-color: #FFF; + background-color: rgba(255, 255, 255, 0.3); + text-indent: -999em; + cursor: pointer; + position: absolute; +} + +.uranus .tp-bullet.selected .tp-bullet-inner, +.uranus .tp-bullet:hover .tp-bullet-inner{ + transform: scale(0.4); + -webkit-transform: scale(0.4); + background-color:#fff; +} + +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + ZEUS SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +/* ARROWS */ +.zeus.tparrows { + cursor:pointer; + min-width:70px; + min-height:70px; + position:absolute; + display:block; + z-index:100; + border-radius:35px; + overflow:hidden; + background:rgba(0,0,0,0.10); +} + +.zeus.tparrows:before { + font-family: "revicons"; + font-size:20px; + color:#fff; + display:block; + line-height: 70px; + text-align: center; + z-index:2; + position:relative; +} +.zeus.tparrows.tp-leftarrow:before { + content: "\e824"; +} +.zeus.tparrows.tp-rightarrow:before { + content: "\e825"; +} + +.zeus .tp-title-wrap { + background:#000; + background:rgba(0,0,0,0.5); + width:100%; + height:100%; + top:0px; + left:0px; + position:absolute; + opacity:0; + transform:scale(0); + -webkit-transform:scale(0); + transition: all 0.3s; + -webkit-transition:all 0.3s; + -moz-transition:all 0.3s; + border-radius:50%; + } +.zeus .tp-arr-imgholder { + width:100%; + height:100%; + position:absolute; + top:0px; + left:0px; + background-position:center center; + background-size:cover; + border-radius:50%; + transform:translateX(-100%); + -webkit-transform:translateX(-100%); + transition: all 0.3s; + -webkit-transition:all 0.3s; + -moz-transition:all 0.3s; + + } +.zeus.tp-rightarrow .tp-arr-imgholder { + transform:translateX(100%); + -webkit-transform:translateX(100%); + } +.zeus.tparrows:hover .tp-arr-imgholder { + transform:translateX(0); + -webkit-transform:translateX(0); + opacity:1; +} + +.zeus.tparrows:hover .tp-title-wrap { + transform:scale(1); + -webkit-transform:scale(1); + opacity:1; +} + + +/* BULLETS */ +.zeus .tp-bullet { + box-sizing:content-box; -webkit-box-sizing:content-box; border-radius:50%; + background-color: rgba(0, 0, 0, 0); + -webkit-transition: opacity 0.3s ease; + transition: opacity 0.3s ease; + width:13px;height:13px; + border:2px solid #fff; + } +.zeus .tp-bullet:after { + content: ""; + position: absolute; + width: 100%; + height: 100%; + left: 0; + border-radius: 50%; + background-color: #FFF; + -webkit-transform: scale(0); + transform: scale(0); + -webkit-transform-origin: 50% 50%; + transform-origin: 50% 50%; + -webkit-transition: -webkit-transform 0.3s ease; + transition: transform 0.3s ease; +} +.zeus .tp-bullet:hover:after, +.zeus .tp-bullet.selected:after{ + -webkit-transform: scale(1.2); + transform: scale(1.2); +} + + .zeus .tp-bullet-image, + .zeus .tp-bullet-imageoverlay{ + width:135px; + height:60px; + position:absolute; + background:#000; + background:rgba(0,0,0,0.5); + bottom:25px; + left:50%; + margin-left:-65px; + box-sizing:border-box; + background-size:cover; + background-position:center center; + visibility:hidden; + opacity:0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform-origin: 50% 50%; + transform-origin: 50% 50%; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + border-radius:4px; + +} + + +.zeus .tp-bullet-title, +.zeus .tp-bullet-imageoverlay { + z-index:2; + -webkit-transition: all 0.5s ease; + transition: all 0.5s ease; +} +.zeus .tp-bullet-title { + color:#fff; + text-align:center; + line-height:15px; + font-size:13px; + font-weight:600; + z-index:3; + visibility:hidden; + opacity:0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform-origin: 50% 50%; + transform-origin: 50% 50%; + -webkit-transition: all 0.3s ease; + transition: all 0.3s ease; + position:absolute; + bottom:45px; + width:135px; + vertical-align:middle; + left:-57px; +} + +.zeus .tp-bullet:hover .tp-bullet-title, +.zeus .tp-bullet:hover .tp-bullet-image, +.zeus .tp-bullet:hover .tp-bullet-imageoverlay{ + opacity:1; + visibility:visible; + -webkit-transform:translateY(0px); + transform:translateY(0px); + } + +/* THUMBS */ +.zeus .tp-thumb { +opacity:1 +} + +.zeus .tp-thumb-over { + background:#000; + background:rgba(0,0,0,0.25); + width:100%; + height:100%; + position:absolute; + top:0px; + left:0px; + z-index:1; + -webkit-transition:all 0.3s; + transition:all 0.3s; +} + +.zeus .tp-thumb-more:before { + font-family: "revicons"; + font-size:12px; + color:#aaa; + color:rgba(255,255,255,0.75); + display:block; + line-height: 12px; + text-align: left; + z-index:2; + position:absolute; + top:20px; + right:20px; + z-index:2; +} +.zeus .tp-thumb-more:before { + content: "\e825"; +} + +.zeus .tp-thumb-title { + font-family:"Raleway"; + letter-spacing:1px; + font-size:12px; + color:#fff; + display:block; + line-height: 15px; + text-align: left; + z-index:2; + position:absolute; + top:0px; + left:0px; + z-index:2; + padding:20px 35px 20px 20px; + width:100%; + height:100%; + box-sizing:border-box; + transition:all 0.3s; + -webkit-transition:all 0.3s; + font-weight:500; +} + +.zeus .tp-thumb.selected .tp-thumb-more:before, +.zeus .tp-thumb:hover .tp-thumb-more:before { + color:#aaa; + +} + +.zeus .tp-thumb.selected .tp-thumb-over, +.zeus .tp-thumb:hover .tp-thumb-over { + background:#000; +} +.zeus .tp-thumb.selected .tp-thumb-title, +.zeus .tp-thumb:hover .tp-thumb-title { + color:#fff; + +} + + +/* TABS */ +.zeus .tp-tab { + opacity:1; + box-sizing:border-box; +} + +.zeus .tp-tab-title { +display: block; +text-align: center; +background: rgba(0,0,0,0.25); +font-family: "Roboto Slab", serif; +font-weight: 700; +font-size: 13px; +line-height: 13px; +color: #fff; +padding: 9px 10px; } + +.zeus .tp-tab:hover .tp-tab-title, +.zeus .tp-tab.selected .tp-tab-title { + color: #000; + background:rgba(255,255,255,1); +} + + + +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Navigatin Skin Style - + + ZEUS SKIN + +author: ThemePunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ + + +.post-tabs .tp-thumb { +opacity:1 +} + +.post-tabs .tp-thumb-over { + background:#252525; + width:100%; + height:100%; + position:absolute; + top:0px; + left:0px; + z-index:1; + -webkit-transition:all 0.3s; + transition:all 0.3s; +} + +.post-tabs .tp-thumb-more:before { + font-family: "revicons"; + font-size:12px; + color:#aaa; + color:rgba(255,255,255,0.75); + display:block; + line-height: 12px; + text-align: left; + z-index:2; + position:absolute; + top:15px; + right:15px; + z-index:2; +} +.post-tabs .tp-thumb-more:before { + content: "\e825"; +} + +.post-tabs .tp-thumb-title { + font-family:"raleway"; + letter-spacing:1px; + font-size:12px; + color:#fff; + display:block; + line-height: 15px; + text-align: left; + z-index:2; + position:absolute; + top:0px; + left:0px; + z-index:2; + padding:15px 30px 15px 15px; + width:100%; + height:100%; + box-sizing:border-box; + transition:all 0.3s; + -webkit-transition:all 0.3s; + font-weight:500; +} + +.post-tabs .tp-thumb.selected .tp-thumb-more:before, +.post-tabs .tp-thumb:hover .tp-thumb-more:before { + color:#aaa; + +} + +.post-tabs .tp-thumb.selected .tp-thumb-over, +.post-tabs .tp-thumb:hover .tp-thumb-over { + background:#fff; +} +.post-tabs .tp-thumb.selected .tp-thumb-title, +.post-tabs .tp-thumb:hover .tp-thumb-title { + color:#000; + +} diff --git a/think.greaterchiangmai.com/public/revolution/css/openhand.cur b/think.greaterchiangmai.com/public/revolution/css/openhand.cur new file mode 100644 index 0000000..fba3ddc Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/css/openhand.cur differ diff --git a/think.greaterchiangmai.com/public/revolution/css/settings-source.css b/think.greaterchiangmai.com/public/revolution/css/settings-source.css new file mode 100644 index 0000000..0480cad --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/css/settings-source.css @@ -0,0 +1,1312 @@ +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Default Style Settings - + +Screen Stylesheet + +version: 5.4.5 +date: 15/05/17 +author: themepunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ + +#debungcontrolls { + z-index:100000; + position:fixed; + bottom:0px; width:100%; + height:auto; + background:rgba(0,0,0,0.6); + padding:10px; + box-sizing: border-box; +} + +.debugtimeline { + width:100%; + height:10px; + position:relative; + display:block; + margin-bottom:3px; + display:none; + white-space: nowrap; + box-sizing: border-box; +} + +.debugtimeline:hover { + height:15px; + +} + +.the_timeline_tester { + background:#e74c3c; + position:absolute; + top:0px; + left:0px; + height:100%; + width:0; +} + +.rs-go-fullscreen { + position:fixed !important; + width:100% !important; + height:100% !important; + top:0px !important; + left:0px !important; + z-index:9999999 !important; + background:#ffffff !important; +} + + +.debugtimeline.tl_slide .the_timeline_tester { + background:#f39c12; +} + +.debugtimeline.tl_frame .the_timeline_tester { + background:#3498db; +} + +.debugtimline_txt { + color:#fff; + font-weight: 400; + font-size:7px; + position:absolute; + left:10px; + top:0px; + white-space: nowrap; + line-height: 10px; +} + + +.rtl { direction: rtl;} +@font-face { + font-family: 'revicons'; + src: url('../fonts/revicons/revicons.eot?5510888'); + src: url('../fonts/revicons/revicons.eot?5510888#iefix') format('embedded-opentype'), + url('../fonts/revicons/revicons.woff?5510888') format('woff'), + url('../fonts/revicons/revicons.ttf?5510888') format('truetype'), + url('../fonts/revicons/revicons.svg?5510888#revicons') format('svg'); + font-weight: normal; + font-style: normal; +} + + [class^="revicon-"]:before, [class*=" revicon-"]:before { + font-family: "revicons"; + font-style: normal; + font-weight: normal; + speak: none; + display: inline-block; + text-decoration: inherit; + width: 1em; + margin-right: .2em; + text-align: center; + + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + + /* fix buttons height, for twitter bootstrap */ + line-height: 1em; + + /* Animation center compensation - margins should be symmetric */ + /* remove if not needed */ + margin-left: .2em; + + /* you can be more comfortable with increased icons size */ + /* font-size: 120%; */ + + /* Uncomment for 3D effect */ + /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ +} + +.revicon-search-1:before { content: '\e802'; } /* '' */ +.revicon-pencil-1:before { content: '\e831'; } /* '' */ +.revicon-picture-1:before { content: '\e803'; } /* '' */ +.revicon-cancel:before { content: '\e80a'; } /* '' */ +.revicon-info-circled:before { content: '\e80f'; } /* '' */ +.revicon-trash:before { content: '\e801'; } /* '' */ +.revicon-left-dir:before { content: '\e817'; } /* '' */ +.revicon-right-dir:before { content: '\e818'; } /* '' */ +.revicon-down-open:before { content: '\e83b'; } /* '' */ +.revicon-left-open:before { content: '\e819'; } /* '' */ +.revicon-right-open:before { content: '\e81a'; } /* '' */ +.revicon-angle-left:before { content: '\e820'; } /* '' */ +.revicon-angle-right:before { content: '\e81d'; } /* '' */ +.revicon-left-big:before { content: '\e81f'; } /* '' */ +.revicon-right-big:before { content: '\e81e'; } /* '' */ +.revicon-magic:before { content: '\e807'; } /* '' */ +.revicon-picture:before { content: '\e800'; } /* '' */ +.revicon-export:before { content: '\e80b'; } /* '' */ +.revicon-cog:before { content: '\e832'; } /* '' */ +.revicon-login:before { content: '\e833'; } /* '' */ +.revicon-logout:before { content: '\e834'; } /* '' */ +.revicon-video:before { content: '\e805'; } /* '' */ +.revicon-arrow-combo:before { content: '\e827'; } /* '' */ +.revicon-left-open-1:before { content: '\e82a'; } /* '' */ +.revicon-right-open-1:before { content: '\e82b'; } /* '' */ +.revicon-left-open-mini:before { content: '\e822'; } /* '' */ +.revicon-right-open-mini:before { content: '\e823'; } /* '' */ +.revicon-left-open-big:before { content: '\e824'; } /* '' */ +.revicon-right-open-big:before { content: '\e825'; } /* '' */ +.revicon-left:before { content: '\e836'; } /* '' */ +.revicon-right:before { content: '\e826'; } /* '' */ +.revicon-ccw:before { content: '\e808'; } /* '' */ +.revicon-arrows-ccw:before { content: '\e806'; } /* '' */ +.revicon-palette:before { content: '\e829'; } /* '' */ +.revicon-list-add:before { content: '\e80c'; } /* '' */ +.revicon-doc:before { content: '\e809'; } /* '' */ +.revicon-left-open-outline:before { content: '\e82e'; } /* '' */ +.revicon-left-open-2:before { content: '\e82c'; } /* '' */ +.revicon-right-open-outline:before { content: '\e82f'; } /* '' */ +.revicon-right-open-2:before { content: '\e82d'; } /* '' */ +.revicon-equalizer:before { content: '\e83a'; } /* '' */ +.revicon-layers-alt:before { content: '\e804'; } /* '' */ +.revicon-popup:before { content: '\e828'; } /* '' */ + + + +/****************************** + - BASIC STYLES - +******************************/ + +.rev_slider_wrapper{ + position:relative; + z-index: 0; + width:100%; +} + +.rev_slider{ + position:relative; + overflow:visible; +} + +.entry-content .rev_slider a, +.rev_slider a { box-shadow: none; } + +.tp-overflow-hidden { overflow:hidden !important;} +.group_ov_hidden { overflow:hidden} + +.tp-simpleresponsive img, +.rev_slider img{ + max-width:none !important; + transition: none; + margin:0px; + padding:0px; + border:none; +} + +.rev_slider .no-slides-text{ + font-weight:bold; + text-align:center; + padding-top:80px; +} + +.rev_slider >ul, +.rev_slider_wrapper >ul, +.tp-revslider-mainul >li, +.rev_slider >ul >li, +.rev_slider >ul >li:before, +.tp-revslider-mainul >li:before, +.tp-simpleresponsive >ul, +.tp-simpleresponsive >ul >li, +.tp-simpleresponsive >ul >li:before, +.tp-revslider-mainul >li, +.tp-simpleresponsive >ul >li{ + list-style:none !important; + position:absolute; + margin:0px !important; + padding:0px !important; + overflow-x: visible; + overflow-y: visible; + list-style-type: none !important; + background-image:none; + background-position:0px 0px; + text-indent: 0em; + top:0px;left:0px; +} + + +.tp-revslider-mainul >li, +.rev_slider >ul >li, +.rev_slider >ul >li:before, +.tp-revslider-mainul >li:before, +.tp-simpleresponsive >ul >li, +.tp-simpleresponsive >ul >li:before, +.tp-revslider-mainul >li, +.tp-simpleresponsive >ul >li { + visibility:hidden; +} + +.tp-revslider-slidesli, +.tp-revslider-mainul { + padding:0 !important; + margin:0 !important; + list-style:none !important; +} + +.rev_slider li.tp-revslider-slidesli { + position: absolute !important; +} + + +.tp-caption .rs-untoggled-content { display:block;} +.tp-caption .rs-toggled-content { display:none;} + +.rs-toggle-content-active.tp-caption .rs-toggled-content { display:block;} +.rs-toggle-content-active.tp-caption .rs-untoggled-content { display:none;} + +.rev_slider .tp-caption, +.rev_slider .caption { + position:relative; + visibility:hidden; + white-space: nowrap; + display: block; + -webkit-font-smoothing: antialiased !important; + z-index:1; +} + +.rev_slider .tp-caption, +.rev_slider .caption, +.tp-simpleresponsive img { + -moz-user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + -o-user-select: none; +} + +.rev_slider .tp-mask-wrap .tp-caption, +.rev_slider .tp-mask-wrap *:last-child, +.wpb_text_column .rev_slider .tp-mask-wrap .tp-caption, +.wpb_text_column .rev_slider .tp-mask-wrap *:last-child{ + margin-bottom:0; + +} + +.tp-svg-layer svg { width:100%; height:100%;position: relative;vertical-align: top} + + +/* CAROUSEL FUNCTIONS */ +.tp-carousel-wrapper { + cursor:url(openhand.cur), move; +} +.tp-carousel-wrapper.dragged { + cursor:url(closedhand.cur), move; +} + +/* ADDED FOR SLIDELINK MANAGEMENT */ +.tp_inner_padding { + box-sizing:border-box; + max-height:none !important; +} + + +.tp-caption.tp-layer-selectable { + -moz-user-select: all; + -khtml-user-select: all; + -webkit-user-select: all; + -o-user-select: all; +} + +.tp-forcenotvisible, +.tp-hide-revslider, +.tp-caption.tp-hidden-caption, +.tp-parallax-wrap.tp-hidden-caption { + visibility:hidden !important; + display:none !important +} + +.rev_slider embed, +.rev_slider iframe, +.rev_slider object, +.rev_slider audio, +.rev_slider video { + max-width: none !important +} + +.tp-element-background { position:absolute; top:0px;left:0px; width:100%;height:100%;z-index:0;} + +.tp-blockmask, +.tp-blockmask_in, +.tp-blockmask_out { position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; background: #fff; z-index: 1000; transform: scaleX(0) scaleY(0);} + +.tp-parallax-wrap { transform-style: preserve-3d } + +/*********************************************************** + - ZONES / GOUP / ROW / COLUMN LAYERS AND HELPERS - +***********************************************************/ +.rev_row_zone { position:absolute; width:100%;left:0px; box-sizing: border-box;min-height:50px; font-size:0px;} + +.rev_row_zone_top { top:0px;} +.rev_row_zone_middle { top:50%; transform:translateY(-50%);} +.rev_row_zone_bottom { bottom:0px;} + +.rev_column .tp-parallax-wrap { vertical-align: top } + +.rev_slider .tp-caption.rev_row { + display:table; + position:relative; + width:100% !important; + table-layout: fixed; + box-sizing: border-box; + vertical-align: top; + height:auto !important; + font-size:0px; +} + +.rev_column { + display: table-cell; + position: relative; + vertical-align: top; + height: auto; + box-sizing: border-box; + font-size:0px; +} + +.rev_column_inner { + box-sizing: border-box; + display: block; + position: relative; + width:100% !important; + height:auto !important; + white-space: normal !important; +} + +.rev_column_bg { + width: 100%; + height: 100%; + position: absolute; + top: 0px; + left: 0px; + z-index: 0; + box-sizing: border-box; + background-clip: content-box; + border: 0px solid transparent; +} + + + +.rev_column_inner .tp-parallax-wrap, +.rev_column_inner .tp-loop-wrap, +.rev_column_inner .tp-mask-wrap { text-align: inherit; } +.rev_column_inner .tp-mask-wrap { display: inline-block;} + + +.rev_column_inner .tp-parallax-wrap .tp-loop-wrap, +.rev_column_inner .tp-parallax-wrap .tp-mask-wrap, +.rev_column_inner .tp-parallax-wrap { position: relative !important; left:auto !important; top:auto !important; line-height: 0px;} + +.rev_column_inner .tp-parallax-wrap .tp-loop-wrap, +.rev_column_inner .tp-parallax-wrap .tp-mask-wrap, +.rev_column_inner .tp-parallax-wrap, +.rev_column_inner .rev_layer_in_column { vertical-align: top; } + +.rev_break_columns { display: block !important } +.rev_break_columns .tp-parallax-wrap.rev_column { display:block !important; width:100% !important; } + + +/********************************************** + - FULLSCREEN AND FULLWIDHT CONTAINERS - +**********************************************/ + + +.fullscreen-container { + position:relative; + padding:0; +} + + +.fullwidthbanner-container{ + position:relative; + padding:0; + overflow:hidden; +} + +.fullwidthbanner-container .fullwidthabanner{ + width:100%; + position:relative; +} + + + +/********************************* + - SPECIAL TP CAPTIONS - +**********************************/ + +.tp-static-layers { + position:absolute; z-index:101; top:0px;left:0px; + /*pointer-events:none;*/ + +} + + +.tp-caption .frontcorner { + width: 0; + height: 0; + border-left: 40px solid transparent; + border-right: 0px solid transparent; + border-top: 40px solid #00A8FF; + position: absolute;left:-40px;top:0px; +} + +.tp-caption .backcorner { + width: 0; + height: 0; + border-left: 0px solid transparent; + border-right: 40px solid transparent; + border-bottom: 40px solid #00A8FF; + position: absolute;right:0px;top:0px; +} + +.tp-caption .frontcornertop { + width: 0; + height: 0; + border-left: 40px solid transparent; + border-right: 0px solid transparent; + border-bottom: 40px solid #00A8FF; + position: absolute;left:-40px;top:0px; +} + +.tp-caption .backcornertop { + width: 0; + height: 0; + border-left: 0px solid transparent; + border-right: 40px solid transparent; + border-top: 40px solid #00A8FF; + position: absolute;right:0px;top:0px; +} + +.tp-layer-inner-rotation { + position: relative !important; +} + + +/*********************************************** + - SPECIAL ALTERNATIVE IMAGE SETTINGS - +***********************************************/ + +img.tp-slider-alternative-image { + width:100%; height:auto; +} + + +/****************************** + - IE8 HACKS - +*******************************/ +.noFilterClass { + filter:none !important; +} + + +/******************************** + - FULLSCREEN VIDEO - +*********************************/ + +.rs-background-video-layer { position: absolute;top:0px;left:0px; width:100%;height:100%;visibility: hidden;z-index: 0;} + +.tp-caption.coverscreenvideo { width:100%;height:100%;top:0px;left:0px;position:absolute;} +.caption.fullscreenvideo, +.tp-caption.fullscreenvideo { left:0px; top:0px; position:absolute;width:100%;height:100%} + +.caption.fullscreenvideo iframe, +.caption.fullscreenvideo audio, +.caption.fullscreenvideo video, +.tp-caption.fullscreenvideo iframe, +.tp-caption.fullscreenvideo iframe audio, +.tp-caption.fullscreenvideo iframe video { width:100% !important; height:100% !important; display: none} + +.fullcoveredvideo audio, +.fullscreenvideo audio +.fullcoveredvideo video, +.fullscreenvideo video { background: #000} + +.fullcoveredvideo .tp-poster { background-position: center center;background-size: cover;width:100%;height:100%;top:0px;left:0px} + + +.videoisplaying .html5vid .tp-poster { display: none} + +.tp-video-play-button { + background:#000; + background:rgba(0,0,0,0.3); + border-radius:5px; + position: absolute; + top: 50%; + left: 50%; + color: #FFF; + z-index: 3; + margin-top: -25px; + margin-left: -25px; + line-height: 50px !important; + text-align: center; + cursor: pointer; + width: 50px; + height:50px; + box-sizing: border-box; + + display: inline-block; + vertical-align: top; + z-index: 4; + opacity: 0; + transition:opacity 300ms ease-out !important; +} + +.tp-hiddenaudio, +.tp-audio-html5 .tp-video-play-button { display:none !important;} +.tp-caption .html5vid { width:100% !important; height:100% !important;} +.tp-video-play-button i { width:50px;height:50px; display:inline-block; text-align: center; vertical-align: top; line-height: 50px !important; font-size: 40px !important;} +.tp-caption:hover .tp-video-play-button { opacity: 1; display:block;} +.tp-caption .tp-revstop { display:none; border-left:5px solid #fff !important; border-right:5px solid #fff !important;margin-top:15px !important;line-height: 20px !important;vertical-align: top; font-size:25px !important;} +.videoisplaying .revicon-right-dir { display:none} +.videoisplaying .tp-revstop { display:inline-block} + +.videoisplaying .tp-video-play-button { display:none} + + +.fullcoveredvideo .tp-video-play-button { display:none !important} + + +.fullscreenvideo .fullscreenvideo audio { object-fit:contain !important;} +.fullscreenvideo .fullscreenvideo video { object-fit:contain !important;} + +.fullscreenvideo .fullcoveredvideo audio { object-fit:cover !important;} +.fullscreenvideo .fullcoveredvideo video { object-fit:cover !important;} + +.tp-video-controls { + position: absolute; + bottom: 0; + left: 0; + right: 0; + padding: 5px; + opacity: 0; + transition: opacity .3s; + background-image: linear-gradient(to bottom, rgb(0,0,0) 13%, rgb(50,50,50) 100%); + display:table;max-width:100%; overflow:hidden;box-sizing:border-box; +} + +.tp-caption:hover .tp-video-controls { opacity: .9;} + +.tp-video-button { + background: rgba(0,0,0,.5); + border: 0; + color: #EEE; + border-radius: 3px; + cursor:pointer; + line-height:12px; + font-size:12px; + color:#fff; + padding:0px; + margin:0px; + outline: none; + } +.tp-video-button:hover { cursor: pointer;} + + +.tp-video-button-wrap, +.tp-video-seek-bar-wrap, +.tp-video-vol-bar-wrap { padding:0px 5px;display:table-cell; vertical-align: middle;} + +.tp-video-seek-bar-wrap { width:80%} +.tp-video-vol-bar-wrap { width:20%} + +.tp-volume-bar, +.tp-seek-bar { width:100%; cursor: pointer; outline:none; line-height:12px;margin:0; padding:0;} + + +.rs-fullvideo-cover { width:100%;height:100%;top:0px;left:0px;position: absolute; background:transparent;z-index:5;} + + +.disabled_lc .tp-video-play-button, +.rs-background-video-layer video::-webkit-media-controls-start-playback-button, +.rs-background-video-layer video::-webkit-media-controls, +.rs-background-video-layer audio::-webkit-media-controls { display:none !important;} + + +.tp-audio-html5 .tp-video-controls { opacity: 1 !important; visibility: visible !important} + + + + +/******************************** + - DOTTED OVERLAYS - +*********************************/ +.tp-dottedoverlay { background-repeat:repeat;width:100%;height:100%;position:absolute;top:0px;left:0px;z-index:3} +.tp-dottedoverlay.twoxtwo { background:url(../assets/gridtile.png)} +.tp-dottedoverlay.twoxtwowhite { background:url(../assets/gridtile_white.png)} +.tp-dottedoverlay.threexthree { background:url(../assets/gridtile_3x3.png)} +.tp-dottedoverlay.threexthreewhite { background:url(../assets/gridtile_3x3_white.png)} + + +/****************************** + - SHADOWS - +******************************/ + +.tp-shadowcover { width:100%;height:100%;top:0px;left:0px;background: #fff;position: absolute; z-index: -1;} +.tp-shadow1 { box-shadow: 0 10px 6px -6px rgba(0,0,0,0.8);} + +.tp-shadow2:before, .tp-shadow2:after, +.tp-shadow3:before, .tp-shadow4:after +{ + z-index: -2; + position: absolute; + content: ""; + bottom: 10px; + left: 10px; + width: 50%; + top: 85%; + max-width:300px; + background: transparent; + box-shadow: 0 15px 10px rgba(0,0,0,0.8); + + transform: rotate(-3deg); +} + +.tp-shadow2:after, +.tp-shadow4:after +{ + transform: rotate(3deg); + right: 10px; + left: auto; +} + +.tp-shadow5 +{ + position:relative; + box-shadow:0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset; +} +.tp-shadow5:before, .tp-shadow5:after +{ + content:""; + position:absolute; + z-index:-2; + box-shadow:0 0 25px 0px rgba(0,0,0,0.6); + top:30%; + bottom:0; + left:20px; + right:20px; + border-radius:100px / 20px; +} + +/****************************** + - BUTTONS - +*******************************/ + +.tp-button{ + padding:6px 13px 5px; + border-radius: 3px; + height:30px; + cursor:pointer; + color:#fff !important; text-shadow:0px 1px 1px rgba(0, 0, 0, 0.6) !important; font-size:15px; line-height:45px !important; + font-family: arial, sans-serif; font-weight: bold; letter-spacing: -1px; + text-decoration:none; +} + +.tp-button.big { color:#fff; text-shadow:0px 1px 1px rgba(0, 0, 0, 0.6); font-weight:bold; padding:9px 20px; font-size:19px; line-height:57px !important; } + + +.purchase:hover, +.tp-button:hover, +.tp-button.big:hover { background-position:bottom, 15px 11px} + + +/* BUTTON COLORS */ + +.tp-button.green, .tp-button:hover.green, +.purchase.green, .purchase:hover.green { background-color:#21a117;box-shadow:0px 3px 0px 0px #104d0b;} + +.tp-button.blue, .tp-button:hover.blue, +.purchase.blue, .purchase:hover.blue { background-color:#1d78cb;box-shadow:0px 3px 0px 0px #0f3e68} + +.tp-button.red, .tp-button:hover.red, +.purchase.red, .purchase:hover.red { background-color:#cb1d1d;box-shadow:0px 3px 0px 0px #7c1212} + +.tp-button.orange, .tp-button:hover.orange, +.purchase.orange, .purchase:hover.orange { background-color:#ff7700;box-shadow:0px 3px 0px 0px #a34c00} + +.tp-button.darkgrey,.tp-button.grey, +.tp-button:hover.darkgrey,.tp-button:hover.grey, +.purchase.darkgrey, .purchase:hover.darkgrey { background-color:#555;box-shadow:0px 3px 0px 0px #222} + +.tp-button.lightgrey, .tp-button:hover.lightgrey, +.purchase.lightgrey, .purchase:hover.lightgrey { background-color:#888;box-shadow:0px 3px 0px 0px #555} + + + +/* TP BUTTONS DESKTOP SIZE */ + +.rev-btn, +.rev-btn:visited { outline:none !important; box-shadow:none !important; text-decoration: none !important; line-height: 44px; font-size: 17px; font-weight: 500; padding: 12px 35px; box-sizing:border-box; font-family: "Roboto", sans-serif; cursor: pointer;} + +.rev-btn.rev-uppercase, +.rev-btn.rev-uppercase:visited { text-transform: uppercase; letter-spacing: 1px; font-size: 15px; font-weight: 900; } + +.rev-btn.rev-withicon i { font-size: 15px; font-weight: normal; position: relative; top: 0px; transition: all 0.2s ease-out !important; margin-left:10px !important;} + +.rev-btn.rev-hiddenicon i { font-size: 15px; font-weight: normal; position: relative; top: 0px; transition: all 0.2s ease-out !important; opacity: 0; margin-left:0px !important; width:0px !important; } +.rev-btn.rev-hiddenicon:hover i { opacity: 1 !important; margin-left:10px !important; width:auto !important;} + +/* REV BUTTONS MEDIUM */ +.rev-btn.rev-medium, +.rev-btn.rev-medium:visited { line-height: 36px; font-size: 14px; padding: 10px 30px; } + +.rev-btn.rev-medium.rev-withicon i { font-size: 14px; top: 0px; } + +.rev-btn.rev-medium.rev-hiddenicon i { font-size: 14px; top: 0px; } + + +/* REV BUTTONS SMALL */ +.rev-btn.rev-small, +.rev-btn.rev-small:visited { line-height: 28px; font-size: 12px; padding: 7px 20px; } + +.rev-btn.rev-small.rev-withicon i { font-size: 12px; top: 0px; } + +.rev-btn.rev-small.rev-hiddenicon i { font-size: 12px; top: 0px; } + + +/* ROUNDING OPTIONS */ +.rev-maxround { border-radius: 30px; } +.rev-minround { border-radius: 3px; } + + +/* BURGER BUTTON */ +.rev-burger { + position: relative; + width: 60px; + height: 60px; + box-sizing: border-box; + padding: 22px 0 0 14px; + border-radius: 50%; + border: 1px solid rgba(51,51,51,0.25); + -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-tap-highlight-color: transparent; + cursor: pointer; +} +.rev-burger span { + display: block; + width: 30px; + height: 3px; + background: #333; + transition: .7s; + pointer-events: none; + transform-style: flat !important; +} +.rev-burger span:nth-child(2) { + margin: 3px 0; +} + +#dialog_addbutton .rev-burger:hover :first-child, +.open .rev-burger :first-child, +.open.rev-burger :first-child { + transform: translateY(6px) rotate(-45deg); + +} +#dialog_addbutton .rev-burger:hover :nth-child(2), +.open .rev-burger :nth-child(2), +.open.rev-burger :nth-child(2) { + transform: rotate(-45deg); + + opacity: 0; +} +#dialog_addbutton .rev-burger:hover :last-child, +.open .rev-burger :last-child, +.open.rev-burger :last-child { + transform: translateY(-6px) rotate(-135deg); + +} + +.rev-burger.revb-white { + border: 2px solid rgba(255,255,255,0.2); +} +.rev-burger.revb-white span { + background: #fff; +} +.rev-burger.revb-whitenoborder { + border: 0; +} +.rev-burger.revb-whitenoborder span { + background: #fff; +} +.rev-burger.revb-darknoborder { + border: 0; +} +.rev-burger.revb-darknoborder span { + background: #333; +} + +.rev-burger.revb-whitefull { + background: #fff; + border:none; +} + +.rev-burger.revb-whitefull span { + background:#333; +} + +.rev-burger.revb-darkfull { + background: #333; + border:none; +} + +.rev-burger.revb-darkfull span { + background:#fff; +} + + +/* SCROLL DOWN BUTTON */ + +@keyframes rev-ani-mouse { + 0% {opacity: 1;top: 29%;} + 15% {opacity: 1;top: 50%;} + 50% {opacity: 0;top: 50%;} + 100% {opacity: 0;top: 29%;} +} +.rev-scroll-btn { + display: inline-block; + position: relative; + left: 0; + right: 0; + text-align: center; + cursor: pointer; + width:35px; + height:55px; + box-sizing: border-box; + border: 3px solid white; + border-radius: 23px; +} +.rev-scroll-btn > * { + display: inline-block; + line-height: 18px; + font-size: 13px; + font-weight: normal; + color: #7f8c8d; + color: #ffffff; + font-family: "proxima-nova", "Helvetica Neue", Helvetica, Arial, sans-serif; + letter-spacing: 2px; +} +.rev-scroll-btn > *:hover, +.rev-scroll-btn > *:focus, +.rev-scroll-btn > *.active { + color: #ffffff; +} +.rev-scroll-btn > *:hover, +.rev-scroll-btn > *:focus, +.rev-scroll-btn > *:active, +.rev-scroll-btn > *.active { + opacity: 0.8; +} + +.rev-scroll-btn.revs-fullwhite { + background:#fff; +} + +.rev-scroll-btn.revs-fullwhite span { + background: #333; +} + +.rev-scroll-btn.revs-fulldark { + background:#333; + border:none; +} + +.rev-scroll-btn.revs-fulldark span { + background: #fff; +} + +.rev-scroll-btn span { + position: absolute; + display: block; + top: 29%; + left: 50%; + width: 8px; + height: 8px; + margin: -4px 0 0 -4px; + background: white; + border-radius: 50%; + animation: rev-ani-mouse 2.5s linear infinite; +} + +.rev-scroll-btn.revs-dark { + border-color:#333; +} +.rev-scroll-btn.revs-dark span { + background: #333; +} + +.rev-control-btn { + position: relative; + display: inline-block; + z-index: 5; + color: #FFF; + font-size: 20px; + line-height: 60px; + font-weight: 400; + font-style: normal; + font-family: Raleway; + text-decoration: none; + text-align: center; + background-color: #000; + border-radius: 50px; + text-shadow: none; + background-color: rgba(0, 0, 0, 0.50); + width:60px; + height:60px; + box-sizing: border-box; + cursor: pointer; +} + +.rev-cbutton-dark-sr { + border-radius: 3px; +} + +.rev-cbutton-light { + color: #333; + background-color: rgba(255,255,255, 0.75); +} + +.rev-cbutton-light-sr { + color: #333; + border-radius: 3px; + background-color: rgba(255,255,255, 0.75); +} + + +.rev-sbutton { + line-height: 37px; + width:37px; + height:37px; +} + +.rev-sbutton-blue { + background-color: #3B5998 +} +.rev-sbutton-lightblue { + background-color: #00A0D1; +} +.rev-sbutton-red { + background-color: #DD4B39; +} + + + + +/************************************ +- TP BANNER TIMER - +*************************************/ +.tp-bannertimer { visibility: hidden; width:100%; height:5px; background:#000; background:rgba(0,0,0,0.15); position:absolute; z-index:200; top:0px} +.tp-bannertimer.tp-bottom { top:auto; bottom:0px !important;height:5px} + + + +/********************************************* +- BASIC SETTINGS FOR THE BANNER - +***********************************************/ + + + +.tp-caption img { + background: transparent; + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF)"; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF); + zoom:1; +} + +.tp-caption img { } + + + +.caption.slidelink a div, +.tp-caption.slidelink a div { width:3000px; height:1500px; background:url(../assets/coloredbg.png) repeat} +.tp-caption.slidelink a span{ background:url(../assets/coloredbg.png) repeat} +.tp-shape { width:100%;height:100%;} + + + +/********************************************* +- WOOCOMMERCE STYLES - +***********************************************/ + +.tp-caption .rs-starring { display: inline-block} + + +.tp-caption .rs-starring .star-rating { + float: none; + display: inline-block; + vertical-align: top; + color: #FFC321 !important; +} + + +.tp-caption .rs-starring .star-rating, +.tp-caption .rs-starring-page .star-rating { + position: relative; + height: 1em; + width: 5.4em; + font-family: star; + font-size: 1em !important; +} + +.tp-caption .rs-starring .star-rating:before, +.tp-caption .rs-starring-page .star-rating:before { + content: "\73\73\73\73\73"; + color: #E0DADF; + float: left; + top: 0; + left: 0; + position: absolute; +} + +.tp-caption .rs-starring .star-rating span { + overflow: hidden; + float: left; + top: 0; + left: 0; + position: absolute; + padding-top: 1.5em; + font-size: 1em !important; +} + +.tp-caption .rs-starring .star-rating span:before, +.tp-caption .rs-starring .star-rating span:before { + content: "\53\53\53\53\53"; + top: 0; + position: absolute; + left: 0; +} + + + + +/****************************** + - LOADER FORMS - +********************************/ + +.tp-loader { + top:50%; left:50%; + z-index:10000; + position:absolute; +} + +.tp-loader.spinner0 { + width: 40px; + height: 40px; + background-color: #fff; + background-image:url(../assets/loader.gif); + background-repeat:no-repeat; + background-position: center center; + box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.15); + margin-top:-20px; + margin-left:-20px; + animation: tp-rotateplane 1.2s infinite ease-in-out; + border-radius: 3px; +} + + +.tp-loader.spinner1 { + width: 40px; + height: 40px; + background-color: #fff; + box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.15); + margin-top:-20px; + margin-left:-20px; + animation: tp-rotateplane 1.2s infinite ease-in-out; + border-radius: 3px; +} + + + +.tp-loader.spinner5 { + background-image:url(../assets/loader.gif); + background-repeat:no-repeat; + background-position:10px 10px; + background-color:#fff; + margin:-22px -22px; + width:44px;height:44px; + border-radius: 3px; +} + + +@keyframes tp-rotateplane { + 0% { transform: perspective(120px) rotateX(0deg) rotateY(0deg);} + 50% { transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);} + 100% { transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);} +} + + +.tp-loader.spinner2 { + width: 40px; + height: 40px; + margin-top:-20px;margin-left:-20px; + background-color: #ff0000; + box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.15); + border-radius: 100%; + animation: tp-scaleout 1.0s infinite ease-in-out; +} + + +@keyframes tp-scaleout { + 0% {transform: scale(0.0);} + 100% {transform: scale(1.0);opacity: 0;} +} + + +.tp-loader.spinner3 { + margin: -9px 0px 0px -35px; + width: 70px; + text-align: center; +} + +.tp-loader.spinner3 .bounce1, +.tp-loader.spinner3 .bounce2, +.tp-loader.spinner3 .bounce3 { + width: 18px; + height: 18px; + background-color: #fff; + box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.15); + border-radius: 100%; + display: inline-block; + animation: tp-bouncedelay 1.4s infinite ease-in-out; + /* Prevent first frame from flickering when animation starts */ + animation-fill-mode: both; +} + +.tp-loader.spinner3 .bounce1 { + animation-delay: -0.32s; +} + +.tp-loader.spinner3 .bounce2 { + animation-delay: -0.16s; +} + +@keyframes tp-bouncedelay { + 0%, 80%, 100% {transform: scale(0.0);} + 40% {transform: scale(1.0);} +} + + + + +.tp-loader.spinner4 { + margin: -20px 0px 0px -20px; + width: 40px; + height: 40px; + text-align: center; + animation: tp-rotate 2.0s infinite linear; +} + +.tp-loader.spinner4 .dot1, +.tp-loader.spinner4 .dot2 { + width: 60%; + height: 60%; + display: inline-block; + position: absolute; + top: 0; + background-color: #fff; + border-radius: 100%; + animation: tp-bounce 2.0s infinite ease-in-out; + box-shadow: 0px 0px 20px 0px rgba(0,0,0,0.15); +} + +.tp-loader.spinner4 .dot2 { + top: auto; + bottom: 0px; + animation-delay: -1.0s; +} + + +@keyframes tp-rotate { 100% { transform: rotate(360deg);}} + +@keyframes tp-bounce { + 0%, 100% {transform: scale(0.0);} + 50% { transform: scale(1.0);} +} + + + +/*********************************************** + - STANDARD NAVIGATION SETTINGS +***********************************************/ + + +.tp-thumbs.navbar, +.tp-bullets.navbar, +.tp-tabs.navbar { border:none; min-height: 0; margin:0; border-radius: 0; } + +.tp-tabs, +.tp-thumbs, +.tp-bullets { position:absolute; display:block; z-index:1000; top:0px; left:0px;} + +.tp-tab, +.tp-thumb { cursor: pointer; position:absolute;opacity:0.5; box-sizing: border-box;} + +.tp-arr-imgholder, +.tp-videoposter, +.tp-thumb-image, +.tp-tab-image { background-position: center center; background-size:cover;width:100%;height:100%; display:block; position:absolute;top:0px;left:0px;} + +.tp-tab:hover, +.tp-tab.selected, +.tp-thumb:hover, +.tp-thumb.selected { opacity:1;} + +.tp-tab-mask, +.tp-thumb-mask { box-sizing:border-box !important; } + +.tp-tabs, +.tp-thumbs { box-sizing:content-box !important; } + +.tp-bullet { width:15px;height:15px; position:absolute; background:#fff; background:rgba(255,255,255,0.3); cursor: pointer;} +.tp-bullet.selected, +.tp-bullet:hover { background:#fff;} + + + + +.tparrows { cursor:pointer; background:#000; background:rgba(0,0,0,0.5); width:40px;height:40px;position:absolute; display:block; z-index:1000; } +.tparrows:hover { background:#000;} +.tparrows:before { font-family: "revicons"; font-size:15px; color:#fff; display:block; line-height: 40px; text-align: center;} +.tparrows.tp-leftarrow:before { content: '\e824'; } +.tparrows.tp-rightarrow:before { content: '\e825'; } + + + +/*************************** + - KEN BURNS FIXES - +***************************/ + +body.rtl .tp-kbimg {left: 0 !important} + + + +/*************************** + - 3D SHADOW MODE - +***************************/ + +.dddwrappershadow { box-shadow:0 45px 100px rgba(0, 0, 0, 0.4);} + +/******************* + - DEBUG MODE - +*******************/ + +.hglayerinfo { position: fixed; + bottom: 0px; + left: 0px; + color: #FFF; + font-size: 12px; + line-height: 20px; + font-weight: 600; + background: rgba(0, 0, 0, 0.75); + padding: 5px 10px; + z-index: 2000; + white-space: normal;} +.hginfo { position:absolute;top:-2px;left:-2px;color:#e74c3c;font-size:12px;font-weight:600; background:#000;padding:2px 5px;} +.indebugmode .tp-caption:hover { border:1px dashed #c0392b !important;} +.helpgrid { border:2px dashed #c0392b;position:absolute;top:0px;left:0px;z-index:0 } +#revsliderlogloglog { padding:15px;color:#fff;position:fixed; top:0px;left:0px;width:200px;height:150px;background:rgba(0,0,0,0.7); z-index:100000; font-size:10px; overflow:scroll;} + + + +/** +INSTAGRAM FILTERS BY UNA +https://una.im/CSSgram/ +**/ +.aden{filter:hue-rotate(-20deg) contrast(.9) saturate(.85) brightness(1.2)}.aden::after{background:linear-gradient(to right,rgba(66,10,14,.2),transparent);mix-blend-mode:darken}.perpetua::after,.reyes::after{mix-blend-mode:soft-light;opacity:.5}.inkwell{filter:sepia(.3) contrast(1.1) brightness(1.1) grayscale(1)}.perpetua::after{background:linear-gradient(to bottom,#005b9a,#e6c13d)}.reyes{filter:sepia(.22) brightness(1.1) contrast(.85) saturate(.75)}.reyes::after{background:#efcdad}.gingham{filter:brightness(1.05) hue-rotate(-10deg)}.gingham::after{background:linear-gradient(to right,rgba(66,10,14,.2),transparent);mix-blend-mode:darken}.toaster{filter:contrast(1.5) brightness(.9)}.toaster::after{background:radial-gradient(circle,#804e0f,#3b003b);mix-blend-mode:screen}.walden{filter:brightness(1.1) hue-rotate(-10deg) sepia(.3) saturate(1.6)}.walden::after{background:#04c;mix-blend-mode:screen;opacity:.3}.hudson{filter:brightness(1.2) contrast(.9) saturate(1.1)}.hudson::after{background:radial-gradient(circle,#a6b1ff 50%,#342134);mix-blend-mode:multiply;opacity:.5}.earlybird{filter:contrast(.9) sepia(.2)}.earlybird::after{background:radial-gradient(circle,#d0ba8e 20%,#360309 85%,#1d0210 100%);mix-blend-mode:overlay}.mayfair{filter:contrast(1.1) saturate(1.1)}.mayfair::after{background:radial-gradient(circle at 40% 40%,rgba(255,255,255,.8),rgba(255,200,200,.6),#111 60%);mix-blend-mode:overlay;opacity:.4}.lofi{filter:saturate(1.1) contrast(1.5)}.lofi::after{background:radial-gradient(circle,transparent 70%,#222 150%);mix-blend-mode:multiply}._1977{filter:contrast(1.1) brightness(1.1) saturate(1.3)}._1977:after{background:rgba(243,106,188,.3);mix-blend-mode:screen}.brooklyn{filter:contrast(.9) brightness(1.1)}.brooklyn::after{background:radial-gradient(circle,rgba(168,223,193,.4) 70%,#c4b7c8);mix-blend-mode:overlay}.xpro2{filter:sepia(.3)}.xpro2::after{background:radial-gradient(circle,#e6e7e0 40%,rgba(43,42,161,.6) 110%);mix-blend-mode:color-burn}.nashville{filter:sepia(.2) contrast(1.2) brightness(1.05) saturate(1.2)}.nashville::after{background:rgba(0,70,150,.4);mix-blend-mode:lighten}.nashville::before{background:rgba(247,176,153,.56);mix-blend-mode:darken}.lark{filter:contrast(.9)}.lark::after{background:rgba(242,242,242,.8);mix-blend-mode:darken}.lark::before{background:#22253f;mix-blend-mode:color-dodge}.moon{filter:grayscale(1) contrast(1.1) brightness(1.1)}.moon::before{background:#a0a0a0;mix-blend-mode:soft-light}.moon::after{background:#383838;mix-blend-mode:lighten}.clarendon{filter:contrast(1.2) saturate(1.35)}.clarendon:before{background:rgba(127,187,227,.2);mix-blend-mode:overlay}.willow{filter:grayscale(.5) contrast(.95) brightness(.9)}.willow::before{background-color:radial-gradient(40%,circle,#d4a9af 55%,#000 150%);mix-blend-mode:overlay}.willow::after{background-color:#d8cdcb;mix-blend-mode:color}.rise{filter:brightness(1.05) sepia(.2) contrast(.9) saturate(.9)}.rise::after{background:radial-gradient(circle,rgba(232,197,152,.8),transparent 90%);mix-blend-mode:overlay;opacity:.6}.rise::before{background:radial-gradient(circle,rgba(236,205,169,.15) 55%,rgba(50,30,7,.4));mix-blend-mode:multiply}._1977:after,._1977:before,.aden:after,.aden:before,.brooklyn:after,.brooklyn:before,.clarendon:after,.clarendon:before,.earlybird:after,.earlybird:before,.gingham:after,.gingham:before,.hudson:after,.hudson:before,.inkwell:after,.inkwell:before,.lark:after,.lark:before,.lofi:after,.lofi:before,.mayfair:after,.mayfair:before,.moon:after,.moon:before,.nashville:after,.nashville:before,.perpetua:after,.perpetua:before,.reyes:after,.reyes:before,.rise:after,.rise:before,.slumber:after,.slumber:before,.toaster:after,.toaster:before,.walden:after,.walden:before,.willow:after,.willow:before,.xpro2:after,.xpro2:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}._1977,.aden,.brooklyn,.clarendon,.earlybird,.gingham,.hudson,.inkwell,.lark,.lofi,.mayfair,.moon,.nashville,.perpetua,.reyes,.rise,.slumber,.toaster,.walden,.willow,.xpro2{position:relative}._1977 img,.aden img,.brooklyn img,.clarendon img,.earlybird img,.gingham img,.hudson img,.inkwell img,.lark img,.lofi img,.mayfair img,.moon img,.nashville img,.perpetua img,.reyes img,.rise img,.slumber img,.toaster img,.walden img,.willow img,.xpro2 img{width:100%;z-index:1}._1977:before,.aden:before,.brooklyn:before,.clarendon:before,.earlybird:before,.gingham:before,.hudson:before,.inkwell:before,.lark:before,.lofi:before,.mayfair:before,.moon:before,.nashville:before,.perpetua:before,.reyes:before,.rise:before,.slumber:before,.toaster:before,.walden:before,.willow:before,.xpro2:before{z-index:2}._1977:after,.aden:after,.brooklyn:after,.clarendon:after,.earlybird:after,.gingham:after,.hudson:after,.inkwell:after,.lark:after,.lofi:after,.mayfair:after,.moon:after,.nashville:after,.perpetua:after,.reyes:after,.rise:after,.slumber:after,.toaster:after,.walden:after,.willow:after,.xpro2:after{z-index:3}.slumber{filter:saturate(.66) brightness(1.05)}.slumber::after{background:rgba(125,105,24,.5);mix-blend-mode:soft-light}.slumber::before{background:rgba(69,41,12,.4);mix-blend-mode:lighten} +.tp-kbimg-wrap:before, +.tp-kbimg-wrap:after {height:500%;width:500%} + diff --git a/think.greaterchiangmai.com/public/revolution/css/settings.css b/think.greaterchiangmai.com/public/revolution/css/settings.css new file mode 100644 index 0000000..735f9a6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/css/settings.css @@ -0,0 +1,13 @@ +/*----------------------------------------------------------------------------- + +- Revolution Slider 5.0 Default Style Settings - + +Screen Stylesheet + +version: 5.4.5 +date: 15/05/17 +author: themepunch +email: info@themepunch.com +website: http://www.themepunch.com +-----------------------------------------------------------------------------*/ +#debungcontrolls,.debugtimeline{width:100%;box-sizing:border-box}.rev_column,.rev_column .tp-parallax-wrap,.tp-svg-layer svg{vertical-align:top}#debungcontrolls{z-index:100000;position:fixed;bottom:0;height:auto;background:rgba(0,0,0,.6);padding:10px}.debugtimeline{height:10px;position:relative;margin-bottom:3px;display:none;white-space:nowrap}.debugtimeline:hover{height:15px}.the_timeline_tester{background:#e74c3c;position:absolute;top:0;left:0;height:100%;width:0}.rs-go-fullscreen{position:fixed!important;width:100%!important;height:100%!important;top:0!important;left:0!important;z-index:9999999!important;background:#fff!important}.debugtimeline.tl_slide .the_timeline_tester{background:#f39c12}.debugtimeline.tl_frame .the_timeline_tester{background:#3498db}.debugtimline_txt{color:#fff;font-weight:400;font-size:7px;position:absolute;left:10px;top:0;white-space:nowrap;line-height:10px}.rtl{direction:rtl}@font-face{font-family:revicons;src:url(../fonts/revicons/revicons.eot?5510888);src:url(../fonts/revicons/revicons.eot?5510888#iefix) format('embedded-opentype'),url(../fonts/revicons/revicons.woff?5510888) format('woff'),url(../fonts/revicons/revicons.ttf?5510888) format('truetype'),url(../fonts/revicons/revicons.svg?5510888#revicons) format('svg');font-weight:400;font-style:normal}[class*=" revicon-"]:before,[class^=revicon-]:before{font-family:revicons;font-style:normal;font-weight:400;speak:none;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em}.revicon-search-1:before{content:'\e802'}.revicon-pencil-1:before{content:'\e831'}.revicon-picture-1:before{content:'\e803'}.revicon-cancel:before{content:'\e80a'}.revicon-info-circled:before{content:'\e80f'}.revicon-trash:before{content:'\e801'}.revicon-left-dir:before{content:'\e817'}.revicon-right-dir:before{content:'\e818'}.revicon-down-open:before{content:'\e83b'}.revicon-left-open:before{content:'\e819'}.revicon-right-open:before{content:'\e81a'}.revicon-angle-left:before{content:'\e820'}.revicon-angle-right:before{content:'\e81d'}.revicon-left-big:before{content:'\e81f'}.revicon-right-big:before{content:'\e81e'}.revicon-magic:before{content:'\e807'}.revicon-picture:before{content:'\e800'}.revicon-export:before{content:'\e80b'}.revicon-cog:before{content:'\e832'}.revicon-login:before{content:'\e833'}.revicon-logout:before{content:'\e834'}.revicon-video:before{content:'\e805'}.revicon-arrow-combo:before{content:'\e827'}.revicon-left-open-1:before{content:'\e82a'}.revicon-right-open-1:before{content:'\e82b'}.revicon-left-open-mini:before{content:'\e822'}.revicon-right-open-mini:before{content:'\e823'}.revicon-left-open-big:before{content:'\e824'}.revicon-right-open-big:before{content:'\e825'}.revicon-left:before{content:'\e836'}.revicon-right:before{content:'\e826'}.revicon-ccw:before{content:'\e808'}.revicon-arrows-ccw:before{content:'\e806'}.revicon-palette:before{content:'\e829'}.revicon-list-add:before{content:'\e80c'}.revicon-doc:before{content:'\e809'}.revicon-left-open-outline:before{content:'\e82e'}.revicon-left-open-2:before{content:'\e82c'}.revicon-right-open-outline:before{content:'\e82f'}.revicon-right-open-2:before{content:'\e82d'}.revicon-equalizer:before{content:'\e83a'}.revicon-layers-alt:before{content:'\e804'}.revicon-popup:before{content:'\e828'}.rev_slider_wrapper{position:relative;z-index:0;width:100%}.rev_slider{position:relative;overflow:visible}.entry-content .rev_slider a,.rev_slider a{box-shadow:none}.tp-overflow-hidden{overflow:hidden!important}.group_ov_hidden{overflow:hidden}.rev_slider img,.tp-simpleresponsive img{max-width:none!important;transition:none;margin:0;padding:0;border:none}.rev_slider .no-slides-text{font-weight:700;text-align:center;padding-top:80px}.rev_slider>ul,.rev_slider>ul>li,.rev_slider>ul>li:before,.rev_slider_wrapper>ul,.tp-revslider-mainul>li,.tp-revslider-mainul>li:before,.tp-simpleresponsive>ul,.tp-simpleresponsive>ul>li,.tp-simpleresponsive>ul>li:before{list-style:none!important;position:absolute;margin:0!important;padding:0!important;overflow-x:visible;overflow-y:visible;background-image:none;background-position:0 0;text-indent:0;top:0;left:0}.rev_slider>ul>li,.rev_slider>ul>li:before,.tp-revslider-mainul>li,.tp-revslider-mainul>li:before,.tp-simpleresponsive>ul>li,.tp-simpleresponsive>ul>li:before{visibility:hidden}.tp-revslider-mainul,.tp-revslider-slidesli{padding:0!important;margin:0!important;list-style:none!important}.fullscreen-container,.fullwidthbanner-container{padding:0;position:relative}.rev_slider li.tp-revslider-slidesli{position:absolute!important}.tp-caption .rs-untoggled-content{display:block}.tp-caption .rs-toggled-content{display:none}.rs-toggle-content-active.tp-caption .rs-toggled-content{display:block}.rs-toggle-content-active.tp-caption .rs-untoggled-content{display:none}.rev_slider .caption,.rev_slider .tp-caption{position:relative;visibility:hidden;white-space:nowrap;display:block;-webkit-font-smoothing:antialiased!important;z-index:1}.rev_slider .caption,.rev_slider .tp-caption,.tp-simpleresponsive img{-moz-user-select:none;-khtms-user-select:none;-webkit-user-select:none;-o-user-select:none}.rev_slider .tp-mask-wrap .tp-caption,.rev_slider .tp-mask-wrap :last-child,.wpb_text_column .rev_slider .tp-mask-wrap .tp-caption,.wpb_text_column .rev_slider .tp-mask-wrap :last-child{margin-bottom:0}.tp-svg-layer svg{width:100%;height:100%;position:relative}.tp-carousel-wrapper{cursor:url(openhand.cur),move}.tp-carousel-wrapper.dragged{cursor:url(closedhand.cur),move}.tp_inner_padding{box-sizing:border-box;max-height:none!important}.tp-caption.tp-layer-selectable{-moz-user-select:all;-khtms-user-select:all;-webkit-user-select:all;-o-user-select:all}.tp-caption.tp-hidden-caption,.tp-forcenotvisible,.tp-hide-revslider,.tp-parallax-wrap.tp-hidden-caption{visibility:hidden!important;display:none!important}.rev_slider audio,.rev_slider embed,.rev_slider iframe,.rev_slider object,.rev_slider video{max-width:none!important}.tp-element-background{position:absolute;top:0;left:0;width:100%;height:100%;z-index:0}.tp-blockmask,.tp-blockmask_in,.tp-blockmask_out{position:absolute;top:0;left:0;width:100%;height:100%;background:#fff;z-index:1000;transform:scaleX(0) scaleY(0)}.tp-parallax-wrap{transform-style:preserve-3d}.rev_row_zone{position:absolute;width:100%;left:0;box-sizing:border-box;min-height:50px;font-size:0}.rev_column_inner,.rev_slider .tp-caption.rev_row{position:relative;width:100%!important;box-sizing:border-box}.rev_row_zone_top{top:0}.rev_row_zone_middle{top:50%;transform:translateY(-50%)}.rev_row_zone_bottom{bottom:0}.rev_slider .tp-caption.rev_row{display:table;table-layout:fixed;vertical-align:top;height:auto!important;font-size:0}.rev_column{display:table-cell;position:relative;height:auto;box-sizing:border-box;font-size:0}.rev_column_inner{display:block;height:auto!important;white-space:normal!important}.rev_column_bg{width:100%;height:100%;position:absolute;top:0;left:0;z-index:0;box-sizing:border-box;background-clip:content-box;border:0 solid transparent}.tp-caption .backcorner,.tp-caption .backcornertop,.tp-caption .frontcorner,.tp-caption .frontcornertop{height:0;top:0;width:0;position:absolute}.rev_column_inner .tp-loop-wrap,.rev_column_inner .tp-mask-wrap,.rev_column_inner .tp-parallax-wrap{text-align:inherit}.rev_column_inner .tp-mask-wrap{display:inline-block}.rev_column_inner .tp-parallax-wrap,.rev_column_inner .tp-parallax-wrap .tp-loop-wrap,.rev_column_inner .tp-parallax-wrap .tp-mask-wrap{position:relative!important;left:auto!important;top:auto!important;line-height:0}.tp-video-play-button,.tp-video-play-button i{line-height:50px!important;vertical-align:top;text-align:center}.rev_column_inner .rev_layer_in_column,.rev_column_inner .tp-parallax-wrap,.rev_column_inner .tp-parallax-wrap .tp-loop-wrap,.rev_column_inner .tp-parallax-wrap .tp-mask-wrap{vertical-align:top}.rev_break_columns{display:block!important}.rev_break_columns .tp-parallax-wrap.rev_column{display:block!important;width:100%!important}.fullwidthbanner-container{overflow:hidden}.fullwidthbanner-container .fullwidthabanner{width:100%;position:relative}.tp-static-layers{position:absolute;z-index:101;top:0;left:0}.tp-caption .frontcorner{border-left:40px solid transparent;border-right:0 solid transparent;border-top:40px solid #00A8FF;left:-40px}.tp-caption .backcorner{border-left:0 solid transparent;border-right:40px solid transparent;border-bottom:40px solid #00A8FF;right:0}.tp-caption .frontcornertop{border-left:40px solid transparent;border-right:0 solid transparent;border-bottom:40px solid #00A8FF;left:-40px}.tp-caption .backcornertop{border-left:0 solid transparent;border-right:40px solid transparent;border-top:40px solid #00A8FF;right:0}.tp-layer-inner-rotation{position:relative!important}img.tp-slider-alternative-image{width:100%;height:auto}.caption.fullscreenvideo,.rs-background-video-layer,.tp-caption.coverscreenvideo,.tp-caption.fullscreenvideo{width:100%;height:100%;top:0;left:0;position:absolute}.noFilterClass{filter:none!important}.rs-background-video-layer{visibility:hidden;z-index:0}.caption.fullscreenvideo audio,.caption.fullscreenvideo iframe,.caption.fullscreenvideo video,.tp-caption.fullscreenvideo iframe,.tp-caption.fullscreenvideo iframe audio,.tp-caption.fullscreenvideo iframe video{width:100%!important;height:100%!important;display:none}.fullcoveredvideo audio,.fullscreenvideo audio .fullcoveredvideo video,.fullscreenvideo video{background:#000}.fullcoveredvideo .tp-poster{background-position:center center;background-size:cover;width:100%;height:100%;top:0;left:0}.videoisplaying .html5vid .tp-poster{display:none}.tp-video-play-button{background:#000;background:rgba(0,0,0,.3);border-radius:5px;position:absolute;top:50%;left:50%;color:#FFF;margin-top:-25px;margin-left:-25px;cursor:pointer;width:50px;height:50px;box-sizing:border-box;display:inline-block;z-index:4;opacity:0;transition:opacity .3s ease-out!important}.tp-audio-html5 .tp-video-play-button,.tp-hiddenaudio{display:none!important}.tp-caption .html5vid{width:100%!important;height:100%!important}.tp-video-play-button i{width:50px;height:50px;display:inline-block;font-size:40px!important}.rs-fullvideo-cover,.tp-dottedoverlay,.tp-shadowcover{height:100%;top:0;left:0;position:absolute}.tp-caption:hover .tp-video-play-button{opacity:1;display:block}.tp-caption .tp-revstop{display:none;border-left:5px solid #fff!important;border-right:5px solid #fff!important;margin-top:15px!important;line-height:20px!important;vertical-align:top;font-size:25px!important}.tp-seek-bar,.tp-video-button,.tp-volume-bar{outline:0;line-height:12px;margin:0;cursor:pointer}.videoisplaying .revicon-right-dir{display:none}.videoisplaying .tp-revstop{display:inline-block}.videoisplaying .tp-video-play-button{display:none}.fullcoveredvideo .tp-video-play-button{display:none!important}.fullscreenvideo .fullscreenvideo audio,.fullscreenvideo .fullscreenvideo video{object-fit:contain!important}.fullscreenvideo .fullcoveredvideo audio,.fullscreenvideo .fullcoveredvideo video{object-fit:cover!important}.tp-video-controls{position:absolute;bottom:0;left:0;right:0;padding:5px;opacity:0;transition:opacity .3s;background-image:linear-gradient(to bottom,#000 13%,#323232 100%);display:table;max-width:100%;overflow:hidden;box-sizing:border-box}.rev-btn.rev-hiddenicon i,.rev-btn.rev-withicon i{transition:all .2s ease-out!important;font-size:15px}.tp-caption:hover .tp-video-controls{opacity:.9}.tp-video-button{background:rgba(0,0,0,.5);border:0;border-radius:3px;font-size:12px;color:#fff;padding:0}.tp-video-button:hover{cursor:pointer}.tp-video-button-wrap,.tp-video-seek-bar-wrap,.tp-video-vol-bar-wrap{padding:0 5px;display:table-cell;vertical-align:middle}.tp-video-seek-bar-wrap{width:80%}.tp-video-vol-bar-wrap{width:20%}.tp-seek-bar,.tp-volume-bar{width:100%;padding:0}.rs-fullvideo-cover{width:100%;background:0 0;z-index:5}.disabled_lc .tp-video-play-button,.rs-background-video-layer audio::-webkit-media-controls,.rs-background-video-layer video::-webkit-media-controls,.rs-background-video-layer video::-webkit-media-controls-start-playback-button{display:none!important}.tp-audio-html5 .tp-video-controls{opacity:1!important;visibility:visible!important}.tp-dottedoverlay{background-repeat:repeat;width:100%;z-index:3}.tp-dottedoverlay.twoxtwo{background:url(../assets/gridtile.png)}.tp-dottedoverlay.twoxtwowhite{background:url(../assets/gridtile_white.png)}.tp-dottedoverlay.threexthree{background:url(../assets/gridtile_3x3.png)}.tp-dottedoverlay.threexthreewhite{background:url(../assets/gridtile_3x3_white.png)}.tp-shadowcover{width:100%;background:#fff;z-index:-1}.tp-shadow1{box-shadow:0 10px 6px -6px rgba(0,0,0,.8)}.tp-shadow2:after,.tp-shadow2:before,.tp-shadow3:before,.tp-shadow4:after{z-index:-2;position:absolute;content:"";bottom:10px;left:10px;width:50%;top:85%;max-width:300px;background:0 0;box-shadow:0 15px 10px rgba(0,0,0,.8);transform:rotate(-3deg)}.tp-shadow2:after,.tp-shadow4:after{transform:rotate(3deg);right:10px;left:auto}.tp-shadow5{position:relative;box-shadow:0 1px 4px rgba(0,0,0,.3),0 0 40px rgba(0,0,0,.1) inset}.tp-shadow5:after,.tp-shadow5:before{content:"";position:absolute;z-index:-2;box-shadow:0 0 25px 0 rgba(0,0,0,.6);top:30%;bottom:0;left:20px;right:20px;border-radius:100px/20px}.tp-button{padding:6px 13px 5px;border-radius:3px;height:30px;cursor:pointer;color:#fff!important;text-shadow:0 1px 1px rgba(0,0,0,.6)!important;font-size:15px;line-height:45px!important;font-family:arial,sans-serif;font-weight:700;letter-spacing:-1px;text-decoration:none}.tp-button.big{color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.6);font-weight:700;padding:9px 20px;font-size:19px;line-height:57px!important}.purchase:hover,.tp-button.big:hover,.tp-button:hover{background-position:bottom,15px 11px}.purchase.green,.purchase:hover.green,.tp-button.green,.tp-button:hover.green{background-color:#21a117;box-shadow:0 3px 0 0 #104d0b}.purchase.blue,.purchase:hover.blue,.tp-button.blue,.tp-button:hover.blue{background-color:#1d78cb;box-shadow:0 3px 0 0 #0f3e68}.purchase.red,.purchase:hover.red,.tp-button.red,.tp-button:hover.red{background-color:#cb1d1d;box-shadow:0 3px 0 0 #7c1212}.purchase.orange,.purchase:hover.orange,.tp-button.orange,.tp-button:hover.orange{background-color:#f70;box-shadow:0 3px 0 0 #a34c00}.purchase.darkgrey,.purchase:hover.darkgrey,.tp-button.darkgrey,.tp-button.grey,.tp-button:hover.darkgrey,.tp-button:hover.grey{background-color:#555;box-shadow:0 3px 0 0 #222}.purchase.lightgrey,.purchase:hover.lightgrey,.tp-button.lightgrey,.tp-button:hover.lightgrey{background-color:#888;box-shadow:0 3px 0 0 #555}.rev-btn,.rev-btn:visited{outline:0!important;box-shadow:none!important;text-decoration:none!important;line-height:44px;font-size:17px;font-weight:500;padding:12px 35px;box-sizing:border-box;font-family:Roboto,sans-serif;cursor:pointer}.rev-btn.rev-uppercase,.rev-btn.rev-uppercase:visited{text-transform:uppercase;letter-spacing:1px;font-size:15px;font-weight:900}.rev-btn.rev-withicon i{font-weight:400;position:relative;top:0;margin-left:10px!important}.rev-btn.rev-hiddenicon i{font-weight:400;position:relative;top:0;opacity:0;margin-left:0!important;width:0!important}.rev-btn.rev-hiddenicon:hover i{opacity:1!important;margin-left:10px!important;width:auto!important}.rev-btn.rev-medium,.rev-btn.rev-medium:visited{line-height:36px;font-size:14px;padding:10px 30px}.rev-btn.rev-medium.rev-hiddenicon i,.rev-btn.rev-medium.rev-withicon i{font-size:14px;top:0}.rev-btn.rev-small,.rev-btn.rev-small:visited{line-height:28px;font-size:12px;padding:7px 20px}.rev-btn.rev-small.rev-hiddenicon i,.rev-btn.rev-small.rev-withicon i{font-size:12px;top:0}.rev-maxround{border-radius:30px}.rev-minround{border-radius:3px}.rev-burger{position:relative;width:60px;height:60px;box-sizing:border-box;padding:22px 0 0 14px;border-radius:50%;border:1px solid rgba(51,51,51,.25);-webkit-tap-highlight-color:transparent;cursor:pointer}.rev-burger span{display:block;width:30px;height:3px;background:#333;transition:.7s;pointer-events:none;transform-style:flat!important}.rev-burger.revb-white span,.rev-burger.revb-whitenoborder span{background:#fff}.rev-burger span:nth-child(2){margin:3px 0}#dialog_addbutton .rev-burger:hover :first-child,.open .rev-burger :first-child,.open.rev-burger :first-child{transform:translateY(6px) rotate(-45deg)}#dialog_addbutton .rev-burger:hover :nth-child(2),.open .rev-burger :nth-child(2),.open.rev-burger :nth-child(2){transform:rotate(-45deg);opacity:0}#dialog_addbutton .rev-burger:hover :last-child,.open .rev-burger :last-child,.open.rev-burger :last-child{transform:translateY(-6px) rotate(-135deg)}.rev-burger.revb-white{border:2px solid rgba(255,255,255,.2)}.rev-burger.revb-darknoborder,.rev-burger.revb-whitenoborder{border:0}.rev-burger.revb-darknoborder span{background:#333}.rev-burger.revb-whitefull{background:#fff;border:none}.rev-burger.revb-whitefull span{background:#333}.rev-burger.revb-darkfull{background:#333;border:none}.rev-burger.revb-darkfull span,.rev-scroll-btn.revs-fullwhite{background:#fff}@keyframes rev-ani-mouse{0%{opacity:1;top:29%}15%{opacity:1;top:50%}50%{opacity:0;top:50%}100%{opacity:0;top:29%}}.rev-scroll-btn{display:inline-block;position:relative;left:0;right:0;text-align:center;cursor:pointer;width:35px;height:55px;box-sizing:border-box;border:3px solid #fff;border-radius:23px}.rev-scroll-btn>*{display:inline-block;line-height:18px;font-size:13px;font-weight:400;color:#fff;font-family:proxima-nova,"Helvetica Neue",Helvetica,Arial,sans-serif;letter-spacing:2px}.rev-scroll-btn>.active,.rev-scroll-btn>:focus,.rev-scroll-btn>:hover{color:#fff}.rev-scroll-btn>.active,.rev-scroll-btn>:active,.rev-scroll-btn>:focus,.rev-scroll-btn>:hover{opacity:.8}.rev-scroll-btn.revs-fullwhite span{background:#333}.rev-scroll-btn.revs-fulldark{background:#333;border:none}.rev-scroll-btn.revs-fulldark span,.tp-bullet{background:#fff}.rev-scroll-btn span{position:absolute;display:block;top:29%;left:50%;width:8px;height:8px;margin:-4px 0 0 -4px;background:#fff;border-radius:50%;animation:rev-ani-mouse 2.5s linear infinite}.rev-scroll-btn.revs-dark{border-color:#333}.rev-scroll-btn.revs-dark span{background:#333}.rev-control-btn{position:relative;display:inline-block;z-index:5;color:#FFF;font-size:20px;line-height:60px;font-weight:400;font-style:normal;font-family:Raleway;text-decoration:none;text-align:center;background-color:#000;border-radius:50px;text-shadow:none;background-color:rgba(0,0,0,.5);width:60px;height:60px;box-sizing:border-box;cursor:pointer}.rev-cbutton-dark-sr,.rev-cbutton-light-sr{border-radius:3px}.rev-cbutton-light,.rev-cbutton-light-sr{color:#333;background-color:rgba(255,255,255,.75)}.rev-sbutton{line-height:37px;width:37px;height:37px}.rev-sbutton-blue{background-color:#3B5998}.rev-sbutton-lightblue{background-color:#00A0D1}.rev-sbutton-red{background-color:#DD4B39}.tp-bannertimer{visibility:hidden;width:100%;height:5px;background:#000;background:rgba(0,0,0,.15);position:absolute;z-index:200;top:0}.tp-bannertimer.tp-bottom{top:auto;bottom:0!important;height:5px}.tp-caption img{background:0 0;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF)";filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF, endColorstr=#00FFFFFF);zoom:1}.caption.slidelink a div,.tp-caption.slidelink a div{width:3000px;height:1500px;background:url(../assets/coloredbg.png)}.tp-caption.slidelink a span{background:url(../assets/coloredbg.png)}.tp-loader.spinner0,.tp-loader.spinner5{background-image:url(../assets/loader.gif);background-repeat:no-repeat}.tp-shape{width:100%;height:100%}.tp-caption .rs-starring{display:inline-block}.tp-caption .rs-starring .star-rating{float:none;display:inline-block;vertical-align:top;color:#FFC321!important}.tp-caption .rs-starring .star-rating,.tp-caption .rs-starring-page .star-rating{position:relative;height:1em;width:5.4em;font-family:star;font-size:1em!important}.tp-loader.spinner0,.tp-loader.spinner1{width:40px;height:40px;margin-top:-20px;margin-left:-20px;animation:tp-rotateplane 1.2s infinite ease-in-out;background-color:#fff;border-radius:3px;box-shadow:0 0 20px 0 rgba(0,0,0,.15)}.tp-caption .rs-starring .star-rating:before,.tp-caption .rs-starring-page .star-rating:before{content:"\73\73\73\73\73";color:#E0DADF;float:left;top:0;left:0;position:absolute}.tp-caption .rs-starring .star-rating span{overflow:hidden;float:left;top:0;left:0;position:absolute;padding-top:1.5em;font-size:1em!important}.tp-caption .rs-starring .star-rating span:before{content:"\53\53\53\53\53";top:0;position:absolute;left:0}.tp-loader{top:50%;left:50%;z-index:10000;position:absolute}.tp-loader.spinner0{background-position:center center}.tp-loader.spinner5{background-position:10px 10px;background-color:#fff;margin:-22px;width:44px;height:44px;border-radius:3px}@keyframes tp-rotateplane{0%{transform:perspective(120px) rotateX(0) rotateY(0)}50%{transform:perspective(120px) rotateX(-180.1deg) rotateY(0)}100%{transform:perspective(120px) rotateX(-180deg) rotateY(-179.9deg)}}.tp-loader.spinner2{width:40px;height:40px;margin-top:-20px;margin-left:-20px;background-color:red;box-shadow:0 0 20px 0 rgba(0,0,0,.15);border-radius:100%;animation:tp-scaleout 1s infinite ease-in-out}@keyframes tp-scaleout{0%{transform:scale(0)}100%{transform:scale(1);opacity:0}}.tp-loader.spinner3{margin:-9px 0 0 -35px;width:70px;text-align:center}.tp-loader.spinner3 .bounce1,.tp-loader.spinner3 .bounce2,.tp-loader.spinner3 .bounce3{width:18px;height:18px;background-color:#fff;box-shadow:0 0 20px 0 rgba(0,0,0,.15);border-radius:100%;display:inline-block;animation:tp-bouncedelay 1.4s infinite ease-in-out;animation-fill-mode:both}.tp-loader.spinner3 .bounce1{animation-delay:-.32s}.tp-loader.spinner3 .bounce2{animation-delay:-.16s}@keyframes tp-bouncedelay{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tp-loader.spinner4{margin:-20px 0 0 -20px;width:40px;height:40px;text-align:center;animation:tp-rotate 2s infinite linear}.tp-loader.spinner4 .dot1,.tp-loader.spinner4 .dot2{width:60%;height:60%;display:inline-block;position:absolute;top:0;background-color:#fff;border-radius:100%;animation:tp-bounce 2s infinite ease-in-out;box-shadow:0 0 20px 0 rgba(0,0,0,.15)}.tp-loader.spinner4 .dot2{top:auto;bottom:0;animation-delay:-1s}@keyframes tp-rotate{100%{transform:rotate(360deg)}}@keyframes tp-bounce{0%,100%{transform:scale(0)}50%{transform:scale(1)}}.tp-bullets.navbar,.tp-tabs.navbar,.tp-thumbs.navbar{border:none;min-height:0;margin:0;border-radius:0}.tp-bullets,.tp-tabs,.tp-thumbs{position:absolute;display:block;z-index:1000;top:0;left:0}.tp-tab,.tp-thumb{cursor:pointer;position:absolute;opacity:.5;box-sizing:border-box}.tp-arr-imgholder,.tp-tab-image,.tp-thumb-image,.tp-videoposter{background-position:center center;background-size:cover;width:100%;height:100%;display:block;position:absolute;top:0;left:0}.tp-tab.selected,.tp-tab:hover,.tp-thumb.selected,.tp-thumb:hover{opacity:1}.tp-tab-mask,.tp-thumb-mask{box-sizing:border-box!important}.tp-tabs,.tp-thumbs{box-sizing:content-box!important}.tp-bullet{width:15px;height:15px;position:absolute;background:rgba(255,255,255,.3);cursor:pointer}.tp-bullet.selected,.tp-bullet:hover{background:#fff}.tparrows{cursor:pointer;background:#000;background:rgba(0,0,0,.5);width:40px;height:40px;position:absolute;display:block;z-index:1000}.tparrows:hover{background:#000}.tparrows:before{font-family:revicons;font-size:15px;color:#fff;display:block;line-height:40px;text-align:center}.hginfo,.hglayerinfo{font-size:12px;font-weight:600}.tparrows.tp-leftarrow:before{content:'\e824'}.tparrows.tp-rightarrow:before{content:'\e825'}body.rtl .tp-kbimg{left:0!important}.dddwrappershadow{box-shadow:0 45px 100px rgba(0,0,0,.4)}.hglayerinfo{position:fixed;bottom:0;left:0;color:#FFF;line-height:20px;background:rgba(0,0,0,.75);padding:5px 10px;z-index:2000;white-space:normal}.helpgrid,.hginfo{position:absolute}.hginfo{top:-2px;left:-2px;color:#e74c3c;background:#000;padding:2px 5px}.indebugmode .tp-caption:hover{border:1px dashed #c0392b!important}.helpgrid{border:2px dashed #c0392b;top:0;left:0;z-index:0}#revsliderlogloglog{padding:15px;color:#fff;position:fixed;top:0;left:0;width:200px;height:150px;background:rgba(0,0,0,.7);z-index:100000;font-size:10px;overflow:scroll}.aden{filter:hue-rotate(-20deg) contrast(.9) saturate(.85) brightness(1.2)}.aden::after{background:linear-gradient(to right,rgba(66,10,14,.2),transparent);mix-blend-mode:darken}.perpetua::after,.reyes::after{mix-blend-mode:soft-light;opacity:.5}.inkwell{filter:sepia(.3) contrast(1.1) brightness(1.1) grayscale(1)}.perpetua::after{background:linear-gradient(to bottom,#005b9a,#e6c13d)}.reyes{filter:sepia(.22) brightness(1.1) contrast(.85) saturate(.75)}.reyes::after{background:#efcdad}.gingham{filter:brightness(1.05) hue-rotate(-10deg)}.gingham::after{background:linear-gradient(to right,rgba(66,10,14,.2),transparent);mix-blend-mode:darken}.toaster{filter:contrast(1.5) brightness(.9)}.toaster::after{background:radial-gradient(circle,#804e0f,#3b003b);mix-blend-mode:screen}.walden{filter:brightness(1.1) hue-rotate(-10deg) sepia(.3) saturate(1.6)}.walden::after{background:#04c;mix-blend-mode:screen;opacity:.3}.hudson{filter:brightness(1.2) contrast(.9) saturate(1.1)}.hudson::after{background:radial-gradient(circle,#a6b1ff 50%,#342134);mix-blend-mode:multiply;opacity:.5}.earlybird{filter:contrast(.9) sepia(.2)}.earlybird::after{background:radial-gradient(circle,#d0ba8e 20%,#360309 85%,#1d0210 100%);mix-blend-mode:overlay}.mayfair{filter:contrast(1.1) saturate(1.1)}.mayfair::after{background:radial-gradient(circle at 40% 40%,rgba(255,255,255,.8),rgba(255,200,200,.6),#111 60%);mix-blend-mode:overlay;opacity:.4}.lofi{filter:saturate(1.1) contrast(1.5)}.lofi::after{background:radial-gradient(circle,transparent 70%,#222 150%);mix-blend-mode:multiply}._1977{filter:contrast(1.1) brightness(1.1) saturate(1.3)}._1977:after{background:rgba(243,106,188,.3);mix-blend-mode:screen}.brooklyn{filter:contrast(.9) brightness(1.1)}.brooklyn::after{background:radial-gradient(circle,rgba(168,223,193,.4) 70%,#c4b7c8);mix-blend-mode:overlay}.xpro2{filter:sepia(.3)}.xpro2::after{background:radial-gradient(circle,#e6e7e0 40%,rgba(43,42,161,.6) 110%);mix-blend-mode:color-burn}.nashville{filter:sepia(.2) contrast(1.2) brightness(1.05) saturate(1.2)}.nashville::after{background:rgba(0,70,150,.4);mix-blend-mode:lighten}.nashville::before{background:rgba(247,176,153,.56);mix-blend-mode:darken}.lark{filter:contrast(.9)}.lark::after{background:rgba(242,242,242,.8);mix-blend-mode:darken}.lark::before{background:#22253f;mix-blend-mode:color-dodge}.moon{filter:grayscale(1) contrast(1.1) brightness(1.1)}.moon::before{background:#a0a0a0;mix-blend-mode:soft-light}.moon::after{background:#383838;mix-blend-mode:lighten}.clarendon{filter:contrast(1.2) saturate(1.35)}.clarendon:before{background:rgba(127,187,227,.2);mix-blend-mode:overlay}.willow{filter:grayscale(.5) contrast(.95) brightness(.9)}.willow::before{background-color:radial-gradient(40%,circle,#d4a9af 55%,#000 150%);mix-blend-mode:overlay}.willow::after{background-color:#d8cdcb;mix-blend-mode:color}.rise{filter:brightness(1.05) sepia(.2) contrast(.9) saturate(.9)}.rise::after{background:radial-gradient(circle,rgba(232,197,152,.8),transparent 90%);mix-blend-mode:overlay;opacity:.6}.rise::before{background:radial-gradient(circle,rgba(236,205,169,.15) 55%,rgba(50,30,7,.4));mix-blend-mode:multiply}._1977:after,._1977:before,.aden:after,.aden:before,.brooklyn:after,.brooklyn:before,.clarendon:after,.clarendon:before,.earlybird:after,.earlybird:before,.gingham:after,.gingham:before,.hudson:after,.hudson:before,.inkwell:after,.inkwell:before,.lark:after,.lark:before,.lofi:after,.lofi:before,.mayfair:after,.mayfair:before,.moon:after,.moon:before,.nashville:after,.nashville:before,.perpetua:after,.perpetua:before,.reyes:after,.reyes:before,.rise:after,.rise:before,.slumber:after,.slumber:before,.toaster:after,.toaster:before,.walden:after,.walden:before,.willow:after,.willow:before,.xpro2:after,.xpro2:before{content:'';display:block;height:100%;width:100%;top:0;left:0;position:absolute;pointer-events:none}._1977,.aden,.brooklyn,.clarendon,.earlybird,.gingham,.hudson,.inkwell,.lark,.lofi,.mayfair,.moon,.nashville,.perpetua,.reyes,.rise,.slumber,.toaster,.walden,.willow,.xpro2{position:relative}._1977 img,.aden img,.brooklyn img,.clarendon img,.earlybird img,.gingham img,.hudson img,.inkwell img,.lark img,.lofi img,.mayfair img,.moon img,.nashville img,.perpetua img,.reyes img,.rise img,.slumber img,.toaster img,.walden img,.willow img,.xpro2 img{width:100%;z-index:1}._1977:before,.aden:before,.brooklyn:before,.clarendon:before,.earlybird:before,.gingham:before,.hudson:before,.inkwell:before,.lark:before,.lofi:before,.mayfair:before,.moon:before,.nashville:before,.perpetua:before,.reyes:before,.rise:before,.slumber:before,.toaster:before,.walden:before,.willow:before,.xpro2:before{z-index:2}._1977:after,.aden:after,.brooklyn:after,.clarendon:after,.earlybird:after,.gingham:after,.hudson:after,.inkwell:after,.lark:after,.lofi:after,.mayfair:after,.moon:after,.nashville:after,.perpetua:after,.reyes:after,.rise:after,.slumber:after,.toaster:after,.walden:after,.willow:after,.xpro2:after{z-index:3}.slumber{filter:saturate(.66) brightness(1.05)}.slumber::after{background:rgba(125,105,24,.5);mix-blend-mode:soft-light}.slumber::before{background:rgba(69,41,12,.4);mix-blend-mode:lighten}.tp-kbimg-wrap:after,.tp-kbimg-wrap:before{height:500%;width:500%} \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/css/tp-color-picker.css b/think.greaterchiangmai.com/public/revolution/css/tp-color-picker.css new file mode 100644 index 0000000..089be5e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/css/tp-color-picker.css @@ -0,0 +1,1342 @@ +@import url('https://fonts.googleapis.com/css?family=Roboto'); + +/* + Default Picker Widget +*/ +.rev-colorpicker { + + display: inline-block; + height: 28px; + line-height: 28px; + cursor: pointer; + border-radius: 4px; + overflow: hidden; + box-sizing: border-box; + border: 1px solid #E5E5E5; + +} + +.rev-colorpicker.dark { + + border: 1px solid #e5e5e5; + +} + +.rev-colorpicker span { + + display: inline-block; + height: 100%; + vertical-align: top; + +} + +.rev-colorpicker .rev-colorbox { + border-right: 1px solid #ddd; + width: 32px; + background: url(../images/tpcolorpicker/trans_tile.png); + +} + +.rev-colorpicker .rev-colorbtn { + + font-family: 'Open Sans'; + font-size: 11px; + padding: 0 6px 1px; + background: #E5E5E5; + position: relative; + top: -1px; + +} + +.rev-colorpicker.dark .rev-colorbtn { + + color: #FFF; + background: #555; + +} + +.rev-colorpicker-open .tipsy-inner { + + max-width: none; + +} + +.rev-cpicker-wrap { + + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 2099999; + display: none; + +} + +#rev-cpicker-back { + + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + /* background: rgba(255, 255, 255, 0.5); */ + +} + +#rev-cpicker { + + position: absolute; + top: 50%; + left: 50%; + margin: -198px 0 0 -305px; + font-family: 'Roboto', 'Open Sans'; + font-size: 13px; + white-space: nowrap; + +} + +.rev-cpicker-wrap.onajax { + + pointer-events: none; + +} + +.rev-cpicker-wrap.onajax .rev-cpicker-section:not(#rev-cpicker-section-right):before { + + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.5); + position: absolute; + top: 0; + left: 0; + z-index: 2099998; + content: ""; + +} + +.rev-cpicker-wrap.onajax .rev-cpicker-section:not(#rev-cpicker-section-right):after { + + position: absolute; + top: 50%; + left: 50%; + z-index: 2099999; + font-size: 36px; + color: #FFF; + margin-top: -10px; + +} + +.rev-cpicker-wrap.onajaxdelete .rev-cpicker-section:not(#rev-cpicker-section-right):after { + + content: "Deleting Preset..."; + margin-left: -135px; + +} + +.rev-cpicker-wrap.onajaxsave .rev-cpicker-section:not(#rev-cpicker-section-right):after { + + content: "Saving Preset..."; + margin-left: -123px; + +} + +#rev-cpicker *:not(input) { + + -moz-user-select: none; + -ms-user-select: none; + -webkit-user-select: none; + user-select: none; + +} + +#rev-cpicker-gradients { + + display: none; + +} + +.rev-cpicker-section { + + display: inline-block; + vertical-align: top; + position: relative; + background-color: #252525; + box-shadow: 0 0 30px rgba(0, 0, 0, 0.35); + +} + +#rev-cpicker-section-left { + + width: 610px; + min-height: 291px; + padding-bottom: 15px; + +} + +.gradient-view #rev-cpicker-section-left { + + padding-bottom: 28px; + +} + +#rev-cpicker-head { + + background-color: #333; + position: relative; + width: 610px; + height: 70px; + +} + +#rev-cpicker-drag { + + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + cursor: move; + +} + +.rev-cpicker-gradient { + + display: none; + +} + +.rev-cpicker-main-btn { + + width: 150px; + position: absolute; + top: 20px; + padding: 6px 0; + text-align: center; + border-radius: 3px; + cursor: pointer; + background-color: #3e3e3e; + color: #666; + +} + +#rev-cpicker-editing { + + display: inline-block; + position: absolute; + top: 19px; + left: 370px; + bottom: 5px; + color: #FFF; + cursor: move; + +} + +#rev-cpicker-editing span { + + display: block; + line-height: 13px; + +} + +#rev-cpicker-edit-title { + + color: #555; + +} + +#rev-cpicker-current-edit { + + margin-top: 7px; + +} + +#rev-cpicker-angle-container { + + position: relative; + +} + +#rev-cpicker-wheel { + + display: none; + position: absolute; + left: -60px; + top: -16px; + width: 60px; + height: 60px; + cursor: default; + +} + +#rev-cpicker-wheel-inner { + + position: absolute; + left: 5px; + top: 5px; + width: 50px; + height: 50px; + border-radius: 50%; + background-color: #333; + +} + +#rev-cpicker-wheel.active { + + display: block; + +} + +#rev-cpicker-wheel-point { + + position: absolute; + left: 50%; + top: 0; + display: block; + position: relative; + width: 2px; + height: 25px; + margin-left: -1px; + transform-origin: bottom center; + background-color: #999; + +} + +#rev-cpicker-wheel-point:after { + + width: 6px; + height: 6px; + border-radius: 50%; + background-color: #999; + position: absolute; + top: -2px; + left: 50%; + margin-left: -3px; + display: block; + content: ""; + +} + +#rev-cpicker-exit { + + position: absolute; + top: 28px; + right: 23px; + width: 14px; + height: 16px; + opacity: 0.25; + cursor: pointer; + background: url(../images/tpcolorpicker/exit.png) center center no-repeat; + background-size: 14px 16px; + +} + +#rev-cpicker-exit:hover { + + opacity: 1; + +} + +.rev-cpicker-btn { + + display: inline-block; + background-color: #333; + color: #777; + border-radius: 3px; + text-align: center; + cursor: pointer; + +} + +.rev-cpicker-btn-small { + + padding: 3px 15px; + margin-top: 1px; + +} + +.rev-cpicker-btn:hover { + + color: #FFF; + +} + +.rev-cpicker-input { + + width: 106px; + padding: 3px 10px; + +} + +#rev-cpicker-color-btn { + + left: 30px; + +} + +#rev-cpicker-gradient-btn { + + left: 190px; + +} + +#rev-cpicker-body { + + color: #555; + +} + +.rev-cpicker-column { + + display: inline-block; + vertical-align: top; + width: 50%; + +} + +.rev-cpicker-column-inner-left { + + padding: 14px 0 0 30px; + +} + +.rev-cpicker-column-inner-right { + + padding: 14px 0 0 9px; + +} + +.rev-cpicker-preset-title-custom { + + margin-left: 30px; + +} + +.rev-cpicker-preset-title span { + + cursor: pointer; + +} + +.rev-cpicker-arrow { + + width: 11px; + height: 6px; + display: none; + vertical-align: top; + margin-left: 2px; + padding: 3px; + position: relative; + top: 2px; + background-size: 14px 24px; + background-position: center -10px; + background-repeat: no-repeat; + +} + +.rev-cpicker-preset-title.multiplerows .rev-cpicker-arrow:not(.rev-cpicker-arrow-up) { + + display: inline-block; + +} + +.rev-cpicker-arrow-down { + + background-image: url(../images/tpcolorpicker/arrow_down.png); + +} + +.rev-cpicker-arrow-up { + + display: none; + background-image: url(../images/tpcolorpicker/arrow_up.png); + +} + +.rev-cpicker-preset-title.selected .rev-cpicker-arrow { + + background-position: center top; + +} + +.rev-cpicker-preset-title.multiplerows.active .rev-cpicker-arrow-down { + + display: none; + +} + +.rev-cpicker-preset-title.multiplerows.active .rev-cpicker-arrow-up { + + display: inline-block; + +} + +.rev-cpicker-preset-title.selected span { + + color: #FFF; + +} + +.rev-cpicker-preset-title.selected span:not(.rev-cpicker-arrow) { + + cursor: auto; + +} + +.rev-cpicker-section input { + + color: #666; + background: #252525; + border: 1px solid #353535; + +} + +#rev-cpicker-body input:disabled { + + color: #3a3a3a; + border-color: #333; + +} + + +.rev-cpicker-save-preset-btn { + + width: 90px; + padding: 11px 0 11px 0; + margin-left: 10px; + +} + +.rev-cpicker-presets { + + position: relative; + left: -20px; + width: 100%; + padding: 0 0 50px 20px; + z-index: 999; + overflow: hidden; + background-color: #252525; + +} + +.rev-cpicker-presets.active { + + overflow: visible; + +} + +.rev-cpicker-presets:not(.active) .rev-cpicker-color:nth-child(n+7) { + + display: none; + +} + +.rev-cpicker-presets-group { + + position: absolute; + top: 23px; + left: -5px; + height: 270px; + overflow: hidden; + line-height: 0; + white-space: normal; + padding: 0 0 0 20px; + background-color: #252525; + +} + +#rev-cpicker-gradients .rev-cpicker-presets-group { + + height: 295px; + +} + +#rev-cpicker .ps-container .ps-scrollbar-x-rail { + + display: none; + +} + +#rev-cpicker .ps-container .ps-scrollbar-y-rail { + + display: block; + left: 10px; + right: auto; + +} + +#rev-cpicker .ps-active-y:hover .ps-scrollbar-y-rail { + + opacity: 1; + +} + +#rev-cpicker .ps-active-y .ps-scrollbar-y-rail:hover { + + background-color: #EEE; + +} + +.rev-cpicker-presets-custom { + + display: none; + +} + +.rev-cpicker-presets-save-as { + + margin-top: 4px; + +} + +#rev-cpicker-remove-delete { + + display: none; + +} + +#rev-cpicker input[type="text"] { + + border: 1px solid #333; + border-radius: 3px; + font-size: 13px; + padding-top: 4px; + +} + +#rev-cpicker input[type="text"]:focus { + + border: 1px solid #555 !important; + box-shadow: none !important; + +} + +.rev-cpicker-preset-save { + + width: 163px; + padding: 11px 15px 12px !important; + +} + +.rev-cpicker-save-icon { + + width: 12px; + height: 12px; + display: inline-block; + background: url(../images/tpcolorpicker/save.png) left top no-repeat; + background-size: 12px 25px; + margin-right: 5px; + position: relative; + top: 1px; + +} + +.rev-cpicker-save-preset-btn:hover .rev-cpicker-save-icon { + + background-position: left bottom; + +} + +.rev-cpicker-preset-save-text { + + margin-left: 5px; + +} + +.rev-cpicker-color { + + width: 40px; + height: 40px; + display: inline-block; + position: relative; + margin: 0 0 5px 5px; + +} + +.rev-cpicker-preset-bg, +.rev-cpicker-preset-tile { + + display: block; + width: 100%; + height: 100%; + +} + +.rev-cpicker-preset-tile { + + background: url(../images/tpcolorpicker/trans_tile.png); + +} + +.rev-cpicker-preset-bg { + + position: absolute; + top: 0; + left: 0; + +} + +.rev-cpicker-color { + + box-sizing: border-box; + +} + +.rev-cpicker-color:not(.blank) { + + cursor: pointer; + background-color: #333; + +} + +.rev-cpicker-color.blank { + + background-color: #333; + +} + +.rev-picker-color-custom:hover span, +.rev-picker-color-custom.selected span, +.rev-picker-color-custom:hover .rev-cpicker-delete:before, +.rev-picker-color-custom.selected .rev-cpicker-delete:before { + + display: block; + +} + +.rev-cpicker-color.selected { + + border: 2px solid #252525; + cursor: auto; + +} + +.rev-picker-color-custom.selected { + + border-radius: 5px 0 5px 5px; + +} + +.rev-picker-color-custom.selected .rev-cpicker-delete-icon { + + cursor: pointer; + +} + +.rev-cpicker-delete-icon { + + position: absolute; + top: 0; + right: 0; + width: 8px; + height: 10px; + display: none; + background: url(../images/tpcolorpicker/delete.png) left top no-repeat; + background-size: 8px 20px; + +} + +.rev-cpicker-delete:before { + + position: absolute; + top: 0; + right: 0; + width: 12px; + height: 13px; + border-radius: 0 0 0 3px; + background-color: #252525; + content: ""; + display: none; + +} + +.rev-cpicker-delete:hover .rev-cpicker-delete-icon { + + background-position: left bottom; + +} + +#rev-cpicker .wp-color-result { + + display: none; + +} + +#rev-cpicker .wp-picker-holder { + + top: 1px; + left: -10px; + +} + +.rev-cpicker-iris { + + margin-top: 3px; + +} + +#rev-cpicker .iris-picker { + + background: transparent !important; + border: none !important; + display: block !important; + +} + +#rev-cpicker .wp-picker-input-wrap { + + display: none !important; + +} + +.rev-cpicker-meta { + + margin-top: 21px; + +} + +.rev-cpicker-meta input { + + margin: 4px 0 14px 0; + +} + +#rev-cpicker-check { + + width: 40px; + height: 40px; + position: absolute; + bottom: 10px; + margin-left: -50px; + border-radius: 3px; + cursor: pointer; + background: #27ae60 url(../images/tpcolorpicker/check.png) left top no-repeat; + +} + +#rev-cpicker-section-right { + + width: 280px; + height: 262px; + display: inline-block; + pointer-events: none; + +} + +#rev-cpicker-section-right > * { + + opacity: 0.3; + +} + +.rev-cpicker-wrap.open #rev-cpicker-section-right { + + pointer-events: auto; + +} + +.rev-cpicker-wrap.open #rev-cpicker-section-right > * { + + opacity: 1; + +} + +#rev-cpicker-section-right .rev-cpicker-iris { + + margin: 4px 0 0 12px; + +} + +#rev-cpicker-section-right .rev-cpicker-fields { + + position: absolute; + width: 100%; + bottom: 21px; + left: 21px; + +} + +#rev-cpicker-check-gradient { + + width: 31px; + height: 26px; + background: #333 url(../images/tpcolorpicker/check_small.png) left bottom no-repeat; + margin-left: 22px; + vertical-align: top; + +} + +#rev-cpicker-check-gradient:hover { + + background-position: left top; + +} + +.rev-cpicker-gradient-block { + + width: 265px; + height: 60px; + background: url(../images/tpcolorpicker/trans_tile.png); + margin-top: 31px; + +} + +.rev-cpicker-column-inner-right .rev-cpicker-gradient-block { + + margin-top: 35px; + +} + +.rev-cpicker-gradient-builder { + + width: 100%; + height: 100%; + position: relative; + +} + +#rev-cpicker-point-wrap { + + width: 275px; + height: 100%; + position: absolute; + top: 0; + left: -5px; + z-index: 99; + +} + +#rev-cpciker-point-container { + + width: 263px; + height: 100%; + position: absolute; + top: 0; + left: 0; + +} + +.rev-cpicker-point { + + position: absolute; + display: block; + width: 12px; + height: 17px; + +} + +.rev-cpicker-point.active { + + z-index: 999; + background-position: left bottom; + +} + +.rev-cpicker-point.warning { + + transition: 0.1s transform linear; + +} + +.rev-cpicker-point-top.warning { + + transform: translate(0, -5px) scale(0.75); + +} + +.rev-cpicker-point-bottom.warning { + + transform: translate(0, 5px) scale(0.75); + +} + +.rev-cpicker-point-top { + + top: -17px; + background: url(../images/tpcolorpicker/point_top.png) left top no-repeat; + +} + +.rev-cpicker-point-bottom { + + bottom: -17px; + background: url(../images/tpcolorpicker/point_bottom.png) left top no-repeat; + +} + +.rev-cpicker-point-square { + + display: block; + width: 10px; + height: 10px; + position: absolute; + top: 1px; + left: 1px; + +} + +.rev-cpicker-point-triangle { + + display: block; + width: 0; + height: 0; + +} + +.rev-cpicker-point-top .rev-cpicker-point-triangle { + + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid transparent; + position: absolute; + top: 11px; + left: 1px; + +} + +.rev-cpicker-point-bottom .rev-cpicker-point-triangle { + + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 5px solid transparent; + position: absolute; + top: 1px; + left: 1px; + +} + +.rev-cpicker-point-bottom .rev-cpicker-point-square { + + top: 6px; + +} + +.rev-cpicker-meta-row-wrap { + + margin-top: 34px; + +} + +.rev-cpicker-meta-row { + + margin-top: 14px; + +} + +.rev-cpicker-meta-row-push { + + margin-top: 18px; + +} + +.rev-cpicker-meta-row:after { + + content: ""; + display: table; + clear: both; + +} + +.rev-cpicker-meta-row > div { + + float: left; + margin-left: 11px; + min-width: 50px; + +} + +.rev-cpicker-meta-row label { + + display: block; + cursor: auto; + margin-bottom: 4px; + +} + +.rev-cpicker-meta-row > div:first-child { + + margin-left: 0 !important; + +} + +.rev-cpicker-meta-row > div:last-child { + + margin-left: 20px; + +} + +.rev-cpicker-meta-row input { + + width: 48px; + +} + +#rev-cpicker-color-box { + + width: 38px; + height: 22px; + display: block; + border: 1px solid #FFF; + position: relative; + top: 1px; + opacity: 0.5; + background: url(../images/tpcolorpicker/trans_tile.png); + +} + +.rev-cpicker-wrap.open #rev-cpicker-color-box { + + opacity: 1; + +} + +.rev-cpicker-column-inner-right .rev-cpicker-meta-row span { + + margin-right: 5px; + +} + +#rev-cpicker-meta-angle { + + width: 58px; + +} + +#rev-cpicker-meta-reverse { + + display: block; + width: 23px; + height: 23px; + border-radius: 3px; + border: 1px solid #3a3a3a; + cursor: pointer; + +} + +#rev-cpicker-meta-reverse.checked { + + background: url(../images/tpcolorpicker/check_reverse.png) center center no-repeat; + +} + +.rev-cpciker-clear { + + display: block; + width: 65px !important; + padding: 3px 0 !important; + +} + +.rev-cpicker-meta .rev-cpciker-clear { + + + position: relative; + top: -4px; + +} + +#rev-cpicker-section-right .rev-cpciker-clear { + + display: inline-block; + margin-left: 10px; + +} + +.rev-cpciker-clear:hover { + + color: #FFF; + +} + +.rev-cpicker-point-delete { + + opacity: 0.5; + pointer-events: none; + +} + +.rev-cpicker-point-delete.active { + + opacity: 1; + pointer-events: auto; + +} + +.rev-cpicker-orientation { + + opacity: 0.5; + +} + +.rev-cpicker-orientation:hover { + + color: #777; + +} + +.rev-cpicker-orientation.selected { + + opacity: 1; + color: #FFF; + cursor: auto; + pointer-events: none; + +} + +.rev-cpicker-builder-hit { + + position: absolute; + left: 0; + width: 100%; + height: 17px; + cursor: copy; + z-index: 0; + +} + +.rev-cpicker-builder-hit.full { + + pointer-events: none; + cursor: auto; + +} + +#rev-cpicker-hit-top { + + top: -17px; + +} + +#rev-cpicker-hit-bottom { + + bottom: -17px; + +} + +#rev-cpicker-gradient-input .ui-draggable { + + cursor: default; + +} + +.rev-cpicker-wrap.color-view #rev-cpicker-color-btn { + + color: #FFF; + background-color: #2e2e2e; + cursor: auto; + +} + +.rev-cpicker-wrap.gradient-view #rev-cpicker-gradient-btn { + + color: #FFF; + background-color: #2e2e2e; + cursor: auto; + +} + +.rev-cpicker-wrap.color-view #rev-cpicker-gradients {display: none} +.rev-cpicker-wrap.color-view #rev-cpicker-section-right {display: none} +.rev-cpicker-wrap.color-view #rev-cpicker-colors {display: block} + +.rev-cpicker-wrap.gradient-view #rev-cpicker {margin-left: -445px} +.rev-cpicker-wrap.gradient-view #rev-cpicker-colors {display: none} +.rev-cpicker-wrap.gradient-view #rev-cpicker-gradients {display: block} + +#rev-cpicker-colors .rev-cpicker-iris { + + margin-left: -10px; + +} + +#rev-cpicker-colors .iris-strip { + + width: 22px !important; + +} + +#rev-cpicker-colors .iris-picker .iris-square { + + margin-right: 15px; + +} + +#rev-cpicker-scroller { + + display: inline-block; + position: relative; + vertical-align: top; + top: 16px; + left: -14px; + height: 191px; + border-radius: 4px; + box-sizing: border-box; + box-shadow: inset 0 0 5px rgba(0,0,0,0.4); + background: url(../images/tpcolorpicker/trans_tile.png); + +} + +#rev-cpicker-scroller div { + + box-sizing: border-box; + +} + +#rev-cpicker-scroll-bg { + + width: 100% !important; + height: 100% !important; + border-radius: 3px !important; + background: linear-gradient(to bottom, #000 0%, rgba(0, 0, 0, 0) 100%) !important; + +} + +#rev-cpicker-scroller .iris-slider-offset { + + position: absolute; + top: 11px; + left: 0; + right: 0; + bottom: -3px; + width: auto; + height: auto; + background: transparent; + border: 0; + border-radius: 0; + +} + +#rev-cpicker-scroller .ui-slider-handle { + + position: absolute; + background: 0 0; + margin: 0; + right: -3px; + left: -3px; + border: 4px solid #aaa; + border-width: 4px 3px; + width: auto; + height: 6px; + border-radius: 4px; + box-shadow: 0 1px 2px rgba(0,0,0,.2); + opacity: .9; + z-index: 5; + cursor: ns-resize; + +} + +#rev-cpicker-scroller .ui-slider-handle:before { + + content: " "; + position: absolute; + left: -2px; + right: -2px; + top: -3px; + bottom: -3px; + border: 2px solid #fff; + border-radius: 3px; + +} + + + diff --git a/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/css/font-awesome.css b/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/css/font-awesome.css new file mode 100644 index 0000000..641b389 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/css/font-awesome.css @@ -0,0 +1,2337 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.7.0'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +[class^="fa-icon-"], [class*=" fa-icon-"] { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-icon-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-icon-2x { + font-size: 2em; +} +.fa-icon-3x { + font-size: 3em; +} +.fa-icon-4x { + font-size: 4em; +} +.fa-icon-5x { + font-size: 5em; +} +.fa-icon-fw { + width: 1.28571429em; + text-align: center; +} +.fa-icon-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-icon-ul > li { + position: relative; +} +.fa-icon-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-icon-li.fa-icon-lg { + left: -1.85714286em; +} +.fa-icon-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-icon-pull-left { + float: left; +} +.fa-icon-pull-right { + float: right; +} +.fa.fa-icon-pull-left { + margin-right: .3em; +} +.fa.fa-icon-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-icon-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-icon-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-icon-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-icon-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-icon-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-icon-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-icon-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-icon-rotate-90, +:root .fa-icon-rotate-180, +:root .fa-icon-rotate-270, +:root .fa-icon-flip-horizontal, +:root .fa-icon-flip-vertical { + filter: none; +} +.fa-icon-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-icon-stack-1x, +.fa-icon-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-icon-stack-1x { + line-height: inherit; +} +.fa-icon-stack-2x { + font-size: 2em; +} +.fa-icon-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-icon-glass:before { + content: "\f000"; +} +.fa-icon-music:before { + content: "\f001"; +} +.fa-icon-search:before { + content: "\f002"; +} +.fa-icon-envelope-o:before { + content: "\f003"; +} +.fa-icon-heart:before { + content: "\f004"; +} +.fa-icon-star:before { + content: "\f005"; +} +.fa-icon-star-o:before { + content: "\f006"; +} +.fa-icon-user:before { + content: "\f007"; +} +.fa-icon-film:before { + content: "\f008"; +} +.fa-icon-th-large:before { + content: "\f009"; +} +.fa-icon-th:before { + content: "\f00a"; +} +.fa-icon-th-list:before { + content: "\f00b"; +} +.fa-icon-check:before { + content: "\f00c"; +} +.fa-icon-remove:before, +.fa-icon-close:before, +.fa-icon-times:before { + content: "\f00d"; +} +.fa-icon-search-plus:before { + content: "\f00e"; +} +.fa-icon-search-minus:before { + content: "\f010"; +} +.fa-icon-power-off:before { + content: "\f011"; +} +.fa-icon-signal:before { + content: "\f012"; +} +.fa-icon-gear:before, +.fa-icon-cog:before { + content: "\f013"; +} +.fa-icon-trash-o:before { + content: "\f014"; +} +.fa-icon-home:before { + content: "\f015"; +} +.fa-icon-file-o:before { + content: "\f016"; +} +.fa-icon-clock-o:before { + content: "\f017"; +} +.fa-icon-road:before { + content: "\f018"; +} +.fa-icon-download:before { + content: "\f019"; +} +.fa-icon-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-icon-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-icon-inbox:before { + content: "\f01c"; +} +.fa-icon-play-circle-o:before { + content: "\f01d"; +} +.fa-icon-rotate-right:before, +.fa-icon-repeat:before { + content: "\f01e"; +} +.fa-icon-refresh:before { + content: "\f021"; +} +.fa-icon-list-alt:before { + content: "\f022"; +} +.fa-icon-lock:before { + content: "\f023"; +} +.fa-icon-flag:before { + content: "\f024"; +} +.fa-icon-headphones:before { + content: "\f025"; +} +.fa-icon-volume-off:before { + content: "\f026"; +} +.fa-icon-volume-down:before { + content: "\f027"; +} +.fa-icon-volume-up:before { + content: "\f028"; +} +.fa-icon-qrcode:before { + content: "\f029"; +} +.fa-icon-barcode:before { + content: "\f02a"; +} +.fa-icon-tag:before { + content: "\f02b"; +} +.fa-icon-tags:before { + content: "\f02c"; +} +.fa-icon-book:before { + content: "\f02d"; +} +.fa-icon-bookmark:before { + content: "\f02e"; +} +.fa-icon-print:before { + content: "\f02f"; +} +.fa-icon-camera:before { + content: "\f030"; +} +.fa-icon-font:before { + content: "\f031"; +} +.fa-icon-bold:before { + content: "\f032"; +} +.fa-icon-italic:before { + content: "\f033"; +} +.fa-icon-text-height:before { + content: "\f034"; +} +.fa-icon-text-width:before { + content: "\f035"; +} +.fa-icon-align-left:before { + content: "\f036"; +} +.fa-icon-align-center:before { + content: "\f037"; +} +.fa-icon-align-right:before { + content: "\f038"; +} +.fa-icon-align-justify:before { + content: "\f039"; +} +.fa-icon-list:before { + content: "\f03a"; +} +.fa-icon-dedent:before, +.fa-icon-outdent:before { + content: "\f03b"; +} +.fa-icon-indent:before { + content: "\f03c"; +} +.fa-icon-video-camera:before { + content: "\f03d"; +} +.fa-icon-photo:before, +.fa-icon-image:before, +.fa-icon-picture-o:before { + content: "\f03e"; +} +.fa-icon-pencil:before { + content: "\f040"; +} +.fa-icon-map-marker:before { + content: "\f041"; +} +.fa-icon-adjust:before { + content: "\f042"; +} +.fa-icon-tint:before { + content: "\f043"; +} +.fa-icon-edit:before, +.fa-icon-pencil-square-o:before { + content: "\f044"; +} +.fa-icon-share-square-o:before { + content: "\f045"; +} +.fa-icon-check-square-o:before { + content: "\f046"; +} +.fa-icon-arrows:before { + content: "\f047"; +} +.fa-icon-step-backward:before { + content: "\f048"; +} +.fa-icon-fast-backward:before { + content: "\f049"; +} +.fa-icon-backward:before { + content: "\f04a"; +} +.fa-icon-play:before { + content: "\f04b"; +} +.fa-icon-pause:before { + content: "\f04c"; +} +.fa-icon-stop:before { + content: "\f04d"; +} +.fa-icon-forward:before { + content: "\f04e"; +} +.fa-icon-fast-forward:before { + content: "\f050"; +} +.fa-icon-step-forward:before { + content: "\f051"; +} +.fa-icon-eject:before { + content: "\f052"; +} +.fa-icon-chevron-left:before { + content: "\f053"; +} +.fa-icon-chevron-right:before { + content: "\f054"; +} +.fa-icon-plus-circle:before { + content: "\f055"; +} +.fa-icon-minus-circle:before { + content: "\f056"; +} +.fa-icon-times-circle:before { + content: "\f057"; +} +.fa-icon-check-circle:before { + content: "\f058"; +} +.fa-icon-question-circle:before { + content: "\f059"; +} +.fa-icon-info-circle:before { + content: "\f05a"; +} +.fa-icon-crosshairs:before { + content: "\f05b"; +} +.fa-icon-times-circle-o:before { + content: "\f05c"; +} +.fa-icon-check-circle-o:before { + content: "\f05d"; +} +.fa-icon-ban:before { + content: "\f05e"; +} +.fa-icon-arrow-left:before { + content: "\f060"; +} +.fa-icon-arrow-right:before { + content: "\f061"; +} +.fa-icon-arrow-up:before { + content: "\f062"; +} +.fa-icon-arrow-down:before { + content: "\f063"; +} +.fa-icon-mail-forward:before, +.fa-icon-share:before { + content: "\f064"; +} +.fa-icon-expand:before { + content: "\f065"; +} +.fa-icon-compress:before { + content: "\f066"; +} +.fa-icon-plus:before { + content: "\f067"; +} +.fa-icon-minus:before { + content: "\f068"; +} +.fa-icon-asterisk:before { + content: "\f069"; +} +.fa-icon-exclamation-circle:before { + content: "\f06a"; +} +.fa-icon-gift:before { + content: "\f06b"; +} +.fa-icon-leaf:before { + content: "\f06c"; +} +.fa-icon-fire:before { + content: "\f06d"; +} +.fa-icon-eye:before { + content: "\f06e"; +} +.fa-icon-eye-slash:before { + content: "\f070"; +} +.fa-icon-warning:before, +.fa-icon-exclamation-triangle:before { + content: "\f071"; +} +.fa-icon-plane:before { + content: "\f072"; +} +.fa-icon-calendar:before { + content: "\f073"; +} +.fa-icon-random:before { + content: "\f074"; +} +.fa-icon-comment:before { + content: "\f075"; +} +.fa-icon-magnet:before { + content: "\f076"; +} +.fa-icon-chevron-up:before { + content: "\f077"; +} +.fa-icon-chevron-down:before { + content: "\f078"; +} +.fa-icon-retweet:before { + content: "\f079"; +} +.fa-icon-shopping-cart:before { + content: "\f07a"; +} +.fa-icon-folder:before { + content: "\f07b"; +} +.fa-icon-folder-open:before { + content: "\f07c"; +} +.fa-icon-arrows-v:before { + content: "\f07d"; +} +.fa-icon-arrows-h:before { + content: "\f07e"; +} +.fa-icon-bar-chart-o:before, +.fa-icon-bar-chart:before { + content: "\f080"; +} +.fa-icon-twitter-square:before { + content: "\f081"; +} +.fa-icon-facebook-square:before { + content: "\f082"; +} +.fa-icon-camera-retro:before { + content: "\f083"; +} +.fa-icon-key:before { + content: "\f084"; +} +.fa-icon-gears:before, +.fa-icon-cogs:before { + content: "\f085"; +} +.fa-icon-comments:before { + content: "\f086"; +} +.fa-icon-thumbs-o-up:before { + content: "\f087"; +} +.fa-icon-thumbs-o-down:before { + content: "\f088"; +} +.fa-icon-star-half:before { + content: "\f089"; +} +.fa-icon-heart-o:before { + content: "\f08a"; +} +.fa-icon-sign-out:before { + content: "\f08b"; +} +.fa-icon-linkedin-square:before { + content: "\f08c"; +} +.fa-icon-thumb-tack:before { + content: "\f08d"; +} +.fa-icon-external-link:before { + content: "\f08e"; +} +.fa-icon-sign-in:before { + content: "\f090"; +} +.fa-icon-trophy:before { + content: "\f091"; +} +.fa-icon-github-square:before { + content: "\f092"; +} +.fa-icon-upload:before { + content: "\f093"; +} +.fa-icon-lemon-o:before { + content: "\f094"; +} +.fa-icon-phone:before { + content: "\f095"; +} +.fa-icon-square-o:before { + content: "\f096"; +} +.fa-icon-bookmark-o:before { + content: "\f097"; +} +.fa-icon-phone-square:before { + content: "\f098"; +} +.fa-icon-twitter:before { + content: "\f099"; +} +.fa-icon-facebook-f:before, +.fa-icon-facebook:before { + content: "\f09a"; +} +.fa-icon-github:before { + content: "\f09b"; +} +.fa-icon-unlock:before { + content: "\f09c"; +} +.fa-icon-credit-card:before { + content: "\f09d"; +} +.fa-icon-feed:before, +.fa-icon-rss:before { + content: "\f09e"; +} +.fa-icon-hdd-o:before { + content: "\f0a0"; +} +.fa-icon-bullhorn:before { + content: "\f0a1"; +} +.fa-icon-bell:before { + content: "\f0f3"; +} +.fa-icon-certificate:before { + content: "\f0a3"; +} +.fa-icon-hand-o-right:before { + content: "\f0a4"; +} +.fa-icon-hand-o-left:before { + content: "\f0a5"; +} +.fa-icon-hand-o-up:before { + content: "\f0a6"; +} +.fa-icon-hand-o-down:before { + content: "\f0a7"; +} +.fa-icon-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-icon-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-icon-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-icon-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-icon-globe:before { + content: "\f0ac"; +} +.fa-icon-wrench:before { + content: "\f0ad"; +} +.fa-icon-tasks:before { + content: "\f0ae"; +} +.fa-icon-filter:before { + content: "\f0b0"; +} +.fa-icon-briefcase:before { + content: "\f0b1"; +} +.fa-icon-arrows-alt:before { + content: "\f0b2"; +} +.fa-icon-group:before, +.fa-icon-users:before { + content: "\f0c0"; +} +.fa-icon-chain:before, +.fa-icon-link:before { + content: "\f0c1"; +} +.fa-icon-cloud:before { + content: "\f0c2"; +} +.fa-icon-flask:before { + content: "\f0c3"; +} +.fa-icon-cut:before, +.fa-icon-scissors:before { + content: "\f0c4"; +} +.fa-icon-copy:before, +.fa-icon-files-o:before { + content: "\f0c5"; +} +.fa-icon-paperclip:before { + content: "\f0c6"; +} +.fa-icon-save:before, +.fa-icon-floppy-o:before { + content: "\f0c7"; +} +.fa-icon-square:before { + content: "\f0c8"; +} +.fa-icon-navicon:before, +.fa-icon-reorder:before, +.fa-icon-bars:before { + content: "\f0c9"; +} +.fa-icon-list-ul:before { + content: "\f0ca"; +} +.fa-icon-list-ol:before { + content: "\f0cb"; +} +.fa-icon-strikethrough:before { + content: "\f0cc"; +} +.fa-icon-underline:before { + content: "\f0cd"; +} +.fa-icon-table:before { + content: "\f0ce"; +} +.fa-icon-magic:before { + content: "\f0d0"; +} +.fa-icon-truck:before { + content: "\f0d1"; +} +.fa-icon-pinterest:before { + content: "\f0d2"; +} +.fa-icon-pinterest-square:before { + content: "\f0d3"; +} +.fa-icon-google-plus-square:before { + content: "\f0d4"; +} +.fa-icon-google-plus:before { + content: "\f0d5"; +} +.fa-icon-money:before { + content: "\f0d6"; +} +.fa-icon-caret-down:before { + content: "\f0d7"; +} +.fa-icon-caret-up:before { + content: "\f0d8"; +} +.fa-icon-caret-left:before { + content: "\f0d9"; +} +.fa-icon-caret-right:before { + content: "\f0da"; +} +.fa-icon-columns:before { + content: "\f0db"; +} +.fa-icon-unsorted:before, +.fa-icon-sort:before { + content: "\f0dc"; +} +.fa-icon-sort-down:before, +.fa-icon-sort-desc:before { + content: "\f0dd"; +} +.fa-icon-sort-up:before, +.fa-icon-sort-asc:before { + content: "\f0de"; +} +.fa-icon-envelope:before { + content: "\f0e0"; +} +.fa-icon-linkedin:before { + content: "\f0e1"; +} +.fa-icon-rotate-left:before, +.fa-icon-undo:before { + content: "\f0e2"; +} +.fa-icon-legal:before, +.fa-icon-gavel:before { + content: "\f0e3"; +} +.fa-icon-dashboard:before, +.fa-icon-tachometer:before { + content: "\f0e4"; +} +.fa-icon-comment-o:before { + content: "\f0e5"; +} +.fa-icon-comments-o:before { + content: "\f0e6"; +} +.fa-icon-flash:before, +.fa-icon-bolt:before { + content: "\f0e7"; +} +.fa-icon-sitemap:before { + content: "\f0e8"; +} +.fa-icon-umbrella:before { + content: "\f0e9"; +} +.fa-icon-paste:before, +.fa-icon-clipboard:before { + content: "\f0ea"; +} +.fa-icon-lightbulb-o:before { + content: "\f0eb"; +} +.fa-icon-exchange:before { + content: "\f0ec"; +} +.fa-icon-cloud-download:before { + content: "\f0ed"; +} +.fa-icon-cloud-upload:before { + content: "\f0ee"; +} +.fa-icon-user-md:before { + content: "\f0f0"; +} +.fa-icon-stethoscope:before { + content: "\f0f1"; +} +.fa-icon-suitcase:before { + content: "\f0f2"; +} +.fa-icon-bell-o:before { + content: "\f0a2"; +} +.fa-icon-coffee:before { + content: "\f0f4"; +} +.fa-icon-cutlery:before { + content: "\f0f5"; +} +.fa-icon-file-text-o:before { + content: "\f0f6"; +} +.fa-icon-building-o:before { + content: "\f0f7"; +} +.fa-icon-hospital-o:before { + content: "\f0f8"; +} +.fa-icon-ambulance:before { + content: "\f0f9"; +} +.fa-icon-medkit:before { + content: "\f0fa"; +} +.fa-icon-fighter-jet:before { + content: "\f0fb"; +} +.fa-icon-beer:before { + content: "\f0fc"; +} +.fa-icon-h-square:before { + content: "\f0fd"; +} +.fa-icon-plus-square:before { + content: "\f0fe"; +} +.fa-icon-angle-double-left:before { + content: "\f100"; +} +.fa-icon-angle-double-right:before { + content: "\f101"; +} +.fa-icon-angle-double-up:before { + content: "\f102"; +} +.fa-icon-angle-double-down:before { + content: "\f103"; +} +.fa-icon-angle-left:before { + content: "\f104"; +} +.fa-icon-angle-right:before { + content: "\f105"; +} +.fa-icon-angle-up:before { + content: "\f106"; +} +.fa-icon-angle-down:before { + content: "\f107"; +} +.fa-icon-desktop:before { + content: "\f108"; +} +.fa-icon-laptop:before { + content: "\f109"; +} +.fa-icon-tablet:before { + content: "\f10a"; +} +.fa-icon-mobile-phone:before, +.fa-icon-mobile:before { + content: "\f10b"; +} +.fa-icon-circle-o:before { + content: "\f10c"; +} +.fa-icon-quote-left:before { + content: "\f10d"; +} +.fa-icon-quote-right:before { + content: "\f10e"; +} +.fa-icon-spinner:before { + content: "\f110"; +} +.fa-icon-circle:before { + content: "\f111"; +} +.fa-icon-mail-reply:before, +.fa-icon-reply:before { + content: "\f112"; +} +.fa-icon-github-alt:before { + content: "\f113"; +} +.fa-icon-folder-o:before { + content: "\f114"; +} +.fa-icon-folder-open-o:before { + content: "\f115"; +} +.fa-icon-smile-o:before { + content: "\f118"; +} +.fa-icon-frown-o:before { + content: "\f119"; +} +.fa-icon-meh-o:before { + content: "\f11a"; +} +.fa-icon-gamepad:before { + content: "\f11b"; +} +.fa-icon-keyboard-o:before { + content: "\f11c"; +} +.fa-icon-flag-o:before { + content: "\f11d"; +} +.fa-icon-flag-checkered:before { + content: "\f11e"; +} +.fa-icon-terminal:before { + content: "\f120"; +} +.fa-icon-code:before { + content: "\f121"; +} +.fa-icon-mail-reply-all:before, +.fa-icon-reply-all:before { + content: "\f122"; +} +.fa-icon-star-half-empty:before, +.fa-icon-star-half-full:before, +.fa-icon-star-half-o:before { + content: "\f123"; +} +.fa-icon-location-arrow:before { + content: "\f124"; +} +.fa-icon-crop:before { + content: "\f125"; +} +.fa-icon-code-fork:before { + content: "\f126"; +} +.fa-icon-unlink:before, +.fa-icon-chain-broken:before { + content: "\f127"; +} +.fa-icon-question:before { + content: "\f128"; +} +.fa-icon-info:before { + content: "\f129"; +} +.fa-icon-exclamation:before { + content: "\f12a"; +} +.fa-icon-superscript:before { + content: "\f12b"; +} +.fa-icon-subscript:before { + content: "\f12c"; +} +.fa-icon-eraser:before { + content: "\f12d"; +} +.fa-icon-puzzle-piece:before { + content: "\f12e"; +} +.fa-icon-microphone:before { + content: "\f130"; +} +.fa-icon-microphone-slash:before { + content: "\f131"; +} +.fa-icon-shield:before { + content: "\f132"; +} +.fa-icon-calendar-o:before { + content: "\f133"; +} +.fa-icon-fire-extinguisher:before { + content: "\f134"; +} +.fa-icon-rocket:before { + content: "\f135"; +} +.fa-icon-maxcdn:before { + content: "\f136"; +} +.fa-icon-chevron-circle-left:before { + content: "\f137"; +} +.fa-icon-chevron-circle-right:before { + content: "\f138"; +} +.fa-icon-chevron-circle-up:before { + content: "\f139"; +} +.fa-icon-chevron-circle-down:before { + content: "\f13a"; +} +.fa-icon-html5:before { + content: "\f13b"; +} +.fa-icon-css3:before { + content: "\f13c"; +} +.fa-icon-anchor:before { + content: "\f13d"; +} +.fa-icon-unlock-alt:before { + content: "\f13e"; +} +.fa-icon-bullseye:before { + content: "\f140"; +} +.fa-icon-ellipsis-h:before { + content: "\f141"; +} +.fa-icon-ellipsis-v:before { + content: "\f142"; +} +.fa-icon-rss-square:before { + content: "\f143"; +} +.fa-icon-play-circle:before { + content: "\f144"; +} +.fa-icon-ticket:before { + content: "\f145"; +} +.fa-icon-minus-square:before { + content: "\f146"; +} +.fa-icon-minus-square-o:before { + content: "\f147"; +} +.fa-icon-level-up:before { + content: "\f148"; +} +.fa-icon-level-down:before { + content: "\f149"; +} +.fa-icon-check-square:before { + content: "\f14a"; +} +.fa-icon-pencil-square:before { + content: "\f14b"; +} +.fa-icon-external-link-square:before { + content: "\f14c"; +} +.fa-icon-share-square:before { + content: "\f14d"; +} +.fa-icon-compass:before { + content: "\f14e"; +} +.fa-icon-toggle-down:before, +.fa-icon-caret-square-o-down:before { + content: "\f150"; +} +.fa-icon-toggle-up:before, +.fa-icon-caret-square-o-up:before { + content: "\f151"; +} +.fa-icon-toggle-right:before, +.fa-icon-caret-square-o-right:before { + content: "\f152"; +} +.fa-icon-euro:before, +.fa-icon-eur:before { + content: "\f153"; +} +.fa-icon-gbp:before { + content: "\f154"; +} +.fa-icon-dollar:before, +.fa-icon-usd:before { + content: "\f155"; +} +.fa-icon-rupee:before, +.fa-icon-inr:before { + content: "\f156"; +} +.fa-icon-cny:before, +.fa-icon-rmb:before, +.fa-icon-yen:before, +.fa-icon-jpy:before { + content: "\f157"; +} +.fa-icon-ruble:before, +.fa-icon-rouble:before, +.fa-icon-rub:before { + content: "\f158"; +} +.fa-icon-won:before, +.fa-icon-krw:before { + content: "\f159"; +} +.fa-icon-bitcoin:before, +.fa-icon-btc:before { + content: "\f15a"; +} +.fa-icon-file:before { + content: "\f15b"; +} +.fa-icon-file-text:before { + content: "\f15c"; +} +.fa-icon-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-icon-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-icon-sort-amount-asc:before { + content: "\f160"; +} +.fa-icon-sort-amount-desc:before { + content: "\f161"; +} +.fa-icon-sort-numeric-asc:before { + content: "\f162"; +} +.fa-icon-sort-numeric-desc:before { + content: "\f163"; +} +.fa-icon-thumbs-up:before { + content: "\f164"; +} +.fa-icon-thumbs-down:before { + content: "\f165"; +} +.fa-icon-youtube-square:before { + content: "\f166"; +} +.fa-icon-youtube:before { + content: "\f167"; +} +.fa-icon-xing:before { + content: "\f168"; +} +.fa-icon-xing-square:before { + content: "\f169"; +} +.fa-icon-youtube-play:before { + content: "\f16a"; +} +.fa-icon-dropbox:before { + content: "\f16b"; +} +.fa-icon-stack-overflow:before { + content: "\f16c"; +} +.fa-icon-instagram:before { + content: "\f16d"; +} +.fa-icon-flickr:before { + content: "\f16e"; +} +.fa-icon-adn:before { + content: "\f170"; +} +.fa-icon-bitbucket:before { + content: "\f171"; +} +.fa-icon-bitbucket-square:before { + content: "\f172"; +} +.fa-icon-tumblr:before { + content: "\f173"; +} +.fa-icon-tumblr-square:before { + content: "\f174"; +} +.fa-icon-long-arrow-down:before { + content: "\f175"; +} +.fa-icon-long-arrow-up:before { + content: "\f176"; +} +.fa-icon-long-arrow-left:before { + content: "\f177"; +} +.fa-icon-long-arrow-right:before { + content: "\f178"; +} +.fa-icon-apple:before { + content: "\f179"; +} +.fa-icon-windows:before { + content: "\f17a"; +} +.fa-icon-android:before { + content: "\f17b"; +} +.fa-icon-linux:before { + content: "\f17c"; +} +.fa-icon-dribbble:before { + content: "\f17d"; +} +.fa-icon-skype:before { + content: "\f17e"; +} +.fa-icon-foursquare:before { + content: "\f180"; +} +.fa-icon-trello:before { + content: "\f181"; +} +.fa-icon-female:before { + content: "\f182"; +} +.fa-icon-male:before { + content: "\f183"; +} +.fa-icon-gittip:before, +.fa-icon-gratipay:before { + content: "\f184"; +} +.fa-icon-sun-o:before { + content: "\f185"; +} +.fa-icon-moon-o:before { + content: "\f186"; +} +.fa-icon-archive:before { + content: "\f187"; +} +.fa-icon-bug:before { + content: "\f188"; +} +.fa-icon-vk:before { + content: "\f189"; +} +.fa-icon-weibo:before { + content: "\f18a"; +} +.fa-icon-renren:before { + content: "\f18b"; +} +.fa-icon-pagelines:before { + content: "\f18c"; +} +.fa-icon-stack-exchange:before { + content: "\f18d"; +} +.fa-icon-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-icon-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-icon-toggle-left:before, +.fa-icon-caret-square-o-left:before { + content: "\f191"; +} +.fa-icon-dot-circle-o:before { + content: "\f192"; +} +.fa-icon-wheelchair:before { + content: "\f193"; +} +.fa-icon-vimeo-square:before { + content: "\f194"; +} +.fa-icon-turkish-lira:before, +.fa-icon-try:before { + content: "\f195"; +} +.fa-icon-plus-square-o:before { + content: "\f196"; +} +.fa-icon-space-shuttle:before { + content: "\f197"; +} +.fa-icon-slack:before { + content: "\f198"; +} +.fa-icon-envelope-square:before { + content: "\f199"; +} +.fa-icon-wordpress:before { + content: "\f19a"; +} +.fa-icon-openid:before { + content: "\f19b"; +} +.fa-icon-institution:before, +.fa-icon-bank:before, +.fa-icon-university:before { + content: "\f19c"; +} +.fa-icon-mortar-board:before, +.fa-icon-graduation-cap:before { + content: "\f19d"; +} +.fa-icon-yahoo:before { + content: "\f19e"; +} +.fa-icon-google:before { + content: "\f1a0"; +} +.fa-icon-reddit:before { + content: "\f1a1"; +} +.fa-icon-reddit-square:before { + content: "\f1a2"; +} +.fa-icon-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-icon-stumbleupon:before { + content: "\f1a4"; +} +.fa-icon-delicious:before { + content: "\f1a5"; +} +.fa-icon-digg:before { + content: "\f1a6"; +} +.fa-icon-pied-piper-pp:before { + content: "\f1a7"; +} +.fa-icon-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-icon-drupal:before { + content: "\f1a9"; +} +.fa-icon-joomla:before { + content: "\f1aa"; +} +.fa-icon-language:before { + content: "\f1ab"; +} +.fa-icon-fax:before { + content: "\f1ac"; +} +.fa-icon-building:before { + content: "\f1ad"; +} +.fa-icon-child:before { + content: "\f1ae"; +} +.fa-icon-paw:before { + content: "\f1b0"; +} +.fa-icon-spoon:before { + content: "\f1b1"; +} +.fa-icon-cube:before { + content: "\f1b2"; +} +.fa-icon-cubes:before { + content: "\f1b3"; +} +.fa-icon-behance:before { + content: "\f1b4"; +} +.fa-icon-behance-square:before { + content: "\f1b5"; +} +.fa-icon-steam:before { + content: "\f1b6"; +} +.fa-icon-steam-square:before { + content: "\f1b7"; +} +.fa-icon-recycle:before { + content: "\f1b8"; +} +.fa-icon-automobile:before, +.fa-icon-car:before { + content: "\f1b9"; +} +.fa-icon-cab:before, +.fa-icon-taxi:before { + content: "\f1ba"; +} +.fa-icon-tree:before { + content: "\f1bb"; +} +.fa-icon-spotify:before { + content: "\f1bc"; +} +.fa-icon-deviantart:before { + content: "\f1bd"; +} +.fa-icon-soundcloud:before { + content: "\f1be"; +} +.fa-icon-database:before { + content: "\f1c0"; +} +.fa-icon-file-pdf-o:before { + content: "\f1c1"; +} +.fa-icon-file-word-o:before { + content: "\f1c2"; +} +.fa-icon-file-excel-o:before { + content: "\f1c3"; +} +.fa-icon-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-icon-file-photo-o:before, +.fa-icon-file-picture-o:before, +.fa-icon-file-image-o:before { + content: "\f1c5"; +} +.fa-icon-file-zip-o:before, +.fa-icon-file-archive-o:before { + content: "\f1c6"; +} +.fa-icon-file-sound-o:before, +.fa-icon-file-audio-o:before { + content: "\f1c7"; +} +.fa-icon-file-movie-o:before, +.fa-icon-file-video-o:before { + content: "\f1c8"; +} +.fa-icon-file-code-o:before { + content: "\f1c9"; +} +.fa-icon-vine:before { + content: "\f1ca"; +} +.fa-icon-codepen:before { + content: "\f1cb"; +} +.fa-icon-jsfiddle:before { + content: "\f1cc"; +} +.fa-icon-life-bouy:before, +.fa-icon-life-buoy:before, +.fa-icon-life-saver:before, +.fa-icon-support:before, +.fa-icon-life-ring:before { + content: "\f1cd"; +} +.fa-icon-circle-o-notch:before { + content: "\f1ce"; +} +.fa-icon-ra:before, +.fa-icon-resistance:before, +.fa-icon-rebel:before { + content: "\f1d0"; +} +.fa-icon-ge:before, +.fa-icon-empire:before { + content: "\f1d1"; +} +.fa-icon-git-square:before { + content: "\f1d2"; +} +.fa-icon-git:before { + content: "\f1d3"; +} +.fa-icon-y-combinator-square:before, +.fa-icon-yc-square:before, +.fa-icon-hacker-news:before { + content: "\f1d4"; +} +.fa-icon-tencent-weibo:before { + content: "\f1d5"; +} +.fa-icon-qq:before { + content: "\f1d6"; +} +.fa-icon-wechat:before, +.fa-icon-weixin:before { + content: "\f1d7"; +} +.fa-icon-send:before, +.fa-icon-paper-plane:before { + content: "\f1d8"; +} +.fa-icon-send-o:before, +.fa-icon-paper-plane-o:before { + content: "\f1d9"; +} +.fa-icon-history:before { + content: "\f1da"; +} +.fa-icon-circle-thin:before { + content: "\f1db"; +} +.fa-icon-header:before { + content: "\f1dc"; +} +.fa-icon-paragraph:before { + content: "\f1dd"; +} +.fa-icon-sliders:before { + content: "\f1de"; +} +.fa-icon-share-alt:before { + content: "\f1e0"; +} +.fa-icon-share-alt-square:before { + content: "\f1e1"; +} +.fa-icon-bomb:before { + content: "\f1e2"; +} +.fa-icon-soccer-ball-o:before, +.fa-icon-futbol-o:before { + content: "\f1e3"; +} +.fa-icon-tty:before { + content: "\f1e4"; +} +.fa-icon-binoculars:before { + content: "\f1e5"; +} +.fa-icon-plug:before { + content: "\f1e6"; +} +.fa-icon-slideshare:before { + content: "\f1e7"; +} +.fa-icon-twitch:before { + content: "\f1e8"; +} +.fa-icon-yelp:before { + content: "\f1e9"; +} +.fa-icon-newspaper-o:before { + content: "\f1ea"; +} +.fa-icon-wifi:before { + content: "\f1eb"; +} +.fa-icon-calculator:before { + content: "\f1ec"; +} +.fa-icon-paypal:before { + content: "\f1ed"; +} +.fa-icon-google-wallet:before { + content: "\f1ee"; +} +.fa-icon-cc-visa:before { + content: "\f1f0"; +} +.fa-icon-cc-mastercard:before { + content: "\f1f1"; +} +.fa-icon-cc-discover:before { + content: "\f1f2"; +} +.fa-icon-cc-amex:before { + content: "\f1f3"; +} +.fa-icon-cc-paypal:before { + content: "\f1f4"; +} +.fa-icon-cc-stripe:before { + content: "\f1f5"; +} +.fa-icon-bell-slash:before { + content: "\f1f6"; +} +.fa-icon-bell-slash-o:before { + content: "\f1f7"; +} +.fa-icon-trash:before { + content: "\f1f8"; +} +.fa-icon-copyright:before { + content: "\f1f9"; +} +.fa-icon-at:before { + content: "\f1fa"; +} +.fa-icon-eyedropper:before { + content: "\f1fb"; +} +.fa-icon-paint-brush:before { + content: "\f1fc"; +} +.fa-icon-birthday-cake:before { + content: "\f1fd"; +} +.fa-icon-area-chart:before { + content: "\f1fe"; +} +.fa-icon-pie-chart:before { + content: "\f200"; +} +.fa-icon-line-chart:before { + content: "\f201"; +} +.fa-icon-lastfm:before { + content: "\f202"; +} +.fa-icon-lastfm-square:before { + content: "\f203"; +} +.fa-icon-toggle-off:before { + content: "\f204"; +} +.fa-icon-toggle-on:before { + content: "\f205"; +} +.fa-icon-bicycle:before { + content: "\f206"; +} +.fa-icon-bus:before { + content: "\f207"; +} +.fa-icon-ioxhost:before { + content: "\f208"; +} +.fa-icon-angellist:before { + content: "\f209"; +} +.fa-icon-cc:before { + content: "\f20a"; +} +.fa-icon-shekel:before, +.fa-icon-sheqel:before, +.fa-icon-ils:before { + content: "\f20b"; +} +.fa-icon-meanpath:before { + content: "\f20c"; +} +.fa-icon-buysellads:before { + content: "\f20d"; +} +.fa-icon-connectdevelop:before { + content: "\f20e"; +} +.fa-icon-dashcube:before { + content: "\f210"; +} +.fa-icon-forumbee:before { + content: "\f211"; +} +.fa-icon-leanpub:before { + content: "\f212"; +} +.fa-icon-sellsy:before { + content: "\f213"; +} +.fa-icon-shirtsinbulk:before { + content: "\f214"; +} +.fa-icon-simplybuilt:before { + content: "\f215"; +} +.fa-icon-skyatlas:before { + content: "\f216"; +} +.fa-icon-cart-plus:before { + content: "\f217"; +} +.fa-icon-cart-arrow-down:before { + content: "\f218"; +} +.fa-icon-diamond:before { + content: "\f219"; +} +.fa-icon-ship:before { + content: "\f21a"; +} +.fa-icon-user-secret:before { + content: "\f21b"; +} +.fa-icon-motorcycle:before { + content: "\f21c"; +} +.fa-icon-street-view:before { + content: "\f21d"; +} +.fa-icon-heartbeat:before { + content: "\f21e"; +} +.fa-icon-venus:before { + content: "\f221"; +} +.fa-icon-mars:before { + content: "\f222"; +} +.fa-icon-mercury:before { + content: "\f223"; +} +.fa-icon-intersex:before, +.fa-icon-transgender:before { + content: "\f224"; +} +.fa-icon-transgender-alt:before { + content: "\f225"; +} +.fa-icon-venus-double:before { + content: "\f226"; +} +.fa-icon-mars-double:before { + content: "\f227"; +} +.fa-icon-venus-mars:before { + content: "\f228"; +} +.fa-icon-mars-stroke:before { + content: "\f229"; +} +.fa-icon-mars-stroke-v:before { + content: "\f22a"; +} +.fa-icon-mars-stroke-h:before { + content: "\f22b"; +} +.fa-icon-neuter:before { + content: "\f22c"; +} +.fa-icon-genderless:before { + content: "\f22d"; +} +.fa-icon-facebook-official:before { + content: "\f230"; +} +.fa-icon-pinterest-p:before { + content: "\f231"; +} +.fa-icon-whatsapp:before { + content: "\f232"; +} +.fa-icon-server:before { + content: "\f233"; +} +.fa-icon-user-plus:before { + content: "\f234"; +} +.fa-icon-user-times:before { + content: "\f235"; +} +.fa-icon-hotel:before, +.fa-icon-bed:before { + content: "\f236"; +} +.fa-icon-viacoin:before { + content: "\f237"; +} +.fa-icon-train:before { + content: "\f238"; +} +.fa-icon-subway:before { + content: "\f239"; +} +.fa-icon-medium:before { + content: "\f23a"; +} +.fa-icon-yc:before, +.fa-icon-y-combinator:before { + content: "\f23b"; +} +.fa-icon-optin-monster:before { + content: "\f23c"; +} +.fa-icon-opencart:before { + content: "\f23d"; +} +.fa-icon-expeditedssl:before { + content: "\f23e"; +} +.fa-icon-battery-4:before, +.fa-icon-battery:before, +.fa-icon-battery-full:before { + content: "\f240"; +} +.fa-icon-battery-3:before, +.fa-icon-battery-three-quarters:before { + content: "\f241"; +} +.fa-icon-battery-2:before, +.fa-icon-battery-half:before { + content: "\f242"; +} +.fa-icon-battery-1:before, +.fa-icon-battery-quarter:before { + content: "\f243"; +} +.fa-icon-battery-0:before, +.fa-icon-battery-empty:before { + content: "\f244"; +} +.fa-icon-mouse-pointer:before { + content: "\f245"; +} +.fa-icon-i-cursor:before { + content: "\f246"; +} +.fa-icon-object-group:before { + content: "\f247"; +} +.fa-icon-object-ungroup:before { + content: "\f248"; +} +.fa-icon-sticky-note:before { + content: "\f249"; +} +.fa-icon-sticky-note-o:before { + content: "\f24a"; +} +.fa-icon-cc-jcb:before { + content: "\f24b"; +} +.fa-icon-cc-diners-club:before { + content: "\f24c"; +} +.fa-icon-clone:before { + content: "\f24d"; +} +.fa-icon-balance-scale:before { + content: "\f24e"; +} +.fa-icon-hourglass-o:before { + content: "\f250"; +} +.fa-icon-hourglass-1:before, +.fa-icon-hourglass-start:before { + content: "\f251"; +} +.fa-icon-hourglass-2:before, +.fa-icon-hourglass-half:before { + content: "\f252"; +} +.fa-icon-hourglass-3:before, +.fa-icon-hourglass-end:before { + content: "\f253"; +} +.fa-icon-hourglass:before { + content: "\f254"; +} +.fa-icon-hand-grab-o:before, +.fa-icon-hand-rock-o:before { + content: "\f255"; +} +.fa-icon-hand-stop-o:before, +.fa-icon-hand-paper-o:before { + content: "\f256"; +} +.fa-icon-hand-scissors-o:before { + content: "\f257"; +} +.fa-icon-hand-lizard-o:before { + content: "\f258"; +} +.fa-icon-hand-spock-o:before { + content: "\f259"; +} +.fa-icon-hand-pointer-o:before { + content: "\f25a"; +} +.fa-icon-hand-peace-o:before { + content: "\f25b"; +} +.fa-icon-trademark:before { + content: "\f25c"; +} +.fa-icon-registered:before { + content: "\f25d"; +} +.fa-icon-creative-commons:before { + content: "\f25e"; +} +.fa-icon-gg:before { + content: "\f260"; +} +.fa-icon-gg-circle:before { + content: "\f261"; +} +.fa-icon-tripadvisor:before { + content: "\f262"; +} +.fa-icon-odnoklassniki:before { + content: "\f263"; +} +.fa-icon-odnoklassniki-square:before { + content: "\f264"; +} +.fa-icon-get-pocket:before { + content: "\f265"; +} +.fa-icon-wikipedia-w:before { + content: "\f266"; +} +.fa-icon-safari:before { + content: "\f267"; +} +.fa-icon-chrome:before { + content: "\f268"; +} +.fa-icon-firefox:before { + content: "\f269"; +} +.fa-icon-opera:before { + content: "\f26a"; +} +.fa-icon-internet-explorer:before { + content: "\f26b"; +} +.fa-icon-tv:before, +.fa-icon-television:before { + content: "\f26c"; +} +.fa-icon-contao:before { + content: "\f26d"; +} +.fa-icon-500px:before { + content: "\f26e"; +} +.fa-icon-amazon:before { + content: "\f270"; +} +.fa-icon-calendar-plus-o:before { + content: "\f271"; +} +.fa-icon-calendar-minus-o:before { + content: "\f272"; +} +.fa-icon-calendar-times-o:before { + content: "\f273"; +} +.fa-icon-calendar-check-o:before { + content: "\f274"; +} +.fa-icon-industry:before { + content: "\f275"; +} +.fa-icon-map-pin:before { + content: "\f276"; +} +.fa-icon-map-signs:before { + content: "\f277"; +} +.fa-icon-map-o:before { + content: "\f278"; +} +.fa-icon-map:before { + content: "\f279"; +} +.fa-icon-commenting:before { + content: "\f27a"; +} +.fa-icon-commenting-o:before { + content: "\f27b"; +} +.fa-icon-houzz:before { + content: "\f27c"; +} +.fa-icon-vimeo:before { + content: "\f27d"; +} +.fa-icon-black-tie:before { + content: "\f27e"; +} +.fa-icon-fonticons:before { + content: "\f280"; +} +.fa-icon-reddit-alien:before { + content: "\f281"; +} +.fa-icon-edge:before { + content: "\f282"; +} +.fa-icon-credit-card-alt:before { + content: "\f283"; +} +.fa-icon-codiepie:before { + content: "\f284"; +} +.fa-icon-modx:before { + content: "\f285"; +} +.fa-icon-fort-awesome:before { + content: "\f286"; +} +.fa-icon-usb:before { + content: "\f287"; +} +.fa-icon-product-hunt:before { + content: "\f288"; +} +.fa-icon-mixcloud:before { + content: "\f289"; +} +.fa-icon-scribd:before { + content: "\f28a"; +} +.fa-icon-pause-circle:before { + content: "\f28b"; +} +.fa-icon-pause-circle-o:before { + content: "\f28c"; +} +.fa-icon-stop-circle:before { + content: "\f28d"; +} +.fa-icon-stop-circle-o:before { + content: "\f28e"; +} +.fa-icon-shopping-bag:before { + content: "\f290"; +} +.fa-icon-shopping-basket:before { + content: "\f291"; +} +.fa-icon-hashtag:before { + content: "\f292"; +} +.fa-icon-bluetooth:before { + content: "\f293"; +} +.fa-icon-bluetooth-b:before { + content: "\f294"; +} +.fa-icon-percent:before { + content: "\f295"; +} +.fa-icon-gitlab:before { + content: "\f296"; +} +.fa-icon-wpbeginner:before { + content: "\f297"; +} +.fa-icon-wpforms:before { + content: "\f298"; +} +.fa-icon-envira:before { + content: "\f299"; +} +.fa-icon-universal-access:before { + content: "\f29a"; +} +.fa-icon-wheelchair-alt:before { + content: "\f29b"; +} +.fa-icon-question-circle-o:before { + content: "\f29c"; +} +.fa-icon-blind:before { + content: "\f29d"; +} +.fa-icon-audio-description:before { + content: "\f29e"; +} +.fa-icon-volume-control-phone:before { + content: "\f2a0"; +} +.fa-icon-braille:before { + content: "\f2a1"; +} +.fa-icon-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-icon-asl-interpreting:before, +.fa-icon-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-icon-deafness:before, +.fa-icon-hard-of-hearing:before, +.fa-icon-deaf:before { + content: "\f2a4"; +} +.fa-icon-glide:before { + content: "\f2a5"; +} +.fa-icon-glide-g:before { + content: "\f2a6"; +} +.fa-icon-signing:before, +.fa-icon-sign-language:before { + content: "\f2a7"; +} +.fa-icon-low-vision:before { + content: "\f2a8"; +} +.fa-icon-viadeo:before { + content: "\f2a9"; +} +.fa-icon-viadeo-square:before { + content: "\f2aa"; +} +.fa-icon-snapchat:before { + content: "\f2ab"; +} +.fa-icon-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-icon-snapchat-square:before { + content: "\f2ad"; +} +.fa-icon-pied-piper:before { + content: "\f2ae"; +} +.fa-icon-first-order:before { + content: "\f2b0"; +} +.fa-icon-yoast:before { + content: "\f2b1"; +} +.fa-icon-themeisle:before { + content: "\f2b2"; +} +.fa-icon-google-plus-circle:before, +.fa-icon-google-plus-official:before { + content: "\f2b3"; +} +.fa-icon-fa:before, +.fa-icon-font-awesome:before { + content: "\f2b4"; +} +.fa-icon-handshake-o:before { + content: "\f2b5"; +} +.fa-icon-envelope-open:before { + content: "\f2b6"; +} +.fa-icon-envelope-open-o:before { + content: "\f2b7"; +} +.fa-icon-linode:before { + content: "\f2b8"; +} +.fa-icon-address-book:before { + content: "\f2b9"; +} +.fa-icon-address-book-o:before { + content: "\f2ba"; +} +.fa-icon-vcard:before, +.fa-icon-address-card:before { + content: "\f2bb"; +} +.fa-icon-vcard-o:before, +.fa-icon-address-card-o:before { + content: "\f2bc"; +} +.fa-icon-user-circle:before { + content: "\f2bd"; +} +.fa-icon-user-circle-o:before { + content: "\f2be"; +} +.fa-icon-user-o:before { + content: "\f2c0"; +} +.fa-icon-id-badge:before { + content: "\f2c1"; +} +.fa-icon-drivers-license:before, +.fa-icon-id-card:before { + content: "\f2c2"; +} +.fa-icon-drivers-license-o:before, +.fa-icon-id-card-o:before { + content: "\f2c3"; +} +.fa-icon-quora:before { + content: "\f2c4"; +} +.fa-icon-free-code-camp:before { + content: "\f2c5"; +} +.fa-icon-telegram:before { + content: "\f2c6"; +} +.fa-icon-thermometer-4:before, +.fa-icon-thermometer:before, +.fa-icon-thermometer-full:before { + content: "\f2c7"; +} +.fa-icon-thermometer-3:before, +.fa-icon-thermometer-three-quarters:before { + content: "\f2c8"; +} +.fa-icon-thermometer-2:before, +.fa-icon-thermometer-half:before { + content: "\f2c9"; +} +.fa-icon-thermometer-1:before, +.fa-icon-thermometer-quarter:before { + content: "\f2ca"; +} +.fa-icon-thermometer-0:before, +.fa-icon-thermometer-empty:before { + content: "\f2cb"; +} +.fa-icon-shower:before { + content: "\f2cc"; +} +.fa-icon-bathtub:before, +.fa-icon-s15:before, +.fa-icon-bath:before { + content: "\f2cd"; +} +.fa-icon-podcast:before { + content: "\f2ce"; +} +.fa-icon-window-maximize:before { + content: "\f2d0"; +} +.fa-icon-window-minimize:before { + content: "\f2d1"; +} +.fa-icon-window-restore:before { + content: "\f2d2"; +} +.fa-icon-times-rectangle:before, +.fa-icon-window-close:before { + content: "\f2d3"; +} +.fa-icon-times-rectangle-o:before, +.fa-icon-window-close-o:before { + content: "\f2d4"; +} +.fa-icon-bandcamp:before { + content: "\f2d5"; +} +.fa-icon-grav:before { + content: "\f2d6"; +} +.fa-icon-etsy:before { + content: "\f2d7"; +} +.fa-icon-imdb:before { + content: "\f2d8"; +} +.fa-icon-ravelry:before { + content: "\f2d9"; +} +.fa-icon-eercast:before { + content: "\f2da"; +} +.fa-icon-microchip:before { + content: "\f2db"; +} +.fa-icon-snowflake-o:before { + content: "\f2dc"; +} +.fa-icon-superpowers:before { + content: "\f2dd"; +} +.fa-icon-wpexplorer:before { + content: "\f2de"; +} +.fa-icon-meetup:before { + content: "\f2e0"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} diff --git a/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/css/font-awesome.min.css b/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/css/font-awesome.min.css new file mode 100644 index 0000000..9b27f8e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.6.3');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/fonts/FontAwesome.otf b/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/fonts/FontAwesome.otf new file mode 100644 index 0000000..401ec0f Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/fonts/FontAwesome.otf differ diff --git a/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/fonts/fontawesome-webfont.eot b/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..e9f60ca Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/fonts/fontawesome-webfont.eot differ diff --git a/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/fonts/fontawesome-webfont.svg b/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..855c845 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/fonts/fontawesome-webfont.ttf b/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/fonts/fontawesome-webfont.ttf differ diff --git a/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/fonts/fontawesome-webfont.woff b/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..400014a Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/fonts/fontawesome-webfont.woff differ diff --git a/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/fonts/fontawesome-webfont.woff2 b/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000..4d13fc6 Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/fonts/fontawesome-webfont.woff2 differ diff --git a/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/index.php b/think.greaterchiangmai.com/public/revolution/fonts/font-awesome/index.php new file mode 100644 index 0000000..e69de29 diff --git a/think.greaterchiangmai.com/public/revolution/fonts/index.php b/think.greaterchiangmai.com/public/revolution/fonts/index.php new file mode 100644 index 0000000..e69de29 diff --git a/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/css/helper.css b/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/css/helper.css new file mode 100644 index 0000000..25f775e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/css/helper.css @@ -0,0 +1,191 @@ + +/* HELPER CLASS + * -------------------------- */ + +/* FA based classes */ + +/*! Modified from font-awesome helper CSS classes - PIXEDEN + * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (CSS: MIT License) + */ + +/* makes the font 33% larger relative to the icon container */ +.pe-lg { + font-size: 1.3333333333333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.pe-2x { + font-size: 2em; +} +.pe-3x { + font-size: 3em; +} +.pe-4x { + font-size: 4em; +} +.pe-5x { + font-size: 5em; +} +.pe-fw { + width: 1.2857142857142858em; + text-align: center; +} +.pe-ul { + padding-left: 0; + margin-left: 2.142857142857143em; + list-style-type: none; +} +.pe-ul > li { + position: relative; +} +.pe-li { + position: absolute; + left: -2.142857142857143em; + width: 2.142857142857143em; + top: 0.14285714285714285em; + text-align: center; +} +.pe-li.pe-lg { + left: -1.8571428571428572em; +} +.pe-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.pe.pull-left { + margin-right: .3em; +} +.pe.pull-right { + margin-left: .3em; +} +.pe-spin { + -webkit-animation: spin 2s infinite linear; + -moz-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; +} +@-moz-keyframes spin { + 0% { + -moz-transform: rotate(0deg); + } + 100% { + -moz-transform: rotate(359deg); + } +} +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + } +} +@-o-keyframes spin { + 0% { + -o-transform: rotate(0deg); + } + 100% { + -o-transform: rotate(359deg); + } +} +@-ms-keyframes spin { + 0% { + -ms-transform: rotate(0deg); + } + 100% { + -ms-transform: rotate(359deg); + } +} +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(359deg); + } +} +.pe-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); +} +.pe-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); +} +.pe-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); +} +.pe-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -webkit-transform: scale(-1, 1); + -moz-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.pe-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -webkit-transform: scale(1, -1); + -moz-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); +} +.pe-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.pe-stack-1x, +.pe-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.pe-stack-1x { + line-height: inherit; +} +.pe-stack-2x { + font-size: 2em; +} +.pe-inverse { + color: #ffffff; +} + +/* Custom classes / mods - PIXEDEN */ +.pe-va { + vertical-align: middle; +} + +.pe-border { + border: solid 0.08em #eaeaea; +} + +[class^="pe-7s-"], [class*=" pe-7s-"] { + display: inline-block; +} \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/css/index.php b/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/css/index.php new file mode 100644 index 0000000..e69de29 diff --git a/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/css/pe-icon-7-stroke.css b/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/css/pe-icon-7-stroke.css new file mode 100644 index 0000000..44bcbaa --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/css/pe-icon-7-stroke.css @@ -0,0 +1,632 @@ +@font-face { + font-family: 'Pe-icon-7-stroke'; + src:url('../fonts/Pe-icon-7-stroke.eot?d7yf1v'); + src:url('../fonts/Pe-icon-7-stroke.eot?#iefixd7yf1v') format('embedded-opentype'), + url('../fonts/Pe-icon-7-stroke.woff?d7yf1v') format('woff'), + url('../fonts/Pe-icon-7-stroke.ttf?d7yf1v') format('truetype'), + url('../fonts/Pe-icon-7-stroke.svg?d7yf1v#Pe-icon-7-stroke') format('svg'); + font-weight: normal; + font-style: normal; +} + +[class^="pe-7s-"], [class*=" pe-7s-"] { + display: inline-block; + font-family: 'Pe-icon-7-stroke'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.pe-7s-album:before { + content: "\e6aa"; +} +.pe-7s-arc:before { + content: "\e6ab"; +} +.pe-7s-back-2:before { + content: "\e6ac"; +} +.pe-7s-bandaid:before { + content: "\e6ad"; +} +.pe-7s-car:before { + content: "\e6ae"; +} +.pe-7s-diamond:before { + content: "\e6af"; +} +.pe-7s-door-lock:before { + content: "\e6b0"; +} +.pe-7s-eyedropper:before { + content: "\e6b1"; +} +.pe-7s-female:before { + content: "\e6b2"; +} +.pe-7s-gym:before { + content: "\e6b3"; +} +.pe-7s-hammer:before { + content: "\e6b4"; +} +.pe-7s-headphones:before { + content: "\e6b5"; +} +.pe-7s-helm:before { + content: "\e6b6"; +} +.pe-7s-hourglass:before { + content: "\e6b7"; +} +.pe-7s-leaf:before { + content: "\e6b8"; +} +.pe-7s-magic-wand:before { + content: "\e6b9"; +} +.pe-7s-male:before { + content: "\e6ba"; +} +.pe-7s-map-2:before { + content: "\e6bb"; +} +.pe-7s-next-2:before { + content: "\e6bc"; +} +.pe-7s-paint-bucket:before { + content: "\e6bd"; +} +.pe-7s-pendrive:before { + content: "\e6be"; +} +.pe-7s-photo:before { + content: "\e6bf"; +} +.pe-7s-piggy:before { + content: "\e6c0"; +} +.pe-7s-plugin:before { + content: "\e6c1"; +} +.pe-7s-refresh-2:before { + content: "\e6c2"; +} +.pe-7s-rocket:before { + content: "\e6c3"; +} +.pe-7s-settings:before { + content: "\e6c4"; +} +.pe-7s-shield:before { + content: "\e6c5"; +} +.pe-7s-smile:before { + content: "\e6c6"; +} +.pe-7s-usb:before { + content: "\e6c7"; +} +.pe-7s-vector:before { + content: "\e6c8"; +} +.pe-7s-wine:before { + content: "\e6c9"; +} +.pe-7s-cloud-upload:before { + content: "\e68a"; +} +.pe-7s-cash:before { + content: "\e68c"; +} +.pe-7s-close:before { + content: "\e680"; +} +.pe-7s-bluetooth:before { + content: "\e68d"; +} +.pe-7s-cloud-download:before { + content: "\e68b"; +} +.pe-7s-way:before { + content: "\e68e"; +} +.pe-7s-close-circle:before { + content: "\e681"; +} +.pe-7s-id:before { + content: "\e68f"; +} +.pe-7s-angle-up:before { + content: "\e682"; +} +.pe-7s-wristwatch:before { + content: "\e690"; +} +.pe-7s-angle-up-circle:before { + content: "\e683"; +} +.pe-7s-world:before { + content: "\e691"; +} +.pe-7s-angle-right:before { + content: "\e684"; +} +.pe-7s-volume:before { + content: "\e692"; +} +.pe-7s-angle-right-circle:before { + content: "\e685"; +} +.pe-7s-users:before { + content: "\e693"; +} +.pe-7s-angle-left:before { + content: "\e686"; +} +.pe-7s-user-female:before { + content: "\e694"; +} +.pe-7s-angle-left-circle:before { + content: "\e687"; +} +.pe-7s-up-arrow:before { + content: "\e695"; +} +.pe-7s-angle-down:before { + content: "\e688"; +} +.pe-7s-switch:before { + content: "\e696"; +} +.pe-7s-angle-down-circle:before { + content: "\e689"; +} +.pe-7s-scissors:before { + content: "\e697"; +} +.pe-7s-wallet:before { + content: "\e600"; +} +.pe-7s-safe:before { + content: "\e698"; +} +.pe-7s-volume2:before { + content: "\e601"; +} +.pe-7s-volume1:before { + content: "\e602"; +} +.pe-7s-voicemail:before { + content: "\e603"; +} +.pe-7s-video:before { + content: "\e604"; +} +.pe-7s-user:before { + content: "\e605"; +} +.pe-7s-upload:before { + content: "\e606"; +} +.pe-7s-unlock:before { + content: "\e607"; +} +.pe-7s-umbrella:before { + content: "\e608"; +} +.pe-7s-trash:before { + content: "\e609"; +} +.pe-7s-tools:before { + content: "\e60a"; +} +.pe-7s-timer:before { + content: "\e60b"; +} +.pe-7s-ticket:before { + content: "\e60c"; +} +.pe-7s-target:before { + content: "\e60d"; +} +.pe-7s-sun:before { + content: "\e60e"; +} +.pe-7s-study:before { + content: "\e60f"; +} +.pe-7s-stopwatch:before { + content: "\e610"; +} +.pe-7s-star:before { + content: "\e611"; +} +.pe-7s-speaker:before { + content: "\e612"; +} +.pe-7s-signal:before { + content: "\e613"; +} +.pe-7s-shuffle:before { + content: "\e614"; +} +.pe-7s-shopbag:before { + content: "\e615"; +} +.pe-7s-share:before { + content: "\e616"; +} +.pe-7s-server:before { + content: "\e617"; +} +.pe-7s-search:before { + content: "\e618"; +} +.pe-7s-film:before { + content: "\e6a5"; +} +.pe-7s-science:before { + content: "\e619"; +} +.pe-7s-disk:before { + content: "\e6a6"; +} +.pe-7s-ribbon:before { + content: "\e61a"; +} +.pe-7s-repeat:before { + content: "\e61b"; +} +.pe-7s-refresh:before { + content: "\e61c"; +} +.pe-7s-add-user:before { + content: "\e6a9"; +} +.pe-7s-refresh-cloud:before { + content: "\e61d"; +} +.pe-7s-paperclip:before { + content: "\e69c"; +} +.pe-7s-radio:before { + content: "\e61e"; +} +.pe-7s-note2:before { + content: "\e69d"; +} +.pe-7s-print:before { + content: "\e61f"; +} +.pe-7s-network:before { + content: "\e69e"; +} +.pe-7s-prev:before { + content: "\e620"; +} +.pe-7s-mute:before { + content: "\e69f"; +} +.pe-7s-power:before { + content: "\e621"; +} +.pe-7s-medal:before { + content: "\e6a0"; +} +.pe-7s-portfolio:before { + content: "\e622"; +} +.pe-7s-like2:before { + content: "\e6a1"; +} +.pe-7s-plus:before { + content: "\e623"; +} +.pe-7s-left-arrow:before { + content: "\e6a2"; +} +.pe-7s-play:before { + content: "\e624"; +} +.pe-7s-key:before { + content: "\e6a3"; +} +.pe-7s-plane:before { + content: "\e625"; +} +.pe-7s-joy:before { + content: "\e6a4"; +} +.pe-7s-photo-gallery:before { + content: "\e626"; +} +.pe-7s-pin:before { + content: "\e69b"; +} +.pe-7s-phone:before { + content: "\e627"; +} +.pe-7s-plug:before { + content: "\e69a"; +} +.pe-7s-pen:before { + content: "\e628"; +} +.pe-7s-right-arrow:before { + content: "\e699"; +} +.pe-7s-paper-plane:before { + content: "\e629"; +} +.pe-7s-delete-user:before { + content: "\e6a7"; +} +.pe-7s-paint:before { + content: "\e62a"; +} +.pe-7s-bottom-arrow:before { + content: "\e6a8"; +} +.pe-7s-notebook:before { + content: "\e62b"; +} +.pe-7s-note:before { + content: "\e62c"; +} +.pe-7s-next:before { + content: "\e62d"; +} +.pe-7s-news-paper:before { + content: "\e62e"; +} +.pe-7s-musiclist:before { + content: "\e62f"; +} +.pe-7s-music:before { + content: "\e630"; +} +.pe-7s-mouse:before { + content: "\e631"; +} +.pe-7s-more:before { + content: "\e632"; +} +.pe-7s-moon:before { + content: "\e633"; +} +.pe-7s-monitor:before { + content: "\e634"; +} +.pe-7s-micro:before { + content: "\e635"; +} +.pe-7s-menu:before { + content: "\e636"; +} +.pe-7s-map:before { + content: "\e637"; +} +.pe-7s-map-marker:before { + content: "\e638"; +} +.pe-7s-mail:before { + content: "\e639"; +} +.pe-7s-mail-open:before { + content: "\e63a"; +} +.pe-7s-mail-open-file:before { + content: "\e63b"; +} +.pe-7s-magnet:before { + content: "\e63c"; +} +.pe-7s-loop:before { + content: "\e63d"; +} +.pe-7s-look:before { + content: "\e63e"; +} +.pe-7s-lock:before { + content: "\e63f"; +} +.pe-7s-lintern:before { + content: "\e640"; +} +.pe-7s-link:before { + content: "\e641"; +} +.pe-7s-like:before { + content: "\e642"; +} +.pe-7s-light:before { + content: "\e643"; +} +.pe-7s-less:before { + content: "\e644"; +} +.pe-7s-keypad:before { + content: "\e645"; +} +.pe-7s-junk:before { + content: "\e646"; +} +.pe-7s-info:before { + content: "\e647"; +} +.pe-7s-home:before { + content: "\e648"; +} +.pe-7s-help2:before { + content: "\e649"; +} +.pe-7s-help1:before { + content: "\e64a"; +} +.pe-7s-graph3:before { + content: "\e64b"; +} +.pe-7s-graph2:before { + content: "\e64c"; +} +.pe-7s-graph1:before { + content: "\e64d"; +} +.pe-7s-graph:before { + content: "\e64e"; +} +.pe-7s-global:before { + content: "\e64f"; +} +.pe-7s-gleam:before { + content: "\e650"; +} +.pe-7s-glasses:before { + content: "\e651"; +} +.pe-7s-gift:before { + content: "\e652"; +} +.pe-7s-folder:before { + content: "\e653"; +} +.pe-7s-flag:before { + content: "\e654"; +} +.pe-7s-filter:before { + content: "\e655"; +} +.pe-7s-file:before { + content: "\e656"; +} +.pe-7s-expand1:before { + content: "\e657"; +} +.pe-7s-exapnd2:before { + content: "\e658"; +} +.pe-7s-edit:before { + content: "\e659"; +} +.pe-7s-drop:before { + content: "\e65a"; +} +.pe-7s-drawer:before { + content: "\e65b"; +} +.pe-7s-download:before { + content: "\e65c"; +} +.pe-7s-display2:before { + content: "\e65d"; +} +.pe-7s-display1:before { + content: "\e65e"; +} +.pe-7s-diskette:before { + content: "\e65f"; +} +.pe-7s-date:before { + content: "\e660"; +} +.pe-7s-cup:before { + content: "\e661"; +} +.pe-7s-culture:before { + content: "\e662"; +} +.pe-7s-crop:before { + content: "\e663"; +} +.pe-7s-credit:before { + content: "\e664"; +} +.pe-7s-copy-file:before { + content: "\e665"; +} +.pe-7s-config:before { + content: "\e666"; +} +.pe-7s-compass:before { + content: "\e667"; +} +.pe-7s-comment:before { + content: "\e668"; +} +.pe-7s-coffee:before { + content: "\e669"; +} +.pe-7s-cloud:before { + content: "\e66a"; +} +.pe-7s-clock:before { + content: "\e66b"; +} +.pe-7s-check:before { + content: "\e66c"; +} +.pe-7s-chat:before { + content: "\e66d"; +} +.pe-7s-cart:before { + content: "\e66e"; +} +.pe-7s-camera:before { + content: "\e66f"; +} +.pe-7s-call:before { + content: "\e670"; +} +.pe-7s-calculator:before { + content: "\e671"; +} +.pe-7s-browser:before { + content: "\e672"; +} +.pe-7s-box2:before { + content: "\e673"; +} +.pe-7s-box1:before { + content: "\e674"; +} +.pe-7s-bookmarks:before { + content: "\e675"; +} +.pe-7s-bicycle:before { + content: "\e676"; +} +.pe-7s-bell:before { + content: "\e677"; +} +.pe-7s-battery:before { + content: "\e678"; +} +.pe-7s-ball:before { + content: "\e679"; +} +.pe-7s-back:before { + content: "\e67a"; +} +.pe-7s-attention:before { + content: "\e67b"; +} +.pe-7s-anchor:before { + content: "\e67c"; +} +.pe-7s-albums:before { + content: "\e67d"; +} +.pe-7s-alarm:before { + content: "\e67e"; +} +.pe-7s-airplay:before { + content: "\e67f"; +} diff --git a/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.eot b/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.eot new file mode 100644 index 0000000..6f7b584 Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.eot differ diff --git a/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.svg b/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.svg new file mode 100644 index 0000000..13d9709 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.svg @@ -0,0 +1,212 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.ttf b/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.ttf new file mode 100644 index 0000000..bc8a269 Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.ttf differ diff --git a/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.woff b/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.woff new file mode 100644 index 0000000..c205e6f Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.woff differ diff --git a/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/fonts/index.php b/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/fonts/index.php new file mode 100644 index 0000000..e69de29 diff --git a/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/index.php b/think.greaterchiangmai.com/public/revolution/fonts/pe-icon-7-stroke/index.php new file mode 100644 index 0000000..e69de29 diff --git a/think.greaterchiangmai.com/public/revolution/fonts/revicons/index.php b/think.greaterchiangmai.com/public/revolution/fonts/revicons/index.php new file mode 100644 index 0000000..e69de29 diff --git a/think.greaterchiangmai.com/public/revolution/fonts/revicons/revicons.eot b/think.greaterchiangmai.com/public/revolution/fonts/revicons/revicons.eot new file mode 100644 index 0000000..955dc3f Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/fonts/revicons/revicons.eot differ diff --git a/think.greaterchiangmai.com/public/revolution/fonts/revicons/revicons.svg b/think.greaterchiangmai.com/public/revolution/fonts/revicons/revicons.svg new file mode 100644 index 0000000..2ec696b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/fonts/revicons/revicons.svg @@ -0,0 +1,54 @@ + + + +Copyright (C) 2013 by original authors @ fontello.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/fonts/revicons/revicons.ttf b/think.greaterchiangmai.com/public/revolution/fonts/revicons/revicons.ttf new file mode 100644 index 0000000..4e8df98 Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/fonts/revicons/revicons.ttf differ diff --git a/think.greaterchiangmai.com/public/revolution/fonts/revicons/revicons.woff b/think.greaterchiangmai.com/public/revolution/fonts/revicons/revicons.woff new file mode 100644 index 0000000..6d3ea4d Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/fonts/revicons/revicons.woff differ diff --git a/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/arrow_down.png b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/arrow_down.png new file mode 100644 index 0000000..412949a Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/arrow_down.png differ diff --git a/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/arrow_up.png b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/arrow_up.png new file mode 100644 index 0000000..5e572de Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/arrow_up.png differ diff --git a/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/check.png b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/check.png new file mode 100644 index 0000000..4194254 Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/check.png differ diff --git a/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/check_reverse.png b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/check_reverse.png new file mode 100644 index 0000000..90a7100 Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/check_reverse.png differ diff --git a/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/check_small.png b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/check_small.png new file mode 100644 index 0000000..ef193d0 Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/check_small.png differ diff --git a/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/delete.png b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/delete.png new file mode 100644 index 0000000..9a7215e Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/delete.png differ diff --git a/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/exit.png b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/exit.png new file mode 100644 index 0000000..58b8d12 Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/exit.png differ diff --git a/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/point_bottom.png b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/point_bottom.png new file mode 100644 index 0000000..fe20cac Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/point_bottom.png differ diff --git a/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/point_top.png b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/point_top.png new file mode 100644 index 0000000..cf15dca Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/point_top.png differ diff --git a/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/save.png b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/save.png new file mode 100644 index 0000000..28d3b1b Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/save.png differ diff --git a/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/trans_tile.png b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/trans_tile.png new file mode 100644 index 0000000..3a7b71c Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/images/tpcolorpicker/trans_tile.png differ diff --git a/think.greaterchiangmai.com/public/revolution/index.php b/think.greaterchiangmai.com/public/revolution/index.php new file mode 100644 index 0000000..e69de29 diff --git a/think.greaterchiangmai.com/public/revolution/info.cfg b/think.greaterchiangmai.com/public/revolution/info.cfg new file mode 100644 index 0000000..7d3e8e2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/info.cfg @@ -0,0 +1,3 @@ +{ +"version":"5.4.8" +} \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/js/extensions/index.php b/think.greaterchiangmai.com/public/revolution/js/extensions/index.php new file mode 100644 index 0000000..e69de29 diff --git a/think.greaterchiangmai.com/public/revolution/js/extensions/revolution.extension.actions.min.js b/think.greaterchiangmai.com/public/revolution/js/extensions/revolution.extension.actions.min.js new file mode 100644 index 0000000..070cf0e --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/js/extensions/revolution.extension.actions.min.js @@ -0,0 +1,8 @@ +/******************************************** + * REVOLUTION 5.4.6.4 EXTENSION - ACTIONS + * @version: 2.1.0 (22.11.2017) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ + +!function($){"use strict";function getScrollRoot(){var e,t=document.documentElement,o=document.body,a=(void 0!==window.pageYOffset?window.pageYOffset:null)||o.scrollTop||t.scrollTop;return t.scrollTop=o.scrollTop=a+(a>0)?-1:1,e=t.scrollTop!==a?t:o,e.scrollTop=a,e}var _R=jQuery.fn.revolution,_ISM=_R.is_mobile(),extension={alias:"Actions Min JS",name:"revolution.extensions.actions.min.js",min_core:"5.4.5",version:"2.1.0"};jQuery.extend(!0,_R,{checkActions:function(e,t,o){if("stop"===_R.compare_version(extension).check)return!1;checkActions_intern(e,t,o)}});var checkActions_intern=function(e,t,o){o&&jQuery.each(o,function(o,a){a.delay=parseInt(a.delay,0)/1e3,e.addClass("tp-withaction"),t.fullscreen_esclistener||"exitfullscreen"!=a.action&&"togglefullscreen"!=a.action||(jQuery(document).keyup(function(t){27==t.keyCode&&jQuery("#rs-go-fullscreen").length>0&&e.trigger(a.event)}),t.fullscreen_esclistener=!0);var r="backgroundvideo"==a.layer?jQuery(".rs-background-video-layer"):"firstvideo"==a.layer?jQuery(".tp-revslider-slidesli").find(".tp-videolayer"):jQuery("#"+a.layer);switch(-1!=jQuery.inArray(a.action,["toggleslider","toggle_mute_video","toggle_global_mute_video","togglefullscreen"])&&e.data("togglelisteners",!0),a.action){case"togglevideo":jQuery.each(r,function(t,o){var a=(o=jQuery(o)).data("videotoggledby");void 0==a&&(a=new Array),a.push(e),o.data("videotoggledby",a)});break;case"togglelayer":jQuery.each(r,function(t,o){var r=(o=jQuery(o)).data("layertoggledby");void 0==r&&(r=new Array),r.push(e),o.data("layertoggledby",r),o.data("triggered_startstatus",a.layerstatus)});break;case"toggle_mute_video":case"toggle_global_mute_video":jQuery.each(r,function(t,o){var a=(o=jQuery(o)).data("videomutetoggledby");void 0==a&&(a=new Array),a.push(e),o.data("videomutetoggledby",a)});break;case"toggleslider":void 0==t.slidertoggledby&&(t.slidertoggledby=new Array),t.slidertoggledby.push(e);break;case"togglefullscreen":void 0==t.fullscreentoggledby&&(t.fullscreentoggledby=new Array),t.fullscreentoggledby.push(e)}switch(e.on(a.event,function(){if("click"===a.event&&e.hasClass("tp-temporarydisabled"))return!1;var o="backgroundvideo"==a.layer?jQuery(".active-revslide .slotholder .rs-background-video-layer"):"firstvideo"==a.layer?jQuery(".active-revslide .tp-videolayer").first():jQuery("#"+a.layer);if("stoplayer"==a.action||"togglelayer"==a.action||"startlayer"==a.action){if(o.length>0){var r=o.data();void 0!==r.clicked_time_stamp&&(new Date).getTime()-r.clicked_time_stamp>150&&(clearTimeout(r.triggerdelayIn),clearTimeout(r.triggerdelayOut)),r.clicked_time_stamp=(new Date).getTime(),"startlayer"==a.action||"togglelayer"==a.action&&"in"!=o.data("animdirection")?(r.animdirection="in",r.triggerstate="on",_R.toggleState(r.layertoggledby),_R.playAnimationFrame&&(clearTimeout(r.triggerdelayIn),r.triggerdelayIn=setTimeout(function(){_R.playAnimationFrame({caption:o,opt:t,frame:"frame_0",triggerdirection:"in",triggerframein:"frame_0",triggerframeout:"frame_999"})},1e3*a.delay))):("stoplayer"==a.action||"togglelayer"==a.action&&"out"!=o.data("animdirection"))&&(r.animdirection="out",r.triggered=!0,r.triggerstate="off",_R.stopVideo&&_R.stopVideo(o,t),_R.unToggleState(r.layertoggledby),_R.endMoveCaption&&(clearTimeout(r.triggerdelayOut),r.triggerdelayOut=setTimeout(function(){_R.playAnimationFrame({caption:o,opt:t,frame:"frame_999",triggerdirection:"out",triggerframein:"frame_0",triggerframeout:"frame_999"})},1e3*a.delay)))}}else!_ISM||"playvideo"!=a.action&&"stopvideo"!=a.action&&"togglevideo"!=a.action&&"mutevideo"!=a.action&&"unmutevideo"!=a.action&&"toggle_mute_video"!=a.action&&"toggle_global_mute_video"!=a.action?(a.delay="NaN"===a.delay||NaN===a.delay?0:a.delay,_R.isSafari11()?actionSwitches(o,t,a,e):punchgs.TweenLite.delayedCall(a.delay,function(){actionSwitches(o,t,a,e)},[o,t,a,e])):actionSwitches(o,t,a,e)}),a.action){case"togglelayer":case"startlayer":case"playlayer":case"stoplayer":var l=(r=jQuery("#"+a.layer)).data();r.length>0&&void 0!==l&&(void 0!==l.frames&&"bytrigger"!=l.frames[0].delay||void 0===l.frames&&"bytrigger"!==l.start)&&(l.triggerstate="on")}})},actionSwitches=function(tnc,opt,a,_nc){switch(a.action){case"scrollbelow":a.speed=void 0!==a.speed?a.speed:400,a.ease=void 0!==a.ease?a.ease:punchgs.Power2.easeOut,_nc.addClass("tp-scrollbelowslider"),_nc.data("scrolloffset",a.offset),_nc.data("scrolldelay",a.delay),_nc.data("scrollspeed",a.speed),_nc.data("scrollease",a.ease);var off=getOffContH(opt.fullScreenOffsetContainer)||0,aof=parseInt(a.offset,0)||0;off=off-aof||0,opt.scrollRoot=jQuery(document);var sobj={_y:opt.scrollRoot.scrollTop()};punchgs.TweenLite.to(sobj,a.speed/1e3,{_y:opt.c.offset().top+jQuery(opt.li[0]).height()-off,ease:a.ease,onUpdate:function(){opt.scrollRoot.scrollTop(sobj._y)}});break;case"callback":eval(a.callback);break;case"jumptoslide":switch(a.slide.toLowerCase()){case"+1":case"next":opt.sc_indicator="arrow",_R.callingNewSlide(opt.c,1);break;case"previous":case"prev":case"-1":opt.sc_indicator="arrow",_R.callingNewSlide(opt.c,-1);break;default:var ts=jQuery.isNumeric(a.slide)?parseInt(a.slide,0):a.slide;_R.callingNewSlide(opt.c,ts)}break;case"simplelink":window.open(a.url,a.target);break;case"toggleslider":opt.noloopanymore=0,"playing"==opt.sliderstatus?(opt.c.revpause(),opt.forcepause_viatoggle=!0,_R.unToggleState(opt.slidertoggledby)):(opt.forcepause_viatoggle=!1,opt.c.revresume(),_R.toggleState(opt.slidertoggledby));break;case"pauseslider":opt.c.revpause(),_R.unToggleState(opt.slidertoggledby);break;case"playslider":opt.noloopanymore=0,opt.c.revresume(),_R.toggleState(opt.slidertoggledby);break;case"playvideo":tnc.length>0&&_R.playVideo(tnc,opt);break;case"stopvideo":tnc.length>0&&_R.stopVideo&&_R.stopVideo(tnc,opt);break;case"togglevideo":tnc.length>0&&(_R.isVideoPlaying(tnc,opt)?_R.stopVideo&&_R.stopVideo(tnc,opt):_R.playVideo(tnc,opt));break;case"mutevideo":tnc.length>0&&_R.muteVideo(tnc,opt);break;case"unmutevideo":tnc.length>0&&_R.unMuteVideo&&_R.unMuteVideo(tnc,opt);break;case"toggle_mute_video":tnc.length>0&&(_R.isVideoMuted(tnc,opt)?_R.unMuteVideo(tnc,opt):_R.muteVideo&&_R.muteVideo(tnc,opt)),_nc.toggleClass("rs-toggle-content-active");break;case"toggle_global_mute_video":!0===opt.globalmute?(opt.globalmute=!1,void 0!=opt.playingvideos&&opt.playingvideos.length>0&&jQuery.each(opt.playingvideos,function(e,t){_R.unMuteVideo&&_R.unMuteVideo(t,opt)})):(opt.globalmute=!0,void 0!=opt.playingvideos&&opt.playingvideos.length>0&&jQuery.each(opt.playingvideos,function(e,t){_R.muteVideo&&_R.muteVideo(t,opt)})),_nc.toggleClass("rs-toggle-content-active");break;case"simulateclick":tnc.length>0&&tnc.click();break;case"toggleclass":tnc.length>0&&(tnc.hasClass(a.classname)?tnc.removeClass(a.classname):tnc.addClass(a.classname));break;case"gofullscreen":case"exitfullscreen":case"togglefullscreen":if(jQuery(".rs-go-fullscreen").length>0&&("togglefullscreen"==a.action||"exitfullscreen"==a.action)){jQuery(".rs-go-fullscreen").removeClass("rs-go-fullscreen");var gf=opt.c.closest(".forcefullwidth_wrapper_tp_banner").length>0?opt.c.closest(".forcefullwidth_wrapper_tp_banner"):opt.c.closest(".rev_slider_wrapper");opt.minHeight=opt.oldminheight,opt.infullscreenmode=!1,opt.c.revredraw(),jQuery(window).trigger("resize"),_R.unToggleState(opt.fullscreentoggledby)}else if(0==jQuery(".rs-go-fullscreen").length&&("togglefullscreen"==a.action||"gofullscreen"==a.action)){var gf=opt.c.closest(".forcefullwidth_wrapper_tp_banner").length>0?opt.c.closest(".forcefullwidth_wrapper_tp_banner"):opt.c.closest(".rev_slider_wrapper");gf.addClass("rs-go-fullscreen"),opt.oldminheight=opt.minHeight,opt.minHeight=jQuery(window).height(),opt.infullscreenmode=!0,opt.c.revredraw(),jQuery(window).trigger("resize"),_R.toggleState(opt.fullscreentoggledby)}break;default:var obj={};obj.event=a,obj.layer=_nc,opt.c.trigger("layeraction",[obj])}},getOffContH=function(e){if(void 0==e)return 0;if(e.split(",").length>1){var t=e.split(","),o=0;return t&&jQuery.each(t,function(e,t){jQuery(t).length>0&&(o+=jQuery(t).outerHeight(!0))}),o}return jQuery(e).height()}}(jQuery); \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/js/extensions/revolution.extension.carousel.min.js b/think.greaterchiangmai.com/public/revolution/js/extensions/revolution.extension.carousel.min.js new file mode 100644 index 0000000..85a386c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/js/extensions/revolution.extension.carousel.min.js @@ -0,0 +1,7 @@ +/******************************************** + * REVOLUTION 5.4 EXTENSION - CAROUSEL + * @version: 1.2.1 (18.11.2016) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ +!function(a){"use strict";var b=jQuery.fn.revolution,c={alias:"Carousel Min JS",name:"revolution.extensions.carousel.min.js",min_core:"5.3.0",version:"1.2.1"};jQuery.extend(!0,b,{prepareCarousel:function(a,d,h,i){return"stop"!==b.compare_version(c).check&&(h=a.carousel.lastdirection=f(h,a.carousel.lastdirection),e(a),a.carousel.slide_offset_target=j(a),void(void 0!==i?g(a,h,!1,0):void 0==d?b.carouselToEvalPosition(a,h):g(a,h,!1)))},carouselToEvalPosition:function(a,c){var d=a.carousel;c=d.lastdirection=f(c,d.lastdirection);var e="center"===d.horizontal_align?(d.wrapwidth/2-d.slide_width/2-d.slide_globaloffset)/d.slide_width:(0-d.slide_globaloffset)/d.slide_width,h=b.simp(e,a.slideamount,!1),i=h-Math.floor(h),j=0,k=-1*(Math.ceil(h)-h),l=-1*(Math.floor(h)-h);j=i>=.3&&"left"===c||i>=.7&&"right"===c?k:i<.3&&"left"===c||i<.7&&"right"===c?l:j,j="off"===d.infinity?h<0?h:e>a.slideamount-1?e-(a.slideamount-1):j:j,d.slide_offset_target=j*d.slide_width,0!==Math.abs(d.slide_offset_target)?g(a,c,!0):b.organiseCarousel(a,c)},organiseCarousel:function(a,b,c,d){b=void 0===b||"down"==b||"up"==b||null===b||jQuery.isEmptyObject(b)?"left":b;for(var e=a.carousel,f=new Array,g=e.slides.length,i=("right"===e.horizontal_align?a.width:0,0);ie.wrapwidth-e.inneroffset&&"right"==b?e.slide_offset-(e.slides.length-i)*e.slide_width:j,j=j<0-e.inneroffset-e.slide_width&&"left"==b?j+e.maxwidth:j),f[i]=j}var k=999;e.slides&&jQuery.each(e.slides,function(d,h){var i=f[d];"on"===e.infinity&&(i=i>e.wrapwidth-e.inneroffset&&"left"===b?f[0]-(g-d)*e.slide_width:i,i=i<0-e.inneroffset-e.slide_width?"left"==b?i+e.maxwidth:"right"===b?f[g-1]+(d+1)*e.slide_width:i:i);var j=new Object;j.left=i+e.inneroffset;var l="center"===e.horizontal_align?(Math.abs(e.wrapwidth/2)-(j.left+e.slide_width/2))/e.slide_width:(e.inneroffset-j.left)/e.slide_width,n="center"===e.horizontal_align?2:1;if((c&&Math.abs(l)0?1-l:Math.abs(l)>e.maxVisibleItems-1?1-(Math.abs(l)-(e.maxVisibleItems-1)):1;break;case"right":j.autoAlpha=l>-1&&l<0?1-Math.abs(l):l>e.maxVisibleItems-1?1-(Math.abs(l)-(e.maxVisibleItems-1)):1}else j.autoAlpha=Math.abs(l)0)if("on"===e.vary_scale){j.scale=1-Math.abs(e.minScale/100/Math.ceil(e.maxVisibleItems/n)*l);var o=(e.slide_width-e.slide_width*j.scale)*Math.abs(l)}else{j.scale=l>=1||l<=-1?1-e.minScale/100:(100-e.minScale*Math.abs(l))/100;var o=(e.slide_width-e.slide_width*(1-e.minScale/100))*Math.abs(l)}void 0!==e.maxRotation&&0!=Math.abs(e.maxRotation)&&("on"===e.vary_rotation?(j.rotationY=Math.abs(e.maxRotation)-Math.abs((1-Math.abs(1/Math.ceil(e.maxVisibleItems/n)*l))*e.maxRotation),j.autoAlpha=Math.abs(j.rotationY)>90?0:j.autoAlpha):j.rotationY=l>=1||l<=-1?e.maxRotation:Math.abs(l)*e.maxRotation,j.rotationY=l<0?j.rotationY*-1:j.rotationY),j.x=-1*e.space*l,j.left=Math.floor(j.left),j.x=Math.floor(j.x),void 0!==j.scale?l<0?j.x-o:j.x+o:j.x,j.zIndex=Math.round(100-Math.abs(5*l)),j.transformStyle="3D"!=a.parallax.type&&"3d"!=a.parallax.type?"flat":"preserve-3d",punchgs.TweenLite.set(h,j)}),d&&(a.c.find(".next-revslide").removeClass("next-revslide"),jQuery(e.slides[e.focused]).addClass("next-revslide"),a.c.trigger("revolution.nextslide.waiting"));e.wrapwidth/2-e.slide_offset,e.maxwidth+e.slide_offset-e.wrapwidth/2}});var d=function(a){var b=a.carousel;b.infbackup=b.infinity,b.maxVisiblebackup=b.maxVisibleItems,b.slide_globaloffset="none",b.slide_offset=0,b.wrap=a.c.find(".tp-carousel-wrapper"),b.slides=a.c.find(".tp-revslider-slidesli"),0!==b.maxRotation&&("3D"!=a.parallax.type&&"3d"!=a.parallax.type?punchgs.TweenLite.set(b.wrap,{perspective:1200,transformStyle:"flat"}):punchgs.TweenLite.set(b.wrap,{perspective:1600,transformStyle:"preserve-3d"})),void 0!==b.border_radius&&parseInt(b.border_radius,0)>0&&punchgs.TweenLite.set(a.c.find(".tp-revslider-slidesli"),{borderRadius:b.border_radius})},e=function(a){void 0===a.bw&&b.setSize(a);var c=a.carousel,e=b.getHorizontalOffset(a.c,"left"),f=b.getHorizontalOffset(a.c,"right");void 0===c.wrap&&d(a),c.slide_width="on"!==c.stretch?a.gridwidth[a.curWinRange]*a.bw:a.c.width(),c.maxwidth=a.slideamount*c.slide_width,c.maxVisiblebackup>c.slides.length+1&&(c.maxVisibleItems=c.slides.length+2),c.wrapwidth=c.maxVisibleItems*c.slide_width+(c.maxVisibleItems-1)*c.space,c.wrapwidth="auto"!=a.sliderLayout?c.wrapwidth>a.c.closest(".tp-simpleresponsive").width()?a.c.closest(".tp-simpleresponsive").width():c.wrapwidth:c.wrapwidth>a.ul.width()?a.ul.width():c.wrapwidth,c.infinity=c.wrapwidth>=c.maxwidth?"off":c.infbackup,c.wrapoffset="center"===c.horizontal_align?(a.c.width()-f-e-c.wrapwidth)/2:0,c.wrapoffset="auto"!=a.sliderLayout&&a.outernav?0:c.wrapoffsetMath.abs(b)?a>0?a-Math.abs(Math.floor(a/b)*b):a+Math.abs(Math.floor(a/b)*b):a},i=function(a,b,c){var c,c,d=b-a,e=b-c-a;return d=h(d,c),e=h(e,c),Math.abs(d)>Math.abs(e)?e:d},j=function(a){var c=0,d=a.carousel;if(void 0!==d.positionanim&&d.positionanim.kill(),"none"==d.slide_globaloffset)d.slide_globaloffset=c="center"===d.horizontal_align?d.wrapwidth/2-d.slide_width/2:0;else{d.slide_globaloffset=d.slide_offset,d.slide_offset=0;var e=a.c.find(".processing-revslide").index(),f="center"===d.horizontal_align?(d.wrapwidth/2-d.slide_width/2-d.slide_globaloffset)/d.slide_width:(0-d.slide_globaloffset)/d.slide_width;f=b.simp(f,a.slideamount,!1),e=e>=0?e:a.c.find(".active-revslide").index(),e=e>=0?e:0,c="off"===d.infinity?f-e:-i(f,e,a.slideamount),c*=d.slide_width}return c}}(jQuery); \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/js/extensions/revolution.extension.kenburn.min.js b/think.greaterchiangmai.com/public/revolution/js/extensions/revolution.extension.kenburn.min.js new file mode 100644 index 0000000..79488da --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/js/extensions/revolution.extension.kenburn.min.js @@ -0,0 +1,7 @@ +/******************************************** + * REVOLUTION 5.4.6.5 EXTENSION - KEN BURN + * @version: 1.3.1 (15.05.2017) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ +!function(a){"use strict";var b=jQuery.fn.revolution,c={alias:"KenBurns Min JS",name:"revolution.extensions.kenburn.min.js",min_core:"5.4",version:"1.3.1"};jQuery.extend(!0,b,{stopKenBurn:function(a){if("stop"===b.compare_version(c).check)return!1;void 0!=a.data("kbtl")&&a.data("kbtl").pause()},startKenBurn:function(a,d,e){if("stop"===b.compare_version(c).check)return!1;var f=a.data(),g=a.find(".defaultimg"),h=g.data("lazyload")||g.data("src"),j=(f.owidth,f.oheight,"carousel"===d.sliderType?d.carousel.slide_width:d.ul.width()),k=d.ul.height();if(a.data("kbtl")&&a.data("kbtl").kill(),e=e||0,0==a.find(".tp-kbimg").length){var m=g.data("mediafilter");m=void 0===m?"":m,a.append('
      '),a.data("kenburn",a.find(".tp-kbimg"))}var n=function(a,b,c,d,e,f,g){var h=a*c,i=b*c,j=Math.abs(d-h),k=Math.abs(e-i),l=new Object;return l.l=(0-f)*j,l.r=l.l+h,l.t=(0-g)*k,l.b=l.t+i,l.h=f,l.v=g,l},o=function(a,b,c,d,e){var f=a.bgposition.split(" ")||"center center",g="center"==f[0]?"50%":"left"==f[0]||"left"==f[1]?"0%":"right"==f[0]||"right"==f[1]?"100%":f[0],h="center"==f[1]?"50%":"top"==f[0]||"top"==f[1]?"0%":"bottom"==f[0]||"bottom"==f[1]?"100%":f[1];g=parseInt(g,0)/100||0,h=parseInt(h,0)/100||0;var i=new Object;return i.start=n(e.start.width,e.start.height,e.start.scale,b,c,g,h),i.end=n(e.start.width,e.start.height,e.end.scale,b,c,g,h),i},p=function(a,b,c){var d=c.scalestart/100,e=c.scaleend/100,f=void 0!=c.offsetstart?c.offsetstart.split(" ")||[0,0]:[0,0],g=void 0!=c.offsetend?c.offsetend.split(" ")||[0,0]:[0,0];c.bgposition="center center"==c.bgposition?"50% 50%":c.bgposition;var h=new Object,i=a*d,k=(c.owidth,c.oheight,a*e);c.owidth,c.oheight;if(h.start=new Object,h.starto=new Object,h.end=new Object,h.endo=new Object,h.start.width=a,h.start.height=h.start.width/c.owidth*c.oheight,h.start.height0?0:p+f[0]0?0:r+g[0]0?0:q+f[1]0?0:s+g[1]');var d=t.find(".helpgrid");d.append('
      Zoom:'+Math.round(100*p.bw)+"%     Device Level:"+p.curWinRange+"    Grid Preset:"+p.gridwidth[p.curWinRange]+"x"+p.gridheight[p.curWinRange]+"
      "),p.c.append('
      '),d.append('
      ')}void 0!==a&&p.layers[a]&&jQuery.each(p.layers[a],function(e,t){var i=jQuery(this);A.updateMarkup(this,p),A.prepareSingleCaption({caption:i,opt:p,offsetx:s,offsety:0,index:e,recall:n,preset:r}),r&&0!==o||A.buildFullTimeLine({caption:i,opt:p,offsetx:s,offsety:0,index:e,recall:n,preset:r,regenerate:0===o}),n&&"carousel"===p.sliderType&&"on"===p.carousel.showLayersAllTime&&A.animcompleted(i,p)}),p.layers.static&&jQuery.each(p.layers.static,function(e,t){var i=jQuery(this),a=i.data();!0!==a.hoveredstatus&&!0!==a.inhoveroutanimation?(A.updateMarkup(this,p),A.prepareSingleCaption({caption:i,opt:p,offsetx:s,offsety:0,index:e,recall:n,preset:r}),r&&0!==o||!0===a.veryfirstststic||(A.buildFullTimeLine({caption:i,opt:p,offsetx:s,offsety:0,index:e,recall:n,preset:r,regenerate:0===o}),a.veryfirstststic=!0),n&&"carousel"===p.sliderType&&"on"===p.carousel.showLayersAllTime&&A.animcompleted(i,p)):A.prepareSingleCaption({caption:i,opt:p,offsetx:s,offsety:0,index:e,recall:n,preset:r})});var g=-1===p.nextSlide||void 0===p.nextSlide?0:p.nextSlide;void 0!==p.rowzones&&(g=g>p.rowzones.length?p.rowzones.length:g),null!=p.rowzones&&0=t.firstslide&&g<=t.lastslide,n=gt.lastslide,r=t.timeline.getLabelTime("slide_"+t.firstslide),o=t.timeline.getLabelTime("slide_"+t.lastslide),s=i.static_layer_timeline_time,d="in"===i.animdirection||"out"!==i.animdirection&&void 0,l="bytrigger"===i.frames[0].delay,m=(i.frames[i.frames.length-1].delay,i.triggered_startstatus),c=i.lasttriggerstate;!0!==i.hoveredstatus&&1!=i.inhoveroutanimation&&(void 0!==s&&d&&("keep"==c?(A.playAnimationFrame({caption:t.layer,opt:p,frame:"frame_0",triggerdirection:"in",triggerframein:"frame_0",triggerframeout:"frame_999"}),i.triggeredtimeline.time(s)):!0!==i.hoveredstatus&&t.timeline.time(s)),"reset"===c&&"hidden"===m&&(t.timeline.time(0),i.animdirection="out"),a?d?g===t.lastslide&&(t.timeline.play(o),i.animdirection="in"):(l||"in"===i.animdirection||t.timeline.play(r),("visible"==m&&"keep"!==c||"keep"===c&&!0===d||"visible"==m&&void 0===d)&&(t.timeline.play(r+.01),i.animdirection="in")):n&&d&&t.timeline.play("frame_999"))})),null!=i&&setTimeout(function(){i.resume()},30)},prepareSingleCaption:function(e){var t=e.caption,i=t.data(),a=e.opt,n=e.recall,r=e.recall,o=(e.preset,jQuery("body").hasClass("rtl"));if(i._pw=void 0===i._pw?t.closest(".tp-parallax-wrap"):i._pw,i._lw=void 0===i._lw?t.closest(".tp-loop-wrap"):i._lw,i._mw=void 0===i._mw?t.closest(".tp-mask-wrap"):i._mw,i._responsive=i.responsive||"on",i._respoffset=i.responsive_offset||"on",i._ba=i.basealign||"grid",i._gw="grid"===i._ba?a.width:a.ulw,i._gh="grid"===i._ba?a.height:a.ulh,i._lig=void 0===i._lig?t.hasClass("rev_layer_in_group")?t.closest(".rev_group"):t.hasClass("rev_layer_in_column")?t.closest(".rev_column_inner"):t.hasClass("rev_column_inner")?t.closest(".rev_row"):"none":i._lig,i._column=void 0===i._column?t.hasClass("rev_column_inner")?t.closest(".rev_column"):"none":i._column,i._row=void 0===i._row?t.hasClass("rev_column_inner")?t.closest(".rev_row"):"none":i._row,i._ingroup=void 0===i._ingroup?!(t.hasClass("rev_group")||!t.closest(".rev_group")):i._ingroup,i._isgroup=void 0===i._isgroup?!!t.hasClass("rev_group"):i._isgroup,i._nctype=i.type||"none",i._cbgc_auto=void 0===i._cbgc_auto?"column"===i._nctype&&i._pw.find(".rev_column_bg_auto_sized"):i._cbgc_auto,i._cbgc_man=void 0===i._cbgc_man?"column"===i._nctype&&i._pw.find(".rev_column_bg_man_sized"):i._cbgc_man,i._slideid=i._slideid||t.closest(".tp-revslider-slidesli").data("index"),i._id=void 0===i._id?t.data("id")||t.attr("id"):i._id,i._slidelink=void 0===i._slidelink?void 0!==t.hasClass("slidelink")&&t.hasClass("slidelink"):i._slidelink,void 0===i._li&&(t.hasClass("tp-static-layer")?(i._isstatic=!0,i._li=t.closest(".tp-static-layers"),i._slideid="staticlayers"):i._li=t.closest(".tp-revslider-slidesli")),i._row=void 0===i._row?"column"===i._nctype&&i._pw.closest(".rev_row"):i._row,void 0===i._togglelisteners&&t.find(".rs-toggled-content")?(i._togglelisteners=!0,void 0===i.actions&&t.click(function(){A.swaptoggleState(t)})):i._togglelisteners=!1,"fullscreen"==a.sliderLayout&&(e.offsety=i._gh/2-a.gridheight[a.curWinRange]*a.bh/2),("on"==a.autoHeight||null!=a.minHeight&&0'+e+":"+t+"    ")}),s.html(i)})}if("off"===(void 0===i.visibility?"oon":N(i.visibility,a)[a.forcedWinRange]||N(i.visibility,a)||"ooon")||i._gw'),i._mw.append(i._bmask)),i.arrobj=new Object,i.arrobj.voa=N(i.voffset,a)[a.curWinRange]||N(i.voffset,a)[0],i.arrobj.hoa=N(i.hoffset,a)[a.curWinRange]||N(i.hoffset,a)[0],i.arrobj.elx=N(i.x,a)[a.curWinRange]||N(i.x,a)[0],i.arrobj.ely=N(i.y,a)[a.curWinRange]||N(i.y,a)[0];var j=0==i.arrobj.voa.length?0:i.arrobj.voa,L=0==i.arrobj.hoa.length?0:i.arrobj.hoa,I=0==i.arrobj.elx.length?0:i.arrobj.elx,W=0==i.arrobj.ely.length?0:i.arrobj.ely;i.eow=t.outerWidth(!0),i.eoh=t.outerHeight(!0),0==i.eow&&0==i.eoh&&(i.eow=a.ulw,i.eoh=a.ulh);var R="off"!==i._respoffset?parseInt(j,0)*a.bw:parseInt(j,0),C="off"!==i._respoffset?parseInt(L,0)*a.bw:parseInt(L,0),z="grid"===i._ba?a.gridwidth[a.curWinRange]*a.bw:i._gw,O="grid"===i._ba?a.gridheight[a.curWinRange]*a.bw:i._gh;"on"==a.fullScreenAlignForce&&(z=a.ulw,O=a.ulh),"none"!==i._lig&&null!=i._lig&&(z=i._lig.width(),O=i._lig.height(),e.offsetx=0,e.offsety=0),I="center"===I||"middle"===I?z/2-i.eow/2+C:"left"===I?C:"right"===I?z-i.eow-C:"off"!==i._respoffset?I*a.bw:I,W="center"==W||"middle"==W?O/2-i.eoh/2+R:"top"==W?R:"bottom"==W?O-i.eoh-R:"off"!==i._respoffset?W*a.bw:W,o&&!i._slidelink&&(I+=i.eow),i._slidelink&&(I=0),i.calcx=parseInt(I,0)+e.offsetx,i.calcy=parseInt(W,0)+e.offsety;var Q=t.css("z-Index");if("row"!==i._nctype&&"column"!==i._nctype)punchgs.TweenLite.set(i._pw,{zIndex:Q,top:i.calcy,left:i.calcx,overwrite:"auto"});else if("row"!==i._nctype)punchgs.TweenLite.set(i._pw,{zIndex:Q,width:i.columnwidth,top:0,left:0,overwrite:"auto"});else if("row"===i._nctype){var S="grid"===i._ba?z+"px":"100%";punchgs.TweenLite.set(i._pw,{zIndex:Q,width:S,top:0,left:e.offsetx,overwrite:"auto"})}if(void 0!==i.blendmode&&punchgs.TweenLite.set(i._pw,{mixBlendMode:i.blendmode}),"row"===i._nctype&&(i.columnbreak<=a.curWinRange?t.addClass("rev_break_columns"):t.removeClass("rev_break_columns")),"on"==i.loopanimation&&punchgs.TweenLite.set(i._lw,{minWidth:i.eow,minHeight:i.eoh}),"column"===i._nctype){var M=void 0!==t[0]._gsTransform?t[0]._gsTransform.y:0,P=parseInt(i._column[0].style.paddingTop,0);punchgs.TweenLite.set(t,{y:0}),punchgs.TweenLite.set(i._cbgc_man,{y:parseInt(P+i._column.offset().top-t.offset().top,0)}),punchgs.TweenLite.set(t,{y:M})}i._ingroup&&"row"!==i._nctype&&(void 0!==i._groupw&&!jQuery.isNumeric(i._groupw)&&0=t.removeonslide||e.currentslide1?1:c<0?0:c,m(e)&&(b||e.width>e.min_width)&&f(c,d,a.c,e,a.slideamount,"tab"),m(g)&&(b||g.width>g.min_width)&&f(c,d,a.c,g,a.slideamount,"thumb"),m(h)&&b){var i=a.c.find(".tp-bullets");i.find(".tp-bullet").each(function(a){var b=jQuery(this),c=a+1,d=b.outerWidth()+parseInt(void 0===h.space?0:h.space,0),e=b.outerHeight()+parseInt(void 0===h.space?0:h.space,0);"vertical"===h.direction?(b.css({top:(c-1)*e+"px",left:"0px"}),i.css({height:(c-1)*e+b.outerHeight(),width:b.outerWidth()})):(b.css({left:(c-1)*d+"px",top:"0px"}),i.css({width:(c-1)*d+b.outerWidth(),height:b.outerHeight()}))})}d.play(),x(a)}return!0},updateNavIndexes:function(a){function d(a){c.find(a).lenght>0&&c.find(a).each(function(a){jQuery(this).data("liindex",a)})}var c=a.c;d(".tp-tab"),d(".tp-bullet"),d(".tp-thumb"),b.resizeThumbsTabs(a,!0),b.manageNavigation(a)},manageNavigation:function(a){var c=b.getHorizontalOffset(a.c.parent(),"left"),d=b.getHorizontalOffset(a.c.parent(),"right");m(a.navigation.bullets)&&("fullscreen"!=a.sliderLayout&&"fullwidth"!=a.sliderLayout&&(a.navigation.bullets.h_offset_old=void 0===a.navigation.bullets.h_offset_old?a.navigation.bullets.h_offset:a.navigation.bullets.h_offset_old,a.navigation.bullets.h_offset="center"===a.navigation.bullets.h_align?a.navigation.bullets.h_offset_old+c/2-d/2:a.navigation.bullets.h_offset_old+c-d),t(a.c.find(".tp-bullets"),a.navigation.bullets,a)),m(a.navigation.thumbnails)&&t(a.c.parent().find(".tp-thumbs"),a.navigation.thumbnails,a),m(a.navigation.tabs)&&t(a.c.parent().find(".tp-tabs"),a.navigation.tabs,a),m(a.navigation.arrows)&&("fullscreen"!=a.sliderLayout&&"fullwidth"!=a.sliderLayout&&(a.navigation.arrows.left.h_offset_old=void 0===a.navigation.arrows.left.h_offset_old?a.navigation.arrows.left.h_offset:a.navigation.arrows.left.h_offset_old,a.navigation.arrows.left.h_offset="right"===a.navigation.arrows.left.h_align?a.navigation.arrows.left.h_offset_old+d:a.navigation.arrows.left.h_offset_old+c,a.navigation.arrows.right.h_offset_old=void 0===a.navigation.arrows.right.h_offset_old?a.navigation.arrows.right.h_offset:a.navigation.arrows.right.h_offset_old,a.navigation.arrows.right.h_offset="right"===a.navigation.arrows.right.h_align?a.navigation.arrows.right.h_offset_old+d:a.navigation.arrows.right.h_offset_old+c),t(a.c.find(".tp-leftarrow.tparrows"),a.navigation.arrows.left,a),t(a.c.find(".tp-rightarrow.tparrows"),a.navigation.arrows.right,a)),m(a.navigation.thumbnails)&&e(a.c.parent().find(".tp-thumbs"),a.navigation.thumbnails),m(a.navigation.tabs)&&e(a.c.parent().find(".tp-tabs"),a.navigation.tabs)},createNavigation:function(a,f){if("stop"===b.compare_version(d).check)return!1;var g=a.parent(),j=f.navigation.arrows,n=f.navigation.bullets,r=f.navigation.thumbnails,s=f.navigation.tabs,t=m(j),v=m(n),x=m(r),y=m(s);h(a,f),i(a,f),t&&q(a,j,f),f.li.each(function(b){var c=jQuery(f.li[f.li.length-1-b]),d=jQuery(this);v&&(f.navigation.bullets.rtl?u(a,n,c,f):u(a,n,d,f)),x&&(f.navigation.thumbnails.rtl?w(a,r,c,"tp-thumb",f):w(a,r,d,"tp-thumb",f)),y&&(f.navigation.tabs.rtl?w(a,s,c,"tp-tab",f):w(a,s,d,"tp-tab",f))}),a.bind("revolution.slide.onafterswap revolution.nextslide.waiting",function(){var b=0==a.find(".next-revslide").length?a.find(".active-revslide").data("index"):a.find(".next-revslide").data("index");a.find(".tp-bullet").each(function(){var a=jQuery(this);a.data("liref")===b?a.addClass("selected"):a.removeClass("selected")}),g.find(".tp-thumb, .tp-tab").each(function(){var a=jQuery(this);a.data("liref")===b?(a.addClass("selected"),a.hasClass("tp-tab")?e(g.find(".tp-tabs"),s):e(g.find(".tp-thumbs"),r)):a.removeClass("selected")});var c=0,d=!1;f.thumbs&&jQuery.each(f.thumbs,function(a,e){c=!1===d?a:c,d=e.id===b||a===b||d});var h=c>0?c-1:f.slideamount-1,i=c+1==f.slideamount?0:c+1;if(!0===j.enable){var k=j.tmp;if(void 0!=f.thumbs[h]&&jQuery.each(f.thumbs[h].params,function(a,b){k=k.replace(b.from,b.to)}),j.left.j.html(k),k=j.tmp,i>f.slideamount)return;jQuery.each(f.thumbs[i].params,function(a,b){k=k.replace(b.from,b.to)}),j.right.j.html(k),j.rtl?(punchgs.TweenLite.set(j.left.j.find(".tp-arr-imgholder"),{backgroundImage:"url("+f.thumbs[i].src+")"}),punchgs.TweenLite.set(j.right.j.find(".tp-arr-imgholder"),{backgroundImage:"url("+f.thumbs[h].src+")"})):(punchgs.TweenLite.set(j.left.j.find(".tp-arr-imgholder"),{backgroundImage:"url("+f.thumbs[h].src+")"}),punchgs.TweenLite.set(j.right.j.find(".tp-arr-imgholder"),{backgroundImage:"url("+f.thumbs[i].src+")"}))}}),l(j),l(n),l(r),l(s),g.on("mouseenter mousemove",function(){g.hasClass("tp-mouseover")||(g.addClass("tp-mouseover"),punchgs.TweenLite.killDelayedCallsTo(p),t&&j.hide_onleave&&p(g.find(".tparrows"),j,"show"),v&&n.hide_onleave&&p(g.find(".tp-bullets"),n,"show"),x&&r.hide_onleave&&p(g.find(".tp-thumbs"),r,"show"),y&&s.hide_onleave&&p(g.find(".tp-tabs"),s,"show"),c&&(g.removeClass("tp-mouseover"),o(a,f)))}),g.on("mouseleave",function(){g.removeClass("tp-mouseover"),o(a,f)}),t&&j.hide_onleave&&p(g.find(".tparrows"),j,"hide",0),v&&n.hide_onleave&&p(g.find(".tp-bullets"),n,"hide",0),x&&r.hide_onleave&&p(g.find(".tp-thumbs"),r,"hide",0),y&&s.hide_onleave&&p(g.find(".tp-tabs"),s,"hide",0),x&&k(g.find(".tp-thumbs"),f),y&&k(g.find(".tp-tabs"),f),"carousel"===f.sliderType&&k(a,f,!0),("on"===f.navigation.touch.touchOnDesktop||"on"==f.navigation.touch.touchenabled&&c)&&k(a,f,"swipebased")}});var e=function(a,b){var d=(a.hasClass("tp-thumbs"),a.hasClass("tp-thumbs")?".tp-thumb-mask":".tp-tab-mask"),e=a.hasClass("tp-thumbs")?".tp-thumbs-inner-wrapper":".tp-tabs-inner-wrapper",f=a.hasClass("tp-thumbs")?".tp-thumb":".tp-tab",g=a.find(d),h=g.find(e),i=b.direction,j="vertical"===i?g.find(f).first().outerHeight(!0)+b.space:g.find(f).first().outerWidth(!0)+b.space,k="vertical"===i?g.height():g.width(),l=parseInt(g.find(f+".selected").data("liindex"),0),m=k/j,n="vertical"===i?g.height():g.width(),o=0-l*j,p="vertical"===i?h.height():h.width(),q=o<0-(p-n)?0-(p-n):q>0?0:o,r=h.data("offset");m>2&&(q=o-(r+j)<=0?o-(r+j)<0-j?r:q+j:q,q=o-j+r+k0?0:q,"vertical"!==i&&g.width()>=h.width()&&(q=0),"vertical"===i&&g.height()>=h.height()&&(q=0),a.hasClass("dragged")||("vertical"===i?h.data("tmmove",punchgs.TweenLite.to(h,.5,{top:q+"px",ease:punchgs.Power3.easeInOut})):h.data("tmmove",punchgs.TweenLite.to(h,.5,{left:q+"px",ease:punchgs.Power3.easeInOut})),h.data("offset",q))},f=function(a,b,c,d,e,f){var g=c.parent().find(".tp-"+f+"s"),h=g.find(".tp-"+f+"s-inner-wrapper"),i=g.find(".tp-"+f+"-mask"),j=d.width*a300||e<-300)&&(e/=10),{spinX:b,spinY:c,pixelX:d,pixelY:e}},h=function(a,c){"on"===c.navigation.keyboardNavigation&&jQuery(document).keydown(function(d){("horizontal"==c.navigation.keyboard_direction&&39==d.keyCode||"vertical"==c.navigation.keyboard_direction&&40==d.keyCode)&&(c.sc_indicator="arrow",c.sc_indicator_dir=0,b.callingNewSlide(a,1)),("horizontal"==c.navigation.keyboard_direction&&37==d.keyCode||"vertical"==c.navigation.keyboard_direction&&38==d.keyCode)&&(c.sc_indicator="arrow",c.sc_indicator_dir=1,b.callingNewSlide(a,-1))})},i=function(a,c){if("on"===c.navigation.mouseScrollNavigation||"carousel"===c.navigation.mouseScrollNavigation){c.isIEEleven=!!navigator.userAgent.match(/Trident.*rv\:11\./),c.isSafari=!!navigator.userAgent.match(/safari/i),c.ischrome=!!navigator.userAgent.match(/chrome/i);var d=c.ischrome?-49:c.isIEEleven||c.isSafari?-9:navigator.userAgent.match(/mozilla/i)?-29:-49,e=c.ischrome?49:c.isIEEleven||c.isSafari?9:navigator.userAgent.match(/mozilla/i)?29:49;a.on("mousewheel DOMMouseScroll",function(f){var h=g(f.originalEvent),i=a.find(".tp-revslider-slidesli.active-revslide").index(),j=a.find(".tp-revslider-slidesli.processing-revslide").index(),k=-1!=i&&0==i||-1!=j&&0==j,l=-1!=i&&i==c.slideamount-1||1!=j&&j==c.slideamount-1,m=!0;"carousel"==c.navigation.mouseScrollNavigation&&(k=l=!1),-1==j?h.pixelYe&&(l||(c.sc_indicator="arrow","reverse"!==c.navigation.mouseScrollReverse&&(c.sc_indicator_dir=0,b.callingNewSlide(a,1)),m=!1),k||(c.sc_indicator="arrow","reverse"===c.navigation.mouseScrollReverse&&(c.sc_indicator_dir=1,b.callingNewSlide(a,-1)),m=!1)):m=!1;var n=c.c.offset().top-jQuery("body").scrollTop(),o=n+c.c.height();return"carousel"!=c.navigation.mouseScrollNavigation?("reverse"!==c.navigation.mouseScrollReverse&&(n>0&&h.pixelY>0||ojQuery(window).height()&&h.pixelY>0)&&(m=!0)):m=!1,0==m?(f.preventDefault(f),!1):void 0})}},j=function(a,b,d){return a=c?jQuery(d.target).closest("."+a).length||jQuery(d.srcElement).closest("."+a).length:jQuery(d.toElement).closest("."+a).length||jQuery(d.originalTarget).closest("."+a).length,!0===a||1===a?1:0},k=function(a,d,e){var f=d.carousel;jQuery(".bullet, .bullets, .tp-bullets, .tparrows").addClass("noSwipe"),f.Limit="endless";var h=(c||b.get_browser(),a),i="vertical"===d.navigation.thumbnails.direction||"vertical"===d.navigation.tabs.direction?"none":"vertical",k=d.navigation.touch.swipe_direction||"horizontal";i="swipebased"==e&&"vertical"==k?"none":e?"vertical":i,jQuery.fn.swipetp||(jQuery.fn.swipetp=jQuery.fn.swipe),jQuery.fn.swipetp.defaults&&jQuery.fn.swipetp.defaults.excludedElements||jQuery.fn.swipetp.defaults||(jQuery.fn.swipetp.defaults=new Object),jQuery.fn.swipetp.defaults.excludedElements="label, button, input, select, textarea, .noSwipe",h.swipetp({allowPageScroll:i,triggerOnTouchLeave:!0,treshold:d.navigation.touch.swipe_treshold,fingers:d.navigation.touch.swipe_min_touches,excludeElements:jQuery.fn.swipetp.defaults.excludedElements,swipeStatus:function(e,g,h,i,l,m,n){var o=j("rev_slider_wrapper",a,e),p=j("tp-thumbs",a,e),q=j("tp-tabs",a,e),r=jQuery(this).attr("class"),s=!!r.match(/tp-tabs|tp-thumb/gi);if("carousel"===d.sliderType&&(("move"===g||"end"===g||"cancel"==g)&&d.dragStartedOverSlider&&!d.dragStartedOverThumbs&&!d.dragStartedOverTabs||"start"===g&&o>0&&0===p&&0===q)){if(c&&("up"===h||"down"===h))return;switch(d.dragStartedOverSlider=!0,i=h&&h.match(/left|up/g)?Math.round(-1*i):i=Math.round(1*i),g){case"start":void 0!==f.positionanim&&(f.positionanim.kill(),f.slide_globaloffset="off"===f.infinity?f.slide_offset:b.simp(f.slide_offset,f.maxwidth)),f.overpull="none",f.wrap.addClass("dragged");break;case"move":if(d.c.find(".tp-withaction").addClass("tp-temporarydisabled"),f.slide_offset="off"===f.infinity?f.slide_globaloffset+i:b.simp(f.slide_globaloffset+i,f.maxwidth),"off"===f.infinity){var t="center"===f.horizontal_align?(f.wrapwidth/2-f.slide_width/2-f.slide_offset)/f.slide_width:(0-f.slide_offset)/f.slide_width;"none"!==f.overpull&&0!==f.overpull||!(t<0||t>d.slideamount-1)?t>=0&&t<=d.slideamount-1&&(t>=0&&i>f.overpull||t<=d.slideamount-1&&id.slideamount-1?f.slide_offset+(f.overpull-i)/1.1-Math.sqrt(Math.abs((f.overpull-i)/1.1)):f.slide_offset}b.organiseCarousel(d,h,!0,!0);break;case"end":case"cancel":f.slide_globaloffset=f.slide_offset,f.wrap.removeClass("dragged"),b.carouselToEvalPosition(d,h),d.dragStartedOverSlider=!1,d.dragStartedOverThumbs=!1,d.dragStartedOverTabs=!1,setTimeout(function(){d.c.find(".tp-withaction").removeClass("tp-temporarydisabled")},19)}}else{if(("move"!==g&&"end"!==g&&"cancel"!=g||d.dragStartedOverSlider||!d.dragStartedOverThumbs&&!d.dragStartedOverTabs)&&!("start"===g&&o>0&&(p>0||q>0))){if("end"==g&&!s){if(d.sc_indicator="arrow","horizontal"==k&&"left"==h||"vertical"==k&&"up"==h)return d.sc_indicator_dir=0,b.callingNewSlide(d.c,1),!1;if("horizontal"==k&&"right"==h||"vertical"==k&&"down"==h)return d.sc_indicator_dir=1,b.callingNewSlide(d.c,-1),!1}return d.dragStartedOverSlider=!1,d.dragStartedOverThumbs=!1,d.dragStartedOverTabs=!1,!0}p>0&&(d.dragStartedOverThumbs=!0),q>0&&(d.dragStartedOverTabs=!0);var u=d.dragStartedOverThumbs?".tp-thumbs":".tp-tabs",v=d.dragStartedOverThumbs?".tp-thumb-mask":".tp-tab-mask",w=d.dragStartedOverThumbs?".tp-thumbs-inner-wrapper":".tp-tabs-inner-wrapper",x=d.dragStartedOverThumbs?".tp-thumb":".tp-tab",y=d.dragStartedOverThumbs?d.navigation.thumbnails:d.navigation.tabs;i=h&&h.match(/left|up/g)?Math.round(-1*i):i=Math.round(1*i);var z=a.parent().find(v),A=z.find(w),B=y.direction,C="vertical"===B?A.height():A.width(),D="vertical"===B?z.height():z.width(),E="vertical"===B?z.find(x).first().outerHeight(!0)+y.space:z.find(x).first().outerWidth(!0)+y.space,F=void 0===A.data("offset")?0:parseInt(A.data("offset"),0),G=0;switch(g){case"start":a.parent().find(u).addClass("dragged"),F="vertical"===B?A.position().top:A.position().left,A.data("offset",F),A.data("tmmove")&&A.data("tmmove").pause();break;case"move":if(C<=D)return!1;G=F+i,G=G>0?"horizontal"===B?G-A.width()*(G/A.width()*G/A.width()):G-A.height()*(G/A.height()*G/A.height()):G;var H="vertical"===B?0-(A.height()-z.height()):0-(A.width()-z.width());G=G0?0:G,G=Math.abs(i)>E/10?i<=0?Math.floor(G/E)*E:Math.ceil(G/E)*E:i<0?Math.ceil(G/E)*E:Math.floor(G/E)*E,G="vertical"===B?G<0-(A.height()-z.height())?0-(A.height()-z.height()):G:G<0-(A.width()-z.width())?0-(A.width()-z.width()):G,G=G>0?0:G,"vertical"===B?punchgs.TweenLite.to(A,.5,{top:G+"px",ease:punchgs.Power3.easeOut}):punchgs.TweenLite.to(A,.5,{left:G+"px",ease:punchgs.Power3.easeOut}),G=G||("vertical"===B?A.position().top:A.position().left),A.data("offset",G),A.data("distance",i),setTimeout(function(){d.dragStartedOverSlider=!1,d.dragStartedOverThumbs=!1,d.dragStartedOverTabs=!1},100),a.parent().find(u).removeClass("dragged"),!1}}}})},l=function(a){a.hide_delay=jQuery.isNumeric(parseInt(a.hide_delay,0))?a.hide_delay/1e3:.2,a.hide_delay_mobile=jQuery.isNumeric(parseInt(a.hide_delay_mobile,0))?a.hide_delay_mobile/1e3:.2},m=function(a){return a&&a.enable},n=function(a){return a&&a.enable&&!0===a.hide_onleave&&(void 0===a.position||!a.position.match(/outer/g))},o=function(a,b){var d=a.parent();n(b.navigation.arrows)&&punchgs.TweenLite.delayedCall(c?b.navigation.arrows.hide_delay_mobile:b.navigation.arrows.hide_delay,p,[d.find(".tparrows"),b.navigation.arrows,"hide"]),n(b.navigation.bullets)&&punchgs.TweenLite.delayedCall(c?b.navigation.bullets.hide_delay_mobile:b.navigation.bullets.hide_delay,p,[d.find(".tp-bullets"),b.navigation.bullets,"hide"]),n(b.navigation.thumbnails)&&punchgs.TweenLite.delayedCall(c?b.navigation.thumbnails.hide_delay_mobile:b.navigation.thumbnails.hide_delay,p,[d.find(".tp-thumbs"),b.navigation.thumbnails,"hide"]),n(b.navigation.tabs)&&punchgs.TweenLite.delayedCall(c?b.navigation.tabs.hide_delay_mobile:b.navigation.tabs.hide_delay,p,[d.find(".tp-tabs"),b.navigation.tabs,"hide"])},p=function(a,b,c,d){switch(d=void 0===d?.5:d,c){case"show":punchgs.TweenLite.to(a,d,{autoAlpha:1,ease:punchgs.Power3.easeInOut,overwrite:"auto"});break;case"hide":punchgs.TweenLite.to(a,d,{autoAlpha:0,ease:punchgs.Power3.easeInOu,overwrite:"auto"})}},q=function(a,b,c){b.style=void 0===b.style?"":b.style,b.left.style=void 0===b.left.style?"":b.left.style,b.right.style=void 0===b.right.style?"":b.right.style,0===a.find(".tp-leftarrow.tparrows").length&&a.append('
      '+b.tmp+"
      "),0===a.find(".tp-rightarrow.tparrows").length&&a.append('
      '+b.tmp+"
      ");var d=a.find(".tp-leftarrow.tparrows"),e=a.find(".tp-rightarrow.tparrows");b.rtl?(d.click(function(){c.sc_indicator="arrow",c.sc_indicator_dir=0,a.revnext()}),e.click(function(){c.sc_indicator="arrow",c.sc_indicator_dir=1,a.revprev()})):(e.click(function(){c.sc_indicator="arrow",c.sc_indicator_dir=0,a.revnext()}),d.click(function(){c.sc_indicator="arrow",c.sc_indicator_dir=1,a.revprev()})),b.right.j=a.find(".tp-rightarrow.tparrows"),b.left.j=a.find(".tp-leftarrow.tparrows"),b.padding_top=parseInt(c.carousel.padding_top||0,0),b.padding_bottom=parseInt(c.carousel.padding_bottom||0,0),t(d,b.left,c),t(e,b.right,c),b.left.opt=c,b.right.opt=c,"outer-left"!=b.position&&"outer-right"!=b.position||(c.outernav=!0)},r=function(a,b,c){var d=a.outerHeight(!0),f=(a.outerWidth(!0),void 0==b.opt?0:0==c.conh?c.height:c.conh),g="layergrid"==b.container?"fullscreen"==c.sliderLayout?c.height/2-c.gridheight[c.curWinRange]*c.bh/2:"on"==c.autoHeight||void 0!=c.minHeight&&c.minHeight>0?f/2-c.gridheight[c.curWinRange]*c.bh/2:0:0,h="top"===b.v_align?{top:"0px",y:Math.round(b.v_offset+g)+"px"}:"center"===b.v_align?{top:"50%",y:Math.round(0-d/2+b.v_offset)+"px"}:{top:"100%",y:Math.round(0-(d+b.v_offset+g))+"px"};a.hasClass("outer-bottom")||punchgs.TweenLite.set(a,h)},s=function(a,b,c){var e=(a.outerHeight(!0),a.outerWidth(!0)),f="layergrid"==b.container?"carousel"===c.sliderType?0:c.width/2-c.gridwidth[c.curWinRange]*c.bw/2:0,g="left"===b.h_align?{left:"0px",x:Math.round(b.h_offset+f)+"px"}:"center"===b.h_align?{left:"50%",x:Math.round(0-e/2+b.h_offset)+"px"}:{left:"100%",x:Math.round(0-(e+b.h_offset+f))+"px"};punchgs.TweenLite.set(a,g)},t=function(a,b,c){var d=a.closest(".tp-simpleresponsive").length>0?a.closest(".tp-simpleresponsive"):a.closest(".tp-revslider-mainul").length>0?a.closest(".tp-revslider-mainul"):a.closest(".rev_slider_wrapper").length>0?a.closest(".rev_slider_wrapper"):a.parent().find(".tp-revslider-mainul"),e=d.width(),f=d.height();if(r(a,b,c),s(a,b,c),"outer-left"!==b.position||"fullwidth"!=b.sliderLayout&&"fullscreen"!=b.sliderLayout?"outer-right"!==b.position||"fullwidth"!=b.sliderLayout&&"fullscreen"!=b.sliderLayout||punchgs.TweenLite.set(a,{right:0-a.outerWidth()+"px",x:b.h_offset+"px"}):punchgs.TweenLite.set(a,{left:0-a.outerWidth()+"px",x:b.h_offset+"px"}),a.hasClass("tp-thumbs")||a.hasClass("tp-tabs")){var g=a.data("wr_padding"),h=a.data("maxw"),i=a.data("maxh"),j=a.hasClass("tp-thumbs")?a.find(".tp-thumb-mask"):a.find(".tp-tab-mask"),k=parseInt(b.padding_top||0,0),l=parseInt(b.padding_bottom||0,0);h>e&&"outer-left"!==b.position&&"outer-right"!==b.position?(punchgs.TweenLite.set(a,{left:"0px",x:0,maxWidth:e-2*g+"px"}),punchgs.TweenLite.set(j,{maxWidth:e-2*g+"px"})):(punchgs.TweenLite.set(a,{maxWidth:h+"px"}),punchgs.TweenLite.set(j,{maxWidth:h+"px"})),i+2*g>f&&"outer-bottom"!==b.position&&"outer-top"!==b.position?(punchgs.TweenLite.set(a,{top:"0px",y:0,maxHeight:k+l+(f-2*g)+"px"}),punchgs.TweenLite.set(j,{maxHeight:k+l+(f-2*g)+"px"})):(punchgs.TweenLite.set(a,{maxHeight:i+"px"}),punchgs.TweenLite.set(j,{maxHeight:i+"px"})),"outer-left"!==b.position&&"outer-right"!==b.position&&(k=0,l=0),!0===b.span&&"vertical"===b.direction?(punchgs.TweenLite.set(a,{maxHeight:k+l+(f-2*g)+"px",height:k+l+(f-2*g)+"px",top:0-k,y:0}),r(j,b,c)):!0===b.span&&"horizontal"===b.direction&&(punchgs.TweenLite.set(a,{maxWidth:"100%",width:e-2*g+"px",left:0,x:0}),s(j,b,c))}},u=function(a,b,c,d){0===a.find(".tp-bullets").length&&(b.style=void 0===b.style?"":b.style,a.append('
      '));var e=a.find(".tp-bullets"),f=c.data("index"),g=b.tmp;jQuery.each(d.thumbs[c.index()].params,function(a,b){g=g.replace(b.from,b.to)}),e.append('
      '+g+"
      ");var h=a.find(".justaddedbullet"),i=a.find(".tp-bullet").length,j=h.outerWidth()+parseInt(void 0===b.space?0:b.space,0),k=h.outerHeight()+parseInt(void 0===b.space?0:b.space,0);"vertical"===b.direction?(h.css({top:(i-1)*k+"px",left:"0px"}),e.css({height:(i-1)*k+h.outerHeight(),width:h.outerWidth()})):(h.css({left:(i-1)*j+"px",top:"0px"}),e.css({width:(i-1)*j+h.outerWidth(),height:h.outerHeight()})),h.find(".tp-bullet-image").css({backgroundImage:"url("+d.thumbs[c.index()].src+")"}),h.data("liref",f),h.click(function(){d.sc_indicator="bullet",a.revcallslidewithid(f),a.find(".tp-bullet").removeClass("selected"),jQuery(this).addClass("selected")}),h.removeClass("justaddedbullet"),b.padding_top=parseInt(d.carousel.padding_top||0,0),b.padding_bottom=parseInt(d.carousel.padding_bottom||0,0),b.opt=d,"outer-left"!=b.position&&"outer-right"!=b.position||(d.outernav=!0),e.addClass("nav-pos-hor-"+b.h_align),e.addClass("nav-pos-ver-"+b.v_align),e.addClass("nav-dir-"+b.direction),t(e,b,d)},w=function(a,b,c,d,e){var f="tp-thumb"===d?".tp-thumbs":".tp-tabs",g="tp-thumb"===d?".tp-thumb-mask":".tp-tab-mask",h="tp-thumb"===d?".tp-thumbs-inner-wrapper":".tp-tabs-inner-wrapper",i="tp-thumb"===d?".tp-thumb":".tp-tab",j="tp-thumb"===d?".tp-thumb-image":".tp-tab-image";if(b.visibleAmount=b.visibleAmount>e.slideamount?e.slideamount:b.visibleAmount,b.sliderLayout=e.sliderLayout,0===a.parent().find(f).length){b.style=void 0===b.style?"":b.style;var k=!0===b.span?"tp-span-wrapper":"",l='
      ';"outer-top"===b.position?a.parent().prepend(l):"outer-bottom"===b.position?a.after(l):a.append(l),b.padding_top=parseInt(e.carousel.padding_top||0,0),b.padding_bottom=parseInt(e.carousel.padding_bottom||0,0),"outer-left"!=b.position&&"outer-right"!=b.position||(e.outernav=!0)}var m=c.data("index"),n=a.parent().find(f),o=n.find(g),p=o.find(h),q="horizontal"===b.direction?b.width*b.visibleAmount+b.space*(b.visibleAmount-1):b.width,r="horizontal"===b.direction?b.height:b.height*b.visibleAmount+b.space*(b.visibleAmount-1),s=b.tmp;jQuery.each(e.thumbs[c.index()].params,function(a,b){s=s.replace(b.from,b.to)}),p.append('
      '+s+"
      ");var u=n.find(".justaddedthumb"),v=n.find(i).length,w=u.outerWidth()+parseInt(void 0===b.space?0:b.space,0),x=u.outerHeight()+parseInt(void 0===b.space?0:b.space,0);u.find(j).css({backgroundImage:"url("+e.thumbs[c.index()].src+")"}),"vertical"===b.direction?(u.css({top:(v-1)*x+"px",left:"0px"}),p.css({height:(v-1)*x+u.outerHeight(),width:u.outerWidth()})):(u.css({left:(v-1)*w+"px",top:"0px"}),p.css({width:(v-1)*w+u.outerWidth(),height:u.outerHeight()})),n.data("maxw",q),n.data("maxh",r),n.data("wr_padding",b.wrapper_padding);var y="outer-top"===b.position||"outer-bottom"===b.position?"relative":"absolute";"outer-top"!==b.position&&"outer-bottom"!==b.position||b.h_align;o.css({maxWidth:q+"px",maxHeight:r+"px",overflow:"hidden",position:"relative"}),n.css({maxWidth:q+"px",maxHeight:r+"px",overflow:"visible",position:y,background:b.wrapper_color,padding:b.wrapper_padding+"px",boxSizing:"contet-box"}),u.click(function(){e.sc_indicator="bullet";var b=a.parent().find(h).data("distance");b=void 0===b?0:b,Math.abs(b)<10&&(a.revcallslidewithid(m),a.parent().find(f).removeClass("selected"),jQuery(this).addClass("selected"))}),u.removeClass("justaddedthumb"),b.opt=e,n.addClass("nav-pos-hor-"+b.h_align),n.addClass("nav-pos-ver-"+b.v_align),n.addClass("nav-dir-"+b.direction),t(n,b,e)},x=function(a){var b=a.c.parent().find(".outer-top"),c=a.c.parent().find(".outer-bottom");a.top_outer=b.hasClass("tp-forcenotvisible")?0:b.outerHeight()||0,a.bottom_outer=c.hasClass("tp-forcenotvisible")?0:c.outerHeight()||0},y=function(a,b,c,d){b>c||c>d?a.addClass("tp-forcenotvisible"):a.removeClass("tp-forcenotvisible")}}(jQuery); \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/js/extensions/revolution.extension.navigation.min.js b/think.greaterchiangmai.com/public/revolution/js/extensions/revolution.extension.navigation.min.js new file mode 100644 index 0000000..539c2d9 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/js/extensions/revolution.extension.navigation.min.js @@ -0,0 +1,7 @@ +/******************************************** + * REVOLUTION 5.4.6.5 EXTENSION - NAVIGATION + * @version: 1.3.5 (06.04.2017) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ +!function(a){"use strict";var b=jQuery.fn.revolution,c=b.is_mobile(),d={alias:"Navigation Min JS",name:"revolution.extensions.navigation.min.js",min_core:"5.4.0",version:"1.3.5"};jQuery.extend(!0,b,{hideUnHideNav:function(a){var b=a.c.width(),c=a.navigation.arrows,d=a.navigation.bullets,e=a.navigation.thumbnails,f=a.navigation.tabs;m(c)&&y(a.c.find(".tparrows"),c.hide_under,b,c.hide_over),m(d)&&y(a.c.find(".tp-bullets"),d.hide_under,b,d.hide_over),m(e)&&y(a.c.parent().find(".tp-thumbs"),e.hide_under,b,e.hide_over),m(f)&&y(a.c.parent().find(".tp-tabs"),f.hide_under,b,f.hide_over),x(a)},resizeThumbsTabs:function(a,b){if(a.navigation&&a.navigation.tabs.enable||a.navigation&&a.navigation.thumbnails.enable){var c=(jQuery(window).width()-480)/500,d=new punchgs.TimelineLite,e=a.navigation.tabs,g=a.navigation.thumbnails,h=a.navigation.bullets;if(d.pause(),c=c>1?1:c<0?0:c,m(e)&&(b||e.width>e.min_width)&&f(c,d,a.c,e,a.slideamount,"tab"),m(g)&&(b||g.width>g.min_width)&&f(c,d,a.c,g,a.slideamount,"thumb"),m(h)&&b){var i=a.c.find(".tp-bullets");i.find(".tp-bullet").each(function(a){var b=jQuery(this),c=a+1,d=b.outerWidth()+parseInt(void 0===h.space?0:h.space,0),e=b.outerHeight()+parseInt(void 0===h.space?0:h.space,0);"vertical"===h.direction?(b.css({top:(c-1)*e+"px",left:"0px"}),i.css({height:(c-1)*e+b.outerHeight(),width:b.outerWidth()})):(b.css({left:(c-1)*d+"px",top:"0px"}),i.css({width:(c-1)*d+b.outerWidth(),height:b.outerHeight()}))})}d.play(),x(a)}return!0},updateNavIndexes:function(a){function d(a){c.find(a).lenght>0&&c.find(a).each(function(a){jQuery(this).data("liindex",a)})}var c=a.c;d(".tp-tab"),d(".tp-bullet"),d(".tp-thumb"),b.resizeThumbsTabs(a,!0),b.manageNavigation(a)},manageNavigation:function(a){var c=b.getHorizontalOffset(a.c.parent(),"left"),d=b.getHorizontalOffset(a.c.parent(),"right");m(a.navigation.bullets)&&("fullscreen"!=a.sliderLayout&&"fullwidth"!=a.sliderLayout&&(a.navigation.bullets.h_offset_old=void 0===a.navigation.bullets.h_offset_old?a.navigation.bullets.h_offset:a.navigation.bullets.h_offset_old,a.navigation.bullets.h_offset="center"===a.navigation.bullets.h_align?a.navigation.bullets.h_offset_old+c/2-d/2:a.navigation.bullets.h_offset_old+c-d),t(a.c.find(".tp-bullets"),a.navigation.bullets,a)),m(a.navigation.thumbnails)&&t(a.c.parent().find(".tp-thumbs"),a.navigation.thumbnails,a),m(a.navigation.tabs)&&t(a.c.parent().find(".tp-tabs"),a.navigation.tabs,a),m(a.navigation.arrows)&&("fullscreen"!=a.sliderLayout&&"fullwidth"!=a.sliderLayout&&(a.navigation.arrows.left.h_offset_old=void 0===a.navigation.arrows.left.h_offset_old?a.navigation.arrows.left.h_offset:a.navigation.arrows.left.h_offset_old,a.navigation.arrows.left.h_offset="right"===a.navigation.arrows.left.h_align?a.navigation.arrows.left.h_offset_old+d:a.navigation.arrows.left.h_offset_old+c,a.navigation.arrows.right.h_offset_old=void 0===a.navigation.arrows.right.h_offset_old?a.navigation.arrows.right.h_offset:a.navigation.arrows.right.h_offset_old,a.navigation.arrows.right.h_offset="right"===a.navigation.arrows.right.h_align?a.navigation.arrows.right.h_offset_old+d:a.navigation.arrows.right.h_offset_old+c),t(a.c.find(".tp-leftarrow.tparrows"),a.navigation.arrows.left,a),t(a.c.find(".tp-rightarrow.tparrows"),a.navigation.arrows.right,a)),m(a.navigation.thumbnails)&&e(a.c.parent().find(".tp-thumbs"),a.navigation.thumbnails),m(a.navigation.tabs)&&e(a.c.parent().find(".tp-tabs"),a.navigation.tabs)},createNavigation:function(a,f){if("stop"===b.compare_version(d).check)return!1;var g=a.parent(),j=f.navigation.arrows,n=f.navigation.bullets,r=f.navigation.thumbnails,s=f.navigation.tabs,t=m(j),v=m(n),x=m(r),y=m(s);h(a,f),i(a,f),t&&q(a,j,f),f.li.each(function(b){var c=jQuery(f.li[f.li.length-1-b]),d=jQuery(this);v&&(f.navigation.bullets.rtl?u(a,n,c,f):u(a,n,d,f)),x&&(f.navigation.thumbnails.rtl?w(a,r,c,"tp-thumb",f):w(a,r,d,"tp-thumb",f)),y&&(f.navigation.tabs.rtl?w(a,s,c,"tp-tab",f):w(a,s,d,"tp-tab",f))}),a.bind("revolution.slide.onafterswap revolution.nextslide.waiting",function(){var b=0==a.find(".next-revslide").length?a.find(".active-revslide").data("index"):a.find(".next-revslide").data("index");a.find(".tp-bullet").each(function(){var a=jQuery(this);a.data("liref")===b?a.addClass("selected"):a.removeClass("selected")}),g.find(".tp-thumb, .tp-tab").each(function(){var a=jQuery(this);a.data("liref")===b?(a.addClass("selected"),a.hasClass("tp-tab")?e(g.find(".tp-tabs"),s):e(g.find(".tp-thumbs"),r)):a.removeClass("selected")});var c=0,d=!1;f.thumbs&&jQuery.each(f.thumbs,function(a,e){c=!1===d?a:c,d=e.id===b||a===b||d});var h=c>0?c-1:f.slideamount-1,i=c+1==f.slideamount?0:c+1;if(!0===j.enable){var k=j.tmp;if(void 0!=f.thumbs[h]&&jQuery.each(f.thumbs[h].params,function(a,b){k=k.replace(b.from,b.to)}),j.left.j.html(k),k=j.tmp,i>f.slideamount)return;jQuery.each(f.thumbs[i].params,function(a,b){k=k.replace(b.from,b.to)}),j.right.j.html(k),j.rtl?(punchgs.TweenLite.set(j.left.j.find(".tp-arr-imgholder"),{backgroundImage:"url("+f.thumbs[i].src+")"}),punchgs.TweenLite.set(j.right.j.find(".tp-arr-imgholder"),{backgroundImage:"url("+f.thumbs[h].src+")"})):(punchgs.TweenLite.set(j.left.j.find(".tp-arr-imgholder"),{backgroundImage:"url("+f.thumbs[h].src+")"}),punchgs.TweenLite.set(j.right.j.find(".tp-arr-imgholder"),{backgroundImage:"url("+f.thumbs[i].src+")"}))}}),l(j),l(n),l(r),l(s),g.on("mouseenter mousemove",function(){g.hasClass("tp-mouseover")||(g.addClass("tp-mouseover"),punchgs.TweenLite.killDelayedCallsTo(p),t&&j.hide_onleave&&p(g.find(".tparrows"),j,"show"),v&&n.hide_onleave&&p(g.find(".tp-bullets"),n,"show"),x&&r.hide_onleave&&p(g.find(".tp-thumbs"),r,"show"),y&&s.hide_onleave&&p(g.find(".tp-tabs"),s,"show"),c&&(g.removeClass("tp-mouseover"),o(a,f)))}),g.on("mouseleave",function(){g.removeClass("tp-mouseover"),o(a,f)}),t&&j.hide_onleave&&p(g.find(".tparrows"),j,"hide",0),v&&n.hide_onleave&&p(g.find(".tp-bullets"),n,"hide",0),x&&r.hide_onleave&&p(g.find(".tp-thumbs"),r,"hide",0),y&&s.hide_onleave&&p(g.find(".tp-tabs"),s,"hide",0),x&&k(g.find(".tp-thumbs"),f),y&&k(g.find(".tp-tabs"),f),"carousel"===f.sliderType&&k(a,f,!0),("on"===f.navigation.touch.touchOnDesktop||"on"==f.navigation.touch.touchenabled&&c)&&k(a,f,"swipebased")}});var e=function(a,b){var d=(a.hasClass("tp-thumbs"),a.hasClass("tp-thumbs")?".tp-thumb-mask":".tp-tab-mask"),e=a.hasClass("tp-thumbs")?".tp-thumbs-inner-wrapper":".tp-tabs-inner-wrapper",f=a.hasClass("tp-thumbs")?".tp-thumb":".tp-tab",g=a.find(d),h=g.find(e),i=b.direction,j="vertical"===i?g.find(f).first().outerHeight(!0)+b.space:g.find(f).first().outerWidth(!0)+b.space,k="vertical"===i?g.height():g.width(),l=parseInt(g.find(f+".selected").data("liindex"),0),m=k/j,n="vertical"===i?g.height():g.width(),o=0-l*j,p="vertical"===i?h.height():h.width(),q=o<0-(p-n)?0-(p-n):q>0?0:o,r=h.data("offset");m>2&&(q=o-(r+j)<=0?o-(r+j)<0-j?r:q+j:q,q=o-j+r+k0?0:q,"vertical"!==i&&g.width()>=h.width()&&(q=0),"vertical"===i&&g.height()>=h.height()&&(q=0),a.hasClass("dragged")||("vertical"===i?h.data("tmmove",punchgs.TweenLite.to(h,.5,{top:q+"px",ease:punchgs.Power3.easeInOut})):h.data("tmmove",punchgs.TweenLite.to(h,.5,{left:q+"px",ease:punchgs.Power3.easeInOut})),h.data("offset",q))},f=function(a,b,c,d,e,f){var g=c.parent().find(".tp-"+f+"s"),h=g.find(".tp-"+f+"s-inner-wrapper"),i=g.find(".tp-"+f+"-mask"),j=d.width*a300||e<-300)&&(e/=10),{spinX:b,spinY:c,pixelX:d,pixelY:e}},h=function(a,c){"on"===c.navigation.keyboardNavigation&&jQuery(document).keydown(function(d){("horizontal"==c.navigation.keyboard_direction&&39==d.keyCode||"vertical"==c.navigation.keyboard_direction&&40==d.keyCode)&&(c.sc_indicator="arrow",c.sc_indicator_dir=0,b.callingNewSlide(a,1)),("horizontal"==c.navigation.keyboard_direction&&37==d.keyCode||"vertical"==c.navigation.keyboard_direction&&38==d.keyCode)&&(c.sc_indicator="arrow",c.sc_indicator_dir=1,b.callingNewSlide(a,-1))})},i=function(a,c){if("on"===c.navigation.mouseScrollNavigation||"carousel"===c.navigation.mouseScrollNavigation){c.isIEEleven=!!navigator.userAgent.match(/Trident.*rv\:11\./),c.isSafari=!!navigator.userAgent.match(/safari/i),c.ischrome=!!navigator.userAgent.match(/chrome/i);var d=c.ischrome?-49:c.isIEEleven||c.isSafari?-9:navigator.userAgent.match(/mozilla/i)?-29:-49,e=c.ischrome?49:c.isIEEleven||c.isSafari?9:navigator.userAgent.match(/mozilla/i)?29:49;a.on("mousewheel DOMMouseScroll",function(f){var h=g(f.originalEvent),i=a.find(".tp-revslider-slidesli.active-revslide").index(),j=a.find(".tp-revslider-slidesli.processing-revslide").index(),k=-1!=i&&0==i||-1!=j&&0==j,l=-1!=i&&i==c.slideamount-1||1!=j&&j==c.slideamount-1,m=!0;"carousel"==c.navigation.mouseScrollNavigation&&(k=l=!1),-1==j?h.pixelYe&&(l||(c.sc_indicator="arrow","reverse"!==c.navigation.mouseScrollReverse&&(c.sc_indicator_dir=0,b.callingNewSlide(a,1)),m=!1),k||(c.sc_indicator="arrow","reverse"===c.navigation.mouseScrollReverse&&(c.sc_indicator_dir=1,b.callingNewSlide(a,-1)),m=!1)):m=!1;var n=c.c.offset().top-jQuery("body").scrollTop(),o=n+c.c.height();return"carousel"!=c.navigation.mouseScrollNavigation?("reverse"!==c.navigation.mouseScrollReverse&&(n>0&&h.pixelY>0||ojQuery(window).height()&&h.pixelY>0)&&(m=!0)):m=!1,0==m?(f.preventDefault(f),!1):void 0})}},j=function(a,b,d){return a=c?jQuery(d.target).closest("."+a).length||jQuery(d.srcElement).closest("."+a).length:jQuery(d.toElement).closest("."+a).length||jQuery(d.originalTarget).closest("."+a).length,!0===a||1===a?1:0},k=function(a,d,e){var f=d.carousel;jQuery(".bullet, .bullets, .tp-bullets, .tparrows").addClass("noSwipe"),f.Limit="endless";var h=(c||b.get_browser(),a),i="vertical"===d.navigation.thumbnails.direction||"vertical"===d.navigation.tabs.direction?"none":"vertical",k=d.navigation.touch.swipe_direction||"horizontal";i="swipebased"==e&&"vertical"==k?"none":e?"vertical":i,jQuery.fn.swipetp||(jQuery.fn.swipetp=jQuery.fn.swipe),jQuery.fn.swipetp.defaults&&jQuery.fn.swipetp.defaults.excludedElements||jQuery.fn.swipetp.defaults||(jQuery.fn.swipetp.defaults=new Object),jQuery.fn.swipetp.defaults.excludedElements="label, button, input, select, textarea, .noSwipe",h.swipetp({allowPageScroll:i,triggerOnTouchLeave:!0,treshold:d.navigation.touch.swipe_treshold,fingers:d.navigation.touch.swipe_min_touches,excludeElements:jQuery.fn.swipetp.defaults.excludedElements,swipeStatus:function(e,g,h,i,l,m,n){var o=j("rev_slider_wrapper",a,e),p=j("tp-thumbs",a,e),q=j("tp-tabs",a,e),r=jQuery(this).attr("class"),s=!!r.match(/tp-tabs|tp-thumb/gi);if("carousel"===d.sliderType&&(("move"===g||"end"===g||"cancel"==g)&&d.dragStartedOverSlider&&!d.dragStartedOverThumbs&&!d.dragStartedOverTabs||"start"===g&&o>0&&0===p&&0===q)){if(c&&("up"===h||"down"===h))return;switch(d.dragStartedOverSlider=!0,i=h&&h.match(/left|up/g)?Math.round(-1*i):i=Math.round(1*i),g){case"start":void 0!==f.positionanim&&(f.positionanim.kill(),f.slide_globaloffset="off"===f.infinity?f.slide_offset:b.simp(f.slide_offset,f.maxwidth)),f.overpull="none",f.wrap.addClass("dragged");break;case"move":if(d.c.find(".tp-withaction").addClass("tp-temporarydisabled"),f.slide_offset="off"===f.infinity?f.slide_globaloffset+i:b.simp(f.slide_globaloffset+i,f.maxwidth),"off"===f.infinity){var t="center"===f.horizontal_align?(f.wrapwidth/2-f.slide_width/2-f.slide_offset)/f.slide_width:(0-f.slide_offset)/f.slide_width;"none"!==f.overpull&&0!==f.overpull||!(t<0||t>d.slideamount-1)?t>=0&&t<=d.slideamount-1&&(t>=0&&i>f.overpull||t<=d.slideamount-1&&id.slideamount-1?f.slide_offset+(f.overpull-i)/1.1-Math.sqrt(Math.abs((f.overpull-i)/1.1)):f.slide_offset}b.organiseCarousel(d,h,!0,!0);break;case"end":case"cancel":f.slide_globaloffset=f.slide_offset,f.wrap.removeClass("dragged"),b.carouselToEvalPosition(d,h),d.dragStartedOverSlider=!1,d.dragStartedOverThumbs=!1,d.dragStartedOverTabs=!1,setTimeout(function(){d.c.find(".tp-withaction").removeClass("tp-temporarydisabled")},19)}}else{if(("move"!==g&&"end"!==g&&"cancel"!=g||d.dragStartedOverSlider||!d.dragStartedOverThumbs&&!d.dragStartedOverTabs)&&!("start"===g&&o>0&&(p>0||q>0))){if("end"==g&&!s){if(d.sc_indicator="arrow","horizontal"==k&&"left"==h||"vertical"==k&&"up"==h)return d.sc_indicator_dir=0,b.callingNewSlide(d.c,1),!1;if("horizontal"==k&&"right"==h||"vertical"==k&&"down"==h)return d.sc_indicator_dir=1,b.callingNewSlide(d.c,-1),!1}return d.dragStartedOverSlider=!1,d.dragStartedOverThumbs=!1,d.dragStartedOverTabs=!1,!0}p>0&&(d.dragStartedOverThumbs=!0),q>0&&(d.dragStartedOverTabs=!0);var u=d.dragStartedOverThumbs?".tp-thumbs":".tp-tabs",v=d.dragStartedOverThumbs?".tp-thumb-mask":".tp-tab-mask",w=d.dragStartedOverThumbs?".tp-thumbs-inner-wrapper":".tp-tabs-inner-wrapper",x=d.dragStartedOverThumbs?".tp-thumb":".tp-tab",y=d.dragStartedOverThumbs?d.navigation.thumbnails:d.navigation.tabs;i=h&&h.match(/left|up/g)?Math.round(-1*i):i=Math.round(1*i);var z=a.parent().find(v),A=z.find(w),B=y.direction,C="vertical"===B?A.height():A.width(),D="vertical"===B?z.height():z.width(),E="vertical"===B?z.find(x).first().outerHeight(!0)+y.space:z.find(x).first().outerWidth(!0)+y.space,F=void 0===A.data("offset")?0:parseInt(A.data("offset"),0),G=0;switch(g){case"start":a.parent().find(u).addClass("dragged"),F="vertical"===B?A.position().top:A.position().left,A.data("offset",F),A.data("tmmove")&&A.data("tmmove").pause();break;case"move":if(C<=D)return!1;G=F+i,G=G>0?"horizontal"===B?G-A.width()*(G/A.width()*G/A.width()):G-A.height()*(G/A.height()*G/A.height()):G;var H="vertical"===B?0-(A.height()-z.height()):0-(A.width()-z.width());G=G0?0:G,G=Math.abs(i)>E/10?i<=0?Math.floor(G/E)*E:Math.ceil(G/E)*E:i<0?Math.ceil(G/E)*E:Math.floor(G/E)*E,G="vertical"===B?G<0-(A.height()-z.height())?0-(A.height()-z.height()):G:G<0-(A.width()-z.width())?0-(A.width()-z.width()):G,G=G>0?0:G,"vertical"===B?punchgs.TweenLite.to(A,.5,{top:G+"px",ease:punchgs.Power3.easeOut}):punchgs.TweenLite.to(A,.5,{left:G+"px",ease:punchgs.Power3.easeOut}),G=G||("vertical"===B?A.position().top:A.position().left),A.data("offset",G),A.data("distance",i),setTimeout(function(){d.dragStartedOverSlider=!1,d.dragStartedOverThumbs=!1,d.dragStartedOverTabs=!1},100),a.parent().find(u).removeClass("dragged"),!1}}}})},l=function(a){a.hide_delay=jQuery.isNumeric(parseInt(a.hide_delay,0))?a.hide_delay/1e3:.2,a.hide_delay_mobile=jQuery.isNumeric(parseInt(a.hide_delay_mobile,0))?a.hide_delay_mobile/1e3:.2},m=function(a){return a&&a.enable},n=function(a){return a&&a.enable&&!0===a.hide_onleave&&(void 0===a.position||!a.position.match(/outer/g))},o=function(a,b){var d=a.parent();n(b.navigation.arrows)&&punchgs.TweenLite.delayedCall(c?b.navigation.arrows.hide_delay_mobile:b.navigation.arrows.hide_delay,p,[d.find(".tparrows"),b.navigation.arrows,"hide"]),n(b.navigation.bullets)&&punchgs.TweenLite.delayedCall(c?b.navigation.bullets.hide_delay_mobile:b.navigation.bullets.hide_delay,p,[d.find(".tp-bullets"),b.navigation.bullets,"hide"]),n(b.navigation.thumbnails)&&punchgs.TweenLite.delayedCall(c?b.navigation.thumbnails.hide_delay_mobile:b.navigation.thumbnails.hide_delay,p,[d.find(".tp-thumbs"),b.navigation.thumbnails,"hide"]),n(b.navigation.tabs)&&punchgs.TweenLite.delayedCall(c?b.navigation.tabs.hide_delay_mobile:b.navigation.tabs.hide_delay,p,[d.find(".tp-tabs"),b.navigation.tabs,"hide"])},p=function(a,b,c,d){switch(d=void 0===d?.5:d,c){case"show":punchgs.TweenLite.to(a,d,{autoAlpha:1,ease:punchgs.Power3.easeInOut,overwrite:"auto"});break;case"hide":punchgs.TweenLite.to(a,d,{autoAlpha:0,ease:punchgs.Power3.easeInOu,overwrite:"auto"})}},q=function(a,b,c){b.style=void 0===b.style?"":b.style,b.left.style=void 0===b.left.style?"":b.left.style,b.right.style=void 0===b.right.style?"":b.right.style,0===a.find(".tp-leftarrow.tparrows").length&&a.append('
      '+b.tmp+"
      "),0===a.find(".tp-rightarrow.tparrows").length&&a.append('
      '+b.tmp+"
      ");var d=a.find(".tp-leftarrow.tparrows"),e=a.find(".tp-rightarrow.tparrows");b.rtl?(d.click(function(){c.sc_indicator="arrow",c.sc_indicator_dir=0,a.revnext()}),e.click(function(){c.sc_indicator="arrow",c.sc_indicator_dir=1,a.revprev()})):(e.click(function(){c.sc_indicator="arrow",c.sc_indicator_dir=0,a.revnext()}),d.click(function(){c.sc_indicator="arrow",c.sc_indicator_dir=1,a.revprev()})),b.right.j=a.find(".tp-rightarrow.tparrows"),b.left.j=a.find(".tp-leftarrow.tparrows"),b.padding_top=parseInt(c.carousel.padding_top||0,0),b.padding_bottom=parseInt(c.carousel.padding_bottom||0,0),t(d,b.left,c),t(e,b.right,c),b.left.opt=c,b.right.opt=c,"outer-left"!=b.position&&"outer-right"!=b.position||(c.outernav=!0)},r=function(a,b,c){var d=a.outerHeight(!0),f=(a.outerWidth(!0),void 0==b.opt?0:0==c.conh?c.height:c.conh),g="layergrid"==b.container?"fullscreen"==c.sliderLayout?c.height/2-c.gridheight[c.curWinRange]*c.bh/2:"on"==c.autoHeight||void 0!=c.minHeight&&c.minHeight>0?f/2-c.gridheight[c.curWinRange]*c.bh/2:0:0,h="top"===b.v_align?{top:"0px",y:Math.round(b.v_offset+g)+"px"}:"center"===b.v_align?{top:"50%",y:Math.round(0-d/2+b.v_offset)+"px"}:{top:"100%",y:Math.round(0-(d+b.v_offset+g))+"px"};a.hasClass("outer-bottom")||punchgs.TweenLite.set(a,h)},s=function(a,b,c){var e=(a.outerHeight(!0),a.outerWidth(!0)),f="layergrid"==b.container?"carousel"===c.sliderType?0:c.width/2-c.gridwidth[c.curWinRange]*c.bw/2:0,g="left"===b.h_align?{left:"0px",x:Math.round(b.h_offset+f)+"px"}:"center"===b.h_align?{left:"50%",x:Math.round(0-e/2+b.h_offset)+"px"}:{left:"100%",x:Math.round(0-(e+b.h_offset+f))+"px"};punchgs.TweenLite.set(a,g)},t=function(a,b,c){var d=a.closest(".tp-simpleresponsive").length>0?a.closest(".tp-simpleresponsive"):a.closest(".tp-revslider-mainul").length>0?a.closest(".tp-revslider-mainul"):a.closest(".rev_slider_wrapper").length>0?a.closest(".rev_slider_wrapper"):a.parent().find(".tp-revslider-mainul"),e=d.width(),f=d.height();if(r(a,b,c),s(a,b,c),"outer-left"!==b.position||"fullwidth"!=b.sliderLayout&&"fullscreen"!=b.sliderLayout?"outer-right"!==b.position||"fullwidth"!=b.sliderLayout&&"fullscreen"!=b.sliderLayout||punchgs.TweenLite.set(a,{right:0-a.outerWidth()+"px",x:b.h_offset+"px"}):punchgs.TweenLite.set(a,{left:0-a.outerWidth()+"px",x:b.h_offset+"px"}),a.hasClass("tp-thumbs")||a.hasClass("tp-tabs")){var g=a.data("wr_padding"),h=a.data("maxw"),i=a.data("maxh"),j=a.hasClass("tp-thumbs")?a.find(".tp-thumb-mask"):a.find(".tp-tab-mask"),k=parseInt(b.padding_top||0,0),l=parseInt(b.padding_bottom||0,0);h>e&&"outer-left"!==b.position&&"outer-right"!==b.position?(punchgs.TweenLite.set(a,{left:"0px",x:0,maxWidth:e-2*g+"px"}),punchgs.TweenLite.set(j,{maxWidth:e-2*g+"px"})):(punchgs.TweenLite.set(a,{maxWidth:h+"px"}),punchgs.TweenLite.set(j,{maxWidth:h+"px"})),i+2*g>f&&"outer-bottom"!==b.position&&"outer-top"!==b.position?(punchgs.TweenLite.set(a,{top:"0px",y:0,maxHeight:k+l+(f-2*g)+"px"}),punchgs.TweenLite.set(j,{maxHeight:k+l+(f-2*g)+"px"})):(punchgs.TweenLite.set(a,{maxHeight:i+"px"}),punchgs.TweenLite.set(j,{maxHeight:i+"px"})),"outer-left"!==b.position&&"outer-right"!==b.position&&(k=0,l=0),!0===b.span&&"vertical"===b.direction?(punchgs.TweenLite.set(a,{maxHeight:k+l+(f-2*g)+"px",height:k+l+(f-2*g)+"px",top:0-k,y:0}),r(j,b,c)):!0===b.span&&"horizontal"===b.direction&&(punchgs.TweenLite.set(a,{maxWidth:"100%",width:e-2*g+"px",left:0,x:0}),s(j,b,c))}},u=function(a,b,c,d){0===a.find(".tp-bullets").length&&(b.style=void 0===b.style?"":b.style,a.append('
      '));var e=a.find(".tp-bullets"),f=c.data("index"),g=b.tmp;jQuery.each(d.thumbs[c.index()].params,function(a,b){g=g.replace(b.from,b.to)}),e.append('
      '+g+"
      ");var h=a.find(".justaddedbullet"),i=a.find(".tp-bullet").length,j=h.outerWidth()+parseInt(void 0===b.space?0:b.space,0),k=h.outerHeight()+parseInt(void 0===b.space?0:b.space,0);"vertical"===b.direction?(h.css({top:(i-1)*k+"px",left:"0px"}),e.css({height:(i-1)*k+h.outerHeight(),width:h.outerWidth()})):(h.css({left:(i-1)*j+"px",top:"0px"}),e.css({width:(i-1)*j+h.outerWidth(),height:h.outerHeight()})),h.find(".tp-bullet-image").css({backgroundImage:"url("+d.thumbs[c.index()].src+")"}),h.data("liref",f),h.click(function(){d.sc_indicator="bullet",a.revcallslidewithid(f),a.find(".tp-bullet").removeClass("selected"),jQuery(this).addClass("selected")}),h.removeClass("justaddedbullet"),b.padding_top=parseInt(d.carousel.padding_top||0,0),b.padding_bottom=parseInt(d.carousel.padding_bottom||0,0),b.opt=d,"outer-left"!=b.position&&"outer-right"!=b.position||(d.outernav=!0),e.addClass("nav-pos-hor-"+b.h_align),e.addClass("nav-pos-ver-"+b.v_align),e.addClass("nav-dir-"+b.direction),t(e,b,d)},w=function(a,b,c,d,e){var f="tp-thumb"===d?".tp-thumbs":".tp-tabs",g="tp-thumb"===d?".tp-thumb-mask":".tp-tab-mask",h="tp-thumb"===d?".tp-thumbs-inner-wrapper":".tp-tabs-inner-wrapper",i="tp-thumb"===d?".tp-thumb":".tp-tab",j="tp-thumb"===d?".tp-thumb-image":".tp-tab-image";if(b.visibleAmount=b.visibleAmount>e.slideamount?e.slideamount:b.visibleAmount,b.sliderLayout=e.sliderLayout,0===a.parent().find(f).length){b.style=void 0===b.style?"":b.style;var k=!0===b.span?"tp-span-wrapper":"",l='
      ';"outer-top"===b.position?a.parent().prepend(l):"outer-bottom"===b.position?a.after(l):a.append(l),b.padding_top=parseInt(e.carousel.padding_top||0,0),b.padding_bottom=parseInt(e.carousel.padding_bottom||0,0),"outer-left"!=b.position&&"outer-right"!=b.position||(e.outernav=!0)}var m=c.data("index"),n=a.parent().find(f),o=n.find(g),p=o.find(h),q="horizontal"===b.direction?b.width*b.visibleAmount+b.space*(b.visibleAmount-1):b.width,r="horizontal"===b.direction?b.height:b.height*b.visibleAmount+b.space*(b.visibleAmount-1),s=b.tmp;jQuery.each(e.thumbs[c.index()].params,function(a,b){s=s.replace(b.from,b.to)}),p.append('
      '+s+"
      ");var u=n.find(".justaddedthumb"),v=n.find(i).length,w=u.outerWidth()+parseInt(void 0===b.space?0:b.space,0),x=u.outerHeight()+parseInt(void 0===b.space?0:b.space,0);u.find(j).css({backgroundImage:"url("+e.thumbs[c.index()].src+")"}),"vertical"===b.direction?(u.css({top:(v-1)*x+"px",left:"0px"}),p.css({height:(v-1)*x+u.outerHeight(),width:u.outerWidth()})):(u.css({left:(v-1)*w+"px",top:"0px"}),p.css({width:(v-1)*w+u.outerWidth(),height:u.outerHeight()})),n.data("maxw",q),n.data("maxh",r),n.data("wr_padding",b.wrapper_padding);var y="outer-top"===b.position||"outer-bottom"===b.position?"relative":"absolute";"outer-top"!==b.position&&"outer-bottom"!==b.position||b.h_align;o.css({maxWidth:q+"px",maxHeight:r+"px",overflow:"hidden",position:"relative"}),n.css({maxWidth:q+"px",maxHeight:r+"px",overflow:"visible",position:y,background:b.wrapper_color,padding:b.wrapper_padding+"px",boxSizing:"contet-box"}),u.click(function(){e.sc_indicator="bullet";var b=a.parent().find(h).data("distance");b=void 0===b?0:b,Math.abs(b)<10&&(a.revcallslidewithid(m),a.parent().find(f).removeClass("selected"),jQuery(this).addClass("selected"))}),u.removeClass("justaddedthumb"),b.opt=e,n.addClass("nav-pos-hor-"+b.h_align),n.addClass("nav-pos-ver-"+b.v_align),n.addClass("nav-dir-"+b.direction),t(n,b,e)},x=function(a){var b=a.c.parent().find(".outer-top"),c=a.c.parent().find(".outer-bottom");a.top_outer=b.hasClass("tp-forcenotvisible")?0:b.outerHeight()||0,a.bottom_outer=c.hasClass("tp-forcenotvisible")?0:c.outerHeight()||0},y=function(a,b,c,d){b>c||c>d?a.addClass("tp-forcenotvisible"):a.removeClass("tp-forcenotvisible")}}(jQuery); \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/js/extensions/revolution.extension.parallax.min.js b/think.greaterchiangmai.com/public/revolution/js/extensions/revolution.extension.parallax.min.js new file mode 100644 index 0000000..6a6039b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/js/extensions/revolution.extension.parallax.min.js @@ -0,0 +1,7 @@ +/******************************************** + * REVOLUTION 5.4.6.5 EXTENSION - PARALLAX + * @version: 2.2.3 (17.05.2017) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ +!function(a){"use strict";function e(a,b){a.lastscrolltop=b}var b=jQuery.fn.revolution,c=b.is_mobile(),d={alias:"Parallax Min JS",name:"revolution.extensions.parallax.min.js",min_core:"5.4.5",version:"2.2.3"};jQuery.extend(!0,b,{checkForParallax:function(a,e){function g(a){if("3D"==f.type||"3d"==f.type){a.find(".slotholder").wrapAll('
      '),a.find(".tp-parallax-wrap").wrapAll('
      '),a.find(".rs-parallaxlevel-tobggroup").closest(".tp-parallax-wrap").wrapAll('
      ');var b=a.find(".dddwrapper"),c=a.find(".dddwrapper-layer");a.find(".dddwrapper-layertobggroup").appendTo(b),"carousel"==e.sliderType&&("on"==f.ddd_shadow&&b.addClass("dddwrappershadow"),punchgs.TweenLite.set(b,{borderRadius:e.carousel.border_radius})),punchgs.TweenLite.set(a,{overflow:"visible",transformStyle:"preserve-3d",perspective:1600}),punchgs.TweenLite.set(b,{force3D:"auto",transformOrigin:"50% 50%"}),punchgs.TweenLite.set(c,{force3D:"auto",transformOrigin:"50% 50%",zIndex:5}),punchgs.TweenLite.set(e.ul,{transformStyle:"preserve-3d",transformPerspective:1600})}}if("stop"===b.compare_version(d).check)return!1;var f=e.parallax;if(!f.done){if(f.done=!0,c&&"on"==f.disable_onmobile)return!1;"3D"!=f.type&&"3d"!=f.type||(punchgs.TweenLite.set(e.c,{overflow:f.ddd_overflow}),punchgs.TweenLite.set(e.ul,{overflow:f.ddd_overflow}),"carousel"!=e.sliderType&&"on"==f.ddd_shadow&&(e.c.prepend('
      '),punchgs.TweenLite.set(e.c.find(".dddwrappershadow"),{force3D:"auto",transformPerspective:1600,transformOrigin:"50% 50%",width:"100%",height:"100%",position:"absolute",top:0,left:0,zIndex:0}))),e.li.each(function(){g(jQuery(this))}),("3D"==f.type||"3d"==f.type)&&e.c.find(".tp-static-layers").length>0&&(punchgs.TweenLite.set(e.c.find(".tp-static-layers"),{top:0,left:0,width:"100%",height:"100%"}),g(e.c.find(".tp-static-layers"))),f.pcontainers=new Array,f.pcontainer_depths=new Array,f.bgcontainers=new Array,f.bgcontainer_depths=new Array,e.c.find(".tp-revslider-slidesli .slotholder, .tp-revslider-slidesli .rs-background-video-layer").each(function(){var a=jQuery(this),b=a.data("bgparallax")||e.parallax.bgparallax;void 0!==(b="on"==b?1:b)&&"off"!==b&&(f.bgcontainers.push(a),f.bgcontainer_depths.push(e.parallax.levels[parseInt(b,0)-1]/100))});for(var h=1;h<=f.levels.length;h++)e.c.find(".rs-parallaxlevel-"+h).each(function(){var a=jQuery(this),b=a.closest(".tp-parallax-wrap");b.data("parallaxlevel",f.levels[h-1]),b.addClass("tp-parallax-container"),f.pcontainers.push(b),f.pcontainer_depths.push(f.levels[h-1])});"mouse"!=f.type&&"scroll+mouse"!=f.type&&"mouse+scroll"!=f.type&&"3D"!=f.type&&"3d"!=f.type||(a.mouseenter(function(b){var c=a.find(".active-revslide"),d=a.offset().top,e=a.offset().left,f=b.pageX-e,g=b.pageY-d;c.data("enterx",f),c.data("entery",g)}),a.on("mousemove.hoverdir, mouseleave.hoverdir, trigger3dpath",function(b,c){var d=c&&c.li?c.li:a.find(".active-revslide");if("enterpoint"==f.origo){var g=a.offset().top,h=a.offset().left;void 0==d.data("enterx")&&d.data("enterx",b.pageX-h),void 0==d.data("entery")&&d.data("entery",b.pageY-g);var i=d.data("enterx")||b.pageX-h,j=d.data("entery")||b.pageY-g,k=i-(b.pageX-h),l=j-(b.pageY-g),m=f.speed/1e3||.4}else var g=a.offset().top,h=a.offset().left,k=e.conw/2-(b.pageX-h),l=e.conh/2-(b.pageY-g),m=f.speed/1e3||3;"mouseleave"==b.type&&(k=f.ddd_lasth||0,l=f.ddd_lastv||0,m=1.5);for(var n=0;njQuery(window).height()){var h=d;d=c,c=h}var i=a.width(),j=a.height(),k=360/i*d,l=180/j*c,m=f.speed/1e3||3,n=[];if(g.find(".tp-parallax-container").each(function(a){n.push(jQuery(this))}),a.find(".tp-static-layers .tp-parallax-container").each(function(){n.push(jQuery(this))}),jQuery.each(n,function(){var a=jQuery(this),b=parseInt(a.data("parallaxlevel"),0),c=b/100,d=k*c*2,e=l*c*4;punchgs.TweenLite.to(a,m,{force3D:"auto",x:d,y:e,ease:punchgs.Power3.easeOut,overwrite:"all"})}),"3D"==f.type||"3d"==f.type){var o=".tp-revslider-slidesli .dddwrapper, .dddwrappershadow, .tp-revslider-slidesli .dddwrapper-layer, .tp-static-layers .dddwrapper-layer";"carousel"===e.sliderType&&(o=".tp-revslider-slidesli .dddwrapper, .tp-revslider-slidesli .dddwrapper-layer, .tp-static-layers .dddwrapper-layer"),e.c.find(o).each(function(){var a=jQuery(this),c=f.levels[f.levels.length-1]/200,d=k*c,g=l*c*3,h=0==e.conw?0:Math.round(k/e.conw*c*500)||0,i=0==e.conh?0:Math.round(l/e.conh*c*700)||0,j=a.closest("li"),n=0,o=!1;a.hasClass("dddwrapper-layer")&&(n=f.ddd_z_correction||65,o=!0),a.hasClass("dddwrapper-layer")&&(d=0,g=0),j.hasClass("active-revslide")||"carousel"!=e.sliderType?"on"!=f.ddd_bgfreeze||o?punchgs.TweenLite.to(a,m,{rotationX:i,rotationY:-h,x:d,z:n,y:g,ease:punchgs.Power3.easeOut,overwrite:"all"}):punchgs.TweenLite.to(a,.5,{force3D:"auto",rotationY:0,rotationX:0,z:0,ease:punchgs.Power3.easeOut,overwrite:"all"}):punchgs.TweenLite.to(a,.5,{force3D:"auto",rotationY:0,z:0,x:0,y:0,rotationX:0,ease:punchgs.Power3.easeOut,overwrite:"all"}),"mouseleave"==b.type&&punchgs.TweenLite.to(jQuery(this),3.8,{z:0,ease:punchgs.Power3.easeOut})})}}));var i=e.scrolleffect;if(i.bgs=new Array,i.on){if("on"===i.on_slidebg)for(var h=0;ha.lastwindowheight?g.top/g.height:g.bottom>a.lastwindowheight?(g.bottom-a.lastwindowheight)/g.height:0;if(a.scrollproc=j,b.callBackHandling&&b.callBackHandling(a,"parallax","start"),h.enable){var k=1-Math.abs(j);k=k<0?0:k,jQuery.isNumeric(h.visible_area)||-1!==h.visible_area.indexOf("%")&&(h.visible_area=parseInt(h.visible_area)/100),1-h.visible_area<=k?a.inviewport||(a.inviewport=!0,b.enterInViewPort(a)):a.inviewport&&(a.inviewport=!1,b.leaveViewPort(a))}if(c&&"on"==i.disable_onmobile)return!1;if("3d"!=i.type&&"3D"!=i.type){if(("scroll"==i.type||"scroll+mouse"==i.type||"mouse+scroll"==i.type)&&i.pcontainers)for(var l=0;l0){var m=i.pcontainers[l],n=i.pcontainer_depths[l]/100,o=Math.round(j*(-n*a.conh)*10)/10||0,p=void 0!==f?f:i.speedls/1e3||0;m.data("parallaxoffset",o),punchgs.TweenLite.to(m,p,{overwrite:"auto",force3D:"auto",y:o})}if(i.bgcontainers)for(var l=0;l=0&&(u=1),"bottom"==s.direction&&j<=0&&(u=1),u=u>1?1:u<0?0:u,"on"===s.fade&&(v.opacity=u),"on"===s.scale){var w=u;v.scale=1-w+1}if("on"===s.blur){var x=(1-u)*s.maxblur;v["-webkit-filter"]="blur("+x+"px)",v.filter="blur("+x+"px)"}if("on"===s.grayscale){var y=100*(1-u),z="grayscale("+y+"%)";v["-webkit-filter"]=void 0===v["-webkit-filter"]?z:v["-webkit-filter"]+" "+z,v.filter=void 0===v.filter?z:v.filter+" "+z}punchgs.TweenLite.set(s.layers,v)}if(!1!==s.bgs){var u=1-t*s.multiplicator,v={backfaceVisibility:"hidden",force3D:"true"};if("top"==s.direction&&j>=0&&(u=1),"bottom"==s.direction&&j<=0&&(u=1),u=u>1?1:u<0?0:u,"on"===s.fade&&(v.opacity=u),"on"===s.scale){var w=u;punchgs.TweenLite.set(jQuery(".tp-kbimg-wrap"),{transformOrigin:"50% 50%",scale:w,force3D:!0})}if("on"===s.blur){var x=(1-u)*s.maxblur;v["-webkit-filter"]="blur("+x+"px)",v.filter="blur("+x+"px)"}if("on"===s.grayscale){var y=100*(1-u),z="grayscale("+y+"%)";v["-webkit-filter"]=void 0===v["-webkit-filter"]?z:v["-webkit-filter"]+" "+z,v.filter=void 0===v.filter?z:v.filter+" "+z}punchgs.TweenLite.set(s.bgs,v)}}b.callBackHandling&&b.callBackHandling(a,"parallax","end")}})}(jQuery); \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/js/extensions/revolution.extension.slideanims.min.js b/think.greaterchiangmai.com/public/revolution/js/extensions/revolution.extension.slideanims.min.js new file mode 100644 index 0000000..87f4938 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/js/extensions/revolution.extension.slideanims.min.js @@ -0,0 +1,7 @@ +/************************************************ + * REVOLUTION 5.4.6.5 EXTENSION - SLIDE ANIMATIONS + * @version: 1.8 (17.05.2017) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +************************************************/ +!function(t){"use strict";var L=jQuery.fn.revolution,l={alias:"SlideAnimations Min JS",name:"revolution.extensions.slideanims.min.js",min_core:"5.4.5",version:"1.8"};jQuery.extend(!0,L,{animateSlide:function(t,e,o,a,i,n,r,s){return"stop"===L.compare_version(l).check?s:d(t,e,o,a,i,n,r,s)}});var ct=function(t,e,o,a){var i=t,n=i.find(".defaultimg"),r=n.data("mediafilter"),s=i.data("zoomstart"),l=i.data("rotationstart");null!=n.data("currotate")&&(l=n.data("currotate")),null!=n.data("curscale")&&"box"==a?s=100*n.data("curscale"):null!=n.data("curscale")&&(s=n.data("curscale")),L.slotSize(n,e);var d=n.attr("src"),h=n.data("bgcolor"),f=e.width,c=e.height,u=n.data("fxof");void 0===h&&(h=n.css("backgroundColor")),"on"==e.autoHeight&&(c=e.c.height()),null==u&&(u=0);var p=0,g=n.data("bgfit"),w=n.data("bgrepeat"),m=n.data("bgposition");null==g&&(g="cover"),null==w&&(w="no-repeat"),null==m&&(m="center center");var v="";switch(v=void 0!==h&&0<=h.indexOf("gradient")?"background:"+h:"background-color:"+h+";background-image:url("+d+");background-repeat:"+w+";background-size:"+g+";background-position:"+m,a){case"box":for(var y=0,x=0,T=0;T
      '),x+=e.sloth,null!=s&&null!=l&&punchgs.TweenLite.set(i.find(".slot").last(),{rotationZ:l});y+=e.slotw}break;case"vertical":case"horizontal":if("horizontal"==a){if(!o)p=0-e.slotw;for(z=0;z
      '),null!=s&&null!=l&&punchgs.TweenLite.set(i.find(".slot").last(),{rotationZ:l})}else{if(!o)p=0-e.sloth;for(z=0;z
      '),null!=s&&null!=l&&punchgs.TweenLite.set(i.find(".slot").last(),{rotationZ:l})}}};var ut=function(t,e){return null==e||jQuery.isNumeric(t)?t:null==t?t:t.split(",")[e]},d=function(a,t,e,o,i,n,r,s){var l=e[0].opt,d=i.index(),h=o.index()l.delay?l.delay:g,g+=c[4],l.slots=ut(o.data("slotamount"),p),l.slots=null==l.slots||"default"==l.slots?c[12]:"random"==l.slots?Math.round(12*Math.random()+4):l.slots,l.slots=l.slots<1?"boxslide"==t?Math.round(6*Math.random()+3):"flyin"==t?Math.round(4*Math.random()+1):l.slots:l.slots,l.slots=(4==a||5==a||6==a)&&l.slots<3?3:l.slots,l.slots=0!=c[3]?Math.min(l.slots,c[3]):l.slots,l.slots=9==a?l.width/l.slots:10==a?l.height/l.slots:l.slots,l.rotate=ut(o.data("rotate"),p),l.rotate=null==l.rotate||"default"==l.rotate?0:999==l.rotate||"random"==l.rotate?Math.round(360*Math.random()):l.rotate,l.rotate=l.ie||l.ie9?0:l.rotate,11!=a&&(null!=c[7]&&ct(r,l,c[7],c[5]),null!=c[6]&&ct(n,l,c[6],c[5])),s.add(punchgs.TweenLite.set(n.find(".defaultvid"),{y:0,x:0,top:0,left:0,scale:1}),0),s.add(punchgs.TweenLite.set(r.find(".defaultvid"),{y:0,x:0,top:0,left:0,scale:1}),0),s.add(punchgs.TweenLite.set(n.find(".defaultvid"),{y:"+0%",x:"+0%"}),0),s.add(punchgs.TweenLite.set(r.find(".defaultvid"),{y:"+0%",x:"+0%"}),0),s.add(punchgs.TweenLite.set(n,{autoAlpha:1,y:"+0%",x:"+0%"}),0),s.add(punchgs.TweenLite.set(r,{autoAlpha:1,y:"+0%",x:"+0%"}),0),s.add(punchgs.TweenLite.set(n.parent(),{backgroundColor:"transparent"}),0),s.add(punchgs.TweenLite.set(r.parent(),{backgroundColor:"transparent"}),0);var w=ut(o.data("easein"),p),m=ut(o.data("easeout"),p);if(w="default"===w?c[9]||punchgs.Power2.easeInOut:w||c[9]||punchgs.Power2.easeInOut,m="default"===m?c[10]||punchgs.Power2.easeInOut:m||c[10]||punchgs.Power2.easeInOut,0==a){var v=Math.ceil(l.height/l.sloth),y=0;n.find(".slotslide").each(function(t){var e=jQuery(this);(y+=1)==v&&(y=0),s.add(punchgs.TweenLite.from(e,g/600,{opacity:0,top:0-l.sloth,left:0-l.slotw,rotation:l.rotate,force3D:"auto",ease:w}),(15*t+30*y)/1500)})}if(1==a){var x;n.find(".slotslide").each(function(t){var e=jQuery(this),o=Math.random()*g+300,a=500*Math.random()+200;xl.delay&&(g=l.delay);T=new punchgs.TimelineLite;setTimeout(function(){r.find(".defaultimg").css({opacity:0})},100),r.find(".slotslide").each(function(){var t=jQuery(this).find("div");T.add(punchgs.TweenLite.to(t,g/1e3,{left:0-l.slotw/2+"px",top:0-l.height/2+"px",width:2*l.slotw+"px",height:2*l.height+"px",opacity:0,rotation:l.rotate,force3D:"auto",ease:w}),0),s.add(T,0)}),n.find(".slotslide").each(function(t){var e=jQuery(this).find("div");T.add(punchgs.TweenLite.fromTo(e,g/1e3,{left:0,top:0,opacity:0,transformPerspective:600},{left:0-t*l.slotw+"px",ease:m,force3D:"auto",top:"0px",width:l.width,height:l.height,opacity:1,rotation:0,delay:.1}),0),s.add(T,0)})}if(8==a){(g*=3)>l.delay&&(g=l.delay);T=new punchgs.TimelineLite;r.find(".slotslide").each(function(){var t=jQuery(this).find("div");T.add(punchgs.TweenLite.to(t,g/1e3,{left:0-l.width/2+"px",top:0-l.sloth/2+"px",width:2*l.width+"px",height:2*l.sloth+"px",force3D:"auto",ease:w,opacity:0,rotation:l.rotate}),0),s.add(T,0)}),n.find(".slotslide").each(function(t){var e=jQuery(this).find("div");T.add(punchgs.TweenLite.fromTo(e,g/1e3,{left:0,top:0,opacity:0,force3D:"auto"},{left:"0px",top:0-t*l.sloth+"px",width:n.find(".defaultimg").data("neww")+"px",height:n.find(".defaultimg").data("newh")+"px",opacity:1,ease:m,rotation:0}),0),s.add(T,0)})}if(9==a||10==a){n.find(".slotslide").each(function(t){var e=jQuery(this);0,s.add(punchgs.TweenLite.fromTo(e,g/2e3,{autoAlpha:0,force3D:"auto",transformPerspective:600},{autoAlpha:1,ease:w,delay:t*l.slots/100/2e3}),0)})}if(27==a||28==a||29==a||30==a){var L=n.find(".slot"),b=27==a||29==a?"-100%":"+100%",A=27==a||29==a?"+100%":"-100%",D=27==a||29==a?"-80%":"80%",j=27==a||29==a?"+80%":"-80%",Q=27==a||29==a?"+10%":"-10%",M={overwrite:"all"},P={autoAlpha:0,zIndex:1,force3D:"auto",ease:w},k={position:"inherit",autoAlpha:0,overwrite:"all",zIndex:1},O={autoAlpha:1,force3D:"auto",ease:m},I={overwrite:"all",zIndex:2,opacity:1,autoAlpha:1},X={autoAlpha:1,force3D:"auto",overwrite:"all",ease:w},Y={overwrite:"all",zIndex:2,autoAlpha:1},S={autoAlpha:1,force3D:"auto",ease:w},_=1==(27==a||28==a?1:2)?"y":"x";M[_]="0px",P[_]=b,k[_]=Q,O[_]="0%",I[_]=A,X[_]=b,Y[_]=D,S[_]=j,L.append(''),s.add(punchgs.TweenLite.fromTo(r,g/1e3,M,P),0),s.add(punchgs.TweenLite.fromTo(n.find(".defaultimg"),g/2e3,k,O),g/2e3),s.add(punchgs.TweenLite.fromTo(L,g/1e3,I,X),0),s.add(punchgs.TweenLite.fromTo(L.find(".slotslide div"),g/1e3,Y,S),0)}if(31==a||32==a||33==a||34==a){g=6e3,w=punchgs.Power3.easeInOut;var C=g/1e3;mas=C-C/5,_nt=a,fy=31==_nt?"+100%":32==_nt?"-100%":"0%",fx=33==_nt?"+100%":34==_nt?"-100%":"0%",ty=31==_nt?"-100%":32==_nt?"+100%":"0%",tx=33==_nt?"-100%":34==_nt?"+100%":"0%",s.add(punchgs.TweenLite.fromTo(r,C-.2*C,{y:0,x:0},{y:ty,x:tx,ease:m}),.2*C),s.add(punchgs.TweenLite.fromTo(n,C,{y:fy,x:fx},{y:"0%",x:"0%",ease:w}),0),n.find(".slot").remove(),n.find(".defaultimg").clone().appendTo(n).addClass("slot"),function(t,f,c,e,u){var o=t.find(".slot"),p=[2,1.2,.9,.7,.55,.42],g=t.width(),w=t.height();o.wrap('
      ');for(var a=0;a<6;a++)o.parent().clone(!1).appendTo(nextsh);t.find(".slot-circle-wrapper").each(function(t){if(t<6){var e=jQuery(this),o=e.find(".slot"),a=wl.delay&&(g=l.delay),setTimeout(function(){punchgs.TweenLite.set(r.find(".defaultimg"),{autoAlpha:0})},100);var J=l.width,N=l.height,R=n.find(".slotslide, .defaultvid"),q=0,B=0,E=1,F=1,G=1,K=g/1e3,U=K;"fullwidth"!=l.sliderLayout&&"fullscreen"!=l.sliderLayout||(J=R.width(),N=R.height()),12==a?q=J:15==a?q=0-J:13==a?B=N:14==a&&(B=0-N),1==u&&(E=0),2==u&&(E=0),3==u&&(K=g/1300),4!=u&&5!=u||(F=.6),6==u&&(F=1.4),5!=u&&6!=u||(G=1.4,B=q=N=J=E=0),6==u&&(G=.6);7==u&&(N=J=0);var W=n.find(".slotslide"),$=r.find(".slotslide, .defaultvid");if(s.add(punchgs.TweenLite.set(i,{zIndex:15}),0),s.add(punchgs.TweenLite.set(o,{zIndex:20}),0),8==u?(s.add(punchgs.TweenLite.set(i,{zIndex:20}),0),s.add(punchgs.TweenLite.set(o,{zIndex:15}),0),s.add(punchgs.TweenLite.set(W,{left:0,top:0,scale:1,opacity:1,rotation:0,ease:w,force3D:"auto"}),0)):s.add(punchgs.TweenLite.from(W,K,{left:q,top:B,scale:G,opacity:E,rotation:l.rotate,ease:w,force3D:"auto"}),0),4!=u&&5!=u||(N=J=0),1!=u)switch(a){case 12:s.add(punchgs.TweenLite.to($,U,{left:0-J+"px",force3D:"auto",scale:F,opacity:E,rotation:l.rotate,ease:m}),0);break;case 15:s.add(punchgs.TweenLite.to($,U,{left:J+"px",force3D:"auto",scale:F,opacity:E,rotation:l.rotate,ease:m}),0);break;case 13:s.add(punchgs.TweenLite.to($,U,{top:0-N+"px",force3D:"auto",scale:F,opacity:E,rotation:l.rotate,ease:m}),0);break;case 14:s.add(punchgs.TweenLite.to($,U,{top:N+"px",force3D:"auto",scale:F,opacity:E,rotation:l.rotate,ease:m}),0)}}if(16==a){T=new punchgs.TimelineLite;s.add(punchgs.TweenLite.set(i,{position:"absolute","z-index":20}),0),s.add(punchgs.TweenLite.set(o,{position:"absolute","z-index":15}),0),i.wrapInner('
      '),i.find(".tp-half-one").clone(!0).appendTo(i).addClass("tp-half-two"),i.find(".tp-half-two").removeClass("tp-half-one");J=l.width,N=l.height;"on"==l.autoHeight&&(N=e.height()),i.find(".tp-half-one .defaultimg").wrap('
      '),i.find(".tp-half-two .defaultimg").wrap('
      '),i.find(".tp-half-two .defaultimg").css({position:"absolute",top:"-50%"}),i.find(".tp-half-two .tp-caption").wrapAll('
      '),s.add(punchgs.TweenLite.set(i.find(".tp-half-two"),{width:J,height:N,overflow:"hidden",zIndex:15,position:"absolute",top:N/2,left:"0px",transformPerspective:600,transformOrigin:"center bottom"}),0),s.add(punchgs.TweenLite.set(i.find(".tp-half-one"),{width:J,height:N/2,overflow:"visible",zIndex:10,position:"absolute",top:"0px",left:"0px",transformPerspective:600,transformOrigin:"center top"}),0);i.find(".defaultimg");var tt=Math.round(20*Math.random()-10),et=Math.round(20*Math.random()-10),ot=Math.round(20*Math.random()-10),at=.4*Math.random()-.2,it=.4*Math.random()-.2,nt=1*Math.random()+1,rt=1*Math.random()+1,st=.3*Math.random()+.3;s.add(punchgs.TweenLite.set(i.find(".tp-half-one"),{overflow:"hidden"}),0),s.add(punchgs.TweenLite.fromTo(i.find(".tp-half-one"),g/800,{width:J,height:N/2,position:"absolute",top:"0px",left:"0px",force3D:"auto",transformOrigin:"center top"},{scale:nt,rotation:tt,y:0-N-N/4,autoAlpha:0,ease:w}),0),s.add(punchgs.TweenLite.fromTo(i.find(".tp-half-two"),g/800,{width:J,height:N,overflow:"hidden",position:"absolute",top:N/2,left:"0px",force3D:"auto",transformOrigin:"center bottom"},{scale:rt,rotation:et,y:N+N/4,ease:w,autoAlpha:0,onComplete:function(){punchgs.TweenLite.set(i,{position:"absolute","z-index":15}),punchgs.TweenLite.set(o,{position:"absolute","z-index":20}),0a.vd?punchgs.TweenLite.set(a.ifr,{height:d+"%",width:"100%",top:-(d-100)/2+"%",left:"0px",position:"absolute"}):punchgs.TweenLite.set(a.ifr,{width:n+"%",height:"100%",left:-(n-100)/2+"%",top:"0px",position:"absolute"}),a.ifr.hasClass("resizelistener")||(a.ifr.addClass("resizelistener"),jQuery(window).resize(function(){I.prepareCoveredVideo(e,t),clearTimeout(a.ifr.data("resizelistener")),a.ifr.data("resizelistener",setTimeout(function(){I.prepareCoveredVideo(e,t)},90))}))}},checkVideoApis:function(e,t,a){location.protocol;if((null!=e.data("ytid")||0';"auto"==l&&(o.mediapreload=!0),"video"===f?(null!=u&&"firefox"==I.get_browser().toLowerCase()&&(w=w+''),null!=s&&(w=w+''),null!=p&&(w=w+'')):"audio"===f&&(null!=s&&(w=w+''),null!=p&&(w=w+'')),w=w+"";var T="";"true"!==v&&!0!==v||(T='
      '),"controls"==c&&(w=w+'
      '+T+"
      "),i.data("videomarkup",w),i.append(w),(_&&1==i.data("disablevideoonmobile")||I.isIE(8))&&i.find(f).remove(),i.find(f).each(function(e){var t,a=jQuery(this);a.parent().hasClass("html5vid")||a.wrap('
      '),1!=a.parent().data("metaloaded")&&A(this,"loadedmetadata",(Q(t=i,o),void I.resetVideo(t,o)))});break;case"youtube":m="https","none"==c&&-1==(d=d.replace("controls=1","controls=0")).toLowerCase().indexOf("controls")&&(d+="&controls=0"),(!0===a.videoinline||"true"===a.videoinline||1===a.videoinline||i.hasClass("rs-background-video-layer")||"on"===i.data("autoplay"))&&(d+="&playsinline=1");var k=j(i.data("videostartat")),x=j(i.data("videoendat"));-1!=k&&(d=d+"&start="+k),-1!=x&&(d=d+"&end="+x);var V=d.split("origin="+m+"://"),L="";1');break;case"vimeo":m="https",i.data("videomarkup",'')}var P=_&&"on"==i.data("noposteronmobile");if(null!=a.videoposter&&2'),0==i.find("iframe").length&&i.find(".tp-videoposter").click(function(){if(I.playVideo(i,o),_){if(1==i.data("disablevideoonmobile"))return!1;punchgs.TweenLite.to(i.find(".tp-videoposter"),.3,{autoAlpha:0,force3D:"auto",ease:punchgs.Power3.easeInOut}),punchgs.TweenLite.to(i.find("iframe"),.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut})}});else{if(_&&1==i.data("disablevideoonmobile"))return!1;0!=i.find("iframe").length||"youtube"!=y&&"vimeo"!=y||(i.removeData("vimeoplayer"),i.append(i.data("videomarkup")),O(i,o,!1))}"none"!=i.data("dottedoverlay")&&null!=i.data("dottedoverlay")&&1!=i.find(".tp-dottedoverlay").length&&i.append('
      '),i.addClass("HasListener"),1==i.data("bgvideo")&&(i.data("ytid")?punchgs.TweenLite.set(i.find("iframe"),{opacity:0}):punchgs.TweenLite.set(i.find("video, iframe"),{autoAlpha:0}))}});var A=function(e,t,a){e.addEventListener?e.addEventListener(t,a,{capture:!1,passive:!0}):e.attachEvent(t,a,{capture:!1,passive:!0})},b=function(e,t,a){var i={};return i.video=e,i.videotype=t,i.settings=a,i},w=function(e,t){if(1==t.data("bgvideo")||1==t.data("forcecover")){1===t.data("forcecover")&&t.removeClass("fullscreenvideo").addClass("coverscreenvideo");var a=t.data("aspectratio");void 0===a&&a.split(":").length<=1&&t.data("aspectratio","16:9"),I.prepareCoveredVideo(e,t)}},O=function(r,o,e){var l=r.data(),t=r.find("iframe"),a="iframe"+Math.round(1e5*Math.random()+1),d=l.videoloop,n="loopandnoslidestop"!=d;if(d="loop"==d||"loopandnoslidestop"==d,w(o,r),t.attr("id",a),e&&r.data("startvideonow",!0),1!==r.data("videolistenerexist"))switch(l.videotype){case"youtube":var s=new YT.Player(a,{events:{onStateChange:function(e){var t=r.closest(".tp-simpleresponsive"),a=(l.videorate,r.data("videostart"),k());if(e.data==YT.PlayerState.PLAYING)punchgs.TweenLite.to(r.find(".tp-videoposter"),.3,{autoAlpha:0,force3D:"auto",ease:punchgs.Power3.easeInOut}),punchgs.TweenLite.to(r.find("iframe"),.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut}),"mute"==r.data("volume")||I.lastToggleState(r.data("videomutetoggledby"))||!0===o.globalmute?s.mute():(s.unMute(),s.setVolume(parseInt(r.data("volume"),0)||75)),o.videoplaying=!0,x(r,o),n?o.c.trigger("stoptimer"):o.videoplaying=!1,o.c.trigger("revolution.slide.onvideoplay",b(s,"youtube",r.data())),I.toggleState(l.videotoggledby);else{if(0==e.data&&d){var i=j(r.data("videostartat"));-1!=i&&s.seekTo(i),s.playVideo(),I.toggleState(l.videotoggledby)}a||0!=e.data&&2!=e.data||!("on"==r.data("showcoveronpause")&&0e.seconds&&1!=r.data("nextslidecalled"))if(d){h.play();var a=j(r.data("videostartat"));-1!=a&&h.setCurrentTime(a)}else 1==r.data("nextslideatend")&&(r.data("nextslideatend-triggered",1),r.data("nextslidecalled",1),o.c.revnext()),h.pause()}),h.on("ended",function(e){V(r,o),o.videoplaying=!1,o.c.trigger("starttimer"),o.c.trigger("revolution.slide.onvideostop",b(h,"vimeo",r.data())),1==r.data("nextslideatend")&&(r.data("nextslideatend-triggered",1),o.c.revnext()),null!=o.currentLayerVideoIsPlaying&&o.currentLayerVideoIsPlaying.attr("id")!=r.attr("id")||I.unToggleState(l.videotoggledby)}),h.on("pause",function(e){("on"==r.data("showcoveronpause")&&0 '),o.find("video, .tp-poster, .tp-video-play-button").click(function(){o.hasClass("videoisplaying")?r.pause():r.play()})),1==o.data("forcecover")||o.hasClass("fullscreenvideo")||1==o.data("bgvideo"))if(1==o.data("forcecover")||1==o.data("bgvideo")){i.addClass("fullcoveredvideo");var u=o.data("aspectratio");void 0!==u&&1!=u.split(":").length||o.data("aspectratio","16:9"),I.prepareCoveredVideo(d,o)}else i.addClass("fullscreenvideo");var p=o.find(".tp-vid-play-pause")[0],v=o.find(".tp-vid-mute")[0],c=o.find(".tp-vid-full-screen")[0],m=o.find(".tp-seek-bar")[0],g=o.find(".tp-volume-bar")[0];null!=p&&A(p,"click",function(){1==r.paused?r.play():r.pause()}),null!=v&&A(v,"click",function(){0==r.muted?(r.muted=!0,v.innerHTML="Unmute"):(r.muted=!1,v.innerHTML="Mute")}),null!=c&&c&&A(c,"click",function(){r.requestFullscreen?r.requestFullscreen():r.mozRequestFullScreen?r.mozRequestFullScreen():r.webkitRequestFullscreen&&r.webkitRequestFullscreen()}),null!=m&&(A(m,"change",function(){var e=r.duration*(m.value/100);r.currentTime=e}),A(m,"mousedown",function(){o.addClass("seekbardragged"),r.pause()}),A(m,"mouseup",function(){o.removeClass("seekbardragged"),r.play()})),A(r,"canplaythrough",function(){I.preLoadAudioDone(o,d,"canplaythrough")}),A(r,"canplay",function(){I.preLoadAudioDone(o,d,"canplay")}),A(r,"progress",function(){I.preLoadAudioDone(o,d,"progress")}),A(r,"timeupdate",function(){var e=100/r.duration*r.currentTime,t=j(o.data("videoendat")),a=r.currentTime;if(null!=m&&(m.value=e),0!=t&&-1!=t&&Math.abs(t-a)<=.3&&a0) + _nc.trigger(a.event); + }); + opt.fullscreen_esclistener = true; + } + } + + var tnc = a.layer == "backgroundvideo" ? jQuery(".rs-background-video-layer") : a.layer == "firstvideo" ? jQuery(".tp-revslider-slidesli").find('.tp-videolayer') : jQuery("#"+a.layer); + + + // NO NEED EXTRA TOGGLE CLASS HANDLING + if (jQuery.inArray(a.action,["toggleslider","toggle_mute_video","toggle_global_mute_video","togglefullscreen"])!=-1) { + _nc.data('togglelisteners',true); + } + + // COLLECT ALL TOGGLE TRIGGER TO CONNECT THEM WITH TRIGGERED LAYER + switch (a.action) { + case "togglevideo": + jQuery.each(tnc,function(i,_tnc) { + _tnc = jQuery(_tnc); + var videotoggledby = _tnc.data('videotoggledby'); + if (videotoggledby == undefined) + videotoggledby = new Array(); + videotoggledby.push(_nc); + _tnc.data('videotoggledby',videotoggledby) + }); + break; + case "togglelayer": + jQuery.each(tnc,function(i,_tnc) { + _tnc = jQuery(_tnc); + var layertoggledby = _tnc.data('layertoggledby'); + if (layertoggledby == undefined) + layertoggledby = new Array(); + layertoggledby.push(_nc); + _tnc.data('layertoggledby',layertoggledby); + _tnc.data('triggered_startstatus',a.layerstatus); + + }); + break; + case "toggle_mute_video": + jQuery.each(tnc,function(i,_tnc) { + _tnc = jQuery(_tnc); + var videomutetoggledby = _tnc.data('videomutetoggledby'); + if (videomutetoggledby == undefined) + videomutetoggledby = new Array(); + videomutetoggledby.push(_nc); + _tnc.data('videomutetoggledby',videomutetoggledby); + }); + break; + case "toggle_global_mute_video": + jQuery.each(tnc,function(i,_tnc) { + _tnc = jQuery(_tnc); + var videomutetoggledby = _tnc.data('videomutetoggledby'); + if (videomutetoggledby == undefined) + videomutetoggledby = new Array(); + videomutetoggledby.push(_nc); + _tnc.data('videomutetoggledby',videomutetoggledby); + }); + break; + case "toggleslider": + if (opt.slidertoggledby == undefined) opt.slidertoggledby = new Array(); + opt.slidertoggledby.push(_nc); + break; + case "togglefullscreen": + if (opt.fullscreentoggledby == undefined) opt.fullscreentoggledby = new Array(); + opt.fullscreentoggledby.push(_nc); + break; + + } + + _nc.on(a.event,function() { + + if (a.event==="click" && _nc.hasClass("tp-temporarydisabled")) return false; + var tnc = a.layer == "backgroundvideo" ? jQuery(".active-revslide .slotholder .rs-background-video-layer") : a.layer == "firstvideo" ? jQuery(".active-revslide .tp-videolayer").first() : jQuery("#"+a.layer); + + if (a.action=="stoplayer" || a.action=="togglelayer" || a.action=="startlayer") { + + if (tnc.length>0) { + var _ = tnc.data(); + if (_.clicked_time_stamp !==undefined) { + if ((new Date().getTime() - _.clicked_time_stamp)>150) { + clearTimeout(_.triggerdelayIn); + clearTimeout(_.triggerdelayOut); + } + } + _.clicked_time_stamp = new Date().getTime(); + + if (a.action=="startlayer" || (a.action=="togglelayer" && tnc.data('animdirection')!="in")) { + _.animdirection= "in"; + _.triggerstate = "on"; + _R.toggleState(_.layertoggledby); + + if (_R.playAnimationFrame) { + clearTimeout(_.triggerdelayIn); + _.triggerdelayIn = setTimeout(function() { + _R.playAnimationFrame({caption:tnc,opt:opt,frame:"frame_0", triggerdirection:"in", triggerframein:"frame_0", triggerframeout:"frame_999"}); + },(a.delay*1000)); + } + } else + + if (a.action=="stoplayer" || (a.action=="togglelayer" && tnc.data('animdirection')!="out")) { + _.animdirection= "out"; + _.triggered= true; + _.triggerstate = "off"; + if (_R.stopVideo) _R.stopVideo(tnc,opt); + _R.unToggleState(_.layertoggledby); + if (_R.endMoveCaption) { + clearTimeout(_.triggerdelayOut); + _.triggerdelayOut = setTimeout(function() { + _R.playAnimationFrame({caption:tnc,opt:opt,frame:"frame_999", triggerdirection:"out", triggerframein:"frame_0", triggerframeout:"frame_999"}); + },(a.delay*1000)); + } + } + } + } else { + + if (_ISM && (a.action=='playvideo' || a.action=='stopvideo' || a.action=='togglevideo' || a.action=='mutevideo' || a.action=='unmutevideo' || a.action=='toggle_mute_video' || a.action=='toggle_global_mute_video')) { + actionSwitches(tnc,opt,a,_nc); + } else { + a.delay = a.delay === "NaN" || a.delay ===NaN ? 0 : a.delay; + punchgs.TweenLite.delayedCall(a.delay,function() { + actionSwitches(tnc,opt,a,_nc); + },[tnc,opt,a,_nc]); + } + } + }); + switch (a.action) { + case "togglelayer": + case "startlayer": + case "playlayer": + case "stoplayer": + + var tnc = jQuery("#"+a.layer), + d = tnc.data(); + + if (tnc.length>0 && d!==undefined && ((d.frames!==undefined && d.frames[0].delay!="bytrigger") || (d.frames===undefined && d.start!=="bytrigger"))) { + d.triggerstate="on"; + //d.animdirection="in"; + + } + break; + } + }) +} + +function getScrollRoot(){ + var html = document.documentElement, body = document.body, + cacheTop = ((typeof window.pageYOffset !== "undefined") ? window.pageYOffset : null) || body.scrollTop || html.scrollTop, // cache the window's current scroll position + root; + html.scrollTop = body.scrollTop = cacheTop + (cacheTop > 0) ? -1 : 1; + root = (html.scrollTop !== cacheTop) ? html : body; + root.scrollTop = cacheTop; + return root; +} + + + +var actionSwitches = function(tnc,opt,a,_nc) { + switch (a.action) { + case "scrollbelow": + + a.speed = a.speed!==undefined ? a.speed : 400; + a.ease = a.ease!==undefined ? a.ease : punchgs.Power2.easeOut; + + _nc.addClass("tp-scrollbelowslider"); + _nc.data('scrolloffset',a.offset); + _nc.data('scrolldelay',a.delay); + _nc.data('scrollspeed',a.speed); + _nc.data('scrollease',a.ease); + + var off=getOffContH(opt.fullScreenOffsetContainer) || 0, + aof = parseInt(a.offset,0) || 0; + off = off - aof || 0; + opt.scrollRoot = jQuery(document); + var sobj = {_y:opt.scrollRoot.scrollTop()}; + punchgs.TweenLite.to(sobj,a.speed/1000,{_y:(opt.c.offset().top+(jQuery(opt.li[0]).height())-off), ease:a.ease, onUpdate:function() { opt.scrollRoot.scrollTop(sobj._y)}}) + break; + case "callback": + eval(a.callback); + break; + case "jumptoslide": + switch (a.slide.toLowerCase()) { + case "+1": + case "next": + opt.sc_indicator="arrow"; + _R.callingNewSlide(opt.c,1); + break; + case "previous": + case "prev": + case "-1": + opt.sc_indicator="arrow"; + _R.callingNewSlide(opt.c,-1); + break; + default: + var ts = jQuery.isNumeric(a.slide) ? parseInt(a.slide,0) : a.slide; + _R.callingNewSlide(opt.c,ts); + break; + } + break; + case "simplelink": + window.open(a.url,a.target); + break; + case "toggleslider": + opt.noloopanymore=0; + if (opt.sliderstatus=="playing") { + opt.c.revpause(); + opt.forcepause_viatoggle = true; + _R.unToggleState(opt.slidertoggledby); + } + else { + opt.forcepause_viatoggle = false; + opt.c.revresume(); + _R.toggleState(opt.slidertoggledby); + } + break; + case "pauseslider": + opt.c.revpause(); + _R.unToggleState(opt.slidertoggledby); + break; + case "playslider": + opt.noloopanymore=0; + opt.c.revresume(); + _R.toggleState(opt.slidertoggledby); + break; + case "playvideo": + + if (tnc.length>0) + _R.playVideo(tnc,opt); + break; + case "stopvideo": + if (tnc.length>0) + if (_R.stopVideo) _R.stopVideo(tnc,opt); + break; + case "togglevideo": + if (tnc.length>0) + if (!_R.isVideoPlaying(tnc,opt)) + _R.playVideo(tnc,opt); + else + if (_R.stopVideo) _R.stopVideo(tnc,opt); + break; + case "mutevideo": + if (tnc.length>0) + _R.muteVideo(tnc,opt); + break; + case "unmutevideo": + if (tnc.length>0) + if (_R.unMuteVideo) _R.unMuteVideo(tnc,opt); + break; + case "toggle_mute_video": + + if (tnc.length>0) + if (_R.isVideoMuted(tnc,opt)) { + _R.unMuteVideo(tnc,opt); + } else { + if (_R.muteVideo) _R.muteVideo(tnc,opt); + } + _nc.toggleClass('rs-toggle-content-active'); + break; + case "toggle_global_mute_video": + if (opt.globalmute === true) { + opt.globalmute = false; + if (opt.playingvideos != undefined && opt.playingvideos.length>0) { + jQuery.each(opt.playingvideos,function(i,_nc) { + if (_R.unMuteVideo) _R.unMuteVideo(_nc,opt); + }); + } + + } else { + opt.globalmute = true; + if (opt.playingvideos != undefined && opt.playingvideos.length>0) { + jQuery.each(opt.playingvideos,function(i,_nc) { + if (_R.muteVideo) _R.muteVideo(_nc,opt); + }); + } + } + _nc.toggleClass('rs-toggle-content-active'); + break; + case "simulateclick": + if (tnc.length>0) tnc.click(); + break; + case "toggleclass": + if (tnc.length>0) + if (!tnc.hasClass(a.classname)) + tnc.addClass(a.classname); + else + tnc.removeClass(a.classname); + break; + case "gofullscreen": + case "exitfullscreen": + case "togglefullscreen": + + if (jQuery('.rs-go-fullscreen').length>0 && (a.action=="togglefullscreen" || a.action=="exitfullscreen")) { + jQuery('.rs-go-fullscreen').removeClass("rs-go-fullscreen"); + var gf = opt.c.closest('.forcefullwidth_wrapper_tp_banner').length>0 ? opt.c.closest('.forcefullwidth_wrapper_tp_banner') : opt.c.closest('.rev_slider_wrapper'); + opt.minHeight = opt.oldminheight; + opt.infullscreenmode = false; + opt.c.revredraw(); + jQuery(window).trigger("resize"); + _R.unToggleState(opt.fullscreentoggledby); + + } else + if (jQuery('.rs-go-fullscreen').length==0 && (a.action=="togglefullscreen" || a.action=="gofullscreen")) { + var gf = opt.c.closest('.forcefullwidth_wrapper_tp_banner').length>0 ? opt.c.closest('.forcefullwidth_wrapper_tp_banner') : opt.c.closest('.rev_slider_wrapper'); + gf.addClass("rs-go-fullscreen"); + opt.oldminheight = opt.minHeight; + opt.minHeight = jQuery(window).height(); + opt.infullscreenmode = true; + opt.c.revredraw(); + jQuery(window).trigger("resize"); + _R.toggleState(opt.fullscreentoggledby); + } + + break; + default: + var obj = {}; + obj.event = a; + obj.layer = _nc; + opt.c.trigger('layeraction',[obj]); + break; + } +} + +var getOffContH = function(c) { + if (c==undefined) return 0; + if (c.split(',').length>1) { + var oc = c.split(","), + a =0; + if (oc) + jQuery.each(oc,function(index,sc) { + if (jQuery(sc).length>0) + a = a + jQuery(sc).outerHeight(true); + }); + return a; + } else { + return jQuery(c).height(); + } + return 0; +} + +})(jQuery); \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.carousel.js b/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.carousel.js new file mode 100644 index 0000000..19cf315 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.carousel.js @@ -0,0 +1,365 @@ +/******************************************** + * REVOLUTION 5.4.6.5 EXTENSION - CAROUSEL + * @version: 1.2.1 (18.11.2016) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ +(function($) { +"use strict"; +var _R = jQuery.fn.revolution, + extension = { alias:"Carousel Min JS", + name:"revolution.extensions.carousel.min.js", + min_core: "5.3.0", + version:"1.2.1" + }; + + /////////////////////////////////////////// + // EXTENDED FUNCTIONS AVAILABLE GLOBAL // + /////////////////////////////////////////// +jQuery.extend(true,_R, { + + // CALCULATE CAROUSEL POSITIONS + prepareCarousel : function(opt,a,direction,speed) { + + if (_R.compare_version(extension).check==="stop") return false; + + direction = opt.carousel.lastdirection = dircheck(direction,opt.carousel.lastdirection); + + setCarouselDefaults(opt); + + opt.carousel.slide_offset_target = getActiveCarouselOffset(opt); + + if (speed!==undefined) { + animateCarousel(opt,direction,false,0); + } else { + if (a==undefined) + _R.carouselToEvalPosition(opt,direction); + else + animateCarousel(opt,direction,false); + } + + }, + + // MOVE FORWARDS/BACKWARDS DEPENDING ON THE OFFSET TO GET CAROUSEL IN EVAL POSITION AGAIN + carouselToEvalPosition : function(opt,direction) { + + var _ = opt.carousel; + direction = _.lastdirection = dircheck(direction,_.lastdirection); + + var bb = _.horizontal_align==="center" ? ((_.wrapwidth/2-_.slide_width/2) - _.slide_globaloffset) / _.slide_width : (0 - _.slide_globaloffset) / _.slide_width, + fi = _R.simp(bb,opt.slideamount,false); + + var cm = fi - Math.floor(fi), + calc = 0, + mc = -1 * (Math.ceil(fi) - fi), + mf = -1 * (Math.floor(fi) - fi); + + calc = cm>=0.3 && direction==="left" || cm>=0.7 && direction==="right" ? mc : cm<0.3 && direction==="left" || cm<0.7 && direction==="right" ? mf : calc; + calc = _.infinity==="off" ? fi<0 ? fi : bb>opt.slideamount-1 ? bb-(opt.slideamount-1) : calc : calc; + + _.slide_offset_target = calc * _.slide_width; + // LONGER "SMASH" +/- 1 to Calc + + if (Math.abs(_.slide_offset_target) !==0) + animateCarousel(opt,direction,true); + else { + _R.organiseCarousel(opt,direction); + } + }, + + // ORGANISE THE CAROUSEL ELEMENTS IN POSITION AND TRANSFORMS + organiseCarousel : function(opt,direction,setmaind,unli) { + + direction = direction === undefined || direction=="down" || direction=="up" || direction===null || jQuery.isEmptyObject(direction) ? "left" : direction; + var _ = opt.carousel, + slidepositions = new Array(), + len = _.slides.length, + leftlimit = _.horizontal_align ==="right" ? opt.width : 0; + + + for (var i=0;i_.wrapwidth-_.inneroffset && direction=="right" ? _.slide_offset - ((_.slides.length-i)*_.slide_width) : pos; + pos = pos<0-_.inneroffset-_.slide_width && direction=="left" ? pos + _.maxwidth : pos; + } + slidepositions[i] = pos; + } + var maxd = 999; + + // SECOND RUN FOR NEGATIVE ADJUSTMENETS + if (_.slides) + jQuery.each(_.slides,function(i,slide) { + var pos = slidepositions[i]; + if (_.infinity==="on") { + + pos = pos>_.wrapwidth-_.inneroffset && direction==="left" ? slidepositions[0] - ((len-i)*_.slide_width) : pos; + pos = pos<0-_.inneroffset-_.slide_width ? direction=="left" ? pos + _.maxwidth : direction==="right" ? slidepositions[len-1] + ((i+1)*_.slide_width) : pos : pos; + } + + var tr= new Object(); + + tr.left = pos + _.inneroffset; + + // CHCECK DISTANCES FROM THE CURRENT FAKE FOCUS POSITION + var d = _.horizontal_align==="center" ? (Math.abs(_.wrapwidth/2) - (tr.left+_.slide_width/2))/_.slide_width : (_.inneroffset - tr.left)/_.slide_width, + offsdir = d<0 ? -1:1, + ha = _.horizontal_align==="center" ? 2 : 1; + + + if ((setmaind && Math.abs(d)0 ? 1-d : Math.abs(d)>_.maxVisibleItems-1 ? 1- (Math.abs(d)-(_.maxVisibleItems-1)) : 1; + break; + case "right": + tr.autoAlpha = d>-1 && d<0 ? 1-Math.abs(d) : d>_.maxVisibleItems-1 ? 1- (Math.abs(d)-(_.maxVisibleItems-1)) : 1; + break; + } + else + tr.autoAlpha = Math.abs(d)0) { + if (_.vary_scale==="on") { + tr.scale = 1- Math.abs(((_.minScale/100/Math.ceil(_.maxVisibleItems/ha))*d)); + var sx = (_.slide_width - (_.slide_width*tr.scale)) *Math.abs(d); + } else { + tr.scale = d>=1 || d<=-1 ? 1 - _.minScale/100 : (100-( _.minScale*Math.abs(d)))/100; + var sx=(_.slide_width - (_.slide_width*(1 - _.minScale/100)))*Math.abs(d); + } + } + + // ROTATION FUNCTIONS + if (_.maxRotation!==undefined && Math.abs(_.maxRotation)!=0) { + if (_.vary_rotation ==="on") { + tr.rotationY = Math.abs(_.maxRotation) - Math.abs((1-Math.abs(((1/Math.ceil(_.maxVisibleItems/ha))*d))) * _.maxRotation); + tr.autoAlpha = Math.abs(tr.rotationY)>90 ? 0 : tr.autoAlpha; + } else { + tr.rotationY = d>=1 || d<=-1 ? _.maxRotation : Math.abs(d)*_.maxRotation; + } + tr.rotationY = d<0 ? tr.rotationY*-1 : tr.rotationY; + } + + // SET SPACES BETWEEN ELEMENTS + tr.x = (-1*_.space) * d; + + tr.left = Math.floor(tr.left); + tr.x = Math.floor(tr.x); + + // ADD EXTRA SPACE ADJUSTEMENT IF COVER MODE IS SELECTED + tr.scale !== undefined ? d<0 ? tr.x-sx :tr.x+sx : tr.x; + + // ZINDEX ADJUSTEMENT + tr.zIndex = Math.round(100-Math.abs(d*5)); + + // TRANSFORM STYLE + tr.transformStyle = opt.parallax.type!="3D" && opt.parallax.type!="3d" ? "flat" : "preserve-3d"; + + + + // ADJUST TRANSFORMATION OF SLIDE + punchgs.TweenLite.set(slide,tr); + }); + + if (unli) { + opt.c.find('.next-revslide').removeClass("next-revslide"); + jQuery(_.slides[_.focused]).addClass("next-revslide"); + opt.c.trigger("revolution.nextslide.waiting"); + } + + var ll = _.wrapwidth/2 - _.slide_offset , + rl = _.maxwidth+_.slide_offset-_.wrapwidth/2; + } + +}); + +/************************************************** + - CAROUSEL FUNCTIONS - +***************************************************/ + +var defineCarouselElements = function(opt) { + var _ = opt.carousel; + + _.infbackup = _.infinity; + _.maxVisiblebackup = _.maxVisibleItems; + // SET DEFAULT OFFSETS TO 0 + _.slide_globaloffset = "none"; + _.slide_offset = 0; + // SET UL REFERENCE + _.wrap = opt.c.find('.tp-carousel-wrapper'); + // COLLECT SLIDES + _.slides = opt.c.find('.tp-revslider-slidesli'); + + // SET PERSPECTIVE IF ROTATION IS ADDED + if (_.maxRotation!==0) + if (opt.parallax.type!="3D" && opt.parallax.type!="3d") + punchgs.TweenLite.set(_.wrap,{perspective:1200,transformStyle:"flat"}); + else + punchgs.TweenLite.set(_.wrap,{perspective:1600,transformStyle:"preserve-3d"}); + + if (_.border_radius!==undefined && parseInt(_.border_radius,0) >0) { + punchgs.TweenLite.set(opt.c.find('.tp-revslider-slidesli'),{borderRadius:_.border_radius}); + } +} + +var setCarouselDefaults = function(opt) { + + if (opt.bw===undefined) _R.setSize(opt); + var _=opt.carousel, + loff = _R.getHorizontalOffset(opt.c,"left"), + roff = _R.getHorizontalOffset(opt.c,"right"); + + // IF NO DEFAULTS HAS BEEN DEFINED YET + if (_.wrap===undefined) defineCarouselElements(opt); + // DEFAULT LI WIDTH SHOULD HAVE THE SAME WIDTH OF TH OPT WIDTH + _.slide_width = _.stretch!=="on" ? opt.gridwidth[opt.curWinRange]*opt.bw : opt.c.width(); + + // CALCULATE CAROUSEL WIDTH + _.maxwidth = opt.slideamount*_.slide_width; + if (_.maxVisiblebackup>_.slides.length+1) + _.maxVisibleItems = _.slides.length+2; + + // SET MAXIMUM CAROUSEL WARPPER WIDTH (SHOULD BE AN ODD NUMBER) + _.wrapwidth = (_.maxVisibleItems * _.slide_width) + ((_.maxVisibleItems - 1) * _.space); + _.wrapwidth = opt.sliderLayout!="auto" ? + _.wrapwidth>opt.c.closest('.tp-simpleresponsive').width() ? opt.c.closest('.tp-simpleresponsive').width() : _.wrapwidth : + _.wrapwidth>opt.ul.width() ? opt.ul.width() : _.wrapwidth; + + + // INFINITY MODIFICATIONS + _.infinity = _.wrapwidth >=_.maxwidth ? "off" : _.infbackup; + + + // SET POSITION OF WRAP CONTAINER + _.wrapoffset = _.horizontal_align==="center" ? (opt.c.width()-roff - loff - _.wrapwidth)/2 : 0; + _.wrapoffset = opt.sliderLayout!="auto" && opt.outernav ? 0 : _.wrapoffset < loff ? loff : _.wrapoffset; + + var ovf = "hidden"; + if ((opt.parallax.type=="3D" || opt.parallax.type=="3d")) + ovf = "visible"; + + + + if (_.horizontal_align==="right") + punchgs.TweenLite.set(_.wrap,{left:"auto",right:_.wrapoffset+"px", width:_.wrapwidth, overflow:ovf}); + else + punchgs.TweenLite.set(_.wrap,{right:"auto",left:_.wrapoffset+"px", width:_.wrapwidth, overflow:ovf}); + + + + // INNER OFFSET FOR RTL + _.inneroffset = _.horizontal_align==="right" ? _.wrapwidth - _.slide_width : 0; + + // THE REAL OFFSET OF THE WRAPPER + _.realoffset = (Math.abs(_.wrap.position().left)); // + opt.c.width()/2); + + // THE SCREEN WIDTH/2 + _.windhalf = jQuery(window).width()/2; + + + +} + + +// DIRECTION CHECK +var dircheck = function(d,b) { + return d===null || jQuery.isEmptyObject(d) ? b : d === undefined ? "right" : d;; +} + +// ANIMATE THE CAROUSEL WITH OFFSETS +var animateCarousel = function(opt,direction,nsae,speed) { + + var _ = opt.carousel; + direction = _.lastdirection = dircheck(direction,_.lastdirection); + + var animobj = new Object(), + _ease = nsae ? punchgs.Power2.easeOut : _.easing; + + animobj.from = 0; + animobj.to = _.slide_offset_target; + speed = speed===undefined ? _.speed/1000 : speed; + speed = nsae ? 0.4 : speed; + + + if (_.positionanim!==undefined) + _.positionanim.pause(); + _.positionanim = punchgs.TweenLite.to(animobj,speed,{from:animobj.to, + onUpdate:function() { + _.slide_offset = _.slide_globaloffset + animobj.from; + _.slide_offset = _R.simp(_.slide_offset , _.maxwidth); + _R.organiseCarousel(opt,direction,false,false); + }, + onComplete:function() { + + _.slide_globaloffset = _.infinity==="off" ? _.slide_globaloffset + _.slide_offset_target : _R.simp(_.slide_globaloffset + _.slide_offset_target, _.maxwidth); + _.slide_offset = _R.simp(_.slide_offset , _.maxwidth); + + _R.organiseCarousel(opt,direction,false,true); + var li = jQuery(opt.li[_.focused]); + opt.c.find('.next-revslide').removeClass("next-revslide"); + if (nsae) _R.callingNewSlide(opt.c,li.data('index')); + }, ease:_ease}); +} + + +var breduc = function(a,m) { + return Math.abs(a)>Math.abs(m) ? a>0 ? a - Math.abs(Math.floor(a/(m))*(m)) : a + Math.abs(Math.floor(a/(m))*(m)) : a; +} + +// CAROUSEL INFINITY MODE, DOWN OR UP ANIMATION +var getBestDirection = function(a,b,max) { + var dira = b-a,max, + dirb = (b-max) - a,max; + dira = breduc(dira,max); + dirb = breduc(dirb,max); + return Math.abs(dira)>Math.abs(dirb) ? dirb : dira; + } + +// GET OFFSETS BEFORE ANIMATION +var getActiveCarouselOffset = function(opt) { + var ret = 0, + _ = opt.carousel; + + if (_.positionanim!==undefined) _.positionanim.kill(); + + if (_.slide_globaloffset=="none") + _.slide_globaloffset = ret = _.horizontal_align==="center" ? (_.wrapwidth/2-_.slide_width/2) : 0; + + else { + + _.slide_globaloffset = _.slide_offset; + _.slide_offset = 0; + var ci = opt.c.find('.processing-revslide').index(), + fi = _.horizontal_align==="center" ? ((_.wrapwidth/2-_.slide_width/2) - _.slide_globaloffset) / _.slide_width : (0 - _.slide_globaloffset) / _.slide_width; + + fi = _R.simp(fi,opt.slideamount,false); + ci = ci>=0 ? ci : opt.c.find('.active-revslide').index(); + ci = ci>=0 ? ci : 0; + + ret = _.infinity==="off" ? fi-ci : -getBestDirection(fi,ci,opt.slideamount); + ret = ret * _.slide_width; + } + return ret; +} + +})(jQuery); \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.kenburn.js b/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.kenburn.js new file mode 100644 index 0000000..9f61ae2 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.kenburn.js @@ -0,0 +1,199 @@ +/******************************************** + * REVOLUTION 5.4.6.5 EXTENSION - KEN BURN + * @version: 1.3.1 (15.05.2017) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ +(function($) { +"use strict"; +var _R = jQuery.fn.revolution, + extension = { alias:"KenBurns Min JS", + name:"revolution.extensions.kenburn.min.js", + min_core: "5.4", + version:"1.3.1" + }; + +/////////////////////////////////////////// +// EXTENDED FUNCTIONS AVAILABLE GLOBAL // +/////////////////////////////////////////// +jQuery.extend(true,_R, { + + stopKenBurn : function(l) { + if (_R.compare_version(extension).check==="stop") return false; + + if (l.data('kbtl')!=undefined) + l.data('kbtl').pause(); + }, + + startKenBurn : function(l,opt,prgs) { + + if (_R.compare_version(extension).check==="stop") return false; + + var d = l.data(), + i = l.find('.defaultimg'), + s = i.data('lazyload') || i.data('src'), + i_a = d.owidth / d.oheight, + cw = opt.sliderType==="carousel" ? opt.carousel.slide_width : opt.ul.width(), + ch = opt.ul.height(), + c_a = cw / ch; + + + if (l.data('kbtl')) + l.data('kbtl').kill(); + + + prgs = prgs || 0; + + + // NO KEN BURN IMAGE EXIST YET + if (l.find('.tp-kbimg').length==0) { + var mediafilter = i.data('mediafilter'); + mediafilter = mediafilter === undefined ? "" : mediafilter; + l.append('
      '); + l.data('kenburn',l.find('.tp-kbimg')); + } + + var getKBSides = function(w,h,f,cw,ch,ho,vo) { + var tw = w * f, + th = h * f, + hd = Math.abs(cw-tw), + vd = Math.abs(ch-th), + s = new Object(); + s.l = (0-ho)*hd; + s.r = s.l + tw; + s.t = (0-vo)*vd; + s.b = s.t + th; + s.h = ho; + s.v = vo; + return s; + }, + + getKBCorners = function(d,cw,ch,ofs,o) { + + var p = d.bgposition.split(" ") || "center center", + ho = p[0] == "center" ? "50%" : p[0] == "left" || p [1] == "left" ? "0%" : p[0]=="right" || p[1] =="right" ? "100%" : p[0], + vo = p[1] == "center" ? "50%" : p[0] == "top" || p [1] == "top" ? "0%" : p[0]=="bottom" || p[1] =="bottom" ? "100%" : p[1]; + + ho = parseInt(ho,0)/100 || 0; + vo = parseInt(vo,0)/100 || 0; + + + var sides = new Object(); + + + sides.start = getKBSides(o.start.width,o.start.height,o.start.scale,cw,ch,ho,vo); + sides.end = getKBSides(o.start.width,o.start.height,o.end.scale,cw,ch,ho,vo); + + return sides; + }, + + kcalcL = function(cw,ch,d) { + var f=d.scalestart/100, + fe=d.scaleend/100, + ofs = d.offsetstart != undefined ? d.offsetstart.split(" ") || [0,0] : [0,0], + ofe = d.offsetend != undefined ? d.offsetend.split(" ") || [0,0] : [0,0]; + d.bgposition = d.bgposition == "center center" ? "50% 50%" : d.bgposition; + + + var o = new Object(), + sw = cw*f, + sh = sw/d.owidth * d.oheight, + ew = cw*fe, + eh = ew/d.owidth * d.oheight; + + + + o.start = new Object(); + o.starto = new Object(); + o.end = new Object(); + o.endo = new Object(); + + o.start.width = cw; + o.start.height = o.start.width / d.owidth * d.oheight; + + if (o.start.height0 ? 0 : iws + ofs[0] < cw ? cw-iws : ofs[0]; + ofe[0] = ofe[0]>0 ? 0 : iwe + ofe[0] < cw ? cw-iwe : ofe[0]; + + ofs[1] = ofs[1]>0 ? 0 : ihs + ofs[1] < ch ? ch-ihs : ofs[1]; + ofe[1] = ofe[1]>0 ? 0 : ihe + ofe[1] < ch ? ch-ihe : ofe[1]; + + + + o.starto.x = ofs[0]+"px"; + o.starto.y = ofs[1]+"px"; + o.endo.x = ofe[0]+"px"; + o.endo.y = ofe[1]+"px"; + o.end.ease = o.endo.ease = d.ease; + o.end.force3D = o.endo.force3D = true; + return o; + }; + + if (l.data('kbtl')!=undefined) { + l.data('kbtl').kill(); + l.removeData('kbtl'); + } + + var k = l.data('kenburn'), + kw = k.parent(), + anim = kcalcL(cw,ch,d), + kbtl = new punchgs.TimelineLite(); + + + kbtl.pause(); + + + + anim.start.transformOrigin = "0% 0%"; + anim.starto.transformOrigin = "0% 0%"; + + kbtl.add(punchgs.TweenLite.fromTo(k,d.duration/1000,anim.start,anim.end),0); + kbtl.add(punchgs.TweenLite.fromTo(kw,d.duration/1000,anim.starto,anim.endo),0); + + // ADD BLUR EFFECT ON THE ELEMENTS + if (d.blurstart!==undefined && d.blurend!==undefined && (d.blurstart!==0 || d.blurend!==0)) { + var blurElement = {a:d.blurstart}, + blurElementEnd = {a:d.blurend, ease:anim.endo.ease}, + blurAnimation = new punchgs.TweenLite(blurElement, d.duration/1000, blurElementEnd); + + blurAnimation.eventCallback("onUpdate", function(kw) { + punchgs.TweenLite.set(kw,{filter:'blur('+blurElement.a+'px)',webkitFilter:'blur('+blurElement.a+'px)'}); + },[kw]); + kbtl.add(blurAnimation,0); + } + + kbtl.progress(prgs); + kbtl.play(); + + l.data('kbtl',kbtl); + } +}); + +})(jQuery); \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.layeranimation.js b/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.layeranimation.js new file mode 100644 index 0000000..34127ed --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.layeranimation.js @@ -0,0 +1,2524 @@ +/************************************************ + * REVOLUTION 5.4.6.5 EXTENSION - LAYER ANIMATION + * @version: 3.6.5 (10.06.2018) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +************************************************/ +;(function($) { + "use strict"; + +var _R = jQuery.fn.revolution, + _ISM = _R.is_mobile(), + _ANDROID = _R.is_android(), + extension = { alias:"LayerAnimation Min JS", + name:"revolution.extensions.layeranimation.min.js", + min_core: "5.4.6.4", + version:"3.6.5" + }; + + +/////////////////////////////////////////// +// EXTENDED FUNCTIONS AVAILABLE GLOBAL // +/////////////////////////////////////////// +jQuery.extend(true,_R, { + + updateMarkup : function(layer,o) { + + var d = jQuery(layer).data(); + + if (d.start!==undefined && !d.frames_added && d.frames===undefined) { + + var frames = new Array(), + oin = getAnimDatas(newAnimObject(),d.transform_in,undefined, false), + oout = getAnimDatas(newAnimObject(),d.transform_out,undefined, false), + oh = getAnimDatas(newAnimObject(),d.transform_hover,undefined, false); + + if (jQuery.isNumeric(d.end) && jQuery.isNumeric(d.start) && jQuery.isNumeric(oin.speed)) { + d.end = (parseInt(d.end,0) - (parseInt(d.start,0)+parseFloat(oin.speed,0))); + } + + frames.push({frame:"0", delay:d.start, from:d.transform_in, to:d.transform_idle, split:d.splitin, speed:oin.speed, ease:oin.anim.ease, mask:d.mask_in, splitdelay:d.elementdelay}); + frames.push({frame:"5", delay:d.end, to:d.transform_out, split:d.splitout, speed:oout.speed, ease:oout.anim.ease, mask:d.mask_out, splitdelay:d.elementdelay}); + if (d.transform_hover) + frames.push({frame:"hover", to:d.transform_hover, style:d.style_hover, speed:oh.speed, ease:oh.anim.ease, splitdelay:d.elementdelay}); + d.frames = frames; + //layer.frames_added = true; + } + + if (!d.frames_added) { + d.inframeindex = 0; + d.outframeindex = -1; + d.hoverframeindex = -1; + if (d.frames!==undefined) { + for (var i=0;i=0) { + if (i===0) { + d.frames[i].from = "o:0"; + d.frames[i].to = "o:1"; + } else { + d.frames[i].to = "o:0"; + } + + d._sfx = "block"; + } + + if (d.frames[0].from===undefined) d.frames[0].from = "o:inherit"; + + if (d.frames[0].delay===0) d.frames[0].delay=20; + + if (d.frames[i].frame==="hover") + d.hoverframeindex = i; + else + if (d.frames[i].frame==="frame_999" || d.frames[i].frame==="frame_out" || d.frames[i].frame==="last" || d.frames[i].frame==="end") + d.outframeindex = i; + + if (d.frames[i].split!==undefined && d.frames[i].split.match(/chars|words|lines/g)) + d.splittext = true; + } + + } + + d.outframeindex = d.outframeindex===-1 ? d.hoverframeindex === -1 ? d.frames.length-1 : d.frames.length -2 : d.outframeindex; // CHECK LATER !!! + d.frames_added = true; + + } + + }, + + // MAKE SURE THE ANIMATION ENDS WITH A CLEANING ON MOZ TRANSFORMS + animcompleted : function(_nc,opt) { + + var _ = _nc.data(), + t = _.videotype, + ap = _.autoplay, + an = _.autoplayonlyfirsttime; + + if (t!=undefined && t!="none") + if (ap==true || ap=="true" || ap=="on" || ap=="1sttime" || an) { + if (opt.sliderType!=="carousel" || + (opt.sliderType==="carousel" && opt.carousel.showLayersAllTime==="on" && _nc.closest('li').hasClass("active-revslide")) || + (opt.sliderType==="carousel" && opt.carousel.showLayersAllTime!=="on" && _nc.closest('li').hasClass("active-revslide")) + ) + _R.playVideo(_nc,opt); + + + _R.toggleState(_nc.data('videotoggledby')); + if ( an || ap=="1sttime") { + _.autoplayonlyfirsttime = false; + _.autoplay = "off"; + } + } else { + if (ap=="no1sttime") + _.datasetautoplay = 'on'; + _R.unToggleState(_nc.data('videotoggledby')); + } + + }, + + /******************************************************** + - PREPARE AND DEFINE STATIC LAYER DIRECTIONS - + *********************************************************/ + handleStaticLayers : function(_nc,opt) { + + var s = parseInt(_nc.data('startslide'),0), + e = parseInt(_nc.data('endslide'),0); + + if (s < 0) + s=0; + if (e <0 ) + e = opt.realslideamount; + if (s===0 && e===opt.realslideamount-1) + e = opt.realslideamount+1; + _nc.data('startslide',s); + _nc.data('endslide',e); + }, + + /************************************ + ANIMATE ALL CAPTIONS + *************************************/ + animateTheCaptions : function(obj) { + + + if (_R.compare_version(extension).check==="stop") return false; + + + var opt = obj.opt, + nextli = obj.slide, + recall = obj.recall, + mtl = obj.maintimeline, + preset = obj.preset, + startSlideAnimAt = obj.startslideanimat, + base_offsetx = opt.sliderType==="carousel" ? 0 : opt.width/2 - (opt.gridwidth[opt.curWinRange]*opt.bw)/2, + base_offsety=0, + index = nextli.data('index'); + + // COLLECTION OF LAYERS + opt.layers = opt.layers || new Object(); + opt.layers[index] = opt.layers[index] || nextli.find('.tp-caption'); + opt.layers["static"] = opt.layers["static"] || opt.c.find('.tp-static-layers').find('.tp-caption'); + + if (opt.timelines === undefined) _R.createTimelineStructure(opt); + + opt.conh = opt.c.height(); + opt.conw = opt.c.width(); + opt.ulw = opt.ul.width(); + opt.ulh = opt.ul.height(); + + /* ENABLE DEBUG MODE */ + if (opt.debugMode) { + nextli.addClass("indebugmode"); + nextli.find('.helpgrid').remove(); + opt.c.find('.hglayerinfo').remove(); + nextli.append('
      '); + var hg = nextli.find('.helpgrid'); + hg.append('
      Zoom:'+(Math.round(opt.bw*100))+'%     Device Level:'+opt.curWinRange+'    Grid Preset:'+opt.gridwidth[opt.curWinRange]+'x'+opt.gridheight[opt.curWinRange]+'
      ') + opt.c.append('
      ') + hg.append('
      '); + } + + // PREPARE THE LAYERS + if (index!==undefined && opt.layers[index]) + jQuery.each(opt.layers[index], function(i,a) { + var _t = jQuery(this); + _R.updateMarkup(this,opt); + _R.prepareSingleCaption({caption:_t, opt:opt, offsetx:base_offsetx, offsety:base_offsety, index:i, recall:recall, preset:preset}); + if (!preset || startSlideAnimAt===0) _R.buildFullTimeLine({caption:_t, opt:opt, offsetx:base_offsetx, offsety:base_offsety, index:i, recall:recall, preset:preset, regenerate: startSlideAnimAt===0}); + + if (recall && opt.sliderType==="carousel" && opt.carousel.showLayersAllTime==="on") _R.animcompleted(_t,opt); + }); + + if (opt.layers["static"]) + jQuery.each(opt.layers["static"], function(i,a) { + var _t = jQuery(this), + _ = _t.data(); + + if (_.hoveredstatus!==true && _.inhoveroutanimation!==true) { + _R.updateMarkup(this,opt); + _R.prepareSingleCaption({caption:_t, opt:opt, offsetx:base_offsetx, offsety:base_offsety, index:i, recall:recall, preset:preset}); + + if ((!preset || startSlideAnimAt===0) && _.veryfirstststic !==true) { + _R.buildFullTimeLine({caption:_t, opt:opt, offsetx:base_offsetx, offsety:base_offsety, index:i, recall:recall, preset:preset, regenerate: startSlideAnimAt===0}); + _.veryfirstststic = true; + } + if (recall && opt.sliderType==="carousel" && opt.carousel.showLayersAllTime==="on") _R.animcompleted(_t,opt); + + } else { + _R.prepareSingleCaption({caption:_t, opt:opt, offsetx:base_offsetx, offsety:base_offsety, index:i, recall:recall, preset:preset}); + } + }); + + + // RECALCULATE HEIGHTS OF SLIDE IF ROW EXIST + var _actli = opt.nextSlide === -1 || opt.nextSlide===undefined ? 0 : opt.nextSlide; + if (opt.rowzones!==undefined) + _actli = _actli>opt.rowzones.length ? opt.rowzones.length : _actli; + if (opt.rowzones!=undefined && opt.rowzones.length>0 && opt.rowzones[_actli]!=undefined && _actli>=0 && _actli<=opt.rowzones.length && opt.rowzones[_actli].length>0) + _R.setSize(opt); + + + // RESTART ANIMATION TIMELINES + + if (!preset) + if (startSlideAnimAt!==undefined) { + if (index!==undefined) + jQuery.each(opt.timelines[index].layers,function(key,o) { + var _ = o.layer.data(); + if (o.wrapper==="none" || o.wrapper===undefined) { + if (o.triggerstate=="keep" && _.triggerstate==="on") + _R.playAnimationFrame({caption:o.layer,opt:opt,frame:"frame_0", triggerdirection:"in", triggerframein:"frame_0", triggerframeout:"frame_999"}); + else + o.timeline.restart(); + } + }); + if (opt.timelines.staticlayers) + jQuery.each(opt.timelines.staticlayers.layers,function(key,o) { + + var _ = o.layer.data(), + in_v_range = _actli>=o.firstslide && _actli<=o.lastslide, + in_uv_range = _actlio.lastslide, + flt = o.timeline.getLabelTime("slide_"+o.firstslide), + elt = o.timeline.getLabelTime("slide_"+o.lastslide), + ct = _.static_layer_timeline_time, + isvisible = _.animdirection==="in" ? true : _.animdirection==="out" ? false : undefined, + triggered_in = _.frames[0].delay==="bytrigger", + triggered_out = _.frames[_.frames.length-1].delay==="bytrigger", + layer_start_status = _.triggered_startstatus, + triggerstate = _.lasttriggerstate; + + if (_.hoveredstatus===true || _.inhoveroutanimation==true) return; + + /*console.log("-----------------------") + console.log("Show Static Layer Start") + console.log("-----------------------") + console.log(ct); + console.log(isvisible)*/ + + // LAYER ALREADY VISIBLE, TIMER IS NOT UNKNOW ANY MORE + if (ct!==undefined && isvisible) { + if (triggerstate=="keep") { + + _R.playAnimationFrame({caption:o.layer,opt:opt,frame:"frame_0", triggerdirection:"in", triggerframein:"frame_0", triggerframeout:"frame_999"}); + _.triggeredtimeline.time(ct); + } + else { + + if (_.hoveredstatus!==true) + o.timeline.time(ct); + } + } + + + + // RESET STATUS ALWAYS TO HIDDEN + if (triggerstate==="reset" && layer_start_status==="hidden") { + //console.log("Pre Path X"); + o.timeline.time(0); + _.animdirection = "out"; + } + + //console.log("in Range:"+in_v_range+" "+o.firstslide+" <= "+_actli+" <= "+o.lastslide); + // LAYER IS ON SLIDE TO SHOW, OR LAYER NEED TO DISAPPEAR + if (in_v_range) { + if (isvisible) { + //console.log("Path A"); + if (_actli===o.lastslide) { + //console.log("Path A.1"); + o.timeline.play(elt); + _.animdirection = "in"; + } + } else { + //console.log("Path B"); + //console.log(triggered_in+" "+_.animdirection) + if (!triggered_in && _.animdirection!=="in") { + //console.log("Path B.1") + o.timeline.play(flt); + } + if ((layer_start_status=="visible" && triggerstate!=="keep") || (triggerstate==="keep" && isvisible===true) || (layer_start_status=="visible" && isvisible===undefined)) { + //console.log("Path B.2"); + o.timeline.play(flt+0.01); + _.animdirection = "in"; + } + } + } else { + //console.log("Path C"); + if (in_uv_range) { + //console.log("Path C.1"); + if (isvisible) { + //console.log("Path C.1.1") + o.timeline.play("frame_999"); + } else { + //console.log("Path C.1.2") + } + } + } + + }); + + } + + + + // RESUME THE MAIN TIMELINE NOW + if (mtl != undefined) setTimeout(function() { + + mtl.resume(); + },30); + + + + + }, + + + + /******************************************** + PREPARE ALL LAYER SIZES, POSITION + ********************************************/ + prepareSingleCaption : function(obj) { + + var _nc = obj.caption, + _ = _nc.data(), + opt = obj.opt, + recall = obj.recall, + internrecall = obj.recall, + preset = obj.preset, + rtl = jQuery('body').hasClass("rtl"), + datas; + + _._pw = _._pw===undefined ? _nc.closest('.tp-parallax-wrap') : _._pw; + _._lw = _._lw===undefined ? _nc.closest('.tp-loop-wrap') : _._lw; + _._mw = _._mw===undefined ? _nc.closest('.tp-mask-wrap') : _._mw; + + _._responsive = _.responsive || "on"; + _._respoffset = _.responsive_offset || "on"; + _._ba = _.basealign || "grid"; + _._gw = _._ba==="grid" ? opt.width : opt.ulw; + _._gh = _._ba==="grid" ? opt.height : opt.ulh; + + + _._lig = _._lig===undefined ? _nc.hasClass("rev_layer_in_group") ? _nc.closest('.rev_group') : _nc.hasClass("rev_layer_in_column") ?_nc.closest('.rev_column_inner') : _nc.hasClass("rev_column_inner") ? _nc.closest(".rev_row") : "none" : _._lig, + _._column = _._column===undefined ? _nc.hasClass("rev_column_inner") ? _nc.closest(".rev_column") : "none" : _._column, + _._row = _._row===undefined ? _nc.hasClass("rev_column_inner") ? _nc.closest(".rev_row") : "none" : _._row, + _._ingroup = _._ingroup===undefined ? !_nc.hasClass('rev_group') && _nc.closest('.rev_group') ? true : false :_._ingroup; + _._isgroup = _._isgroup===undefined ? _nc.hasClass("rev_group") ? true : false : _._isgroup; + _._nctype = _.type || "none"; + _._cbgc_auto = _._cbgc_auto===undefined ? _._nctype==="column" ? _._pw.find('.rev_column_bg_auto_sized') : false : _._cbgc_auto; + _._cbgc_man = _._cbgc_man===undefined ? _._nctype==="column" ? _._pw.find('.rev_column_bg_man_sized') : false : _._cbgc_man; + _._slideid = _._slideid || _nc.closest('.tp-revslider-slidesli').data('index'); + _._id = _._id===undefined ? _nc.data('id') || _nc.attr('id') : _._id; + _._slidelink = _._slidelink===undefined ? _nc.hasClass("slidelink")===undefined ? false : _nc.hasClass("slidelink") : _._slidelink; + + if (_._li===undefined) + if (_nc.hasClass("tp-static-layer")) { + _._isstatic = true; + _._li = _nc.closest('.tp-static-layers'); + _._slideid = "staticlayers"; + } else { + _._li = _nc.closest('.tp-revslider-slidesli'); + } + + _._row = _._row===undefined ? _._nctype==="column" ? _._pw.closest('.rev_row') : false : _._row; + + if (_._togglelisteners===undefined && _nc.find('.rs-toggled-content')) { + _._togglelisteners = true; + if (_.actions===undefined) _nc.click(function() {_R.swaptoggleState(_nc); }) + + } else { + _._togglelisteners = false; + } + + if (opt.sliderLayout=="fullscreen") + obj.offsety = _._gh/2 - (opt.gridheight[opt.curWinRange]*opt.bh)/2; + + if (opt.autoHeight=="on" || (opt.minHeight!=undefined && opt.minHeight>0)) + obj.offsety = opt.conh/2 - (opt.gridheight[opt.curWinRange]*opt.bh)/2;; + + if (obj.offsety<0) obj.offsety=0; + + // LAYER GRID FOR DEBUGGING + if (opt.debugMode) { + _nc.closest('li').find('.helpgrid').css({top:obj.offsety+"px", left:obj.offsetx+"px"}); + var linfo = opt.c.find('.hglayerinfo'); + _nc.on("hover, mouseenter",function() { + var ltxt = "", + spa = 0; + if (_nc.data()) + jQuery.each(_nc.data(),function(key,val) { + if (typeof val !== "object") { + + ltxt = ltxt + ''+key+":"+val+"    "; + + } + }); + linfo.html(ltxt); + }); + } + /* END OF DEBUGGING */ + + var handlecaption=0, + layervisible = _.visibility === undefined ? "oon" : makeArray(_.visibility,opt)[opt.forcedWinRange] || makeArray(_.visibility,opt) || "ooon"; + + // HIDE CAPTION IF RESOLUTION IS TOO LOW + if (layervisible==="off" || (_._gw0) { + var im = _nc.find('img'); + _.layertype = "image"; + if (im.width()==0) im.css({width:"auto"}); + if (im.height()==0) im.css({height:"auto"}); + if (im.data('ww') == undefined && im.width()>0) im.data('ww',im.width()); + if (im.data('hh') == undefined && im.height()>0) im.data('hh',im.height()); + + + var ww = im.data('ww'), + hh = im.data('hh'), + fuw = _._ba =="slide" ? opt.ulw : opt.gridwidth[opt.curWinRange], + fuh = _._ba =="slide" ? opt.ulh : opt.gridheight[opt.curWinRange]; + + ww = makeArray(im.data('ww'),opt)[opt.curWinRange] || makeArray(im.data('ww'),opt) || "auto", + hh = makeArray(im.data('hh'),opt)[opt.curWinRange] || makeArray(im.data('hh'),opt) || "auto"; + + + + var wful = ww==="full" || ww === "full-proportional", + hful = hh==="full" || hh === "full-proportional"; + + if (ww==="full-proportional") { + var ow = im.data('owidth'), + oh = im.data('oheight'); + if (ow/fuw < oh/fuh) { + ww = fuw; + hh = oh*(fuw/ow); + } else { + hh = fuh; + ww = ow*(fuh/oh); + } + } else { + + ww = wful ? fuw : !jQuery.isNumeric(ww) && ww.indexOf("%")>0 ? ww : parseFloat(ww); + hh = hful ? fuh : !jQuery.isNumeric(hh) && hh.indexOf("%")>0 ? hh : parseFloat(hh); + } + + ww = ww===undefined ? 0 : ww; + hh = hh===undefined ? 0 : hh; + + + if (_._responsive!=="off") { + if (_._ba!="grid" && wful) + if (jQuery.isNumeric(ww)) + im.css({width:ww+"px"}); + else + im.css({width:ww}); + else + if (jQuery.isNumeric(ww)) + im.css({width:(ww*opt.bw)+"px"}); + else + im.css({width:ww}); + + if (_._ba!="grid" && hful) + if (jQuery.isNumeric(hh)) + im.css({height:hh+"px"}); + else + im.css({height:hh}); + + else + if (jQuery.isNumeric(hh)) + im.css({height:(hh*opt.bh)+"px"}); + else + im.css({height:hh}); + + } else { + im.css({width:ww, height:hh}); + + } + + + if (_._ingroup && _._nctype!=="row") { + if (ww!==undefined && !jQuery.isNumeric(ww) && jQuery.type(ww)==="string" && ww.indexOf("%")>0) + punchgs.TweenLite.set([_._lw,_._pw,_._mw],{minWidth:ww}); + + + if (hh!==undefined && !jQuery.isNumeric(hh) && jQuery.type(hh)==="string" && hh.indexOf("%")>0) + punchgs.TweenLite.set([_._lw,_._pw,_._mw],{minHeight:hh}); + } + + + } + + + if (_._ba==="slide") { + obj.offsetx = 0; + obj.offsety=0; + } else { + if (_._isstatic && opt.carousel!==undefined && opt.carousel.horizontal_align!==undefined && opt.sliderType==="carousel") { + switch (opt.carousel.horizontal_align) { + case "center": + obj.offsetx = 0 + (opt.ulw - (opt.gridwidth[opt.curWinRange]*opt.bw))/2; + + break; + case "left": + break; + case "right": + obj.offsetx = (opt.ulw - (opt.gridwidth[opt.curWinRange]*opt.bw)); + break; + } + obj.offsetx = obj.offsetx<0 ? 0 : obj.offsetx; + } + } + + + + var tag = _.audio=="html5" ? "audio" : "video"; + + // IF IT IS A VIDEO LAYER + if (_nc.hasClass("tp-videolayer") || _nc.hasClass("tp-audiolayer") || _nc.find('iframe').length>0 || _nc.find(tag).length>0) { + + _.layertype = "video"; + if (_R.manageVideoLayer) _R.manageVideoLayer(_nc,opt,recall,internrecall); + if (!recall && !internrecall) { + var t = _.videotype; + if (_R.resetVideo) _R.resetVideo(_nc,opt,obj.preset); + } + + var asprat = _.aspectratio; + if (asprat!=undefined && asprat.split(":").length>1) + _R.prepareCoveredVideo(opt,_nc); + + var im = _nc.find('iframe') ? _nc.find('iframe') : im = _nc.find(tag), + html5vid = _nc.find('iframe') ? false : true, + yvcover = _nc.hasClass('coverscreenvideo'); + + im.css({display:"block"}); + + // SET WIDTH / HEIGHT + if (_nc.data('videowidth') == undefined) { + _nc.data('videowidth',im.width()); + _nc.data('videoheight',im.height()); + } + var ww = makeArray(_nc.data('videowidth'),opt)[opt.curWinRange] || makeArray(_nc.data('videowidth'),opt) || "auto", + hh = makeArray(_nc.data('videoheight'),opt)[opt.curWinRange] || makeArray(_nc.data('videoheight'),opt) || "auto"; + + /*if (!jQuery.isNumeric(ww) && ww.indexOf("%")>0) { + hh = (parseFloat(hh)*opt.bh)+"px"; + } else { + ww = (parseFloat(ww)*opt.bw)+"px"; + hh = (parseFloat(hh)*opt.bh)+"px"; + }*/ + + + if (ww==="auto" || (!jQuery.isNumeric(ww) && ww.indexOf("%")>0)) { + ww = ww==="auto" ? "auto" : _._ba==="grid" ? opt.gridwidth[opt.curWinRange]*opt.bw : _._gw; + } else { + ww = (parseFloat(ww)*opt.bw)+"px"; + } + + if (hh==="auto" || (!jQuery.isNumeric(hh) && hh.indexOf("%")>0)) { + hh = hh==="auto" ? "auto" : _._ba==="grid" ? opt.gridheight[opt.curWinRange]*opt.bw : _._gh; + } else { + hh = (parseFloat(hh)*opt.bh)+"px"; + } + + + // READ AND WRITE CSS SETTINGS OF IFRAME AND VIDEO FOR RESIZING ELEMENST ON DEMAND + _.cssobj = _.cssobj===undefined ? getcssParams(_nc,0) : _.cssobj; + + + var ncobj = setResponsiveCSSValues(_.cssobj,opt); + + + // IE8 FIX FOR AUTO LINEHEIGHT + if (ncobj.lineHeight=="auto") ncobj.lineHeight = ncobj.fontSize+4; + + + if (!_nc.hasClass('fullscreenvideo') && !yvcover) { + + punchgs.TweenLite.set(_nc,{ + paddingTop: Math.round((ncobj.paddingTop * opt.bh)) + "px", + paddingBottom: Math.round((ncobj.paddingBottom * opt.bh)) + "px", + paddingLeft: Math.round((ncobj.paddingLeft* opt.bw)) + "px", + paddingRight: Math.round((ncobj.paddingRight * opt.bw)) + "px", + marginTop: (ncobj.marginTop * opt.bh) + "px", + marginBottom: (ncobj.marginBottom * opt.bh) + "px", + marginLeft: (ncobj.marginLeft * opt.bw) + "px", + marginRight: (ncobj.marginRight * opt.bw) + "px", + borderTopWidth: Math.round(ncobj.borderTopWidth * opt.bh) + "px", + borderBottomWidth: Math.round(ncobj.borderBottomWidth * opt.bh) + "px", + borderLeftWidth: Math.round(ncobj.borderLeftWidth * opt.bw) + "px", + borderRightWidth: Math.round(ncobj.borderRightWidth * opt.bw) + "px", + width:ww, + height:hh + }); + } else { + obj.offsetx=0; obj.offsety=0; + _nc.data('x',0) + _nc.data('y',0) + + var ovhh = _._gh; + if (opt.autoHeight=="on") ovhh = opt.conh + _nc.css({'width':_._gw, 'height':ovhh }); + } + + + if ((html5vid == false && !yvcover) || ((_.forcecover!=1 && !_nc.hasClass('fullscreenvideo') && !yvcover))) { + + im.width(ww); + im.height(hh); + } + + if (_._ingroup) { + if (_.videowidth!==null && _.videowidth!==undefined && !jQuery.isNumeric(_.videowidth) && _.videowidth.indexOf("%")>0) + punchgs.TweenLite.set([_._lw,_._pw,_._mw],{minWidth:_.videowidth}); + } + + } // END OF POSITION AND STYLE READ OUTS OF VIDEO + + + + // RESPONIVE HANDLING OF CURRENT LAYER + calcCaptionResponsive(_nc,opt,0,_._responsive); + + + // ALL ELEMENTS IF THE MAIN ELEMENT IS REKURSIVE RESPONSIVE SHOULD BE REPONSIVE HANDLED + if (_nc.hasClass("tp-resizeme")) + _nc.find('*').each(function() { + calcCaptionResponsive(jQuery(this),opt,"rekursive",_._responsive); + }); + + // _nc FRONTCORNER CHANGES + var ncch = _nc.outerHeight(), + bgcol = _nc.css('backgroundColor'); + sharpCorners(_nc,'.frontcorner','left','borderRight','borderTopColor',ncch,bgcol); + sharpCorners(_nc,'.frontcornertop','left','borderRight','borderBottomColor',ncch,bgcol); + sharpCorners(_nc,'.backcorner','right','borderLeft','borderBottomColor',ncch,bgcol); + sharpCorners(_nc,'.backcornertop','right','borderLeft','borderTopColor',ncch,bgcol); + + + if (opt.fullScreenAlignForce == "on") { + obj.offsetx=0; + obj.offsety=0; + } + + // BLOCK ANIMATION ON LAYERS + if (_._sfx==="block") + if (_._bmask === undefined) { + _._bmask = jQuery('
      '); + _._mw.append(_._bmask); + } + + + _.arrobj = new Object(); + _.arrobj.voa = makeArray(_.voffset,opt)[opt.curWinRange] || makeArray(_.voffset,opt)[0]; + _.arrobj.hoa = makeArray(_.hoffset,opt)[opt.curWinRange] || makeArray(_.hoffset,opt)[0]; + _.arrobj.elx = makeArray(_.x,opt)[opt.curWinRange] || makeArray(_.x,opt)[0]; + _.arrobj.ely = makeArray(_.y,opt)[opt.curWinRange] || makeArray(_.y,opt)[0]; + + + var voa = _.arrobj.voa.length==0 ? 0 : _.arrobj.voa, + hoa = _.arrobj.hoa.length==0 ? 0 : _.arrobj.hoa, + elx = _.arrobj.elx.length==0 ? 0 : _.arrobj.elx, + ely = _.arrobj.ely.length==0 ? 0 : _.arrobj.ely; + + + + + _.eow = _nc.outerWidth(true); + _.eoh = _nc.outerHeight(true); + + + + + // NEED CLASS FOR FULLWIDTH AND FULLHEIGHT LAYER SETTING !! + if (_.eow==0 && _.eoh==0) { + _.eow = opt.ulw; + _.eoh = opt.ulh; + } + + + var vofs= _._respoffset !=="off" ? parseInt(voa,0)*opt.bw : parseInt(voa,0), + hofs= _._respoffset !=="off" ? parseInt(hoa,0)*opt.bw : parseInt(hoa,0), + crw = _._ba==="grid" ? opt.gridwidth[opt.curWinRange]*opt.bw : _._gw, + crh = _._ba==="grid" ? opt.gridheight[opt.curWinRange]*opt.bw : _._gh; + + + if (opt.fullScreenAlignForce == "on") { + crw = opt.ulw; + crh = opt.ulh; + } + + // ALIGN POSITIONED ELEMENTS + if (_._lig!=="none" && _._lig!=undefined) { + crw=_._lig.width(); + crh=_._lig.height(); + obj.offsetx =0; + obj.offsety = 0; + } + + + elx = elx==="center" || elx==="middle" ? (crw/2 - _.eow/2) + hofs : elx==="left" ? hofs : elx==="right" ? (crw - _.eow) - hofs : _._respoffset !=="off" ? elx * opt.bw : elx; + ely = ely=="center" || ely=="middle" ? (crh/2 - _.eoh/2) + vofs : ely =="top" ? vofs : ely=="bottom" ? (crh - _.eoh)-vofs : _._respoffset !=="off" ? ely*opt.bw : ely; + + if (rtl && !_._slidelink) + elx = elx + _.eow; + + if (_._slidelink) elx=0; + + + + _.calcx = (parseInt(elx,0)+obj.offsetx); + _.calcy = (parseInt(ely,0)+obj.offsety); + + + var tpcapindex = _nc.css("z-Index"); + + + + // SET TOP/LEFT POSITION OF LAYER + if (_._nctype!=="row" && _._nctype!=="column") + punchgs.TweenLite.set(_._pw,{zIndex:tpcapindex, top:_.calcy,left:_.calcx,overwrite:"auto"}); + else + if (_._nctype!=="row") + punchgs.TweenLite.set(_._pw,{zIndex:tpcapindex, width:_.columnwidth, top:0,left:0,overwrite:"auto"}); + else + if (_._nctype==="row") { + var _roww = _._ba==="grid" ? crw+"px" : "100%"; + punchgs.TweenLite.set(_._pw,{zIndex:tpcapindex, width:_roww, top:0,left:obj.offsetx,overwrite:"auto"}); + } + if (_.blendmode!==undefined) + punchgs.TweenLite.set(_._pw,{mixBlendMode:_.blendmode}); + + /*if (_._nctype==="svg") { + _.svgcontainer = _.svgcontainer===undefined ? _nc.find('.tp-svg-innercontainer') : _.svgcontainer; + punchgs.TweenLite.set(_.svgcontainer,{ ... }); + }*/ + + //SET ROW BROKEN / TABLE FORMED + if (_._nctype==="row") { + if (_.columnbreak<=opt.curWinRange) { + _nc.addClass("rev_break_columns"); + } else { + _nc.removeClass("rev_break_columns"); + } + } + + // LOOP ANIMATION WIDTH/HEIGHT + if (_.loopanimation=="on") punchgs.TweenLite.set(_._lw,{minWidth:_.eow,minHeight:_.eoh}); + + //Preset Position of BG + if (_._nctype==="column") { + var tempy = _nc[0]._gsTransform !==undefined ? _nc[0]._gsTransform.y : 0, + pT = parseInt(_._column[0].style.paddingTop,0); + punchgs.TweenLite.set(_nc,{y:0}); + punchgs.TweenLite.set(_._cbgc_man,{y:parseInt(( pT+_._column.offset().top-_nc.offset().top),0)}); + punchgs.TweenLite.set(_nc,{y:tempy}); + } + + // ELEMENT IN GROUPS WITH % WIDTH AND HEIGHT SHOULD EXTEND PARRENT SIZES + if (_._ingroup && _._nctype!=="row") { + if (_._groupw!==undefined && !jQuery.isNumeric(_._groupw) && _._groupw.indexOf("%")>0) + punchgs.TweenLite.set([_._lw,_._pw,_._mw],{minWidth:_._groupw}); + + if (_._grouph!==undefined && !jQuery.isNumeric(_._grouph) && _._grouph.indexOf("%")>0) + punchgs.TweenLite.set([_._lw,_._pw,_._mw],{minHeight:_._grouph}); + } + + }, + + + /******************************************** + BUILD THE TIMELINE STRUCTURES + ********************************************/ + createTimelineStructure : function(opt) { + + + // COLLECTION OF TIMELINES + opt.timelines = opt.timelines || new Object(); + + function addTimeLineWithLabel(layer,opt,parentobject,slideid) { + var timeline = new punchgs.TimelineLite({paused:true}), + c; + + + parentobject = parentobject || new Object(); + parentobject[layer.attr('id')] = parentobject[layer.attr('id')] || new Object(); + if (slideid==="staticlayers") { + parentobject[layer.attr('id')].firstslide = layer.data('startslide'); + parentobject[layer.attr('id')].lastslide = layer.data('endslide'); + } + + + layer.data('slideid',slideid); + parentobject[layer.attr('id')].defclasses=c=layer[0].className; + parentobject[layer.attr('id')].wrapper = c.indexOf("rev_layer_in_column")>=0 ? layer.closest('.rev_column_inner') : c.indexOf("rev_column_inner")>=0 ? layer.closest(".rev_row") : c.indexOf("rev_layer_in_group")>=0 ? layer.closest(".rev_group") : "none"; + parentobject[layer.attr('id')].timeline = timeline; + parentobject[layer.attr('id')].layer = layer; + parentobject[layer.attr('id')].triggerstate = layer.data('lasttriggerstate'); + parentobject[layer.attr('id')].dchildren = c.indexOf("rev_row")>=0 ? layer[0].getElementsByClassName('rev_column_inner') : c.indexOf("rev_column_inner")>=0 ? layer[0].getElementsByClassName('tp-caption') : c.indexOf("rev_group")>=0 ? layer[0].getElementsByClassName('rev_layer_in_group') : "none"; + layer.data('timeline',timeline); + + } + + + //GO THROUGH ALL LI + opt.c.find('.tp-revslider-slidesli, .tp-static-layers').each(function() { + var slide = jQuery(this), + index = slide.data('index'); + opt.timelines[index] = opt.timelines[index] || {}; + + opt.timelines[index].layers = opt.timelines[index].layers || new Object(); + + + // COLLECT LAYERS + slide.find('.tp-caption').each(function(i) { + addTimeLineWithLabel(jQuery(this),opt,opt.timelines[index].layers,index); + }); + + }); + + + + + }, + + + + /*************************************** + - BUILD CAPTION FULL TIMELINES - + ***************************************/ + buildFullTimeLine : function(obj) { + + //if (obj.recall) return; + + var _nc = obj.caption, + _ = _nc.data(), + opt = obj.opt, + $svg = {}, + _nc_tl_obj, + _nc_timeline, + $hover = newHoverAnimObject(), + timelineprog = 0; + + _nc_tl_obj = opt.timelines[_._slideid]["layers"][_._id]; + + + if (_nc_tl_obj.generated && obj.regenerate!==true) return; + _nc_timeline = _nc_tl_obj.timeline; + + _nc_tl_obj.generated = true; + + if (_.current_timeline!==undefined && obj.regenerate!==true) { + _.current_timeline_pause = _.current_timeline.paused(); + _.current_timeline_time = _.current_timeline.time(); + _.current_is_nc_timeline = _nc_timeline === _.current_timeline; + _.static_layer_timeline_time = _.current_timeline_time; + } else { + _.static_layer_timeline_time = _.current_timeline_time; + _.current_timeline_time = 0; + if (_.current_timeline) _.current_timeline.clear(); + } + + + + _nc_timeline.clear(); + + + // PRESET SVG STYLE + $svg.svg = _.svg_src!=undefined ? _nc.find('svg') : false; + if ($svg.svg) { + _.idlesvg = setSVGAnimObject(_.svg_idle,newSVGHoverAnimObject()); + punchgs.TweenLite.set($svg.svg,_.idlesvg.anim); + } + + + // HOVER ANIMATION + if (_.hoverframeindex!==-1 && _.hoverframeindex!==undefined) { + + if (!_nc.hasClass("rs-hover-ready")) { + + _nc.addClass("rs-hover-ready"); + _.hovertimelines = {}; + + _.hoveranim = getAnimDatas($hover,_.frames[_.hoverframeindex].to); + _.hoveranim = convertHoverStyle(_.hoveranim,_.frames[_.hoverframeindex].style); + + if ($svg.svg) { + + var $svghover = setSVGAnimObject(_.svg_hover,newSVGHoverAnimObject()); + if (_.hoveranim.anim.color!=undefined) { + $svghover.anim.fill = _.hoveranim.anim.color; + + _.idlesvg.anim.css.fill = $svg.svg.css("fill"); + + } + + + + _.hoversvg = $svghover; + } + + _nc.hover(function(e) { + + var obj = {caption:jQuery(e.currentTarget), opt:opt, firstframe : "frame_0", lastframe:"frame_999"}, + tl = getTLInfos(obj), + nc = obj.caption, + _ = nc.data(), + frame = _.frames[_.hoverframeindex], + animended = true; + + _.forcehover = frame.force; + + if (animended) { + _.hovertimelines.item = punchgs.TweenLite.to(nc,frame.speed/1000,_.hoveranim.anim); + if (_.hoverzIndex || (_.hoveranim.anim && _.hoveranim.anim.zIndex)) { + _.basiczindex = _.basiczindex===undefined ? _.cssobj.zIndex : _.basiczindex; + _.hoverzIndex = _.hoverzIndex===undefined ? _.hoveranim.anim.zIndex : _.hoverzIndex; + _.inhoverinanimation = true; + if (frame.speed===0) _.inhoverinanimation= false; + + _.hovertimelines.pwhoveranim = punchgs.TweenLite.to(_._pw,frame.speed/1000,{overwrite:"auto",zIndex:_.hoverzIndex}); + _.hovertimelines.pwhoveranim.eventCallback("onComplete",function(_) { + _.inhoverinanimation=false;; + },[_]) + } + if ($svg.svg) + _.hovertimelines.svghoveranim = punchgs.TweenLite.to([$svg.svg, $svg.svg.find('path')],frame.speed/1000,_.hoversvg.anim); + _.hoveredstatus = true; + } + }, + function(e) { + + var obj = {caption:jQuery(e.currentTarget), opt:opt, firstframe : "frame_0", lastframe:"frame_999"}, + tl = getTLInfos(obj), + nc = obj.caption, + _ = nc.data(), + frame = _.frames[_.hoverframeindex], + animended = true; + + + if (animended) { + _.hoveredstatus = false; + _.inhoveroutanimation = true; + _.hovertimelines.item.pause(); + _.hovertimelines.item = punchgs.TweenLite.to(nc,frame.speed/1000,jQuery.extend(true,{},_._gsTransformTo)); + + + if (frame.speed==0) _.inhoveroutanimation= false; + _.hovertimelines.item.eventCallback("onComplete",function(_) { + + _.inhoveroutanimation=false;; + },[_]) + if (_.hovertimelines.pwhoveranim!==undefined) _.hovertimelines.pwhoveranim = punchgs.TweenLite.to(_._pw,frame.speed/1000,{overwrite:"auto",zIndex:_.basiczindex}); + if ($svg.svg) punchgs.TweenLite.to([$svg.svg, $svg.svg.find('path')],frame.speed/1000,_.idlesvg.anim); + } + }); + } + } // END IF HOVER ANIMATION + + + // LOOP TROUGH THE FRAMES AND CREATE FRAME TWEENS AND TL'S ON THE MAIN TIMELINE + for (var frame_index=0; frame_index<_.frames.length;frame_index++) { + + if (frame_index !== _.hoverframeindex) { + + // Create a new Timeline for each Frame + var frame_name = frame_index === _.inframeindex ? "frame_0" : frame_index===_.outframeindex || _.frames[frame_index].frame==="frame_999" ? "frame_999" : "frame_"+frame_index; + _.frames[frame_index].framename = frame_name; + + _nc_tl_obj[frame_name] = {}; + _nc_tl_obj[frame_name].timeline = new punchgs.TimelineLite({align:"normal"}); + + + var $start = _.frames[frame_index].delay, + $start_status = _.triggered_startstatus, + mdelay = $start !== undefined ? jQuery.inArray($start,["slideenter","bytrigger","wait"])>=0 ? $start : parseInt($start,0)/1000 : "wait"; + + + // ADD STARTLABEL FOR STATIC LAYERS + if (_nc_tl_obj.firstslide!==undefined && frame_name==="frame_0") { + _nc_timeline.addLabel("slide_"+_nc_tl_obj.firstslide+"_pause",0); + _nc_timeline.addPause("slide_"+_nc_tl_obj.firstslide+"_pause"); + _nc_timeline.addLabel("slide_"+_nc_tl_obj.firstslide,"+=0.005"); + } + + // ADD ENDSLIDE LABEL FOR STATIC LAYERS + if (_nc_tl_obj.lastslide!==undefined && frame_name==="frame_999") { + _nc_timeline.addLabel("slide_"+_nc_tl_obj.lastslide+"_pause","+=0.01"); + _nc_timeline.addPause("slide_"+_nc_tl_obj.lastslide+"_pause"); + _nc_timeline.addLabel("slide_"+_nc_tl_obj.lastslide,"+=0.005"); + } + + if (!jQuery.isNumeric(mdelay)) { + _nc_timeline.addLabel("pause_"+frame_index,"+=0.01"); + _nc_timeline.addPause("pause_"+frame_index); + _nc_timeline.addLabel(frame_name,"+=0.01"); + } else { + _nc_timeline.addLabel(frame_name,"+="+mdelay); + } + + + _nc_timeline = _R.createFrameOnTimeline({caption:obj.caption, timeline : _nc_timeline, label:frame_name, frameindex : frame_index, opt:opt }); + + + + } // + } // END OF LOOP THROUGH FRAMES AND CREATING NEW TWEENS + //_nc_timeline.time(timelineprog); + + if (!obj.regenerate) { + if (_.current_is_nc_timeline) + _.current_timeline = _nc_timeline; + if (_.current_timeline_pause) + _nc_timeline.pause(_.current_timeline_time); + else + _nc_timeline.time(_.current_timeline_time); + } + + return; + }, + + ///////////////////////////////////// + // BUILD A FRAME ON THE TIMELINE // + ///////////////////////////////////// + createFrameOnTimeline : function(obj) { + var _nc = obj.caption, + _ = _nc.data(), + label = obj.label, + timeline = obj.timeline, + frame_index = obj.frameindex, + opt = obj.opt, + animobject = _nc, + tweens = {}, + _nc_tl_obj = opt.timelines[_._slideid]["layers"][_._id], + verylastframe = _.frames.length-1, + $split = _.frames[frame_index].split, + $splitdir = _.frames[frame_index].split_direction, + $sfx = _.frames[frame_index].sfx_effect, + $splitnow = false; + + $splitdir = $splitdir === undefined ? "forward" : $splitdir; + + if (_.hoverframeindex!==-1 && _.hoverframeindex==verylastframe) verylastframe=verylastframe-1; + + tweens.content = new punchgs.TimelineLite({align:"normal"}); + tweens.mask = new punchgs.TimelineLite({align:"normal"}); + + + if (timeline.vars.id===undefined) + timeline.vars.id=Math.round(Math.random()*100000); + if (_._nctype==="column") { + timeline.add(punchgs.TweenLite.set(_._cbgc_man,{visibility:"visible"}),label); + timeline.add(punchgs.TweenLite.set(_._cbgc_auto,{visibility:"hidden"}),label); + + + } + + if (_.splittext && frame_index===0) { + if (_.mySplitText !== undefined) _.mySplitText.revert(); + var splittarget = _nc.find('a').length>0 ? _nc.find('a') : _nc; + _.mySplitText = new punchgs.SplitText(splittarget,{type:"chars,words,lines",charsClass:"tp-splitted tp-charsplit",wordsClass:"tp-splitted tp-wordsplit",linesClass:"tp-splitted tp-linesplit"}); + + _nc.addClass("splitted"); + } + + if ( _.mySplitText !==undefined && $split && $split.match(/chars|words|lines/g)) { + animobject = _.mySplitText[$split]; + $splitnow = true; + } + + + // ANIMATE THE FRAME + + var $to = frame_index!==_.outframeindex ? getAnimDatas(newAnimObject(),_.frames[frame_index].to,undefined,$splitnow,animobject.length-1) : _.frames[frame_index].to !==undefined && _.frames[frame_index].to.match(/auto:auto/g)===null ? getAnimDatas(newEndAnimObject(),_.frames[frame_index].to,opt.sdir==1,$splitnow,(animobject.length-1)) : getAnimDatas(newEndAnimObject(),_.frames[_.inframeindex].from,opt.sdir==0,$splitnow,(animobject.length-1)), + $from = _.frames[frame_index].from !==undefined ? getAnimDatas($to,_.frames[_.inframeindex].from,opt.sdir==1,$splitnow,animobject.length-1) : undefined, // ANIMATE FROM THE VERY FIRST SETTING, OR FROM PREVIOUS SETTING + $elemdelay = _.frames[frame_index].splitdelay, + $mask_from,$mask_to; + + if (frame_index===0 && !obj.fromcurrentstate) + $mask_from = getMaskDatas(_.frames[frame_index].mask); + else + $mask_to = getMaskDatas(_.frames[frame_index].mask); + + $to.anim.ease = _.frames[frame_index].ease===undefined ? punchgs.Power1.easeInOut : _.frames[frame_index].ease; + + if ($from!==undefined) { + $from.anim.ease = _.frames[frame_index].ease===undefined ? punchgs.Power1.easeInOut : _.frames[frame_index].ease; + $from.speed = _.frames[frame_index].speed === undefined ? $from.speed : _.frames[frame_index].speed; + $from.anim.x = $from.anim.x * opt.bw || getBorderDirections($from.anim.x,opt,_.eow,_.eoh,_.calcy,_.calcx, "horizontal" ); + $from.anim.y = $from.anim.y * opt.bw || getBorderDirections($from.anim.y,opt,_.eow,_.eoh,_.calcy,_.calcx, "vertical" ); + + } + + if ($to!==undefined) { + $to.anim.ease = _.frames[frame_index].ease===undefined ? punchgs.Power1.easeInOut : _.frames[frame_index].ease; + $to.speed = _.frames[frame_index].speed === undefined ? $to.speed : _.frames[frame_index].speed; + $to.anim.x = $to.anim.x * opt.bw || getBorderDirections($to.anim.x,opt,_.eow,_.eoh,_.calcy,_.calcx, "horizontal" ); + $to.anim.y = $to.anim.y * opt.bw || getBorderDirections($to.anim.y,opt,_.eow,_.eoh,_.calcy,_.calcx, "vertical" ); + + + } + + // FIX VISIBLE IFRAME BUG IN SAFARI + if (_nc.data('iframes')) timeline.add(punchgs.TweenLite.set(_nc.find('iframe'),{autoAlpha:1}),label+"+=0.001"); + + + + // IN CASE LAST FRAME REACHED, AND ANIMATION IS SET TO AUTO (REVERSE PLAYING) + if (frame_index===_.outframeindex) { + if (_.frames[frame_index].to && _.frames[frame_index].to.match(/auto:auto/g)) { + // + } + + $to.speed = _.frames[frame_index].speed === undefined || _.frames[frame_index].speed==="inherit" ? _.frames[_.inframeindex].speed : _.frames[frame_index].speed; + $to.anim.ease = _.frames[frame_index].ease === undefined || _.frames[frame_index].ease==="inherit" ? _.frames[_.inframeindex].ease : _.frames[frame_index].ease; + $to.anim.overwrite ="auto"; + } + + + // IN CASE FIRST FRAME REACHED + if (frame_index===0 && !obj.fromcurrentstate) { + + if (animobject != _nc) { + var old = jQuery.extend({},$to.anim,true); + timeline.add(punchgs.TweenLite.set(_nc, $to.anim),label); + $to = newAnimObject(); + $to.ease = old.ease; + if (old.filter!==undefined) $to.anim.filter = old.filter; + if (old["-webkit-filter"]!==undefined) $to.anim["-webkit-filter"] = old["-webkit-filter"]; + } + + + $from.anim.visibility = "hidden"; + $from.anim.immediateRender = true; + $to.anim.visibility = "visible"; + + + //_nc.data('speed',$from.speed); + //_nc.data('ease',$to.anim.ease); + } else + + if (frame_index===0 && obj.fromcurrentstate) { + $to.speed = $from.speed; + } + + if (obj.fromcurrentstate) { + $to.anim.immediateRender = true; + } + + // SPECIAL EFFECT LAYER ANIMATIONS + var $sfx_blockdelay = -1; + + + //Boxed Mask Animation 0 or 999 Frame + if ((frame_index===0 && !obj.fromcurrentstate && _._bmask!==undefined && $sfx!==undefined && $sfx.indexOf("block")>=0) || + (frame_index===_.outframeindex && !obj.fromcurrentstate && _._bmask!==undefined && $sfx!==undefined && $sfx.indexOf("block")>=0)) { + var $sfx_speed = frame_index===0 ? ($from.speed/1000)/2 : ($to.speed/1000)/2, + $sfx_ft = [{scaleY:1,scaleX:0,transformOrigin:"0% 50%"},{scaleY:1,scaleX:1,ease:$to.anim.ease}], + $sfx_t = {scaleY:1,scaleX:0,transformOrigin:"100% 50%",ease:$to.anim.ease}; + + $sfx_blockdelay = $elemdelay === undefined ? $sfx_speed : $elemdelay + $sfx_speed; + + switch ($sfx) { + case "blocktoleft": + case "blockfromright": + $sfx_ft[0].transformOrigin = "100% 50%"; + $sfx_t.transformOrigin = "0% 50%"; + break; + + case "blockfromtop": + case "blocktobottom": + $sfx_ft = [{scaleX:1,scaleY:0,transformOrigin:"50% 0%"},{scaleX:1,scaleY:1,ease:$to.anim.ease}]; + $sfx_t = {scaleX:1,scaleY:0,transformOrigin:"50% 100%",ease:$to.anim.ease}; + break; + + case "blocktotop": + case "blockfrombottom": + $sfx_ft = [{scaleX:1,scaleY:0,transformOrigin:"50% 100%"},{scaleX:1,scaleY:1,ease:$to.anim.ease}]; + $sfx_t = {scaleX:1,scaleY:0,transformOrigin:"50% 0%",ease:$to.anim.ease}; + break; + } + $sfx_ft[0].background = _.frames[frame_index].sfxcolor; + + timeline.add(tweens.mask.fromTo(_._bmask,$sfx_speed, $sfx_ft[0], $sfx_ft[1],$elemdelay),label); + timeline.add(tweens.mask.to(_._bmask,$sfx_speed,$sfx_t,$sfx_blockdelay),label); + } + + + + if ($splitnow) + var ri = getSplitTextDirs(animobject.length-1, $splitdir); + + if (frame_index===0 && !obj.fromcurrentstate) { + if (_._sfx_in==="block") + timeline.add(tweens.content.staggerFromTo(animobject,0.05,{x:0,y:0,autoAlpha:0},{x:0,y:0,autoAlpha:1,delay:$sfx_blockdelay}),label); + else { + if ($splitnow && ri!==undefined) { + + var cycles = {from:getCycles($from.anim), to:getCycles($to.anim)}; + + for (var si in animobject) { + var $fanim = jQuery.extend({},$from.anim), + $tanim = jQuery.extend({},$to.anim); + for (var k in cycles.from) { + $fanim[k] = parseInt(cycles.from[k].values[cycles.from[k].index],0); + cycles.from[k].index = cycles.from[k].index < cycles.from[k].len ? cycles.from[k].index+1 : 0; + } + $tanim.ease = $fanim.ease; + if (_.frames[frame_index].color!==undefined) { + $fanim.color = _.frames[frame_index].color; + $tanim.color = _.cssobj.styleProps.color; + } + + if (_.frames[frame_index].bgcolor!==undefined) { + $fanim.backgroundColor = _.frames[frame_index].bgcolor; + $tanim.backgroundColor = _.cssobj.styleProps["background-color"]; + + } + timeline.add(tweens.content.fromTo(animobject[ri[si]],$from.speed/1000,$fanim,$tanim,$elemdelay*si),label); + } + } else { + if (_.frames[frame_index].color!==undefined) { + $from.anim.color = _.frames[frame_index].color; + $to.anim.color = _.cssobj.styleProps.color; + } + + if (_.frames[frame_index].bgcolor!==undefined) { + $from.anim.backgroundColor = _.frames[frame_index].bgcolor; + $to.anim.backgroundColor = _.cssobj.styleProps["background-color"]; + + } + timeline.add(tweens.content.staggerFromTo(animobject,$from.speed/1000,$from.anim,$to.anim,$elemdelay),label); + } + + + } + } else { + if (_._sfx_out==="block" && frame_index===_.outframeindex) { + timeline.add(tweens.content.staggerTo(animobject,0.001,{autoAlpha:0,delay:$sfx_blockdelay}),label); + timeline.add(tweens.content.staggerTo(animobject,((($to.speed/1000)/2)-0.001),{x:0,delay:$sfx_blockdelay}),label+"+=0.001"); + } else + if ($splitnow && ri!==undefined) { + + var cycles = {to:getCycles($to.anim)}; + + for (var si in animobject) { + var $tanim = jQuery.extend({},$to.anim); + for (var k in cycles.to) { + $tanim[k] = parseInt(cycles.to[k].values[cycles.to[k].index],0); + cycles.to[k].index = cycles.to[k].index < cycles.to[k].len ? cycles.to[k].index+1 : 0; + } + if (_.frames[frame_index].color!==undefined) + $tanim.color = _.frames[frame_index].color; + + if (_.frames[frame_index].bgcolor!==undefined) + $tanim.backgroundColor = _.frames[frame_index].bgcolor; + + timeline.add(tweens.content.to(animobject[ri[si]],$to.speed/1000,$tanim,$elemdelay*si),label); + } + } else { + if (_.frames[frame_index].color!==undefined) + $to.anim.color = _.frames[frame_index].color; + + if (_.frames[frame_index].bgcolor!==undefined) + $to.anim.backgroundColor = _.frames[frame_index].bgcolor; + + timeline.add(tweens.content.staggerTo(animobject,$to.speed/1000,$to.anim,$elemdelay),label); + } + } + + + if ($mask_to!==undefined && $mask_to!==false && (frame_index!==0 || !obj.ignorefirstframe)) { + $mask_to.anim.ease = $mask_to.anim.ease === undefined || $mask_to.anim.ease==="inherit" ? _.frames[0].ease : $mask_to.anim.ease; + $mask_to.anim.overflow = "hidden"; + $mask_to.anim.x = $mask_to.anim.x * opt.bw || getBorderDirections($mask_to.anim.x,opt,_.eow,_.eoh,_.calcy,_.calcx,"horizontal"); + $mask_to.anim.y = $mask_to.anim.y * opt.bw || getBorderDirections($mask_to.anim.y,opt,_.eow,_.eoh,_.calcy,_.calcx,"vertical"); + } + + if ((frame_index===0 && $mask_from && $mask_from!==false && !obj.fromcurrentstate) || (frame_index===0 && obj.ignorefirstframe)) { + $mask_to = new Object(); + $mask_to.anim = new Object(); + $mask_to.anim.overwrite = "auto"; + $mask_to.anim.ease = $to.anim.ease; + $mask_to.anim.x = $mask_to.anim.y = 0; + if ($mask_from && $mask_from!==false) { + $mask_from.anim.x = $mask_from.anim.x * opt.bw || getBorderDirections($mask_from.anim.x,opt,_.eow,_.eoh,_.calcy,_.calcx,"horizontal"); + $mask_from.anim.y = $mask_from.anim.y * opt.bw || getBorderDirections($mask_from.anim.y,opt,_.eow,_.eoh,_.calcy,_.calcx,"vertical"); + $mask_from.anim.overflow ="hidden"; + } + } else + if (frame_index===0) + timeline.add(tweens.mask.set(_._mw,{overflow:"visible"}),label); + + + if ($mask_from!==undefined && $mask_to!==undefined && $mask_from!==false && $mask_to!==false) + timeline.add(tweens.mask.fromTo(_._mw,$from.speed/1000,$mask_from.anim,$mask_to.anim,$elemdelay),label); + else + if ($mask_to!==undefined && $mask_to!==false) + timeline.add(tweens.mask.to(_._mw,$to.speed/1000,$mask_to.anim,$elemdelay),label); + + timeline.addLabel(label+"_end"); + + // Reset Hover Effect when Last Frame (Out Animation) ordered + if (_._gsTransformTo && frame_index===verylastframe && _.hoveredstatus) + _.hovertimelines.item = punchgs.TweenLite.to(_nc,0,_._gsTransformTo); + + _._gsTransformTo = false; + + + + // ON START + tweens.content.eventCallback("onStart",tweenOnStart,[frame_index,_nc_tl_obj,_._pw,_,timeline,$to.anim,_nc,obj.updateStaticTimeline,opt]); + + + + // ON UPDATE + tweens.content.eventCallback("onUpdate",tweenOnUpdate,[label,_._id,_._pw,_,timeline,frame_index,jQuery.extend(true,{},$to.anim),obj.updateStaticTimeline,_nc,opt]); + + + + // ON COMPLETE + tweens.content.eventCallback("onComplete",tweenOnComplete,[frame_index,_.frames.length,verylastframe,_._pw,_,timeline,obj.updateStaticTimeline,_nc,opt]); + + + return timeline; + }, + + + + + + ////////////////////////////// + // MOVE OUT THE CAPTIONS // + //////////////////////////// + endMoveCaption : function(obj) { + obj.firstframe="frame_0"; + obj.lastframe="frame_999"; + + var nc = getTLInfos(obj), + _ = obj.caption.data(); + + if (obj.frame!==undefined) + nc.timeline.play(obj.frame); + else + if (!nc.static || (obj.currentslide>=nc.removeonslide) || (obj.currentslide0) + for (var q = 0; q0) { + if (frame_index===0) + for (var q=0;q=0) ri.push(mm); + if (pp<=alen) ri.push(pp); + mm--; + pp++; + } + break; + case "edgetomiddle": + var mm = alen, + pp = 0; + for (var si=0;si<=Math.floor(alen/2);si++) { + ri.push(mm); + if (pp=0) { + if (_[a]===undefined) _[a] = {index:0}; + _[a].values = ((anim[a].replace("[","")).replace("]","")).split("|"); + _[a].len = _[a].values.length-1; + } + } + return _; +} + + +///////////////////////////////////// +// - CREATE ANIMATION OBJECT - // +///////////////////////////////////// +var newAnimObject = function(a) { + a = a===undefined ? new Object() : a; + a.anim = a.anim===undefined ? new Object() : a.anim; + a.anim.x = a.anim.x===undefined ? 0 : a.anim.x; + a.anim.y = a.anim.y===undefined ? 0 : a.anim.y; + a.anim.z = a.anim.z===undefined ? 0 : a.anim.z; + a.anim.rotationX = a.anim.rotationX===undefined ? 0 : a.anim.rotationX; + a.anim.rotationY = a.anim.rotationY===undefined ? 0 : a.anim.rotationY; + a.anim.rotationZ = a.anim.rotationZ===undefined ? 0 : a.anim.rotationZ; + a.anim.scaleX = a.anim.scaleX===undefined ? 1 : a.anim.scaleX; + a.anim.scaleY = a.anim.scaleY===undefined ? 1 : a.anim.scaleY; + a.anim.skewX = a.anim.skewX===undefined ? 0 : a.anim.skewX; + a.anim.skewY = a.anim.skewY===undefined ? 0 : a.anim.skewY; + a.anim.opacity = a.anim.opacity===undefined ? 1 : a.anim.opacity; + a.anim.transformOrigin = a.anim.transformOrigin===undefined ? "50% 50%" : a.anim.transformOrigin; + a.anim.transformPerspective = a.anim.transformPerspective===undefined ? 600 : a.anim.transformPerspective; + a.anim.rotation = a.anim.rotation===undefined ? 0 : a.anim.rotation; + //a.anim.ease = a.anim.ease===undefined ? punchgs.Power3.easeOut : a.anim.ease; + a.anim.force3D = a.anim.force3D===undefined ? "auto" : a.anim.force3D; + a.anim.autoAlpha = a.anim.autoAlpha===undefined ? 1 : a.anim.autoAlpha; + a.anim.visibility = a.anim.visibility===undefined ? "visible" : a.anim.visibility; + a.anim.overwrite = a.anim.overwrite===undefined ? "auto" : a.anim.overwrite; + a.speed = a.speed===undefined ? 0.3 : a.speed; + a.filter = a.filter===undefined ? "blur(0px) grayscale(0%) brightness(100%)" : a.filter; + a["-webkit-filter"] = a["-webkit-filter"]===undefined ? "blur(0px) grayscale(0%) brightness(100%)" : a["-webkit-filter"]; + + + return a; +} + +var newSVGHoverAnimObject = function() { + var a = new Object(); + a.anim = new Object(); + + a.anim.stroke="none"; + a.anim.strokeWidth=0; + a.anim.strokeDasharray="none"; + a.anim.strokeDashoffset="0"; + return a; +} + +var setSVGAnimObject = function(data,a) { + var customarray = data.split(';'); + if (customarray) + jQuery.each(customarray,function(index,pa) { + var p = pa.split(":") + var w = p[0], + v = p[1]; + + if (w=="sc") a.anim.stroke=v; + if (w=="sw") a.anim.strokeWidth=v; + if (w=="sda") a.anim.strokeDasharray=v; + if (w=="sdo") a.anim.strokeDashoffset=v; + }); + + return a; +} + + + +var newEndAnimObject = function() { + var a = new Object(); + a.anim = new Object(); + a.anim.x=0; + a.anim.y=0; + a.anim.z=0; + return a; +} + +var newHoverAnimObject = function() { + var a = new Object(); + a.anim = new Object(); + a.speed = 0.2; + return a; +} + +var animDataTranslator = function(val,defval,$split,$splitamount,ext) { + ext = ext===undefined ? "" : ext; + if (jQuery.isNumeric(parseFloat(val))) { + return parseFloat(val)+ext; + } else + if (val===undefined || val==="inherit") { + return defval+"ext"; + } else + if (val.split("{").length>1) { + var min = val.split(","), + max = parseFloat(min[1].split("}")[0]); + min = parseFloat(min[0].split("{")[1]); + + if ($split!==undefined && $splitamount!==undefined) { + + val=="["+(parseInt(Math.random()*(max-min),0) + parseInt(min,0))+"ext"; + for (var i=0;i<$splitamount;i++) { + val = val+"|"+(parseInt(Math.random()*(max-min),0) + parseInt(min,0))+ext; + } + val = val+"]"; + } else { + val = Math.random()*(max-min) + min; + } + } + + return val; +} + +var getBorderDirections = function (x,o,w,h,top,left,direction) { + + if (!jQuery.isNumeric(x) && x.match(/%]/g)) { + x = x.split("[")[1].split("]")[0]; + if (direction=="horizontal") + x = (w+2)*parseInt(x,0)/100; + else + if (direction=="vertical") + x = (h+2)*parseInt(x,0)/100; + } else { + + x = x === "layer_left" ? (0-w) : x === "layer_right" ? w : x; + x = x === "layer_top" ? (0-h) : x==="layer_bottom" ? h : x; + x = x === "left" || x==="stage_left" ? (0-w-left) : x === "right" || x==="stage_right" ? o.conw-left : x === "center" || x === "stage_center" ? (o.conw/2 - w/2)-left : x; + x = x === "top" || x==="stage_top" ? (0-h-top) : x==="bottom" || x==="stage_bottom" ? o.conh-top : x === "middle" || x === "stage_middle" ? (o.conh/2 - h/2)-top : x; + } + + + return x; +} + +/////////////////////////////////////////////////// +// ANALYSE AND READ OUT DATAS FROM HTML CAPTIONS // +/////////////////////////////////////////////////// +var getAnimDatas = function(frm,data,reversed,$split,$splitamount) { + + var o = new Object(); + o = jQuery.extend(true,{},o, frm); + if (data === undefined) + return o; + + var customarray = data.split(';'), + tmpf=""; + + + + if (customarray) + jQuery.each(customarray,function(index,pa) { + var p = pa.split(":") + var w = p[0], + v = p[1]; + + + if (reversed && reversed!=="none" && v!=undefined && v.length>0 && v.match(/\(R\)/)) { + v = v.replace("(R)",""); + v = v==="right" ? "left" : v==="left" ? "right" : v==="top" ? "bottom" : v==="bottom" ? "top" : v; + if (v[0]==="[" && v[1]==="-") v = v.replace("[-","["); + else + if (v[0]==="[" && v[1]!=="-") v = v.replace("[","[-"); + else + if (v[0]==="-") v = v.replace("-",""); + else + if (v[0].match(/[1-9]/)) v="-"+v; + } + + if (v!=undefined) { + v = v.replace(/\(R\)/,''); + + + if (w=="rotationX" || w=="rX") o.anim.rotationX = animDataTranslator(v,o.anim.rotationX,$split,$splitamount,"deg"); + if (w=="rotationY" || w=="rY") o.anim.rotationY = animDataTranslator(v,o.anim.rotationY,$split,$splitamount,"deg"); + if (w=="rotationZ" || w=="rZ") o.anim.rotation = animDataTranslator(v,o.anim.rotationZ,$split,$splitamount,"deg"); + if (w=="scaleX" || w=="sX") o.anim.scaleX = animDataTranslator(v,o.anim.scaleX,$split,$splitamount); + if (w=="scaleY" || w=="sY") o.anim.scaleY = animDataTranslator(v,o.anim.scaleY,$split,$splitamount); + if (w=="opacity" || w=="o") o.anim.opacity = animDataTranslator(v,o.anim.opacity,$split,$splitamount); + //if (w=="letterspacing" || w=="ls") o.anim.letterSpacing = animDataTranslator(v,o.anim.letterSpacing); + if (w=="fb") tmpf = tmpf==="" ? 'blur('+parseInt(v,0)+'px)' : tmpf+" "+'blur('+parseInt(v,0)+'px)'; + if (w=="fg") tmpf = tmpf==="" ? 'grayscale('+parseInt(v,0)+'%)' : tmpf+" "+'grayscale('+parseInt(v,0)+'%)'; + if (w=="fbr") tmpf = tmpf==="" ? 'brightness('+parseInt(v,0)+'%)' : tmpf+" "+'brightness('+parseInt(v,0)+'%)'; + + if (o.anim.opacity===0) o.anim.autoAlpha = 0; + + o.anim.opacity = o.anim.opacity == 0 ? 0.0001 : o.anim.opacity; + + if (w=="skewX" || w=="skX") o.anim.skewX = animDataTranslator(v,o.anim.skewX,$split,$splitamount); + if (w=="skewY" || w=="skY") o.anim.skewY = animDataTranslator(v,o.anim.skewY,$split,$splitamount); + if (w=="x") o.anim.x = animDataTranslator(v,o.anim.x,$split,$splitamount); + if (w=="y") o.anim.y = animDataTranslator(v,o.anim.y,$split,$splitamount); + if (w=="z") o.anim.z = animDataTranslator(v,o.anim.z,$split,$splitamount); + if (w=="transformOrigin" || w=="tO") o.anim.transformOrigin = v.toString(); + if (w=="transformPerspective" || w=="tP") o.anim.transformPerspective=parseInt(v,0); + if (w=="speed" || w=="s") o.speed = parseFloat(v); + + //if (w=="ease" || w=="e") o.anim.ease = v; + } + }) + if (tmpf!=="") { + o.anim['-webkit-filter'] = tmpf; + o.anim['filter'] = tmpf; + } + + return o; +} + + + +///////////////////////////////// +// BUILD MASK ANIMATION OBJECT // +///////////////////////////////// +var getMaskDatas = function(d) { + if (d === undefined) + return false; + + var o = new Object(); + o.anim = new Object(); + var s = d.split(';') + if (s) + jQuery.each(s,function(index,param) { + param = param.split(":") + var w = param[0], + v = param[1]; + if (w=="x") o.anim.x = v; + if (w=="y") o.anim.y = v; + if (w=="s") o.speed = parseFloat(v); + if (w=="e" || w=="ease") o.anim.ease = v; + }); + + return o; +} + + + + +//////////////////////// +// SHOW THE CAPTION // +/////////////////////// + +var makeArray = function(obj,opt,show) { + + if (obj==undefined) obj = 0; + + if (!jQuery.isArray(obj) && jQuery.type(obj)==="string" && (obj.split(",").length>1 || obj.split("[").length>1)) { + obj = obj.replace("[",""); + obj = obj.replace("]",""); + var newobj = obj.match(/'/g) ? obj.split("',") : obj.split(","); + obj = new Array(); + if (newobj) + jQuery.each(newobj,function(index,element) { + element = element.replace("'",""); + element = element.replace("'",""); + obj.push(element); + }) + } else { + var tempw = obj; + if (!jQuery.isArray(obj) ) { + obj = new Array(); + obj.push(tempw); + } + } + + var tempw = obj[obj.length-1]; + + if (obj.length0) { + if (attr[0]==="background-color" && attr[1].indexOf("gradient")>=0) attr[0]="background"; + t.anim[attr[0]] = attr[1]; + } + }) + return t; + +} + + +//////////////////////////////////////////////// +// - GET CSS ATTRIBUTES OF ELEMENT - // +//////////////////////////////////////////////// +var getcssParams = function(nc,level) { + + var obj = new Object(), + gp = false, + pc; + + + // CHECK IF CURRENT ELEMENT SHOULD RESPECT REKURSICVE RESIZES, AND SHOULD OWN THE SAME ATTRIBUTES FROM PARRENT ELEMENT + if (level=="rekursive") { + pc = nc.closest('.tp-caption'); + if (pc && ( + (nc.css("fontSize") === pc.css("fontSize")) && + (nc.css("fontWeight") === pc.css("fontWeight")) && + (nc.css("lineHeight") === pc.css("lineHeight")) + )) + gp = true; + } + + + obj.basealign = nc.data('basealign') || "grid"; + obj.fontSize = gp ? pc.data('fontsize')===undefined ? parseInt(pc.css('fontSize'),0) || 0 : pc.data('fontsize') : nc.data('fontsize')===undefined ? parseInt(nc.css('fontSize'),0) || 0 : nc.data('fontsize'); + obj.fontWeight = gp ? pc.data('fontweight')===undefined ? parseInt(pc.css('fontWeight'),0) || 0 : pc.data('fontweight') : nc.data('fontweight')===undefined ? parseInt(nc.css('fontWeight'),0) || 0 : nc.data('fontweight'); + + obj.whiteSpace = gp ? pc.data('whitespace')===undefined ? pc.css('whitespace') || "normal" : pc.data('whitespace') : nc.data('whitespace')===undefined ? nc.css('whitespace') || "normal" : nc.data('whitespace'); + obj.textAlign = gp ? pc.data('textalign')===undefined ? pc.css('textalign') || "inherit" : pc.data('textalign') : nc.data('textalign')===undefined ? nc.css('textalign') || "inherit" : nc.data('textalign'); + obj.zIndex = gp ? pc.data('zIndex')===undefined ? pc.css('zIndex') || "inherit" : pc.data('zIndex') : nc.data('zIndex')===undefined ? nc.css('zIndex') || "inherit" : nc.data('zIndex'); + + if (jQuery.inArray(nc.data('layertype'),["video","image","audio"])===-1 && !nc.is("img")) + obj.lineHeight = gp ? pc.data('lineheight')===undefined ? parseInt(pc.css('lineHeight'),0) || 0 : pc.data('lineheight') : nc.data('lineheight')===undefined ? parseInt(nc.css('lineHeight'),0) || 0 : nc.data('lineheight'); + else + obj.lineHeight = 0; + + obj.letterSpacing = gp ? pc.data('letterspacing')===undefined ? parseFloat(pc.css('letterSpacing'),0) || 0 : pc.data('letterspacing') : nc.data('letterspacing')===undefined ? parseFloat(nc.css('letterSpacing')) || 0 : nc.data('letterspacing'); + + obj.paddingTop = nc.data('paddingtop')===undefined ? parseInt(nc.css('paddingTop'),0) || 0 : nc.data('paddingtop'); + obj.paddingBottom = nc.data('paddingbottom')===undefined ? parseInt(nc.css('paddingBottom'),0) || 0 : nc.data('paddingbottom'); + obj.paddingLeft = nc.data('paddingleft')===undefined ? parseInt(nc.css('paddingLeft'),0) || 0 : nc.data('paddingleft'); + obj.paddingRight = nc.data('paddingright')===undefined ? parseInt(nc.css('paddingRight'),0) || 0 : nc.data('paddingright'); + + obj.marginTop = nc.data('margintop')===undefined ? parseInt(nc.css('marginTop'),0) || 0 : nc.data('margintop'); + obj.marginBottom = nc.data('marginbottom')===undefined ? parseInt(nc.css('marginBottom'),0) || 0 : nc.data('marginbottom'); + obj.marginLeft = nc.data('marginleft')===undefined ? parseInt(nc.css('marginLeft'),0) || 0 : nc.data('marginleft'); + obj.marginRight = nc.data('marginright')===undefined ? parseInt(nc.css('marginRight'),0) || 0 : nc.data('marginright'); + obj.borderTopWidth = nc.data('bordertopwidth')===undefined ? parseInt(nc.css('borderTopWidth'),0) || 0 : nc.data('bordertopwidth'); + obj.borderBottomWidth = nc.data('borderbottomwidth')===undefined ? parseInt(nc.css('borderBottomWidth'),0) || 0 : nc.data('borderbottomwidth'); + obj.borderLeftWidth = nc.data('borderleftwidth')===undefined ? parseInt(nc.css('borderLeftWidth'),0) || 0 : nc.data('borderleftwidth'); + obj.borderRightWidth = nc.data('borderrightwidth')===undefined ? parseInt(nc.css('borderRightWidth'),0) || 0 : nc.data('borderrightwidth'); + + if (level!="rekursive") { + obj.color = nc.data('color')===undefined ? "nopredefinedcolor" : nc.data('color'); + + obj.whiteSpace = gp ? pc.data('whitespace')===undefined ? pc.css('whiteSpace') || "nowrap" : pc.data('whitespace') : nc.data('whitespace')===undefined ? nc.css('whiteSpace') || "nowrap" : nc.data('whitespace'); + obj.textAlign = gp ? pc.data('textalign')===undefined ? pc.css('textalign') || "inherit" : pc.data('textalign') : nc.data('textalign')===undefined ? nc.css('textalign') || "inherit" : nc.data('textalign'); + obj.fontWeight = gp ? pc.data('fontweight')===undefined ? parseInt(pc.css('fontWeight'),0) || 0 : pc.data('fontweight') : nc.data('fontweight')===undefined ? parseInt(nc.css('fontWeight'),0) || 0 : nc.data('fontweight'); + + obj.minWidth = nc.data('width')===undefined ? parseInt(nc.css('minWidth'),0) || 0 : nc.data('width'); + obj.minHeight = nc.data('height')===undefined ? parseInt(nc.css('minHeight'),0) || 0 : nc.data('height'); + + if (nc.data('videowidth')!=undefined && nc.data('videoheight')!=undefined) { + var vwid = nc.data('videowidth'), + vhei = nc.data('videoheight'); + vwid = vwid==="100%" ? "none" : vwid; + vhei = vhei==="100%" ? "none" : vhei; + + nc.data('width',vwid); + nc.data('height',vhei); + } + + obj.maxWidth = nc.data('width')===undefined ? parseInt(nc.css('maxWidth'),0) || "none" : nc.data('width'); + obj.maxHeight = jQuery.inArray(nc.data('type'),["column","row"])!==-1 ? "none" : nc.data('height')===undefined ? parseInt(nc.css('maxHeight'),0) || "none" : nc.data('height'); + + obj.wan = nc.data('wan')===undefined ? parseInt(nc.css('-webkit-transition'),0) || "none" : nc.data('wan'); + obj.moan = nc.data('moan')===undefined ? parseInt(nc.css('-moz-animation-transition'),0) || "none" : nc.data('moan'); + obj.man = nc.data('man')===undefined ? parseInt(nc.css('-ms-animation-transition'),0) || "none" : nc.data('man'); + obj.ani = nc.data('ani')===undefined ? parseInt(nc.css('transition'),0) || "none" : nc.data('ani'); + } + + + obj.styleProps = { borderTopLeftRadius : nc[0].style.borderTopLeftRadius, + borderTopRightRadius : nc[0].style.borderTopRightRadius, + borderBottomRightRadius : nc[0].style.borderBottomRightRadius, + borderBottomLeftRadius : nc[0].style.borderBottomLeftRadius, + "background" : nc[0].style["background"], + "boxShadow" : nc[0].style["boxShadow"], + "background-color" : nc[0].style["background-color"], + "border-top-color" : nc[0].style["border-top-color"], + "border-bottom-color" : nc[0].style["border-bottom-color"], + "border-right-color" : nc[0].style["border-right-color"], + "border-left-color" : nc[0].style["border-left-color"], + "border-top-style" : nc[0].style["border-top-style"], + "border-bottom-style" : nc[0].style["border-bottom-style"], + "border-left-style" : nc[0].style["border-left-style"], + "border-right-style" : nc[0].style["border-right-style"], + "border-left-width" : nc[0].style["border-left-width"], + "border-right-width" : nc[0].style["border-right-width"], + "border-bottom-width" : nc[0].style["border-bottom-width"], + "border-top-width" : nc[0].style["border-top-width"], + "color" : nc[0].style["color"], + "text-decoration" : nc[0].style["text-decoration"], + "font-style" : nc[0].style["font-style"] + }; + + if (obj.styleProps.background==="" || obj.styleProps.background===undefined || obj.styleProps.background === obj.styleProps["background-color"]) + delete obj.styleProps.background; + if (obj.styleProps.color=="") + obj.styleProps.color = nc.css("color"); + + return obj; +} + +// READ SINGLE OR ARRAY VALUES OF OBJ CSS ELEMENTS +var setResponsiveCSSValues = function(obj,opt) { + var newobj = new Object(); + if (obj) + jQuery.each(obj,function(key,val){ + var res_a = makeArray(val,opt)[opt.curWinRange]; + newobj[key] = res_a!==undefined ? res_a : obj[key]; + }); + return newobj; +} + +var minmaxconvert = function(a,m,r,fr) { + + a = jQuery.isNumeric(a) ? (a * m)+"px" : a; + a = a==="full" ? fr : a==="auto" || a==="none" ? r : a; + return a; + +} + +///////////////////////////////////////////////////////////////// +// - CALCULATE THE RESPONSIVE SIZES OF THE CAPTIONS - // +///////////////////////////////////////////////////////////////// +var calcCaptionResponsive = function(nc,opt,level,responsive) { + + var _=nc.data(); + + + _ = _===undefined ? {} : _; + + try{ + if (nc[0].nodeName=="BR" || nc[0].tagName=="br" + /*|| nc[0].nodeName=="b" || nc[0].tagName=="b" || + nc[0].nodeName=="strong" || nc[0].tagName=="STRONG"*/ + ) + return false; + } catch(e) { + + } + + _.cssobj = _.cssobj===undefined ? getcssParams(nc,level) : _.cssobj; + + var obj = setResponsiveCSSValues(_.cssobj,opt), + bw=opt.bw, + bh=opt.bh; + + if (responsive==="off") { + bw=1; + bh=1; + } + + // IE8 FIX FOR AUTO LINEHEIGHT + if (obj.lineHeight=="auto") obj.lineHeight = obj.fontSize+4; + + var objmargins = { Top: obj.marginTop, + Bottom: obj.marginBottom, + Left: obj.marginLeft, + Right: obj.marginRight + } + if (_._nctype==="column") { + punchgs.TweenLite.set(_._column,{ + paddingTop: Math.round((obj.marginTop * bh)) + "px", + paddingBottom: Math.round((obj.marginBottom * bh)) + "px", + paddingLeft: Math.round((obj.marginLeft* bw)) + "px", + paddingRight: Math.round((obj.marginRight * bw)) + "px"}); + objmargins = { Top: 0, + Bottom: 0, + Left: 0, + Right: 0 + } + + } + + + + if (!nc.hasClass("tp-splitted")) { + + nc.css("-webkit-transition", "none"); + nc.css("-moz-transition", "none"); + nc.css("-ms-transition", "none"); + nc.css("transition", "none"); + + var hashover = nc.data('transform_hover')!==undefined || nc.data('style_hover')!==undefined; + if (hashover) punchgs.TweenLite.set(nc,obj.styleProps); + + + punchgs.TweenLite.set(nc,{ + + fontSize: Math.round((obj.fontSize * bw))+"px", + fontWeight: obj.fontWeight, + letterSpacing:Math.floor((obj.letterSpacing * bw))+"px", + paddingTop: Math.round((obj.paddingTop * bh)) + "px", + paddingBottom: Math.round((obj.paddingBottom * bh)) + "px", + paddingLeft: Math.round((obj.paddingLeft* bw)) + "px", + paddingRight: Math.round((obj.paddingRight * bw)) + "px", + marginTop: (objmargins.Top * bh) + "px", + marginBottom: (objmargins.Bottom * bh) + "px", + marginLeft: (objmargins.Left * bw) + "px", + marginRight: (objmargins.Right * bw) + "px", + borderTopWidth: Math.round(obj.borderTopWidth * bh) + "px", + borderBottomWidth: Math.round(obj.borderBottomWidth * bh) + "px", + borderLeftWidth: Math.round(obj.borderLeftWidth * bw) + "px", + borderRightWidth: Math.round(obj.borderRightWidth * bw) + "px", + lineHeight: Math.round(obj.lineHeight * bh) + "px", + textAlign:(obj.textAlign), + overwrite:"auto"}); + + + if (level!="rekursive") { + + + + var winw = obj.basealign =="slide" ? opt.ulw : opt.gridwidth[opt.curWinRange], + winh = obj.basealign =="slide" ? opt.ulh : opt.gridheight[opt.curWinRange], + maxw = minmaxconvert(obj.maxWidth,bw,"none",winw), + maxh = minmaxconvert(obj.maxHeight,bh,"none",winh), + minw = minmaxconvert(obj.minWidth,bw,"0px",winw), + minh = minmaxconvert(obj.minHeight,bh,"0px",winh); + + + + // TWEEN FIX ISSUES + minw=minw===undefined ? 0 : minw; + minh=minh===undefined ? 0 : minh; + maxw=maxw===undefined ? "none" : maxw; + maxh=maxh===undefined ? "none" : maxh; + + + if (_._isgroup) { + + + if (minw==="#1/1#") minw = maxw = winw; + if (minw==="#1/2#") minw = maxw = winw / 2; + if (minw==="#1/3#") minw = maxw = winw/3; + + if (minw==="#1/4#") minw = maxw = winw / 4; + if (minw==="#1/5#") minw = maxw = winw / 5; + if (minw==="#1/6#") minw = maxw = winw / 6; + + if (minw==="#2/3#") minw = maxw = (winw / 3) * 2; + if (minw==="#3/4#") minw = maxw = (winw / 4) * 3; + if (minw==="#2/5#") minw = maxw = (winw / 5) * 2; + if (minw==="#3/5#") minw = maxw = (winw / 5) * 3; + if (minw==="#4/5#") minw = maxw = (winw / 5) * 4; + + if (minw==="#3/6#") minw = maxw = (winw / 6) * 3; + if (minw==="#4/6#") minw = maxw = (winw / 6) * 4; + if (minw==="#5/6#") minw = maxw = (winw / 6) * 5; + + } + + if (_._ingroup) { + _._groupw = minw; + _._grouph = minh; + } + + + punchgs.TweenLite.set(nc,{ + maxWidth:maxw, + maxHeight:maxh, + minWidth:minw, + minHeight:minh, + whiteSpace:obj.whiteSpace, + textAlign:(obj.textAlign), + overwrite:"auto" + }); + + if (obj.color!="nopredefinedcolor") + punchgs.TweenLite.set(nc,{color:obj.color,overwrite:"auto"}); + + if (_.svg_src!=undefined) { + var scolto = obj.color!="nopredefinedcolor" && obj.color!=undefined ? obj.color : obj.css!=undefined && obj.css.color!="nopredefinedcolor" && obj.css.color!=undefined ? obj.css.color : obj.styleProps.color!=undefined ? obj.styleProps.color : obj.styleProps.css!=undefined && obj.styleProps.css.color!=undefined ? obj.styleProps.css.color : false; + if (scolto!=false) { + punchgs.TweenLite.set(nc.find('svg'),{fill:scolto,overwrite:"auto"}); + punchgs.TweenLite.set(nc.find('svg path'),{fill:scolto,overwrite:"auto"}); + } + } + + } + + if (_._nctype==="column") { + + if (_._column_bg_set===undefined) { + _._column_bg_set = nc.css('backgroundColor'); + _._column_bg_image = nc.css('backgroundImage'); + _._column_bg_image_repeat =nc.css('backgroundRepeat'); + _._column_bg_image_position =nc.css('backgroundPosition'); + _._column_bg_image_size =nc.css('backgroundSize'); + _._column_bg_opacity = nc.data('bgopacity'); + _._column_bg_opacity = _._column_bg_opacity===undefined ? 1 : _._column_bg_opacity; + + + punchgs.TweenLite.set(nc,{ + backgroundColor:"transparent", + backgroundImage:"" + }); + } + + + setTimeout(function() { + setColumnBgDimension(nc,opt); + },1); + + + // DYNAMIC HEIGHT AUTO CALCULATED BY BROWSER + if (_._cbgc_auto && _._cbgc_auto.length>0) { + _._cbgc_auto[0].style.backgroundSize = _._column_bg_image_size; + if (jQuery.isArray(obj.marginLeft)) { + punchgs.TweenLite.set(_._cbgc_auto,{ + borderTopWidth: (obj.marginTop[opt.curWinRange] * bh) + "px", + borderLeftWidth: (obj.marginLeft[opt.curWinRange] * bw) + "px", + borderRightWidth: (obj.marginRight[opt.curWinRange] * bw) + "px", + borderBottomWidth:(obj.marginBottom[opt.curWinRange] * bh) + "px", + backgroundColor:_._column_bg_set, + backgroundImage:_._column_bg_image, + backgroundRepeat:_._column_bg_image_repeat, + backgroundPosition:_._column_bg_image_position, + opacity:_._column_bg_opacity + + }); + } else { + punchgs.TweenLite.set(_._cbgc_auto,{ + borderTopWidth: (obj.marginTop * bh) + "px", + borderLeftWidth: (obj.marginLeft * bw) + "px", + borderRightWidth: (obj.marginRight * bw) + "px", + borderBottomWidth:(obj.marginBottom * bh) + "px", + backgroundColor:_._column_bg_set, + backgroundImage:_._column_bg_image, + backgroundRepeat:_._column_bg_image_repeat, + backgroundPosition:_._column_bg_image_position, + opacity:_._column_bg_opacity + + }); + } + + + } + } + + setTimeout(function() { + nc.css("-webkit-transition", nc.data('wan')); + nc.css("-moz-transition", nc.data('moan')); + nc.css("-ms-transition", nc.data('man')); + nc.css("transition", nc.data('ani')); + },30); + } +} + + +var setColumnBgDimension = function(nc,opt) { + // DYNAMIC HEIGHT BASED ON ROW HEIGHT + var _ = nc.data(); + if (_._cbgc_man && _._cbgc_man.length>0) { + + + var _l,_t,_b,_r,_h,_o; + + if (!jQuery.isArray(_.cssobj.marginLeft)) { + _l = (_.cssobj.marginLeft * opt.bw); + _t = (_.cssobj.marginTop * opt.bh); + _b = (_.cssobj.marginBottom * opt.bh); + _r = (_.cssobj.marginRight * opt.bw); + } else { + _l = (_.cssobj.marginLeft[opt.curWinRange] * opt.bw); + _t = (_.cssobj.marginTop[opt.curWinRange] * opt.bh); + _b = (_.cssobj.marginBottom[opt.curWinRange] * opt.bh); + _r = (_.cssobj.marginRight[opt.curWinRange] * opt.bw); + } + _h = _._row.hasClass("rev_break_columns") ? "100%" : (_._row.height() - (_t+_b))+"px"; + + _._cbgc_man[0].style.backgroundSize = _._column_bg_image_size; + + punchgs.TweenLite.set(_._cbgc_man,{ + width:"100%", + height:_h, + backgroundColor:_._column_bg_set, + backgroundImage:_._column_bg_image, + backgroundRepeat:_._column_bg_image_repeat, + backgroundPosition:_._column_bg_image_position, + overwrite:"auto", + opacity:_._column_bg_opacity + }); + + } +} + +////////////////////// +// CAPTION LOOPS // +////////////////////// +var callCaptionLoops = function(el,factor) { + var _ = el.data(); + // SOME LOOPING ANIMATION ON INTERNAL ELEMENTS + if (el.hasClass("rs-pendulum")) { + if (_._loop_timeline==undefined) { + _._loop_timeline = new punchgs.TimelineLite; + var startdeg = el.data('startdeg')==undefined ? -20 : el.data('startdeg'), + enddeg = el.data('enddeg')==undefined ? 20 : el.data('enddeg'), + speed = el.data('speed')==undefined ? 2 : el.data('speed'), + origin = el.data('origin')==undefined ? "50% 50%" : el.data('origin'), + easing = el.data('easing')==undefined ? punchgs.Power2.easeInOut : el.data('easing'); + + + startdeg = startdeg * factor; + enddeg = enddeg * factor; + + _._loop_timeline.append(new punchgs.TweenLite.fromTo(el,speed,{force3D:"auto",rotation:startdeg,transformOrigin:origin},{rotation:enddeg,ease:easing})); + _._loop_timeline.append(new punchgs.TweenLite.fromTo(el,speed,{force3D:"auto",rotation:enddeg,transformOrigin:origin},{rotation:startdeg,ease:easing,onComplete:function() { + _._loop_timeline.restart(); + }})); + } + + } + + // SOME LOOPING ANIMATION ON INTERNAL ELEMENTS + if (el.hasClass("rs-rotate")) { + if (_._loop_timeline==undefined) { + _._loop_timeline = new punchgs.TimelineLite; + var startdeg = el.data('startdeg')==undefined ? 0 : el.data('startdeg'), + enddeg = el.data('enddeg')==undefined ? 360 : el.data('enddeg'), + speed = el.data('speed')==undefined ? 2 : el.data('speed'), + origin = el.data('origin')==undefined ? "50% 50%" : el.data('origin'), + easing = el.data('easing')==undefined ? punchgs.Power2.easeInOut : el.data('easing'); + + startdeg = startdeg * factor; + enddeg = enddeg * factor; + + _._loop_timeline.append(new punchgs.TweenLite.fromTo(el,speed,{force3D:"auto",rotation:startdeg,transformOrigin:origin},{rotation:enddeg,ease:easing,onComplete:function() { + _._loop_timeline.restart(); + }})); + } + + } + + // SOME LOOPING ANIMATION ON INTERNAL ELEMENTS + if (el.hasClass("rs-slideloop")) { + if (_._loop_timeline==undefined) { + _._loop_timeline = new punchgs.TimelineLite; + var xs = el.data('xs')==undefined ? 0 : el.data('xs'), + ys = el.data('ys')==undefined ? 0 : el.data('ys'), + xe = el.data('xe')==undefined ? 0 : el.data('xe'), + ye = el.data('ye')==undefined ? 0 : el.data('ye'), + speed = el.data('speed')==undefined ? 2 : el.data('speed'), + easing = el.data('easing')==undefined ? punchgs.Power2.easeInOut : el.data('easing'); + + xs = xs * factor; + ys = ys * factor; + xe = xe * factor; + ye = ye * factor; + + _._loop_timeline.append(new punchgs.TweenLite.fromTo(el,speed,{force3D:"auto",x:xs,y:ys},{x:xe,y:ye,ease:easing})); + _._loop_timeline.append(new punchgs.TweenLite.fromTo(el,speed,{force3D:"auto",x:xe,y:ye},{x:xs,y:ys,onComplete:function() { + _._loop_timeline.restart(); + }})); + } + } + + // SOME LOOPING ANIMATION ON INTERNAL ELEMENTS + if (el.hasClass("rs-pulse")) { + if (_._loop_timeline==undefined) { + _._loop_timeline = new punchgs.TimelineLite; + var zoomstart = el.data('zoomstart')==undefined ? 0 : el.data('zoomstart'), + zoomend = el.data('zoomend')==undefined ? 0 : el.data('zoomend'), + speed = el.data('speed')==undefined ? 2 : el.data('speed'), + easing = el.data('easing')==undefined ? punchgs.Power2.easeInOut : el.data('easing'); + + _._loop_timeline.append(new punchgs.TweenLite.fromTo(el,speed,{force3D:"auto",scale:zoomstart},{scale:zoomend,ease:easing})); + _._loop_timeline.append(new punchgs.TweenLite.fromTo(el,speed,{force3D:"auto",scale:zoomend},{scale:zoomstart,onComplete:function() { + _._loop_timeline.restart(); + }})); + } + } + + if (el.hasClass("rs-wave")) { + if (_._loop_timeline==undefined) { + _._loop_timeline = new punchgs.TimelineLite; + + var angle= el.data('angle')==undefined ? 10 : parseInt(el.data('angle'),0), + radius = el.data('radius')==undefined ? 10 : parseInt(el.data('radius'),0), + speed = el.data('speed')==undefined ? -20 : el.data('speed'), + origin = el.data('origin')==undefined ? "50% 50%" : el.data('origin'), + ors = origin.split(" "), + oo = new Object(); + + if (ors.length>=1) { + oo.x = ors[0]; + oo.y = ors[1]; + } else { + oo.x = "50%"; + oo.y = "50%"; + } + + radius = radius * factor; + + var _ox = ((parseInt(oo.x,0)/100)-0.5) * el.width(), + _oy = ((parseInt(oo.y,0)/100)-0.5) * el.height(), + yo = (-1*radius) + _oy, + xo = 0 + _ox, + angobj= {a:0, ang : angle, element:el, unit:radius, xoffset:xo, yoffset:yo}, + ang = parseInt(angle,0), + waveanim = new punchgs.TweenLite.fromTo(angobj,speed,{ a:(0+ang) },{ a:(360+ang),force3D:"auto",ease:punchgs.Linear.easeNone}); + + waveanim.eventCallback("onUpdate",function(angobj) { + var rad = angobj.a * (Math.PI / 180), + yy = angobj.yoffset+(angobj.unit * (1 - Math.sin(rad))), + xx = angobj.xoffset+Math.cos(rad) * angobj.unit; + punchgs.TweenLite.to(angobj.element,0.1,{force3D:"auto",x:xx, y:yy}); + },[angobj]); + + waveanim.eventCallback("onComplete",function(_) { + _._loop_timeline.restart(); + },[_]); + + _._loop_timeline.append(waveanim); + } + } +} + +var killCaptionLoops = function(nextcaption) { + // SOME LOOPING ANIMATION ON INTERNAL ELEMENTS + nextcaption.closest('.rs-pendulum, .rs-slideloop, .rs-pulse, .rs-wave').each(function() { + var _ = this; + if (_._loop_timeline!=undefined) { + _._loop_timeline.pause(); + _._loop_timeline = null; + } + }); +} + +})(jQuery); \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.migration.js b/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.migration.js new file mode 100644 index 0000000..f552d16 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.migration.js @@ -0,0 +1,260 @@ +/***************************************************************************************************** + * jquery.themepunch.revmigrate.js - jQuery Plugin for Revolution Slider Migration from 4.x to 5.0 + * @version: 1.0.2 (20.01.2016) + * @requires jQuery v1.7 or later (tested on 1.9) + * @author ThemePunch +*****************************************************************************************************/ + + +(function($) { + +var _R = jQuery.fn.revolution; + +/////////////////////////////////////////// +// EXTENDED FUNCTIONS AVAILABLE GLOBAL // +/////////////////////////////////////////// +jQuery.extend(true,_R, { + + // OUR PLUGIN HERE :) + migration: function(container,options) { + // PREPARE THE NEW OPTIONS + options = prepOptions(options); + // PREPARE LAYER ANIMATIONS + prepLayerAnimations(container,options); + return options; + } + }); + +var prepOptions = function(o) { + + // PARALLAX FALLBACKS + if (o.parallaxLevels || o.parallaxBgFreeze) { + var p = new Object(); + p.type = o.parallax + p.levels = o.parallaxLevels; + p.bgparallax = o.parallaxBgFreeze == "on" ? "off" : "on"; + + p.disable_onmobile = o.parallaxDisableOnMobile; + o.parallax = p; + } + if (o.disableProgressBar === undefined) + o.disableProgressBar = o.hideTimerBar || "off"; + + // BASIC FALLBACKS + if (o.startwidth || o.startheight) { + o.gridwidth = o.startwidth; + o.gridheight = o.startheight; + } + + if (o.sliderType===undefined) + o.sliderType = "standard"; + + if (o.fullScreen==="on") + o.sliderLayout = "fullscreen"; + + if (o.fullWidth==="on") + o.sliderLayout = "fullwidth"; + + if (o.sliderLayout===undefined) + o.sliderLayout = "auto"; + + + // NAVIGATION ARROW FALLBACKS + if (o.navigation===undefined) { + var n = new Object(); + if (o.navigationArrows=="solo" || o.navigationArrows=="nextto") { + var a = new Object(); + a.enable = true; + a.style = o.navigationStyle || ""; + a.hide_onmobile = o.hideArrowsOnMobile==="on" ? true : false; + a.hide_onleave = o.hideThumbs >0 ? true : false; + a.hide_delay = o.hideThumbs>0 ? o.hideThumbs : 200; + a.hide_delay_mobile = o.hideNavDelayOnMobile || 1500; + a.hide_under = 0; + a.tmp = ''; + a.left = { + h_align:o.soloArrowLeftHalign, + v_align:o.soloArrowLeftValign, + h_offset:o.soloArrowLeftHOffset, + v_offset:o.soloArrowLeftVOffset + }; + a.right = { + h_align:o.soloArrowRightHalign, + v_align:o.soloArrowRightValign, + h_offset:o.soloArrowRightHOffset, + v_offset:o.soloArrowRightVOffset + }; + n.arrows = a; + } + if (o.navigationType=="bullet") { + var b = new Object(); + b.style = o.navigationStyle || ""; + b.enable=true; + b.hide_onmobile = o.hideArrowsOnMobile==="on" ? true : false; + b.hide_onleave = o.hideThumbs >0 ? true : false; + b.hide_delay = o.hideThumbs>0 ? o.hideThumbs : 200; + b.hide_delay_mobile = o.hideNavDelayOnMobile || 1500; + b.hide_under = 0; + b.direction="horizontal"; + b.h_align=o.navigationHAlign || "center"; + b.v_align=o.navigationVAlign || "bottom"; + b.space=5; + b.h_offset=o.navigationHOffset || 0; + b.v_offset=o.navigationVOffset || 20; + b.tmp=''; + n.bullets = b; + } + if (o.navigationType=="thumb") { + var t = new Object(); + t.style=o.navigationStyle || ""; + t.enable=true; + t.width=o.thumbWidth || 100; + t.height=o.thumbHeight || 50; + t.min_width=o.thumbWidth || 100; + t.wrapper_padding=2; + t.wrapper_color="#f5f5f5"; + t.wrapper_opacity=1; + t.visibleAmount=o.thumbAmount || 3; + t.hide_onmobile = o.hideArrowsOnMobile==="on" ? true : false; + t.hide_onleave = o.hideThumbs >0 ? true : false; + t.hide_delay = o.hideThumbs>0 ? o.hideThumbs : 200; + t.hide_delay_mobile = o.hideNavDelayOnMobile || 1500; + t.hide_under = 0; + t.direction="horizontal"; + t.span=false; + t.position="inner"; + t.space=2; + t.h_align=o.navigationHAlign || "center"; + t.v_align=o.navigationVAlign || "bottom"; + t.h_offset=o.navigationHOffset || 0; + t.v_offset=o.navigationVOffset || 20; + t.tmp=''; + n.thumbnails = t; + } + + o.navigation = n; + + o.navigation.keyboardNavigation=o.keyboardNavigation || "on"; + o.navigation.onHoverStop=o.onHoverStop || "on"; + o.navigation.touch = { + touchenabled:o.touchenabled || "on", + swipe_treshold : o.swipe_treshold ||75, + swipe_min_touches : o.swipe_min_touches || 1, + drag_block_vertical:o.drag_block_vertical || false + }; + + } + + if (o.fallbacks==undefined) + o.fallbacks = { + isJoomla:o.isJoomla || false, + panZoomDisableOnMobile: o.parallaxDisableOnMobile || "off", + simplifyAll:o.simplifyAll || "on", + nextSlideOnWindowFocus:o.nextSlideOnWindowFocus || "off", + disableFocusListener:o.disableFocusListener || true + }; + + return o; + +} + +var prepLayerAnimations = function(container,opt) { + + var c = new Object(), + cw = container.width(), + ch = container.height(); + + c.skewfromleftshort = "x:-50;skX:85;o:0"; + c.skewfromrightshort = "x:50;skX:-85;o:0"; + c.sfl = "x:-50;o:0"; + c.sfr = "x:50;o:0"; + c.sft = "y:-50;o:0"; + c.sfb = "y:50;o:0"; + c.skewfromleft = "x:top;skX:85;o:0"; + c.skewfromright = "x:bottom;skX:-85;o:0"; + c.lfl = "x:top;o:0"; + c.lfr = "x:bottom;o:0"; + c.lft = "y:left;o:0"; + c.lfb = "y:right;o:0"; + c.fade = "o:0"; + var src = (Math.random()*720-360) + + + container.find('.tp-caption').each(function() { + var cp = jQuery(this), + rw = Math.random()*(cw*2)-cw, + rh = Math.random()*(ch*2)-ch, + rs = Math.random()*3, + rz = Math.random()*720-360, + rx = Math.random()*70-35, + ry = Math.random()*70-35, + ncc = cp.attr('class'); + c.randomrotate = "x:{-400,400};y:{-400,400};sX:{0,2};sY:{0,2};rZ:{-180,180};rX:{-180,180};rY:{-180,180};o:0;"; + + if (ncc.match("randomrotate")) cp.data('transform_in',c.randomrotate) + else + if (ncc.match(/\blfl\b/)) cp.data('transform_in',c.lfl) + else + if (ncc.match(/\blfr\b/)) cp.data('transform_in',c.lfr) + else + if (ncc.match(/\blft\b/)) cp.data('transform_in',c.lft) + else + if (ncc.match(/\blfb\b/)) cp.data('transform_in',c.lfb) + else + if (ncc.match(/\bsfl\b/)) cp.data('transform_in',c.sfl) + else + if (ncc.match(/\bsfr\b/)) cp.data('transform_in',c.sfr) + else + if (ncc.match(/\bsft\b/)) cp.data('transform_in',c.sft) + else + if (ncc.match(/\bsfb\b/)) cp.data('transform_in',c.sfb) + else + if (ncc.match(/\bskewfromleftshort\b/)) cp.data('transform_in',c.skewfromleftshort) + else + if (ncc.match(/\bskewfromrightshort\b/)) cp.data('transform_in',c.skewfromrightshort) + else + if (ncc.match(/\bskewfromleft\b/)) cp.data('transform_in',c.skewfromleft) + else + if (ncc.match(/\bskewfromright\b/)) cp.data('transform_in',c.skewfromright) + else + if (ncc.match(/\bfade\b/)) cp.data('transform_in',c.fade); + + if (ncc.match(/\brandomrotateout\b/)) cp.data('transform_out',c.randomrotate) + else + if (ncc.match(/\bltl\b/)) cp.data('transform_out',c.lfl) + else + if (ncc.match(/\bltr\b/)) cp.data('transform_out',c.lfr) + else + if (ncc.match(/\bltt\b/)) cp.data('transform_out',c.lft) + else + if (ncc.match(/\bltb\b/)) cp.data('transform_out',c.lfb) + else + if (ncc.match(/\bstl\b/)) cp.data('transform_out',c.sfl) + else + if (ncc.match(/\bstr\b/)) cp.data('transform_out',c.sfr) + else + if (ncc.match(/\bstt\b/)) cp.data('transform_out',c.sft) + else + if (ncc.match(/\bstb\b/)) cp.data('transform_out',c.sfb) + else + if (ncc.match(/\bskewtoleftshortout\b/)) cp.data('transform_out',c.skewfromleftshort) + else + if (ncc.match(/\bskewtorightshortout\b/)) cp.data('transform_out',c.skewfromrightshort) + else + if (ncc.match(/\bskewtoleftout\b/)) cp.data('transform_out',c.skewfromleft) + else + if (ncc.match(/\bskewtorightout\b/)) cp.data('transform_out',c.skewfromright) + else + if (ncc.match(/\bfadeout\b/)) cp.data('transform_out',c.fade); + + if (cp.data('customin')!=undefined) cp.data('transform_in',cp.data('customin')); + if (cp.data('customout')!=undefined) cp.data('transform_out',cp.data('customout')); + + }) + +} +})(jQuery); + + + + diff --git a/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.navigation.js b/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.navigation.js new file mode 100644 index 0000000..1252e71 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.navigation.js @@ -0,0 +1,1156 @@ +/******************************************** + * REVOLUTION 5.4.6.5 EXTENSION - NAVIGATION + * @version: 1.3.5 (06.04.2017) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ +(function($) { +"use strict"; +var _R = jQuery.fn.revolution, + _ISM = _R.is_mobile(), + extension = { alias:"Navigation Min JS", + name:"revolution.extensions.navigation.min.js", + min_core: "5.4.0", + version:"1.3.5" + }; + + +/////////////////////////////////////////// +// EXTENDED FUNCTIONS AVAILABLE GLOBAL // +/////////////////////////////////////////// +jQuery.extend(true,_R, { + + + hideUnHideNav : function(opt) { + var w = opt.c.width(), + a = opt.navigation.arrows, + b = opt.navigation.bullets, + c = opt.navigation.thumbnails, + d = opt.navigation.tabs; + + if (ckNO(a)) biggerNav(opt.c.find('.tparrows'),a.hide_under,w,a.hide_over); + if (ckNO(b)) biggerNav(opt.c.find('.tp-bullets'),b.hide_under,w,b.hide_over); + if (ckNO(c)) biggerNav(opt.c.parent().find('.tp-thumbs'),c.hide_under,w,c.hide_over); + if (ckNO(d)) biggerNav(opt.c.parent().find('.tp-tabs'),d.hide_under,w,d.hide_over); + + setONHeights(opt); + + }, + + resizeThumbsTabs : function(opt,force) { + + + if ((opt.navigation && opt.navigation.tabs.enable) || (opt.navigation && opt.navigation.thumbnails.enable)) { + var f = (jQuery(window).width()-480) / 500, + tws = new punchgs.TimelineLite(), + otab = opt.navigation.tabs, + othu = opt.navigation.thumbnails, + otbu = opt.navigation.bullets; + + tws.pause(); + f = f>1 ? 1 : f<0 ? 0 : f; + + if (ckNO(otab) && (force || otab.width>otab.min_width)) rtt(f,tws,opt.c,otab,opt.slideamount,'tab'); + if (ckNO(othu) && (force || othu.width>othu.min_width)) rtt(f,tws,opt.c,othu,opt.slideamount,'thumb'); + if (ckNO(otbu) && force) { + // SET BULLET SPACES AND POSITION + var bw = opt.c.find('.tp-bullets'); + + bw.find('.tp-bullet').each(function(i){ + var b = jQuery(this), + am = i+1, + w = b.outerWidth()+parseInt((otbu.space===undefined? 0:otbu.space),0), + h = b.outerHeight()+parseInt((otbu.space===undefined? 0:otbu.space),0); + + if (otbu.direction==="vertical") { + b.css({top:((am-1)*h)+"px", left:"0px"}); + bw.css({height:(((am-1)*h) + b.outerHeight()),width:b.outerWidth()}); + } + else { + b.css({left:((am-1)*w)+"px", top:"0px"}); + bw.css({width:(((am-1)*w) + b.outerWidth()),height:b.outerHeight()}); + } + }); + + } + + tws.play(); + + setONHeights(opt); + } + return true; + }, + + updateNavIndexes : function(opt) { + var _ = opt.c; + + function setNavIndex(a) { + if (_.find(a).lenght>0) { + _.find(a).each(function(i) { + jQuery(this).data('liindex',i); + }) + } + } + + setNavIndex('.tp-tab'); + setNavIndex('.tp-bullet'); + setNavIndex('.tp-thumb'); + _R.resizeThumbsTabs(opt,true); + _R.manageNavigation(opt); + }, + + + // PUT NAVIGATION IN POSITION AND MAKE SURE THUMBS AND TABS SHOWING TO THE RIGHT POSITION + manageNavigation : function(opt) { + + + + var lof = _R.getHorizontalOffset(opt.c.parent(),"left"), + rof = _R.getHorizontalOffset(opt.c.parent(),"right"); + + if (ckNO(opt.navigation.bullets)) { + if (opt.sliderLayout!="fullscreen" && opt.sliderLayout!="fullwidth") { + // OFFSET ADJUSTEMENT FOR LEFT ARROWS BASED ON THUMBNAILS AND TABS OUTTER + opt.navigation.bullets.h_offset_old = opt.navigation.bullets.h_offset_old === undefined ? opt.navigation.bullets.h_offset : opt.navigation.bullets.h_offset_old; + opt.navigation.bullets.h_offset = opt.navigation.bullets.h_align==="center" ? opt.navigation.bullets.h_offset_old+lof/2 -rof/2: opt.navigation.bullets.h_offset_old+lof-rof; + } + setNavElPositions(opt.c.find('.tp-bullets'),opt.navigation.bullets,opt); + } + + if (ckNO(opt.navigation.thumbnails)) + setNavElPositions(opt.c.parent().find('.tp-thumbs'),opt.navigation.thumbnails,opt); + + if (ckNO(opt.navigation.tabs)) + setNavElPositions(opt.c.parent().find('.tp-tabs'),opt.navigation.tabs,opt); + + if (ckNO(opt.navigation.arrows)) { + + if (opt.sliderLayout!="fullscreen" && opt.sliderLayout!="fullwidth") { + // OFFSET ADJUSTEMENT FOR LEFT ARROWS BASED ON THUMBNAILS AND TABS OUTTER + opt.navigation.arrows.left.h_offset_old = opt.navigation.arrows.left.h_offset_old === undefined ? opt.navigation.arrows.left.h_offset : opt.navigation.arrows.left.h_offset_old; + opt.navigation.arrows.left.h_offset = opt.navigation.arrows.left.h_align==="right" ? opt.navigation.arrows.left.h_offset_old+rof : opt.navigation.arrows.left.h_offset_old+lof; + + opt.navigation.arrows.right.h_offset_old = opt.navigation.arrows.right.h_offset_old === undefined ? opt.navigation.arrows.right.h_offset : opt.navigation.arrows.right.h_offset_old; + opt.navigation.arrows.right.h_offset = opt.navigation.arrows.right.h_align==="right" ? opt.navigation.arrows.right.h_offset_old+rof : opt.navigation.arrows.right.h_offset_old+lof; + } + setNavElPositions(opt.c.find('.tp-leftarrow.tparrows'),opt.navigation.arrows.left,opt); + setNavElPositions(opt.c.find('.tp-rightarrow.tparrows'),opt.navigation.arrows.right,opt); + } + + + if (ckNO(opt.navigation.thumbnails)) + moveThumbsInPosition(opt.c.parent().find('.tp-thumbs'),opt.navigation.thumbnails); + + if (ckNO(opt.navigation.tabs)) + moveThumbsInPosition(opt.c.parent().find('.tp-tabs'),opt.navigation.tabs); + }, + + + // MANAGE THE NAVIGATION + createNavigation : function(container,opt) { + if (_R.compare_version(extension).check==="stop") return false; + var cp = container.parent(), + _a = opt.navigation.arrows, _b = opt.navigation.bullets, _c = opt.navigation.thumbnails, _d = opt.navigation.tabs, + a = ckNO(_a), b = ckNO(_b), c = ckNO(_c), d = ckNO(_d); + + + // Initialise Keyboard Navigation if Option set so + initKeyboard(container,opt); + + // Initialise Mouse Scroll Navigation if Option set so + initMouseScroll(container,opt); + + //Draw the Arrows + if (a) initArrows(container,_a,opt); + + // BUILD BULLETS, THUMBS and TABS + opt.li.each(function(index) { + + var li_rtl = jQuery(opt.li[opt.li.length-1-index]); + var li = jQuery(this); + + if (b) + if (opt.navigation.bullets.rtl) + addBullet(container,_b,li_rtl,opt); + else + addBullet(container,_b,li,opt); + + if (c) + if (opt.navigation.thumbnails.rtl) + addThumb(container,_c,li_rtl,'tp-thumb',opt); + else + addThumb(container,_c,li,'tp-thumb',opt); + if (d) + if (opt.navigation.tabs.rtl) + addThumb(container,_d,li_rtl,'tp-tab',opt); + else + addThumb(container,_d,li,'tp-tab',opt); + }); + + // LISTEN TO SLIDE CHANGE - SET ACTIVE SLIDE BULLET + container.bind('revolution.slide.onafterswap revolution.nextslide.waiting',function() { + + //cp.find('.tp-bullet, .tp-thumb, .tp-tab').removeClass("selected"); + + var si = container.find(".next-revslide").length==0 ? container.find(".active-revslide").data("index") : container.find(".next-revslide").data("index"); + + container.find('.tp-bullet').each(function() { + var _t = jQuery(this); + if (_t.data('liref')===si) + _t.addClass("selected"); + else + _t.removeClass("selected"); + }); + + cp.find('.tp-thumb, .tp-tab').each(function() { + var _t = jQuery(this); + if (_t.data('liref')===si) { + _t.addClass("selected"); + if (_t.hasClass("tp-tab")) + moveThumbsInPosition(cp.find('.tp-tabs'),_d); + else + moveThumbsInPosition(cp.find('.tp-thumbs'),_c); + } else + _t.removeClass("selected"); + + }); + + var ai = 0, + f = false; + if (opt.thumbs) + jQuery.each(opt.thumbs,function(i,obj) { + ai = f === false ? i : ai; + f = obj.id === si || i === si ? true : f; + }); + + + var pi = ai>0 ? ai-1 : opt.slideamount-1, + ni = (ai+1)==opt.slideamount ? 0 : ai+1; + + + if (_a.enable === true) { + var inst = _a.tmp; + if (opt.thumbs[pi]!=undefined) { + jQuery.each(opt.thumbs[pi].params,function(i,obj) { + inst = inst.replace(obj.from,obj.to); + }); + } + _a.left.j.html(inst); + inst = _a.tmp; + if (ni>opt.slideamount) return; + jQuery.each(opt.thumbs[ni].params,function(i,obj) { + inst = inst.replace(obj.from,obj.to); + }); + _a.right.j.html(inst); + + if (!_a.rtl) { + punchgs.TweenLite.set(_a.left.j.find('.tp-arr-imgholder'),{backgroundImage:"url("+opt.thumbs[pi].src+")"}); + punchgs.TweenLite.set(_a.right.j.find('.tp-arr-imgholder'),{backgroundImage:"url("+opt.thumbs[ni].src+")"}); + } else { + punchgs.TweenLite.set(_a.left.j.find('.tp-arr-imgholder'),{backgroundImage:"url("+opt.thumbs[ni].src+")"}); + punchgs.TweenLite.set(_a.right.j.find('.tp-arr-imgholder'),{backgroundImage:"url("+opt.thumbs[pi].src+")"}); + } + } + + + }); + + hdResets(_a); + hdResets(_b); + hdResets(_c); + hdResets(_d); + + + // HOVER OVER ELEMENTS SHOULD SHOW/HIDE NAVIGATION ELEMENTS + cp.on("mouseenter mousemove",function() { + + if (!cp.hasClass("tp-mouseover")) { + cp.addClass("tp-mouseover"); + + punchgs.TweenLite.killDelayedCallsTo(showHideNavElements); + + if (a && _a.hide_onleave) showHideNavElements(cp.find('.tparrows'),_a,"show"); + if (b && _b.hide_onleave) showHideNavElements(cp.find('.tp-bullets'),_b,"show"); + if (c && _c.hide_onleave) showHideNavElements(cp.find('.tp-thumbs'),_c,"show"); + if (d && _d.hide_onleave) showHideNavElements(cp.find('.tp-tabs'),_d,"show"); + + // ON MOBILE WE NEED TO HIDE ELEMENTS EVEN AFTER TOUCH + if (_ISM) { + cp.removeClass("tp-mouseover"); + callAllDelayedCalls(container,opt); + } + } + }); + + cp.on("mouseleave",function() { + cp.removeClass("tp-mouseover"); + callAllDelayedCalls(container,opt); + }); + + // FIRST RUN HIDE ALL ELEMENTS + if (a && _a.hide_onleave) showHideNavElements(cp.find('.tparrows'),_a,"hide",0); + if (b && _b.hide_onleave) showHideNavElements(cp.find('.tp-bullets'),_b,"hide",0); + if (c && _c.hide_onleave) showHideNavElements(cp.find('.tp-thumbs'),_c,"hide",0); + if (d && _d.hide_onleave) showHideNavElements(cp.find('.tp-tabs'),_d,"hide",0); + + // Initialise Swipe Navigation + if (c) swipeAction(cp.find('.tp-thumbs'),opt); + if (d) swipeAction(cp.find('.tp-tabs'),opt); + if (opt.sliderType==="carousel") swipeAction(container,opt,true); + if ((opt.navigation.touch.touchOnDesktop==="on") || (opt.navigation.touch.touchenabled=="on" && _ISM)) swipeAction(container,opt,"swipebased"); + + + } + +}); + + + + +///////////////////////////////// +// - INTERNAL FUNCTIONS - /// +///////////////////////////////// + + +var moveThumbsInPosition = function(container,opt) { + + var thumbs = container.hasClass("tp-thumbs") ? ".tp-thumbs" : ".tp-tabs", + thumbmask = container.hasClass("tp-thumbs") ? ".tp-thumb-mask" : ".tp-tab-mask", + thumbsiw = container.hasClass("tp-thumbs") ? ".tp-thumbs-inner-wrapper" : ".tp-tabs-inner-wrapper", + thumb = container.hasClass("tp-thumbs") ? ".tp-thumb" : ".tp-tab", + t=container.find(thumbmask), + el = t.find(thumbsiw), + thumbdir = opt.direction, + tw = thumbdir==="vertical" ? t.find(thumb).first().outerHeight(true)+opt.space : t.find(thumb).first().outerWidth(true)+opt.space, + tmw = thumbdir==="vertical" ? t.height() : t.width(), + ti = parseInt(t.find(thumb+'.selected').data('liindex'),0), + me = tmw/tw, + ts = thumbdir==="vertical" ? t.height() : t.width(), + tp = 0-(ti * tw), + els = thumbdir==="vertical" ? el.height() : el.width(), + curpos = tp < 0-(els-ts) ? 0-(els-ts) : curpos > 0 ? 0 : tp, + elp = el.data('offset'); + + + if (me>2) { + curpos = tp - (elp+tw) <= 0 ? tp - (elp+tw) < 0-tw ? elp : curpos + tw : curpos; + curpos = ( (tp-tw + elp + tmw)< tw && tp + (Math.round(me)-2)*tw < elp) ? tp + (Math.round(me)-2)*tw : curpos; + } + + curpos = curpos < 0-(els-ts) ? 0-(els-ts) : curpos > 0 ? 0 : curpos; + + if (thumbdir!=="vertical" && t.width()>=el.width()) curpos = 0; + if (thumbdir==="vertical" && t.height()>=el.height()) curpos = 0; + + + if (!container.hasClass("dragged")) { + if (thumbdir==="vertical") + el.data('tmmove',punchgs.TweenLite.to(el,0.5,{top:curpos+"px",ease:punchgs.Power3.easeInOut})); + else + el.data('tmmove',punchgs.TweenLite.to(el,0.5,{left:curpos+"px",ease:punchgs.Power3.easeInOut})); + el.data('offset',curpos); + } + }; + + +// RESIZE THE THUMBS BASED ON ORIGINAL SIZE AND CURRENT SIZE OF WINDOW +var rtt = function(f,tws,c,o,lis,wh) { + var h = c.parent().find('.tp-'+wh+'s'), + ins = h.find('.tp-'+wh+'s-inner-wrapper'), + mask = h.find('.tp-'+wh+'-mask'), + cw = o.width*f < o.min_width ? o.min_width : Math.round(o.width*f), + ch = Math.round((cw/o.width) * o.height), + iw = o.direction === "vertical" ? cw : (cw*lis) + ((o.space)*(lis-1)), + ih = o.direction === "vertical" ? (ch*lis) + ((o.space)*(lis-1)) : ch, + anm = o.direction === "vertical" ? {width:cw+"px"} : {height:ch+"px"}; + + + tws.add(punchgs.TweenLite.set(h,anm)); + tws.add(punchgs.TweenLite.set(ins,{width:iw+"px",height:ih+"px"})); + tws.add(punchgs.TweenLite.set(mask,{width:iw+"px",height:ih+"px"})); + var fin = ins.find('.tp-'+wh+''); + if (fin) + jQuery.each(fin,function(i,el) { + if (o.direction === "vertical") + tws.add(punchgs.TweenLite.set(el,{top:(i*(ch+parseInt((o.space===undefined? 0:o.space),0))),width:cw+"px",height:ch+"px"})); + else + if (o.direction === "horizontal") + tws.add(punchgs.TweenLite.set(el,{left:(i*(cw+parseInt((o.space===undefined? 0:o.space),0))),width:cw+"px",height:ch+"px"})); + }); + return tws; +}; + +// INTERNAL FUNCTIONS +var normalizeWheel = function( event) /*object*/ { + + var sX = 0, sY = 0, // spinX, spinY + pX = 0, pY = 0, // pixelX, pixelY + PIXEL_STEP = 1, + LINE_HEIGHT = 1, + PAGE_HEIGHT = 1; + + // Legacy + if ('detail' in event) { sY = event.detail; } + if ('wheelDelta' in event) { sY = -event.wheelDelta / 120; } + if ('wheelDeltaY' in event) { sY = -event.wheelDeltaY / 120; } + if ('wheelDeltaX' in event) { sX = -event.wheelDeltaX / 120; } + + + //sY = navigator.userAgent.match(/mozilla/i) ? sY*10 : sY; + + + // side scrolling on FF with DOMMouseScroll + if ( 'axis' in event && event.axis === event.HORIZONTAL_AXIS ) { + sX = sY; + sY = 0; + } + + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + + if ('deltaY' in event) { pY = event.deltaY; } + if ('deltaX' in event) { pX = event.deltaX; } + + + + if ((pX || pY) && event.deltaMode) { + if (event.deltaMode == 1) { // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { sX = (pX < 1) ? -1 : 1; } + if (pY && !sY) { sY = (pY < 1) ? -1 : 1; } + + pY = navigator.userAgent.match(/mozilla/i) ? pY*10 : pY; + + if (pY>300 || pY<-300) pY = pY/10; + + return { spinX : sX, + spinY : sY, + pixelX : pX, + pixelY : pY }; + }; + +var initKeyboard = function(container,opt) { + if (opt.navigation.keyboardNavigation!=="on") return; + jQuery(document).keydown(function(e){ + if ((opt.navigation.keyboard_direction=="horizontal" && e.keyCode == 39) || (opt.navigation.keyboard_direction=="vertical" && e.keyCode==40)) { + opt.sc_indicator="arrow"; + opt.sc_indicator_dir = 0; + _R.callingNewSlide(container,1); + } + if ((opt.navigation.keyboard_direction=="horizontal" && e.keyCode == 37) || (opt.navigation.keyboard_direction=="vertical" && e.keyCode==38)) { + opt.sc_indicator="arrow"; + opt.sc_indicator_dir = 1; + _R.callingNewSlide(container,-1); + } + }); +}; + + + +var initMouseScroll = function(container,opt) { + + if (opt.navigation.mouseScrollNavigation!=="on" && opt.navigation.mouseScrollNavigation!=="carousel") return; + opt.isIEEleven = !!navigator.userAgent.match(/Trident.*rv\:11\./); + opt.isSafari = !!navigator.userAgent.match(/safari/i); + opt.ischrome = !!navigator.userAgent.match(/chrome/i); + + + var bl = opt.ischrome ? -49 : opt.isIEEleven || opt.isSafari ? -9 : navigator.userAgent.match(/mozilla/i) ? -29 : -49, + tl = opt.ischrome ? 49 : opt.isIEEleven || opt.isSafari ? 9 : navigator.userAgent.match(/mozilla/i) ? 29 : 49; + + + container.on('mousewheel DOMMouseScroll', function(e) { + + var res = normalizeWheel(e.originalEvent), + asi = container.find('.tp-revslider-slidesli.active-revslide').index(), + psi = container.find('.tp-revslider-slidesli.processing-revslide').index(), + fs = asi!=-1 && asi==0 || psi!=-1 && psi==0 ? true : false, + ls = asi!=-1 && asi==opt.slideamount-1 || psi!=1 && psi==opt.slideamount-1 ? true:false, + ret = true; + if (opt.navigation.mouseScrollNavigation=="carousel") + fs = ls = false; + + + if (psi==-1) { + + if(res.pixelYtl) { + if (!ls) { + opt.sc_indicator="arrow"; + if (opt.navigation.mouseScrollReverse!=="reverse") { + opt.sc_indicator_dir = 0; + _R.callingNewSlide(container,1); + } + ret = false; + } + if (!fs) { + opt.sc_indicator="arrow"; + if (opt.navigation.mouseScrollReverse==="reverse") { + opt.sc_indicator_dir = 1; + _R.callingNewSlide(container,-1); + } + ret = false; + } + } + + + } else { + ret = false; + } + + var tc = opt.c.offset().top-jQuery('body').scrollTop(), + bc = tc+opt.c.height(); + if (opt.navigation.mouseScrollNavigation!="carousel") { + if (opt.navigation.mouseScrollReverse!=="reverse") + if ((tc>0 && res.pixelY>0) || (bcjQuery(window).height() && res.pixelY>0)) + ret = true; + } else { + ret=false; + } + + + if (ret==false) { + e.preventDefault(e); + return false; + } else { + return; + } + }); +}; + +var isme = function (a,c,e) { + a = _ISM ? jQuery(e.target).closest('.'+a).length || jQuery(e.srcElement).closest('.'+a).length : jQuery(e.toElement).closest('.'+a).length || jQuery(e.originalTarget).closest('.'+a).length; + return a === true || a=== 1 ? 1 : 0; +}; + +// - SET THE SWIPE FUNCTION // + + +var swipeAction = function(container,opt,vertical) { + + //container[0].opt = opt; + + // TOUCH ENABLED SCROLL + var _ = opt.carousel; + jQuery(".bullet, .bullets, .tp-bullets, .tparrows").addClass("noSwipe"); + + + + _.Limit = "endless"; + var notonbody = _ISM || _R.get_browser()==="Firefox", + SwipeOn = container, //notonbody ? container : jQuery('body'), + pagescroll = opt.navigation.thumbnails.direction==="vertical" || opt.navigation.tabs.direction==="vertical"? "none" : "vertical", + swipe_wait_dir = opt.navigation.touch.swipe_direction || "horizontal"; + + pagescroll = vertical == "swipebased" && swipe_wait_dir=="vertical" ? "none" : vertical ? "vertical" : pagescroll; + + if (!jQuery.fn.swipetp) jQuery.fn.swipetp = jQuery.fn.swipe; + if (!jQuery.fn.swipetp.defaults || !jQuery.fn.swipetp.defaults.excludedElements) + if (!jQuery.fn.swipetp.defaults) + jQuery.fn.swipetp.defaults = new Object(); + + jQuery.fn.swipetp.defaults.excludedElements = "label, button, input, select, textarea, .noSwipe" + + + SwipeOn.swipetp({ + allowPageScroll:pagescroll, + triggerOnTouchLeave:true, + treshold:opt.navigation.touch.swipe_treshold, + fingers:opt.navigation.touch.swipe_min_touches, + + excludeElements:jQuery.fn.swipetp.defaults.excludedElements, + + swipeStatus:function(event,phase,direction,distance,duration,fingerCount,fingerData) { + + + + + var withinslider = isme('rev_slider_wrapper',container,event), + withinthumbs = isme('tp-thumbs',container,event), + withintabs = isme('tp-tabs',container,event), + starget = jQuery(this).attr('class'), + istt = starget.match(/tp-tabs|tp-thumb/gi) ? true : false; + + + + // SWIPE OVER SLIDER, TO SWIPE SLIDES IN CAROUSEL MODE + if (opt.sliderType==="carousel" && + (((phase==="move" || phase==="end" || phase=="cancel") && (opt.dragStartedOverSlider && !opt.dragStartedOverThumbs && !opt.dragStartedOverTabs)) + || (phase==="start" && withinslider>0 && withinthumbs===0 && withintabs===0))) { + + if (_ISM && (direction ==="up" || direction==="down")) return; + + opt.dragStartedOverSlider = true; + distance = (direction && direction.match(/left|up/g)) ? Math.round(distance * -1) : distance = Math.round(distance * 1); + + + switch (phase) { + case "start": + if (_.positionanim!==undefined) { + _.positionanim.kill(); + _.slide_globaloffset = _.infinity==="off" ? _.slide_offset : _R.simp(_.slide_offset, _.maxwidth); + } + _.overpull = "none"; + _.wrap.addClass("dragged"); + + break; + case "move": + + opt.c.find('.tp-withaction').addClass("tp-temporarydisabled"); + _.slide_offset = _.infinity==="off" ? _.slide_globaloffset + distance : _R.simp(_.slide_globaloffset + distance, _.maxwidth); + + if (_.infinity==="off") { + var bb = _.horizontal_align==="center" ? ((_.wrapwidth/2-_.slide_width/2) - _.slide_offset) / _.slide_width : (0 - _.slide_offset) / _.slide_width; + + if ((_.overpull ==="none" || _.overpull===0) && (bb<0 || bb>opt.slideamount-1)) + _.overpull = distance; + else + if (bb>=0 && bb<=opt.slideamount-1 && ((bb>=0 && distance>_.overpull) || (bb<=opt.slideamount-1 && distance<_.overpull))) + _.overpull = 0; + + _.slide_offset = bb<0 ? _.slide_offset+ (_.overpull-distance)/1.1 + Math.sqrt(Math.abs((_.overpull-distance)/1.1)) : + bb>opt.slideamount-1 ? _.slide_offset+ (_.overpull-distance)/1.1 - Math.sqrt(Math.abs((_.overpull-distance)/1.1)) : _.slide_offset ; + } + _R.organiseCarousel(opt,direction,true,true); + break; + + case "end": + case "cancel": + //duration !! + _.slide_globaloffset = _.slide_offset; + _.wrap.removeClass("dragged"); + _R.carouselToEvalPosition(opt,direction); + opt.dragStartedOverSlider = false; + opt.dragStartedOverThumbs = false; + opt.dragStartedOverTabs = false; + setTimeout(function() { + opt.c.find('.tp-withaction').removeClass("tp-temporarydisabled"); + },19); + break; + } + } else + + // SWIPE OVER THUMBS OR TABS + if (( + ((phase==="move" || phase==="end" || phase=="cancel") && (!opt.dragStartedOverSlider && (opt.dragStartedOverThumbs || opt.dragStartedOverTabs))) + || + (phase==="start" && (withinslider>0 && (withinthumbs>0 || withintabs>0))))) { + + + if (withinthumbs>0) opt.dragStartedOverThumbs = true; + if (withintabs>0) opt.dragStartedOverTabs = true; + + var thumbs = opt.dragStartedOverThumbs ? ".tp-thumbs" : ".tp-tabs", + thumbmask = opt.dragStartedOverThumbs ? ".tp-thumb-mask" : ".tp-tab-mask", + thumbsiw = opt.dragStartedOverThumbs ? ".tp-thumbs-inner-wrapper" : ".tp-tabs-inner-wrapper", + thumb = opt.dragStartedOverThumbs ? ".tp-thumb" : ".tp-tab", + _o = opt.dragStartedOverThumbs ? opt.navigation.thumbnails : opt.navigation.tabs; + + + distance = (direction && direction.match(/left|up/g)) ? Math.round(distance * -1) : distance = Math.round(distance * 1); + var t= container.parent().find(thumbmask), + el = t.find(thumbsiw), + tdir = _o.direction, + els = tdir==="vertical" ? el.height() : el.width(), + ts = tdir==="vertical" ? t.height() : t.width(), + tw = tdir==="vertical" ? t.find(thumb).first().outerHeight(true)+_o.space : t.find(thumb).first().outerWidth(true)+_o.space, + newpos = (el.data('offset') === undefined ? 0 : parseInt(el.data('offset'),0)), + curpos = 0; + + switch (phase) { + case "start": + container.parent().find(thumbs).addClass("dragged"); + newpos = tdir === "vertical" ? el.position().top : el.position().left; + el.data('offset',newpos); + if (el.data('tmmove')) el.data('tmmove').pause(); + + break; + case "move": + if (els<=ts) return false; + + curpos = newpos + distance; + curpos = curpos>0 ? tdir==="horizontal" ? curpos - (el.width() * (curpos/el.width() * curpos/el.width())) : curpos - (el.height() * (curpos/el.height() * curpos/el.height())) : curpos; + var dif = tdir==="vertical" ? 0-(el.height()-t.height()) : 0-(el.width()-t.width()); + curpos = curpos < dif ? tdir==="horizontal" ? curpos + (el.width() * (curpos-dif)/el.width() * (curpos-dif)/el.width()) : curpos + (el.height() * (curpos-dif)/el.height() * (curpos-dif)/el.height()) : curpos; + if (tdir==="vertical") + punchgs.TweenLite.set(el,{top:curpos+"px"}); + else + punchgs.TweenLite.set(el,{left:curpos+"px"}); + + + break; + + case "end": + case "cancel": + + if (istt) { + curpos = newpos + distance; + + curpos = tdir==="vertical" ? curpos < 0-(el.height()-t.height()) ? 0-(el.height()-t.height()) : curpos : curpos < 0-(el.width()-t.width()) ? 0-(el.width()-t.width()) : curpos; + curpos = curpos > 0 ? 0 : curpos; + + curpos = Math.abs(distance)>tw/10 ? distance<=0 ? Math.floor(curpos/tw)*tw : Math.ceil(curpos/tw)*tw : distance<0 ? Math.ceil(curpos/tw)*tw : Math.floor(curpos/tw)*tw; + + curpos = tdir==="vertical" ? curpos < 0-(el.height()-t.height()) ? 0-(el.height()-t.height()) : curpos : curpos < 0-(el.width()-t.width()) ? 0-(el.width()-t.width()) : curpos; + curpos = curpos > 0 ? 0 : curpos; + + if (tdir==="vertical") + punchgs.TweenLite.to(el,0.5,{top:curpos+"px",ease:punchgs.Power3.easeOut}); + else + punchgs.TweenLite.to(el,0.5,{left:curpos+"px",ease:punchgs.Power3.easeOut}); + + curpos = !curpos ? tdir==="vertical" ? el.position().top : el.position().left : curpos; + + el.data('offset',curpos); + el.data('distance',distance); + + setTimeout(function() { + opt.dragStartedOverSlider = false; + opt.dragStartedOverThumbs = false; + opt.dragStartedOverTabs = false; + },100); + container.parent().find(thumbs).removeClass("dragged"); + + return false; + } + break; + } + } + else { + if (phase=="end" && !istt) { + + opt.sc_indicator="arrow"; + + if ((swipe_wait_dir=="horizontal" && direction == "left") || (swipe_wait_dir=="vertical" && direction == "up")) { + opt.sc_indicator_dir = 0; + _R.callingNewSlide(opt.c,1); + return false; + } + if ((swipe_wait_dir=="horizontal" && direction == "right") || (swipe_wait_dir=="vertical" && direction == "down")) { + opt.sc_indicator_dir = 1; + _R.callingNewSlide(opt.c,-1); + return false; + } + + } + opt.dragStartedOverSlider = false; + opt.dragStartedOverThumbs = false; + opt.dragStartedOverTabs = false; + return true; + } + } + }); +}; + + +// NAVIGATION HELPER FUNCTIONS +var hdResets = function(o) { + o.hide_delay = !jQuery.isNumeric(parseInt(o.hide_delay,0)) ? 0.2 : o.hide_delay/1000; + o.hide_delay_mobile = !jQuery.isNumeric(parseInt(o.hide_delay_mobile,0)) ? 0.2 : o.hide_delay_mobile/1000; +}; + +var ckNO = function(opt) { + return opt && opt.enable; +}; + +var ckNOLO = function(opt) { + return opt && opt.enable && opt.hide_onleave===true && (opt.position===undefined ? true : !opt.position.match(/outer/g)); +}; + +var callAllDelayedCalls = function(container,opt) { + var cp = container.parent(); + + if (ckNOLO(opt.navigation.arrows)) + punchgs.TweenLite.delayedCall(_ISM ? opt.navigation.arrows.hide_delay_mobile : opt.navigation.arrows.hide_delay,showHideNavElements,[cp.find('.tparrows'),opt.navigation.arrows,"hide"]); + + if (ckNOLO(opt.navigation.bullets)) + punchgs.TweenLite.delayedCall(_ISM ? opt.navigation.bullets.hide_delay_mobile : opt.navigation.bullets.hide_delay,showHideNavElements,[cp.find('.tp-bullets'),opt.navigation.bullets,"hide"]); + + if (ckNOLO(opt.navigation.thumbnails)) + punchgs.TweenLite.delayedCall(_ISM ? opt.navigation.thumbnails.hide_delay_mobile : opt.navigation.thumbnails.hide_delay,showHideNavElements,[cp.find('.tp-thumbs'),opt.navigation.thumbnails,"hide"]); + + if (ckNOLO(opt.navigation.tabs)) + punchgs.TweenLite.delayedCall(_ISM ? opt.navigation.tabs.hide_delay_mobile : opt.navigation.tabs.hide_delay,showHideNavElements,[cp.find('.tp-tabs'),opt.navigation.tabs,"hide"]); +}; + +var showHideNavElements = function(container,opt,dir,speed) { + speed = speed===undefined ? 0.5 : speed; + switch (dir) { + case "show": + punchgs.TweenLite.to(container,speed, {autoAlpha:1,ease:punchgs.Power3.easeInOut,overwrite:"auto"}); + break; + case "hide": + punchgs.TweenLite.to(container,speed, {autoAlpha:0,ease:punchgs.Power3.easeInOu,overwrite:"auto"}); + break; + } + +}; + + +// ADD ARROWS +var initArrows = function(container,o,opt) { + + // SET oIONAL CLASSES + o.style = o.style === undefined ? "" : o.style; + o.left.style = o.left.style === undefined ? "" : o.left.style; + o.right.style = o.right.style === undefined ? "" : o.right.style; + + + // ADD LEFT AND RIGHT ARROWS + if (container.find('.tp-leftarrow.tparrows').length===0) + container.append('
      '+o.tmp+'
      '); + if (container.find('.tp-rightarrow.tparrows').length===0) + container.append('
      '+o.tmp+'
      '); + var la = container.find('.tp-leftarrow.tparrows'), + ra = container.find('.tp-rightarrow.tparrows'); + if (o.rtl) { + // CLICK HANDLINGS ON LEFT AND RIGHT ARROWS + la.click(function() { opt.sc_indicator="arrow"; opt.sc_indicator_dir = 0;container.revnext();}); + ra.click(function() { opt.sc_indicator="arrow"; opt.sc_indicator_dir = 1;container.revprev();}); + } else { + // CLICK HANDLINGS ON LEFT AND RIGHT ARROWS + ra.click(function() { opt.sc_indicator="arrow"; opt.sc_indicator_dir = 0;container.revnext();}); + la.click(function() { opt.sc_indicator="arrow"; opt.sc_indicator_dir = 1;container.revprev();}); + } + // SHORTCUTS + o.right.j = container.find('.tp-rightarrow.tparrows'); + o.left.j = container.find('.tp-leftarrow.tparrows') + + // OUTTUER PADDING DEFAULTS + o.padding_top = parseInt((opt.carousel.padding_top||0),0), + o.padding_bottom = parseInt((opt.carousel.padding_bottom||0),0); + + // POSITION OF ARROWS + setNavElPositions(la,o.left,opt); + setNavElPositions(ra,o.right,opt); + + o.left.opt = opt; + o.right.opt = opt; + + + if (o.position=="outer-left" || o.position=="outer-right") opt.outernav = true; +}; + + +// PUT ELEMENTS VERTICAL / HORIZONTAL IN THE RIGHT POSITION +var putVinPosition = function(el,o,opt) { + + var elh = el.outerHeight(true), + elw = el.outerWidth(true), + oh = o.opt== undefined ? 0 : opt.conh == 0 ? opt.height : opt.conh, + by = o.container=="layergrid" ? opt.sliderLayout=="fullscreen" ? opt.height/2 - (opt.gridheight[opt.curWinRange]*opt.bh)/2 : (opt.autoHeight=="on" || (opt.minHeight!=undefined && opt.minHeight>0)) ? oh/2 - (opt.gridheight[opt.curWinRange]*opt.bh)/2 : 0 : 0, + a = o.v_align === "top" ? {top:"0px",y:Math.round(o.v_offset+by)+"px"} : o.v_align === "center" ? {top:"50%",y:Math.round(((0-elh/2)+o.v_offset))+"px"} : {top:"100%",y:Math.round((0-(elh+o.v_offset+by)))+"px"}; + if (!el.hasClass("outer-bottom")) punchgs.TweenLite.set(el,a); + +}; + +var putHinPosition = function(el,o,opt) { + + var elh = el.outerHeight(true), + elw = el.outerWidth(true), + bx = o.container=="layergrid" ? opt.sliderType==="carousel" ? 0 : opt.width/2 - (opt.gridwidth[opt.curWinRange]*opt.bw)/2 : 0, + a = o.h_align === "left" ? {left:"0px",x:Math.round(o.h_offset+bx)+"px"} : o.h_align === "center" ? {left:"50%",x:Math.round(((0-elw/2)+o.h_offset))+"px"} : {left:"100%",x:Math.round((0-(elw+o.h_offset+bx)))+"px"}; + punchgs.TweenLite.set(el,a); +}; + +// SET POSITION OF ELEMENTS +var setNavElPositions = function(el,o,opt) { + + var wrapper = + el.closest('.tp-simpleresponsive').length>0 ? + el.closest('.tp-simpleresponsive') : + el.closest('.tp-revslider-mainul').length>0 ? + el.closest('.tp-revslider-mainul') : + el.closest('.rev_slider_wrapper').length>0 ? + el.closest('.rev_slider_wrapper'): + el.parent().find('.tp-revslider-mainul'), + ww = wrapper.width(), + wh = wrapper.height(); + + putVinPosition(el,o,opt); + putHinPosition(el,o,opt); + + if (o.position==="outer-left" && (o.sliderLayout=="fullwidth" || o.sliderLayout=="fullscreen")) + punchgs.TweenLite.set(el,{left:(0-el.outerWidth())+"px",x:o.h_offset+"px"}); + else + if (o.position==="outer-right" && (o.sliderLayout=="fullwidth" || o.sliderLayout=="fullscreen")) + punchgs.TweenLite.set(el,{right:(0-el.outerWidth())+"px",x:o.h_offset+"px"}); + + + // MAX WIDTH AND HEIGHT BASED ON THE SOURROUNDING CONTAINER + if (el.hasClass("tp-thumbs") || el.hasClass("tp-tabs")) { + + var wpad = el.data('wr_padding'), + maxw = el.data('maxw'), + maxh = el.data('maxh'), + mask = el.hasClass("tp-thumbs") ? el.find('.tp-thumb-mask') : el.find('.tp-tab-mask'), + cpt = parseInt((o.padding_top||0),0), + cpb = parseInt((o.padding_bottom||0),0); + + + // ARE THE CONTAINERS BIGGER THAN THE SLIDER WIDTH OR HEIGHT ? + if (maxw>ww && o.position!=="outer-left" && o.position!=="outer-right") { + punchgs.TweenLite.set(el,{left:"0px",x:0,maxWidth:(ww-2*wpad)+"px"}); + punchgs.TweenLite.set(mask,{maxWidth:(ww-2*wpad)+"px"}); + } else { + punchgs.TweenLite.set(el,{maxWidth:(maxw)+"px"}); + punchgs.TweenLite.set(mask,{maxWidth:(maxw)+"px"}); + } + + if (maxh+2*wpad>wh && o.position!=="outer-bottom" && o.position!=="outer-top") { + punchgs.TweenLite.set(el,{top:"0px",y:0,maxHeight:(cpt+cpb+(wh-2*wpad))+"px"}); + punchgs.TweenLite.set(mask,{maxHeight:(cpt+cpb+(wh-2*wpad))+"px"}); + } else { + punchgs.TweenLite.set(el,{maxHeight:(maxh)+"px"}); + punchgs.TweenLite.set(mask,{maxHeight:maxh+"px"}); + } + + if (o.position!=="outer-left" && o.position!=="outer-right") { + cpt = 0; + cpb = 0; + } + + // SPAN IS ENABLED + if (o.span===true && o.direction==="vertical") { + punchgs.TweenLite.set(el,{maxHeight:(cpt+cpb+(wh-2*wpad))+"px",height:(cpt+cpb+(wh-2*wpad))+"px",top:(0-cpt),y:0}); + putVinPosition(mask,o,opt); + } else + + if (o.span===true && o.direction==="horizontal") { + punchgs.TweenLite.set(el,{maxWidth:"100%",width:(ww-2*wpad)+"px",left:0,x:0}); + putHinPosition(mask,o,opt); + } + } +}; + + +// ADD A BULLET +var addBullet = function(container,o,li,opt) { + + // Check if Bullet exists already ? + if (container.find('.tp-bullets').length===0) { + o.style = o.style === undefined ? "" : o.style; + container.append('
      '); + } + + // Add Bullet Structure to the Bullet Container + var bw = container.find('.tp-bullets'), + linkto = li.data('index'), + inst = o.tmp; + + jQuery.each(opt.thumbs[li.index()].params,function(i,obj) { inst = inst.replace(obj.from,obj.to);}) + + + bw.append('
      '+inst+'
      '); + + // SET BULLET SPACES AND POSITION + var b = container.find('.justaddedbullet'), + am = container.find('.tp-bullet').length, + w = b.outerWidth()+parseInt((o.space===undefined? 0:o.space),0), + h = b.outerHeight()+parseInt((o.space===undefined? 0:o.space),0); + + //bgimage = li.data('thumb') !==undefined ? li.data('thumb') : li.find('.defaultimg').data('lazyload') !==undefined && li.find('.defaultimg').data('lazyload') !== 'undefined' ? li.find('.defaultimg').data('lazyload') : li.find('.defaultimg').data('src'); + + if (o.direction==="vertical") { + + b.css({top:((am-1)*h)+"px", left:"0px"}); + bw.css({height:(((am-1)*h) + b.outerHeight()),width:b.outerWidth()}); + } + else { + + b.css({left:((am-1)*w)+"px", top:"0px"}); + bw.css({width:(((am-1)*w) + b.outerWidth()),height:b.outerHeight()}); + } + + b.find('.tp-bullet-image').css({backgroundImage:'url('+opt.thumbs[li.index()].src+')'}); + // SET LINK TO AND LISTEN TO CLICK + b.data('liref',linkto); + b.click(function() { + opt.sc_indicator="bullet"; + container.revcallslidewithid(linkto); + container.find('.tp-bullet').removeClass("selected"); + jQuery(this).addClass("selected"); + + }); + // REMOVE HELP CLASS + b.removeClass("justaddedbullet"); + + // OUTTUER PADDING DEFAULTS + o.padding_top = parseInt((opt.carousel.padding_top||0),0), + o.padding_bottom = parseInt((opt.carousel.padding_bottom||0),0); + o.opt = opt; + if (o.position=="outer-left" || o.position=="outer-right") opt.outernav = true; + + bw.addClass("nav-pos-hor-"+o.h_align); + bw.addClass("nav-pos-ver-"+o.v_align); + bw.addClass("nav-dir-"+o.direction); + + // PUT ALL CONTAINER IN POSITION + setNavElPositions(bw,o,opt); +}; + + +var cHex = function(hex,o){ + o = parseFloat(o); + hex = hex.replace('#',''); + var r = parseInt(hex.substring(0,2), 16), + g = parseInt(hex.substring(2,4), 16), + b = parseInt(hex.substring(4,6), 16), + result = 'rgba('+r+','+g+','+b+','+o+')'; + return result; +}; + +// ADD THUMBNAILS +var addThumb = function(container,o,li,what,opt) { + var thumbs = what==="tp-thumb" ? ".tp-thumbs" : ".tp-tabs", + thumbmask = what==="tp-thumb" ? ".tp-thumb-mask" : ".tp-tab-mask", + thumbsiw = what==="tp-thumb" ? ".tp-thumbs-inner-wrapper" : ".tp-tabs-inner-wrapper", + thumb = what==="tp-thumb" ? ".tp-thumb" : ".tp-tab", + timg = what ==="tp-thumb" ? ".tp-thumb-image" : ".tp-tab-image"; + + o.visibleAmount = o.visibleAmount>opt.slideamount ? opt.slideamount : o.visibleAmount; + o.sliderLayout = opt.sliderLayout; + + // Check if THUNBS/TABS exists already ? + if (container.parent().find(thumbs).length===0) { + o.style = o.style === undefined ? "" : o.style; + + var spanw = o.span===true ? "tp-span-wrapper" : "", + addcontent = '
      '; + + if (o.position==="outer-top") + container.parent().prepend(addcontent) + else + if (o.position==="outer-bottom") + container.after(addcontent); + else + container.append(addcontent); + + // OUTTUER PADDING DEFAULTS + o.padding_top = parseInt((opt.carousel.padding_top||0),0), + o.padding_bottom = parseInt((opt.carousel.padding_bottom||0),0); + + if (o.position=="outer-left" || o.position=="outer-right") opt.outernav = true; + } + + + + // Add Thumb/TAB Structure to the THUMB/TAB Container + var linkto = li.data('index'), + t = container.parent().find(thumbs), + tm = t.find(thumbmask), + tw = tm.find(thumbsiw), + maxw = o.direction==="horizontal" ? (o.width * o.visibleAmount) + (o.space*(o.visibleAmount-1)) : o.width, + maxh = o.direction==="horizontal" ? o.height : (o.height * o.visibleAmount) + (o.space*(o.visibleAmount-1)), + inst = o.tmp; + jQuery.each(opt.thumbs[li.index()].params,function(i,obj) { + inst = inst.replace(obj.from,obj.to); + }) + + + tw.append('
      '+inst+'
      '); + + + // SET BULLET SPACES AND POSITION + var b = t.find('.justaddedthumb'), + am = t.find(thumb).length, + w = b.outerWidth()+parseInt((o.space===undefined? 0:o.space),0), + h = b.outerHeight()+parseInt((o.space===undefined? 0:o.space),0); + + // FILL CONTENT INTO THE TAB / THUMBNAIL + b.find(timg).css({backgroundImage:"url("+opt.thumbs[li.index()].src+")"}); + + + if (o.direction==="vertical") { + b.css({top:((am-1)*h)+"px", left:"0px"}); + tw.css({height:(((am-1)*h) + b.outerHeight()),width:b.outerWidth()}); + } + else { + b.css({left:((am-1)*w)+"px", top:"0px"}); + tw.css({width:(((am-1)*w) + b.outerWidth()),height:b.outerHeight()}); + } + + t.data('maxw',maxw); + t.data('maxh',maxh); + t.data('wr_padding',o.wrapper_padding); + var position = o.position === "outer-top" || o.position==="outer-bottom" ? "relative" : "absolute", + _margin = (o.position === "outer-top" || o.position==="outer-bottom") && (o.h_align==="center") ? "auto" : "0"; + + + tm.css({maxWidth:maxw+"px",maxHeight:maxh+"px",overflow:"hidden",position:"relative"}); + t.css({maxWidth:(maxw)+"px",/*margin:_margin, */maxHeight:maxh+"px",overflow:"visible",position:position,background:o.wrapper_color,padding:o.wrapper_padding+"px",boxSizing:"contet-box"}); + + + + // SET LINK TO AND LISTEN TO CLICK + b.click(function() { + + opt.sc_indicator="bullet"; + var dis = container.parent().find(thumbsiw).data('distance'); + dis = dis === undefined ? 0 : dis; + if (Math.abs(dis)<10) { + container.revcallslidewithid(linkto); + container.parent().find(thumbs).removeClass("selected"); + jQuery(this).addClass("selected"); + } + }); + // REMOVE HELP CLASS + b.removeClass("justaddedthumb"); + + o.opt = opt; + + t.addClass("nav-pos-hor-"+o.h_align); + t.addClass("nav-pos-ver-"+o.v_align); + t.addClass("nav-dir-"+o.direction); + + // PUT ALL CONTAINER IN POSITION + setNavElPositions(t,o,opt); +}; + +var setONHeights = function(o) { + var ot = o.c.parent().find('.outer-top'), + ob = o.c.parent().find('.outer-bottom'); + o.top_outer = !ot.hasClass("tp-forcenotvisible") ? ot.outerHeight() || 0 : 0; + o.bottom_outer = !ob.hasClass("tp-forcenotvisible") ? ob.outerHeight() || 0 : 0; +}; + + +// HIDE NAVIGATION ON PURPOSE +var biggerNav = function(el,a,b,c) { + if (a>b || b>c) + el.addClass("tp-forcenotvisible") + else + el.removeClass("tp-forcenotvisible"); +}; + +})(jQuery); \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.parallax.js b/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.parallax.js new file mode 100644 index 0000000..46ff08c --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.parallax.js @@ -0,0 +1,465 @@ +/******************************************** + * REVOLUTION 5.4.6.5 EXTENSION - PARALLAX + * @version: 2.2.3 (17.05.2017) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ +(function($) { +"use strict"; +var _R = jQuery.fn.revolution, + _ISM = _R.is_mobile(), + extension = { alias:"Parallax Min JS", + name:"revolution.extensions.parallax.min.js", + min_core: "5.4.5", + version:"2.2.3" + }; + +jQuery.extend(true,_R, { + + checkForParallax : function(container,opt) { + if (_R.compare_version(extension).check==="stop") return false; + var _ = opt.parallax; + + if (_.done) return; + _.done = true; + + if (_ISM && _.disable_onmobile=="on") return false; + + + if (_.type=="3D" || _.type=="3d") { + punchgs.TweenLite.set(opt.c,{overflow:_.ddd_overflow}); + punchgs.TweenLite.set(opt.ul,{overflow:_.ddd_overflow}); + if (opt.sliderType!="carousel" && _.ddd_shadow=="on") { + opt.c.prepend('
      ') + punchgs.TweenLite.set(opt.c.find('.dddwrappershadow'),{force3D:"auto",transformPerspective:1600,transformOrigin:"50% 50%", width:"100%",height:"100%",position:"absolute",top:0,left:0,zIndex:0}); + } + } + + function setDDDInContainer(li) { + if (_.type=="3D" || _.type=="3d") { + li.find('.slotholder').wrapAll('
      '); + li.find('.tp-parallax-wrap').wrapAll('
      '); + + // MOVE THE REMOVED 3D LAYERS OUT OF THE PARALLAX GROUP + li.find('.rs-parallaxlevel-tobggroup').closest('.tp-parallax-wrap').wrapAll('
      '); + + var dddw = li.find('.dddwrapper'), + dddwl = li.find('.dddwrapper-layer'), + dddwlbg = li.find('.dddwrapper-layertobggroup'); + + dddwlbg.appendTo(dddw); + + if (opt.sliderType=="carousel") { + if (_.ddd_shadow=="on") dddw.addClass("dddwrappershadow"); + punchgs.TweenLite.set(dddw,{borderRadius:opt.carousel.border_radius}); + } + punchgs.TweenLite.set(li,{overflow:"visible",transformStyle:"preserve-3d",perspective:1600}); + punchgs.TweenLite.set(dddw,{force3D:"auto",transformOrigin:"50% 50%"}); + punchgs.TweenLite.set(dddwl,{force3D:"auto",transformOrigin:"50% 50%",zIndex:5}); + punchgs.TweenLite.set(opt.ul,{transformStyle:"preserve-3d",transformPerspective:1600}); + } + } + + opt.li.each(function() { + setDDDInContainer(jQuery(this)); + }); + + if ((_.type=="3D" || _.type=="3d") && opt.c.find('.tp-static-layers').length>0) { + punchgs.TweenLite.set(opt.c.find('.tp-static-layers'),{top:0, left:0,width:"100%",height:"100%"}); + setDDDInContainer(opt.c.find('.tp-static-layers')); + } + _.pcontainers = new Array(); + _.pcontainer_depths = new Array(); + _.bgcontainers = new Array(); + _.bgcontainer_depths = new Array(); + + opt.c.find('.tp-revslider-slidesli .slotholder, .tp-revslider-slidesli .rs-background-video-layer').each(function() { + var t = jQuery(this), + l = t.data('bgparallax') || opt.parallax.bgparallax; + l = l == "on" ? 1 : l; + if (l!==undefined && l!=="off") { + _.bgcontainers.push(t); + _.bgcontainer_depths.push(opt.parallax.levels[parseInt(l,0)-1]/100); + } + }) + + + + for (var i = 1; i<=_.levels.length;i++) + opt.c.find('.rs-parallaxlevel-'+i).each(function() { + var pw = jQuery(this), + tpw = pw.closest('.tp-parallax-wrap'); + + tpw.data('parallaxlevel',_.levels[i-1]) + tpw.addClass("tp-parallax-container"); + _.pcontainers.push(tpw); + _.pcontainer_depths.push(_.levels[i-1]); + }); + + + if (_.type=="mouse" || _.type=="scroll+mouse" || _.type=="mouse+scroll" || _.type=="3D" || _.type=="3d") { + + container.mouseenter(function(event) { + var currslide = container.find('.active-revslide'), + t = container.offset().top, + l = container.offset().left, + ex = (event.pageX-l), + ey = (event.pageY-t); + currslide.data("enterx",ex); + currslide.data("entery",ey); + }); + + container.on('mousemove.hoverdir, mouseleave.hoverdir, trigger3dpath',function(event,data) { + var currslide = data && data.li ? data.li : container.find('.active-revslide'); + + + // CALCULATE DISTANCES + if (_.origo=="enterpoint") { + var t = container.offset().top, + l = container.offset().left; + + if (currslide.data("enterx")==undefined) currslide.data("enterx",(event.pageX-l)); + if (currslide.data("entery")==undefined) currslide.data("entery",(event.pageY-t)); + + var mh = currslide.data("enterx") || (event.pageX-l), + mv = currslide.data("entery") || (event.pageY-t), + diffh = (mh - (event.pageX - l)), + diffv = (mv - (event.pageY - t)), + s = _.speed/1000 || 0.4; + } else { + var t = container.offset().top, + l = container.offset().left, + diffh = (opt.conw/2 - (event.pageX-l)), + diffv = (opt.conh/2 - (event.pageY-t)), + s = _.speed/1000 || 3; + } + + + if (event.type=="mouseleave") { + diffh = _.ddd_lasth || 0; + diffv = _.ddd_lastv || 0; + s = 1.5; + } + + + for (var i=0;i<_.pcontainers.length;i++) { + var pc = _.pcontainers[i], + bl = _.pcontainer_depths[i], + pl = _.type=="3D" || _.type=="3d" ? bl/200 : bl/100, + offsh = diffh * pl, + offsv = diffv * pl; + if (_.type=="scroll+mouse" || _.type=="mouse+scroll" ) + punchgs.TweenLite.to(pc,s,{force3D:"auto",x:offsh,ease:punchgs.Power3.easeOut,overwrite:"all"}); + else + punchgs.TweenLite.to(pc,s,{force3D:"auto",x:offsh,y:offsv,ease:punchgs.Power3.easeOut,overwrite:"all"}); + }; + + if (_.type=="3D" || _.type=="3d") { + var sctor = '.tp-revslider-slidesli .dddwrapper, .dddwrappershadow, .tp-revslider-slidesli .dddwrapper-layer, .tp-static-layers .dddwrapper-layer'; + if (opt.sliderType==="carousel") sctor = ".tp-revslider-slidesli .dddwrapper, .tp-revslider-slidesli .dddwrapper-layer, .tp-static-layers .dddwrapper-layer"; + opt.c.find(sctor).each(function() { + var t = jQuery(this), + pl = _.levels[_.levels.length-1]/200, + offsh = diffh * pl, + offsv = diffv * pl, + offrv = opt.conw == 0 ? 0 : Math.round((diffh / opt.conw * pl)*100) || 0, + offrh = opt.conh == 0 ? 0 : Math.round((diffv / opt.conh * pl)*100) || 0, + li = t.closest('li'), + zz = 0, + itslayer = false; + + if (t.hasClass("dddwrapper-layer")) { + zz = _.ddd_z_correction || 65; + itslayer = true; + } + + if (t.hasClass("dddwrapper-layer")) { + offsh=0; + offsv=0; + } + + if (li.hasClass("active-revslide") || opt.sliderType!="carousel") + if (_.ddd_bgfreeze!="on" || (itslayer)) + punchgs.TweenLite.to(t,s,{rotationX:offrh, rotationY:-offrv, x:offsh, z:zz,y:offsv,ease:punchgs.Power3.easeOut,overwrite:"all"}); + else + punchgs.TweenLite.to(t,0.5,{force3D:"auto",rotationY:0, rotationX:0, z:0,ease:punchgs.Power3.easeOut,overwrite:"all"}); + else + punchgs.TweenLite.to(t,0.5,{force3D:"auto",rotationY:0,x:0,y:0, rotationX:0, z:0,ease:punchgs.Power3.easeOut,overwrite:"all"}); + + if (event.type=="mouseleave") + punchgs.TweenLite.to(jQuery(this),3.8,{z:0, ease:punchgs.Power3.easeOut}); + }); + } + }); + + if (_ISM) + window.ondeviceorientation = function(event) { + var y = Math.round(event.beta || 0)-70, + x = Math.round(event.gamma || 0); + + var currslide = container.find('.active-revslide'); + + if (jQuery(window).width() > jQuery(window).height()){ + var xx = x; + x = y; + y = xx; + } + + var cw = container.width(), + ch = container.height(), + diffh = (360/cw * x), + diffv = (180/ch * y), + s = _.speed/1000 || 3, + pcnts = []; + + currslide.find(".tp-parallax-container").each(function(i){ + pcnts.push(jQuery(this)); + }); + container.find('.tp-static-layers .tp-parallax-container').each(function(){ + pcnts.push(jQuery(this)); + }); + + jQuery.each(pcnts, function() { + var pc = jQuery(this), + bl = parseInt(pc.data('parallaxlevel'),0), + pl = bl/100, + offsh = diffh * pl*2, + offsv = diffv * pl*4; + punchgs.TweenLite.to(pc,s,{force3D:"auto",x:offsh,y:offsv,ease:punchgs.Power3.easeOut,overwrite:"all"}); + }); + + if (_.type=="3D" || _.type=="3d") { + var sctor = '.tp-revslider-slidesli .dddwrapper, .dddwrappershadow, .tp-revslider-slidesli .dddwrapper-layer, .tp-static-layers .dddwrapper-layer'; + if (opt.sliderType==="carousel") sctor = ".tp-revslider-slidesli .dddwrapper, .tp-revslider-slidesli .dddwrapper-layer, .tp-static-layers .dddwrapper-layer"; + opt.c.find(sctor).each(function() { + var t = jQuery(this), + pl = _.levels[_.levels.length-1]/200, + offsh = diffh * pl, + offsv = diffv * pl*3, + offrv = opt.conw == 0 ? 0 : Math.round((diffh / opt.conw * pl)*500) || 0, + offrh = opt.conh == 0 ? 0 : Math.round((diffv / opt.conh * pl)*700) || 0, + li = t.closest('li'), + zz = 0, + itslayer = false; + + if (t.hasClass("dddwrapper-layer")) { + zz = _.ddd_z_correction || 65; + itslayer = true; + } + + if (t.hasClass("dddwrapper-layer")) { + offsh=0; + offsv=0; + } + + if (li.hasClass("active-revslide") || opt.sliderType!="carousel") + if (_.ddd_bgfreeze!="on" || (itslayer)) + punchgs.TweenLite.to(t,s,{rotationX:offrh, rotationY:-offrv, x:offsh, z:zz,y:offsv,ease:punchgs.Power3.easeOut,overwrite:"all"}); + else + punchgs.TweenLite.to(t,0.5,{force3D:"auto",rotationY:0, rotationX:0, z:0,ease:punchgs.Power3.easeOut,overwrite:"all"}); + else + punchgs.TweenLite.to(t,0.5,{force3D:"auto",rotationY:0,z:0,x:0,y:0, rotationX:0, ease:punchgs.Power3.easeOut,overwrite:"all"}); + + if (event.type=="mouseleave") + punchgs.TweenLite.to(jQuery(this),3.8,{z:0, ease:punchgs.Power3.easeOut}); + }); + } + } + } + + // COLLECT ALL ELEMENTS WHICH NEED FADE IN/OUT ON PARALLAX SCROLL + var _s = opt.scrolleffect; + _s.bgs = new Array(); + + if (_s.on) { + if (_s.on_slidebg==="on") + for (var i=0;iopt.lastwindowheight ? b.top / b.height : b.bottom>opt.lastwindowheight ? (b.bottom-opt.lastwindowheight) / b.height : 0; + opt.scrollproc = proc; + + if (_R.callBackHandling) + _R.callBackHandling(opt,"parallax","start"); + + if (_v.enable) { + var area = 1-Math.abs(proc); + area = area<0 ? 0 : area; + // To Make sure it is not any more in % + if (!jQuery.isNumeric(_v.visible_area)) + if (_v.visible_area.indexOf('%')!==-1) + _v.visible_area = parseInt(_v.visible_area)/100; + + if (1-_v.visible_area<=area) { + if (!opt.inviewport) { + opt.inviewport = true; + _R.enterInViewPort(opt); + } + } else { + if (opt.inviewport) { + opt.inviewport = false; + _R.leaveViewPort(opt); + } + } + } + + // SCROLL BASED PARALLAX EFFECT + if (_ISM && _.disable_onmobile=="on") return false; + + if (_.type!="3d" && _.type!="3D") { + if (_.type=="scroll" || _.type=="scroll+mouse" || _.type=="mouse+scroll") + if (_.pcontainers) + for (var i=0;i<_.pcontainers.length;i++) { + if (_.pcontainers[i].length>0) { + var pc = _.pcontainers[i], + pl = _.pcontainer_depths[i]/100, + offsv = Math.round((proc * -(pl*opt.conh)*10))/10 || 0, + s = speedoverwrite!==undefined ? speedoverwrite : _.speedls/1000 || 0; + pc.data('parallaxoffset',offsv); + punchgs.TweenLite.to(pc,s,{overwrite:"auto",force3D:"auto",y:offsv}) + } + } + if (_.bgcontainers) + for (var i=0;i<_.bgcontainers.length;i++) { + var t = _.bgcontainers[i], + l = _.bgcontainer_depths[i], + offsv = proc * -(l*opt.conh) || 0, + s = speedoverwrite!==undefined ? speedoverwrite : _.speedbg/1000 || 0; + + punchgs.TweenLite.to(t,s,{position:"absolute",top:"0px",left:"0px",backfaceVisibility:"hidden",force3D:"true",y:offsv+"px"}); + } + } + + // SCROLL BASED BLUR,FADE,GRAYSCALE EFFECT + var _s = opt.scrolleffect; + if (_s.on && (_s.disable_on_mobile!=="on" || !_ISM)) { + + var _fproc = Math.abs(proc)-(_s.tilt/100); + _fproc = _fproc<0 ? 0 : _fproc; + if (_s.layers!==false) { + var fadelevel = 1 - (_fproc *_s.multiplicator_layers), + seo = { backfaceVisibility:"hidden",force3D:"true",z:0.001,perspective:600}; + if (_s.direction=="top" && proc>=0) fadelevel=1; + if (_s.direction=="bottom" && proc<=0) fadelevel=1; + fadelevel = fadelevel>1 ? 1 : fadelevel < 0 ? 0 : fadelevel; + + + if (_s.fade==="on") + seo.opacity = fadelevel; + + if (_s.scale==="on") { + var scalelevel = (fadelevel); + seo.scale = 1+(1-scalelevel); + + } + + if (_s.blur==="on") { + var blurlevel = (1-fadelevel) * _s.maxblur; + seo['-webkit-filter'] = 'blur('+blurlevel+'px)'; + seo['filter'] = 'blur('+blurlevel+'px)'; + } + + + if (_s.grayscale==="on") { + var graylevel = (1-fadelevel) * 100, + gf = 'grayscale('+graylevel+'%)'; + seo['-webkit-filter'] = seo['-webkit-filter']===undefined ? gf : seo['-webkit-filter']+' '+gf; + seo['filter'] = seo['filter']===undefined ? gf: seo['filter']+' '+gf; + } + punchgs.TweenLite.set(_s.layers,seo); + } + + if (_s.bgs!==false) { + var fadelevel = 1 - (_fproc *_s.multiplicator), + seo = { backfaceVisibility:"hidden",force3D:"true"}; + if (_s.direction=="top" && proc>=0) fadelevel=1; + if (_s.direction=="bottom" && proc<=0) fadelevel=1; + fadelevel = fadelevel>1 ? 1 : fadelevel < 0 ? 0 : fadelevel; + + if (_s.fade==="on") + seo.opacity = fadelevel; + + if (_s.scale==="on") { + var scalelevel = fadelevel; + //seo.scale = scalelevel; + punchgs.TweenLite.set(jQuery('.tp-kbimg-wrap'),{transformOrigin:"50% 50%",scale:scalelevel,force3D:true}) + } + + if (_s.blur==="on") { + var blurlevel = (1-fadelevel) * _s.maxblur; + seo['-webkit-filter'] = 'blur('+blurlevel+'px)'; + seo['filter'] = 'blur('+blurlevel+'px)'; + } + + + if (_s.grayscale==="on") { + var graylevel = (1-fadelevel) * 100, + gf = 'grayscale('+graylevel+'%)'; + seo['-webkit-filter'] = seo['-webkit-filter']===undefined ? gf : seo['-webkit-filter']+' '+gf; + seo['filter'] = seo['filter']===undefined ? gf: seo['filter']+' '+gf; + } + + punchgs.TweenLite.set(_s.bgs,seo); + } + } + + if (_R.callBackHandling) + _R.callBackHandling(opt,"parallax","end"); + + } + +}); + +function saveLastScroll(opt,st) { opt.lastscrolltop = st;} + + +//// END OF PARALLAX EFFECT +})(jQuery); \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.slideanims.js b/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.slideanims.js new file mode 100644 index 0000000..9e98842 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.slideanims.js @@ -0,0 +1,1447 @@ +/************************************************ + * REVOLUTION 5.4.6.5 EXTENSION - SLIDE ANIMATIONS + * @version: 1.8 (17.05.2017) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +************************************************/ +(function($) { +"use strict"; +var _R = jQuery.fn.revolution, + extension = { alias:"SlideAnimations Min JS", + name:"revolution.extensions.slideanims.min.js", + min_core: "5.4.5", + version:"1.8" + }; + + /////////////////////////////////////////// + // EXTENDED FUNCTIONS AVAILABLE GLOBAL // + /////////////////////////////////////////// + jQuery.extend(true,_R, { + + animateSlide : function(nexttrans, comingtransition, container, nextli, actli, nextsh, actsh, mtl) { + if (_R.compare_version(extension).check==="stop") return mtl; + return animateSlideIntern(nexttrans, comingtransition, container, nextli, actli, nextsh, actsh, mtl) + } + + }); + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// SLIDE TRANSITION MODULES //////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +////////////////////////////////////////////////////// +// +// * Revolution Slider - TRANSITION PREDEFINITION MODULES +// * @version: 5.0.0 (13.02.2015) +// * @author ThemePunch +// +////////////////////////////////////////////////////// + + + /////////////////////// + // PREPARE THE SLIDE // + ////////////////////// + var prepareOneSlide = function(slotholder,opt,visible,vorh) { + + var sh=slotholder, + img = sh.find('.defaultimg'), + mediafilter = img.data('mediafilter'), + scalestart = sh.data('zoomstart'), + rotatestart = sh.data('rotationstart'); + + if (img.data('currotate')!=undefined) + rotatestart = img.data('currotate'); + if (img.data('curscale')!=undefined && vorh=="box") + scalestart = img.data('curscale')*100; + else + if (img.data('curscale')!=undefined) + scalestart = img.data('curscale'); + + _R.slotSize(img,opt); + + + var src = img.attr('src'), + bgcolor=img.data('bgcolor'), + w = opt.width, + h = opt.height, + fulloff = img.data("fxof"), + fullyoff=0; + + + if (bgcolor===undefined) bgcolor = img.css("backgroundColor"); + + + if (opt.autoHeight=="on") h = opt.c.height(); + if (fulloff==undefined) fulloff=0; + + var off=0, + bgfit = img.data('bgfit'), + bgrepeat = img.data('bgrepeat'), + bgposition = img.data('bgposition'); + + if (bgfit==undefined) bgfit="cover"; + if (bgrepeat==undefined) bgrepeat="no-repeat"; + if (bgposition==undefined) bgposition="center center"; + + var bgstyle =''; + + if (bgcolor!==undefined && bgcolor.indexOf('gradient')>=0) { + bgstyle = 'background:'+bgcolor; + } else { + bgstyle = 'background-color:'+bgcolor+';'+'background-image:url('+src+');'+'background-repeat:'+bgrepeat+';'+'background-size:'+bgfit+';background-position:'+bgposition; + } + + + + switch (vorh) { + // BOX ANIMATION PREPARING + case "box": + // SET THE MINIMAL SIZE OF A BOX + //var basicsize = 0, + var x = 0, + y = 0; + + /*if (opt.sloth>opt.slotw) + basicsize=opt.sloth + else + basicsize=opt.slotw; + + opt.slotw = basicsize; + opt.sloth = basicsize;*/ + + + for (var j=0;j'+ + + '
      '+ + + '
      '+ + '
      '); + y=y+opt.sloth; + if (scalestart!=undefined && rotatestart!=undefined) + punchgs.TweenLite.set(sh.find('.slot').last(),{rotationZ:rotatestart}); + } + x=x+opt.slotw; + } + break; + + // SLOT ANIMATION PREPARING + case "vertical": + case "horizontal": + + if (vorh == "horizontal") { + + if (!visible) var off=0-opt.slotw; + for (var i=0;i'+ + '
      '+ + '
      '+ + '
      '); + if (scalestart!=undefined && rotatestart!=undefined) + punchgs.TweenLite.set(sh.find('.slot').last(),{rotationZ:rotatestart}); + + } + } else { + if (!visible) var off=0-opt.sloth; + for (var i=0;i'+ + + '
      '+ + '
      '+ + + '
      '); + if (scalestart!=undefined && rotatestart!=undefined) + punchgs.TweenLite.set(sh.find('.slot').last(),{rotationZ:rotatestart}); + + } + } + break; + } + } + + + +var getSliderTransitionParameters = function(container,comingtransition,nextsh,slidedirection) { + + + /* Transition Name , + Transition Code, + Transition Sub Code, + Max Slots, + MasterSpeed Delays, + Preparing Slots (box,slideh, slidev), + Call on nextsh (null = no, true/false for visibility first preparing), + Call on actsh (null = no, true/false for visibility first preparing), + Index of Animation + easeIn, + easeOut, + speed, + slots, + */ + + + var opt=container[0].opt, + p1i = punchgs.Power1.easeIn, + p1o = punchgs.Power1.easeOut, + p1io = punchgs.Power1.easeInOut, + p2i = punchgs.Power2.easeIn, + p2o = punchgs.Power2.easeOut, + p2io = punchgs.Power2.easeInOut, + p3i = punchgs.Power3.easeIn, + p3o = punchgs.Power3.easeOut, + p3io = punchgs.Power3.easeInOut, + flatTransitions = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45], + premiumTransitions = [16,17,18,19,20,21,22,23,24,25,27], + nexttrans =0, + specials = 1, + STAindex = 0, + indexcounter =0, + STA = new Array, + transitionsArray = [ ['boxslide' , 0, 1, 10, 0,'box',false,null,0,p1o,p1o,500,6], + ['boxfade', 1, 0, 10, 0,'box',false,null,1,p1io,p1io,700,5], + ['slotslide-horizontal', 2, 0, 0, 200,'horizontal',true,false,2,p2io,p2io,700,3], + ['slotslide-vertical', 3, 0,0,200,'vertical',true,false,3,p2io,p2io,700,3], + ['curtain-1', 4, 3,0,0,'horizontal',true,true,4,p1o,p1o,300,5], + ['curtain-2', 5, 3,0,0,'horizontal',true,true,5,p1o,p1o,300,5], + ['curtain-3', 6, 3,25,0,'horizontal',true,true,6,p1o,p1o,300,5], + ['slotzoom-horizontal', 7, 0,0,400,'horizontal',true,true,7,p1o,p1o,300,7], + ['slotzoom-vertical', 8, 0,0,0,'vertical',true,true,8,p2o,p2o,500,8], + ['slotfade-horizontal', 9, 0,0,1000,'horizontal',true,null,9,p2o,p2o,2000,10], + ['slotfade-vertical', 10, 0,0 ,1000,'vertical',true,null,10,p2o,p2o,2000,10], + ['fade', 11, 0, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1], + ['crossfade', 11, 1, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1], + ['fadethroughdark', 11, 2, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1], + ['fadethroughlight', 11, 3, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1], + ['fadethroughtransparent', 11, 4, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1], + ['slideleft', 12, 0,1,0,'horizontal',true,true,12,p3io,p3io,1000,1], + ['slideup', 13, 0,1,0,'horizontal',true,true,13,p3io,p3io,1000,1], + ['slidedown', 14, 0,1,0,'horizontal',true,true,14,p3io,p3io,1000,1], + ['slideright', 15, 0,1,0,'horizontal',true,true,15,p3io,p3io,1000,1], + ['slideoverleft', 12, 7,1,0,'horizontal',true,true,12,p3io,p3io,1000,1], + ['slideoverup', 13, 7,1,0,'horizontal',true,true,13,p3io,p3io,1000,1], + ['slideoverdown', 14, 7,1,0,'horizontal',true,true,14,p3io,p3io,1000,1], + ['slideoverright', 15, 7,1,0,'horizontal',true,true,15,p3io,p3io,1000,1], + ['slideremoveleft', 12, 8,1,0,'horizontal',true,true,12,p3io,p3io,1000,1], + ['slideremoveup', 13, 8,1,0,'horizontal',true,true,13,p3io,p3io,1000,1], + ['slideremovedown', 14, 8,1,0,'horizontal',true,true,14,p3io,p3io,1000,1], + ['slideremoveright', 15, 8,1,0,'horizontal',true,true,15,p3io,p3io,1000,1], + ['papercut', 16, 0,0,600,'',null,null,16,p3io,p3io,1000,2], + ['3dcurtain-horizontal', 17, 0,20,100,'vertical',false,true,17,p1io,p1io,500,7], + ['3dcurtain-vertical', 18, 0,10,100,'horizontal',false,true,18,p1io,p1io,500,5], + ['cubic', 19, 0,20,600,'horizontal',false,true,19,p3io,p3io,500,1], + ['cube',19,0,20,600,'horizontal',false,true,20,p3io,p3io,500,1], + ['flyin', 20, 0,4,600,'vertical',false,true,21,p3o,p3io,500,1], + ['turnoff', 21, 0,1,500,'horizontal',false,true,22,p3io,p3io,500,1], + ['incube', 22, 0,20,200,'horizontal',false,true,23,p2io,p2io,500,1], + ['cubic-horizontal', 23, 0,20,500,'vertical',false,true,24,p2o,p2o,500,1], + ['cube-horizontal', 23, 0,20,500,'vertical',false,true,25,p2o,p2o,500,1], + ['incube-horizontal', 24, 0,20,500,'vertical',false,true,26,p2io,p2io,500,1], + ['turnoff-vertical', 25, 0,1,200,'horizontal',false,true,27,p2io,p2io,500,1], + ['fadefromright', 12, 1,1,0,'horizontal',true,true,28,p2io,p2io,1000,1], + ['fadefromleft', 15, 1,1,0,'horizontal',true,true,29,p2io,p2io,1000,1], + ['fadefromtop', 14, 1,1,0,'horizontal',true,true,30,p2io,p2io,1000,1], + ['fadefrombottom', 13, 1,1,0,'horizontal',true,true,31,p2io,p2io,1000,1], + ['fadetoleftfadefromright', 12, 2,1,0,'horizontal',true,true,32,p2io,p2io,1000,1], + ['fadetorightfadefromleft', 15, 2,1,0,'horizontal',true,true,33,p2io,p2io,1000,1], + ['fadetobottomfadefromtop', 14, 2,1,0,'horizontal',true,true,34,p2io,p2io,1000,1], + ['fadetotopfadefrombottom', 13, 2,1,0,'horizontal',true,true,35,p2io,p2io,1000,1], + ['parallaxtoright', 15, 3,1,0,'horizontal',true,true,36,p2io,p2i,1500,1], + ['parallaxtoleft', 12, 3,1,0,'horizontal',true,true,37,p2io,p2i,1500,1], + ['parallaxtotop', 14, 3,1,0,'horizontal',true,true,38,p2io,p1i,1500,1], + ['parallaxtobottom', 13, 3,1,0,'horizontal',true,true,39,p2io,p1i,1500,1], + ['scaledownfromright', 12, 4,1,0,'horizontal',true,true,40,p2io,p2i,1000,1], + ['scaledownfromleft', 15, 4,1,0,'horizontal',true,true,41,p2io,p2i,1000,1], + ['scaledownfromtop', 14, 4,1,0,'horizontal',true,true,42,p2io,p2i,1000,1], + ['scaledownfrombottom', 13, 4,1,0,'horizontal',true,true,43,p2io,p2i,1000,1], + ['zoomout', 13, 5,1,0,'horizontal',true,true,44,p2io,p2i,1000,1], + ['zoomin', 13, 6,1,0,'horizontal',true,true,45,p2io,p2i,1000,1], + ['slidingoverlayup', 27, 0,1,0,'horizontal',true,true,47,p1io,p1o,2000,1], + ['slidingoverlaydown', 28, 0,1,0,'horizontal',true,true,48,p1io,p1o,2000,1], + ['slidingoverlayright', 30, 0,1,0,'horizontal',true,true,49,p1io,p1o,2000,1], + ['slidingoverlayleft', 29, 0,1,0,'horizontal',true,true,50,p1io,p1o,2000,1], + ['parallaxcirclesup', 31, 0,1,0,'horizontal',true,true,51,p2io,p1i,1500,1], + ['parallaxcirclesdown', 32, 0,1,0,'horizontal',true,true,52,p2io,p1i,1500,1], + ['parallaxcirclesright', 33, 0,1,0,'horizontal',true,true,53,p2io,p1i,1500,1], + ['parallaxcirclesleft', 34, 0,1,0,'horizontal',true,true,54,p2io,p1i,1500,1], + ['notransition',26,0,1,0,'horizontal',true,null,46,p2io,p2i,1000,1], + ['parallaxright', 15, 3,1,0,'horizontal',true,true,55,p2io,p2i,1500,1], + ['parallaxleft', 12, 3,1,0,'horizontal',true,true,56,p2io,p2i,1500,1], + ['parallaxup', 14, 3,1,0,'horizontal',true,true,57,p2io,p1i,1500,1], + ['parallaxdown', 13, 3,1,0,'horizontal',true,true,58,p2io,p1i,1500,1], + ['grayscale', 11, 5, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1], + ['grayscalecross', 11, 6, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1], + ['brightness', 11, 7, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1], + ['brightnesscross', 11, 8, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1], + ['blurlight', 11, 9, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1], + ['blurlightcross', 11, 10, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1], + ['blurstrong', 11, 9, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1], + ['blurstrongcross', 11, 10, 1 ,300,'horizontal',true,null,11,p2io,p2io,1000,1] + ]; + + opt.duringslidechange = true; + + // INTERNAL TEST FOR TRANSITIONS + opt.testanims = false; + if (opt.testanims==true) { + opt.nexttesttransform = opt.nexttesttransform === undefined ? 34 : opt.nexttesttransform + 1; + opt.nexttesttransform = opt.nexttesttransform>70 ? 0 : opt.nexttesttransform; + comingtransition = transitionsArray[opt.nexttesttransform][0]; + console.log(comingtransition+" "+opt.nexttesttransform+" "+transitionsArray[opt.nexttesttransform][1]+" "+transitionsArray[opt.nexttesttransform][2]); + } + + + // CHECK AUTO DIRECTION FOR TRANSITION ARTS + jQuery.each(["parallaxcircles","slidingoverlay","slide","slideover","slideremove","parallax","parralaxto"],function(i,b) { + + if (comingtransition==b+"horizontal") comingtransition = slidedirection!=1 ? b+"left" : b+"right"; + if (comingtransition==b+"vertical") comingtransition = slidedirection!=1 ? b+"up" : b+"down"; + }); + + + + // RANDOM TRANSITIONS + if (comingtransition == "random") { + comingtransition = Math.round(Math.random()*transitionsArray.length-1); + if (comingtransition>transitionsArray.length-1) comingtransition=transitionsArray.length-1; + } + + // RANDOM FLAT TRANSITIONS + if (comingtransition == "random-static") { + comingtransition = Math.round(Math.random()*flatTransitions.length-1); + if (comingtransition>flatTransitions.length-1) comingtransition=flatTransitions.length-1; + comingtransition = flatTransitions[comingtransition]; + } + + // RANDOM PREMIUM TRANSITIONS + if (comingtransition == "random-premium") { + comingtransition = Math.round(Math.random()*premiumTransitions.length-1); + if (comingtransition>premiumTransitions.length-1) comingtransition=premiumTransitions.length-1; + comingtransition = premiumTransitions[comingtransition]; + } + + //joomla only change: avoid problematic transitions that don't compatible with mootools + var problematicTransitions = [12,13,14,15,16,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45]; + if(opt.isJoomla == true && window.MooTools != undefined && problematicTransitions.indexOf(comingtransition) != -1){ + + var newTransIndex = Math.round(Math.random() * (premiumTransitions.length-2) ) + 1; + + //some limits fix + if (newTransIndex > premiumTransitions.length-1) + newTransIndex = premiumTransitions.length-1; + + if(newTransIndex == 0) + newTransIndex = 1; + + comingtransition = premiumTransitions[newTransIndex]; + } + + + +function findTransition() { + // FIND THE RIGHT TRANSITION PARAMETERS HERE + jQuery.each(transitionsArray,function(inde,trans) { + if (trans[0] == comingtransition || trans[8] == comingtransition) { + nexttrans = trans[1]; + specials = trans[2]; + STAindex = indexcounter; + } + indexcounter = indexcounter+1; + }) + } + + findTransition(); + + + + if (nexttrans>30) nexttrans = 30; + if (nexttrans<0) nexttrans = 0; + + + + var obj = new Object(); + obj.nexttrans = nexttrans; + obj.STA = transitionsArray[STAindex]; // PREPARED DEFAULT SETTINGS PER TRANSITION + obj.specials = specials; + return obj; + + +} + +function moveCircles(cont,ms,_nt,dir,ei) { + var slot = cont.find('.slot'), + pieces = 6, + sizearray = [2,1.2,0.9,0.7,0.55,0.42], + sw = cont.width(), + sh = cont.height(), + di = sh>sw ? (sw*2) / pieces : (sh*2) / pieces; + slot.wrap('
      '); + + for (var i=0; ish ? sizearray[i]*sw : sizearray[i]*sh, + nw = nh, + + nl = 0 + (nw/2 - sw/2), + nt = 0 + (nh/2 - sh/2), + br = i!=0 ? "50%" : "0", + + ftop = _nt == 31 ? sh/2 - nh/2 : _nt == 32 ? sh/2 - nh/2 : sh/2 - nh/2, + fleft = _nt == 33 ? sw/2 - nw/2 : _nt == 34 ? sw - nw : sw/2 - nw/2, + fa = {scale:1,transformOrigo:"50% 50%",width:nw+"px",height:nh+"px",top:ftop+"px",left:fleft+"px",borderRadius:br}, + ta = {scale:1,top:sh/2 - nh/2,left:sw/2 - nw/2,ease:ei}, + + fftop = _nt == 31 ? nt : _nt == 32 ? nt : nt, + ffleft = _nt == 33 ? nl : _nt == 34 ? nl+(sw/2) : nl, + fb = {width:sw,height:sh,autoAlpha:1,top:fftop+"px",position:"absolute",left:ffleft+"px"}, + tb = {top:nt+"px",left:nl+"px",ease:ei}, + + speed = ms, + delay = 0; + + + + + mtl.add(punchgs.TweenLite.fromTo(t,speed,fa,ta),delay); + mtl.add(punchgs.TweenLite.fromTo(s,speed,fb,tb),delay); + mtl.add(punchgs.TweenLite.fromTo(t,0.001,{autoAlpha:0},{autoAlpha:1}),0); + } + }) + } + + + +/************************************* + - ANIMATE THE SLIDE - +*************************************/ + +var gSlideTransA = function(a,i) { + if (i==undefined || jQuery.isNumeric(a)) return a; + if (a==undefined) return a; + return a.split(",")[i]; +} + +var animateSlideIntern = function(nexttrans, comingtransition, container, nextli, actli, nextsh, actsh, mtl) { + + // GET THE TRANSITION + + var opt = container[0].opt, + ai = actli.index(), + ni = nextli.index(), + slidedirection = ni opt.delay ? opt.delay : masterspeed; + + // ADJUST MASTERSPEED + masterspeed = masterspeed + STA[4]; + + + /////////////////////// + // ADJUST SLOTS // + /////////////////////// + opt.slots = gSlideTransA(nextli.data('slotamount'),ctid); + opt.slots = opt.slots==undefined || opt.slots=="default" ? STA[12] : opt.slots=="random" ? Math.round(Math.random()*12+4) : opt.slots; + opt.slots = opt.slots < 1 ? comingtransition=="boxslide" ? Math.round(Math.random()*6+3) : comingtransition=="flyin" ? Math.round(Math.random()*4+1) : opt.slots : opt.slots; + opt.slots = (nexttrans==4 || nexttrans==5 || nexttrans==6) && opt.slots<3 ? 3 : opt.slots; + opt.slots = STA[3] != 0 ? Math.min(opt.slots,STA[3]) : opt.slots; + opt.slots = nexttrans==9 ? opt.width/opt.slots : nexttrans==10 ? opt.height/opt.slots : opt.slots; + + + ///////////////////////////////////////////// + // SET THE ACTUAL AMOUNT OF SLIDES !! // + // SET A RANDOM AMOUNT OF SLOTS // + /////////////////////////////////////////// + opt.rotate = gSlideTransA(nextli.data('rotate'),ctid); + opt.rotate = opt.rotate==undefined || opt.rotate=="default" ? 0 : opt.rotate==999 || opt.rotate=="random" ? Math.round(Math.random()*360) : opt.rotate; + opt.rotate = (opt.ie || opt.ie9) ? 0 : opt.rotate; + + + + + + // prepareOneSlide + if (nexttrans!=11) { + if (STA[7] !=null) prepareOneSlide(actsh,opt,STA[7],STA[5]); + if (STA[6] !=null) prepareOneSlide(nextsh,opt,STA[6],STA[5]); + } + + // DEFAULT SETTINGS FOR NEXT AND ACT SH + mtl.add(punchgs.TweenLite.set(nextsh.find('.defaultvid'),{y:0,x:0,top:0,left:0,scale:1}),0); + mtl.add(punchgs.TweenLite.set(actsh.find('.defaultvid'),{y:0,x:0,top:0,left:0,scale:1}),0); + mtl.add(punchgs.TweenLite.set(nextsh.find('.defaultvid'),{y:"+0%",x:"+0%"}),0); + mtl.add(punchgs.TweenLite.set(actsh.find('.defaultvid'),{y:"+0%",x:"+0%"}),0); + mtl.add(punchgs.TweenLite.set(nextsh,{autoAlpha:1,y:"+0%",x:"+0%"}),0); + mtl.add(punchgs.TweenLite.set(actsh,{autoAlpha:1,y:"+0%",x:"+0%"}),0); + mtl.add(punchgs.TweenLite.set(nextsh.parent(),{backgroundColor:"transparent"}),0); + mtl.add(punchgs.TweenLite.set(actsh.parent(),{backgroundColor:"transparent"}),0); + + + + var ei= gSlideTransA(nextli.data('easein'),ctid), + eo =gSlideTransA(nextli.data('easeout'),ctid); + + ei = ei==="default" ? STA[9] || punchgs.Power2.easeInOut : ei || STA[9] || punchgs.Power2.easeInOut; + eo = eo==="default" ? STA[10] || punchgs.Power2.easeInOut : eo || STA[10] || punchgs.Power2.easeInOut; + + + ///////////////////////////////////// + // THE SLOTSLIDE - TRANSITION I. // + //////////////////////////////////// + if (nexttrans==0) { // BOXSLIDE + + + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT + var maxz = Math.ceil(opt.height/opt.sloth); + var curz = 0; + nextsh.find('.slotslide').each(function(j) { + var ss=jQuery(this); + curz=curz+1; + if (curz==maxz) curz=0; + + mtl.add(punchgs.TweenLite.from(ss,(masterspeed)/600, + {opacity:0,top:(0-opt.sloth),left:(0-opt.slotw),rotation:opt.rotate,force3D:"auto",ease:ei}),((j*15) + ((curz)*30))/1500); + }); + } + ///////////////////////////////////// + // THE SLOTSLIDE - TRANSITION I. // + //////////////////////////////////// + if (nexttrans==1) { + + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT + var maxtime, + maxj = 0; + + nextsh.find('.slotslide').each(function(j) { + var ss=jQuery(this), + rand=Math.random()*masterspeed+300, + rand2=Math.random()*500+200; + if (rand+rand2>maxtime) { + maxtime = rand2+rand2; + maxj = j; + } + mtl.add(punchgs.TweenLite.from(ss,rand/1000, + {autoAlpha:0, force3D:"auto",rotation:opt.rotate,ease:ei}),rand2/1000); + }); + } + + + ///////////////////////////////////// + // THE SLOTSLIDE - TRANSITION I. // + //////////////////////////////////// + if (nexttrans==2) { + + var subtl = new punchgs.TimelineLite(); + // ALL OLD SLOTS SHOULD BE SLIDED TO THE RIGHT + actsh.find('.slotslide').each(function() { + var ss=jQuery(this); + subtl.add(punchgs.TweenLite.to(ss,masterspeed/1000,{left:opt.slotw,ease:ei, force3D:"auto",rotation:(0-opt.rotate)}),0); + mtl.add(subtl,0); + }); + + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT + nextsh.find('.slotslide').each(function() { + var ss=jQuery(this); + subtl.add(punchgs.TweenLite.from(ss,masterspeed/1000,{left:0-opt.slotw,ease:ei, force3D:"auto",rotation:opt.rotate}),0); + mtl.add(subtl,0); + }); + } + + + + ///////////////////////////////////// + // THE SLOTSLIDE - TRANSITION I. // + //////////////////////////////////// + if (nexttrans==3) { + var subtl = new punchgs.TimelineLite(); + + // ALL OLD SLOTS SHOULD BE SLIDED TO THE RIGHT + actsh.find('.slotslide').each(function() { + var ss=jQuery(this); + subtl.add(punchgs.TweenLite.to(ss,masterspeed/1000,{top:opt.sloth,ease:ei,rotation:opt.rotate,force3D:"auto",transformPerspective:600}),0); + mtl.add(subtl,0); + + }); + + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT + nextsh.find('.slotslide').each(function() { + var ss=jQuery(this); + subtl.add(punchgs.TweenLite.from(ss,masterspeed/1000,{top:0-opt.sloth,rotation:opt.rotate,ease:eo,force3D:"auto",transformPerspective:600}),0); + mtl.add(subtl,0); + }); + } + + + + ///////////////////////////////////// + // THE SLOTSLIDE - TRANSITION I. // + //////////////////////////////////// + if (nexttrans==4 || nexttrans==5) { + + setTimeout(function() { + actsh.find('.defaultimg').css({opacity:0}); + },100); + + + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT + var cspeed = (masterspeed)/1000, + ticker = cspeed, + subtl = new punchgs.TimelineLite(); + + actsh.find('.slotslide').each(function(i) { + var ss=jQuery(this); + var del = (i*cspeed)/opt.slots; + if (nexttrans==5) del = ((opt.slots-i-1)*cspeed)/(opt.slots)/1.5; + subtl.add(punchgs.TweenLite.to(ss,cspeed*3,{transformPerspective:600,force3D:"auto",top:0+opt.height,opacity:0.5,rotation:opt.rotate,ease:ei,delay:del}),0); + mtl.add(subtl,0); + }); + + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT + nextsh.find('.slotslide').each(function(i) { + var ss=jQuery(this); + var del = (i*cspeed)/opt.slots; + if (nexttrans==5) del = ((opt.slots-i-1)*cspeed)/(opt.slots)/1.5; + subtl.add(punchgs.TweenLite.from(ss,cspeed*3, + {top:(0-opt.height),opacity:0.5,rotation:opt.rotate,force3D:"auto",ease:punchgs.eo,delay:del}),0); + mtl.add(subtl,0); + + }); + + + } + + ///////////////////////////////////// + // THE SLOTSLIDE - TRANSITION I. // + //////////////////////////////////// + if (nexttrans==6) { + + + if (opt.slots<2) opt.slots=2; + if (opt.slots % 2) opt.slots = opt.slots+1; + + var subtl = new punchgs.TimelineLite(); + + //SET DEFAULT IMG UNVISIBLE + setTimeout(function() { + actsh.find('.defaultimg').css({opacity:0}); + },100); + + actsh.find('.slotslide').each(function(i) { + var ss=jQuery(this); + if (i+1opt.delay) masterspeed=opt.delay; + var subtl = new punchgs.TimelineLite(); + + //SET DEFAULT IMG UNVISIBLE + setTimeout(function() { + actsh.find('.defaultimg').css({opacity:0}); + },100); + + // ALL OLD SLOTS SHOULD BE SLIDED TO THE RIGHT + actsh.find('.slotslide').each(function() { + var ss=jQuery(this).find('div'); + subtl.add(punchgs.TweenLite.to(ss,masterspeed/1000,{ + left:(0-opt.slotw/2)+'px', + top:(0-opt.height/2)+'px', + width:(opt.slotw*2)+"px", + height:(opt.height*2)+"px", + opacity:0, + rotation:opt.rotate, + force3D:"auto", + ease:ei}),0); + mtl.add(subtl,0); + + }); + + ////////////////////////////////////////////////////////////// + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT // + /////////////////////////////////////////////////////////////// + nextsh.find('.slotslide').each(function(i) { + var ss=jQuery(this).find('div'); + + subtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000, + {left:0,top:0,opacity:0,transformPerspective:600}, + {left:(0-i*opt.slotw)+'px', + ease:eo, + force3D:"auto", + top:(0)+'px', + width:opt.width, + height:opt.height, + opacity:1,rotation:0, + delay:0.1}),0); + mtl.add(subtl,0); + }); + } + + + + + //////////////////////////////////// + // THE SLOTSZOOM - TRANSITION II. // + //////////////////////////////////// + if (nexttrans==8) { + + masterspeed = masterspeed * 3; + if (masterspeed>opt.delay) masterspeed=opt.delay; + var subtl = new punchgs.TimelineLite(); + + + + // ALL OLD SLOTS SHOULD BE SLIDED TO THE RIGHT + actsh.find('.slotslide').each(function() { + var ss=jQuery(this).find('div'); + subtl.add(punchgs.TweenLite.to(ss,masterspeed/1000, + {left:(0-opt.width/2)+'px', + top:(0-opt.sloth/2)+'px', + width:(opt.width*2)+"px", + height:(opt.sloth*2)+"px", + force3D:"auto", + ease:ei, + opacity:0,rotation:opt.rotate}),0); + mtl.add(subtl,0); + + }); + + + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT // + /////////////////////////////////////////////////////////////// + nextsh.find('.slotslide').each(function(i) { + var ss=jQuery(this).find('div'); + + subtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000, + {left:0, top:0,opacity:0,force3D:"auto"}, + {'left':(0)+'px', + 'top':(0-i*opt.sloth)+'px', + 'width':(nextsh.find('.defaultimg').data('neww'))+"px", + 'height':(nextsh.find('.defaultimg').data('newh'))+"px", + opacity:1, + ease:eo,rotation:0, + }),0); + mtl.add(subtl,0); + }); + } + + + //////////////////////////////////////// + // THE SLOTSFADE - TRANSITION III. // + ////////////////////////////////////// + if (nexttrans==9 || nexttrans==10) { + var ssamount=0; + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT + nextsh.find('.slotslide').each(function(i) { + var ss=jQuery(this); + ssamount++; + mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/2000,{autoAlpha:0,force3D:"auto",transformPerspective:600}, + {autoAlpha:1,ease:ei,delay:(i*opt.slots/100)/2000}),0); + + }); + } + + + ////////////////////// + // SLIDING OVERLAYS // + ////////////////////// + + if (nexttrans==27||nexttrans==28||nexttrans==29||nexttrans==30) { + + var slot = nextsh.find('.slot'), + nd = nexttrans==27 || nexttrans==28 ? 1 : 2, + mhp = nexttrans==27 || nexttrans==29 ? "-100%" : "+100%", + php = nexttrans==27 || nexttrans==29 ? "+100%" : "-100%", + mep = nexttrans==27 || nexttrans==29 ? "-80%" : "80%", + pep = nexttrans==27 || nexttrans==29 ? "+80%" : "-80%", + ptp = nexttrans==27 || nexttrans==29 ? "+10%" : "-10%", + + fa = {overwrite:"all"}, + ta = {autoAlpha:0,zIndex:1,force3D:"auto",ease:ei}, + + fb = {position:"inherit",autoAlpha:0,overwrite:"all",zIndex:1}, + tb = {autoAlpha:1,force3D:"auto",ease:eo}, + + fc = {overwrite:"all",zIndex:2,opacity:1,autoAlpha:1}, + tc = {autoAlpha:1,force3D:"auto",overwrite:"all",ease:ei}, + + fd = {overwrite:"all",zIndex:2,autoAlpha:1}, + td = {autoAlpha:1,force3D:"auto",ease:ei}, + at = nd==1 ? "y" : "x"; + + fa[at] = "0px"; + ta[at] = mhp; + fb[at] = ptp; + tb[at] = "0%"; + fc[at] = php; + tc[at] = mhp; + fd[at] = mep; + td[at] = pep; + + + slot.append(''); + + mtl.add(punchgs.TweenLite.fromTo(actsh,masterspeed/1000,fa,ta),0); + mtl.add(punchgs.TweenLite.fromTo(nextsh.find('.defaultimg'),masterspeed/2000,fb,tb),masterspeed/2000); + mtl.add(punchgs.TweenLite.fromTo(slot,masterspeed/1000,fc,tc),0); + mtl.add(punchgs.TweenLite.fromTo(slot.find('.slotslide div'),masterspeed/1000,fd,td),0); + } + + + //////////////////////////////// + // PARALLAX CIRCLE TRANSITION // + //////////////////////////////// + + //nexttrans = 34; + if (nexttrans==31||nexttrans==32||nexttrans==33||nexttrans==34) { // up , down, right ,left + + masterspeed = 6000; + ei = punchgs.Power3.easeInOut; + + var ms = masterspeed / 1000; + mas = ms - ms/5, + _nt = nexttrans, + fy = _nt == 31 ? "+100%" : _nt == 32 ? "-100%" : "0%", + fx = _nt == 33 ? "+100%" : _nt == 34 ? "-100%" : "0%", + ty = _nt == 31 ? "-100%" : _nt == 32 ? "+100%" : "0%", + tx = _nt == 33 ? "-100%" : _nt == 34 ? "+100%" : "0%"; + + + mtl.add(punchgs.TweenLite.fromTo(actsh,ms-(ms*0.2),{y:0,x:0},{y:ty,x:tx,ease:eo}),ms*0.2); + mtl.add(punchgs.TweenLite.fromTo(nextsh,ms,{y:fy, x:fx},{y:"0%",x:"0%",ease:ei}),0); + //mtl.add(punchgs.TweenLite.set(nextsh.find('.defaultimg'),{autoAlpha:0}),0);border:1px solid #fff + + + + nextsh.find('.slot').remove(); + nextsh.find('.defaultimg').clone().appendTo(nextsh).addClass("slot"); + moveCircles(nextsh, ms,_nt,"in",ei); + // moveCircles(actsh, mas,_nt,"out",eo); + + + + + + + + } + + ///////////////////////////// + // SIMPLE FADE ANIMATIONS // + //////////////////////////// + if (nexttrans==11) { + + if (specials>12) specials = 0; + + var ssamount=0, + bgcol = specials == 2 ? "#000000" : specials == 3 ? "#ffffff" : "transparent"; + + switch (specials) { + case 0: //FADE + mtl.add(punchgs.TweenLite.fromTo(nextsh,masterspeed/1000,{autoAlpha:0},{autoAlpha:1,force3D:"auto",ease:ei}),0); + break; + + case 1: // CROSSFADE + mtl.add(punchgs.TweenLite.fromTo(nextsh,masterspeed/1000,{autoAlpha:0},{autoAlpha:1,force3D:"auto",ease:ei}),0); + mtl.add(punchgs.TweenLite.fromTo(actsh,masterspeed/1000,{autoAlpha:1},{autoAlpha:0,force3D:"auto",ease:ei}),0); + break; + + case 2: + case 3: + case 4: + mtl.add(punchgs.TweenLite.set(actsh.parent(),{backgroundColor:bgcol,force3D:"auto"}),0); + mtl.add(punchgs.TweenLite.set(nextsh.parent(),{backgroundColor:"transparent",force3D:"auto"}),0); + mtl.add(punchgs.TweenLite.to(actsh,masterspeed/2000,{autoAlpha:0,force3D:"auto",ease:ei}),0); + mtl.add(punchgs.TweenLite.fromTo(nextsh,masterspeed/2000,{autoAlpha:0},{autoAlpha:1,force3D:"auto",ease:ei}),masterspeed/2000); + break; + case 5: // GRAYSCALE + case 6: // GRAYSCALECROSS + case 7: // BRIGHTNESS + case 8: // BRIGHTNESSCROSS + case 9: // BLUR LIGHT + case 10: // BLUR LIGHT CROSS + case 11: // BLUR STRONG + case 12: // BLUR STRONG CROSS + + + var _blur = jQuery.inArray(specials,[9,10])>=0 ? 5 : jQuery.inArray(specials,[11,12])>=0 ? 10 : 0, + _gray = jQuery.inArray(specials,[5,6,7,8])>=0 ? 100 : 0, + _bright = jQuery.inArray(specials,[7,8])>=0 ? 300 : 0, + __ff = "blur("+_blur+"px) grayscale("+_gray+"%) brightness("+_bright+"%)", + __ft = "blur(0px) grayscale(0%) brightness(100%)"; + + mtl.add(punchgs.TweenLite.fromTo(nextsh,masterspeed/1000,{autoAlpha:0,filter:__ff, "-webkit-filter":__ff},{autoAlpha:1,filter:__ft, "-webkit-filter":__ft,force3D:"auto",ease:ei}),0); + if (jQuery.inArray(specials,[6,8,10])>=0) + mtl.add(punchgs.TweenLite.fromTo(actsh,masterspeed/1000,{autoAlpha:1,filter:__ft, "-webkit-filter":__ft},{autoAlpha:0,force3D:"auto",ease:ei,filter:__ff, "-webkit-filter":__ff}),0); + + break; + + + } + + mtl.add(punchgs.TweenLite.set(nextsh.find('.defaultimg'),{autoAlpha:1}),0); + mtl.add(punchgs.TweenLite.set(actsh.find('defaultimg'),{autoAlpha:1}),0); + + + } + + if (nexttrans==26) { + var ssamount=0; + masterspeed=0; + mtl.add(punchgs.TweenLite.fromTo(nextsh,masterspeed/1000,{autoAlpha:0},{autoAlpha:1,force3D:"auto",ease:ei}),0); + mtl.add(punchgs.TweenLite.to(actsh,masterspeed/1000,{autoAlpha:0,force3D:"auto",ease:ei}),0); + mtl.add(punchgs.TweenLite.set(nextsh.find('.defaultimg'),{autoAlpha:1}),0); + mtl.add(punchgs.TweenLite.set(actsh.find('defaultimg'),{autoAlpha:1}),0); + } + + + + if (nexttrans==12 || nexttrans==13 || nexttrans==14 || nexttrans==15) { + masterspeed = masterspeed; + if (masterspeed>opt.delay) masterspeed=opt.delay; + //masterspeed = 1000; + + setTimeout(function() { + punchgs.TweenLite.set(actsh.find('.defaultimg'),{autoAlpha:0}); + + },100); + + var oow = opt.width, + ooh = opt.height, + ssn=nextsh.find('.slotslide, .defaultvid'), + twx = 0, + twy = 0, + op = 1, + scal = 1, + fromscale = 1, + speedy = masterspeed/1000, + speedy2 = speedy; + + + if (opt.sliderLayout=="fullwidth" || opt.sliderLayout=="fullscreen") { + oow=ssn.width(); + ooh=ssn.height(); + } + + + + if (nexttrans==12) + twx = oow; + else + if (nexttrans==15) + twx = 0-oow; + else + if (nexttrans==13) + twy = ooh; + else + if (nexttrans==14) + twy = 0-ooh; + + + // DEPENDING ON EXTENDED SPECIALS, DIFFERENT SCALE AND OPACITY FUNCTIONS NEED TO BE ADDED + if (specials == 1) op = 0; + if (specials == 2) op = 0; + if (specials == 3) speedy = masterspeed / 1300; + + if (specials==4 || specials==5) + scal=0.6; + if (specials==6 ) + scal=1.4; + + + if (specials==5 || specials==6) { + fromscale=1.4; + op=0; + oow=0; + ooh=0;twx=0;twy=0; + } + if (specials==6) fromscale=0.6; + var dd = 0; + + if (specials==7) { + oow = 0; + ooh = 0; + } + + var inc = nextsh.find('.slotslide'), + outc = actsh.find('.slotslide, .defaultvid'); + + mtl.add(punchgs.TweenLite.set(actli,{zIndex:15}),0); + mtl.add(punchgs.TweenLite.set(nextli,{zIndex:20}),0); + + if (specials==8) { + + mtl.add(punchgs.TweenLite.set(actli,{zIndex:20}),0); + mtl.add(punchgs.TweenLite.set(nextli,{zIndex:15}),0); + mtl.add(punchgs.TweenLite.set(inc,{left:0, top:0, scale:1, opacity:1,rotation:0,ease:ei,force3D:"auto"}),0); + } else { + + mtl.add(punchgs.TweenLite.from(inc,speedy,{left:twx, top:twy, scale:fromscale, opacity:op,rotation:opt.rotate,ease:ei,force3D:"auto"}),0); + } + + if (specials==4 || specials==5) { + oow = 0; ooh=0; + } + + if (specials!=1) + switch (nexttrans) { + case 12: + + mtl.add(punchgs.TweenLite.to(outc,speedy2,{'left':(0-oow)+'px',force3D:"auto",scale:scal,opacity:op,rotation:opt.rotate,ease:eo}),0); + break; + case 15: + mtl.add(punchgs.TweenLite.to(outc,speedy2,{'left':(oow)+'px',force3D:"auto",scale:scal,opacity:op,rotation:opt.rotate,ease:eo}),0); + break; + case 13: + mtl.add(punchgs.TweenLite.to(outc,speedy2,{'top':(0-ooh)+'px',force3D:"auto",scale:scal,opacity:op,rotation:opt.rotate,ease:eo}),0); + break; + case 14: + mtl.add(punchgs.TweenLite.to(outc,speedy2,{'top':(ooh)+'px',force3D:"auto",scale:scal,opacity:op,rotation:opt.rotate,ease:eo}),0); + break; + } + } + + ////////////////////////////////////// + // THE SLOTSLIDE - TRANSITION XVI. // + ////////////////////////////////////// + if (nexttrans==16) { // PAPERCUT + + + var subtl = new punchgs.TimelineLite(); + mtl.add(punchgs.TweenLite.set(actli,{'position':'absolute','z-index':20}),0); + mtl.add(punchgs.TweenLite.set(nextli,{'position':'absolute','z-index':15}),0); + + + // PREPARE THE CUTS + actli.wrapInner('
      '); + + actli.find('.tp-half-one').clone(true).appendTo(actli).addClass("tp-half-two"); + actli.find('.tp-half-two').removeClass('tp-half-one'); + + var oow = opt.width, + ooh = opt.height; + if (opt.autoHeight=="on") + ooh = container.height(); + + + actli.find('.tp-half-one .defaultimg').wrap('
      ') + actli.find('.tp-half-two .defaultimg').wrap('
      ') + actli.find('.tp-half-two .defaultimg').css({position:'absolute',top:'-50%'}); + actli.find('.tp-half-two .tp-caption').wrapAll('
      '); + + mtl.add(punchgs.TweenLite.set(actli.find('.tp-half-two'), + {width:oow,height:ooh,overflow:'hidden',zIndex:15,position:'absolute',top:ooh/2,left:'0px',transformPerspective:600,transformOrigin:"center bottom"}),0); + + mtl.add(punchgs.TweenLite.set(actli.find('.tp-half-one'), + {width:oow,height:ooh/2,overflow:'visible',zIndex:10,position:'absolute',top:'0px',left:'0px',transformPerspective:600,transformOrigin:"center top"}),0); + + // ANIMATE THE CUTS + var img=actli.find('.defaultimg'), + ro1=Math.round(Math.random()*20-10), + ro2=Math.round(Math.random()*20-10), + ro3=Math.round(Math.random()*20-10), + xof = Math.random()*0.4-0.2, + yof = Math.random()*0.4-0.2, + sc1=Math.random()*1+1, + sc2=Math.random()*1+1, + sc3=Math.random()*0.3+0.3; + + mtl.add(punchgs.TweenLite.set(actli.find('.tp-half-one'),{overflow:'hidden'}),0); + mtl.add(punchgs.TweenLite.fromTo(actli.find('.tp-half-one'),masterspeed/800, + {width:oow,height:ooh/2,position:'absolute',top:'0px',left:'0px',force3D:"auto",transformOrigin:"center top"}, + {scale:sc1,rotation:ro1,y:(0-ooh-ooh/4),autoAlpha:0,ease:ei}),0); + mtl.add(punchgs.TweenLite.fromTo(actli.find('.tp-half-two'),masterspeed/800, + {width:oow,height:ooh,overflow:'hidden',position:'absolute',top:ooh/2,left:'0px',force3D:"auto",transformOrigin:"center bottom"}, + {scale:sc2,rotation:ro2,y:ooh+ooh/4,ease:ei,autoAlpha:0,onComplete:function() { + // CLEAN UP + punchgs.TweenLite.set(actli,{'position':'absolute','z-index':15}); + punchgs.TweenLite.set(nextli,{'position':'absolute','z-index':20}); + if (actli.find('.tp-half-one').length>0) { + actli.find('.tp-half-one .defaultimg').unwrap(); + actli.find('.tp-half-one .slotholder').unwrap(); + } + actli.find('.tp-half-two').remove(); + }}),0); + + subtl.add(punchgs.TweenLite.set(nextsh.find('.defaultimg'),{autoAlpha:1}),0); + + if (actli.html()!=null) + mtl.add(punchgs.TweenLite.fromTo(nextli,(masterspeed-200)/1000, + {scale:sc3,x:(opt.width/4)*xof, y:(ooh/4)*yof,rotation:ro3,force3D:"auto",transformOrigin:"center center",ease:eo}, + {autoAlpha:1,scale:1,x:0,y:0,rotation:0}),0); + + mtl.add(subtl,0); + + + } + + //////////////////////////////////////// + // THE SLOTSLIDE - TRANSITION XVII. // + /////////////////////////////////////// + if (nexttrans==17) { // 3D CURTAIN HORIZONTAL + + + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT + + nextsh.find('.slotslide').each(function(j) { + var ss=jQuery(this); + + mtl.add(punchgs.TweenLite.fromTo(ss,(masterspeed)/800, + {opacity:0,rotationY:0,scale:0.9,rotationX:-110,force3D:"auto",transformPerspective:600,transformOrigin:"center center"}, + {opacity:1,top:0,left:0,scale:1,rotation:0,rotationX:0,force3D:"auto",rotationY:0,ease:ei,delay:j*0.06}),0); + + }); + } + + + + //////////////////////////////////////// + // THE SLOTSLIDE - TRANSITION XVIII. // + /////////////////////////////////////// + if (nexttrans==18) { // 3D CURTAIN VERTICAL + + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT + nextsh.find('.slotslide').each(function(j) { + var ss=jQuery(this); + + mtl.add(punchgs.TweenLite.fromTo(ss,(masterspeed)/500, + {autoAlpha:0,rotationY:110,scale:0.9,rotationX:10,force3D:"auto",transformPerspective:600,transformOrigin:"center center"}, + {autoAlpha:1,top:0,left:0,scale:1,rotation:0,rotationX:0,force3D:"auto",rotationY:0,ease:ei,delay:j*0.06}),0); + }); + + + + } + + + //////////////////////////////////////// + // THE SLOTSLIDE - TRANSITION XIX. // + /////////////////////////////////////// + if (nexttrans==19 || nexttrans==22) { // IN CUBE + + var subtl = new punchgs.TimelineLite(); + //SET DEFAULT IMG UNVISIBLE + + mtl.add(punchgs.TweenLite.set(actli,{zIndex:20}),0); + mtl.add(punchgs.TweenLite.set(nextli,{zIndex:20}),0); + setTimeout(function() { + actsh.find('.defaultimg').css({opacity:0}); + },100); + var rot = 90, + op = 1, + torig ="center center "; + + if (slidedirection==1) rot = -90; + + if (nexttrans==19) { + torig = torig+"-"+opt.height/2; + op=0; + + } else { + torig = torig+opt.height/2; + } + + // ALL NEW SLOTS SHOULD BE SLIDED FROM THE LEFT TO THE RIGHT + punchgs.TweenLite.set(container,{transformStyle:"flat",backfaceVisibility:"hidden",transformPerspective:600}); + + nextsh.find('.slotslide').each(function(j) { + var ss=jQuery(this); + + subtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000, + {transformStyle:"flat",backfaceVisibility:"hidden",left:0,rotationY:opt.rotate,z:10,top:0,scale:1,force3D:"auto",transformPerspective:600,transformOrigin:torig,rotationX:rot}, + {left:0,rotationY:0,top:0,z:0, scale:1,force3D:"auto",rotationX:0, delay:(j*50)/1000,ease:ei}),0); + subtl.add(punchgs.TweenLite.to(ss,0.1,{autoAlpha:1,delay:(j*50)/1000}),0); + mtl.add(subtl); + }); + + actsh.find('.slotslide').each(function(j) { + var ss=jQuery(this); + var rot = -90; + if (slidedirection==1) rot = 90; + + subtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000, + {transformStyle:"flat",backfaceVisibility:"hidden",autoAlpha:1,rotationY:0,top:0,z:0,scale:1,force3D:"auto",transformPerspective:600,transformOrigin:torig, rotationX:0}, + {autoAlpha:1,rotationY:opt.rotate,top:0,z:10, scale:1,rotationX:rot, delay:(j*50)/1000,force3D:"auto",ease:eo}),0); + + mtl.add(subtl); + }); + mtl.add(punchgs.TweenLite.set(actli,{zIndex:18}),0); + } + + + + + //////////////////////////////////////// + // THE SLOTSLIDE - TRANSITION XX. // + /////////////////////////////////////// + if (nexttrans==20 ) { // FLYIN + + + setTimeout(function() { + actsh.find('.defaultimg').css({opacity:0}); + },100); + + if (slidedirection==1) { + var ofx = -opt.width + var rot =80; + var torig = "20% 70% -"+opt.height/2; + } else { + var ofx = opt.width; + var rot = -80; + var torig = "80% 70% -"+opt.height/2; + } + + + nextsh.find('.slotslide').each(function(j) { + var ss=jQuery(this), + d = (j*50)/1000; + + + + mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000, + {left:ofx,rotationX:40,z:-600, opacity:op,top:0,scale:1,force3D:"auto",transformPerspective:600,transformOrigin:torig,transformStyle:"flat",rotationY:rot}, + {left:0,rotationX:0,opacity:1,top:0,z:0, scale:1,rotationY:0, delay:d,ease:ei}),0); + + + }); + actsh.find('.slotslide').each(function(j) { + var ss=jQuery(this), + d = (j*50)/1000; + d = j>0 ? d + masterspeed/9000 : 0; + + if (slidedirection!=1) { + var ofx = -opt.width/2 + var rot =30; + var torig = "20% 70% -"+opt.height/2; + } else { + var ofx = opt.width/2; + var rot = -30; + var torig = "80% 70% -"+opt.height/2; + } + eo=punchgs.Power2.easeInOut; + + mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000, + {opacity:1,rotationX:0,top:0,z:0,scale:1,left:0, force3D:"auto",transformPerspective:600,transformOrigin:torig, transformStyle:"flat",rotationY:0}, + {opacity:1,rotationX:20,top:0, z:-600, left:ofx, force3D:"auto",rotationY:rot, delay:d,ease:eo}),0); + + + }); + } + + //////////////////////////////////////// + // THE SLOTSLIDE - TRANSITION XX. // + /////////////////////////////////////// + if (nexttrans==21 || nexttrans==25) { // TURNOFF + + + //SET DEFAULT IMG UNVISIBLE + + setTimeout(function() { + actsh.find('.defaultimg').css({opacity:0}); + },100); + var rot = 90, + ofx = -opt.width, + rot2 = -rot; + + if (slidedirection==1) { + if (nexttrans==25) { + var torig = "center top 0"; + rot = opt.rotate; + } else { + var torig = "left center 0"; + rot2 = opt.rotate; + } + + } else { + ofx = opt.width; + rot = -90; + if (nexttrans==25) { + var torig = "center bottom 0" + rot2 = -rot; + rot = opt.rotate; + } else { + var torig = "right center 0"; + rot2 = opt.rotate; + } + } + + nextsh.find('.slotslide').each(function(j) { + var ss=jQuery(this), + ms2 = ((masterspeed/1.5)/3); + + + mtl.add(punchgs.TweenLite.fromTo(ss,(ms2*2)/1000, + {left:0,transformStyle:"flat",rotationX:rot2,z:0, autoAlpha:0,top:0,scale:1,force3D:"auto",transformPerspective:1200,transformOrigin:torig,rotationY:rot}, + {left:0,rotationX:0,top:0,z:0, autoAlpha:1,scale:1,rotationY:0,force3D:"auto",delay:ms2/1000, ease:ei}),0); + }); + + + if (slidedirection!=1) { + ofx = -opt.width + rot = 90; + + if (nexttrans==25) { + torig = "center top 0" + rot2 = -rot; + rot = opt.rotate; + } else { + torig = "left center 0"; + rot2 = opt.rotate; + } + + } else { + ofx = opt.width; + rot = -90; + if (nexttrans==25) { + torig = "center bottom 0" + rot2 = -rot; + rot = opt.rotate; + } else { + torig = "right center 0"; + rot2 = opt.rotate; + } + } + + actsh.find('.slotslide').each(function(j) { + var ss=jQuery(this); + mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000, + {left:0,transformStyle:"flat",rotationX:0,z:0, autoAlpha:1,top:0,scale:1,force3D:"auto",transformPerspective:1200,transformOrigin:torig,rotationY:0}, + {left:0,rotationX:rot2,top:0,z:0,autoAlpha:1,force3D:"auto", scale:1,rotationY:rot,ease:eo}),0); + }); + } + + + + //////////////////////////////////////// + // THE SLOTSLIDE - TRANSITION XX. // + /////////////////////////////////////// + if (nexttrans==23 || nexttrans == 24) { // cube-horizontal - inboxhorizontal + + //SET DEFAULT IMG UNVISIBLE + setTimeout(function() { + actsh.find('.defaultimg').css({opacity:0}); + },100); + var rot = -90, + op = 1, + opx=0; + + if (slidedirection==1) rot = 90; + if (nexttrans==23) { + var torig = "center center -"+opt.width/2; + op=0; + } else + var torig = "center center "+opt.width/2; + + punchgs.TweenLite.set(container,{transformStyle:"preserve-3d",backfaceVisibility:"hidden",perspective:2500}); + nextsh.find('.slotslide').each(function(j) { + var ss=jQuery(this); + mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000, + {left:opx,rotationX:opt.rotate,force3D:"auto",opacity:op,top:0,scale:1,transformPerspective:1200,transformOrigin:torig,rotationY:rot}, + {left:0,rotationX:0,autoAlpha:1,top:0,z:0, scale:1,rotationY:0, delay:(j*50)/500,ease:ei}),0); + }); + + rot = 90; + if (slidedirection==1) rot = -90; + + actsh.find('.slotslide').each(function(j) { + var ss=jQuery(this); + mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/1000, + {left:0,rotationX:0,top:0,z:0,scale:1,force3D:"auto",transformStyle:"flat",transformPerspective:1200,transformOrigin:torig, rotationY:0}, + {left:opx,rotationX:opt.rotate,top:0, scale:1,rotationY:rot, delay:(j*50)/500,ease:eo}),0); + if (nexttrans==23) mtl.add(punchgs.TweenLite.fromTo(ss,masterspeed/2000,{autoAlpha:1},{autoAlpha:0,delay:(j*50)/500 + masterspeed/3000,ease:eo}),0); + + }); + } + + + return mtl; +} + +})(jQuery); \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.video.js b/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.video.js new file mode 100644 index 0000000..be071ec --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/js/extensions/source/revolution.extension.video.js @@ -0,0 +1,1464 @@ +/******************************************** + * REVOLUTION 5.4.6.5 EXTENSION - VIDEO FUNCTIONS + * @version: 2.2.2 (04.06.2018) + * @requires jquery.themepunch.revolution.js + * @author ThemePunch +*********************************************/ +;(function($) { + "use strict"; +var _R = jQuery.fn.revolution, + _ISM = _R.is_mobile(), + _ANDROID = _R.is_android(), + extension = { alias:"Video Min JS", + name:"revolution.extensions.video.min.js", + min_core: "5.4.8", + version:"2.2.2" + }; + + + +/////////////////////////////////////////// +// EXTENDED FUNCTIONS AVAILABLE GLOBAL // +/////////////////////////////////////////// +jQuery.extend(true,_R, { + + + preLoadAudio : function(li,opt) { + if (_R.compare_version(extension).check==="stop") return false; + li.find('.tp-audiolayer').each(function() { + + var element = jQuery(this), + obj = {}; + if (element.find('audio').length===0) { + obj.src = element.data('videomp4') !=undefined ? element.data('videomp4') : '', + obj.pre = element.data('videopreload') || ''; + if (element.attr('id')===undefined) element.attr('audio-layer-'+Math.round(Math.random()*199999)); + obj.id = element.attr('id'); + obj.status = "prepared"; + obj.start = jQuery.now(); + obj.waittime = element.data('videopreloadwait')*1000 || 5000; + + + if (obj.pre=="auto" || obj.pre=="canplaythrough" || obj.pre=="canplay" || obj.pre=="progress") { + if (opt.audioqueue===undefined) opt.audioqueue = []; + opt.audioqueue.push(obj); + _R.manageVideoLayer(element,opt); + } + } + }); + }, + + preLoadAudioDone : function(nc,opt,event) { + + if (opt.audioqueue && opt.audioqueue.length>0) + jQuery.each(opt.audioqueue,function(i,obj) { + if (nc.data('videomp4') === obj.src && (obj.pre === event || obj.pre==="auto")) { + obj.status = "loaded"; + } + }); + }, + + resetVideo : function(_nc,opt,preset,nextli) { + + var _ = _nc.data(); + switch (_.videotype) { + case "youtube": + + var player=_.player; + try{ + if (_.forcerewind=="on") { //Removed Force Rewind Protection for Handy here !!! + var s = getStartSec(_nc.data('videostartat')), + wasdead = s==-1 ? true : false, + forceseek = _.bgvideo===1 || _nc.find('.tp-videoposter').length>0 ? true : false; + + if (_.player!=undefined) { + //if ((s!==0 && !wasdead) || forceseek) { + s= s==-1 ? 0 : s; + _.player.seekTo(s); + _.player.pauseVideo(); + //} + } + } + } catch(e) {} + if (_nc.find('.tp-videoposter').length==0 && _.bgvideo!==1 && preset!==true) + punchgs.TweenLite.to(_nc.find('iframe'),0.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut}); + + break; + + case "vimeo": + + var f = _nc.data('vimeoplayer'); + try{ + + if (_.forcerewind=="on") { //Removed Force Rewind Protection for Handy here !!! + + var s = getStartSec(_.videostartat), + ct = 0, + wasdead = s==-1 ? true : false, + forceseek = _.bgvideo===1 || _nc.find('.tp-videoposter').length>0 ? true : false; + s= s==-1 ? 0 : s; + if ((s!==0 && !wasdead) || forceseek) { + + // 5.4.6.5 + f.pause().then(function() { + + f.setCurrentTime(s); + + }); + } + } + + } catch(e) {} + + if (_nc.find('.tp-videoposter').length==0 && _.bgvideo!==1 && preset!==true) + punchgs.TweenLite.to(_nc.find('iframe'),0.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut}); + break; + + case "html5": + if (_ISM && _.disablevideoonmobile==1) return false; + + var tag = _.audio=="html5" ? "audio" : "video", + jvideo = _nc.find(tag), + video = jvideo[0]; + + + punchgs.TweenLite.to(jvideo,0.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut}); + + if (_.forcerewind=="on" && !_nc.hasClass("videoisplaying")) { + try{ + + var s = getStartSec(_.videostartat); + video.currentTime = s == -1 ? 0 : s; + } catch(e) {} + } + + if (_.volume=="mute" || _R.lastToggleState(_nc.videomutetoggledby) || opt.globalmute===true) + video.muted = true; + break; + } + }, + + + isVideoMuted : function(_nc,opt) { + var muted = false, + _ = _nc.data(); + switch (_.videotype) { + case "youtube": + try{ + var player=_.player; + muted = player.isMuted(); + } catch(e) {} + break; + case "vimeo": + try{ + // var f = _.vimeoplayer; + if (_.volume=="mute") + muted = true; + + } catch(e) {} + break; + case "html5": + var tag = _.audio=="html5" ? "audio" : "video", + jvideo = _nc.find(tag), + video = jvideo[0]; + + if (video.muted) + muted = true; + break; + } + return muted; + }, + + muteVideo : function(_nc,opt) { + var _ = _nc.data(); + switch (_.videotype) { + case "youtube": + try{ + var player=_.player; + + player.mute(); + } catch(e) {} + break; + case "vimeo": + try{ + var f = _nc.data('vimeoplayer'); + _nc.data('volume',"mute"); + f.setVolume(0); + } catch(e) {} + break; + case "html5": + var tag = _.audio=="html5" ? "audio" : "video", + jvideo = _nc.find(tag), + video = jvideo[0]; + video.muted = true; + break; + } + }, + + unMuteVideo : function(_nc,opt) { + if (opt.globalmute===true) return; + var _ = _nc.data(); + switch (_.videotype) { + case "youtube": + try{ + var player=_.player; + player.unMute(); + } catch(e) {} + break; + case "vimeo": + try{ + var f = _nc.data('vimeoplayer'); + _nc.data('volume',"1"); + f.setVolume(1); + } catch(e) {} + break; + case "html5": + var tag = _.audio=="html5" ? "audio" : "video", + jvideo = _nc.find(tag), + video = jvideo[0]; + video.muted = false; + break; + } + }, + + + + + + stopVideo : function(_nc,opt) { + + var _ = _nc.data(); + if (!opt.leaveViewPortBasedStop) + opt.lastplayedvideos = []; + + opt.leaveViewPortBasedStop = false; + + switch (_.videotype) { + case "youtube": + + //if (_ISM) return; + try{ + + var player=_.player; + + if (player.getPlayerState()===2 || player.getPlayerState()===5) return; + player.pauseVideo(); + _.youtubepausecalled = true; + setTimeout(function() { + _.youtubepausecalled=false; + },80); + } catch(e) { + console.log("Issue at YouTube Video Pause:"); + console.log(e); + } + break; + case "vimeo": + try{ + var f = _nc.data('vimeoplayer'); + f.pause(); + _.vimeopausecalled = true; + setTimeout(function() { + _.vimeopausecalled=false; + },80); + + } catch(e) { + console.log("Issue at Vimeo Video Pause:"); + console.log(e); + } + break; + case "html5": + var tag = _.audio=="html5" ? "audio" : "video", + jvideo = _nc.find(tag), + video = jvideo[0]; + if (jvideo!=undefined && video!=undefined) { + + video.pause(); + } + break; + } + }, + + playVideo : function(_nc,opt) { + + clearTimeout(_nc.data('videoplaywait')); + var _ = _nc.data(); + switch (_.videotype) { + case "youtube": + + if (_nc.find('iframe').length==0) { + _nc.append(_nc.data('videomarkup')); + addVideoListener(_nc,opt,true); + } else { + if (_.player.playVideo !=undefined) { + + var s = getStartSec(_nc.data('videostartat')), + ct = _.player.getCurrentTime(); + if (_nc.data('nextslideatend-triggered')==1) { + ct=-1; + _nc.data('nextslideatend-triggered',0); + } + if (s!=-1 && s>ct) _.player.seekTo(s); + if (_.youtubepausecalled!==true) + _.player.playVideo(); + } else { + _nc.data('videoplaywait',setTimeout(function() { + if (_.youtubepausecalled!==true) _R.playVideo(_nc,opt); + },50)); + } + } + break; + case "vimeo": + + if (_nc.find('iframe').length==0) { + _nc.removeData('vimeoplayer'); + _nc.append(_nc.data('videomarkup')); + addVideoListener(_nc,opt,true); + + } else { + if (_nc.hasClass("rs-apiready")) { + var id = _nc.find('iframe').attr("id"), + f; + + if(!_nc.data('vimeoplayer')) { + + f = new Vimeo.Player(id); + _nc.data('vimeoplayer', f); + } + else { + f = _nc.data('vimeoplayer'); + } + if (!f.getPaused()) { + _nc.data('videoplaywait',setTimeout(function() { + if (_.vimeopausecalled!==true) + _R.playVideo(_nc,opt); + },50)); + + } else { + setTimeout(function() { + + var s = getStartSec(_nc.data('videostartat')), + ct = _nc.data('currenttime'); + + // ct can register as undefined here at slide start + if(!ct) ct = 0; + + if (_nc.data('nextslideatend-triggered')==1) { + ct=-1; + _nc.data('nextslideatend-triggered',0); + } + + if (s!=-1 && s>ct) f.setCurrentTime(s); + f.play(); + },510); + } + + } else { + _nc.data('videoplaywait',setTimeout(function() { + if (_.vimeopausecalled!==true) + _R.playVideo(_nc,opt); + },50)); + } + } + break; + case "html5": + //if (_ISM && _nc.data('disablevideoonmobile')==1) return false; + + + var tag = _.audio=="html5" ? "audio" : "video", + jvideo = _nc.find(tag), + video = jvideo[0], + html5vid = jvideo.parent(); + + if (html5vid.data('metaloaded') != 1) { + addEvent(video,'loadedmetadata',function(_nc) { + _R.resetVideo(_nc,opt); + video.play(); + var s = getStartSec(_nc.data('videostartat')), + ct = video.currentTime; + if (_nc.data('nextslideatend-triggered')==1) { + ct=-1; + _nc.data('nextslideatend-triggered',0); + } + if (s!=-1 && s>ct) video.currentTime = s; + }(_nc)); + } else { + video.play(); + var s = getStartSec(_nc.data('videostartat')), + ct = video.currentTime; + if (_nc.data('nextslideatend-triggered')==1) { + ct=-1; + _nc.data('nextslideatend-triggered',0); + } + if (s!=-1 && s>ct) video.currentTime = s; + } + break; + } + }, + + isVideoPlaying : function(_nc,opt) { + + var ret = false; + if (opt.playingvideos != undefined) { + jQuery.each(opt.playingvideos,function(i,nc) { + if (_nc.attr('id') == nc.attr('id')) + ret = true; + }); + } + return ret; + }, + + removeMediaFromList : function(_nc,opt) { + remVidfromList(_nc,opt); + }, + + prepareCoveredVideo : function(opt,_nc) { + + // only resize/reposition fullscreen video + if(_nc.hasClass('tp-caption') && !_nc.hasClass('coverscreenvideo')) return; + + if (_nc.data('vimeoid')!==undefined && _nc.data('vimeoplayerloaded')===undefined) return; + + var _ = {}; + + _.ifr = _nc.find('iframe, video'); + _.asp = _nc.data('aspectratio'); + + _.wa = _.asp.split(':')[0]; + _.ha = _.asp.split(':')[1]; + _.vd = _.wa/_.ha; + + // 5.4.6.5 + var conw = opt.sliderType !== 'carousel' ? opt.conw : _nc.closest('.tp-revslider-slidesli').width(); + + if (conw===0 || opt.conh===0) { + _R.setSize(opt); + clearTimeout(_.ifr.data('resizelistener')); + _.ifr.data('resizelistener',setTimeout(function() { + _R.prepareCoveredVideo(opt,_nc); + },100)); + return; + } + + + var od = conw / opt.conh, + nvh = (od/_.vd)*100, + nvw = (_.vd/od)*100; + + + if (od>_.vd) { + punchgs.TweenLite.set(_.ifr,{height:nvh+"%", width:"100%", top:-(nvh-100)/2+"%",left:"0px",position:"absolute"}); + } + else { + punchgs.TweenLite.set(_.ifr,{width:nvw+"%", height:"100%", left:-(nvw-100)/2+"%",top:"0px",position:"absolute"}); + } + + if (!_.ifr.hasClass("resizelistener")) { + _.ifr.addClass("resizelistener"); + jQuery(window).resize(function() { + _R.prepareCoveredVideo(opt,_nc); + + clearTimeout(_.ifr.data('resizelistener')); + _.ifr.data('resizelistener',setTimeout(function() { + _R.prepareCoveredVideo(opt,_nc); + },90)); + + }) + } + }, + + checkVideoApis : function(_nc,opt,addedApis) { + var httpprefix = location.protocol === 'https:' ? "https" : "http"; + + if ((_nc.data('ytid')!=undefined || _nc.find('iframe').length>0 && _nc.find('iframe').attr('src').toLowerCase().indexOf('youtube')>0)) opt.youtubeapineeded = true; + if ((_nc.data('ytid')!=undefined || _nc.find('iframe').length>0 && _nc.find('iframe').attr('src').toLowerCase().indexOf('youtube')>0) && addedApis.addedyt==0) { + opt.youtubestarttime = jQuery.now(); + addedApis.addedyt=1; + var s = document.createElement("script"); + s.src = "https://www.youtube.com/iframe_api"; /* Load Player API*/ + var before = document.getElementsByTagName("script")[0], + loadit = true; + jQuery('head').find('*').each(function(){ + if (jQuery(this).attr('src') == "https://www.youtube.com/iframe_api") + loadit = false; + }); + if (loadit) before.parentNode.insertBefore(s, before); + + } + + + + if ((_nc.data('vimeoid')!=undefined || _nc.find('iframe').length>0 && _nc.find('iframe').attr('src').toLowerCase().indexOf('vimeo')>0)) opt.vimeoapineeded = true; + if ((_nc.data('vimeoid')!=undefined || _nc.find('iframe').length>0 && _nc.find('iframe').attr('src').toLowerCase().indexOf('vimeo')>0) && addedApis.addedvim==0) { + opt.vimeostarttime = jQuery.now(); + addedApis.addedvim=1; + var f = document.createElement("script"), + before = document.getElementsByTagName("script")[0], + loadit = true; + f.src = "https://player.vimeo.com/api/player.js"; /* Load Player API*/ + + jQuery('head').find('*').each(function(){ + if (jQuery(this).attr('src') == "https://player.vimeo.com/api/player.js") + loadit = false; + }); + if (loadit) + before.parentNode.insertBefore(f, before); + } + return addedApis; + }, + + manageVideoLayer : function(_nc,opt,recalled,internrecalled) { + if (_R.compare_version(extension).check==="stop") return false; + // YOUTUBE AND VIMEO LISTENRES INITIALISATION + var _ = _nc.data(), + vida = _.videoattributes, + vidytid = _.ytid, + vimeoid = _.vimeoid, + videopreload = _.videopreload === "auto" || _.videopreload === "canplay" || _.videopreload === "canplaythrough" || _.videopreload === "progress" ? "auto" : _.videopreload, + videomp = _.videomp4, + videowebm = _.videowebm, + videoogv = _.videoogv, + videoafs = _.allowfullscreenvideo, + videocontrols = _.videocontrols, + httpprefix = "http", + videoloop = _.videoloop=="loop" ? "loop" : _.videoloop=="loopandnoslidestop" ? "loop" : "", + videotype = (videomp!=undefined || videowebm!=undefined) ? "html5" : + (vidytid!=undefined && String(vidytid).length>1) ? "youtube" : + (vimeoid!=undefined && String(vimeoid).length>1) ? "vimeo" : "none", + tag = _.audio=="html5" ? "audio" : "video", + newvideotype = (videotype=="html5" && _nc.find(tag).length==0) ? "html5" : + (videotype=="youtube" && _nc.find('iframe').length==0) ? "youtube" : + (videotype=="vimeo" && _nc.find('iframe').length==0) ? "vimeo" : "none"; + + // VideLoop reset if Next Slide at End is set ! + videoloop = _.nextslideatend === true ? "" : videoloop; + + + _.videotype = videotype; + // ADD HTML5 VIDEO IF NEEDED + switch (newvideotype) { + case "html5": + + if (videocontrols!="controls") videocontrols=""; + var tag = "video"; + + //_nc.data('audio',"html5"); + if (_.audio=="html5") { + tag = "audio"; + _nc.addClass("tp-audio-html5"); + } + + /* + JASON: + HTML5 Video Mod + */ + // var _funcs = opt.fallbacks.allowHTML5AutoPlayOnAndroid ? "muted playsinline" : ""; + var _funcs = ''; + + if(tag === 'video') { + + if (_R.is_mobile() || _R.isSafari11()) { /* updated to account for Safari 11 */ + + if(_.autoplay === 'on' || _.autoplay === 'true' || _.autoplay === true) { + _funcs = 'muted playsinline autoplay'; + } + else if(_.videoinline == true || _.videoinline === 'true' || _.videoinline === 1) { + _funcs += ' playsinline'; + } + } + } + + var apptxt = '<'+tag+' '+_funcs+' style="object-fit:cover;background-size:cover;visible:hidden;width:100%; height:100%" class="" '+videoloop+' preload="'+videopreload+'">'; + + if (videopreload=="auto") opt.mediapreload = true; + //if (_.videoposter!=undefined) apptxt = apptxt + 'poster="'+_nc.data('videoposter')+'">'; + if (tag === 'video') { + if (videowebm!=undefined && _R.get_browser().toLowerCase()=="firefox") apptxt = apptxt + ''; + if (videomp!=undefined) apptxt = apptxt + ''; + if (videoogv!=undefined) apptxt = apptxt + ''; + } else + if (tag === 'audio') { + if (videomp!=undefined) apptxt = apptxt + ''; + if (videoogv!=undefined) apptxt = apptxt + ''; + } + apptxt = apptxt + ''; + var hfm =""; + if (videoafs==="true" || videoafs===true) + hfm = '
      '; + + if (videocontrols=="controls") + apptxt = apptxt + ('
      '+ + '
      '+ + '
      '+ + '
      '+ + '
      '+ + hfm+ + '
      '); + + _nc.data('videomarkup',apptxt) + _nc.append(apptxt); + + + // START OF HTML5 VIDEOS + if ((_ISM && _nc.data('disablevideoonmobile')==1) ||_R.isIE(8)) _nc.find(tag).remove(); + + // ADD HTML5 VIDEO CONTAINER + _nc.find(tag).each(function(i) { + var video = this, + jvideo = jQuery(this); + + if (!jvideo.parent().hasClass("html5vid")) + jvideo.wrap('
      '); + + var html5vid = jvideo.parent(); + if (html5vid.data('metaloaded') != 1) { + addEvent(video,'loadedmetadata',function(_nc) { + htmlvideoevents(_nc,opt); + _R.resetVideo(_nc,opt); + }(_nc)); + } + }); + break; + case "youtube": + httpprefix = "https"; + /* if (location.protocol === 'https:') + httpprefix = "https"; */ + if (videocontrols=="none") { + vida = vida.replace("controls=1","controls=0"); + if (vida.toLowerCase().indexOf('controls')==-1) + vida = vida+"&controls=0"; + } + + if (_.videoinline===true || _.videoinline==="true" || _.videoinline===1 || _nc.hasClass('rs-background-video-layer') || _nc.data('autoplay') === 'on') + vida = vida + "&playsinline=1"; + var s = getStartSec(_nc.data('videostartat')), + e = getStartSec(_nc.data('videoendat')); + + if (s!=-1) vida=vida+"&start="+s; + if (e!=-1) vida=vida+"&end="+e; + + // CHECK VIDEO ORIGIN, AND EXTEND WITH WWW IN CASE IT IS MISSING ! + var orig = vida.split('origin='+httpprefix+'://'), + vida_new = ""; + + if (orig.length>1) { + vida_new = orig[0]+'origin='+httpprefix+'://'; + if (self.location.href.match(/www/gi) && !orig[1].match(/www/gi)) + vida_new=vida_new+"www." + vida_new=vida_new+orig[1]; + } else { + vida_new = vida; + } + + // youtube/chrome fix Jason (removed "visibility: hidden" from markup) + var yafv = videoafs==="true" || videoafs===true ? "allowfullscreen" : ""; + _nc.data('videomarkup',''); + break; + + case "vimeo": + // if (location.protocol === 'https:') + httpprefix = "https"; + + _nc.data('videomarkup',''); + + break; + } + + //if (videotype=="vimeo" || videotype=="youtube") { + + // IF VIDEOPOSTER EXISTING + var noposteronmobile = _ISM && _nc.data('noposteronmobile')=="on"; + + if (_.videoposter!=undefined && _.videoposter.length>2 && !noposteronmobile) { + if (_nc.find('.tp-videoposter').length==0) + _nc.append('
      '); + if (_nc.find('iframe').length==0) + _nc.find('.tp-videoposter').click(function() { + _R.playVideo(_nc,opt); + if (_ISM) { + if (_nc.data('disablevideoonmobile')==1) return false; + punchgs.TweenLite.to(_nc.find('.tp-videoposter'),0.3,{autoAlpha:0,force3D:"auto",ease:punchgs.Power3.easeInOut}); + punchgs.TweenLite.to(_nc.find('iframe'),0.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut}); + } + }) + } else { + if (_ISM && _nc.data('disablevideoonmobile')==1) return false; + if (_nc.find('iframe').length==0 && (videotype=="youtube" || videotype=="vimeo")) { + _nc.removeData('vimeoplayer'); + _nc.append(_nc.data('videomarkup')); + addVideoListener(_nc,opt,false); + } + } + + // ADD DOTTED OVERLAY IF NEEDED + if (_nc.data('dottedoverlay')!="none" && _nc.data('dottedoverlay')!=undefined && _nc.find('.tp-dottedoverlay').length!=1) + _nc.append('
      '); + + _nc.addClass("HasListener"); + + if (_nc.data('bgvideo')==1) { + + // youtube/chome fix Jason, iframe must be visible for iframe-API Post-Messaging to work + if(_nc.data('ytid')) { + punchgs.TweenLite.set(_nc.find('iframe'),{opacity:0}); + } + else { + punchgs.TweenLite.set(_nc.find('video, iframe'),{autoAlpha:0}); + } + } + + } + +}); + + + + + +////////////////////////////////////////////////////// +// * Revolution Slider - VIDEO / API FUNCTIONS // +// * @version: 1.0 (30.10.2014) // +// * @author ThemePunch // +////////////////////////////////////////////////////// + +function getStartSec(st) { + return st == undefined ? -1 :jQuery.isNumeric(st) ? st : st.split(":").length>1 ? parseInt(st.split(":")[0],0)*60 + parseInt(st.split(":")[1],0) : st; +}; + +// - VIMEO ADD EVENT ///// +var addEvent = function(element, eventName, callback) { + if (element.addEventListener) + element.addEventListener(eventName, callback, {capture:false,passive:true}); + else + element.attachEvent(eventName, callback, {capture:false,passive:true}); +}; + +var getVideoDatas = function(p,t,d) { + var a = {}; + a.video = p; + a.videotype = t; + a.settings = d; + return a; +} + + +var callPrepareCoveredVideo = function(opt,_nc) { + // CARE ABOUT ASPECT RATIO + if (_nc.data('bgvideo')==1 || _nc.data('forcecover')==1) { + if (_nc.data('forcecover')===1) _nc.removeClass("fullscreenvideo").addClass("coverscreenvideo"); + var a =_nc.data('aspectratio'); + if (a===undefined && a.split(":").length<=1) _nc.data('aspectratio','16:9'); + + _R.prepareCoveredVideo(opt,_nc); + } +} + +var addVideoListener = function(_nc,opt,startnow) { + + var _=_nc.data(), + ifr = _nc.find('iframe'), + frameID = "iframe"+Math.round(Math.random()*100000+1), + loop = _.videoloop, + pforv = loop != "loopandnoslidestop"; + + + loop = loop =="loop" || loop =="loopandnoslidestop"; + + callPrepareCoveredVideo(opt,_nc); + + // IF LISTENER DOES NOT EXIST YET + ifr.attr('id',frameID); + + if (startnow) _nc.data('startvideonow',true); + + if (_nc.data('videolistenerexist')!==1) { + switch (_.videotype) { + // YOUTUBE LISTENER + case "youtube": + var player = new YT.Player(frameID, { + events: { + "onStateChange": function(event) { + + var container = _nc.closest('.tp-simpleresponsive'), + videorate = _.videorate, + videostart = _nc.data('videostart'), + fsmode = checkfullscreenEnabled(); + + if (event.data == YT.PlayerState.PLAYING) { + punchgs.TweenLite.to(_nc.find('.tp-videoposter'),0.3,{autoAlpha:0,force3D:"auto",ease:punchgs.Power3.easeInOut}); + punchgs.TweenLite.to(_nc.find('iframe'),0.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut}); + if (_nc.data('volume')=="mute" || _R.lastToggleState(_nc.data('videomutetoggledby')) || opt.globalmute===true) { + player.mute(); + } else { + player.unMute(); + player.setVolume(parseInt(_nc.data('volume'),0) || 75); + } + + opt.videoplaying=true; + addVidtoList(_nc,opt); + if (pforv) + opt.c.trigger('stoptimer'); + else + opt.videoplaying=false; + + opt.c.trigger('revolution.slide.onvideoplay',getVideoDatas(player,"youtube",_nc.data())); + _R.toggleState(_.videotoggledby); + + } else { + if (event.data==0 && loop) { + //player.playVideo(); + var s = getStartSec(_nc.data('videostartat')); + if (s!=-1) player.seekTo(s); + player.playVideo(); + _R.toggleState(_.videotoggledby); + } + + if (!fsmode && (event.data==0 || event.data==2) && ((_nc.data('showcoveronpause')=="on" && _nc.find('.tp-videoposter').length>0) || (_nc.data('bgvideo')===1 && _nc.find('.rs-fullvideo-cover').length>0))) { + if (_nc.data('bgvideo')===1) + punchgs.TweenLite.to(_nc.find('.rs-fullvideo-cover'),0.1,{autoAlpha:1,force3D:"auto",ease:punchgs.Power3.easeInOut}); + else + punchgs.TweenLite.to(_nc.find('.tp-videoposter'),0.1,{autoAlpha:1,force3D:"auto",ease:punchgs.Power3.easeInOut}); + punchgs.TweenLite.to(_nc.find('iframe'),0.1,{autoAlpha:0,ease:punchgs.Power3.easeInOut}); + } + if ((event.data!=-1 && event.data!=3)) { + + opt.videoplaying=false; + opt.tonpause = false; + + remVidfromList(_nc,opt); + container.trigger('starttimer'); + opt.c.trigger('revolution.slide.onvideostop',getVideoDatas(player,"youtube",_nc.data())); + + if (opt.currentLayerVideoIsPlaying==undefined || opt.currentLayerVideoIsPlaying.attr("id") == _nc.attr("id")) + _R.unToggleState(_.videotoggledby); + + } + + if (event.data==0 && _nc.data('nextslideatend')==true) { + exitFullscreen(); + _nc.data('nextslideatend-triggered',1); + opt.c.revnext(); + remVidfromList(_nc,opt); + } else { + remVidfromList(_nc,opt); + opt.videoplaying=false; + container.trigger('starttimer'); + opt.c.trigger('revolution.slide.onvideostop',getVideoDatas(player,"youtube",_nc.data())); + if (opt.currentLayerVideoIsPlaying==undefined || opt.currentLayerVideoIsPlaying.attr("id") == _nc.attr("id")) + _R.unToggleState(_.videotoggledby); + } + } + }, + 'onReady': function(event) { + + /* + Jason, YouTube Autoplay + */ + + var playerMuted, + isVideoMobile = _R.is_mobile(), + isVideoLayer = _nc.hasClass('tp-videolayer'); + + if(isVideoMobile || _R.isSafari11()) { + + var isLayerAutoPlay = isVideoLayer && _nc.data('autoplay') !== 'off'; + if(_nc.hasClass('rs-background-video-layer') || isLayerAutoPlay) { + + var isSpecial = isVideoMobile && isVideoLayer; + if(!isSpecial) { + + playerMuted = true; + player.setVolume(0); + _nc.data('volume', 'mute'); + player.mute(); + + clearTimeout(_nc.data('mobilevideotimr')); + _nc.data('mobilevideotimr', setTimeout(function() {player.playVideo();}, 500)); + + } + + } + + } + + if(!playerMuted && _nc.data('volume')=="mute") { + player.setVolume(0); + player.mute(); + } + + var videorate = _.videorate, + videostart = _nc.data('videostart'); + + _nc.addClass("rs-apiready"); + if (videorate!=undefined) + event.target.setPlaybackRate(parseFloat(videorate)); + + // PLAY VIDEO IF THUMBNAIL HAS BEEN CLICKED + _nc.find('.tp-videoposter').unbind("click"); + _nc.find('.tp-videoposter').click(function() { + if (!_ISM) { + player.playVideo(); + } + }) + + if (_nc.data('startvideonow')) { + + _.player.playVideo(); + var s = getStartSec(_nc.data('videostartat')); + if (s!=-1) _.player.seekTo(s); + //_nc.find('.tp-videoposter').click(); + } + _nc.data('videolistenerexist',1); + } + } + }); + _nc.data('player',player); + break; + + // VIMEO LISTENER + case "vimeo": + var isrc = ifr.attr('src'), + queryParameters = {}, queryString = isrc, + re = /([^&=]+)=([^&]*)/g, m; + // Creates a map with the query string parameters + while (m = re.exec(queryString)) { + queryParameters[decodeURIComponent(m[1])] = decodeURIComponent(m[2]); + } + if (queryParameters['player_id']!=undefined) + isrc = isrc.replace(queryParameters['player_id'],frameID); + else + isrc=isrc+"&player_id="+frameID; + // try{ isrc = isrc.replace('api=0','api=1'); } catch(e) {} + // isrc=isrc+"&api=1"; + isrc = isrc.replace(/&api=0|&api=1/g, ''); + + var isVideoMobile = _R.is_mobile(), + isAutoplay = _nc.data('autoplay'), + toMute = _nc.data('volume')=="mute", + deviceCheck = isVideoMobile || _R.isSafari11(), + isVideoBg = _nc.hasClass('rs-background-video-layer'); + + isAutoplay = isAutoplay === 'on' || isAutoplay === 'true' || isAutoplay === true; + if(isAutoplay && deviceCheck) { + + isrc += '?autoplay=1&autopause=0&muted=1&background=1&playsinline=1'; + _nc.data({vimeoplaysinline: true, volume: 'mute'}); + + } + + ifr.attr('src',isrc); + + var player = _nc.find('iframe')[0], + vimcont = jQuery('#'+frameID), + f; + + if(!_nc.data('vimeoplayer')) { + f = new Vimeo.Player(frameID); + _nc.data('vimeoplayer', f); + } + else { + f = _nc.data('vimeoplayer'); + } + + // Read out the Real Aspect Ratio from Vimeo Video + + f.on('loaded',function(data) { + var newas = {}; + + f.getVideoWidth().then( function(width) { + newas.width = width; + if (newas.width!==undefined && newas.height!==undefined) { + _nc.data('aspectratio',newas.width+":"+newas.height); + _nc.data('vimeoplayerloaded',true); + callPrepareCoveredVideo(opt,_nc); + } + + }); + f.getVideoHeight().then( function(height) { + newas.height = height; + if (newas.width!==undefined && newas.height!==undefined) { + _nc.data('aspectratio',newas.width+":"+newas.height); + _nc.data('vimeoplayerloaded',true); + callPrepareCoveredVideo(opt,_nc); + } + }); + + + + }); + + _nc.addClass("rs-apiready"); + + f.on('play', function(data) { + _nc.data('nextslidecalled',0); + punchgs.TweenLite.to(_nc.find('.tp-videoposter'),0.3,{autoAlpha:0,force3D:"auto",ease:punchgs.Power3.easeInOut}); + punchgs.TweenLite.to(_nc.find('iframe'),0.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut}); + opt.c.trigger('revolution.slide.onvideoplay',getVideoDatas(f,"vimeo",_nc.data())); + opt.videoplaying=true; + + addVidtoList(_nc,opt); + if (pforv) + opt.c.trigger('stoptimer'); + else + opt.videoplaying=false; + + if(!_nc.data('vimeoplaysinline')) { + + if (_nc.data('volume')=="mute" || _R.lastToggleState(_nc.data('videomutetoggledby')) || opt.globalmute===true) + f.setVolume(0); + else + f.setVolume(parseInt(_nc.data('volume'),0)/100 || 0.75); + _R.toggleState(_.videotoggledby); + + } + + }); + + f.on('timeupdate',function(data) { + var et = getStartSec(_nc.data('videoendat')) + _nc.data('currenttime',data.seconds); + + if (et!=0 && (Math.abs(et-data.seconds) <1 && et>data.seconds) && _nc.data('nextslidecalled') != 1) { + if (loop) { + f.play(); + var s = getStartSec(_nc.data('videostartat')); + if (s!=-1) f.setCurrentTime(s); + } else { + if (_nc.data('nextslideatend')==true) { + _nc.data('nextslideatend-triggered',1); + _nc.data('nextslidecalled',1); + opt.c.revnext(); + } + f.pause(); + } + } + }); + + f.on('ended', function(data) { + remVidfromList(_nc,opt); + opt.videoplaying=false; + opt.c.trigger('starttimer'); + opt.c.trigger('revolution.slide.onvideostop',getVideoDatas(f,"vimeo",_nc.data())); + if (_nc.data('nextslideatend')==true) { + _nc.data('nextslideatend-triggered',1); + opt.c.revnext(); + } + if (opt.currentLayerVideoIsPlaying==undefined || opt.currentLayerVideoIsPlaying.attr("id") == _nc.attr("id")) + _R.unToggleState(_.videotoggledby); + + }); + + f.on('pause', function(data) { + if (((_nc.data('showcoveronpause')=="on" && _nc.find('.tp-videoposter').length>0) || (_nc.data('bgvideo')===1 && _nc.find('.rs-fullvideo-cover').length>0))) { + if (_nc.data('bgvideo')===1) + punchgs.TweenLite.to(_nc.find('.rs-fullvideo-cover'),0.1,{autoAlpha:1,force3D:"auto",ease:punchgs.Power3.easeInOut}); + else + punchgs.TweenLite.to(_nc.find('.tp-videoposter'),0.1,{autoAlpha:1,force3D:"auto",ease:punchgs.Power3.easeInOut}); + punchgs.TweenLite.to(_nc.find('iframe'),0.1,{autoAlpha:0,ease:punchgs.Power3.easeInOut}); + } + opt.videoplaying=false; + opt.tonpause = false; + + remVidfromList(_nc,opt); + opt.c.trigger('starttimer'); + opt.c.trigger('revolution.slide.onvideostop',getVideoDatas(f,"vimeo",_nc.data())); + if (opt.currentLayerVideoIsPlaying==undefined || opt.currentLayerVideoIsPlaying.attr("id") == _nc.attr("id")) + _R.unToggleState(_.videotoggledby); + }); + + + + _nc.find('.tp-videoposter').unbind("click"); + _nc.find('.tp-videoposter').click(function() { + if (!_ISM) { + + f.play(); + return false; + } + }) + if (_nc.data('startvideonow')) { + f.play(); + var s = getStartSec(_nc.data('videostartat')); + if (s!=-1) f.setCurrentTime(s); + } + _nc.data('videolistenerexist',1); + + break; + } + } else { + var s = getStartSec(_nc.data('videostartat')); + switch (_.videotype) { + // YOUTUBE LISTENER + case "youtube": + if (startnow) { + _.player.playVideo(); + if (s!=-1) _.player.seekTo() + } + break; + case "vimeo": + + if (startnow) { + + var f = _nc.data('vimeoplayer'); + f.play(); + if (s!=-1) f.seekTo(s); + } + break; + } + } +} + + +var exitFullscreen = function() { + if(document.exitFullscreen) { + document.exitFullscreen(); + } else if(document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } else if(document.webkitExitFullscreen) { + document.webkitExitFullscreen(); + } +} + + +var checkfullscreenEnabled = function() { + try{ + // FF provides nice flag, maybe others will add support for this later on? + if(window['fullScreen'] !== undefined) { + return window.fullScreen; + } + // 5px height margin, just in case (needed by e.g. IE) + var heightMargin = 5; + if(jQuery.browser.webkit && /Apple Computer/.test(navigator.vendor)) { + // Safari in full screen mode shows the navigation bar, + // which is 40px + heightMargin = 42; + } + return screen.width == window.innerWidth && + Math.abs(screen.height - window.innerHeight) < heightMargin; + } catch(e) { + + } + } +///////////////////////////////////////// HTML5 VIDEOS /////////////////////////////////////////// + +var htmlvideoevents = function(_nc,opt,startnow) { + + + + if (_ISM && _nc.data('disablevideoonmobile')==1) return false; + var _ = _nc.data(), + tag = _.audio=="html5" ? "audio" : "video", + jvideo = _nc.find(tag), + video = jvideo[0], + html5vid = jvideo.parent(), + loop = _.videoloop, + pforv = loop != "loopandnoslidestop"; + + loop = loop =="loop" || loop =="loopandnoslidestop"; + + html5vid.data('metaloaded',1); + // FIRST TIME LOADED THE HTML5 VIDEO + + if (_nc.data('bgvideo')==1 && (_.videoloop==="none" || _.videoloop===false)) + pforv = false; + + + + + //PLAY, STOP VIDEO ON CLICK OF PLAY, POSTER ELEMENTS + if (jvideo.attr('control') == undefined ) { + if (_nc.find('.tp-video-play-button').length==0 && !_ISM) + _nc.append('
       
      '); + _nc.find('video, .tp-poster, .tp-video-play-button').click(function() { + if (_nc.hasClass("videoisplaying")) + video.pause(); + else + video.play(); + }) + } + + // PRESET FULLCOVER VIDEOS ON DEMAND + if (_nc.data('forcecover')==1 || _nc.hasClass('fullscreenvideo') || _nc.data('bgvideo')==1) { + if (_nc.data('forcecover')==1 || _nc.data('bgvideo')==1) { + html5vid.addClass("fullcoveredvideo"); + var a = _nc.data('aspectratio'); + if (a===undefined || a.split(':').length==1) _nc.data('aspectratio','16:9'); + + _R.prepareCoveredVideo(opt,_nc); + } + else + html5vid.addClass("fullscreenvideo"); + } + + + // FIND CONTROL BUTTONS IN VIDEO, AND ADD EVENT LISTENERS ON THEM + var playButton = _nc.find('.tp-vid-play-pause')[0], + muteButton = _nc.find('.tp-vid-mute')[0], + fullScreenButton = _nc.find('.tp-vid-full-screen')[0], + seekBar = _nc.find('.tp-seek-bar')[0], + volumeBar = _nc.find('.tp-volume-bar')[0]; + + if (playButton!=undefined) { + // Event listener for the play/pause button + addEvent(playButton,"click", function() { + if (video.paused == true) + video.play(); + else + video.pause(); + }); + } + + if (muteButton!=undefined) { + + // Event listener for the mute button + addEvent(muteButton,"click", function() { + if (video.muted == false) { + video.muted = true; + muteButton.innerHTML = "Unmute"; + } else { + video.muted = false; + muteButton.innerHTML = "Mute"; + } + }); + } + + if (fullScreenButton!=undefined) { + + // Event listener for the full-screen button + if (fullScreenButton) + addEvent(fullScreenButton,"click", function() { + if (video.requestFullscreen) { + video.requestFullscreen(); + } else if (video.mozRequestFullScreen) { + video.mozRequestFullScreen(); // Firefox + } else if (video.webkitRequestFullscreen) { + video.webkitRequestFullscreen(); // Chrome and Safari + } + }); + + } + + if (seekBar !=undefined) { + + // Event listener for the seek bar + addEvent(seekBar,"change", function() { + var time = video.duration * (seekBar.value / 100); + video.currentTime = time; + + }); + + // Pause the video when the seek handle is being dragged + addEvent(seekBar,"mousedown", function() { + _nc.addClass("seekbardragged"); + video.pause(); + + }); + + // Play the video when the seek handle is dropped + addEvent(seekBar,"mouseup", function() { + _nc.removeClass("seekbardragged"); + video.play(); + + }); + } + + addEvent(video,"canplaythrough", function() { + _R.preLoadAudioDone(_nc,opt,"canplaythrough"); + }); + + addEvent(video,"canplay", function() { + _R.preLoadAudioDone(_nc,opt,"canplay"); + }); + + addEvent(video,"progress", function() { + _R.preLoadAudioDone(_nc,opt,"progress"); + }); + + // Update the seek bar as the video plays + addEvent(video,"timeupdate", function() { + + + var value = (100 / video.duration) * video.currentTime, + et = getStartSec(_nc.data('videoendat')), + cs =video.currentTime; + if (seekBar != undefined) + seekBar.value = value; + + if (et!=0 && et!=-1 && (Math.abs(et-cs) <=0.3 && et>cs) && _nc.data('nextslidecalled') != 1) { + + if (loop) { + video.play(); + var s = getStartSec(_nc.data('videostartat')); + if (s!=-1) video.currentTime = s; + } else { + + + if (_nc.data('nextslideatend')==true) { + _nc.data('nextslideatend-triggered',1); + _nc.data('nextslidecalled',1); + opt.just_called_nextslide_at_htmltimer = true; + opt.c.revnext(); + setTimeout(function() { + opt.just_called_nextslide_at_htmltimer = false; + },1000); + } + video.pause(); + } + } + }); + + + if (volumeBar != undefined) { + + // Event listener for the volume bar + addEvent(volumeBar,"change", function() { + // Update the video volume + video.volume = volumeBar.value; + }); + } + + + // VIDEO EVENT LISTENER FOR "PLAY" + addEvent(video,"play",function() { + + _nc.data('nextslidecalled',0); + + var vol = _nc.data('volume'); + vol = vol!=undefined && vol!="mute" ?parseFloat(vol)/100 : vol; + + // JASON + // if (!_ANDROID) { + + if (!_R.is_mobile() && !_R.isSafari11()) { + if (opt.globalmute===true) + video.muted = true; + else + video.muted = false; + + if (vol>1) vol = vol/100; + + if (vol=="mute") + video.muted=true; + else + if (vol!=undefined) + video.volume = vol; + } + + + _nc.addClass("videoisplaying"); + + var tag = _.audio=="html5" ? "audio" : "video"; + + addVidtoList(_nc,opt); + + if (!pforv || tag=="audio") { + opt.videoplaying=false; + if (tag!="audio") opt.c.trigger('starttimer'); + opt.c.trigger('revolution.slide.onvideostop',getVideoDatas(video,"html5",_)); + } else { + opt.videoplaying=true; + opt.c.trigger('stoptimer'); + opt.c.trigger('revolution.slide.onvideoplay',getVideoDatas(video,"html5",_)); + } + + punchgs.TweenLite.to(_nc.find('.tp-videoposter'),0.3,{autoAlpha:0,force3D:"auto",ease:punchgs.Power3.easeInOut}); + punchgs.TweenLite.to(_nc.find(tag),0.3,{autoAlpha:1,display:"block",ease:punchgs.Power3.easeInOut}); + + var playButton = _nc.find('.tp-vid-play-pause')[0], + muteButton = _nc.find('.tp-vid-mute')[0]; + if (playButton!=undefined) + playButton.innerHTML = "Pause"; + if (muteButton!=undefined && video.muted) + muteButton.innerHTML = "Unmute"; + + _R.toggleState(_.videotoggledby); + }); + + // VIDEO EVENT LISTENER FOR "PAUSE" + addEvent(video,"pause",function(e) { + + var tag = _.audio=="html5" ? "audio" : "video", + fsmode = checkfullscreenEnabled(); + + + + if (!fsmode && _nc.find('.tp-videoposter').length>0 && _nc.data('showcoveronpause')=="on" && !_nc.hasClass("seekbardragged")) { + punchgs.TweenLite.to(_nc.find('.tp-videoposter'),0.3,{autoAlpha:1,force3D:"auto",ease:punchgs.Power3.easeInOut}); + punchgs.TweenLite.to(_nc.find(tag),0.3,{autoAlpha:0,ease:punchgs.Power3.easeInOut}); + } + + _nc.removeClass("videoisplaying"); + opt.videoplaying=false; + remVidfromList(_nc,opt); + if (tag!="audio") opt.c.trigger('starttimer'); + opt.c.trigger('revolution.slide.onvideostop',getVideoDatas(video,"html5",_nc.data())); + var playButton = _nc.find('.tp-vid-play-pause')[0]; + if (playButton!=undefined) + playButton.innerHTML = "Play"; + + if (opt.currentLayerVideoIsPlaying==undefined || opt.currentLayerVideoIsPlaying.attr("id") == _nc.attr("id")) + _R.unToggleState(_.videotoggledby); + }); + + // VIDEO EVENT LISTENER FOR "END" + + + addEvent(video,"ended",function() { + exitFullscreen(); + + remVidfromList(_nc,opt); + opt.videoplaying=false; + remVidfromList(_nc,opt); + if (tag!="audio") opt.c.trigger('starttimer'); + opt.c.trigger('revolution.slide.onvideostop',getVideoDatas(video,"html5",_nc.data())); + + + if (_nc.data('nextslideatend')===true && video.currentTime>0) { + + if (!opt.just_called_nextslide_at_htmltimer==true) { + _nc.data('nextslideatend-triggered',1); + opt.c.revnext(); + opt.just_called_nextslide_at_htmltimer = true; + } + setTimeout(function() { + opt.just_called_nextslide_at_htmltimer = false; + },1500) + } + _nc.removeClass("videoisplaying"); + + + }); +} + + + +var addVidtoList = function(_nc,opt) { + + if (opt.playingvideos == undefined) opt.playingvideos = new Array(); + + // STOP OTHER VIDEOS + if (_nc.data('stopallvideos')) { + if (opt.playingvideos != undefined && opt.playingvideos.length>0) { + opt.lastplayedvideos = jQuery.extend(true,[],opt.playingvideos); + jQuery.each(opt.playingvideos,function(i,_nc) { + _R.stopVideo(_nc,opt); + }); + } + } + opt.playingvideos.push(_nc); + opt.currentLayerVideoIsPlaying = _nc; + +} + + +var remVidfromList = function(_nc,opt) { + if (opt.playingvideos != undefined && jQuery.inArray(_nc,opt.playingvideos)>=0) + opt.playingvideos.splice(jQuery.inArray(_nc,opt.playingvideos),1); +} + + + + + + + +})(jQuery); \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/js/index.php b/think.greaterchiangmai.com/public/revolution/js/index.php new file mode 100644 index 0000000..e69de29 diff --git a/think.greaterchiangmai.com/public/revolution/js/jquery.themepunch.enablelog.js b/think.greaterchiangmai.com/public/revolution/js/jquery.themepunch.enablelog.js new file mode 100644 index 0000000..3b73f58 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/js/jquery.themepunch.enablelog.js @@ -0,0 +1 @@ +window.tplogs = true; \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/js/jquery.themepunch.revolution.min.js b/think.greaterchiangmai.com/public/revolution/js/jquery.themepunch.revolution.min.js new file mode 100644 index 0000000..d487294 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/js/jquery.themepunch.revolution.min.js @@ -0,0 +1,7 @@ +/************************************************************************** + * jquery.themepunch.revolution.js - jQuery Plugin for Revolution Slider + * @version: 5.4.8 (10.06.2018) + * @requires jQuery v1.7 or later (tested on 1.9) + * @author ThemePunch +**************************************************************************/ +!function(jQuery,undefined){"use strict";var version={core:"5.4.8","revolution.extensions.actions.min.js":"2.1.0","revolution.extensions.carousel.min.js":"1.2.1","revolution.extensions.kenburn.min.js":"1.3.1","revolution.extensions.layeranimation.min.js":"3.6.5","revolution.extensions.navigation.min.js":"1.3.5","revolution.extensions.parallax.min.js":"2.2.3","revolution.extensions.slideanims.min.js":"1.8","revolution.extensions.video.min.js":"2.2.2"};jQuery.fn.extend({revolution:function(i){var e={delay:9e3,responsiveLevels:4064,visibilityLevels:[2048,1024,778,480],gridwidth:960,gridheight:500,minHeight:0,autoHeight:"off",sliderType:"standard",sliderLayout:"auto",fullScreenAutoWidth:"off",fullScreenAlignForce:"off",fullScreenOffsetContainer:"",fullScreenOffset:"0",hideCaptionAtLimit:0,hideAllCaptionAtLimit:0,hideSliderAtLimit:0,disableProgressBar:"off",stopAtSlide:-1,stopAfterLoops:-1,shadow:0,dottedOverlay:"none",startDelay:0,lazyType:"smart",spinner:"spinner0",shuffle:"off",viewPort:{enable:!1,outof:"wait",visible_area:"60%",presize:!1},fallbacks:{isJoomla:!1,panZoomDisableOnMobile:"off",simplifyAll:"on",nextSlideOnWindowFocus:"off",disableFocusListener:!0,ignoreHeightChanges:"off",ignoreHeightChangesSize:0,allowHTML5AutoPlayOnAndroid:!0},parallax:{type:"off",levels:[10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85],origo:"enterpoint",speed:400,bgparallax:"off",opacity:"on",disable_onmobile:"off",ddd_shadow:"on",ddd_bgfreeze:"off",ddd_overflow:"visible",ddd_layer_overflow:"visible",ddd_z_correction:65,ddd_path:"mouse"},scrolleffect:{fade:"off",blur:"off",scale:"off",grayscale:"off",maxblur:10,on_layers:"off",on_slidebg:"off",on_static_layers:"off",on_parallax_layers:"off",on_parallax_static_layers:"off",direction:"both",multiplicator:1.35,multiplicator_layers:.5,tilt:30,disable_on_mobile:"on"},carousel:{easing:punchgs.Power3.easeInOut,speed:800,showLayersAllTime:"off",horizontal_align:"center",vertical_align:"center",infinity:"on",space:0,maxVisibleItems:3,stretch:"off",fadeout:"on",maxRotation:0,minScale:0,vary_fade:"off",vary_rotation:"on",vary_scale:"off",border_radius:"0px",padding_top:0,padding_bottom:0},navigation:{keyboardNavigation:"off",keyboard_direction:"horizontal",mouseScrollNavigation:"off",onHoverStop:"on",touch:{touchenabled:"off",touchOnDesktop:"off",swipe_treshold:75,swipe_min_touches:1,drag_block_vertical:!1,swipe_direction:"horizontal"},arrows:{style:"",enable:!1,hide_onmobile:!1,hide_onleave:!0,hide_delay:200,hide_delay_mobile:1200,hide_under:0,hide_over:9999,tmp:"",rtl:!1,left:{h_align:"left",v_align:"center",h_offset:20,v_offset:0,container:"slider"},right:{h_align:"right",v_align:"center",h_offset:20,v_offset:0,container:"slider"}},bullets:{container:"slider",rtl:!1,style:"",enable:!1,hide_onmobile:!1,hide_onleave:!0,hide_delay:200,hide_delay_mobile:1200,hide_under:0,hide_over:9999,direction:"horizontal",h_align:"left",v_align:"center",space:0,h_offset:20,v_offset:0,tmp:''},thumbnails:{container:"slider",rtl:!1,style:"",enable:!1,width:100,height:50,min_width:100,wrapper_padding:2,wrapper_color:"#f5f5f5",wrapper_opacity:1,tmp:'',visibleAmount:5,hide_onmobile:!1,hide_onleave:!0,hide_delay:200,hide_delay_mobile:1200,hide_under:0,hide_over:9999,direction:"horizontal",span:!1,position:"inner",space:2,h_align:"left",v_align:"center",h_offset:20,v_offset:0},tabs:{container:"slider",rtl:!1,style:"",enable:!1,width:100,min_width:100,height:50,wrapper_padding:10,wrapper_color:"#f5f5f5",wrapper_opacity:1,tmp:'',visibleAmount:5,hide_onmobile:!1,hide_onleave:!0,hide_delay:200,hide_delay_mobile:1200,hide_under:0,hide_over:9999,direction:"horizontal",span:!1,space:0,position:"inner",h_align:"left",v_align:"center",h_offset:20,v_offset:0}},extensions:"extensions/",extensions_suffix:".min.js",debugMode:!1};return i=jQuery.extend(!0,{},e,i),this.each(function(){var e=jQuery(this);i.minHeight=i.minHeight!=undefined?parseInt(i.minHeight,0):i.minHeight,i.scrolleffect.on="on"===i.scrolleffect.fade||"on"===i.scrolleffect.scale||"on"===i.scrolleffect.blur||"on"===i.scrolleffect.grayscale,"hero"==i.sliderType&&e.find(">ul>li").each(function(e){0!! Error at loading Slider Revolution 5.0 Extrensions.'+i.errorm+"").show(),!1;_R.migration!=undefined&&(i=_R.migration(e,i)),punchgs.force3D=!0,"on"!==i.simplifyAll&&punchgs.TweenLite.lagSmoothing(1e3,16),prepareOptions(e,i),initSlider(e,i)}),e[0].opt=i,waitForScripts(e,i)})},getRSVersion:function(e){if(!0===e)return jQuery("body").data("tp_rs_version");var i=jQuery("body").data("tp_rs_version"),t="";for(var a in t+="---------------------------------------------------------\n",t+=" Currently Loaded Slider Revolution & SR Modules :\n",t+="---------------------------------------------------------\n",i)t+=i[a].alias+": "+i[a].ver+"\n";return t+="---------------------------------------------------------\n"},revremoveslide:function(r){return this.each(function(){var e=jQuery(this),i=e[0].opt;if(!(r<0||r>i.slideamount)&&e!=undefined&&0ul"),runSlider(e,e[0].opt),!0)},revnext:function(){return this.each(function(){var e=jQuery(this);e!=undefined&&0li").length},revcurrentslide:function(){var e=jQuery(this);if(e!=undefined&&0li").length},revshowslide:function(i){return this.each(function(){var e=jQuery(this);e!=undefined&&0').appendTo(jQuery("body"));t.html("\x3c!--[if "+(i||"")+" IE "+(e||"")+"]> =n.slideamount?0:a:(i=jQuery.isNumeric(i)?i:parseInt(i.split("to")[1],0))<0?0:i>n.slideamount-1?n.slideamount-1:i,e.find(".tp-revslider-slidesli:eq("+a+")").addClass("next-revslide")):i&&e.find(".tp-revslider-slidesli").each(function(){var e=jQuery(this);e.data("index")===i&&e.addClass("next-revslide")}),a=e.find(".next-revslide").index(),e.trigger("revolution.nextslide.waiting"),t===a&&t===n.last_shown_slide||a!==t&&-1!=a?swapSlide(e):e.find(".next-revslide").removeClass("next-revslide")},slotSize:function(e,i){i.slotw=Math.ceil(i.width/i.slots),"fullscreen"==i.sliderLayout?i.sloth=Math.ceil(jQuery(window).height()/i.slots):i.sloth=Math.ceil(i.height/i.slots),"on"==i.autoHeight&&e!==undefined&&""!==e&&(i.sloth=Math.ceil(e.height()/i.slots))},setSize:function(e){var i=(e.top_outer||0)+(e.bottom_outer||0),t=parseInt(e.carousel.padding_top||0,0),a=parseInt(e.carousel.padding_bottom||0,0),n=e.gridheight[e.curWinRange],r=0,o=-1===e.nextSlide||e.nextSlide===undefined?0:e.nextSlide;if(e.paddings=e.paddings===undefined?{top:parseInt(e.c.parent().css("paddingTop"),0)||0,bottom:parseInt(e.c.parent().css("paddingBottom"),0)||0}:e.paddings,e.rowzones&&0e.gridheight[e.curWinRange]&&"on"!=e.autoHeight&&(e.height=e.gridheight[e.curWinRange]),"fullscreen"==e.sliderLayout||e.infullscreenmode){e.height=e.bw*e.gridheight[e.curWinRange];e.c.parent().width();var l=jQuery(window).height();if(e.fullScreenOffsetContainer!=undefined){try{var d=e.fullScreenOffsetContainer.split(",");d&&jQuery.each(d,function(e,i){l=0parseInt(e.height,0)?r:e.height}else e.minHeight!=undefined&&e.heightparseInt(e.height,0)?r:e.height,e.c.height(e.height);var c={height:t+a+i+e.height+e.paddings.top+e.paddings.bottom};e.c.closest(".forcefullwidth_wrapper_tp_banner").find(".tp-fullwidth-forcer").css(c),e.c.closest(".rev_slider_wrapper").css(c),setScale(e)},enterInViewPort:function(t){t.waitForCountDown&&(countDown(t.c,t),t.waitForCountDown=!1),t.waitForFirstSlide&&(swapSlide(t.c),t.waitForFirstSlide=!1,setTimeout(function(){t.c.removeClass("tp-waitforfirststart")},500)),"playing"!=t.sliderlaststatus&&t.sliderlaststatus!=undefined||t.c.trigger("starttimer"),t.lastplayedvideos!=undefined&&0Local Filesystem Detected !
      Put this to your header:"),console.warn("Local Filesystem detected !"),t.errorm=t.errorm+'
      <script type="text/javascript" src="'+t.jsFileLocation+i+t.extensions_suffix+'"></script>',console.warn(t.jsFileLocation+i+t.extensions_suffix+" could not be loaded !"),console.warn("Please use a local Server or work online or make sure that you load all needed Libraries manually in your Document."),console.log(" "),!(t.modulesfailing=!0)):(jQuery.ajax({url:t.jsFileLocation+i+t.extensions_suffix+"?version="+version.core,dataType:"script",cache:!0,error:function(e){console.warn("Slider Revolution 5.0 Error !"),console.error("Failure at Loading:"+i+t.extensions_suffix+" on Path:"+t.jsFileLocation),console.info(e)}}),void jQuery("body").data(i,!0)))},getNeededScripts=function(t,e){var i=new Object,a=t.navigation;return i.kenburns=!1,i.parallax=!1,i.carousel=!1,i.navigation=!1,i.videos=!1,i.actions=!1,i.layeranim=!1,i.migration=!1,e.data("version")&&e.data("version").toString().match(/5./gi)?(e.find("img").each(function(){"on"==jQuery(this).data("kenburns")&&(i.kenburns=!0)}),("carousel"==t.sliderType||"on"==a.keyboardNavigation||"on"==a.mouseScrollNavigation||"on"==a.touch.touchenabled||a.arrows.enable||a.bullets.enable||a.thumbnails.enable||a.tabs.enable)&&(i.navigation=!0),e.find(".tp-caption, .tp-static-layer, .rs-background-video-layer").each(function(){var e=jQuery(this);(e.data("ytid")!=undefined||0'),container.find(">ul").addClass("tp-revslider-mainul"),opt.c=container,opt.ul=container.find(".tp-revslider-mainul"),opt.ul.find(">li").each(function(e){var i=jQuery(this);"on"==i.data("hideslideonmobile")&&_ISM&&i.remove(),(i.data("invisible")||!0===i.data("invisible"))&&(i.addClass("tp-invisible-slide"),i.appendTo(opt.ul))}),opt.addons!=undefined&&0li").not(".tp-invisible-slide").length,opt.realslideamount=opt.ul.find(">li").length,opt.slayers=container.find(".tp-static-layers"),opt.slayers.data("index","staticlayers"),1!=opt.waitForInit&&(container[0].opt=opt,runSlider(container,opt))},onFullScreenChange=function(){jQuery("body").data("rs-fullScreenMode",!jQuery("body").data("rs-fullScreenMode")),jQuery("body").data("rs-fullScreenMode")&&setTimeout(function(){jQuery(window).trigger("resize")},200)},runSlider=function(t,x){if(x.sliderisrunning=!0,x.ul.find(">li").each(function(e){jQuery(this).data("originalindex",e)}),x.allli=x.ul.find(">li"),jQuery.each(x.allli,function(e,i){(i=jQuery(i)).data("origindex",i.index())}),x.li=x.ul.find(">li").not(".tp-invisible-slide"),"on"==x.shuffle){var e=new Object,i=x.ul.find(">li:first-child");e.fstransition=i.data("fstransition"),e.fsmasterspeed=i.data("fsmasterspeed"),e.fsslotamount=i.data("fsslotamount");for(var a=0;ali:eq("+n+")").prependTo(x.ul)}var r=x.ul.find(">li:first-child");r.data("fstransition",e.fstransition),r.data("fsmasterspeed",e.fsmasterspeed),r.data("fsslotamount",e.fsslotamount),x.allli=x.ul.find(">li"),x.li=x.ul.find(">li").not(".tp-invisible-slide")}if(x.inli=x.ul.find(">li.tp-invisible-slide"),x.thumbs=new Array,x.slots=4,x.act=-1,x.firststart=1,x.loadqueue=new Array,x.syncload=0,x.conw=t.width(),x.conh=t.height(),1":c+"data-actions='"+("scroll_under"===l?'[{"event":"click","action":"scrollbelow","offset":"100px","delay":"0"}]':"prev"===l?'[{"event":"click","action":"jumptoslide","slide":"prev","delay":"0.2"}]':"next"===l?'[{"event":"click","action":"jumptoslide","slide":"next","delay":"0.2"}]':'[{"event":"click","action":"jumptoslide","slide":"'+l+'","delay":"0.2"}]')+"'"+u+" >",c+='img").first()).data("kenburns","off")})),x.desktop=!navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry|BB10|mobi|tablet|opera mini|nexus 7)/i),x.autoHeight="fullscreen"==x.sliderLayout?"on":x.autoHeight,"fullwidth"==x.sliderLayout&&"off"==x.autoHeight&&t.css({maxHeight:x.gridheight[x.curWinRange]+"px"}),"auto"!=x.sliderLayout&&0==t.closest(".forcefullwidth_wrapper_tp_banner").length&&("fullscreen"!==x.sliderLayout||"on"!=x.fullScreenAutoWidth)){var o=t.parent(),s=o.css("marginBottom"),l=o.css("marginTop"),d=t.attr("id")+"_forcefullwidth";s=s===undefined?0:s,l=l===undefined?0:l,o.wrap('
      '),t.closest(".forcefullwidth_wrapper_tp_banner").append('
      '),t.parent().css({marginTop:"0px",marginBottom:"0px"}),t.parent().css({position:"absolute"})}if(x.shadow!==undefined&&0'),t.parent().find(".tp-shadowcover").css({backgroundColor:t.parent().css("backgroundColor"),backgroundImage:t.parent().css("backgroundImage")})),setCurWinRange(x),setCurWinRange(x,!0),!t.hasClass("revslider-initialised")){t.addClass("revslider-initialised"),t.addClass("tp-simpleresponsive"),t.attr("id")==undefined&&t.attr("id","revslider-"+Math.round(1e3*Math.random()+5)),checkIDS(x,t),x.firefox13=!1,x.ie=!jQuery.support.opacity,x.ie9=9==document.documentMode,x.origcd=x.delay;var c=jQuery.fn.jquery.split("."),u=parseFloat(c[0]),p=parseFloat(c[1]);parseFloat(c[2]||"0");1==u&&p<7&&t.html('
      The Current Version of jQuery:'+c+"
      Please update your jQuery Version to min. 1.7 in Case you wish to use the Revolution Slider Plugin
      "),1
      '),s&&x.scrolleffect.on&&("on"===x.scrolleffect.on_parallax_layers&&i.isparallaxlayer||"on"===x.scrolleffect.on_layers&&!i.isparallaxlayer)&&x.scrolleffect.layers.push(n.parent()),l&&x.scrolleffect.layers.push(n.parent()),"column"===h&&(n.append(''),n.closest(".tp-parallax-wrap").append('
      '));var b=n.closest(".tp-loop-wrap");jQuery.each(["pendulum","rotate","slideloop","pulse","wave"],function(e,i){var t=n.find(".rs-"+i),a=t.data()||"";""!=a&&(b.data(a),b.addClass("rs-"+i),t.children(0).unwrap(),n.data("loopanimation","on"))}),n.attr("id")===undefined&&n.attr("id","layer-"+Math.round(999999999*Math.random())),checkIDS(x,n),punchgs.TweenLite.set(n,{visibility:"hidden"})}var _=n.data("actions");_!==undefined&&_R.checkActions(n,x,_),checkHoverDependencies(n,x),_R.checkVideoApis&&(j=_R.checkVideoApis(n,x,j)),r||1!=t&&"true"!=t&&"1sttime"!=a||"loopandnoslidestop"==o||n.closest("li.tp-revslider-slidesli").addClass("rs-pause-timer-once"),r||1!=a&&"true"!=a&&"on"!=a&&"no1sttime"!=a||"loopandnoslidestop"==o||n.closest("li.tp-revslider-slidesli").addClass("rs-pause-timer-always")}),t[0].addEventListener("mouseenter",function(){t.trigger("tp-mouseenter"),x.overcontainer=!0},{passive:!0}),t[0].addEventListener("mouseover",function(){t.trigger("tp-mouseover"),x.overcontainer=!0},{passive:!0}),t[0].addEventListener("mouseleave",function(){t.trigger("tp-mouseleft"),x.overcontainer=!1},{passive:!0}),t.find(".tp-caption video").each(function(e){var i=jQuery(this);i.removeClass("video-js vjs-default-skin"),i.attr("preload",""),i.css({display:"none"})}),"standard"!==x.sliderType&&(x.lazyType="all"),loadImages(t.find(".tp-static-layers"),x,0,!0),waitForCurrentImages(t.find(".tp-static-layers"),x,function(){t.find(".tp-static-layers img").each(function(){var e=jQuery(this),i=e.data("lazyload")!=undefined?e.data("lazyload"):e.attr("src"),t=getLoadObj(x,i);e.attr("src",t.src)})}),x.rowzones=[],x.allli.each(function(e){var i=jQuery(this);punchgs.TweenLite.set(this,{perspective:6e3}),x.rowzones[e]=[],i.find(".rev_row_zone").each(function(){x.rowzones[e].push(jQuery(this))}),"all"!=x.lazyType&&("smart"!=x.lazyType||0!=e&&1!=e&&e!=x.slideamount&&e!=x.slideamount-1)||(loadImages(i,x,e),waitForCurrentImages(i,x,function(){}))});var f=getUrlVars("#")[0];if(f.length<9&&1x.slideamount&&(h=x.slideamount),x.startWithSlide=h-1}t.append('
      '),x.loader=t.find(".tp-loader"),0===t.find(".tp-bannertimer").length&&t.append(''),t.find(".tp-bannertimer").css({width:"0%"}),x.ul.css({display:"block"}),prepareSlides(t,x),("off"!==x.parallax.type||x.scrolleffect.on)&&_R.checkForParallax&&_R.checkForParallax(t,x),_R.setSize(x),"hero"!==x.sliderType&&_R.createNavigation&&_R.createNavigation(t,x),_R.resizeThumbsTabs&&_R.resizeThumbsTabs&&_R.resizeThumbsTabs(x),contWidthManager(x);var g=x.viewPort;x.inviewport=!1,g!=undefined&&g.enable&&(jQuery.isNumeric(g.visible_area)||-1!==g.visible_area.indexOf("%")&&(g.visible_area=parseInt(g.visible_area)/100),_R.scrollTicker&&_R.scrollTicker(x,t)),"carousel"===x.sliderType&&_R.prepareCarousel&&(punchgs.TweenLite.set(x.ul,{opacity:0}),_R.prepareCarousel(x,new punchgs.TimelineLite,undefined,0),x.onlyPreparedSlide=!0),setTimeout(function(){if(!g.enable||g.enable&&x.inviewport||g.enable&&!x.inviewport&&"wait"==!g.outof)swapSlide(t);else if(x.c.addClass("tp-waitforfirststart"),x.waitForFirstSlide=!0,g.presize){var e=jQuery(x.li[0]);loadImages(e,x,0,!0),waitForCurrentImages(e.find(".tp-layers"),x,function(){_R.animateTheCaptions({slide:e,opt:x,preset:!0})})}_R.manageNavigation&&_R.manageNavigation(x),1x.fallbacks.ignoreHeightChangesSize):e=i!=x.lastwindowheight}(t.outerWidth(!0)!=x.width||t.is(":hidden")||e)&&(x.lastwindowheight=jQuery(window).height(),containerResized(t,x))}),hideSliderUnder(t,x),contWidthManager(x),x.fallbacks.disableFocusListener||"true"==x.fallbacks.disableFocusListener||!0===x.fallbacks.disableFocusListener||(t.addClass("rev_redraw_on_blurfocus"),tabBlurringCheck())}},cArray=function(e,i){if(!jQuery.isArray(e)){var t=e;(e=new Array).push(t)}if(e.lengthe.bw?e.bh=e.bw:e.bw=e.bh,(1');var i='
      ';u.c.parent().prepend(i),u.c.parent().append(i),_R.prepareCarousel(u)}e.parent().css({overflow:"visible"}),u.allli.find(">img").each(function(e){var i=jQuery(this),t=i.closest("li"),a=t.find(".rs-background-video-layer");a.addClass("defaultvid").css({zIndex:30}),i.addClass("defaultimg"),"on"==u.fallbacks.panZoomDisableOnMobile&&_ISM&&(i.data("kenburns","off"),i.data("bgfit","cover"));var n=t.data("mediafilter");n="none"===n||n===undefined?"":n,i.wrap('
      '),a.appendTo(t.find(".slotholder"));var r=i.data();i.closest(".slotholder").data(r),0');var o=i.attr("src");r.src=o,r.bgfit=r.bgfit||"cover",r.bgrepeat=r.bgrepeat||"no-repeat",r.bgposition=r.bgposition||"center center";i.closest(".slotholder");var s=i.data("bgcolor"),l="";l=s!==undefined&&0<=s.indexOf("gradient")?'"background:'+s+';width:100%;height:100%;"':'"background-color:'+s+";background-repeat:"+r.bgrepeat+";background-image:url("+o+");background-size:"+r.bgfit+";background-position:"+r.bgposition+';width:100%;height:100%;"',i.data("mediafilter",n),n="on"===i.data("kenburns")?"":n;var d=jQuery('
      ')}),u.allslotholder=u.c.find(".slotholder_fadeoutwrap"))},removeSlots=function(e,i,t,a){i.removePrepare=i.removePrepare+a,t.find(".slot, .slot-circle-wrapper").each(function(){jQuery(this).remove()}),i.transition=0,i.removePrepare=0},cutParams=function(e){var i=e;return e!=undefined&&0'),e.find(".tp-svg-innercontainer").append(t.innerHTML));e.data("loaded",!0)}if(t&&t.progress&&t.progress.match(/inprogress|inload|prepared/g)&&(!t.error&&jQuery.now()-e.data("start-to-load")<5e3?l=!0:(t.progress="failed",t.reported_img||(t.reported_img=!0,console.warn(i+" Could not be loaded !")))),1==s.youtubeapineeded&&(!window.YT||YT.Player==undefined)&&(l=!0,5e3'+r+"")}if(1==s.vimeoapineeded&&!window.Vimeo&&(l=!0,5e3'+r+"")}}),!_ISM&&s.audioqueue&&0')}),swapSlideProgress(n,e)})},swapSlideProgress=function(e,i){var t=i.find(".active-revslide"),a=i.find(".processing-revslide"),n=t.find(".slotholder"),r=a.find(".slotholder"),o=i[0].opt;o.tonpause=!1,o.cd=0,clearTimeout(o.loadertimer),o.loader!==undefined&&o.loader.css({display:"none"}),_R.setSize(o),_R.slotSize(e,o),_R.manageNavigation&&_R.manageNavigation(o);var s={};s.nextslide=a,s.currentslide=t,i.trigger("revolution.slide.onbeforeswap",s),o.transition=1,o.videoplaying=!1,a.data("delay")!=undefined?(o.cd=0,o.delay=a.data("delay")):o.delay=o.origcd,"true"==a.data("ssop")||!0===a.data("ssop")?o.ssop=!0:o.ssop=!1,i.trigger("nulltimer");var l=t.index(),d=a.index();o.sdir=do.rowzones.length?o.rowzones.length:p),o.rowzones!=undefined&&0i.hideSliderAtLimit&&1!=i.tonpause&&1!=i.overnav&&1!=i.ssop&&(1===i.noloopanymore||i.viewPort.enable&&!i.inviewport||(t.css({visibility:"visible"}),t[0].tween.resume(),i.sliderstatus="playing")),"on"==i.disableProgressBar&&t.css({visibility:"hidden"}),_R.toggleState(i.slidertoggledby))}),e.on("restarttimer",function(){if(!i.forcepause_viatoggle){var e=jQuery(this).find(".tp-bannertimer");if(i.mouseoncontainer&&"on"==i.navigation.onHoverStop&&!_ISM)return!1;1===i.noloopanymore||i.viewPort.enable&&!i.inviewport||1==i.ssop||(e.css({visibility:"visible"}),e[0].tween.kill(),e[0].tween=punchgs.TweenLite.fromTo(e,i.delay/1e3,{width:"0%"},{force3D:"auto",width:"100%",ease:punchgs.Linear.easeNone,onComplete:a,delay:1}),i.sliderstatus="playing"),"on"==i.disableProgressBar&&e.css({visibility:"hidden"}),_R.toggleState(i.slidertoggledby)}}),e.on("nulltimer",function(){t[0].tween.kill(),t[0].tween=punchgs.TweenLite.fromTo(t,i.delay/1e3,{width:"0%"},{force3D:"auto",width:"100%",ease:punchgs.Linear.easeNone,onComplete:a,delay:1}),t[0].tween.pause(0),"on"==i.disableProgressBar&&t.css({visibility:"hidden"}),i.sliderstatus="paused"});var a=function(){0==jQuery("body").find(e).length&&(removeAllListeners(e,i),clearInterval(i.cdint)),e.trigger("revolution.slide.slideatend"),1==e.data("conthover-changed")&&(i.conthover=e.data("conthover"),e.data("conthover-changed",0)),_R.callingNewSlide(e,1)};t[0].tween=punchgs.TweenLite.fromTo(t,i.delay/1e3,{width:"0%"},{force3D:"auto",width:"100%",ease:punchgs.Linear.easeNone,onComplete:a,delay:1}),10){return}var bf=be.originalEvent?be.originalEvent:be;var bd,bg=bf.touches,bc=bg?bg[0]:bf;aa=g;if(bg){X=bg.length}else{be.preventDefault()}ah=0;aQ=null;aK=null;ac=0;a2=0;a0=0;H=1;ar=0;aR=ak();N=ab();S();if(!bg||(X===aw.fingers||aw.fingers===i)||aY()){aj(0,bc);U=au();if(X==2){aj(1,bg[1]);a2=a0=av(aR[0].start,aR[1].start)}if(aw.swipeStatus||aw.pinchStatus){bd=P(bf,aa)}}else{bd=false}if(bd===false){aa=q;P(bf,aa);return bd}else{if(aw.hold){ag=setTimeout(f.proxy(function(){aS.trigger("hold",[bf.target]);if(aw.hold){bd=aw.hold.call(aS,bf,bf.target)}},this),aw.longTapThreshold)}ap(true)}return null}function a4(bf){var bi=bf.originalEvent?bf.originalEvent:bf;if(aa===h||aa===q||an()){return}var be,bj=bi.touches,bd=bj?bj[0]:bi;var bg=aI(bd);a3=au();if(bj){X=bj.length}if(aw.hold){clearTimeout(ag)}aa=k;if(X==2){if(a2==0){aj(1,bj[1]);a2=a0=av(aR[0].start,aR[1].start)}else{aI(bj[1]);a0=av(aR[0].end,aR[1].end);aK=at(aR[0].end,aR[1].end)}H=a8(a2,a0);ar=Math.abs(a2-a0)}if((X===aw.fingers||aw.fingers===i)||!bj||aY()){aQ=aM(bg.start,bg.end);am(bf,aQ);ah=aT(bg.start,bg.end);ac=aN();aJ(aQ,ah);if(aw.swipeStatus||aw.pinchStatus){be=P(bi,aa)}if(!aw.triggerOnTouchEnd||aw.triggerOnTouchLeave){var bc=true;if(aw.triggerOnTouchLeave){var bh=aZ(this);bc=F(bg.end,bh)}if(!aw.triggerOnTouchEnd&&bc){aa=aD(k)}else{if(aw.triggerOnTouchLeave&&!bc){aa=aD(h)}}if(aa==q||aa==h){P(bi,aa)}}}else{aa=q;P(bi,aa)}if(be===false){aa=q;P(bi,aa)}}function M(bc){var bd=bc.originalEvent?bc.originalEvent:bc,be=bd.touches;if(be){if(be.length){G();return true}}if(an()){X=ae}a3=au();ac=aN();if(bb()||!ao()){aa=q;P(bd,aa)}else{if(aw.triggerOnTouchEnd||(aw.triggerOnTouchEnd==false&&aa===k)){bc.preventDefault();aa=h;P(bd,aa)}else{if(!aw.triggerOnTouchEnd&&a7()){aa=h;aG(bd,aa,B)}else{if(aa===k){aa=q;P(bd,aa)}}}}ap(false);return null}function ba(){X=0;a3=0;U=0;a2=0;a0=0;H=1;S();ap(false)}function L(bc){var bd=bc.originalEvent?bc.originalEvent:bc;if(aw.triggerOnTouchLeave){aa=aD(h);P(bd,aa)}}function aL(){aS.unbind(K,aO);aS.unbind(aE,ba);aS.unbind(az,a4);aS.unbind(V,M);if(T){aS.unbind(T,L)}ap(false)}function aD(bg){var bf=bg;var be=aB();var bd=ao();var bc=bb();if(!be||bc){bf=q}else{if(bd&&bg==k&&(!aw.triggerOnTouchEnd||aw.triggerOnTouchLeave)){bf=h}else{if(!bd&&bg==h&&aw.triggerOnTouchLeave){bf=q}}}return bf}function P(be,bc){var bd,bf=be.touches;if((J()||W())||(Q()||aY())){if(J()||W()){bd=aG(be,bc,l)}if((Q()||aY())&&bd!==false){bd=aG(be,bc,t)}}else{if(aH()&&bd!==false){bd=aG(be,bc,j)}else{if(aq()&&bd!==false){bd=aG(be,bc,b)}else{if(ai()&&bd!==false){bd=aG(be,bc,B)}}}}if(bc===q){ba(be)}if(bc===h){if(bf){if(!bf.length){ba(be)}}else{ba(be)}}return bd}function aG(bf,bc,be){var bd;if(be==l){aS.trigger("swipeStatus",[bc,aQ||null,ah||0,ac||0,X,aR]);if(aw.swipeStatus){bd=aw.swipeStatus.call(aS,bf,bc,aQ||null,ah||0,ac||0,X,aR);if(bd===false){return false}}if(bc==h&&aW()){aS.trigger("swipe",[aQ,ah,ac,X,aR]);if(aw.swipe){bd=aw.swipe.call(aS,bf,aQ,ah,ac,X,aR);if(bd===false){return false}}switch(aQ){case p:aS.trigger("swipeLeft",[aQ,ah,ac,X,aR]);if(aw.swipeLeft){bd=aw.swipeLeft.call(aS,bf,aQ,ah,ac,X,aR)}break;case o:aS.trigger("swipeRight",[aQ,ah,ac,X,aR]);if(aw.swipeRight){bd=aw.swipeRight.call(aS,bf,aQ,ah,ac,X,aR)}break;case e:aS.trigger("swipeUp",[aQ,ah,ac,X,aR]);if(aw.swipeUp){bd=aw.swipeUp.call(aS,bf,aQ,ah,ac,X,aR)}break;case x:aS.trigger("swipeDown",[aQ,ah,ac,X,aR]);if(aw.swipeDown){bd=aw.swipeDown.call(aS,bf,aQ,ah,ac,X,aR)}break}}}if(be==t){aS.trigger("pinchStatus",[bc,aK||null,ar||0,ac||0,X,H,aR]);if(aw.pinchStatus){bd=aw.pinchStatus.call(aS,bf,bc,aK||null,ar||0,ac||0,X,H,aR);if(bd===false){return false}}if(bc==h&&a9()){switch(aK){case c:aS.trigger("pinchIn",[aK||null,ar||0,ac||0,X,H,aR]);if(aw.pinchIn){bd=aw.pinchIn.call(aS,bf,aK||null,ar||0,ac||0,X,H,aR)}break;case A:aS.trigger("pinchOut",[aK||null,ar||0,ac||0,X,H,aR]);if(aw.pinchOut){bd=aw.pinchOut.call(aS,bf,aK||null,ar||0,ac||0,X,H,aR)}break}}}if(be==B){if(bc===q||bc===h){clearTimeout(aX);clearTimeout(ag);if(Z()&&!I()){O=au();aX=setTimeout(f.proxy(function(){O=null;aS.trigger("tap",[bf.target]);if(aw.tap){bd=aw.tap.call(aS,bf,bf.target)}},this),aw.doubleTapThreshold)}else{O=null;aS.trigger("tap",[bf.target]);if(aw.tap){bd=aw.tap.call(aS,bf,bf.target)}}}}else{if(be==j){if(bc===q||bc===h){clearTimeout(aX);O=null;aS.trigger("doubletap",[bf.target]);if(aw.doubleTap){bd=aw.doubleTap.call(aS,bf,bf.target)}}}else{if(be==b){if(bc===q||bc===h){clearTimeout(aX);O=null;aS.trigger("longtap",[bf.target]);if(aw.longTap){bd=aw.longTap.call(aS,bf,bf.target)}}}}}return bd}function ao(){var bc=true;if(aw.threshold!==null){bc=ah>=aw.threshold}return bc}function bb(){var bc=false;if(aw.cancelThreshold!==null&&aQ!==null){bc=(aU(aQ)-ah)>=aw.cancelThreshold}return bc}function af(){if(aw.pinchThreshold!==null){return ar>=aw.pinchThreshold}return true}function aB(){var bc;if(aw.maxTimeThreshold){if(ac>=aw.maxTimeThreshold){bc=false}else{bc=true}}else{bc=true}return bc}function am(bc,bd){if(aw.preventDefaultEvents===false){return}if(aw.allowPageScroll===m){bc.preventDefault()}else{var be=aw.allowPageScroll===s;switch(bd){case p:if((aw.swipeLeft&&be)||(!be&&aw.allowPageScroll!=E)){bc.preventDefault()}break;case o:if((aw.swipeRight&&be)||(!be&&aw.allowPageScroll!=E)){bc.preventDefault()}break;case e:if((aw.swipeUp&&be)||(!be&&aw.allowPageScroll!=u)){bc.preventDefault()}break;case x:if((aw.swipeDown&&be)||(!be&&aw.allowPageScroll!=u)){bc.preventDefault()}break}}}function a9(){var bd=aP();var bc=Y();var be=af();return bd&&bc&&be}function aY(){return !!(aw.pinchStatus||aw.pinchIn||aw.pinchOut)}function Q(){return !!(a9()&&aY())}function aW(){var bf=aB();var bh=ao();var be=aP();var bc=Y();var bd=bb();var bg=!bd&&bc&&be&&bh&&bf;return bg}function W(){return !!(aw.swipe||aw.swipeStatus||aw.swipeLeft||aw.swipeRight||aw.swipeUp||aw.swipeDown)}function J(){return !!(aW()&&W())}function aP(){return((X===aw.fingers||aw.fingers===i)||!a)}function Y(){return aR[0].end.x!==0}function a7(){return !!(aw.tap)}function Z(){return !!(aw.doubleTap)}function aV(){return !!(aw.longTap)}function R(){if(O==null){return false}var bc=au();return(Z()&&((bc-O)<=aw.doubleTapThreshold))}function I(){return R()}function ay(){return((X===1||!a)&&(isNaN(ah)||ahaw.longTapThreshold)&&(ah=0)){return p}else{if((be<=360)&&(be>=315)){return p}else{if((be>=135)&&(be<=225)){return o}else{if((be>45)&&(be<135)){return x}else{return e}}}}}function au(){var bc=new Date();return bc.getTime()}function aZ(bc){bc=f(bc);var be=bc.offset();var bd={left:be.left,right:be.left+bc.outerWidth(),top:be.top,bottom:be.top+bc.outerHeight()};return bd}function F(bc,bd){return(bc.x>bd.left&&bc.xbd.top&&bc.y-1;)(l=q[f[s]]||new r(f[s],[])).gsClass?(i[s]=l.gsClass,t--):j&&l.sc.push(this);if(0===t&&g){if(m=("com.greensock."+d).split("."),n=m.pop(),o=k(m.join("."))[n]=this.gsClass=g.apply(g,i),h)if(e[n]=c[n]=o,p="undefined"!=typeof module&&module.exports,!p&&"function"==typeof define&&define.amd)define((a.GreenSockAMDPath?a.GreenSockAMDPath+"/":"")+d.split(".").pop(),[],function(){return o});else if(p)if(d===b){module.exports=c[b]=o;for(s in c)o[s]=c[s]}else c[b]&&(c[b][n]=o);for(s=0;s-1;)for(f=i[j],e=d?t("easing."+f,null,!0):l.easing[f]||{},g=k.length;--g>-1;)h=k[g],w[f+"."+h]=w[h+f]=e[h]=a.getRatio?a:a[h]||new a};for(h=v.prototype,h._calcEnd=!1,h.getRatio=function(a){if(this._func)return this._params[0]=a,this._func.apply(null,this._params);var b=this._type,c=this._power,d=1===b?1-a:2===b?a:.5>a?2*a:2*(1-a);return 1===c?d*=d:2===c?d*=d*d:3===c?d*=d*d*d:4===c&&(d*=d*d*d*d),1===b?1-d:2===b?d:.5>a?d/2:1-d/2},f=["Linear","Quad","Cubic","Quart","Quint,Strong"],g=f.length;--g>-1;)h=f[g]+",Power"+g,x(new v(null,null,1,g),h,"easeOut",!0),x(new v(null,null,2,g),h,"easeIn"+(0===g?",easeNone":"")),x(new v(null,null,3,g),h,"easeInOut");w.linear=l.easing.Linear.easeIn,w.swing=l.easing.Quad.easeInOut;var y=t("events.EventDispatcher",function(a){this._listeners={},this._eventTarget=a||this});h=y.prototype,h.addEventListener=function(a,b,c,d,e){e=e||0;var f,g,h=this._listeners[a],k=0;for(this!==i||j||i.wake(),null==h&&(this._listeners[a]=h=[]),g=h.length;--g>-1;)f=h[g],f.c===b&&f.s===c?h.splice(g,1):0===k&&f.pr-1;)if(d[c].c===b)return void d.splice(c,1)},h.dispatchEvent=function(a){var b,c,d,e=this._listeners[a];if(e)for(b=e.length,b>1&&(e=e.slice(0)),c=this._eventTarget;--b>-1;)d=e[b],d&&(d.up?d.c.call(d.s||c,{type:a,target:c}):d.c.call(d.s||c))};var z=a.requestAnimationFrame,A=a.cancelAnimationFrame,B=Date.now||function(){return(new Date).getTime()},C=B();for(f=["ms","moz","webkit","o"],g=f.length;--g>-1&&!z;)z=a[f[g]+"RequestAnimationFrame"],A=a[f[g]+"CancelAnimationFrame"]||a[f[g]+"CancelRequestAnimationFrame"];t("Ticker",function(a,b){var c,e,f,g,h,k=this,l=B(),n=b!==!1&&z?"auto":!1,p=500,q=33,r="tick",s=function(a){var b,d,i=B()-C;i>p&&(l+=i-q),C+=i,k.time=(C-l)/1e3,b=k.time-h,(!c||b>0||a===!0)&&(k.frame++,h+=b+(b>=g?.004:g-b),d=!0),a!==!0&&(f=e(s)),d&&k.dispatchEvent(r)};y.call(k),k.time=k.frame=0,k.tick=function(){s(!0)},k.lagSmoothing=function(a,b){p=a||1/m,q=Math.min(b,p,0)},k.sleep=function(){null!=f&&(n&&A?A(f):clearTimeout(f),e=o,f=null,k===i&&(j=!1))},k.wake=function(a){null!==f?k.sleep():a?l+=-C+(C=B()):k.frame>10&&(C=B()-p+5),e=0===c?o:n&&z?z:function(a){return setTimeout(a,1e3*(h-k.time)+1|0)},k===i&&(j=!0),s(2)},k.fps=function(a){return arguments.length?(c=a,g=1/(c||60),h=this.time+g,void k.wake()):c},k.useRAF=function(a){return arguments.length?(k.sleep(),n=a,void k.fps(c)):n},k.fps(a),setTimeout(function(){"auto"===n&&k.frame<5&&"hidden"!==d.visibilityState&&k.useRAF(!1)},1500)}),h=l.Ticker.prototype=new l.events.EventDispatcher,h.constructor=l.Ticker;var D=t("core.Animation",function(a,b){if(this.vars=b=b||{},this._duration=this._totalDuration=a||0,this._delay=Number(b.delay)||0,this._timeScale=1,this._active=b.immediateRender===!0,this.data=b.data,this._reversed=b.reversed===!0,W){j||i.wake();var c=this.vars.useFrames?V:W;c.add(this,c._time),this.vars.paused&&this.paused(!0)}});i=D.ticker=new l.Ticker,h=D.prototype,h._dirty=h._gc=h._initted=h._paused=!1,h._totalTime=h._time=0,h._rawPrevTime=-1,h._next=h._last=h._onUpdate=h._timeline=h.timeline=null,h._paused=!1;var E=function(){j&&B()-C>2e3&&i.wake(),setTimeout(E,2e3)};E(),h.play=function(a,b){return null!=a&&this.seek(a,b),this.reversed(!1).paused(!1)},h.pause=function(a,b){return null!=a&&this.seek(a,b),this.paused(!0)},h.resume=function(a,b){return null!=a&&this.seek(a,b),this.paused(!1)},h.seek=function(a,b){return this.totalTime(Number(a),b!==!1)},h.restart=function(a,b){return this.reversed(!1).paused(!1).totalTime(a?-this._delay:0,b!==!1,!0)},h.reverse=function(a,b){return null!=a&&this.seek(a||this.totalDuration(),b),this.reversed(!0).paused(!1)},h.render=function(a,b,c){},h.invalidate=function(){return this._time=this._totalTime=0,this._initted=this._gc=!1,this._rawPrevTime=-1,(this._gc||!this.timeline)&&this._enabled(!0),this},h.isActive=function(){var a,b=this._timeline,c=this._startTime;return!b||!this._gc&&!this._paused&&b.isActive()&&(a=b.rawTime(!0))>=c&&a-1;)"{self}"===a[b]&&(c[b]=this);return c},h._callback=function(a){var b=this.vars,c=b[a],d=b[a+"Params"],e=b[a+"Scope"]||b.callbackScope||this,f=d?d.length:0;switch(f){case 0:c.call(e);break;case 1:c.call(e,d[0]);break;case 2:c.call(e,d[0],d[1]);break;default:c.apply(e,d)}},h.eventCallback=function(a,b,c,d){if("on"===(a||"").substr(0,2)){var e=this.vars;if(1===arguments.length)return e[a];null==b?delete e[a]:(e[a]=b,e[a+"Params"]=p(c)&&-1!==c.join("").indexOf("{self}")?this._swapSelfInParams(c):c,e[a+"Scope"]=d),"onUpdate"===a&&(this._onUpdate=b)}return this},h.delay=function(a){return arguments.length?(this._timeline.smoothChildTiming&&this.startTime(this._startTime+a-this._delay),this._delay=a,this):this._delay},h.duration=function(a){return arguments.length?(this._duration=this._totalDuration=a,this._uncache(!0),this._timeline.smoothChildTiming&&this._time>0&&this._timethis._duration?this._duration:a,b)):this._time},h.totalTime=function(a,b,c){if(j||i.wake(),!arguments.length)return this._totalTime;if(this._timeline){if(0>a&&!c&&(a+=this.totalDuration()),this._timeline.smoothChildTiming){this._dirty&&this.totalDuration();var d=this._totalDuration,e=this._timeline;if(a>d&&!c&&(a=d),this._startTime=(this._paused?this._pauseTime:e._time)-(this._reversed?d-a:a)/this._timeScale,e._dirty||this._uncache(!1),e._timeline)for(;e._timeline;)e._timeline._time!==(e._startTime+e._totalTime)/e._timeScale&&e.totalTime(e._totalTime,!0),e=e._timeline}this._gc&&this._enabled(!0,!1),(this._totalTime!==a||0===this._duration)&&(J.length&&Y(),this.render(a,b,!1),J.length&&Y())}return this},h.progress=h.totalProgress=function(a,b){var c=this.duration();return arguments.length?this.totalTime(c*a,b):c?this._time/c:this.ratio},h.startTime=function(a){return arguments.length?(a!==this._startTime&&(this._startTime=a,this.timeline&&this.timeline._sortChildren&&this.timeline.add(this,a-this._delay)),this):this._startTime},h.endTime=function(a){return this._startTime+(0!=a?this.totalDuration():this.duration())/this._timeScale},h.timeScale=function(a){if(!arguments.length)return this._timeScale;if(a=a||m,this._timeline&&this._timeline.smoothChildTiming){var b=this._pauseTime,c=b||0===b?b:this._timeline.totalTime();this._startTime=c-(c-this._startTime)*this._timeScale/a}return this._timeScale=a,this._uncache(!1)},h.reversed=function(a){return arguments.length?(a!=this._reversed&&(this._reversed=a,this.totalTime(this._timeline&&!this._timeline.smoothChildTiming?this.totalDuration()-this._totalTime:this._totalTime,!0)),this):this._reversed},h.paused=function(a){if(!arguments.length)return this._paused;var b,c,d=this._timeline;return a!=this._paused&&d&&(j||a||i.wake(),b=d.rawTime(),c=b-this._pauseTime,!a&&d.smoothChildTiming&&(this._startTime+=c,this._uncache(!1)),this._pauseTime=a?b:null,this._paused=a,this._active=this.isActive(),!a&&0!==c&&this._initted&&this.duration()&&(b=d.smoothChildTiming?this._totalTime:(b-this._startTime)/this._timeScale,this.render(b,b===this._totalTime,!0))),this._gc&&!a&&this._enabled(!0,!1),this};var F=t("core.SimpleTimeline",function(a){D.call(this,0,a),this.autoRemoveChildren=this.smoothChildTiming=!0});h=F.prototype=new D,h.constructor=F,h.kill()._gc=!1,h._first=h._last=h._recent=null,h._sortChildren=!1,h.add=h.insert=function(a,b,c,d){var e,f;if(a._startTime=Number(b||0)+a._delay,a._paused&&this!==a._timeline&&(a._pauseTime=a._startTime+(this.rawTime()-a._startTime)/a._timeScale),a.timeline&&a.timeline._remove(a,!0),a.timeline=a._timeline=this,a._gc&&a._enabled(!0,!0),e=this._last,this._sortChildren)for(f=a._startTime;e&&e._startTime>f;)e=e._prev;return e?(a._next=e._next,e._next=a):(a._next=this._first,this._first=a),a._next?a._next._prev=a:this._last=a,a._prev=e,this._recent=a,this._timeline&&this._uncache(!0),this},h._remove=function(a,b){return a.timeline===this&&(b||a._enabled(!1,!0),a._prev?a._prev._next=a._next:this._first===a&&(this._first=a._next),a._next?a._next._prev=a._prev:this._last===a&&(this._last=a._prev),a._next=a._prev=a.timeline=null,a===this._recent&&(this._recent=this._last),this._timeline&&this._uncache(!0)),this},h.render=function(a,b,c){var d,e=this._first;for(this._totalTime=this._time=this._rawPrevTime=a;e;)d=e._next,(e._active||a>=e._startTime&&!e._paused)&&(e._reversed?e.render((e._dirty?e.totalDuration():e._totalDuration)-(a-e._startTime)*e._timeScale,b,c):e.render((a-e._startTime)*e._timeScale,b,c)),e=d},h.rawTime=function(){return j||i.wake(),this._totalTime};var G=t("TweenLite",function(b,c,d){if(D.call(this,c,d),this.render=G.prototype.render,null==b)throw"Cannot tween a null target.";this.target=b="string"!=typeof b?b:G.selector(b)||b;var e,f,g,h=b.jquery||b.length&&b!==a&&b[0]&&(b[0]===a||b[0].nodeType&&b[0].style&&!b.nodeType),i=this.vars.overwrite;if(this._overwrite=i=null==i?U[G.defaultOverwrite]:"number"==typeof i?i>>0:U[i],(h||b instanceof Array||b.push&&p(b))&&"number"!=typeof b[0])for(this._targets=g=n(b),this._propLookup=[],this._siblings=[],e=0;e1&&_(f,this,null,1,this._siblings[e])):(f=g[e--]=G.selector(f),"string"==typeof f&&g.splice(e+1,1)):g.splice(e--,1);else this._propLookup={},this._siblings=Z(b,this,!1),1===i&&this._siblings.length>1&&_(b,this,null,1,this._siblings);(this.vars.immediateRender||0===c&&0===this._delay&&this.vars.immediateRender!==!1)&&(this._time=-m,this.render(Math.min(0,-this._delay)))},!0),H=function(b){return b&&b.length&&b!==a&&b[0]&&(b[0]===a||b[0].nodeType&&b[0].style&&!b.nodeType)},I=function(a,b){var c,d={};for(c in a)T[c]||c in b&&"transform"!==c&&"x"!==c&&"y"!==c&&"width"!==c&&"height"!==c&&"className"!==c&&"border"!==c||!(!Q[c]||Q[c]&&Q[c]._autoCSS)||(d[c]=a[c],delete a[c]);a.css=d};h=G.prototype=new D,h.constructor=G,h.kill()._gc=!1,h.ratio=0,h._firstPT=h._targets=h._overwrittenProps=h._startAt=null,h._notifyPluginsOfEnabled=h._lazy=!1,G.version="1.19.1",G.defaultEase=h._ease=new v(null,null,1,1),G.defaultOverwrite="auto",G.ticker=i,G.autoSleep=120,G.lagSmoothing=function(a,b){i.lagSmoothing(a,b)},G.selector=a.$||a.jQuery||function(b){var c=a.$||a.jQuery;return c?(G.selector=c,c(b)):"undefined"==typeof d?b:d.querySelectorAll?d.querySelectorAll(b):d.getElementById("#"===b.charAt(0)?b.substr(1):b)};var J=[],K={},L=/(?:(-|-=|\+=)?\d*\.?\d*(?:e[\-+]?\d+)?)[0-9]/gi,M=function(a){for(var b,c=this._firstPT,d=1e-6;c;)b=c.blob?1===a?this.end:a?this.join(""):this.start:c.c*a+c.s,c.m?b=c.m(b,this._target||c.t):d>b&&b>-d&&!c.blob&&(b=0),c.f?c.fp?c.t[c.p](c.fp,b):c.t[c.p](b):c.t[c.p]=b,c=c._next},N=function(a,b,c,d){var e,f,g,h,i,j,k,l=[],m=0,n="",o=0;for(l.start=a,l.end=b,a=l[0]=a+"",b=l[1]=b+"",c&&(c(l),a=l[0],b=l[1]),l.length=0,e=a.match(L)||[],f=b.match(L)||[],d&&(d._next=null,d.blob=1,l._firstPT=l._applyPT=d),i=f.length,h=0;i>h;h++)k=f[h],j=b.substr(m,b.indexOf(k,m)-m),n+=j||!h?j:",",m+=j.length,o?o=(o+1)%5:"rgba("===j.substr(-5)&&(o=1),k===e[h]||e.length<=h?n+=k:(n&&(l.push(n),n=""),g=parseFloat(e[h]),l.push(g),l._firstPT={_next:l._firstPT,t:l,p:l.length-1,s:g,c:("="===k.charAt(1)?parseInt(k.charAt(0)+"1",10)*parseFloat(k.substr(2)):parseFloat(k)-g)||0,f:0,m:o&&4>o?Math.round:0}),m+=k.length;return n+=b.substr(m),n&&l.push(n),l.setRatio=M,l},O=function(a,b,c,d,e,f,g,h,i){"function"==typeof d&&(d=d(i||0,a));var j,k=typeof a[b],l="function"!==k?"":b.indexOf("set")||"function"!=typeof a["get"+b.substr(3)]?b:"get"+b.substr(3),m="get"!==c?c:l?g?a[l](g):a[l]():a[b],n="string"==typeof d&&"="===d.charAt(1),o={t:a,p:b,s:m,f:"function"===k,pg:0,n:e||b,m:f?"function"==typeof f?f:Math.round:0,pr:0,c:n?parseInt(d.charAt(0)+"1",10)*parseFloat(d.substr(2)):parseFloat(d)-m||0};return("number"!=typeof m||"number"!=typeof d&&!n)&&(g||isNaN(m)||!n&&isNaN(d)||"boolean"==typeof m||"boolean"==typeof d?(o.fp=g,j=N(m,n?o.s+o.c:d,h||G.defaultStringFilter,o),o={t:j,p:"setRatio",s:0,c:1,f:2,pg:0,n:e||b,pr:0,m:0}):(o.s=parseFloat(m),n||(o.c=parseFloat(d)-o.s||0))),o.c?((o._next=this._firstPT)&&(o._next._prev=o),this._firstPT=o,o):void 0},P=G._internals={isArray:p,isSelector:H,lazyTweens:J,blobDif:N},Q=G._plugins={},R=P.tweenLookup={},S=0,T=P.reservedProps={ease:1,delay:1,overwrite:1,onComplete:1,onCompleteParams:1,onCompleteScope:1,useFrames:1,runBackwards:1,startAt:1,onUpdate:1,onUpdateParams:1,onUpdateScope:1,onStart:1,onStartParams:1,onStartScope:1,onReverseComplete:1,onReverseCompleteParams:1,onReverseCompleteScope:1,onRepeat:1,onRepeatParams:1,onRepeatScope:1,easeParams:1,yoyo:1,immediateRender:1,repeat:1,repeatDelay:1,data:1,paused:1,reversed:1,autoCSS:1,lazy:1,onOverwrite:1,callbackScope:1,stringFilter:1,id:1},U={none:0,all:1,auto:2,concurrent:3,allOnStart:4,preexisting:5,"true":1,"false":0},V=D._rootFramesTimeline=new F,W=D._rootTimeline=new F,X=30,Y=P.lazyRender=function(){var a,b=J.length;for(K={};--b>-1;)a=J[b],a&&a._lazy!==!1&&(a.render(a._lazy[0],a._lazy[1],!0),a._lazy=!1);J.length=0};W._startTime=i.time,V._startTime=i.frame,W._active=V._active=!0,setTimeout(Y,1),D._updateRoot=G.render=function(){var a,b,c;if(J.length&&Y(),W.render((i.time-W._startTime)*W._timeScale,!1,!1),V.render((i.frame-V._startTime)*V._timeScale,!1,!1),J.length&&Y(),i.frame>=X){X=i.frame+(parseInt(G.autoSleep,10)||120);for(c in R){for(b=R[c].tweens,a=b.length;--a>-1;)b[a]._gc&&b.splice(a,1);0===b.length&&delete R[c]}if(c=W._first,(!c||c._paused)&&G.autoSleep&&!V._first&&1===i._listeners.tick.length){for(;c&&c._paused;)c=c._next;c||i.sleep()}}},i.addEventListener("tick",D._updateRoot);var Z=function(a,b,c){var d,e,f=a._gsTweenID;if(R[f||(a._gsTweenID=f="t"+S++)]||(R[f]={target:a,tweens:[]}),b&&(d=R[f].tweens,d[e=d.length]=b,c))for(;--e>-1;)d[e]===b&&d.splice(e,1);return R[f].tweens},$=function(a,b,c,d){var e,f,g=a.vars.onOverwrite;return g&&(e=g(a,b,c,d)),g=G.onOverwrite,g&&(f=g(a,b,c,d)),e!==!1&&f!==!1},_=function(a,b,c,d,e){var f,g,h,i;if(1===d||d>=4){for(i=e.length,f=0;i>f;f++)if((h=e[f])!==b)h._gc||h._kill(null,a,b)&&(g=!0);else if(5===d)break;return g}var j,k=b._startTime+m,l=[],n=0,o=0===b._duration;for(f=e.length;--f>-1;)(h=e[f])===b||h._gc||h._paused||(h._timeline!==b._timeline?(j=j||aa(b,0,o),0===aa(h,j,o)&&(l[n++]=h)):h._startTime<=k&&h._startTime+h.totalDuration()/h._timeScale>k&&((o||!h._initted)&&k-h._startTime<=2e-10||(l[n++]=h)));for(f=n;--f>-1;)if(h=l[f],2===d&&h._kill(c,a,b)&&(g=!0),2!==d||!h._firstPT&&h._initted){if(2!==d&&!$(h,b))continue;h._enabled(!1,!1)&&(g=!0)}return g},aa=function(a,b,c){for(var d=a._timeline,e=d._timeScale,f=a._startTime;d._timeline;){if(f+=d._startTime,e*=d._timeScale,d._paused)return-100;d=d._timeline}return f/=e,f>b?f-b:c&&f===b||!a._initted&&2*m>f-b?m:(f+=a.totalDuration()/a._timeScale/e)>b+m?0:f-b-m};h._init=function(){var a,b,c,d,e,f,g=this.vars,h=this._overwrittenProps,i=this._duration,j=!!g.immediateRender,k=g.ease;if(g.startAt){this._startAt&&(this._startAt.render(-1,!0),this._startAt.kill()),e={};for(d in g.startAt)e[d]=g.startAt[d];if(e.overwrite=!1,e.immediateRender=!0,e.lazy=j&&g.lazy!==!1,e.startAt=e.delay=null,this._startAt=G.to(this.target,0,e),j)if(this._time>0)this._startAt=null;else if(0!==i)return}else if(g.runBackwards&&0!==i)if(this._startAt)this._startAt.render(-1,!0),this._startAt.kill(),this._startAt=null;else{0!==this._time&&(j=!1),c={};for(d in g)T[d]&&"autoCSS"!==d||(c[d]=g[d]);if(c.overwrite=0,c.data="isFromStart",c.lazy=j&&g.lazy!==!1,c.immediateRender=j,this._startAt=G.to(this.target,0,c),j){if(0===this._time)return}else this._startAt._init(),this._startAt._enabled(!1),this.vars.immediateRender&&(this._startAt=null)}if(this._ease=k=k?k instanceof v?k:"function"==typeof k?new v(k,g.easeParams):w[k]||G.defaultEase:G.defaultEase,g.easeParams instanceof Array&&k.config&&(this._ease=k.config.apply(k,g.easeParams)),this._easeType=this._ease._type,this._easePower=this._ease._power,this._firstPT=null,this._targets)for(f=this._targets.length,a=0;f>a;a++)this._initProps(this._targets[a],this._propLookup[a]={},this._siblings[a],h?h[a]:null,a)&&(b=!0);else b=this._initProps(this.target,this._propLookup,this._siblings,h,0);if(b&&G._onPluginEvent("_onInitAllProps",this),h&&(this._firstPT||"function"!=typeof this.target&&this._enabled(!1,!1)),g.runBackwards)for(c=this._firstPT;c;)c.s+=c.c,c.c=-c.c,c=c._next;this._onUpdate=g.onUpdate,this._initted=!0},h._initProps=function(b,c,d,e,f){var g,h,i,j,k,l;if(null==b)return!1;K[b._gsTweenID]&&Y(),this.vars.css||b.style&&b!==a&&b.nodeType&&Q.css&&this.vars.autoCSS!==!1&&I(this.vars,b);for(g in this.vars)if(l=this.vars[g],T[g])l&&(l instanceof Array||l.push&&p(l))&&-1!==l.join("").indexOf("{self}")&&(this.vars[g]=l=this._swapSelfInParams(l,this));else if(Q[g]&&(j=new Q[g])._onInitTween(b,this.vars[g],this,f)){for(this._firstPT=k={_next:this._firstPT,t:j,p:"setRatio",s:0,c:1,f:1,n:g,pg:1,pr:j._priority,m:0},h=j._overwriteProps.length;--h>-1;)c[j._overwriteProps[h]]=this._firstPT;(j._priority||j._onInitAllProps)&&(i=!0),(j._onDisable||j._onEnable)&&(this._notifyPluginsOfEnabled=!0),k._next&&(k._next._prev=k)}else c[g]=O.call(this,b,g,"get",l,g,0,null,this.vars.stringFilter,f);return e&&this._kill(e,b)?this._initProps(b,c,d,e,f):this._overwrite>1&&this._firstPT&&d.length>1&&_(b,this,c,this._overwrite,d)?(this._kill(c,b),this._initProps(b,c,d,e,f)):(this._firstPT&&(this.vars.lazy!==!1&&this._duration||this.vars.lazy&&!this._duration)&&(K[b._gsTweenID]=!0),i)},h.render=function(a,b,c){var d,e,f,g,h=this._time,i=this._duration,j=this._rawPrevTime;if(a>=i-1e-7&&a>=0)this._totalTime=this._time=i,this.ratio=this._ease._calcEnd?this._ease.getRatio(1):1,this._reversed||(d=!0,e="onComplete",c=c||this._timeline.autoRemoveChildren),0===i&&(this._initted||!this.vars.lazy||c)&&(this._startTime===this._timeline._duration&&(a=0),(0>j||0>=a&&a>=-1e-7||j===m&&"isPause"!==this.data)&&j!==a&&(c=!0,j>m&&(e="onReverseComplete")),this._rawPrevTime=g=!b||a||j===a?a:m);else if(1e-7>a)this._totalTime=this._time=0,this.ratio=this._ease._calcEnd?this._ease.getRatio(0):0,(0!==h||0===i&&j>0)&&(e="onReverseComplete",d=this._reversed),0>a&&(this._active=!1,0===i&&(this._initted||!this.vars.lazy||c)&&(j>=0&&(j!==m||"isPause"!==this.data)&&(c=!0),this._rawPrevTime=g=!b||a||j===a?a:m)),this._initted||(c=!0);else if(this._totalTime=this._time=a,this._easeType){var k=a/i,l=this._easeType,n=this._easePower;(1===l||3===l&&k>=.5)&&(k=1-k),3===l&&(k*=2),1===n?k*=k:2===n?k*=k*k:3===n?k*=k*k*k:4===n&&(k*=k*k*k*k),1===l?this.ratio=1-k:2===l?this.ratio=k:.5>a/i?this.ratio=k/2:this.ratio=1-k/2}else this.ratio=this._ease.getRatio(a/i);if(this._time!==h||c){if(!this._initted){if(this._init(),!this._initted||this._gc)return;if(!c&&this._firstPT&&(this.vars.lazy!==!1&&this._duration||this.vars.lazy&&!this._duration))return this._time=this._totalTime=h,this._rawPrevTime=j,J.push(this),void(this._lazy=[a,b]);this._time&&!d?this.ratio=this._ease.getRatio(this._time/i):d&&this._ease._calcEnd&&(this.ratio=this._ease.getRatio(0===this._time?0:1))}for(this._lazy!==!1&&(this._lazy=!1),this._active||!this._paused&&this._time!==h&&a>=0&&(this._active=!0),0===h&&(this._startAt&&(a>=0?this._startAt.render(a,b,c):e||(e="_dummyGS")),this.vars.onStart&&(0!==this._time||0===i)&&(b||this._callback("onStart"))),f=this._firstPT;f;)f.f?f.t[f.p](f.c*this.ratio+f.s):f.t[f.p]=f.c*this.ratio+f.s,f=f._next;this._onUpdate&&(0>a&&this._startAt&&a!==-1e-4&&this._startAt.render(a,b,c),b||(this._time!==h||d||c)&&this._callback("onUpdate")),e&&(!this._gc||c)&&(0>a&&this._startAt&&!this._onUpdate&&a!==-1e-4&&this._startAt.render(a,b,c),d&&(this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!b&&this.vars[e]&&this._callback(e),0===i&&this._rawPrevTime===m&&g!==m&&(this._rawPrevTime=0))}},h._kill=function(a,b,c){if("all"===a&&(a=null),null==a&&(null==b||b===this.target))return this._lazy=!1,this._enabled(!1,!1);b="string"!=typeof b?b||this._targets||this.target:G.selector(b)||b;var d,e,f,g,h,i,j,k,l,m=c&&this._time&&c._startTime===this._startTime&&this._timeline===c._timeline;if((p(b)||H(b))&&"number"!=typeof b[0])for(d=b.length;--d>-1;)this._kill(a,b[d],c)&&(i=!0);else{if(this._targets){for(d=this._targets.length;--d>-1;)if(b===this._targets[d]){h=this._propLookup[d]||{},this._overwrittenProps=this._overwrittenProps||[],e=this._overwrittenProps[d]=a?this._overwrittenProps[d]||{}:"all";break}}else{if(b!==this.target)return!1;h=this._propLookup,e=this._overwrittenProps=a?this._overwrittenProps||{}:"all"}if(h){if(j=a||h,k=a!==e&&"all"!==e&&a!==h&&("object"!=typeof a||!a._tempKill),c&&(G.onOverwrite||this.vars.onOverwrite)){for(f in j)h[f]&&(l||(l=[]),l.push(f));if((l||!a)&&!$(this,c,b,l))return!1}for(f in j)(g=h[f])&&(m&&(g.f?g.t[g.p](g.s):g.t[g.p]=g.s,i=!0),g.pg&&g.t._kill(j)&&(i=!0),g.pg&&0!==g.t._overwriteProps.length||(g._prev?g._prev._next=g._next:g===this._firstPT&&(this._firstPT=g._next),g._next&&(g._next._prev=g._prev),g._next=g._prev=null),delete h[f]),k&&(e[f]=1);!this._firstPT&&this._initted&&this._enabled(!1,!1)}}return i},h.invalidate=function(){return this._notifyPluginsOfEnabled&&G._onPluginEvent("_onDisable",this),this._firstPT=this._overwrittenProps=this._startAt=this._onUpdate=null,this._notifyPluginsOfEnabled=this._active=this._lazy=!1,this._propLookup=this._targets?{}:[],D.prototype.invalidate.call(this),this.vars.immediateRender&&(this._time=-m,this.render(Math.min(0,-this._delay))),this},h._enabled=function(a,b){if(j||i.wake(),a&&this._gc){var c,d=this._targets;if(d)for(c=d.length;--c>-1;)this._siblings[c]=Z(d[c],this,!0);else this._siblings=Z(this.target,this,!0)}return D.prototype._enabled.call(this,a,b),this._notifyPluginsOfEnabled&&this._firstPT?G._onPluginEvent(a?"_onEnable":"_onDisable",this):!1},G.to=function(a,b,c){return new G(a,b,c)},G.from=function(a,b,c){return c.runBackwards=!0,c.immediateRender=0!=c.immediateRender,new G(a,b,c)},G.fromTo=function(a,b,c,d){return d.startAt=c,d.immediateRender=0!=d.immediateRender&&0!=c.immediateRender,new G(a,b,d)},G.delayedCall=function(a,b,c,d,e){return new G(b,0,{delay:a,onComplete:b,onCompleteParams:c,callbackScope:d,onReverseComplete:b,onReverseCompleteParams:c,immediateRender:!1,lazy:!1,useFrames:e,overwrite:0})},G.set=function(a,b){return new G(a,0,b)},G.getTweensOf=function(a,b){if(null==a)return[];a="string"!=typeof a?a:G.selector(a)||a;var c,d,e,f;if((p(a)||H(a))&&"number"!=typeof a[0]){for(c=a.length,d=[];--c>-1;)d=d.concat(G.getTweensOf(a[c],b));for(c=d.length;--c>-1;)for(f=d[c],e=c;--e>-1;)f===d[e]&&d.splice(c,1)}else for(d=Z(a).concat(),c=d.length;--c>-1;)(d[c]._gc||b&&!d[c].isActive())&&d.splice(c,1);return d},G.killTweensOf=G.killDelayedCallsTo=function(a,b,c){"object"==typeof b&&(c=b,b=!1);for(var d=G.getTweensOf(a,b),e=d.length;--e>-1;)d[e]._kill(c,a)};var ba=t("plugins.TweenPlugin",function(a,b){this._overwriteProps=(a||"").split(","),this._propName=this._overwriteProps[0],this._priority=b||0,this._super=ba.prototype},!0);if(h=ba.prototype,ba.version="1.19.0",ba.API=2,h._firstPT=null,h._addTween=O,h.setRatio=M,h._kill=function(a){var b,c=this._overwriteProps,d=this._firstPT;if(null!=a[this._propName])this._overwriteProps=[];else for(b=c.length;--b>-1;)null!=a[c[b]]&&c.splice(b,1);for(;d;)null!=a[d.n]&&(d._next&&(d._next._prev=d._prev),d._prev?(d._prev._next=d._next,d._prev=null):this._firstPT===d&&(this._firstPT=d._next)),d=d._next;return!1},h._mod=h._roundProps=function(a){for(var b,c=this._firstPT;c;)b=a[this._propName]||null!=c.n&&a[c.n.split(this._propName+"_").join("")],b&&"function"==typeof b&&(2===c.f?c.t._applyPT.m=b:c.m=b),c=c._next},G._onPluginEvent=function(a,b){var c,d,e,f,g,h=b._firstPT;if("_onInitAllProps"===a){for(;h;){for(g=h._next,d=e;d&&d.pr>h.pr;)d=d._next;(h._prev=d?d._prev:f)?h._prev._next=h:e=h,(h._next=d)?d._prev=h:f=h,h=g}h=b._firstPT=e}for(;h;)h.pg&&"function"==typeof h.t[a]&&h.t[a]()&&(c=!0),h=h._next;return c},ba.activate=function(a){for(var b=a.length;--b>-1;)a[b].API===ba.API&&(Q[(new a[b])._propName]=a[b]);return!0},s.plugin=function(a){if(!(a&&a.propName&&a.init&&a.API))throw"illegal plugin definition.";var b,c=a.propName,d=a.priority||0,e=a.overwriteProps,f={init:"_onInitTween",set:"setRatio",kill:"_kill",round:"_mod",mod:"_mod",initAll:"_onInitAllProps"},g=t("plugins."+c.charAt(0).toUpperCase()+c.substr(1)+"Plugin",function(){ba.call(this,c,d),this._overwriteProps=e||[]},a.global===!0),h=g.prototype=new ba(c);h.constructor=g,g.API=a.API;for(b in f)"function"==typeof a[b]&&(h[f[b]]=a[b]);return g.version=a.version,ba.activate([g]),g},f=a._gsQueue){for(g=0;gt._rawPrevTime||0===t._rawPrevTime&&a._reversed,_=l?0:r,f=l?r:0;if(e||!this._forcingPlayhead){for(a.pause(h),n=t._prev;n&&n._startTime===h;)n._rawPrevTime=f,n=n._prev;for(n=t._next;n&&n._startTime===h;)n._rawPrevTime=_,n=n._next;e&&e.apply(s||a.vars.callbackScope||a,i||u),(this._forcingPlayhead||!a._paused)&&a.seek(o)}},m=function(t){var e,i=[],s=t.length;for(e=0;e!==s;i.push(t[e++]));return i},d=s.prototype=new e;return s.version="1.17.0",d.constructor=s,d.kill()._gc=d._forcingPlayhead=!1,d.to=function(t,e,s,r){var n=s.repeat&&f.TweenMax||i;return e?this.add(new n(t,e,s),r):this.set(t,s,r)},d.from=function(t,e,s,r){return this.add((s.repeat&&f.TweenMax||i).from(t,e,s),r)},d.fromTo=function(t,e,s,r,n){var a=r.repeat&&f.TweenMax||i;return e?this.add(a.fromTo(t,e,s,r),n):this.set(t,r,n)},d.staggerTo=function(t,e,r,n,a,h,l,_){var u,f=new s({onComplete:h,onCompleteParams:l,callbackScope:_,smoothChildTiming:this.smoothChildTiming});for("string"==typeof t&&(t=i.selector(t)||t),t=t||[],o(t)&&(t=m(t)),n=n||0,0>n&&(t=m(t),t.reverse(),n*=-1),u=0;t.length>u;u++)r.startAt&&(r.startAt=c(r.startAt)),f.to(t[u],e,c(r),u*n);return this.add(f,a)},d.staggerFrom=function(t,e,i,s,r,n,a,o){return i.immediateRender=0!=i.immediateRender,i.runBackwards=!0,this.staggerTo(t,e,i,s,r,n,a,o)},d.staggerFromTo=function(t,e,i,s,r,n,a,o,h){return s.startAt=i,s.immediateRender=0!=s.immediateRender&&0!=i.immediateRender,this.staggerTo(t,e,s,r,n,a,o,h)},d.call=function(t,e,s,r){return this.add(i.delayedCall(0,t,e,s),r)},d.set=function(t,e,s){return s=this._parseTimeOrLabel(s,0,!0),null==e.immediateRender&&(e.immediateRender=s===this._time&&!this._paused),this.add(new i(t,0,e),s)},s.exportRoot=function(t,e){t=t||{},null==t.smoothChildTiming&&(t.smoothChildTiming=!0);var r,n,a=new s(t),o=a._timeline;for(null==e&&(e=!0),o._remove(a,!0),a._startTime=0,a._rawPrevTime=a._time=a._totalTime=o._time,r=o._first;r;)n=r._next,e&&r instanceof i&&r.target===r.vars.onComplete||a.add(r,r._startTime-r._delay),r=n;return o.add(a,0),a},d.add=function(r,n,a,o){var l,_,u,f,c,p;if("number"!=typeof n&&(n=this._parseTimeOrLabel(n,0,!0,r)),!(r instanceof t)){if(r instanceof Array||r&&r.push&&h(r)){for(a=a||"normal",o=o||0,l=n,_=r.length,u=0;_>u;u++)h(f=r[u])&&(f=new s({tweens:f})),this.add(f,l),"string"!=typeof f&&"function"!=typeof f&&("sequence"===a?l=f._startTime+f.totalDuration()/f._timeScale:"start"===a&&(f._startTime-=f.delay())),l+=o;return this._uncache(!0)}if("string"==typeof r)return this.addLabel(r,n);if("function"!=typeof r)throw"Cannot add "+r+" into the timeline; it is not a tween, timeline, function, or string.";r=i.delayedCall(0,r)}if(e.prototype.add.call(this,r,n),(this._gc||this._time===this._duration)&&!this._paused&&this._durationr._startTime;c._timeline;)p&&c._timeline.smoothChildTiming?c.totalTime(c._totalTime,!0):c._gc&&c._enabled(!0,!1),c=c._timeline;return this},d.remove=function(e){if(e instanceof t)return this._remove(e,!1);if(e instanceof Array||e&&e.push&&h(e)){for(var i=e.length;--i>-1;)this.remove(e[i]);return this}return"string"==typeof e?this.removeLabel(e):this.kill(null,e)},d._remove=function(t,i){e.prototype._remove.call(this,t,i);var s=this._last;return s?this._time>s._startTime+s._totalDuration/s._timeScale&&(this._time=this.duration(),this._totalTime=this._totalDuration):this._time=this._totalTime=this._duration=this._totalDuration=0,this},d.append=function(t,e){return this.add(t,this._parseTimeOrLabel(null,e,!0,t))},d.insert=d.insertMultiple=function(t,e,i,s){return this.add(t,e||0,i,s)},d.appendMultiple=function(t,e,i,s){return this.add(t,this._parseTimeOrLabel(null,e,!0,t),i,s)},d.addLabel=function(t,e){return this._labels[t]=this._parseTimeOrLabel(e),this},d.addPause=function(t,e,s,r){var n=i.delayedCall(0,p,["{self}",e,s,r],this);return n.data="isPause",this.add(n,t)},d.removeLabel=function(t){return delete this._labels[t],this},d.getLabelTime=function(t){return null!=this._labels[t]?this._labels[t]:-1},d._parseTimeOrLabel=function(e,i,s,r){var n;if(r instanceof t&&r.timeline===this)this.remove(r);else if(r&&(r instanceof Array||r.push&&h(r)))for(n=r.length;--n>-1;)r[n]instanceof t&&r[n].timeline===this&&this.remove(r[n]);if("string"==typeof i)return this._parseTimeOrLabel(i,s&&"number"==typeof e&&null==this._labels[i]?e-this.duration():0,s);if(i=i||0,"string"!=typeof e||!isNaN(e)&&null==this._labels[e])null==e&&(e=this.duration());else{if(n=e.indexOf("="),-1===n)return null==this._labels[e]?s?this._labels[e]=this.duration()+i:i:this._labels[e]+i;i=parseInt(e.charAt(n-1)+"1",10)*Number(e.substr(n+1)),e=n>1?this._parseTimeOrLabel(e.substr(0,n-1),0,s):this.duration()}return Number(e)+i},d.seek=function(t,e){return this.totalTime("number"==typeof t?t:this._parseTimeOrLabel(t),e!==!1)},d.stop=function(){return this.paused(!0)},d.gotoAndPlay=function(t,e){return this.play(t,e)},d.gotoAndStop=function(t,e){return this.pause(t,e)},d.render=function(t,e,i){this._gc&&this._enabled(!0,!1);var s,n,a,o,h,u=this._dirty?this.totalDuration():this._totalDuration,f=this._time,c=this._startTime,p=this._timeScale,m=this._paused;if(t>=u)this._totalTime=this._time=u,this._reversed||this._hasPausedChild()||(n=!0,o="onComplete",h=!!this._timeline.autoRemoveChildren,0===this._duration&&(0===t||0>this._rawPrevTime||this._rawPrevTime===r)&&this._rawPrevTime!==t&&this._first&&(h=!0,this._rawPrevTime>r&&(o="onReverseComplete"))),this._rawPrevTime=this._duration||!e||t||this._rawPrevTime===t?t:r,t=u+1e-4;else if(1e-7>t)if(this._totalTime=this._time=0,(0!==f||0===this._duration&&this._rawPrevTime!==r&&(this._rawPrevTime>0||0>t&&this._rawPrevTime>=0))&&(o="onReverseComplete",n=this._reversed),0>t)this._active=!1,this._timeline.autoRemoveChildren&&this._reversed?(h=n=!0,o="onReverseComplete"):this._rawPrevTime>=0&&this._first&&(h=!0),this._rawPrevTime=t;else{if(this._rawPrevTime=this._duration||!e||t||this._rawPrevTime===t?t:r,0===t&&n)for(s=this._first;s&&0===s._startTime;)s._duration||(n=!1),s=s._next;t=0,this._initted||(h=!0)}else this._totalTime=this._time=this._rawPrevTime=t;if(this._time!==f&&this._first||i||h){if(this._initted||(this._initted=!0),this._active||!this._paused&&this._time!==f&&t>0&&(this._active=!0),0===f&&this.vars.onStart&&0!==this._time&&(e||this._callback("onStart")),this._time>=f)for(s=this._first;s&&(a=s._next,!this._paused||m);)(s._active||s._startTime<=this._time&&!s._paused&&!s._gc)&&(s._reversed?s.render((s._dirty?s.totalDuration():s._totalDuration)-(t-s._startTime)*s._timeScale,e,i):s.render((t-s._startTime)*s._timeScale,e,i)),s=a;else for(s=this._last;s&&(a=s._prev,!this._paused||m);)(s._active||f>=s._startTime&&!s._paused&&!s._gc)&&(s._reversed?s.render((s._dirty?s.totalDuration():s._totalDuration)-(t-s._startTime)*s._timeScale,e,i):s.render((t-s._startTime)*s._timeScale,e,i)),s=a;this._onUpdate&&(e||(l.length&&_(),this._callback("onUpdate"))),o&&(this._gc||(c===this._startTime||p!==this._timeScale)&&(0===this._time||u>=this.totalDuration())&&(n&&(l.length&&_(),this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),!e&&this.vars[o]&&this._callback(o)))}},d._hasPausedChild=function(){for(var t=this._first;t;){if(t._paused||t instanceof s&&t._hasPausedChild())return!0;t=t._next}return!1},d.getChildren=function(t,e,s,r){r=r||-9999999999;for(var n=[],a=this._first,o=0;a;)r>a._startTime||(a instanceof i?e!==!1&&(n[o++]=a):(s!==!1&&(n[o++]=a),t!==!1&&(n=n.concat(a.getChildren(!0,e,s)),o=n.length))),a=a._next;return n},d.getTweensOf=function(t,e){var s,r,n=this._gc,a=[],o=0;for(n&&this._enabled(!0,!0),s=i.getTweensOf(t),r=s.length;--r>-1;)(s[r].timeline===this||e&&this._contains(s[r]))&&(a[o++]=s[r]);return n&&this._enabled(!1,!0),a},d.recent=function(){return this._recent},d._contains=function(t){for(var e=t.timeline;e;){if(e===this)return!0;e=e.timeline}return!1},d.shiftChildren=function(t,e,i){i=i||0;for(var s,r=this._first,n=this._labels;r;)r._startTime>=i&&(r._startTime+=t),r=r._next;if(e)for(s in n)n[s]>=i&&(n[s]+=t);return this._uncache(!0)},d._kill=function(t,e){if(!t&&!e)return this._enabled(!1,!1);for(var i=e?this.getTweensOf(e):this.getChildren(!0,!0,!1),s=i.length,r=!1;--s>-1;)i[s]._kill(t,e)&&(r=!0);return r},d.clear=function(t){var e=this.getChildren(!1,!0,!0),i=e.length;for(this._time=this._totalTime=0;--i>-1;)e[i]._enabled(!1,!1);return t!==!1&&(this._labels={}),this._uncache(!0)},d.invalidate=function(){for(var e=this._first;e;)e.invalidate(),e=e._next;return t.prototype.invalidate.call(this)},d._enabled=function(t,i){if(t===this._gc)for(var s=this._first;s;)s._enabled(t,!0),s=s._next;return e.prototype._enabled.call(this,t,i)},d.totalTime=function(){this._forcingPlayhead=!0;var e=t.prototype.totalTime.apply(this,arguments);return this._forcingPlayhead=!1,e},d.duration=function(t){return arguments.length?(0!==this.duration()&&0!==t&&this.timeScale(this._duration/t),this):(this._dirty&&this.totalDuration(),this._duration)},d.totalDuration=function(t){if(!arguments.length){if(this._dirty){for(var e,i,s=0,r=this._last,n=999999999999;r;)e=r._prev,r._dirty&&r.totalDuration(),r._startTime>n&&this._sortChildren&&!r._paused?this.add(r,r._startTime-r._delay):n=r._startTime,0>r._startTime&&!r._paused&&(s-=r._startTime,this._timeline.smoothChildTiming&&(this._startTime+=r._startTime/this._timeScale),this.shiftChildren(-r._startTime,!1,-9999999999),n=0),i=r._startTime+r._totalDuration/r._timeScale,i>s&&(s=i),r=e;this._duration=this._totalDuration=s,this._dirty=!1}return this._totalDuration}return 0!==this.totalDuration()&&0!==t&&this.timeScale(this._totalDuration/t),this},d.paused=function(e){if(!e)for(var i=this._first,s=this._time;i;)i._startTime===s&&"isPause"===i.data&&(i._rawPrevTime=0),i=i._next;return t.prototype.paused.apply(this,arguments)},d.usesFrames=function(){for(var e=this._timeline;e._timeline;)e=e._timeline;return e===t._rootFramesTimeline},d.rawTime=function(){return this._paused?this._totalTime:(this._timeline.rawTime()-this._startTime)*this._timeScale},s},!0)}),_gsScope._gsDefine&&_gsScope._gsQueue.pop()(),function(t){"use strict";var e=function(){return(_gsScope.GreenSockGlobals||_gsScope)[t]};"function"==typeof define&&define.amd?define(["TweenLite"],e):"undefined"!=typeof module&&module.exports&&(require("./TweenLite.js"),module.exports=e())}("TimelineLite"); + + +/* EASING PLUGIN*/ +/*! + * VERSION: 1.15.5 + * DATE: 2016-07-08 + * UPDATES AND DOCS AT: http://greensock.com + * + * @license Copyright (c) 2008-2016, GreenSock. All rights reserved. + * This work is subject to the terms at http://greensock.com/standard-license or for + * Club GreenSock members, the software agreement that was issued with your membership. + * + * @author: Jack Doyle, jack@greensock.com + **/ +var _gsScope="undefined"!=typeof module&&module.exports&&"undefined"!=typeof global?global:this||window;(_gsScope._gsQueue||(_gsScope._gsQueue=[])).push(function(){"use strict";_gsScope._gsDefine("easing.Back",["easing.Ease"],function(a){var b,c,d,e=_gsScope.GreenSockGlobals||_gsScope,f=e.com.greensock,g=2*Math.PI,h=Math.PI/2,i=f._class,j=function(b,c){var d=i("easing."+b,function(){},!0),e=d.prototype=new a;return e.constructor=d,e.getRatio=c,d},k=a.register||function(){},l=function(a,b,c,d,e){var f=i("easing."+a,{easeOut:new b,easeIn:new c,easeInOut:new d},!0);return k(f,a),f},m=function(a,b,c){this.t=a,this.v=b,c&&(this.next=c,c.prev=this,this.c=c.v-b,this.gap=c.t-a)},n=function(b,c){var d=i("easing."+b,function(a){this._p1=a||0===a?a:1.70158,this._p2=1.525*this._p1},!0),e=d.prototype=new a;return e.constructor=d,e.getRatio=c,e.config=function(a){return new d(a)},d},o=l("Back",n("BackOut",function(a){return(a-=1)*a*((this._p1+1)*a+this._p1)+1}),n("BackIn",function(a){return a*a*((this._p1+1)*a-this._p1)}),n("BackInOut",function(a){return(a*=2)<1?.5*a*a*((this._p2+1)*a-this._p2):.5*((a-=2)*a*((this._p2+1)*a+this._p2)+2)})),p=i("easing.SlowMo",function(a,b,c){b=b||0===b?b:.7,null==a?a=.7:a>1&&(a=1),this._p=1!==a?b:0,this._p1=(1-a)/2,this._p2=a,this._p3=this._p1+this._p2,this._calcEnd=c===!0},!0),q=p.prototype=new a;return q.constructor=p,q.getRatio=function(a){var b=a+(.5-a)*this._p;return athis._p3?this._calcEnd?1-(a=(a-this._p3)/this._p1)*a:b+(a-b)*(a=(a-this._p3)/this._p1)*a*a*a:this._calcEnd?1:b},p.ease=new p(.7,.7),q.config=p.config=function(a,b,c){return new p(a,b,c)},b=i("easing.SteppedEase",function(a){a=a||1,this._p1=1/a,this._p2=a+1},!0),q=b.prototype=new a,q.constructor=b,q.getRatio=function(a){return 0>a?a=0:a>=1&&(a=.999999999),(this._p2*a>>0)*this._p1},q.config=b.config=function(a){return new b(a)},c=i("easing.RoughEase",function(b){b=b||{};for(var c,d,e,f,g,h,i=b.taper||"none",j=[],k=0,l=0|(b.points||20),n=l,o=b.randomize!==!1,p=b.clamp===!0,q=b.template instanceof a?b.template:null,r="number"==typeof b.strength?.4*b.strength:.4;--n>-1;)c=o?Math.random():1/l*n,d=q?q.getRatio(c):c,"none"===i?e=r:"out"===i?(f=1-c,e=f*f*r):"in"===i?e=c*c*r:.5>c?(f=2*c,e=f*f*.5*r):(f=2*(1-c),e=f*f*.5*r),o?d+=Math.random()*e-.5*e:n%2?d+=.5*e:d-=.5*e,p&&(d>1?d=1:0>d&&(d=0)),j[k++]={x:c,y:d};for(j.sort(function(a,b){return a.x-b.x}),h=new m(1,1,null),n=l;--n>-1;)g=j[n],h=new m(g.x,g.y,h);this._prev=new m(0,0,0!==h.t?h:h.next)},!0),q=c.prototype=new a,q.constructor=c,q.getRatio=function(a){var b=this._prev;if(a>b.t){for(;b.next&&a>=b.t;)b=b.next;b=b.prev}else for(;b.prev&&a<=b.t;)b=b.prev;return this._prev=b,b.v+(a-b.t)/b.gap*b.c},q.config=function(a){return new c(a)},c.ease=new c,l("Bounce",j("BounceOut",function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375}),j("BounceIn",function(a){return(a=1-a)<1/2.75?1-7.5625*a*a:2/2.75>a?1-(7.5625*(a-=1.5/2.75)*a+.75):2.5/2.75>a?1-(7.5625*(a-=2.25/2.75)*a+.9375):1-(7.5625*(a-=2.625/2.75)*a+.984375)}),j("BounceInOut",function(a){var b=.5>a;return a=b?1-2*a:2*a-1,a=1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375,b?.5*(1-a):.5*a+.5})),l("Circ",j("CircOut",function(a){return Math.sqrt(1-(a-=1)*a)}),j("CircIn",function(a){return-(Math.sqrt(1-a*a)-1)}),j("CircInOut",function(a){return(a*=2)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)})),d=function(b,c,d){var e=i("easing."+b,function(a,b){this._p1=a>=1?a:1,this._p2=(b||d)/(1>a?a:1),this._p3=this._p2/g*(Math.asin(1/this._p1)||0),this._p2=g/this._p2},!0),f=e.prototype=new a;return f.constructor=e,f.getRatio=c,f.config=function(a,b){return new e(a,b)},e},l("Elastic",d("ElasticOut",function(a){return this._p1*Math.pow(2,-10*a)*Math.sin((a-this._p3)*this._p2)+1},.3),d("ElasticIn",function(a){return-(this._p1*Math.pow(2,10*(a-=1))*Math.sin((a-this._p3)*this._p2))},.3),d("ElasticInOut",function(a){return(a*=2)<1?-.5*(this._p1*Math.pow(2,10*(a-=1))*Math.sin((a-this._p3)*this._p2)):this._p1*Math.pow(2,-10*(a-=1))*Math.sin((a-this._p3)*this._p2)*.5+1},.45)),l("Expo",j("ExpoOut",function(a){return 1-Math.pow(2,-10*a)}),j("ExpoIn",function(a){return Math.pow(2,10*(a-1))-.001}),j("ExpoInOut",function(a){return(a*=2)<1?.5*Math.pow(2,10*(a-1)):.5*(2-Math.pow(2,-10*(a-1)))})),l("Sine",j("SineOut",function(a){return Math.sin(a*h)}),j("SineIn",function(a){return-Math.cos(a*h)+1}),j("SineInOut",function(a){return-.5*(Math.cos(Math.PI*a)-1)})),i("easing.EaseLookup",{find:function(b){return a.map[b]}},!0),k(e.SlowMo,"SlowMo","ease,"),k(c,"RoughEase","ease,"),k(b,"SteppedEase","ease,"),o},!0)}),_gsScope._gsDefine&&_gsScope._gsQueue.pop()(),function(){"use strict";var a=function(){return _gsScope.GreenSockGlobals||_gsScope};"function"==typeof define&&define.amd?define(["TweenLite"],a):"undefined"!=typeof module&&module.exports&&(require("../TweenLite.js"),module.exports=a())}(); + + +/* CSS PLUGIN */ +/*! + * VERSION: 1.19.1 + * DATE: 2017-01-17 + * UPDATES AND DOCS AT: http://greensock.com + * + * @license Copyright (c) 2008-2017, GreenSock. All rights reserved. + * This work is subject to the terms at http://greensock.com/standard-license or for + * Club GreenSock members, the software agreement that was issued with your membership. + * + * @author: Jack Doyle, jack@greensock.com + */ +var _gsScope="undefined"!=typeof module&&module.exports&&"undefined"!=typeof global?global:this||window;(_gsScope._gsQueue||(_gsScope._gsQueue=[])).push(function(){"use strict";_gsScope._gsDefine("plugins.CSSPlugin",["plugins.TweenPlugin","TweenLite"],function(a,b){var c,d,e,f,g=function(){a.call(this,"css"),this._overwriteProps.length=0,this.setRatio=g.prototype.setRatio},h=_gsScope._gsDefine.globals,i={},j=g.prototype=new a("css");j.constructor=g,g.version="1.19.1",g.API=2,g.defaultTransformPerspective=0,g.defaultSkewType="compensated",g.defaultSmoothOrigin=!0,j="px",g.suffixMap={top:j,right:j,bottom:j,left:j,width:j,height:j,fontSize:j,padding:j,margin:j,perspective:j,lineHeight:""};var k,l,m,n,o,p,q,r,s=/(?:\-|\.|\b)(\d|\.|e\-)+/g,t=/(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g,u=/(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi,v=/(?![+-]?\d*\.?\d+|[+-]|e[+-]\d+)[^0-9]/g,w=/(?:\d|\-|\+|=|#|\.)*/g,x=/opacity *= *([^)]*)/i,y=/opacity:([^;]*)/i,z=/alpha\(opacity *=.+?\)/i,A=/^(rgb|hsl)/,B=/([A-Z])/g,C=/-([a-z])/gi,D=/(^(?:url\(\"|url\())|(?:(\"\))$|\)$)/gi,E=function(a,b){return b.toUpperCase()},F=/(?:Left|Right|Width)/i,G=/(M11|M12|M21|M22)=[\d\-\.e]+/gi,H=/progid\:DXImageTransform\.Microsoft\.Matrix\(.+?\)/i,I=/,(?=[^\)]*(?:\(|$))/gi,J=/[\s,\(]/i,K=Math.PI/180,L=180/Math.PI,M={},N={style:{}},O=_gsScope.document||{createElement:function(){return N}},P=function(a,b){return O.createElementNS?O.createElementNS(b||"http://www.w3.org/1999/xhtml",a):O.createElement(a)},Q=P("div"),R=P("img"),S=g._internals={_specialProps:i},T=(_gsScope.navigator||{}).userAgent||"",U=function(){var a=T.indexOf("Android"),b=P("a");return m=-1!==T.indexOf("Safari")&&-1===T.indexOf("Chrome")&&(-1===a||parseFloat(T.substr(a+8,2))>3),o=m&&parseFloat(T.substr(T.indexOf("Version/")+8,2))<6,n=-1!==T.indexOf("Firefox"),(/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(T)||/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(T))&&(p=parseFloat(RegExp.$1)),b?(b.style.cssText="top:1px;opacity:.55;",/^0.55/.test(b.style.opacity)):!1}(),V=function(a){return x.test("string"==typeof a?a:(a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100:1},W=function(a){_gsScope.console&&console.log(a)},X="",Y="",Z=function(a,b){b=b||Q;var c,d,e=b.style;if(void 0!==e[a])return a;for(a=a.charAt(0).toUpperCase()+a.substr(1),c=["O","Moz","ms","Ms","Webkit"],d=5;--d>-1&&void 0===e[c[d]+a];);return d>=0?(Y=3===d?"ms":c[d],X="-"+Y.toLowerCase()+"-",Y+a):null},$=O.defaultView?O.defaultView.getComputedStyle:function(){},_=g.getStyle=function(a,b,c,d,e){var f;return U||"opacity"!==b?(!d&&a.style[b]?f=a.style[b]:(c=c||$(a))?f=c[b]||c.getPropertyValue(b)||c.getPropertyValue(b.replace(B,"-$1").toLowerCase()):a.currentStyle&&(f=a.currentStyle[b]),null==e||f&&"none"!==f&&"auto"!==f&&"auto auto"!==f?f:e):V(a)},aa=S.convertToPixels=function(a,c,d,e,f){if("px"===e||!e)return d;if("auto"===e||!d)return 0;var h,i,j,k=F.test(c),l=a,m=Q.style,n=0>d,o=1===d;if(n&&(d=-d),o&&(d*=100),"%"===e&&-1!==c.indexOf("border"))h=d/100*(k?a.clientWidth:a.clientHeight);else{if(m.cssText="border:0 solid red;position:"+_(a,"position")+";line-height:0;","%"!==e&&l.appendChild&&"v"!==e.charAt(0)&&"rem"!==e)m[k?"borderLeftWidth":"borderTopWidth"]=d+e;else{if(l=a.parentNode||O.body,i=l._gsCache,j=b.ticker.frame,i&&k&&i.time===j)return i.width*d/100;m[k?"width":"height"]=d+e}l.appendChild(Q),h=parseFloat(Q[k?"offsetWidth":"offsetHeight"]),l.removeChild(Q),k&&"%"===e&&g.cacheWidths!==!1&&(i=l._gsCache=l._gsCache||{},i.time=j,i.width=h/d*100),0!==h||f||(h=aa(a,c,d,e,!0))}return o&&(h/=100),n?-h:h},ba=S.calculateOffset=function(a,b,c){if("absolute"!==_(a,"position",c))return 0;var d="left"===b?"Left":"Top",e=_(a,"margin"+d,c);return a["offset"+d]-(aa(a,b,parseFloat(e),e.replace(w,""))||0)},ca=function(a,b){var c,d,e,f={};if(b=b||$(a,null))if(c=b.length)for(;--c>-1;)e=b[c],(-1===e.indexOf("-transform")||Da===e)&&(f[e.replace(C,E)]=b.getPropertyValue(e));else for(c in b)(-1===c.indexOf("Transform")||Ca===c)&&(f[c]=b[c]);else if(b=a.currentStyle||a.style)for(c in b)"string"==typeof c&&void 0===f[c]&&(f[c.replace(C,E)]=b[c]);return U||(f.opacity=V(a)),d=Ra(a,b,!1),f.rotation=d.rotation,f.skewX=d.skewX,f.scaleX=d.scaleX,f.scaleY=d.scaleY,f.x=d.x,f.y=d.y,Fa&&(f.z=d.z,f.rotationX=d.rotationX,f.rotationY=d.rotationY,f.scaleZ=d.scaleZ),f.filters&&delete f.filters,f},da=function(a,b,c,d,e){var f,g,h,i={},j=a.style;for(g in c)"cssText"!==g&&"length"!==g&&isNaN(g)&&(b[g]!==(f=c[g])||e&&e[g])&&-1===g.indexOf("Origin")&&("number"==typeof f||"string"==typeof f)&&(i[g]="auto"!==f||"left"!==g&&"top"!==g?""!==f&&"auto"!==f&&"none"!==f||"string"!=typeof b[g]||""===b[g].replace(v,"")?f:0:ba(a,g),void 0!==j[g]&&(h=new sa(j,g,j[g],h)));if(d)for(g in d)"className"!==g&&(i[g]=d[g]);return{difs:i,firstMPT:h}},ea={width:["Left","Right"],height:["Top","Bottom"]},fa=["marginLeft","marginRight","marginTop","marginBottom"],ga=function(a,b,c){if("svg"===(a.nodeName+"").toLowerCase())return(c||$(a))[b]||0;if(a.getCTM&&Oa(a))return a.getBBox()[b]||0;var d=parseFloat("width"===b?a.offsetWidth:a.offsetHeight),e=ea[b],f=e.length;for(c=c||$(a,null);--f>-1;)d-=parseFloat(_(a,"padding"+e[f],c,!0))||0,d-=parseFloat(_(a,"border"+e[f]+"Width",c,!0))||0;return d},ha=function(a,b){if("contain"===a||"auto"===a||"auto auto"===a)return a+" ";(null==a||""===a)&&(a="0 0");var c,d=a.split(" "),e=-1!==a.indexOf("left")?"0%":-1!==a.indexOf("right")?"100%":d[0],f=-1!==a.indexOf("top")?"0%":-1!==a.indexOf("bottom")?"100%":d[1];if(d.length>3&&!b){for(d=a.split(", ").join(",").split(","),a=[],c=0;c2?" "+d[2]:""),b&&(b.oxp=-1!==e.indexOf("%"),b.oyp=-1!==f.indexOf("%"),b.oxr="="===e.charAt(1),b.oyr="="===f.charAt(1),b.ox=parseFloat(e.replace(v,"")),b.oy=parseFloat(f.replace(v,"")),b.v=a),b||a},ia=function(a,b){return"function"==typeof a&&(a=a(r,q)),"string"==typeof a&&"="===a.charAt(1)?parseInt(a.charAt(0)+"1",10)*parseFloat(a.substr(2)):parseFloat(a)-parseFloat(b)||0},ja=function(a,b){return"function"==typeof a&&(a=a(r,q)),null==a?b:"string"==typeof a&&"="===a.charAt(1)?parseInt(a.charAt(0)+"1",10)*parseFloat(a.substr(2))+b:parseFloat(a)||0},ka=function(a,b,c,d){var e,f,g,h,i,j=1e-6;return"function"==typeof a&&(a=a(r,q)),null==a?h=b:"number"==typeof a?h=a:(e=360,f=a.split("_"),i="="===a.charAt(1),g=(i?parseInt(a.charAt(0)+"1",10)*parseFloat(f[0].substr(2)):parseFloat(f[0]))*(-1===a.indexOf("rad")?1:L)-(i?0:b),f.length&&(d&&(d[c]=b+g),-1!==a.indexOf("short")&&(g%=e,g!==g%(e/2)&&(g=0>g?g+e:g-e)),-1!==a.indexOf("_cw")&&0>g?g=(g+9999999999*e)%e-(g/e|0)*e:-1!==a.indexOf("ccw")&&g>0&&(g=(g-9999999999*e)%e-(g/e|0)*e)),h=b+g),j>h&&h>-j&&(h=0),h},la={aqua:[0,255,255],lime:[0,255,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,255],navy:[0,0,128],white:[255,255,255],fuchsia:[255,0,255],olive:[128,128,0],yellow:[255,255,0],orange:[255,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[255,0,0],pink:[255,192,203],cyan:[0,255,255],transparent:[255,255,255,0]},ma=function(a,b,c){return a=0>a?a+1:a>1?a-1:a,255*(1>6*a?b+(c-b)*a*6:.5>a?c:2>3*a?b+(c-b)*(2/3-a)*6:b)+.5|0},na=g.parseColor=function(a,b){var c,d,e,f,g,h,i,j,k,l,m;if(a)if("number"==typeof a)c=[a>>16,a>>8&255,255&a];else{if(","===a.charAt(a.length-1)&&(a=a.substr(0,a.length-1)),la[a])c=la[a];else if("#"===a.charAt(0))4===a.length&&(d=a.charAt(1),e=a.charAt(2),f=a.charAt(3),a="#"+d+d+e+e+f+f),a=parseInt(a.substr(1),16),c=[a>>16,a>>8&255,255&a];else if("hsl"===a.substr(0,3))if(c=m=a.match(s),b){if(-1!==a.indexOf("="))return a.match(t)}else g=Number(c[0])%360/360,h=Number(c[1])/100,i=Number(c[2])/100,e=.5>=i?i*(h+1):i+h-i*h,d=2*i-e,c.length>3&&(c[3]=Number(a[3])),c[0]=ma(g+1/3,d,e),c[1]=ma(g,d,e),c[2]=ma(g-1/3,d,e);else c=a.match(s)||la.transparent;c[0]=Number(c[0]),c[1]=Number(c[1]),c[2]=Number(c[2]),c.length>3&&(c[3]=Number(c[3]))}else c=la.black;return b&&!m&&(d=c[0]/255,e=c[1]/255,f=c[2]/255,j=Math.max(d,e,f),k=Math.min(d,e,f),i=(j+k)/2,j===k?g=h=0:(l=j-k,h=i>.5?l/(2-j-k):l/(j+k),g=j===d?(e-f)/l+(f>e?6:0):j===e?(f-d)/l+2:(d-e)/l+4,g*=60),c[0]=g+.5|0,c[1]=100*h+.5|0,c[2]=100*i+.5|0),c},oa=function(a,b){var c,d,e,f=a.match(pa)||[],g=0,h=f.length?"":a;for(c=0;c0?g[0].replace(s,""):"";return k?e=b?function(a){var b,m,n,o;if("number"==typeof a)a+=l;else if(d&&I.test(a)){for(o=a.replace(I,"|").split("|"),n=0;nn--)for(;++nm--)for(;++mi;i++)h[a[i]]=j[i]=j[i]||j[(i-1)/2>>0];return e.parse(b,h,f,g)}},sa=(S._setPluginRatio=function(a){this.plugin.setRatio(a);for(var b,c,d,e,f,g=this.data,h=g.proxy,i=g.firstMPT,j=1e-6;i;)b=h[i.v],i.r?b=Math.round(b):j>b&&b>-j&&(b=0),i.t[i.p]=b,i=i._next;if(g.autoRotate&&(g.autoRotate.rotation=g.mod?g.mod(h.rotation,this.t):h.rotation),1===a||0===a)for(i=g.firstMPT,f=1===a?"e":"b";i;){if(c=i.t,c.type){if(1===c.type){for(e=c.xs0+c.s+c.xs1,d=1;d0;)i="xn"+g,h=d.p+"_"+i,n[h]=d.data[i],m[h]=d[i],f||(j=new sa(d,i,h,j,d.rxp[i]));d=d._next}return{proxy:m,end:n,firstMPT:j,pt:k}},S.CSSPropTween=function(a,b,d,e,g,h,i,j,k,l,m){this.t=a,this.p=b,this.s=d,this.c=e,this.n=i||b,a instanceof ta||f.push(this.n),this.r=j,this.type=h||0,k&&(this.pr=k,c=!0),this.b=void 0===l?d:l,this.e=void 0===m?d+e:m,g&&(this._next=g,g._prev=this)}),ua=function(a,b,c,d,e,f){var g=new ta(a,b,c,d-c,e,-1,f);return g.b=c,g.e=g.xs0=d,g},va=g.parseComplex=function(a,b,c,d,e,f,h,i,j,l){c=c||f||"","function"==typeof d&&(d=d(r,q)),h=new ta(a,b,0,0,h,l?2:1,null,!1,i,c,d),d+="",e&&pa.test(d+c)&&(d=[c,d],g.colorStringFilter(d),c=d[0],d=d[1]);var m,n,o,p,u,v,w,x,y,z,A,B,C,D=c.split(", ").join(",").split(" "),E=d.split(", ").join(",").split(" "),F=D.length,G=k!==!1;for((-1!==d.indexOf(",")||-1!==c.indexOf(","))&&(D=D.join(" ").replace(I,", ").split(" "),E=E.join(" ").replace(I,", ").split(" "),F=D.length),F!==E.length&&(D=(f||"").split(" "),F=D.length),h.plugin=j,h.setRatio=l,pa.lastIndex=0,m=0;F>m;m++)if(p=D[m],u=E[m],x=parseFloat(p),x||0===x)h.appendXtra("",x,ia(u,x),u.replace(t,""),G&&-1!==u.indexOf("px"),!0);else if(e&&pa.test(p))B=u.indexOf(")")+1,B=")"+(B?u.substr(B):""),C=-1!==u.indexOf("hsl")&&U,p=na(p,C),u=na(u,C),y=p.length+u.length>6,y&&!U&&0===u[3]?(h["xs"+h.l]+=h.l?" transparent":"transparent",h.e=h.e.split(E[m]).join("transparent")):(U||(y=!1),C?h.appendXtra(y?"hsla(":"hsl(",p[0],ia(u[0],p[0]),",",!1,!0).appendXtra("",p[1],ia(u[1],p[1]),"%,",!1).appendXtra("",p[2],ia(u[2],p[2]),y?"%,":"%"+B,!1):h.appendXtra(y?"rgba(":"rgb(",p[0],u[0]-p[0],",",!0,!0).appendXtra("",p[1],u[1]-p[1],",",!0).appendXtra("",p[2],u[2]-p[2],y?",":B,!0),y&&(p=p.length<4?1:p[3],h.appendXtra("",p,(u.length<4?1:u[3])-p,B,!1))),pa.lastIndex=0;else if(v=p.match(s)){if(w=u.match(t),!w||w.length!==v.length)return h;for(o=0,n=0;n0;)j["xn"+wa]=0,j["xs"+wa]="";j.xs0="",j._next=j._prev=j.xfirst=j.data=j.plugin=j.setRatio=j.rxp=null,j.appendXtra=function(a,b,c,d,e,f){var g=this,h=g.l;return g["xs"+h]+=f&&(h||g["xs"+h])?" "+a:a||"",c||0===h||g.plugin?(g.l++,g.type=g.setRatio?2:1,g["xs"+g.l]=d||"",h>0?(g.data["xn"+h]=b+c,g.rxp["xn"+h]=e,g["xn"+h]=b,g.plugin||(g.xfirst=new ta(g,"xn"+h,b,c,g.xfirst||g,0,g.n,e,g.pr),g.xfirst.xs0=0),g):(g.data={s:b+c},g.rxp={},g.s=b,g.c=c,g.r=e,g)):(g["xs"+h]+=b+(d||""),g)};var xa=function(a,b){b=b||{},this.p=b.prefix?Z(a)||a:a,i[a]=i[this.p]=this,this.format=b.formatter||qa(b.defaultValue,b.color,b.collapsible,b.multi),b.parser&&(this.parse=b.parser),this.clrs=b.color,this.multi=b.multi,this.keyword=b.keyword,this.dflt=b.defaultValue,this.pr=b.priority||0},ya=S._registerComplexSpecialProp=function(a,b,c){"object"!=typeof b&&(b={parser:c});var d,e,f=a.split(","),g=b.defaultValue;for(c=c||[g],d=0;dh.length?i.length:h.length,g=0;j>g;g++)b=h[g]=h[g]||this.dflt,c=i[g]=i[g]||this.dflt,m&&(k=b.indexOf(m),l=c.indexOf(m),k!==l&&(-1===l?h[g]=h[g].split(m).join(""):-1===k&&(h[g]+=" "+m)));b=h.join(", "),c=i.join(", ")}return va(a,this.p,b,c,this.clrs,this.dflt,d,this.pr,e,f)},j.parse=function(a,b,c,d,f,g,h){return this.parseComplex(a.style,this.format(_(a,this.p,e,!1,this.dflt)),this.format(b),f,g)},g.registerSpecialProp=function(a,b,c){ya(a,{parser:function(a,d,e,f,g,h,i){var j=new ta(a,e,0,0,g,2,e,!1,c);return j.plugin=h,j.setRatio=b(a,d,f._tween,e),j},priority:c})},g.useSVGTransformAttr=!0;var Aa,Ba="scaleX,scaleY,scaleZ,x,y,z,skewX,skewY,rotation,rotationX,rotationY,perspective,xPercent,yPercent".split(","),Ca=Z("transform"),Da=X+"transform",Ea=Z("transformOrigin"),Fa=null!==Z("perspective"),Ga=S.Transform=function(){this.perspective=parseFloat(g.defaultTransformPerspective)||0,this.force3D=g.defaultForce3D!==!1&&Fa?g.defaultForce3D||"auto":!1},Ha=_gsScope.SVGElement,Ia=function(a,b,c){var d,e=O.createElementNS("http://www.w3.org/2000/svg",a),f=/([a-z])([A-Z])/g;for(d in c)e.setAttributeNS(null,d.replace(f,"$1-$2").toLowerCase(),c[d]);return b.appendChild(e),e},Ja=O.documentElement||{},Ka=function(){var a,b,c,d=p||/Android/i.test(T)&&!_gsScope.chrome;return O.createElementNS&&!d&&(a=Ia("svg",Ja),b=Ia("rect",a,{width:100,height:50,x:100}),c=b.getBoundingClientRect().width,b.style[Ea]="50% 50%",b.style[Ca]="scaleX(0.5)",d=c===b.getBoundingClientRect().width&&!(n&&Fa),Ja.removeChild(a)),d}(),La=function(a,b,c,d,e,f){var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v=a._gsTransform,w=Qa(a,!0);v&&(t=v.xOrigin,u=v.yOrigin),(!d||(h=d.split(" ")).length<2)&&(n=a.getBBox(),0===n.x&&0===n.y&&n.width+n.height===0&&(n={x:parseFloat(a.hasAttribute("x")?a.getAttribute("x"):a.hasAttribute("cx")?a.getAttribute("cx"):0)||0,y:parseFloat(a.hasAttribute("y")?a.getAttribute("y"):a.hasAttribute("cy")?a.getAttribute("cy"):0)||0,width:0,height:0}),b=ha(b).split(" "),h=[(-1!==b[0].indexOf("%")?parseFloat(b[0])/100*n.width:parseFloat(b[0]))+n.x,(-1!==b[1].indexOf("%")?parseFloat(b[1])/100*n.height:parseFloat(b[1]))+n.y]),c.xOrigin=k=parseFloat(h[0]),c.yOrigin=l=parseFloat(h[1]),d&&w!==Pa&&(m=w[0],n=w[1],o=w[2],p=w[3],q=w[4],r=w[5],s=m*p-n*o,s&&(i=k*(p/s)+l*(-o/s)+(o*r-p*q)/s,j=k*(-n/s)+l*(m/s)-(m*r-n*q)/s,k=c.xOrigin=h[0]=i,l=c.yOrigin=h[1]=j)),v&&(f&&(c.xOffset=v.xOffset,c.yOffset=v.yOffset,v=c),e||e!==!1&&g.defaultSmoothOrigin!==!1?(i=k-t,j=l-u,v.xOffset+=i*w[0]+j*w[2]-i,v.yOffset+=i*w[1]+j*w[3]-j):v.xOffset=v.yOffset=0),f||a.setAttribute("data-svg-origin",h.join(" "))},Ma=function(a){var b,c=P("svg",this.ownerSVGElement.getAttribute("xmlns")||"http://www.w3.org/2000/svg"),d=this.parentNode,e=this.nextSibling,f=this.style.cssText;if(Ja.appendChild(c),c.appendChild(this),this.style.display="block",a)try{b=this.getBBox(),this._originalGetBBox=this.getBBox,this.getBBox=Ma}catch(g){}else this._originalGetBBox&&(b=this._originalGetBBox());return e?d.insertBefore(this,e):d.appendChild(this),Ja.removeChild(c),this.style.cssText=f,b},Na=function(a){try{return a.getBBox()}catch(b){return Ma.call(a,!0)}},Oa=function(a){return!(!(Ha&&a.getCTM&&Na(a))||a.parentNode&&!a.ownerSVGElement)},Pa=[1,0,0,1,0,0],Qa=function(a,b){var c,d,e,f,g,h,i=a._gsTransform||new Ga,j=1e5,k=a.style;if(Ca?d=_(a,Da,null,!0):a.currentStyle&&(d=a.currentStyle.filter.match(G),d=d&&4===d.length?[d[0].substr(4),Number(d[2].substr(4)),Number(d[1].substr(4)),d[3].substr(4),i.x||0,i.y||0].join(","):""),c=!d||"none"===d||"matrix(1, 0, 0, 1, 0, 0)"===d,c&&Ca&&((h="none"===$(a).display)||!a.parentNode)&&(h&&(f=k.display,k.display="block"),a.parentNode||(g=1,Ja.appendChild(a)),d=_(a,Da,null,!0),c=!d||"none"===d||"matrix(1, 0, 0, 1, 0, 0)"===d,f?k.display=f:h&&Va(k,"display"),g&&Ja.removeChild(a)),(i.svg||a.getCTM&&Oa(a))&&(c&&-1!==(k[Ca]+"").indexOf("matrix")&&(d=k[Ca],c=0),e=a.getAttribute("transform"),c&&e&&(-1!==e.indexOf("matrix")?(d=e,c=0):-1!==e.indexOf("translate")&&(d="matrix(1,0,0,1,"+e.match(/(?:\-|\b)[\d\-\.e]+\b/gi).join(",")+")",c=0))),c)return Pa;for(e=(d||"").match(s)||[],wa=e.length;--wa>-1;)f=Number(e[wa]),e[wa]=(g=f-(f|=0))?(g*j+(0>g?-.5:.5)|0)/j+f:f;return b&&e.length>6?[e[0],e[1],e[4],e[5],e[12],e[13]]:e},Ra=S.getTransform=function(a,c,d,e){if(a._gsTransform&&d&&!e)return a._gsTransform;var f,h,i,j,k,l,m=d?a._gsTransform||new Ga:new Ga,n=m.scaleX<0,o=2e-5,p=1e5,q=Fa?parseFloat(_(a,Ea,c,!1,"0 0 0").split(" ")[2])||m.zOrigin||0:0,r=parseFloat(g.defaultTransformPerspective)||0;if(m.svg=!(!a.getCTM||!Oa(a)),m.svg&&(La(a,_(a,Ea,c,!1,"50% 50%")+"",m,a.getAttribute("data-svg-origin")),Aa=g.useSVGTransformAttr||Ka),f=Qa(a),f!==Pa){if(16===f.length){var s,t,u,v,w,x=f[0],y=f[1],z=f[2],A=f[3],B=f[4],C=f[5],D=f[6],E=f[7],F=f[8],G=f[9],H=f[10],I=f[12],J=f[13],K=f[14],M=f[11],N=Math.atan2(D,H);m.zOrigin&&(K=-m.zOrigin,I=F*K-f[12],J=G*K-f[13],K=H*K+m.zOrigin-f[14]),m.rotationX=N*L,N&&(v=Math.cos(-N),w=Math.sin(-N),s=B*v+F*w,t=C*v+G*w,u=D*v+H*w,F=B*-w+F*v,G=C*-w+G*v,H=D*-w+H*v,M=E*-w+M*v,B=s,C=t,D=u),N=Math.atan2(-z,H),m.rotationY=N*L,N&&(v=Math.cos(-N),w=Math.sin(-N),s=x*v-F*w,t=y*v-G*w,u=z*v-H*w,G=y*w+G*v,H=z*w+H*v,M=A*w+M*v,x=s,y=t,z=u),N=Math.atan2(y,x),m.rotation=N*L,N&&(v=Math.cos(-N),w=Math.sin(-N),x=x*v+B*w,t=y*v+C*w,C=y*-w+C*v,D=z*-w+D*v,y=t),m.rotationX&&Math.abs(m.rotationX)+Math.abs(m.rotation)>359.9&&(m.rotationX=m.rotation=0,m.rotationY=180-m.rotationY),m.scaleX=(Math.sqrt(x*x+y*y)*p+.5|0)/p,m.scaleY=(Math.sqrt(C*C+G*G)*p+.5|0)/p,m.scaleZ=(Math.sqrt(D*D+H*H)*p+.5|0)/p,m.rotationX||m.rotationY?m.skewX=0:(m.skewX=B||C?Math.atan2(B,C)*L+m.rotation:m.skewX||0,Math.abs(m.skewX)>90&&Math.abs(m.skewX)<270&&(n?(m.scaleX*=-1,m.skewX+=m.rotation<=0?180:-180,m.rotation+=m.rotation<=0?180:-180):(m.scaleY*=-1,m.skewX+=m.skewX<=0?180:-180))),m.perspective=M?1/(0>M?-M:M):0,m.x=I,m.y=J,m.z=K,m.svg&&(m.x-=m.xOrigin-(m.xOrigin*x-m.yOrigin*B),m.y-=m.yOrigin-(m.yOrigin*y-m.xOrigin*C))}else if(!Fa||e||!f.length||m.x!==f[4]||m.y!==f[5]||!m.rotationX&&!m.rotationY){var O=f.length>=6,P=O?f[0]:1,Q=f[1]||0,R=f[2]||0,S=O?f[3]:1;m.x=f[4]||0,m.y=f[5]||0,i=Math.sqrt(P*P+Q*Q),j=Math.sqrt(S*S+R*R),k=P||Q?Math.atan2(Q,P)*L:m.rotation||0,l=R||S?Math.atan2(R,S)*L+k:m.skewX||0,Math.abs(l)>90&&Math.abs(l)<270&&(n?(i*=-1,l+=0>=k?180:-180,k+=0>=k?180:-180):(j*=-1,l+=0>=l?180:-180)),m.scaleX=i,m.scaleY=j,m.rotation=k,m.skewX=l,Fa&&(m.rotationX=m.rotationY=m.z=0,m.perspective=r,m.scaleZ=1),m.svg&&(m.x-=m.xOrigin-(m.xOrigin*P+m.yOrigin*R),m.y-=m.yOrigin-(m.xOrigin*Q+m.yOrigin*S))}m.zOrigin=q;for(h in m)m[h]-o&&(m[h]=0)}return d&&(a._gsTransform=m,m.svg&&(Aa&&a.style[Ca]?b.delayedCall(.001,function(){Va(a.style,Ca)}):!Aa&&a.getAttribute("transform")&&b.delayedCall(.001,function(){a.removeAttribute("transform")}))),m},Sa=function(a){var b,c,d=this.data,e=-d.rotation*K,f=e+d.skewX*K,g=1e5,h=(Math.cos(e)*d.scaleX*g|0)/g,i=(Math.sin(e)*d.scaleX*g|0)/g,j=(Math.sin(f)*-d.scaleY*g|0)/g,k=(Math.cos(f)*d.scaleY*g|0)/g,l=this.t.style,m=this.t.currentStyle;if(m){c=i,i=-j,j=-c,b=m.filter,l.filter="";var n,o,q=this.t.offsetWidth,r=this.t.offsetHeight,s="absolute"!==m.position,t="progid:DXImageTransform.Microsoft.Matrix(M11="+h+", M12="+i+", M21="+j+", M22="+k,u=d.x+q*d.xPercent/100,v=d.y+r*d.yPercent/100;if(null!=d.ox&&(n=(d.oxp?q*d.ox*.01:d.ox)-q/2,o=(d.oyp?r*d.oy*.01:d.oy)-r/2,u+=n-(n*h+o*i),v+=o-(n*j+o*k)),s?(n=q/2,o=r/2,t+=", Dx="+(n-(n*h+o*i)+u)+", Dy="+(o-(n*j+o*k)+v)+")"):t+=", sizingMethod='auto expand')",-1!==b.indexOf("DXImageTransform.Microsoft.Matrix(")?l.filter=b.replace(H,t):l.filter=t+" "+b,(0===a||1===a)&&1===h&&0===i&&0===j&&1===k&&(s&&-1===t.indexOf("Dx=0, Dy=0")||x.test(b)&&100!==parseFloat(RegExp.$1)||-1===b.indexOf(b.indexOf("Alpha"))&&l.removeAttribute("filter")),!s){var y,z,A,B=8>p?1:-1;for(n=d.ieOffsetX||0,o=d.ieOffsetY||0,d.ieOffsetX=Math.round((q-((0>h?-h:h)*q+(0>i?-i:i)*r))/2+u),d.ieOffsetY=Math.round((r-((0>k?-k:k)*r+(0>j?-j:j)*q))/2+v),wa=0;4>wa;wa++)z=fa[wa],y=m[z],c=-1!==y.indexOf("px")?parseFloat(y):aa(this.t,z,parseFloat(y),y.replace(w,""))||0,A=c!==d[z]?2>wa?-d.ieOffsetX:-d.ieOffsetY:2>wa?n-d.ieOffsetX:o-d.ieOffsetY,l[z]=(d[z]=Math.round(c-A*(0===wa||2===wa?1:B)))+"px"}}},Ta=S.set3DTransformRatio=S.setTransformRatio=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,o,p,q,r,s,t,u,v,w,x,y,z=this.data,A=this.t.style,B=z.rotation,C=z.rotationX,D=z.rotationY,E=z.scaleX,F=z.scaleY,G=z.scaleZ,H=z.x,I=z.y,J=z.z,L=z.svg,M=z.perspective,N=z.force3D,O=z.skewY,P=z.skewX;if(O&&(P+=O,B+=O),((1===a||0===a)&&"auto"===N&&(this.tween._totalTime===this.tween._totalDuration||!this.tween._totalTime)||!N)&&!J&&!M&&!D&&!C&&1===G||Aa&&L||!Fa)return void(B||P||L?(B*=K,x=P*K,y=1e5,c=Math.cos(B)*E,f=Math.sin(B)*E,d=Math.sin(B-x)*-F,g=Math.cos(B-x)*F,x&&"simple"===z.skewType&&(b=Math.tan(x-O*K),b=Math.sqrt(1+b*b),d*=b,g*=b,O&&(b=Math.tan(O*K),b=Math.sqrt(1+b*b),c*=b,f*=b)),L&&(H+=z.xOrigin-(z.xOrigin*c+z.yOrigin*d)+z.xOffset,I+=z.yOrigin-(z.xOrigin*f+z.yOrigin*g)+z.yOffset,Aa&&(z.xPercent||z.yPercent)&&(q=this.t.getBBox(),H+=.01*z.xPercent*q.width,I+=.01*z.yPercent*q.height),q=1e-6,q>H&&H>-q&&(H=0),q>I&&I>-q&&(I=0)),u=(c*y|0)/y+","+(f*y|0)/y+","+(d*y|0)/y+","+(g*y|0)/y+","+H+","+I+")",L&&Aa?this.t.setAttribute("transform","matrix("+u):A[Ca]=(z.xPercent||z.yPercent?"translate("+z.xPercent+"%,"+z.yPercent+"%) matrix(":"matrix(")+u):A[Ca]=(z.xPercent||z.yPercent?"translate("+z.xPercent+"%,"+z.yPercent+"%) matrix(":"matrix(")+E+",0,0,"+F+","+H+","+I+")");if(n&&(q=1e-4,q>E&&E>-q&&(E=G=2e-5),q>F&&F>-q&&(F=G=2e-5),!M||z.z||z.rotationX||z.rotationY||(M=0)),B||P)B*=K,r=c=Math.cos(B),s=f=Math.sin(B),P&&(B-=P*K,r=Math.cos(B),s=Math.sin(B),"simple"===z.skewType&&(b=Math.tan((P-O)*K),b=Math.sqrt(1+b*b),r*=b,s*=b,z.skewY&&(b=Math.tan(O*K),b=Math.sqrt(1+b*b),c*=b,f*=b))),d=-s,g=r;else{if(!(D||C||1!==G||M||L))return void(A[Ca]=(z.xPercent||z.yPercent?"translate("+z.xPercent+"%,"+z.yPercent+"%) translate3d(":"translate3d(")+H+"px,"+I+"px,"+J+"px)"+(1!==E||1!==F?" scale("+E+","+F+")":""));c=g=1,d=f=0}k=1,e=h=i=j=l=m=0,o=M?-1/M:0,p=z.zOrigin,q=1e-6,v=",",w="0",B=D*K,B&&(r=Math.cos(B),s=Math.sin(B),i=-s,l=o*-s,e=c*s,h=f*s,k=r,o*=r,c*=r,f*=r),B=C*K,B&&(r=Math.cos(B),s=Math.sin(B),b=d*r+e*s,t=g*r+h*s,j=k*s,m=o*s,e=d*-s+e*r,h=g*-s+h*r,k*=r,o*=r,d=b,g=t),1!==G&&(e*=G,h*=G,k*=G,o*=G),1!==F&&(d*=F,g*=F,j*=F,m*=F),1!==E&&(c*=E,f*=E,i*=E,l*=E),(p||L)&&(p&&(H+=e*-p,I+=h*-p,J+=k*-p+p),L&&(H+=z.xOrigin-(z.xOrigin*c+z.yOrigin*d)+z.xOffset,I+=z.yOrigin-(z.xOrigin*f+z.yOrigin*g)+z.yOffset),q>H&&H>-q&&(H=w),q>I&&I>-q&&(I=w),q>J&&J>-q&&(J=0)),u=z.xPercent||z.yPercent?"translate("+z.xPercent+"%,"+z.yPercent+"%) matrix3d(":"matrix3d(",u+=(q>c&&c>-q?w:c)+v+(q>f&&f>-q?w:f)+v+(q>i&&i>-q?w:i),u+=v+(q>l&&l>-q?w:l)+v+(q>d&&d>-q?w:d)+v+(q>g&&g>-q?w:g),C||D||1!==G?(u+=v+(q>j&&j>-q?w:j)+v+(q>m&&m>-q?w:m)+v+(q>e&&e>-q?w:e),u+=v+(q>h&&h>-q?w:h)+v+(q>k&&k>-q?w:k)+v+(q>o&&o>-q?w:o)+v):u+=",0,0,0,0,1,0,",u+=H+v+I+v+J+v+(M?1+-J/M:1)+")",A[Ca]=u};j=Ga.prototype,j.x=j.y=j.z=j.skewX=j.skewY=j.rotation=j.rotationX=j.rotationY=j.zOrigin=j.xPercent=j.yPercent=j.xOffset=j.yOffset=0,j.scaleX=j.scaleY=j.scaleZ=1,ya("transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,svgOrigin,transformPerspective,directionalRotation,parseTransform,force3D,skewType,xPercent,yPercent,smoothOrigin",{parser:function(a,b,c,d,f,h,i){if(d._lastParsedTransform===i)return f;d._lastParsedTransform=i;var j,k=i.scale&&"function"==typeof i.scale?i.scale:0;"function"==typeof i[c]&&(j=i[c],i[c]=b),k&&(i.scale=k(r,a));var l,m,n,o,p,s,t,u,v,w=a._gsTransform,x=a.style,y=1e-6,z=Ba.length,A=i,B={},C="transformOrigin",D=Ra(a,e,!0,A.parseTransform),E=A.transform&&("function"==typeof A.transform?A.transform(r,q):A.transform);if(d._transform=D,E&&"string"==typeof E&&Ca)m=Q.style,m[Ca]=E,m.display="block",m.position="absolute",O.body.appendChild(Q),l=Ra(Q,null,!1),D.svg&&(s=D.xOrigin,t=D.yOrigin,l.x-=D.xOffset,l.y-=D.yOffset,(A.transformOrigin||A.svgOrigin)&&(E={},La(a,ha(A.transformOrigin),E,A.svgOrigin,A.smoothOrigin,!0),s=E.xOrigin,t=E.yOrigin,l.x-=E.xOffset-D.xOffset,l.y-=E.yOffset-D.yOffset),(s||t)&&(u=Qa(Q,!0),l.x-=s-(s*u[0]+t*u[2]),l.y-=t-(s*u[1]+t*u[3]))),O.body.removeChild(Q),l.perspective||(l.perspective=D.perspective),null!=A.xPercent&&(l.xPercent=ja(A.xPercent,D.xPercent)),null!=A.yPercent&&(l.yPercent=ja(A.yPercent,D.yPercent));else if("object"==typeof A){if(l={scaleX:ja(null!=A.scaleX?A.scaleX:A.scale,D.scaleX),scaleY:ja(null!=A.scaleY?A.scaleY:A.scale,D.scaleY),scaleZ:ja(A.scaleZ,D.scaleZ),x:ja(A.x,D.x),y:ja(A.y,D.y),z:ja(A.z,D.z),xPercent:ja(A.xPercent,D.xPercent),yPercent:ja(A.yPercent,D.yPercent),perspective:ja(A.transformPerspective,D.perspective)},p=A.directionalRotation,null!=p)if("object"==typeof p)for(m in p)A[m]=p[m];else A.rotation=p;"string"==typeof A.x&&-1!==A.x.indexOf("%")&&(l.x=0,l.xPercent=ja(A.x,D.xPercent)),"string"==typeof A.y&&-1!==A.y.indexOf("%")&&(l.y=0,l.yPercent=ja(A.y,D.yPercent)),l.rotation=ka("rotation"in A?A.rotation:"shortRotation"in A?A.shortRotation+"_short":"rotationZ"in A?A.rotationZ:D.rotation,D.rotation,"rotation",B),Fa&&(l.rotationX=ka("rotationX"in A?A.rotationX:"shortRotationX"in A?A.shortRotationX+"_short":D.rotationX||0,D.rotationX,"rotationX",B),l.rotationY=ka("rotationY"in A?A.rotationY:"shortRotationY"in A?A.shortRotationY+"_short":D.rotationY||0,D.rotationY,"rotationY",B)),l.skewX=ka(A.skewX,D.skewX),l.skewY=ka(A.skewY,D.skewY)}for(Fa&&null!=A.force3D&&(D.force3D=A.force3D,o=!0),D.skewType=A.skewType||D.skewType||g.defaultSkewType,n=D.force3D||D.z||D.rotationX||D.rotationY||l.z||l.rotationX||l.rotationY||l.perspective,n||null==A.scale||(l.scaleZ=1);--z>-1;)v=Ba[z],E=l[v]-D[v],(E>y||-y>E||null!=A[v]||null!=M[v])&&(o=!0,f=new ta(D,v,D[v],E,f),v in B&&(f.e=B[v]),f.xs0=0,f.plugin=h,d._overwriteProps.push(f.n));return E=A.transformOrigin,D.svg&&(E||A.svgOrigin)&&(s=D.xOffset,t=D.yOffset,La(a,ha(E),l,A.svgOrigin,A.smoothOrigin),f=ua(D,"xOrigin",(w?D:l).xOrigin,l.xOrigin,f,C),f=ua(D,"yOrigin",(w?D:l).yOrigin,l.yOrigin,f,C),(s!==D.xOffset||t!==D.yOffset)&&(f=ua(D,"xOffset",w?s:D.xOffset,D.xOffset,f,C),f=ua(D,"yOffset",w?t:D.yOffset,D.yOffset,f,C)),E="0px 0px"),(E||Fa&&n&&D.zOrigin)&&(Ca?(o=!0,v=Ea,E=(E||_(a,v,e,!1,"50% 50%"))+"",f=new ta(x,v,0,0,f,-1,C),f.b=x[v],f.plugin=h,Fa?(m=D.zOrigin,E=E.split(" "),D.zOrigin=(E.length>2&&(0===m||"0px"!==E[2])?parseFloat(E[2]):m)||0,f.xs0=f.e=E[0]+" "+(E[1]||"50%")+" 0px",f=new ta(D,"zOrigin",0,0,f,-1,f.n),f.b=m,f.xs0=f.e=D.zOrigin):f.xs0=f.e=E):ha(E+"",D)),o&&(d._transformType=D.svg&&Aa||!n&&3!==this._transformType?2:3),j&&(i[c]=j),k&&(i.scale=k),f},prefix:!0}),ya("boxShadow",{defaultValue:"0px 0px 0px 0px #999",prefix:!0,color:!0,multi:!0,keyword:"inset"}),ya("borderRadius",{defaultValue:"0px",parser:function(a,b,c,f,g,h){b=this.format(b);var i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y=["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"],z=a.style;for(q=parseFloat(a.offsetWidth),r=parseFloat(a.offsetHeight),i=b.split(" "),j=0;jp?1:0))||""):(p=parseFloat(n),s=n.substr((p+"").length)),""===s&&(s=d[c]||t),s!==t&&(v=aa(a,"borderLeft",o,t),w=aa(a,"borderTop",o,t),"%"===s?(m=v/q*100+"%",l=w/r*100+"%"):"em"===s?(x=aa(a,"borderLeft",1,"em"),m=v/x+"em",l=w/x+"em"):(m=v+"px",l=w+"px"),u&&(n=parseFloat(m)+p+s,k=parseFloat(l)+p+s)),g=va(z,y[j],m+" "+l,n+" "+k,!1,"0px",g);return g},prefix:!0,formatter:qa("0px 0px 0px 0px",!1,!0)}),ya("borderBottomLeftRadius,borderBottomRightRadius,borderTopLeftRadius,borderTopRightRadius",{defaultValue:"0px",parser:function(a,b,c,d,f,g){return va(a.style,c,this.format(_(a,c,e,!1,"0px 0px")),this.format(b),!1,"0px",f)},prefix:!0,formatter:qa("0px 0px",!1,!0)}),ya("backgroundPosition",{defaultValue:"0 0",parser:function(a,b,c,d,f,g){var h,i,j,k,l,m,n="background-position",o=e||$(a,null),q=this.format((o?p?o.getPropertyValue(n+"-x")+" "+o.getPropertyValue(n+"-y"):o.getPropertyValue(n):a.currentStyle.backgroundPositionX+" "+a.currentStyle.backgroundPositionY)||"0 0"),r=this.format(b);if(-1!==q.indexOf("%")!=(-1!==r.indexOf("%"))&&r.split(",").length<2&&(m=_(a,"backgroundImage").replace(D,""),m&&"none"!==m)){for(h=q.split(" "),i=r.split(" "),R.setAttribute("src",m),j=2;--j>-1;)q=h[j],k=-1!==q.indexOf("%"),k!==(-1!==i[j].indexOf("%"))&&(l=0===j?a.offsetWidth-R.width:a.offsetHeight-R.height,h[j]=k?parseFloat(q)/100*l+"px":parseFloat(q)/l*100+"%");q=h.join(" ")}return this.parseComplex(a.style,q,r,f,g)},formatter:ha}),ya("backgroundSize",{defaultValue:"0 0",formatter:function(a){return a+="",ha(-1===a.indexOf(" ")?a+" "+a:a)}}),ya("perspective",{defaultValue:"0px",prefix:!0}),ya("perspectiveOrigin",{defaultValue:"50% 50%",prefix:!0}),ya("transformStyle",{prefix:!0}),ya("backfaceVisibility",{prefix:!0}),ya("userSelect",{prefix:!0}),ya("margin",{parser:ra("marginTop,marginRight,marginBottom,marginLeft")}),ya("padding",{parser:ra("paddingTop,paddingRight,paddingBottom,paddingLeft")}),ya("clip",{defaultValue:"rect(0px,0px,0px,0px)",parser:function(a,b,c,d,f,g){var h,i,j;return 9>p?(i=a.currentStyle,j=8>p?" ":",",h="rect("+i.clipTop+j+i.clipRight+j+i.clipBottom+j+i.clipLeft+")", +b=this.format(b).split(",").join(j)):(h=this.format(_(a,this.p,e,!1,this.dflt)),b=this.format(b)),this.parseComplex(a.style,h,b,f,g)}}),ya("textShadow",{defaultValue:"0px 0px 0px #999",color:!0,multi:!0}),ya("autoRound,strictUnits",{parser:function(a,b,c,d,e){return e}}),ya("border",{defaultValue:"0px solid #000",parser:function(a,b,c,d,f,g){var h=_(a,"borderTopWidth",e,!1,"0px"),i=this.format(b).split(" "),j=i[0].replace(w,"");return"px"!==j&&(h=parseFloat(h)/aa(a,"borderTopWidth",1,j)+j),this.parseComplex(a.style,this.format(h+" "+_(a,"borderTopStyle",e,!1,"solid")+" "+_(a,"borderTopColor",e,!1,"#000")),i.join(" "),f,g)},color:!0,formatter:function(a){var b=a.split(" ");return b[0]+" "+(b[1]||"solid")+" "+(a.match(pa)||["#000"])[0]}}),ya("borderWidth",{parser:ra("borderTopWidth,borderRightWidth,borderBottomWidth,borderLeftWidth")}),ya("float,cssFloat,styleFloat",{parser:function(a,b,c,d,e,f){var g=a.style,h="cssFloat"in g?"cssFloat":"styleFloat";return new ta(g,h,0,0,e,-1,c,!1,0,g[h],b)}});var Ua=function(a){var b,c=this.t,d=c.filter||_(this.data,"filter")||"",e=this.s+this.c*a|0;100===e&&(-1===d.indexOf("atrix(")&&-1===d.indexOf("radient(")&&-1===d.indexOf("oader(")?(c.removeAttribute("filter"),b=!_(this.data,"filter")):(c.filter=d.replace(z,""),b=!0)),b||(this.xn1&&(c.filter=d=d||"alpha(opacity="+e+")"),-1===d.indexOf("pacity")?0===e&&this.xn1||(c.filter=d+" alpha(opacity="+e+")"):c.filter=d.replace(x,"opacity="+e))};ya("opacity,alpha,autoAlpha",{defaultValue:"1",parser:function(a,b,c,d,f,g){var h=parseFloat(_(a,"opacity",e,!1,"1")),i=a.style,j="autoAlpha"===c;return"string"==typeof b&&"="===b.charAt(1)&&(b=("-"===b.charAt(0)?-1:1)*parseFloat(b.substr(2))+h),j&&1===h&&"hidden"===_(a,"visibility",e)&&0!==b&&(h=0),U?f=new ta(i,"opacity",h,b-h,f):(f=new ta(i,"opacity",100*h,100*(b-h),f),f.xn1=j?1:0,i.zoom=1,f.type=2,f.b="alpha(opacity="+f.s+")",f.e="alpha(opacity="+(f.s+f.c)+")",f.data=a,f.plugin=g,f.setRatio=Ua),j&&(f=new ta(i,"visibility",0,0,f,-1,null,!1,0,0!==h?"inherit":"hidden",0===b?"hidden":"inherit"),f.xs0="inherit",d._overwriteProps.push(f.n),d._overwriteProps.push(c)),f}});var Va=function(a,b){b&&(a.removeProperty?(("ms"===b.substr(0,2)||"webkit"===b.substr(0,6))&&(b="-"+b),a.removeProperty(b.replace(B,"-$1").toLowerCase())):a.removeAttribute(b))},Wa=function(a){if(this.t._gsClassPT=this,1===a||0===a){this.t.setAttribute("class",0===a?this.b:this.e);for(var b=this.data,c=this.t.style;b;)b.v?c[b.p]=b.v:Va(c,b.p),b=b._next;1===a&&this.t._gsClassPT===this&&(this.t._gsClassPT=null)}else this.t.getAttribute("class")!==this.e&&this.t.setAttribute("class",this.e)};ya("className",{parser:function(a,b,d,f,g,h,i){var j,k,l,m,n,o=a.getAttribute("class")||"",p=a.style.cssText;if(g=f._classNamePT=new ta(a,d,0,0,g,2),g.setRatio=Wa,g.pr=-11,c=!0,g.b=o,k=ca(a,e),l=a._gsClassPT){for(m={},n=l.data;n;)m[n.p]=1,n=n._next;l.setRatio(1)}return a._gsClassPT=g,g.e="="!==b.charAt(1)?b:o.replace(new RegExp("(?:\\s|^)"+b.substr(2)+"(?![\\w-])"),"")+("+"===b.charAt(0)?" "+b.substr(2):""),a.setAttribute("class",g.e),j=da(a,k,ca(a),i,m),a.setAttribute("class",o),g.data=j.firstMPT,a.style.cssText=p,g=g.xfirst=f.parse(a,j.difs,g,h)}});var Xa=function(a){if((1===a||0===a)&&this.data._totalTime===this.data._totalDuration&&"isFromStart"!==this.data.data){var b,c,d,e,f,g=this.t.style,h=i.transform.parse;if("all"===this.e)g.cssText="",e=!0;else for(b=this.e.split(" ").join("").split(","),d=b.length;--d>-1;)c=b[d],i[c]&&(i[c].parse===h?e=!0:c="transformOrigin"===c?Ea:i[c].p),Va(g,c);e&&(Va(g,Ca),f=this.t._gsTransform,f&&(f.svg&&(this.t.removeAttribute("data-svg-origin"),this.t.removeAttribute("transform")),delete this.t._gsTransform))}};for(ya("clearProps",{parser:function(a,b,d,e,f){return f=new ta(a,d,0,0,f,2),f.setRatio=Xa,f.e=b,f.pr=-10,f.data=e._tween,c=!0,f}}),j="bezier,throwProps,physicsProps,physics2D".split(","),wa=j.length;wa--;)za(j[wa]);j=g.prototype,j._firstPT=j._lastParsedTransform=j._transform=null,j._onInitTween=function(a,b,h,j){if(!a.nodeType)return!1;this._target=q=a,this._tween=h,this._vars=b,r=j,k=b.autoRound,c=!1,d=b.suffixMap||g.suffixMap,e=$(a,""),f=this._overwriteProps;var n,p,s,t,u,v,w,x,z,A=a.style;if(l&&""===A.zIndex&&(n=_(a,"zIndex",e),("auto"===n||""===n)&&this._addLazySet(A,"zIndex",0)),"string"==typeof b&&(t=A.cssText,n=ca(a,e),A.cssText=t+";"+b,n=da(a,n,ca(a)).difs,!U&&y.test(b)&&(n.opacity=parseFloat(RegExp.$1)),b=n,A.cssText=t),b.className?this._firstPT=p=i.className.parse(a,b.className,"className",this,null,null,b):this._firstPT=p=this.parse(a,b,null),this._transformType){for(z=3===this._transformType,Ca?m&&(l=!0,""===A.zIndex&&(w=_(a,"zIndex",e),("auto"===w||""===w)&&this._addLazySet(A,"zIndex",0)),o&&this._addLazySet(A,"WebkitBackfaceVisibility",this._vars.WebkitBackfaceVisibility||(z?"visible":"hidden"))):A.zoom=1,s=p;s&&s._next;)s=s._next;x=new ta(a,"transform",0,0,null,2),this._linkCSSP(x,null,s),x.setRatio=Ca?Ta:Sa,x.data=this._transform||Ra(a,e,!0),x.tween=h,x.pr=-1,f.pop()}if(c){for(;p;){for(v=p._next,s=t;s&&s.pr>p.pr;)s=s._next;(p._prev=s?s._prev:u)?p._prev._next=p:t=p,(p._next=s)?s._prev=p:u=p,p=v}this._firstPT=t}return!0},j.parse=function(a,b,c,f){var g,h,j,l,m,n,o,p,s,t,u=a.style;for(g in b)n=b[g],"function"==typeof n&&(n=n(r,q)),h=i[g],h?c=h.parse(a,n,g,this,c,f,b):(m=_(a,g,e)+"",s="string"==typeof n,"color"===g||"fill"===g||"stroke"===g||-1!==g.indexOf("Color")||s&&A.test(n)?(s||(n=na(n),n=(n.length>3?"rgba(":"rgb(")+n.join(",")+")"),c=va(u,g,m,n,!0,"transparent",c,0,f)):s&&J.test(n)?c=va(u,g,m,n,!0,null,c,0,f):(j=parseFloat(m),o=j||0===j?m.substr((j+"").length):"",(""===m||"auto"===m)&&("width"===g||"height"===g?(j=ga(a,g,e),o="px"):"left"===g||"top"===g?(j=ba(a,g,e),o="px"):(j="opacity"!==g?0:1,o="")),t=s&&"="===n.charAt(1),t?(l=parseInt(n.charAt(0)+"1",10),n=n.substr(2),l*=parseFloat(n),p=n.replace(w,"")):(l=parseFloat(n),p=s?n.replace(w,""):""),""===p&&(p=g in d?d[g]:o),n=l||0===l?(t?l+j:l)+p:b[g],o!==p&&""!==p&&(l||0===l)&&j&&(j=aa(a,g,j,o),"%"===p?(j/=aa(a,g,100,"%")/100,b.strictUnits!==!0&&(m=j+"%")):"em"===p||"rem"===p||"vw"===p||"vh"===p?j/=aa(a,g,1,p):"px"!==p&&(l=aa(a,g,l,p),p="px"),t&&(l||0===l)&&(n=l+j+p)),t&&(l+=j),!j&&0!==j||!l&&0!==l?void 0!==u[g]&&(n||n+""!="NaN"&&null!=n)?(c=new ta(u,g,l||j||0,0,c,-1,g,!1,0,m,n),c.xs0="none"!==n||"display"!==g&&-1===g.indexOf("Style")?n:m):W("invalid "+g+" tween value: "+b[g]):(c=new ta(u,g,j,l-j,c,0,g,k!==!1&&("px"===p||"zIndex"===g),0,m,n),c.xs0=p))),f&&c&&!c.plugin&&(c.plugin=f);return c},j.setRatio=function(a){var b,c,d,e=this._firstPT,f=1e-6;if(1!==a||this._tween._time!==this._tween._duration&&0!==this._tween._time)if(a||this._tween._time!==this._tween._duration&&0!==this._tween._time||this._tween._rawPrevTime===-1e-6)for(;e;){if(b=e.c*a+e.s,e.r?b=Math.round(b):f>b&&b>-f&&(b=0),e.type)if(1===e.type)if(d=e.l,2===d)e.t[e.p]=e.xs0+b+e.xs1+e.xn1+e.xs2;else if(3===d)e.t[e.p]=e.xs0+b+e.xs1+e.xn1+e.xs2+e.xn2+e.xs3;else if(4===d)e.t[e.p]=e.xs0+b+e.xs1+e.xn1+e.xs2+e.xn2+e.xs3+e.xn3+e.xs4;else if(5===d)e.t[e.p]=e.xs0+b+e.xs1+e.xn1+e.xs2+e.xn2+e.xs3+e.xn3+e.xs4+e.xn4+e.xs5;else{for(c=e.xs0+b+e.xs1,d=1;d-1;)Za(a[e],b,c);else for(d=a.childNodes,e=d.length;--e>-1;)f=d[e],g=f.type,f.style&&(b.push(ca(f)),c&&c.push(f)),1!==g&&9!==g&&11!==g||!f.childNodes.length||Za(f,b,c)};return g.cascadeTo=function(a,c,d){var e,f,g,h,i=b.to(a,c,d),j=[i],k=[],l=[],m=[],n=b._internals.reservedProps;for(a=i._targets||i.target,Za(a,k,m),i.render(c,!0,!0),Za(a,l),i.render(0,!0,!0),i._enabled(!0),e=m.length;--e>-1;)if(f=da(m[e],k[e],l[e]),f.firstMPT){f=f.difs;for(g in d)n[g]&&(f[g]=d[g]);h={};for(g in f)h[g]=k[e][g];j.push(b.fromTo(m[e],c,h,f))}return j},a.activate([g]),g},!0)}),_gsScope._gsDefine&&_gsScope._gsQueue.pop()(),function(a){"use strict";var b=function(){return(_gsScope.GreenSockGlobals||_gsScope)[a]};"function"==typeof define&&define.amd?define(["TweenLite"],b):"undefined"!=typeof module&&module.exports&&(require("../TweenLite.js"),module.exports=b())}("CSSPlugin"); + + +/* SPLIT TEXT UTIL */ +/*! + * VERSION: 0.5.6 + * DATE: 2017-01-17 + * UPDATES AND DOCS AT: http://greensock.com + * + * @license Copyright (c) 2008-2017, GreenSock. All rights reserved. + * SplitText is a Club GreenSock membership benefit; You must have a valid membership to use + * this code without violating the terms of use. Visit http://greensock.com/club/ to sign up or get more details. + * This work is subject to the software agreement that was issued with your membership. + * + * @author: Jack Doyle, jack@greensock.com + */ +var _gsScope="undefined"!=typeof module&&module.exports&&"undefined"!=typeof global?global:this||window;!function(a){"use strict";var b=a.GreenSockGlobals||a,c=function(a){var c,d=a.split("."),e=b;for(c=0;cb;b++)if(c=a[b],j(c))for(d=c.length,d=0;d":">")}},y=d.SplitText=b.SplitText=function(a,b){if("string"==typeof a&&(a=y.selector(a)),!a)throw"cannot split a null element.";this.elements=j(a)?k(a):[a],this.chars=[],this.words=[],this.lines=[],this._originals=[],this.vars=b||{},this.split(b)},z=function(a,b,c){var d=a.nodeType;if(1===d||9===d||11===d)for(a=a.firstChild;a;a=a.nextSibling)z(a,b,c);else(3===d||4===d)&&(a.nodeValue=a.nodeValue.split(b).join(c))},A=function(a,b){for(var c=b.length;--c>-1;)a.push(b[c])},B=function(a){var b,c=[],d=a.length;for(b=0;b!==d;c.push(a[b++]));return c},C=function(a,b,c){for(var d;a&&a!==b;){if(d=a._next||a.nextSibling)return d.textContent.charAt(0)===c;a=a.parentNode||a._parent}return!1},D=function(a){var b,c,d=B(a.childNodes),e=d.length;for(b=0;e>b;b++)c=d[b],c._isSplit?D(c):(b&&3===c.previousSibling.nodeType?c.previousSibling.nodeValue+=3===c.nodeType?c.nodeValue:c.firstChild.nodeValue:3!==c.nodeType&&a.insertBefore(c.firstChild,c),a.removeChild(c))},E=function(a,b,c,d,e,h,j){var k,l,m,n,o,p,q,r,s,t,u,v,w=g(a),x=i(a,"paddingLeft",w),y=-999,B=i(a,"borderBottomWidth",w)+i(a,"borderTopWidth",w),E=i(a,"borderLeftWidth",w)+i(a,"borderRightWidth",w),F=i(a,"paddingTop",w)+i(a,"paddingBottom",w),G=i(a,"paddingLeft",w)+i(a,"paddingRight",w),H=.2*i(a,"fontSize"),I=i(a,"textAlign",w,!0),J=[],K=[],L=[],M=b.wordDelimiter||" ",N=b.span?"span":"div",O=b.type||b.split||"chars,words,lines",P=e&&-1!==O.indexOf("lines")?[]:null,Q=-1!==O.indexOf("words"),R=-1!==O.indexOf("chars"),S="absolute"===b.position||b.absolute===!0,T=b.linesClass,U=-1!==(T||"").indexOf("++"),V=[];for(P&&1===a.children.length&&a.children[0]._isSplit&&(a=a.children[0]),U&&(T=T.split("++").join("")),l=a.getElementsByTagName("*"),m=l.length,o=[],k=0;m>k;k++)o[k]=l[k];if(P||S)for(k=0;m>k;k++)n=o[k],p=n.parentNode===a,(p||S||R&&!Q)&&(v=n.offsetTop,P&&p&&Math.abs(v-y)>H&&"BR"!==n.nodeName&&(q=[],P.push(q),y=v),S&&(n._x=n.offsetLeft,n._y=v,n._w=n.offsetWidth,n._h=n.offsetHeight),P&&((n._isSplit&&p||!R&&p||Q&&p||!Q&&n.parentNode.parentNode===a&&!n.parentNode._isSplit)&&(q.push(n),n._x-=x,C(n,a,M)&&(n._wordEnd=!0)),"BR"===n.nodeName&&n.nextSibling&&"BR"===n.nextSibling.nodeName&&P.push([])));for(k=0;m>k;k++)n=o[k],p=n.parentNode===a,"BR"!==n.nodeName?(S&&(s=n.style,Q||p||(n._x+=n.parentNode._x,n._y+=n.parentNode._y),s.left=n._x+"px",s.top=n._y+"px",s.position="absolute",s.display="block",s.width=n._w+1+"px",s.height=n._h+"px"),!Q&&R?n._isSplit?(n._next=n.nextSibling,n.parentNode.appendChild(n)):n.parentNode._isSplit?(n._parent=n.parentNode,!n.previousSibling&&n.firstChild&&(n.firstChild._isFirst=!0),n.nextSibling&&" "===n.nextSibling.textContent&&!n.nextSibling.nextSibling&&V.push(n.nextSibling),n._next=n.nextSibling&&n.nextSibling._isFirst?null:n.nextSibling,n.parentNode.removeChild(n),o.splice(k--,1),m--):p||(v=!n.nextSibling&&C(n.parentNode,a,M),n.parentNode._parent&&n.parentNode._parent.appendChild(n),v&&n.parentNode.appendChild(f.createTextNode(" ")),b.span&&(n.style.display="inline"),J.push(n)):n.parentNode._isSplit&&!n._isSplit&&""!==n.innerHTML?K.push(n):R&&!n._isSplit&&(b.span&&(n.style.display="inline"),J.push(n))):P||S?(n.parentNode&&n.parentNode.removeChild(n),o.splice(k--,1),m--):Q||a.appendChild(n);for(k=V.length;--k>-1;)V[k].parentNode.removeChild(V[k]);if(P){for(S&&(t=f.createElement(N),a.appendChild(t),u=t.offsetWidth+"px",v=t.offsetParent===a?0:a.offsetLeft,a.removeChild(t)),s=a.style.cssText,a.style.cssText="display:none;";a.firstChild;)a.removeChild(a.firstChild);for(r=" "===M&&(!S||!Q&&!R),k=0;kl;l++)"BR"!==q[l].nodeName&&(n=q[l],t.appendChild(n),r&&n._wordEnd&&t.appendChild(f.createTextNode(" ")),S&&(0===l&&(t.style.top=n._y+"px",t.style.left=x+v+"px"),n.style.top="0px",v&&(n.style.left=n._x-v+"px")));0===m?t.innerHTML=" ":Q||R||(D(t),z(t,String.fromCharCode(160)," ")),S&&(t.style.width=u,t.style.height=n._h+"px"),a.appendChild(t)}a.style.cssText=s}S&&(j>a.clientHeight&&(a.style.height=j-F+"px",a.clientHeighta.clientWidth&&(a.style.width=h-G+"px",a.clientWidth":"",G=!0,H=f.createElement("div"),I=a.parentNode;for(I.insertBefore(H,a),H.textContent=a.nodeValue,I.removeChild(a),a=H,g=e(a),v=-1!==g.indexOf("<"),b.reduceWhiteSpace!==!1&&(g=g.replace(m," ").replace(l,"")),v&&(g=g.split("<").join("{{LT}}")),k=g.length,h=(" "===g.charAt(0)?E:"")+c(),i=0;k>i;i++)if(p=g.charAt(i),p===D&&g.charAt(i-1)!==D&&i){for(h+=G?F:"",G=!1;g.charAt(i+1)===D;)h+=E,i++;i===k-1?h+=E:")"!==g.charAt(i+1)&&(h+=E+c(),G=!0)}else"{"===p&&"{{LT}}"===g.substr(i,6)?(h+=B?d()+"{{LT}}":"{{LT}}",i+=5):p.charCodeAt(0)>=n&&p.charCodeAt(0)<=o||g.charCodeAt(i+1)>=65024&&g.charCodeAt(i+1)<=65039?(w=u(g.substr(i,2)),x=u(g.substr(i+2,2)),j=w>=q&&r>=w&&x>=q&&r>=x||x>=s&&t>=x?4:2,h+=B&&" "!==p?d()+g.substr(i,j)+"":g.substr(i,j),i+=j-1):h+=B&&" "!==p?d()+p+"":p;a.outerHTML=h+(G?F:""),v&&z(I,"{{LT}}","<")},G=function(a,b,c,d){var e,f,g=B(a.childNodes),h=g.length,j="absolute"===b.position||b.absolute===!0;if(3!==a.nodeType||h>1){for(b.absolute=!1,e=0;h>e;e++)f=g[e],(3!==f.nodeType||/\S+/.test(f.nodeValue))&&(j&&3!==f.nodeType&&"inline"===i(f,"display",null,!0)&&(f.style.display="inline-block",f.style.position="relative"),f._isSplit=!0,G(f,b,c,d));return b.absolute=j,void(a._isSplit=!0)}F(a,b,c,d)},H=y.prototype;H.split=function(a){this.isSplit&&this.revert(),this.vars=a=a||this.vars,this._originals.length=this.chars.length=this.words.length=this.lines.length=0;for(var b,c,d,e=this.elements.length,f=a.span?"span":"div",g=("absolute"===a.position||a.absolute===!0,x(a.wordsClass,f)),h=x(a.charsClass,f);--e>-1;)d=this.elements[e],this._originals[e]=d.innerHTML,b=d.clientHeight,c=d.clientWidth,G(d,a,g,h),E(d,a,this.chars,this.words,this.lines,c,b);return this.chars.reverse(),this.words.reverse(),this.lines.reverse(),this.isSplit=!0,this},H.revert=function(){if(!this._originals)throw"revert() call wasn't scoped properly.";for(var a=this._originals.length;--a>-1;)this.elements[a].innerHTML=this._originals[a];return this.chars=[],this.words=[],this.lines=[],this.isSplit=!1,this},y.selector=a.$||a.jQuery||function(b){var c=a.$||a.jQuery;return c?(y.selector=c,c(b)):"undefined"==typeof document?b:document.querySelectorAll?document.querySelectorAll(b):document.getElementById("#"===b.charAt(0)?b.substr(1):b)},y.version="0.5.6"}(_gsScope),function(a){"use strict";var b=function(){return(_gsScope.GreenSockGlobals||_gsScope)[a]};"function"==typeof define&&define.amd?define([],b):"undefined"!=typeof module&&module.exports&&(module.exports=b())}("SplitText"); + + +try{ + window.GreenSockGlobals = null; + window._gsQueue = null; + window._gsDefine = null; + + delete(window.GreenSockGlobals); + delete(window._gsQueue); + delete(window._gsDefine); + } catch(e) {} + +try{ + window.GreenSockGlobals = oldgs; + window._gsQueue = oldgs_queue; + } catch(e) {} + +if (window.tplogs==true) + try { + console.groupEnd(); + } catch(e) {} + +(function(e,t){ + e.waitForImages={hasImageProperties:["backgroundImage","listStyleImage","borderImage","borderCornerImage"]};e.expr[":"].uncached=function(t){var n=document.createElement("img");n.src=t.src;return e(t).is('img[src!=""]')&&!n.complete};e.fn.waitForImages=function(t,n,r){if(e.isPlainObject(arguments[0])){n=t.each;r=t.waitForAll;t=t.finished}t=t||e.noop;n=n||e.noop;r=!!r;if(!e.isFunction(t)||!e.isFunction(n)){throw new TypeError("An invalid callback was supplied.")}return this.each(function(){var i=e(this),s=[];if(r){var o=e.waitForImages.hasImageProperties||[],u=/url\((['"]?)(.*?)\1\)/g;i.find("*").each(function(){var t=e(this);if(t.is("img:uncached")){s.push({src:t.attr("src"),element:t[0]})}e.each(o,function(e,n){var r=t.css(n);if(!r){return true}var i;while(i=u.exec(r)){s.push({src:i[2],element:t[0]})}})})}else{i.find("img:uncached").each(function(){s.push({src:this.src,element:this})})}var f=s.length,l=0;if(f==0){t.call(i[0])}e.each(s,function(r,s){var o=new Image;e(o).bind("load error",function(e){l++;n.call(s.element,l,f,e.type=="load");if(l==f){t.call(i[0]);return false}});o.src=s.src})})}; +})(jQuery); diff --git a/think.greaterchiangmai.com/public/revolution/js/source/index.php b/think.greaterchiangmai.com/public/revolution/js/source/index.php new file mode 100644 index 0000000..e69de29 diff --git a/think.greaterchiangmai.com/public/revolution/js/source/jquery.themepunch.enablelog.js b/think.greaterchiangmai.com/public/revolution/js/source/jquery.themepunch.enablelog.js new file mode 100644 index 0000000..3b73f58 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/js/source/jquery.themepunch.enablelog.js @@ -0,0 +1 @@ +window.tplogs = true; \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/js/source/jquery.themepunch.revolution.js b/think.greaterchiangmai.com/public/revolution/js/source/jquery.themepunch.revolution.js new file mode 100644 index 0000000..aa25c58 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/js/source/jquery.themepunch.revolution.js @@ -0,0 +1,3286 @@ +/************************************************************************** + * jquery.themepunch.revolution.js - jQuery Plugin for Revolution Slider + * @version: 5.4.8 (10.06.2018) + * @requires jQuery v1.7 or later (tested on 1.9) + * @author ThemePunch +**************************************************************************/ +;(function(jQuery,undefined){ +"use strict"; + + var version = { + core : "5.4.8", + "revolution.extensions.actions.min.js":"2.1.0", + "revolution.extensions.carousel.min.js":"1.2.1", + "revolution.extensions.kenburn.min.js":"1.3.1", + "revolution.extensions.layeranimation.min.js":"3.6.5", + "revolution.extensions.navigation.min.js":"1.3.5", + "revolution.extensions.parallax.min.js":"2.2.3", + "revolution.extensions.slideanims.min.js":"1.8", + "revolution.extensions.video.min.js":"2.2.2" + }; + + jQuery.fn.extend({ + + revolution: function(options) { + + // SET DEFAULT VALUES OF ITEM // + var defaults = { + delay:9000, + responsiveLevels:4064, // Single or Array for Responsive Levels i.e.: 4064 or i.e. [2048, 1024, 768, 480] + visibilityLevels:[2048,1024,778,480], // Single or Array for Responsive Visibility Levels i.e.: 4064 or i.e. [2048, 1024, 768, 480] + gridwidth:960, // Single or Array i.e. 960 or [960, 840,760,460] + gridheight:500, // Single or Array i.e. 500 or [500, 450,400,350] + minHeight:0, + autoHeight:"off", + sliderType : "standard", // standard, carousel, hero + sliderLayout : "auto", // auto, fullwidth, fullscreen + + fullScreenAutoWidth:"off", // Turns the FullScreen Slider to be a FullHeight but auto Width Slider + fullScreenAlignForce:"off", + fullScreenOffsetContainer:"", // Size for FullScreen Slider minimising Calculated on the Container sizes + fullScreenOffset:"0", // Size for FullScreen Slider minimising + + hideCaptionAtLimit:0, // It Defines if a caption should be shown under a Screen Resolution ( Basod on The Width of Browser) + hideAllCaptionAtLimit:0, // Hide all The Captions if Width of Browser is less then this value + hideSliderAtLimit:0, // Hide the whole slider, and stop also functions if Width of Browser is less than this value + disableProgressBar:"off", // Hides Progress Bar if is set to "on" + stopAtSlide:-1, // Stop Timer if Slide "x" has been Reached. If stopAfterLoops set to 0, then it stops already in the first Loop at slide X which defined. -1 means do not stop at any slide. stopAfterLoops has no sinn in this case. + stopAfterLoops:-1, // Stop Timer if All slides has been played "x" times. IT will stop at THe slide which is defined via stopAtSlide:x, if set to -1 slide never stop automatic + shadow:0, //0 = no Shadow, 1,2,3 = 3 Different Art of Shadows (No Shadow in Fullwidth Version !) + dottedOverlay:"none", //twoxtwo, threexthree, twoxtwowhite, threexthreewhite + startDelay:0, // Delay before the first Animation starts. + lazyType : "smart", //full, smart, single + spinner:"spinner0", + shuffle:"off", // Random Order of Slides, + + + viewPort:{ + enable:false, // if enabled, slider wait with start or wait at first slide. + outof:"wait", // wait,pause + visible_area:"60%", // Start Animation when 60% of Slider is visible + presize:false // Presize the Height of the Slider Container for Internal Link Positions + }, + + fallbacks:{ + isJoomla:false, + panZoomDisableOnMobile:"off", + simplifyAll:"on", + nextSlideOnWindowFocus:"off", + disableFocusListener:true, + ignoreHeightChanges:"off", // off, mobile, always + ignoreHeightChangesSize:0, + allowHTML5AutoPlayOnAndroid:true + + }, + + parallax : { + type : "off", // off, mouse, scroll, mouse+scroll + levels: [10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85], + origo:"enterpoint", // slidercenter or enterpoint + speed:400, + bgparallax : "off", + opacity:"on", + disable_onmobile:"off", + ddd_shadow:"on", + ddd_bgfreeze:"off", + ddd_overflow:"visible", + ddd_layer_overflow:"visible", + ddd_z_correction:65, + ddd_path:"mouse" + }, + + scrolleffect: { + fade:"off", + blur:"off", + scale:"off", + grayscale:"off", + maxblur:10, + on_layers:"off", + on_slidebg:"off", + on_static_layers:"off", + on_parallax_layers:"off", + on_parallax_static_layers:"off", + direction:"both", + multiplicator:1.35, + multiplicator_layers:0.5, + tilt:30, + disable_on_mobile:"on" + }, + + carousel : { + easing:punchgs.Power3.easeInOut, + speed:800, + showLayersAllTime : "off", + horizontal_align : "center", + vertical_align : "center", + infinity : "on", + space : 0, + maxVisibleItems : 3, + stretch:"off", + fadeout:"on", + maxRotation:0, + minScale:0, + vary_fade:"off", + vary_rotation:"on", + vary_scale:"off", + border_radius:"0px", + padding_top:0, + padding_bottom:0 + }, + + navigation : { + keyboardNavigation:"off", + keyboard_direction:"horizontal", // horizontal - left/right arrows, vertical - top/bottom arrows + mouseScrollNavigation:"off", // on, off, carousel + onHoverStop:"on", // Stop Banner Timet at Hover on Slide on/off + + touch:{ + touchenabled:"off", // Enable Swipe Function : on/off + touchOnDesktop:"off", // Enable Tuoch on Desktop Systems also + swipe_treshold : 75, // The number of pixels that the user must move their finger by before it is considered a swipe. + swipe_min_touches : 1, // Min Finger (touch) used for swipe + drag_block_vertical:false, // Prevent Vertical Scroll during Swipe + swipe_direction:"horizontal" + }, + arrows: { + style:"", + enable:false, + hide_onmobile:false, + hide_onleave:true, + hide_delay:200, + hide_delay_mobile:1200, + hide_under:0, + hide_over:9999, + tmp:'', + rtl:false, + left : { + h_align:"left", + v_align:"center", + h_offset:20, + v_offset:0, + container:"slider", + }, + right : { + h_align:"right", + v_align:"center", + h_offset:20, + v_offset:0, + container:"slider", + } + }, + bullets: { + container:"slider", + rtl:false, + style:"", + enable:false, + hide_onmobile:false, + hide_onleave:true, + hide_delay:200, + hide_delay_mobile:1200, + hide_under:0, + hide_over:9999, + direction:"horizontal", + h_align:"left", + v_align:"center", + space:0, + h_offset:20, + v_offset:0, + tmp:'' + }, + thumbnails: { + container:"slider", + rtl:false, + style:"", + enable:false, + width:100, + height:50, + min_width:100, + wrapper_padding:2, + wrapper_color:"#f5f5f5", + wrapper_opacity:1, + tmp:'', + visibleAmount:5, + hide_onmobile:false, + hide_onleave:true, + hide_delay:200, + hide_delay_mobile:1200, + hide_under:0, + hide_over:9999, + direction:"horizontal", + span:false, + position:"inner", + space:2, + h_align:"left", + v_align:"center", + h_offset:20, + v_offset:0 + }, + tabs: { + container:"slider", + rtl:false, + style:"", + enable:false, + width:100, + min_width:100, + height:50, + wrapper_padding:10, + wrapper_color:"#f5f5f5", + wrapper_opacity:1, + tmp:'', + visibleAmount:5, + hide_onmobile:false, + hide_onleave:true, + hide_delay:200, + hide_delay_mobile:1200, + hide_under:0, + hide_over:9999, + direction:"horizontal", + span:false, + space:0, + position:"inner", + h_align:"left", + v_align:"center", + h_offset:20, + v_offset:0 + } + }, + extensions:"extensions/", //example extensions/ or extensions/source/ + extensions_suffix:".min.js", + //addons:[{fileprefix:"revolution.addon.whiteboard",init:"initWhiteBoard",params:"opt",handel:"whiteboard"}], + debugMode:false + }; + + // Merge of Defaults + options = jQuery.extend(true,{},defaults, options); + + return this.each(function() { + + + var c = jQuery(this); + + // Prepare maxHeight + options.minHeight = options.minHeight!=undefined ? parseInt(options.minHeight,0) : options.minHeight; + options.scrolleffect.on = options.scrolleffect.fade==="on" || options.scrolleffect.scale==="on" || options.scrolleffect.blur==="on" || options.scrolleffect.grayscale==="on"; + + + + //REMOVE SLIDES IF SLIDER IS HERO + if (options.sliderType=="hero") { + c.find('>ul>li').each(function(i) { + if (i>0) jQuery(this).remove(); + }) + } + options.jsFileLocation = options.jsFileLocation || getScriptLocation("themepunch.revolution.min.js"); + options.jsFileLocation = options.jsFileLocation + options.extensions; + options.scriptsneeded = getNeededScripts(options,c); + options.curWinRange = 0; + + options.rtl = true; //jQuery('body').hasClass("rtl"); + + if (options.navigation!=undefined && options.navigation.touch!=undefined) + options.navigation.touch.swipe_min_touches = options.navigation.touch.swipe_min_touches >5 ? 1 : options.navigation.touch.swipe_min_touches; + + + + jQuery(this).on("scriptsloaded",function() { + if (options.modulesfailing ) { + c.html('
      !! Error at loading Slider Revolution 5.0 Extrensions.'+options.errorm+'
      ').show(); + return false; + } + + // CHECK FOR MIGRATION + if (_R.migration!=undefined) options = _R.migration(c,options); + + punchgs.force3D = true; + if (options.simplifyAll!=="on") punchgs.TweenLite.lagSmoothing(1000,16); + prepareOptions(c,options); + initSlider(c,options); + }); + + c[0].opt = options; + waitForScripts(c,options); + }) + }, + + //Get All Loaded Version + getRSVersion : function(silent) { + if (silent===true) { + return jQuery('body').data('tp_rs_version'); + } else { + var v = jQuery('body').data('tp_rs_version'), + t = ""; + t += ("---------------------------------------------------------")+"\n"; + t += (" Currently Loaded Slider Revolution & SR Modules :")+"\n"; + t += ("---------------------------------------------------------")+"\n"; + for (var key in v) { + t += (v[key].alias+": "+v[key].ver)+"\n"; + } + t +=("---------------------------------------------------------")+"\n"; + return t; + }; + }, + + + // Remove a Slide from the Slider + revremoveslide : function(sindex) { + + return this.each(function() { + + var container=jQuery(this), + opt = container[0].opt; + + if (sindex<0 || sindex>opt.slideamount) return; + + if (container!=undefined && container.length>0 && jQuery('body').find('#'+container.attr('id')).length>0) { + + if (opt && opt.li.length>0) { + if (sindex>0 || sindex<=opt.li.length) { + + var li = jQuery(opt.li[sindex]), + ref = li.data("index"), + nextslideafter = false; + + opt.slideamount = opt.slideamount-1; + opt.realslideamount = opt.realslideamount-1; + removeNavWithLiref('.tp-bullet',ref,opt); + removeNavWithLiref('.tp-tab',ref,opt); + removeNavWithLiref('.tp-thumb',ref,opt); + if (li.hasClass('active-revslide')) + nextslideafter = true; + li.remove(); + opt.li = removeArray(opt.li,sindex); + if (opt.carousel && opt.carousel.slides) + opt.carousel.slides = removeArray(opt.carousel.slides,sindex) + opt.thumbs = removeArray(opt.thumbs,sindex); + if (_R.updateNavIndexes) _R.updateNavIndexes(opt); + if (nextslideafter) container.revnext(); + punchgs.TweenLite.set(opt.li,{minWidth:"99%"}); + punchgs.TweenLite.set(opt.li,{minWidth:"100%"}); + } + } + } + }); + + }, + + // Add a New Call Back to some Module + revaddcallback: function(callback) { + return this.each(function() { + if (this.opt) { + if (this.opt.callBackArray === undefined) + this.opt.callBackArray = new Array(); + this.opt.callBackArray.push(callback); + } + }) + }, + + // Get Current Parallax Proc + revgetparallaxproc : function() { + return jQuery(this)[0].opt.scrollproc; + }, + + // ENABLE DEBUG MODE + revdebugmode: function() { + return this.each(function() { + var c=jQuery(this); + c[0].opt.debugMode = true; + containerResized(c,c[0].opt); + + }) + }, + + // METHODE SCROLL + revscroll: function(oy) { + return this.each(function() { + var c=jQuery(this); + jQuery('body,html').animate({scrollTop:(c.offset().top+(c.height())-oy)+"px"},{duration:400}); + }); + }, + + // METHODE PAUSE + revredraw: function(oy) { + return this.each(function() { + var c=jQuery(this); + containerResized(c,c[0].opt); + }) + }, + // METHODE PAUSE + revkill: function(oy) { + + var self = this, + container=jQuery(this); + + punchgs.TweenLite.killDelayedCallsTo(_R.showHideNavElements); + + + if (container!=undefined && container.length>0 && jQuery('body').find('#'+container.attr('id')).length>0) { + + container.data('conthover',1); + container.data('conthover-changed',1); + container.trigger('revolution.slide.onpause'); + + var bt = container.parent().find('.tp-bannertimer'), + opt = container[0].opt; + opt.tonpause = true; + container.trigger('stoptimer'); + + var resizid = "resize.revslider-"+container.attr('id'); + jQuery(window).unbind(resizid); + + punchgs.TweenLite.killTweensOf(container.find('*'),false); + punchgs.TweenLite.killTweensOf(container,false); + container.unbind('hover, mouseover, mouseenter,mouseleave, resize'); + var resizid = "resize.revslider-"+container.attr('id'); + jQuery(window).off(resizid); + container.find('*').each(function() { + var el = jQuery(this); + + el.unbind('on, hover, mouseenter,mouseleave,mouseover, resize,restarttimer, stoptimer'); + el.off('on, hover, mouseenter,mouseleave,mouseover, resize'); + el.data('mySplitText',null); + el.data('ctl',null); + if (el.data('tween')!=undefined) + el.data('tween').kill(); + if (el.data('kenburn')!=undefined) + el.data('kenburn').kill(); + if (el.data('timeline_out')!=undefined) + el.data('timeline_out').kill(); + if (el.data('timeline')!=undefined) + el.data('timeline').kill(); + + el.remove(); + el.empty(); + el=null; + }) + + + punchgs.TweenLite.killTweensOf(container.find('*'),false); + punchgs.TweenLite.killTweensOf(container,false); + bt.remove(); + try{container.closest('.forcefullwidth_wrapper_tp_banner').remove();} catch(e) {} + try{container.closest('.rev_slider_wrapper').remove()} catch(e) {} + try{container.remove();} catch(e) {} + container.empty(); + container.html(); + container = null; + + opt = null; + delete(self.c); + delete(self.opt); + delete(self.container); + + + return true; + } else { + return false; + } + }, + + // METHODE PAUSE + revpause: function() { + return this.each(function() { + var c=jQuery(this); + if (c!=undefined && c.length>0 && jQuery('body').find('#'+c.attr('id')).length>0) { + c.data('conthover',1); + c.data('conthover-changed',1); + c.trigger('revolution.slide.onpause'); + c[0].opt.tonpause = true; + c.trigger('stoptimer'); + } + }) + }, + + // METHODE RESUME + revresume: function() { + return this.each(function() { + var c=jQuery(this); + if (c!=undefined && c.length>0 && jQuery('body').find('#'+c.attr('id')).length>0) { + c.data('conthover',0); + c.data('conthover-changed',1); + c.trigger('revolution.slide.onresume'); + c[0].opt.tonpause = false; + c.trigger('starttimer'); + } + }) + }, + + revstart: function() { + //return this.each(function() { + var c=jQuery(this); + if (c!=undefined && c.length>0 && jQuery('body').find('#'+c.attr('id')).length>0 && c[0].opt!==undefined) { + if (!c[0].opt.sliderisrunning) { + + // fixes revapi.revstart(); + c[0].opt.c=c; + c[0].opt.ul = c.find('>ul'); + + runSlider(c,c[0].opt); + return true; + } + else { + console.log("Slider Is Running Already"); + return false; + } + + } + //}) + + }, + + // METHODE NEXT + revnext: function() { + return this.each(function() { + // CATCH THE CONTAINER + var c=jQuery(this); + if (c!=undefined && c.length>0 && jQuery('body').find('#'+c.attr('id')).length>0) { + _R.callingNewSlide(c,1); + } + }) + }, + + // METHODE RESUME + revprev: function() { + return this.each(function() { + // CATCH THE CONTAINER + var c=jQuery(this); + if (c!=undefined && c.length>0 && jQuery('body').find('#'+c.attr('id')).length>0) { + _R.callingNewSlide(c,-1); + } + }) + }, + + // METHODE LENGTH + revmaxslide: function() { + // CATCH THE CONTAINER + return jQuery(this).find('.tp-revslider-mainul >li').length; + }, + + + // METHODE CURRENT + revcurrentslide: function() { + // CATCH THE CONTAINER + var c=jQuery(this); + if (c!=undefined && c.length>0 && jQuery('body').find('#'+c.attr('id')).length>0) { + return parseInt(c[0].opt.act,0)+1; + } + }, + + // METHODE CURRENT + revlastslide: function() { + // CATCH THE CONTAINER + return jQuery(this).find('.tp-revslider-mainul >li').length; + }, + + + // METHODE JUMP TO SLIDE + revshowslide: function(slide) { + return this.each(function() { + // CATCH THE CONTAINER + var c=jQuery(this); + if (c!=undefined && c.length>0 && jQuery('body').find('#'+c.attr('id')).length>0) { + _R.callingNewSlide(c,"to"+(slide-1)); + } + }) + }, + revcallslidewithid: function(slide) { + return this.each(function() { + // CATCH THE CONTAINER + var c=jQuery(this); + if (c!=undefined && c.length>0 && jQuery('body').find('#'+c.attr('id')).length>0) { + _R.callingNewSlide(c,slide); + } + }) + } +}); + + + +////////////////////////////////////////////////////////////// +// - REVOLUTION FUNCTION EXTENSIONS FOR GLOBAL USAGE - // +////////////////////////////////////////////////////////////// +var _R = jQuery.fn.revolution; + +jQuery.extend(true, _R, { + + getversion : function() { + return version; + }, + + compare_version : function(extension) { + var v = jQuery('body').data('tp_rs_version'); + v = v === undefined ? new Object() : v; + if (v.Core===undefined) { + v.Core = new Object(); + v.Core.alias = "Slider Revolution Core"; + v.Core.name = "jquery.themepunch.revolution.min.js"; + v.Core.ver = _R.getversion().core; + } + + if (extension.check!="stop") { + // CHECK FOR CORRECT CORE AND EXTENSION VERSION + if (_R.getversion().core').appendTo(jQuery('body')); + $div.html(''); + var ieTest = $div.find('a').length; + $div.remove(); + return ieTest; + }, + + // - IS MOBILE ?? + is_mobile : function() { + var agents = ['android', 'webos', 'iphone', 'ipad', 'blackberry','Android', 'webos', ,'iPod', 'iPhone', 'iPad', 'Blackberry', 'BlackBerry']; + var ismobile=false; + for(var i in agents) { + + if (navigator.userAgent.split(agents[i]).length>1) { + ismobile = true; + + } + } + return ismobile; + }, + + is_android : function() { + var agents = ['android', 'Android']; + var isandroid=false; + for(var i in agents) { + if (navigator.userAgent.split(agents[i]).length>1) { + isandroid = true; + } + } + return isandroid; + }, + + // - CALL BACK HANDLINGS - // + callBackHandling : function(opt,type,position) { + try{ + if (opt.callBackArray) + jQuery.each(opt.callBackArray,function(i,c) { + if (c) { + if (c.inmodule && c.inmodule === type) + if (c.atposition && c.atposition === position) + if (c.callback) + c.callback.call(); + } + }); + } catch(e) { + console.log("Call Back Failed"); + } + }, + + get_browser : function(){ + var N=navigator.appName, ua=navigator.userAgent, tem; + var M=ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i); + if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1]; + M=M? [M[1], M[2]]: [N, navigator.appVersion, '-?']; + return M[0]; + }, + + get_browser_version : function(){ + var N=navigator.appName, ua=navigator.userAgent, tem; + var M=ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i); + if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1]; + M=M? [M[1], M[2]]: [N, navigator.appVersion, '-?']; + return M[1]; + }, + + /* + Jason / Safari 11 Video autoplay fix + */ + isSafari11: function() { + + var browser = jQuery.trim(_R.get_browser().toLowerCase()); + if(jQuery.trim(navigator.userAgent.toLowerCase()).search('edge') !== -1 || browser === 'msie') return false; + return browser.match(/safari|chrome/); + + }, + + // GET THE HORIZONTAL OFFSET OF SLIDER BASED ON THE THU`MBNAIL AND TABS LEFT AND RIGHT SIDE + getHorizontalOffset : function(container,side) { + var thumbloff = gWiderOut(container,'.outer-left'), + thumbroff = gWiderOut(container,'.outer-right'); + + switch (side) { + case "left": + return thumbloff; + break; + case "right": + return thumbroff; + break; + case "both": + return thumbloff+thumbroff; + break; + } + }, + + + // - CALLING THE NEW SLIDE - // + callingNewSlide : function(container,direction) { + + var aindex = container.find('.next-revslide').length>0 ? container.find('.next-revslide').index() : container.find('.processing-revslide').length>0 ? container.find('.processing-revslide').index() : container.find('.active-revslide').index(), + nindex = 0, + opt = container[0].opt; + + container.find('.next-revslide').removeClass("next-revslide"); + + // IF WE ARE ON AN INVISIBLE SLIDE CURRENTLY + if (container.find('.active-revslide').hasClass("tp-invisible-slide")) + aindex = opt.last_shown_slide; + + // SET NEXT DIRECTION + if (direction && jQuery.isNumeric(direction) || direction.match(/to/g)) { + if (direction===1 || direction === -1) { + + nindex = aindex + direction; + nindex = nindex<0 ? opt.slideamount-1 : nindex>=opt.slideamount ? 0 : nindex; + } else { + + direction=jQuery.isNumeric(direction) ? direction : parseInt(direction.split("to")[1],0); + nindex = direction<0 ? 0 : direction>opt.slideamount-1 ? opt.slideamount-1 : direction; + } + container.find('.tp-revslider-slidesli:eq('+nindex+')').addClass("next-revslide"); + } else + if (direction) { + + container.find('.tp-revslider-slidesli').each(function() { + var li=jQuery(this); + if (li.data('index')===direction) li.addClass("next-revslide"); + }) + } + + + nindex = container.find('.next-revslide').index(); + container.trigger("revolution.nextslide.waiting"); + + + if ((aindex===nindex && aindex === opt.last_shown_slide) || (nindex !== aindex && nindex!=-1)) + swapSlide(container); + else + container.find('.next-revslide').removeClass("next-revslide"); + }, + + slotSize : function(img,opt) { + opt.slotw=Math.ceil(opt.width/opt.slots); + + if (opt.sliderLayout=="fullscreen") + opt.sloth=Math.ceil(jQuery(window).height()/opt.slots); + else + opt.sloth=Math.ceil(opt.height/opt.slots); + + if (opt.autoHeight=="on" && img!==undefined && img!=="") + opt.sloth=Math.ceil(img.height()/opt.slots); + + + }, + + setSize : function(opt) { + + var ofh = (opt.top_outer || 0) + (opt.bottom_outer || 0), + cpt = parseInt((opt.carousel.padding_top||0),0), + cpb = parseInt((opt.carousel.padding_bottom||0),0), + maxhei = opt.gridheight[opt.curWinRange], + __mh = 0, + _actli = opt.nextSlide === -1 || opt.nextSlide===undefined ? 0 : opt.nextSlide; + opt.paddings = opt.paddings === undefined ? {top:(parseInt(opt.c.parent().css("paddingTop"),0) || 0), bottom:(parseInt(opt.c.parent().css("paddingBottom"),0) || 0)} : opt.paddings; + + if (opt.rowzones && opt.rowzones.length>0) + for (var a=0;aopt.gridheight[opt.curWinRange] && opt.autoHeight!="on") opt.height=opt.gridheight[opt.curWinRange]; + + if (opt.sliderLayout=="fullscreen" || opt.infullscreenmode) { + opt.height = opt.bw * opt.gridheight[opt.curWinRange]; + var cow = opt.c.parent().width(); + var coh = jQuery(window).height(); + + if (opt.fullScreenOffsetContainer!=undefined) { + try{ + var offcontainers = opt.fullScreenOffsetContainer.split(","); + if (offcontainers) + jQuery.each(offcontainers,function(index,searchedcont) { + coh = jQuery(searchedcont).length>0 ? coh - jQuery(searchedcont).outerHeight(true) : coh; + }); + } catch(e) {} + try{ + if (opt.fullScreenOffset.split("%").length>1 && opt.fullScreenOffset!=undefined && opt.fullScreenOffset.length>0) + coh = coh - (jQuery(window).height()* parseInt(opt.fullScreenOffset,0)/100); + else + if (opt.fullScreenOffset!=undefined && opt.fullScreenOffset.length>0) + coh = coh - parseInt(opt.fullScreenOffset,0); + } catch(e) {} + } + + coh = cohparseInt(opt.height,0) ? __mh : opt.height; + + } else { + if (opt.minHeight!=undefined && opt.heightparseInt(opt.height,0) ? __mh : opt.height; + opt.c.height(opt.height); + } + var si = { height:(cpt+cpb+ofh+opt.height+opt.paddings.top+opt.paddings.bottom)}; + + opt.c.closest('.forcefullwidth_wrapper_tp_banner').find('.tp-fullwidth-forcer').css(si); + opt.c.closest('.rev_slider_wrapper').css(si); + setScale(opt); + }, + + enterInViewPort : function(opt) { + // START COUNTER IF VP ENTERED, AND COUNTDOWN WAS NOT ON YET + if (opt.waitForCountDown) { + + countDown(opt.c,opt); + opt.waitForCountDown=false; + } + // START FIRST SLIDE IF NOT YET STARTED AND VP ENTERED + if (opt.waitForFirstSlide) { + swapSlide(opt.c); + opt.waitForFirstSlide=false; + setTimeout(function() { + opt.c.removeClass("tp-waitforfirststart"); + },500); + } + + if (opt.sliderlaststatus == "playing" || opt.sliderlaststatus==undefined) { + opt.c.trigger("starttimer"); + } + + + if (opt.lastplayedvideos != undefined && opt.lastplayedvideos.length>0) { + + jQuery.each(opt.lastplayedvideos,function(i,_nc) { + + _R.playVideo(_nc,opt); + }); + } + }, + + leaveViewPort : function(opt) { + opt.sliderlaststatus = opt.sliderstatus; + opt.c.trigger("stoptimer"); + if (opt.playingvideos != undefined && opt.playingvideos.length>0) { + opt.lastplayedvideos = jQuery.extend(true,[],opt.playingvideos); + if (opt.playingvideos) + jQuery.each(opt.playingvideos,function(i,_nc) { + opt.leaveViewPortBasedStop = true; + if (_R.stopVideo) _R.stopVideo(_nc,opt); + }); + } + }, + + unToggleState : function(a) { + if (a!=undefined && a.length>0) + jQuery.each(a,function(i,layer) { + layer.removeClass("rs-toggle-content-active"); + }); + }, + + toggleState : function(a) { + if (a!=undefined && a.length>0) + jQuery.each(a,function(i,layer) { + layer.addClass("rs-toggle-content-active"); + }); + }, + swaptoggleState : function(a) { + if (a!=undefined && a.length>0) + jQuery.each(a,function(i,layer) { + if (jQuery(layer).hasClass("rs-toggle-content-active")) + jQuery(layer).removeClass("rs-toggle-content-active"); + else + jQuery(layer).addClass("rs-toggle-content-active"); + }); + }, + lastToggleState : function(a) { + var state = 0; + if (a!=undefined && a.length>0) + jQuery.each(a,function(i,layer) { + state = layer.hasClass("rs-toggle-content-active"); + }); + return state; + } + +}); + + +var _ISM = _R.is_mobile(), + _ANDROID = _R.is_android(); + + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +var checkIDS = function(opt,item) { + opt.anyid = opt.anyid === undefined ? [] : opt.anyid; + var ind = jQuery.inArray(item.attr('id'),opt.anyid); + if (ind!=-1) { + var newid = item.attr('id')+"_"+Math.round(Math.random()*9999); + item.attr('id',newid); + } + + opt.anyid.push(item.attr('id')); +} +var removeArray = function(arr,i) { + var newarr = []; + jQuery.each(arr,function(a,b) { + if (a!=i) newarr.push(b); + }) + return newarr; + } + +var removeNavWithLiref = function(a,ref,opt) { + opt.c.find(a).each(function() { + var a = jQuery(this); + if (a.data('liref')===ref) + a.remove(); + }) +} + + +var lAjax = function(s,o) { + if (jQuery('body').data(s)) return false; + if (o.filesystem) { + if (o.errorm===undefined) + o.errorm = "
      Local Filesystem Detected !
      Put this to your header:"; + console.warn('Local Filesystem detected !'); + o.errorm = o.errorm+'
      <script type="text/javascript" src="'+o.jsFileLocation+s+o.extensions_suffix+'"></script>'; + console.warn(o.jsFileLocation+s+o.extensions_suffix+' could not be loaded !'); + console.warn('Please use a local Server or work online or make sure that you load all needed Libraries manually in your Document.'); + console.log(" "); + o.modulesfailing = true; + return false; + } + + jQuery.ajax({ + url:o.jsFileLocation+s+o.extensions_suffix+'?version='+version.core, + 'dataType':'script', + 'cache':true, + "error":function(e) { + console.warn("Slider Revolution 5.0 Error !") + console.error("Failure at Loading:"+s+o.extensions_suffix+" on Path:"+o.jsFileLocation) + console.info(e); + } + }); + jQuery('body').data(s,true); +} + + + +var getNeededScripts = function(o,c) { + var n = new Object(), + _n = o.navigation; + + n.kenburns = false; + n.parallax = false; + n.carousel = false; + n.navigation = false; + n.videos = false; + n.actions = false; + n.layeranim = false; + n.migration = false; + + + + + // MIGRATION EXTENSION + if (!c.data('version') || !c.data('version').toString().match(/5./gi)) { + n.kenburns = true; + n.parallax = true; + n.carousel = false; + n.navigation = true; + n.videos = true; + n.actions = true; + n.layeranim = true; + n.migration = true; + } + else { + // KEN BURN MODUL + c.find('img').each(function(){ + if (jQuery(this).data('kenburns')=="on") n.kenburns = true; + }); + + // NAVIGATION EXTENSTION + if (o.sliderType =="carousel" || _n.keyboardNavigation=="on" || _n.mouseScrollNavigation=="on" || _n.touch.touchenabled=="on" || _n.arrows.enable || _n.bullets.enable || _n.thumbnails.enable || _n.tabs.enable ) + n.navigation = true; + + // LAYERANIM, VIDEOS, ACTIONS EXTENSIONS + c.find('.tp-caption, .tp-static-layer, .rs-background-video-layer').each(function(){ + var _nc = jQuery(this); + if ((_nc.data('ytid')!=undefined || _nc.find('iframe').length>0 && _nc.find('iframe').attr('src').toLowerCase().indexOf('youtube')>0)) + n.videos = true; + if ((_nc.data('vimeoid')!=undefined || _nc.find('iframe').length>0 && _nc.find('iframe').attr('src').toLowerCase().indexOf('vimeo')>0)) + n.videos = true; + if (_nc.data('actions')!==undefined) + n.actions = true; + n.layeranim = true; + }); + + + c.find('li').each(function() { + if (jQuery(this).data('link') && jQuery(this).data('link')!=undefined) { + n.layeranim = true; + n.actions = true; + } + }) + + // VIDEO EXTENSION + if (!n.videos && (c.find('.rs-background-video-layer').length>0 || c.find(".tp-videolayer").length>0 || c.find(".tp-audiolayer").length>0 || c.find('iframe').length>0 || c.find('video').length>0)) + n.videos = true; + + + // VIDEO EXTENSION + if (o.sliderType =="carousel") + n.carousel = true; + + + + if (o.parallax.type!=="off" || o.viewPort.enable || o.viewPort.enable=="true" || o.scrolleffect.on==="true" || o.scrolleffect.on) + n.parallax = true; + } + + if (o.sliderType=="hero") { + n.carousel = false; + n.navigation = false; + } + + if (window.location.href.match(/file:/gi)) { + n.filesystem = true; + o.filesystem = true; + } + + + // LOAD THE NEEDED LIBRARIES + if (n.videos && typeof _R.isVideoPlaying=='undefined') lAjax('revolution.extension.video',o); + if (n.carousel && typeof _R.prepareCarousel=='undefined') lAjax('revolution.extension.carousel',o); + if (!n.carousel && typeof _R.animateSlide=='undefined') lAjax('revolution.extension.slideanims',o); + if (n.actions && typeof _R.checkActions=='undefined') lAjax('revolution.extension.actions',o); + if (n.layeranim && typeof _R.handleStaticLayers=='undefined') lAjax('revolution.extension.layeranimation',o); + if (n.kenburns && typeof _R.stopKenBurn=='undefined') lAjax('revolution.extension.kenburn',o); + if (n.navigation && typeof _R.createNavigation=='undefined') lAjax('revolution.extension.navigation',o); + if (n.migration && typeof _R.migration=='undefined') lAjax('revolution.extension.migration',o); + if (n.parallax && typeof _R.checkForParallax=='undefined') lAjax('revolution.extension.parallax',o); + + if (o.addons!=undefined && o.addons.length>0) { + jQuery.each(o.addons, function(i,obj) { + if (typeof obj === "object" && obj.fileprefix!=undefined) + lAjax(obj.fileprefix,o); + }) + } + + + return n; +} + +/////////////////////////////////// +// - WAIT FOR SCRIPT LOADS - // +/////////////////////////////////// +var waitForScripts = function(c,o) { + // CHECK KEN BURN DEPENDENCIES + var addonsloaded = true, + n = o.scriptsneeded; + + // CHECK FOR ADDONS + if (o.addons!=undefined && o.addons.length>0) { + jQuery.each(o.addons, function(i,obj) { + if (typeof obj === "object" && obj.init!=undefined) { + if (_R[obj.init]===undefined) addonsloaded = false; + } + }) + } + + if (n.filesystem || + (typeof punchgs !== 'undefined' && + (addonsloaded) && + (!n.kenburns || (n.kenburns && typeof _R.stopKenBurn !== 'undefined')) && + (!n.navigation || (n.navigation && typeof _R.createNavigation !== 'undefined')) && + (!n.carousel || (n.carousel && typeof _R.prepareCarousel !== 'undefined')) && + (!n.videos || (n.videos && typeof _R.resetVideo !== 'undefined')) && + (!n.actions || (n.actions && typeof _R.checkActions !== 'undefined')) && + (!n.layeranim || (n.layeranim && typeof _R.handleStaticLayers !== 'undefined')) && + (!n.migration || (n.migration && typeof _R.migration !== 'undefined')) && + (!n.parallax || (n.parallax && typeof _R.checkForParallax !== 'undefined')) && + (n.carousel || (!n.carousel && typeof _R.animateSlide !== 'undefined')) + )) + c.trigger("scriptsloaded"); + else + setTimeout(function() { + waitForScripts(c,o); + },50); + +} + +////////////////////////////////// +// - GET SCRIPT LOCATION - // +////////////////////////////////// +var getScriptLocation = function(a) { + + var srcexp = new RegExp("themepunch.revolution.min.js","gi"), + ret = ""; + jQuery("script").each(function() { + var src = jQuery(this).attr("src"); + if (src && src.match(srcexp)) + ret = src; + }); + + ret = ret.replace('jquery.themepunch.revolution.min.js', ''); + ret = ret.replace('jquery.themepunch.revolution.js', ''); + ret = ret.split("?")[0]; + return ret; +} + +////////////////////////////////////////// +// - ADVANCED RESPONSIVE LEVELS - // +////////////////////////////////////////// +var setCurWinRange = function(opt,vis) { + var curlevel = 0, + curwidth = 9999, + lastmaxlevel = 0, + lastmaxid = 0, + curid = 0, + winw = jQuery(window).width(), + l = vis && opt.responsiveLevels==9999 ? opt.visibilityLevels : opt.responsiveLevels; + + if (l && l.length) + jQuery.each(l,function(index,level) { + if (winwlevel) { + curwidth = level; + curid = index; + lastmaxlevel = level; + } + } + + if (winw>level && lastmaxlevel'); + + // PREPRARE SOME CLASSES AND VARIABLES + container.find('>ul').addClass("tp-revslider-mainul"); + + + // CREATE SOME DEFAULT OPTIONS FOR LATER + opt.c=container; + opt.ul = container.find('.tp-revslider-mainul'); + + // Remove Not Needed Slides for Mobile Devices + opt.ul.find('>li').each(function(i) { + var li = jQuery(this); + if (li.data('hideslideonmobile')=="on" && _ISM) li.remove(); + if (li.data('invisible') || li.data('invisible')===true) { + li.addClass("tp-invisible-slide"); + li.appendTo(opt.ul); + } + }); + + + if (opt.addons!=undefined && opt.addons.length>0) { + jQuery.each(opt.addons, function(i,obj) { + if (typeof obj === "object" && obj.init!=undefined) { + _R[obj.init](eval(obj.params)); + } + }) + } + + + + opt.cid = container.attr('id'); + opt.ul.css({visibility:"visible"}); + opt.slideamount = opt.ul.find('>li').not('.tp-invisible-slide').length; + opt.realslideamount = opt.ul.find('>li').length; + opt.slayers = container.find('.tp-static-layers'); + opt.slayers.data('index','staticlayers'); + + if (opt.waitForInit == true) + return; + else { + container[0].opt = opt; + runSlider(container,opt); + } + + } + + var onFullScreenChange = function() { + jQuery("body").data('rs-fullScreenMode',!jQuery("body").data('rs-fullScreenMode')); + if (jQuery("body").data('rs-fullScreenMode')) { + setTimeout(function() { + jQuery(window).trigger("resize"); + },200); + } + } + + var runSlider = function(container,opt) { + + + opt.sliderisrunning = true; + // Save Original Index of Slides + opt.ul.find('>li').each(function(i) { + jQuery(this).data('originalindex',i); + }); + + opt.allli = opt.ul.find('>li'); + + // RECORD THUMBS AND SET INDEXES + jQuery.each(opt.allli,function(index,li) { + var li = jQuery(li); + li.data('origindex',li.index()); + }); + + opt.li = opt.ul.find('>li').not('.tp-invisible-slide'); + + // RANDOMIZE THE SLIDER SHUFFLE MODE + if (opt.shuffle=="on") { + var fsa = new Object, + fli = opt.ul.find('>li:first-child'); + fsa.fstransition = fli.data('fstransition'); + fsa.fsmasterspeed = fli.data('fsmasterspeed'); + fsa.fsslotamount = fli.data('fsslotamount'); + + for (var u=0;uli:eq('+it+')').prependTo(opt.ul); + } + + var newfli = opt.ul.find('>li:first-child'); + newfli.data('fstransition',fsa.fstransition); + newfli.data('fsmasterspeed',fsa.fsmasterspeed); + newfli.data('fsslotamount',fsa.fsslotamount); + + // RECOLLECT ALL LI INTO AN ARRAY + opt.allli = opt.ul.find('>li'); + opt.li = opt.ul.find('>li').not('.tp-invisible-slide'); + } + + + opt.inli = opt.ul.find('>li.tp-invisible-slide'); + + + opt.thumbs = new Array(); + + opt.slots=4; + opt.act=-1; + opt.firststart=1; + opt.loadqueue = new Array(); + opt.syncload = 0; + opt.conw = container.width(); + opt.conh = container.height(); + + if (opt.responsiveLevels.length>1) + opt.responsiveLevels[0] = 9999; + else + opt.responsiveLevels = 9999; + + + + jQuery.each(opt.allli,function(index,li) { + var li = jQuery(li), + img = li.find('.rev-slidebg') || li.find('img').first(), + i = 0; + + + li.addClass("tp-revslider-slidesli"); + if (li.data('index')===undefined) li.data('index','rs-'+Math.round(Math.random()*999999)); + + var obj = new Object; + obj.params = new Array(); + + obj.id = li.data('index'); + obj.src = li.data('thumb')!==undefined ? li.data('thumb') : img.data('lazyload') !== undefined ? img.data('lazyload') : img.attr('src'); + if (li.data('title') !== undefined) obj.params.push({from:RegExp("\\{\\{title\\}\\}","g"), to:li.data("title")}) + if (li.data('description') !== undefined) obj.params.push({from:RegExp("\\{\\{description\\}\\}","g"), to:li.data("description")}) + for (var i=1;i<=10;i++) { + if (li.data("param"+i)!==undefined) + obj.params.push({from:RegExp("\\{\\{param"+i+"\\}\\}","g"), to:li.data("param"+i)}) + } + opt.thumbs.push(obj); + + // IF LINK ON SLIDE EXISTS, NEED TO CREATE A PROPER LAYER FOR IT. + if (li.data('link')!=undefined) { + var link = li.data('link'), + target= li.data('target') || "_self", + zindex= li.data('slideindex')==="back" ? 0 : 60, + linktoslide=li.data('linktoslide'), + checksl = linktoslide; + + if (linktoslide != undefined) + if (linktoslide!="next" && linktoslide!="prev") + opt.allli.each(function() { + var t = jQuery(this); + if (t.data('origindex')+1==checksl) linktoslide = t.data('index'); + }); + + + if (link!="slide") linktoslide="no"; + + var apptxt = '
      '; + li.append(apptxt); + } + }); + + + // CREATE GRID WIDTH AND HEIGHT ARRAYS + opt.rle = opt.responsiveLevels.length || 1; + opt.gridwidth = cArray(opt.gridwidth,opt.rle); + opt.gridheight = cArray(opt.gridheight,opt.rle); + // END OF VERSION 5.0 INIT MODIFICATION + + + + // SIMPLIFY ANIMATIONS ON OLD IOS AND IE8 IF NEEDED + if (opt.simplifyAll=="on" && (_R.isIE(8) || _R.iOSVersion())) { + container.find('.tp-caption').each(function() { + var tc = jQuery(this); + tc.removeClass("customin customout").addClass("fadein fadeout"); + tc.data('splitin',""); + tc.data('speed',400); + }) + opt.allli.each(function() { + var li= jQuery(this); + li.data('transition',"fade"); + li.data('masterspeed',500); + li.data('slotamount',1); + var img = li.find('.rev-slidebg') || li.find('>img').first(); + img.data('kenburns',"off"); + }); + } + + opt.desktop = !navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry|BB10|mobi|tablet|opera mini|nexus 7)/i); + + // SOME OPTIONS WHICH SHOULD CLOSE OUT SOME OTHER SETTINGS + opt.autoHeight = opt.sliderLayout=="fullscreen" ? "on" : opt.autoHeight; + + if (opt.sliderLayout=="fullwidth" && opt.autoHeight=="off") container.css({maxHeight:opt.gridheight[opt.curWinRange]+"px"}); + + // BUILD A FORCE FULLWIDTH CONTAINER, TO SPAN THE FULL SLIDER TO THE FULL WIDTH OF BROWSER + if (opt.sliderLayout!="auto" && container.closest('.forcefullwidth_wrapper_tp_banner').length==0) { + if (opt.sliderLayout!=="fullscreen" || opt.fullScreenAutoWidth!="on") { + var cp = container.parent(), + mb = cp.css('marginBottom'), + mt = cp.css('marginTop'), + cid = container.attr('id')+"_forcefullwidth"; + mb = mb===undefined ? 0 : mb; + mt = mt===undefined ? 0 : mt; + + cp.wrap('
      '); + container.closest('.forcefullwidth_wrapper_tp_banner').append('
      '); + container.parent().css({marginTop:"0px",marginBottom:"0px"}); + //container.css({'backgroundColor':container.parent().css('backgroundColor'),'backgroundImage':container.parent().css('backgroundImage')}); + container.parent().css({position:'absolute'}); + } + } + + + + // SHADOW ADD ONS + if (opt.shadow!==undefined && opt.shadow>0) { + container.parent().addClass('tp-shadow'+opt.shadow); + container.parent().append('
      '); + container.parent().find('.tp-shadowcover').css({'backgroundColor':container.parent().css('backgroundColor'),'backgroundImage':container.parent().css('backgroundImage')}); + } + + // ESTIMATE THE CURRENT WINDOWS RANGE INDEX + setCurWinRange(opt); + setCurWinRange(opt,true); + + // IF THE CONTAINER IS NOT YET INITIALISED, LETS GO FOR IT + if (!container.hasClass("revslider-initialised")) { + // MARK THAT THE CONTAINER IS INITIALISED WITH SLIDER REVOLUTION ALREADY + container.addClass("revslider-initialised"); + + // FOR BETTER SELECTION, ADD SOME BASIC CLASS + container.addClass("tp-simpleresponsive"); + // WE DONT HAVE ANY ID YET ? WE NEED ONE ! LETS GIVE ONE RANDOMLY FOR RUNTIME + if (container.attr('id')==undefined) { + container.attr('id',"revslider-"+Math.round(Math.random()*1000+5)); + } + checkIDS(opt,container); + + // CHECK IF FIREFOX 13 IS ON WAY.. IT HAS A STRANGE BUG, CSS ANIMATE SHOULD NOT BE USED + opt.firefox13 = false; + opt.ie = !jQuery.support.opacity; + opt.ie9 = (document.documentMode == 9); + + opt.origcd=opt.delay; + + + + // CHECK THE jQUERY VERSION + var version = jQuery.fn.jquery.split('.'), + versionTop = parseFloat(version[0]), + versionMinor = parseFloat(version[1]), + versionIncrement = parseFloat(version[2] || '0'); + if (versionTop==1 && versionMinor < 7) + container.html('
      The Current Version of jQuery:'+version+'
      Please update your jQuery Version to min. 1.7 in Case you wish to use the Revolution Slider Plugin
      '); + if (versionTop>1) opt.ie=false; + + + + // PREPARE VIDEO PLAYERS + var addedApis = new Object(); + addedApis.addedyt=0; + addedApis.addedvim=0; + addedApis.addedvid=0; + + //PREPARING FADE IN/OUT PARALLAX + if (opt.scrolleffect.on) + opt.scrolleffect.layers = new Array(); + + //WRAP LAYERS INTO 1 CONTAINER TO AVOID FURTHER ISSUES + /*container.find('.tp-revslider-slidesli').each(function() { + jQuery(this).find('.tp-caption').wrapAll('
      '); + });*/ + + container.find('.tp-caption, .rs-background-video-layer').each(function(i) { + var _nc = jQuery(this), + _ = _nc.data(), + an = _.autoplayonlyfirsttime, + ap = _.autoplay, + htmlvideo = _.videomp4!==undefined || _.videowebm!==undefined || _.videoogv!==undefined, + al = _nc.hasClass("tp-audiolayer"), + loop = _.videoloop, + addtofadeout = true, + addToStaticFadeout = false; + + + _.startclasses = _nc.attr('class'); + + + _.isparallaxlayer = _.startclasses.indexOf("rs-parallax")>=0; + + + + if (_nc.hasClass("tp-static-layer") && _R.handleStaticLayers) { + _R.handleStaticLayers(_nc,opt); + if (opt.scrolleffect.on) + if ((opt.scrolleffect.on_parallax_static_layers==="on" && _.isparallaxlayer) || (opt.scrolleffect.on_static_layers==="on" && !_.isparallaxlayer)) addToStaticFadeout = true; + addtofadeout=false; + } + + var pom = _nc.data('noposteronmobile') || _nc.data('noPosterOnMobile') || _nc.data('posteronmobile') || _nc.data('posterOnMobile') || _nc.data('posterOnMObile'); + _nc.data('noposteronmobile',pom); + + // FIX VISIBLE IFRAME BUG IN SAFARI + var iff = 0; + _nc.find('iframe').each(function() { + punchgs.TweenLite.set(jQuery(this),{autoAlpha:0}); + iff++; + }) + if (iff>0) + _nc.data('iframes',true) + + if (_nc.hasClass("tp-caption")) { + // PREPARE LAYERS AND WRAP THEM WITH PARALLAX, LOOP, MASK HELP CONTAINERS + var ec = _nc.hasClass("slidelink") ? "width:100% !important;height:100% !important;" : "", + _ndata = _nc.data(), + specec = "", + nctype = _ndata.type, + _pos = nctype==="row" || nctype==="column" ? "relative" : "absolute", + preclas = ""; + + if (nctype==="row") { + _nc.addClass("rev_row").removeClass("tp-resizeme"); + preclas="rev_row_wrap"; + } else + if (nctype==="column") { + specec = _ndata.verticalalign === undefined ? " vertical-align:bottom;" : " vertical-align:"+_ndata.verticalalign+";"; + preclas = "rev_column"; + _nc.addClass("rev_column_inner").removeClass("tp-resizeme");; + _nc.data('width','auto'); + punchgs.TweenLite.set(_nc,{width:'auto'}); + } else + if (nctype==="group") { + _nc.removeClass("tp-resizeme") + } + var dmode = "", + preid = ""; + + + if (nctype!=="row" && nctype!=="group" && nctype!=="column"){ + dmode = "display:"+_nc.css('display')+";"; + if (_nc.closest('.rev_column').length>0) { + _nc.addClass("rev_layer_in_column"); + addtofadeout=false; + } else + if (_nc.closest('.rev_group').length>0) { + _nc.addClass("rev_layer_in_group"); + addtofadeout=false; + } + + + } else + if (nctype==="column") addtofadeout = false; + + + if (_ndata.wrapper_class!==undefined) preclas = preclas+" "+_ndata.wrapper_class; + if (_ndata.wrapper_id!==undefined) preid ='id="'+_ndata.wrapper_id+'"'; + + // POINTER EVENTS ADDITION + var pevents = ''; + if(_nc.hasClass('tp-no-events')) pevents = ';pointer-events:none'; + _nc.wrap('
      '); + + // ONLY ADD LAYERS TO FADEOUT DYNAMIC LIST WHC + if (addtofadeout && opt.scrolleffect.on) + if ((opt.scrolleffect.on_parallax_layers==="on" && _.isparallaxlayer) || (opt.scrolleffect.on_layers==="on" && !_.isparallaxlayer)) + opt.scrolleffect.layers.push(_nc.parent()); + if (addToStaticFadeout) opt.scrolleffect.layers.push(_nc.parent()); + + + // Add BG for Columns + if (nctype==="column") { + _nc.append(''); + _nc.closest('.tp-parallax-wrap').append('
      '); + } + + var lar = ['pendulum', 'rotate','slideloop','pulse','wave'], + _lc = _nc.closest('.tp-loop-wrap'); + + jQuery.each(lar,function(i,k) { + var lw = _nc.find('.rs-'+k), + f = lw.data() || ""; + if (f!="") { + _lc.data(f); + _lc.addClass("rs-"+k); + lw.children(0).unwrap(); + _nc.data('loopanimation',"on"); + } + }); + if (_nc.attr('id')===undefined) + _nc.attr('id','layer-'+Math.round(Math.random()*999999999)); + checkIDS(opt,_nc); + punchgs.TweenLite.set(_nc,{visibility:"hidden"}); + } + + var as = _nc.data('actions'); + if (as!==undefined) _R.checkActions(_nc,opt,as); + + checkHoverDependencies(_nc,opt); + + if (_R.checkVideoApis) + addedApis = _R.checkVideoApis(_nc,opt,addedApis); + + // REMOVE VIDEO AUTOPLAYS FOR MOBILE DEVICES + /* + if (_ISM && (!opt.fallbacks.allowHTML5AutoPlayOnAndroid || !htmlvideo)) { + if (an == true || an=="true") { + _.autoplayonlyfirsttime=false; + an=false; + } + if (ap==true || ap=="true" || ap=="on" || ap=="1sttime") { + _.autoplay="off"; + ap="off"; + } + } + */ + + //loop = loop=="none" && _nc.hasClass('rs-background-video-layer') ? "loopandnoslidestop" : loop; + + + + + // PREPARE TIMER BEHAVIOUR BASED ON AUTO PLAYED VIDEOS IN SLIDES + if (!al && (an == true || an=="true" || ap == "1sttime") && loop !="loopandnoslidestop") + _nc.closest('li.tp-revslider-slidesli').addClass("rs-pause-timer-once"); + + + if (!al && (ap==true || ap=="true" || ap == "on" || ap == "no1sttime") && loop !="loopandnoslidestop") + _nc.closest('li.tp-revslider-slidesli').addClass("rs-pause-timer-always"); + + + }); + + container[0].addEventListener('mouseenter',function() { + container.trigger('tp-mouseenter'); + opt.overcontainer=true; + },{passive:true}); + + container[0].addEventListener('mouseover',function() { + container.trigger('tp-mouseover'); + opt.overcontainer=true; + },{passive:true}); + + container[0].addEventListener('mouseleave',function() { + container.trigger('tp-mouseleft'); + opt.overcontainer=false; + },{passive:true}); + + // REMOVE ANY VIDEO JS SETTINGS OF THE VIDEO IF NEEDED (OLD FALL BACK, AND HELP FOR 3THD PARTY PLUGIN CONFLICTS) + container.find('.tp-caption video').each(function(i) { + var v = jQuery(this); + v.removeClass("video-js vjs-default-skin"); + v.attr("preload",""); + v.css({display:"none"}); + }); + + //PREPARE LOADINGS ALL IN SEQUENCE + if (opt.sliderType!=="standard") opt.lazyType = "all"; + + + // PRELOAD STATIC LAYERS + loadImages(container.find('.tp-static-layers'),opt,0,true); + + waitForCurrentImages(container.find('.tp-static-layers'),opt,function() { + container.find('.tp-static-layers img').each(function() { + var e = jQuery(this), + src = e.data('lazyload') != undefined ? e.data('lazyload') : e.attr('src'), + loadobj = getLoadObj(opt,src); + e.attr('src',loadobj.src) + }) + }); + + opt.rowzones = []; + + // SET ALL LI AN INDEX AND INIT LAZY LOADING + opt.allli.each(function(i) { + var li = jQuery(this); + punchgs.TweenLite.set(this,{perspective:6000}); //PERSPECTIVE + opt.rowzones[i] = []; + li.find('.rev_row_zone').each(function() { + opt.rowzones[i].push(jQuery(this)); + }) + + if (opt.lazyType=="all" || (opt.lazyType=="smart" && (i==0 || i == 1 || i == opt.slideamount || i == opt.slideamount-1))) { + loadImages(li,opt,i); + waitForCurrentImages(li,opt,function() { + //if (opt.sliderType=="carousel") + //punchgs.TweenLite.to(li,1,{autoAlpha:1,ease:punchgs.Power3.easeInOut}); + }); + } + + }); + + + + // IF DEEPLINK HAS BEEN SET + var deeplink = getUrlVars("#")[0]; + if (deeplink.length<9) { + if (deeplink.split('slide').length>1) { + var dslide=parseInt(deeplink.split('slide')[1],0); + if (dslide<1) dslide=1; + if (dslide>opt.slideamount) dslide=opt.slideamount; + opt.startWithSlide=dslide-1; + } + } + + // PREPARE THE SPINNER + container.append( '
      '+ + '
      '+ + '
      '+ + '
      '+ + '
      '+ + '
      '+ + '
      '); + opt.loader = container.find('.tp-loader'); + + // RESET THE TIMER + if (container.find('.tp-bannertimer').length===0) container.append(''); + container.find('.tp-bannertimer').css({'width':'0%'}); + + + + // PREPARE THE SLIDES + opt.ul.css({'display':'block'}); + prepareSlides(container,opt); + if ((opt.parallax.type!=="off" || opt.scrolleffect.on) && _R.checkForParallax) _R.checkForParallax(container,opt); + + + // PREPARE SLIDER SIZE + _R.setSize(opt); + + + // Call the Navigation Builder + if (opt.sliderType!=="hero" && _R.createNavigation) _R.createNavigation(container,opt); + if (_R.resizeThumbsTabs && _R.resizeThumbsTabs) _R.resizeThumbsTabs(opt); + contWidthManager(opt); + var _v = opt.viewPort; + opt.inviewport = false; + + if (_v !=undefined && _v.enable) { + if (!jQuery.isNumeric(_v.visible_area)) + if (_v.visible_area.indexOf('%')!==-1) + _v.visible_area = parseInt(_v.visible_area)/100; + + if (_R.scrollTicker) _R.scrollTicker(opt,container); + } + // MAKE SURE CAROUSEL IS NOT YET VISIBE BEFORE IT COMES INTO GAME + if (opt.sliderType==="carousel" && _R.prepareCarousel) { + punchgs.TweenLite.set(opt.ul,{opacity:0}); + _R.prepareCarousel(opt,new punchgs.TimelineLite,undefined,0); + opt.onlyPreparedSlide = true; + } + + + + // START THE SLIDER + setTimeout(function() { + + if (!_v.enable || (_v.enable && opt.inviewport) || (_v.enable && !opt.inviewport && !_v.outof=="wait")) + swapSlide(container); + else { + opt.c.addClass("tp-waitforfirststart"); + opt.waitForFirstSlide = true; + if (_v.presize) { + var nextli = jQuery(opt.li[0]); + // PRELOAD STATIC LAYERS + loadImages(nextli,opt,0,true); + waitForCurrentImages(nextli.find('.tp-layers'),opt,function() { + _R.animateTheCaptions({slide:nextli,opt:opt, preset:true}); + }) + } + + + } + + if (_R.manageNavigation) _R.manageNavigation(opt); + + + // START COUNTDOWN + if (opt.slideamount>1) { + if (!_v.enable || (_v.enable && opt.inviewport)) + countDown(container,opt); + else + opt.waitForCountDown = true; + } + setTimeout(function() { + container.trigger('revolution.slide.onloaded'); + },100); + },opt.startDelay); + opt.startDelay=0; + + + + /****************************** + - FULLSCREEN CHANGE - + ********************************/ + // FULLSCREEN MODE TESTING + jQuery("body").data('rs-fullScreenMode',false); + + + window.addEventListener('fullscreenchange',onFullScreenChange,{passive:true}); + window.addEventListener('mozfullscreenchange',onFullScreenChange,{passive:true}); + window.addEventListener('webkitfullscreenchange',onFullScreenChange,{passive:true}); + + + + var resizid = "resize.revslider-"+container.attr('id'); + + // IF RESIZED, NEED TO STOP ACTUAL TRANSITION AND RESIZE ACTUAL IMAGES + jQuery(window).on(resizid,function() { + + if (container==undefined) return false; + + if (jQuery('body').find(container)!=0) + contWidthManager(opt); + + var hchange = false; + + if (opt.sliderLayout=="fullscreen") { + var jwh = jQuery(window).height(); + if ((opt.fallbacks.ignoreHeightChanges=="mobile" && _ISM) || opt.fallbacks.ignoreHeightChanges=="always") { + opt.fallbacks.ignoreHeightChangesSize = opt.fallbacks.ignoreHeightChangesSize == undefined ? 0 : opt.fallbacks.ignoreHeightChangesSize; + hchange = (jwh!=opt.lastwindowheight) && (Math.abs(jwh-opt.lastwindowheight) > opt.fallbacks.ignoreHeightChangesSize) + } else { + hchange = (jwh!=opt.lastwindowheight) + } + } + + + if (container.outerWidth(true)!=opt.width || container.is(":hidden") || (hchange)) { + opt.lastwindowheight = jQuery(window).height(); + containerResized(container,opt); + } + + + }); + + hideSliderUnder(container,opt); + contWidthManager(opt); + if (!opt.fallbacks.disableFocusListener && opt.fallbacks.disableFocusListener != "true" && opt.fallbacks.disableFocusListener !== true) { + container.addClass("rev_redraw_on_blurfocus"); + tabBlurringCheck(); + } + } +} + +/************************************* + - CREATE SIMPLE ARRAYS - +**************************************/ +var cArray = function(b,l) { + if (!jQuery.isArray(b)) { + var t = b; + b = new Array(); + b.push(t); + } + if (b.length0 && (cli.hasClass("active-revslide")) || cli.hasClass("processing-revslide")) || (stl.length>0)) { + tnc.data('animdirection',"in"); + + if (_R.playAnimationFrame) + _R.playAnimationFrame({caption:tnc,opt:opt,frame:"frame_0", triggerdirection:"in", triggerframein:"frame_0", triggerframeout:"frame_999"}); + tnc.data('triggerstate',"on"); + } + }); + }); + opt.c.on('tp-mouseleft',function() { + if (opt.layersonhover) + jQuery.each(opt.layersonhover,function(i,tnc) { + tnc.data('animdirection',"out"); + tnc.data('triggered',true); + tnc.data('triggerstate',"off"); + if (_R.stopVideo) _R.stopVideo(tnc,opt); + if (_R.playAnimationFrame) _R.playAnimationFrame({caption:tnc,opt:opt,frame:"frame_999", triggerdirection:"out", triggerframein:"frame_0", triggerframeout:"frame_999"}); + }); + }); + opt.layersonhover = new Array; + } + opt.layersonhover.push(_nc); + } +} + + + +var contWidthManager = function(opt) { + var rl = _R.getHorizontalOffset(opt.c,"left"); + + if (opt.sliderLayout!="auto" && (opt.sliderLayout!=="fullscreen" || opt.fullScreenAutoWidth!="on")) { + var loff = Math.ceil(opt.c.closest('.forcefullwidth_wrapper_tp_banner').offset().left - rl); + punchgs.TweenLite.set(opt.c.parent(),{'left':(0-loff)+"px",'width':jQuery(window).width()-_R.getHorizontalOffset(opt.c,"both")}); + } else { + if (opt.sliderLayout=="fullscreen" && opt.fullScreenAutoWidth=="on") + punchgs.TweenLite.set(opt.ul,{left:0,width:opt.c.width()}); + else + punchgs.TweenLite.set(opt.ul,{left:rl,width:opt.c.width()-_R.getHorizontalOffset(opt.c,"both")}); + } + + + // put Static Layer Wrapper in Position + if (opt.slayers && (opt.sliderLayout!="fullwidth" && opt.sliderLayout!="fullscreen")) + punchgs.TweenLite.set(opt.slayers,{left:rl}); +} + + +var cv = function(a,d) { + return a===undefined ? d : a; +} + + +var hideSliderUnder = function(container,opt,resized) { + // FIRST TIME STOP/START HIDE / SHOW SLIDER + //REMOVE AND SHOW SLIDER ON DEMAND + var contpar= container.parent(); + if (jQuery(window).width()0) + _R.animateTheCaptions({slide:c.find('.active-revslide'), opt:opt,recall:true}); + + if (nextsh.data('kenburns')=="on") + _R.startKenBurn(nextsh,opt,(nextsh.data('kbtl')!==undefined ? nextsh.data('kbtl').progress() : 0)); + + if (actsh.data('kenburns')=="on") + _R.startKenBurn(actsh,opt,(actsh.data('kbtl')!==undefined ? actsh.data('kbtl').progress() : 0)); + + // DOUBLE CALL FOR SOME FUNCTION TO AVOID PORTRAIT/LANDSCAPE ISSUES, AND TO AVOID FULLSCREEN/NORMAL SWAP ISSUES + if (_R.animateTheCaptions && c.find('.processing-revslide').length>0) _R.animateTheCaptions({slide:c.find('.processing-revslide'), opt:opt,recall:true}); + if (_R.manageNavigation) _R.manageNavigation(opt); + + } + + c.trigger('revolution.slide.afterdraw'); +} + + + + + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// PREPARING / REMOVING //////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +var setScale = function(opt) { + opt.bw = (opt.width / opt.gridwidth[opt.curWinRange]); + opt.bh = (opt.height / opt.gridheight[opt.curWinRange]); + + if (opt.bh>opt.bw) + opt.bh=opt.bw + else + opt.bw = opt.bh; + + if (opt.bh>1 || opt.bw>1) { opt.bw=1; opt.bh=1; } +} + + + + + +///////////////////////////////////////// +// - PREPARE THE SLIDES / SLOTS - // +/////////////////////////////////////// +var prepareSlides = function(container,opt) { + + container.find('.tp-caption').each(function() { + var c = jQuery(this); + if (c.data('transition')!==undefined) c.addClass(c.data('transition')); + }); + + // PREPARE THE UL CONTAINER TO HAVEING MAX HEIGHT AND HEIGHT FOR ANY SITUATION + opt.ul.css({overflow:'hidden',width:'100%',height:'100%',maxHeight:container.parent().css('maxHeight')}) + if (opt.autoHeight=="on") { + opt.ul.css({overflow:'hidden',width:'100%',height:'100%',maxHeight:"none"}); + container.css({'maxHeight':'none'}); + container.parent().css({'maxHeight':'none'}); + } + //_R.setSize("",opt); + opt.allli.each(function(j) { + var li=jQuery(this), + originalIndex = li.data('originalindex'); + + //START WITH CORRECT SLIDE + if ((opt.startWithSlide !=undefined && originalIndex==opt.startWithSlide) || opt.startWithSlide ===undefined && j==0) + li.addClass("next-revslide"); + + + // MAKE LI OVERFLOW HIDDEN FOR FURTHER ISSUES + li.css({'width':'100%','height':'100%','overflow':'hidden'}); + + }); + + if (opt.sliderType === "carousel") { + //SET CAROUSEL + opt.ul.css({overflow:"visible"}).wrap(''); + var apt = '
      '; + opt.c.parent().prepend(apt); + opt.c.parent().append(apt); + _R.prepareCarousel(opt); + } + + // RESOLVE OVERFLOW HIDDEN OF MAIN CONTAINER + container.parent().css({'overflow':'visible'}); + + opt.allli.find('>img').each(function(j) { + + var img=jQuery(this), + cli = img.closest('li'), + bgvid = cli.find('.rs-background-video-layer'); + + bgvid.addClass("defaultvid").css({zIndex:30}); + + + + img.addClass('defaultimg'); + + // TURN OF KEN BURNS IF WE ARE ON MOBILE AND IT IS WISHED SO + if (opt.fallbacks.panZoomDisableOnMobile == "on" && _ISM) { + img.data('kenburns',"off"); + img.data('bgfit',"cover"); + } + + var mediafilter = cli.data('mediafilter'); + mediafilter = mediafilter==="none" || mediafilter===undefined ? "" : mediafilter; + img.wrap('
      '); + bgvid.appendTo(cli.find('.slotholder')); + var dts = img.data(); + img.closest('.slotholder').data(dts); + + if (bgvid.length>0 && dts.bgparallax!=undefined) { + bgvid.data('bgparallax',dts.bgparallax); + bgvid.data('showcoveronpause',"on"); + } + + if (opt.dottedOverlay!="none" && opt.dottedOverlay!=undefined) + img.closest('.slotholder').append('
      '); + + var src=img.attr('src'); + dts.src = src; + dts.bgfit = dts.bgfit || "cover"; + dts.bgrepeat = dts.bgrepeat || "no-repeat", + dts.bgposition = dts.bgposition || "center center"; + + var pari = img.closest('.slotholder'), + bgcolor = img.data('bgcolor'), + bgstyle=""; + + if (bgcolor!==undefined && bgcolor.indexOf('gradient')>=0) + bgstyle='"background:'+bgcolor+';width:100%;height:100%;"'; + else + bgstyle='"background-color:'+bgcolor+';background-repeat:'+dts.bgrepeat+';background-image:url('+src+');background-size:'+dts.bgfit+';background-position:'+dts.bgposition+';width:100%;height:100%;"'; + img.data('mediafilter',mediafilter) + mediafilter = img.data("kenburns")==="on" ? "" : mediafilter; + var newimg = jQuery('
      ') + img.parent().append(newimg); + + var comment = document.createComment("Runtime Modification - Img tag is Still Available for SEO Goals in Source - " + img.get(0).outerHTML); + img.replaceWith(comment); + + + newimg.data(dts); + newimg.attr("src",src); + + if (opt.sliderType === "standard" || opt.sliderType==="undefined") + newimg.css({'opacity':0}); + + }) + + if (opt.scrolleffect.on && opt.scrolleffect.on_slidebg==="on") { + opt.allslotholder = new Array(); + opt.allli.find('.slotholder').each(function() { + jQuery(this).wrap('
      ') + }); + opt.allslotholder = opt.c.find('.slotholder_fadeoutwrap'); + } +} + + +// REMOVE SLOTS // +var removeSlots = function(container,opt,where,addon) { + opt.removePrepare = opt.removePrepare + addon; + where.find('.slot, .slot-circle-wrapper').each(function() { + jQuery(this).remove(); + }); + opt.transition = 0; + opt.removePrepare = 0; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// SLIDE SWAPS //////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +// THE IMAGE IS LOADED, WIDTH, HEIGHT CAN BE SAVED +var cutParams = function(a) { + var b = a; + if (a!=undefined && a.length>0) + b = a.split("?")[0]; + return b; +} + +var relativeRedir = function(redir){ + return location.pathname.replace(/(.*)\/[^/]*/, "$1/"+redir); +} + +var abstorel = function (base, relative) { + var stack = base.split("/"), + parts = relative.split("/"); + stack.pop(); // remove current file name (or empty string) + // (omit if "base" is the current folder without trailing slash) + for (var i=0; i0) + h = w; + + element.data('ww',w); + element.data('hh',h); + + } + } else + + if (loadobj.type=="svg" && loadobj.progress=="loaded") { + + element.append('
      '); + element.find('.tp-svg-innercontainer').append(loadobj.innerHTML); + } + // ELEMENT IS NOW FULLY LOADED + element.data('loaded',true); + } + + + if (loadobj && loadobj.progress && loadobj.progress.match(/inprogress|inload|prepared/g)) + if (!loadobj.error && jQuery.now()-element.data('start-to-load')<5000) + waitforload = true; + else { + loadobj.progress="failed"; + if (!loadobj.reported_img) { + loadobj.reported_img = true; + console.warn(src+" Could not be loaded !"); + } + } + + // WAIT FOR VIDEO API'S + if (opt.youtubeapineeded == true && (!window['YT'] || YT.Player==undefined)) { + waitforload = true; + if (jQuery.now()-opt.youtubestarttime>5000 && opt.youtubewarning!=true) { + opt.youtubewarning = true; + var txt = "YouTube Api Could not be loaded !"; + if (location.protocol === 'https:') txt = txt + " Please Check and Renew SSL Certificate !"; + console.error(txt); + opt.c.append('
      '+txt+'
      ') + } + } + + if (opt.vimeoapineeded == true && !window['Vimeo']) { + waitforload = true; + if (jQuery.now()-opt.vimeostarttime>5000 && opt.vimeowarning!=true) { + opt.vimeowarning= true; + var txt = "Vimeo Api Could not be loaded !"; + if (location.protocol === 'https:') txt = txt + " Please Check and Renew SSL Certificate !"; + console.error(txt); + opt.c.append('
      '+txt+'
      ') + } + } + + }); + + if (!_ISM && opt.audioqueue && opt.audioqueue.length>0) { + jQuery.each(opt.audioqueue,function(i,obj) { + if (obj.status && obj.status==="prepared") + if (jQuery.now() - obj.start0) { + opt.waitWithSwapSlide = setTimeout(function() { + swapSlide(container); + + },150); + return false; + } + + + var actli = container.find('.active-revslide'), + nextli = container.find('.next-revslide'), + defimg= nextli.find('.defaultimg'); + + + if (opt.sliderType==="carousel" && !opt.carousel.fadein) { + punchgs.TweenLite.to(opt.ul,1,{opacity:1}); + opt.carousel.fadein=true; + } + + if (nextli.index() === actli.index() && opt.onlyPreparedSlide!==true) { + nextli.removeClass("next-revslide"); + return false; + } + + if (opt.onlyPreparedSlide===true) { + opt.onlyPreparedSlide=false; + jQuery(opt.li[0]).addClass("processing-revslide"); + } + + nextli.removeClass("next-revslide").addClass("processing-revslide"); + + if (nextli.index()===-1 && opt.sliderType==="carousel") nextli = jQuery(opt.li[0]); + nextli.data('slide_on_focus_amount',(nextli.data('slide_on_focus_amount')+1) || 1); + // CHECK IF WE ARE ALREADY AT LAST ITEM TO PLAY IN REAL LOOP SESSION + if (opt.stopLoop=="on" && nextli.index()==opt.lastslidetoshow-1) { + container.find('.tp-bannertimer').css({'visibility':'hidden'}); + container.trigger('revolution.slide.onstop'); + opt.noloopanymore = 1; + } + + // INCREASE LOOP AMOUNTS + if (nextli.index()===opt.slideamount-1) { + opt.looptogo=opt.looptogo-1; + if (opt.looptogo<=0) + opt.stopLoop="on"; + } + + opt.tonpause = true; + container.trigger('stoptimer'); + opt.cd=0; + if (opt.spinner==="off") + if (opt.loader!==undefined) opt.loader.css({display:"none"}); + else + opt.loadertimer = setTimeout(function() {if (opt.loader!==undefined) opt.loader.css({display:"block"});},50); + + + loadImages(nextli,opt,1); + if (_R.preLoadAudio) _R.preLoadAudio(nextli,opt,1); + + + // WAIT FOR SWAP SLIDE PROGRESS + + + waitForCurrentImages(nextli,opt,function() { + + + // MANAGE BG VIDEOS + nextli.find('.rs-background-video-layer').each(function() { + var _nc = jQuery(this); + if (!_nc.hasClass("HasListener")) { + _nc.data('bgvideo',1); + if (_R.manageVideoLayer) _R.manageVideoLayer(_nc,opt); + } + if (_nc.find('.rs-fullvideo-cover').length==0) + _nc.append('
      ') + }); + swapSlideProgress(defimg,container) + }); + +} + +////////////////////////////////////// +// - PROGRESS SWAP THE SLIDES - // +///////////////////////////////////// +var swapSlideProgress = function(defimg,container) { + + var actli = container.find('.active-revslide'), + nextli = container.find('.processing-revslide'), + actsh = actli.find('.slotholder'), + nextsh = nextli.find('.slotholder'), + opt = container[0].opt; + + opt.tonpause=false; + + opt.cd=0; + + + clearTimeout(opt.loadertimer); + if (opt.loader!==undefined) opt.loader.css({display:"none"}); + // if ( opt.sliderType =="carousel") _R.prepareCarousel(opt); + _R.setSize(opt); + _R.slotSize(defimg,opt); + + if (_R.manageNavigation) _R.manageNavigation(opt); + var data={}; + data.nextslide=nextli; + data.currentslide=actli; + container.trigger('revolution.slide.onbeforeswap',data); + + opt.transition = 1; + opt.videoplaying = false; + + // IF DELAY HAS BEEN SET VIA THE SLIDE, WE TAKE THE NEW VALUE, OTHER WAY THE OLD ONE... + if (nextli.data('delay')!=undefined) { + opt.cd=0; + opt.delay=nextli.data('delay'); + } else + opt.delay=opt.origcd; + + + if (nextli.data('ssop')=="true" || nextli.data('ssop')===true) + opt.ssop = true + else + opt.ssop = false; + + + + container.trigger('nulltimer'); + + var ai = actli.index(), + ni = nextli.index(); + opt.sdir = niopt.rowzones.length ? opt.rowzones.length : _actli; + + if (opt.rowzones!=undefined && opt.rowzones.length>0 && opt.rowzones[_actli]!=undefined && _actli>=0 && _actli<=opt.rowzones.length && opt.rowzones[_actli].length>0) _R.setSize(opt); + //if (_R.callStaticDDDParallax) _R.callStaticDDDParallax(container,opt,nextli); + +} + + + + + +/////////////////////////// +// REMOVE THE LISTENERS // +/////////////////////////// +var removeAllListeners = function(container,opt) { + container.children().each(function() { + try{ jQuery(this).die('click'); } catch(e) {} + try{ jQuery(this).die('mouseenter');} catch(e) {} + try{ jQuery(this).die('mouseleave');} catch(e) {} + try{ jQuery(this).unbind('hover');} catch(e) {} + }) + try{ container.die('click','mouseenter','mouseleave');} catch(e) {} + clearInterval(opt.cdint); + container=null; +} + +/////////////////////////// +// - countDown - // +///////////////////////// +var countDown = function(container,opt) { + opt.cd=0; + opt.loop=0; + if (opt.stopAfterLoops!=undefined && opt.stopAfterLoops>-1) + opt.looptogo=opt.stopAfterLoops; + else + opt.looptogo=9999999; + + if (opt.stopAtSlide!=undefined && opt.stopAtSlide>-1) + opt.lastslidetoshow=opt.stopAtSlide; + else + opt.lastslidetoshow=999; + + opt.stopLoop="off"; + + if (opt.looptogo==0) opt.stopLoop="on"; + + + var bt=container.find('.tp-bannertimer'); + + // LISTENERS //container.trigger('stoptimer'); + container.on('stoptimer',function() { + + var bt = jQuery(this).find('.tp-bannertimer'); + bt[0].tween.pause(); + if (opt.disableProgressBar=="on") bt.css({visibility:"hidden"}); + opt.sliderstatus = "paused"; + _R.unToggleState(opt.slidertoggledby); + }); + + + container.on('starttimer',function() { + if (opt.forcepause_viatoggle) return; + if (opt.conthover!=1 && opt.videoplaying!=true && opt.width>opt.hideSliderAtLimit && opt.tonpause != true && opt.overnav !=true && opt.ssop!=true) + if (opt.noloopanymore !== 1 && (!opt.viewPort.enable || opt.inviewport)) { + + bt.css({visibility:"visible"}); + bt[0].tween.resume(); + opt.sliderstatus = "playing"; + } + + if (opt.disableProgressBar=="on") bt.css({visibility:"hidden"}); + _R.toggleState(opt.slidertoggledby); + }); + + + container.on('restarttimer',function() { + if (opt.forcepause_viatoggle) return; + var bt = jQuery(this).find('.tp-bannertimer'); + if (opt.mouseoncontainer && opt.navigation.onHoverStop=="on" && (!_ISM)) return false; + if (opt.noloopanymore !== 1 && (!opt.viewPort.enable || opt.inviewport) && opt.ssop!=true) { + bt.css({visibility:"visible"}); + bt[0].tween.kill(); + + bt[0].tween=punchgs.TweenLite.fromTo(bt,opt.delay/1000,{width:"0%"},{force3D:"auto",width:"100%",ease:punchgs.Linear.easeNone,onComplete:countDownNext,delay:1}); + opt.sliderstatus = "playing"; + } + if (opt.disableProgressBar=="on") bt.css({visibility:"hidden"}); + _R.toggleState(opt.slidertoggledby); + }); + + container.on('nulltimer',function() { + bt[0].tween.kill(); + bt[0].tween=punchgs.TweenLite.fromTo(bt,opt.delay/1000,{width:"0%"},{force3D:"auto",width:"100%",ease:punchgs.Linear.easeNone,onComplete:countDownNext,delay:1}); + bt[0].tween.pause(0); + if (opt.disableProgressBar=="on") bt.css({visibility:"hidden"}); + opt.sliderstatus = "paused"; + }); + + var countDownNext = function() { + if (jQuery('body').find(container).length==0) { + removeAllListeners(container,opt); + clearInterval(opt.cdint); + } + + container.trigger("revolution.slide.slideatend"); + + //STATE OF API CHANGED -> MOVE TO AIP BETTER + if (container.data('conthover-changed') == 1) { + opt.conthover= container.data('conthover'); + container.data('conthover-changed',0); + } + + _R.callingNewSlide(container,1); + } + + bt[0].tween=punchgs.TweenLite.fromTo(bt,opt.delay/1000,{width:"0%"},{force3D:"auto",width:"100%",ease:punchgs.Linear.easeNone,onComplete:countDownNext,delay:1}); + + + if (opt.slideamount >1 && !(opt.stopAfterLoops==0 && opt.stopAtSlide==1)) { + container.trigger("starttimer"); + } + else { + opt.noloopanymore = 1; + + container.trigger("nulltimer"); + } + + container.on('tp-mouseenter',function() { + opt.mouseoncontainer = true; + if (opt.navigation.onHoverStop=="on" && (!_ISM)) { + container.trigger('stoptimer'); + container.trigger('revolution.slide.onpause'); + } + }); + container.on('tp-mouseleft',function() { + opt.mouseoncontainer = false; + if (container.data('conthover')!=1 && opt.navigation.onHoverStop=="on" && ((opt.viewPort.enable==true && opt.inviewport) || opt.viewPort.enable==false)) { + container.trigger('revolution.slide.onresume'); + container.trigger('starttimer'); + } + }); + +} + + + + +////////////////////////////////////////////////////// +// * Revolution Slider - NEEDFULL FUNCTIONS +// * @version: 1.0 (30.10.2014) +// * @author ThemePunch +////////////////////////////////////////////////////// + + + +// - BLUR / FOXUS FUNCTIONS ON BROWSER + +var vis = (function(){ + var stateKey, + eventKey, + keys = { + hidden: "visibilitychange", + webkitHidden: "webkitvisibilitychange", + mozHidden: "mozvisibilitychange", + msHidden: "msvisibilitychange" + }; + for (stateKey in keys) { + if (stateKey in document) { + eventKey = keys[stateKey]; + break; + } + } + return function(c) { + if (c) document.addEventListener(eventKey, c,{pasive:true}); + return !document[stateKey]; + } + })(); + +var restartOnFocus = function() { + jQuery('.rev_redraw_on_blurfocus').each(function() { + var opt = jQuery(this)[0].opt; + if (opt==undefined || opt.c==undefined || opt.c.length===0) return false; + if (opt.windowfocused!=true) { + opt.windowfocused = true; + punchgs.TweenLite.delayedCall(0.3,function(){ + // TAB IS ACTIVE, WE CAN START ANY PART OF THE SLIDER + if (opt.fallbacks.nextSlideOnWindowFocus=="on") opt.c.revnext(); + opt.c.revredraw(); + if (opt.lastsliderstatus=="playing") + opt.c.revresume(); + }); + } + }) +} + +var lastStatBlur = function() { + jQuery('.rev_redraw_on_blurfocus').each(function() { + var opt = jQuery(this)[0].opt; + opt.windowfocused = false; + opt.lastsliderstatus = opt.sliderstatus; + opt.c.revpause(); + var actsh = opt.c.find('.active-revslide .slotholder'), + nextsh = opt.c.find('.processing-revslide .slotholder'); + + if (nextsh.data('kenburns')=="on") + _R.stopKenBurn(nextsh,opt); + + if (actsh.data('kenburns')=="on") + _R.stopKenBurn(actsh,opt); + }); + + +} + +var tabBlurringCheck = function() { + var notIE = (document.documentMode === undefined), + isChromium = window.chrome; + if (jQuery('body').data('revslider_focus_blur_listener')===1) return; + jQuery('body').data('revslider_focus_blur_listener',1); + if (notIE && !isChromium) { + // checks for Firefox and other NON IE Chrome versions + jQuery(window).on("focusin", function () { + restartOnFocus(); + }).on("focusout", function () { + lastStatBlur(); + }); + } else { + // checks for IE and Chromium versions + if (window.addEventListener) { + // bind focus event + window.addEventListener("focus", function (event) { + restartOnFocus(); + }, {capture:false,passive:true}); + // bind blur event + window.addEventListener("blur", function (event) { + lastStatBlur(); + }, {capture:false,passive:true}); + + } else { + // bind focus event + window.attachEvent("focus", function (event) { + restartOnFocus(); + }); + // bind focus event + window.attachEvent("blur", function (event) { + lastStatBlur(); + }); + } + } +} + + +// - GET THE URL PARAMETER // + +var getUrlVars = function (hashdivider){ + var vars = [], hash; + var hashes = window.location.href.slice(window.location.href.indexOf(hashdivider) + 1).split('_'); + for(var i = 0; i < hashes.length; i++) + { + hashes[i] = hashes[i].replace('%3D',"="); + hash = hashes[i].split('='); + vars.push(hash[0]); + vars[hash[0]] = hash[1]; + } + return vars; +} +})(jQuery); \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/js/source/jquery.themepunch.tools.min.js b/think.greaterchiangmai.com/public/revolution/js/source/jquery.themepunch.tools.min.js new file mode 100644 index 0000000..fbadfea --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/js/source/jquery.themepunch.tools.min.js @@ -0,0 +1,8710 @@ +/******************************************** + - THEMEPUNCH TOOLS Ver. 1.0 - + Last Update of Tools 08.03.2018 +*********************************************/ + + +/* +* @fileOverview TouchSwipe - jQuery Plugin +* @version 1.6.12 +* +* @author Matt Bryson http://www.github.com/mattbryson +* @see https://github.com/mattbryson/TouchSwipe-Jquery-Plugin +* @see http://labs.rampinteractive.co.uk/touchSwipe/ +* @see http://plugins.jquery.com/project/touchSwipe +* +* Copyright (c) 2010-2015 Matt Bryson +* Dual licensed under the MIT or GPL Version 2 licenses. +* +*/ + +/* +* +* Changelog +* $Date: 2010-12-12 (Wed, 12 Dec 2010) $ +* $version: 1.0.0 +* $version: 1.0.1 - removed multibyte comments +* +* $Date: 2011-21-02 (Mon, 21 Feb 2011) $ +* $version: 1.1.0 - added allowPageScroll property to allow swiping and scrolling of page +* - changed handler signatures so one handler can be used for multiple events +* $Date: 2011-23-02 (Wed, 23 Feb 2011) $ +* $version: 1.2.0 - added click handler. This is fired if the user simply clicks and does not swipe. The event object and click target are passed to handler. +* - If you use the http://code.google.com/p/jquery-ui-for-ipad-and-iphone/ plugin, you can also assign jQuery mouse events to children of a touchSwipe object. +* $version: 1.2.1 - removed console log! +* +* $version: 1.2.2 - Fixed bug where scope was not preserved in callback methods. +* +* $Date: 2011-28-04 (Thurs, 28 April 2011) $ +* $version: 1.2.4 - Changed licence terms to be MIT or GPL inline with jQuery. Added check for support of touch events to stop non compatible browsers erroring. +* +* $Date: 2011-27-09 (Tues, 27 September 2011) $ +* $version: 1.2.5 - Added support for testing swipes with mouse on desktop browser (thanks to https://github.com/joelhy) +* +* $Date: 2012-14-05 (Mon, 14 May 2012) $ +* $version: 1.2.6 - Added timeThreshold between start and end touch, so user can ignore slow swipes (thanks to Mark Chase). Default is null, all swipes are detected +* +* $Date: 2012-05-06 (Tues, 05 June 2012) $ +* $version: 1.2.7 - Changed time threshold to have null default for backwards compatibility. Added duration param passed back in events, and refactored how time is handled. +* +* $Date: 2012-05-06 (Tues, 05 June 2012) $ +* $version: 1.2.8 - Added the possibility to return a value like null or false in the trigger callback. In that way we can control when the touch start/move should take effect or not (simply by returning in some cases return null; or return false;) This effects the ontouchstart/ontouchmove event. +* +* $Date: 2012-06-06 (Wed, 06 June 2012) $ +* $version: 1.3.0 - Refactored whole plugin to allow for methods to be executed, as well as exposed defaults for user override. Added 'enable', 'disable', and 'destroy' methods +* +* $Date: 2012-05-06 (Fri, 05 June 2012) $ +* $version: 1.3.1 - Bug fixes - bind() with false as last argument is no longer supported in jQuery 1.6, also, if you just click, the duration is now returned correctly. +* +* $Date: 2012-29-07 (Sun, 29 July 2012) $ +* $version: 1.3.2 - Added fallbackToMouseEvents option to NOT capture mouse events on non touch devices. +* - Added "all" fingers value to the fingers property, so any combination of fingers triggers the swipe, allowing event handlers to check the finger count +* +* $Date: 2012-09-08 (Thurs, 9 Aug 2012) $ +* $version: 1.3.3 - Code tidy prep for minefied version +* +* $Date: 2012-04-10 (wed, 4 Oct 2012) $ +* $version: 1.4.0 - Added pinch support, pinchIn and pinchOut +* +* $Date: 2012-11-10 (Thurs, 11 Oct 2012) $ +* $version: 1.5.0 - Added excludedElements, a jquery selector that specifies child elements that do NOT trigger swipes. By default, this is one select that removes all form, input select, button and anchor elements. +* +* $Date: 2012-22-10 (Mon, 22 Oct 2012) $ +* $version: 1.5.1 - Fixed bug with jQuery 1.8 and trailing comma in excludedElements +* - Fixed bug with IE and eventPreventDefault() +* $Date: 2013-01-12 (Fri, 12 Jan 2013) $ +* $version: 1.6.0 - Fixed bugs with pinching, mainly when both pinch and swipe enabled, as well as adding time threshold for multifinger gestures, so releasing one finger beofre the other doesnt trigger as single finger gesture. +* - made the demo site all static local HTML pages so they can be run locally by a developer +* - added jsDoc comments and added documentation for the plugin +* - code tidy +* - added triggerOnTouchLeave property that will end the event when the user swipes off the element. +* $Date: 2013-03-23 (Sat, 23 Mar 2013) $ +* $version: 1.6.1 - Added support for ie8 touch events +* $version: 1.6.2 - Added support for events binding with on / off / bind in jQ for all callback names. +* - Deprecated the 'click' handler in favour of tap. +* - added cancelThreshold property +* - added option method to update init options at runtime +* $version 1.6.3 - added doubletap, longtap events and longTapThreshold, doubleTapThreshold property +* +* $Date: 2013-04-04 (Thurs, 04 April 2013) $ +* $version 1.6.4 - Fixed bug with cancelThreshold introduced in 1.6.3, where swipe status no longer fired start event, and stopped once swiping back. +* +* $Date: 2013-08-24 (Sat, 24 Aug 2013) $ +* $version 1.6.5 - Merged a few pull requests fixing various bugs, added AMD support. +* +* $Date: 2014-06-04 (Wed, 04 June 2014) $ +* $version 1.6.6 - Merge of pull requests. +* - IE10 touch support +* - Only prevent default event handling on valid swipe +* - Separate license/changelog comment +* - Detect if the swipe is valid at the end of the touch event. +* - Pass fingerdata to event handlers. +* - Add 'hold' gesture +* - Be more tolerant about the tap distance +* - Typos and minor fixes +* +* $Date: 2015-22-01 (Thurs, 22 Jan 2015) $ +* $version 1.6.7 - Added patch from https://github.com/mattbryson/TouchSwipe-Jquery-Plugin/issues/206 to fix memory leak +* +* $Date: 2015-2-2 (Mon, 2 Feb 2015) $ +* $version 1.6.8 - Added preventDefaultEvents option to proxy events regardless. +* - Fixed issue with swipe and pinch not triggering at the same time +* +* $Date: 2015-9-6 (Tues, 9 June 2015) $ +* $version 1.6.9 - Added PR from jdalton/hybrid to fix pointer events +* - Added scrolling demo +* - Added version property to plugin +* +* $Date: 2015-1-10 (Wed, 1 October 2015) $ +* $version 1.6.10 - Added PR from beatspace to fix tap events +* $version 1.6.11 - Added PRs from indri-indri ( Doc tidyup), kkirsche ( Bower tidy up ), UziTech (preventDefaultEvents fixes ) +* - Allowed setting multiple options via .swipe("options", options_hash) and more simply .swipe(options_hash) or exisitng instances +* $version 1.6.12 - Fixed bug with multi finger releases above 2 not triggering events +*/ + +/** + * See (http://jquery.com/). + * @name $ + * @class + * See the jQuery Library (http://jquery.com/) for full details. This just + * documents the function and classes that are added to jQuery by this plug-in. + */ + +/** + * See (http://jquery.com/) + * @name fn + * @class + * See the jQuery Library (http://jquery.com/) for full details. This just + * documents the function and classes that are added to jQuery by this plug-in. + * @memberOf $ + */ + + + +(function (factory) { + if (typeof define === 'function' && define.amd && define.amd.jQuery) { + // AMD. Register as anonymous module. + define(['jquery'], factory); + } else { + // Browser globals. + factory(jQuery); + } +}(function ($) { + "use strict"; + + //Constants + var VERSION = "1.6.12", + LEFT = "left", + RIGHT = "right", + UP = "up", + DOWN = "down", + IN = "in", + OUT = "out", + + NONE = "none", + AUTO = "auto", + + SWIPE = "swipe", + PINCH = "pinch", + TAP = "tap", + DOUBLE_TAP = "doubletap", + LONG_TAP = "longtap", + HOLD = "hold", + + HORIZONTAL = "horizontal", + VERTICAL = "vertical", + + ALL_FINGERS = "all", + + DOUBLE_TAP_THRESHOLD = 10, + + PHASE_START = "start", + PHASE_MOVE = "move", + PHASE_END = "end", + PHASE_CANCEL = "cancel", + + SUPPORTS_TOUCH = 'ontouchstart' in window, + + SUPPORTS_POINTER_IE10 = window.navigator.msPointerEnabled && !window.navigator.pointerEnabled, + + SUPPORTS_POINTER = window.navigator.pointerEnabled || window.navigator.msPointerEnabled, + + PLUGIN_NS = 'TouchSwipe'; + + + + /** + * The default configuration, and available options to configure touch swipe with. + * You can set the default values by updating any of the properties prior to instantiation. + * @name $.fn.swipe.defaults + * @namespace + * @property {int} [fingers=1] The number of fingers to detect in a swipe. Any swipes that do not meet this requirement will NOT trigger swipe handlers. + * @property {int} [threshold=75] The number of pixels that the user must move their finger by before it is considered a swipe. + * @property {int} [cancelThreshold=null] The number of pixels that the user must move their finger back from the original swipe direction to cancel the gesture. + * @property {int} [pinchThreshold=20] The number of pixels that the user must pinch their finger by before it is considered a pinch. + * @property {int} [maxTimeThreshold=null] Time, in milliseconds, between touchStart and touchEnd must NOT exceed in order to be considered a swipe. + * @property {int} [fingerReleaseThreshold=250] Time in milliseconds between releasing multiple fingers. If 2 fingers are down, and are released one after the other, if they are within this threshold, it counts as a simultaneous release. + * @property {int} [longTapThreshold=500] Time in milliseconds between tap and release for a long tap + * @property {int} [doubleTapThreshold=200] Time in milliseconds between 2 taps to count as a double tap + * @property {function} [swipe=null] A handler to catch all swipes. See {@link $.fn.swipe#event:swipe} + * @property {function} [swipeLeft=null] A handler that is triggered for "left" swipes. See {@link $.fn.swipe#event:swipeLeft} + * @property {function} [swipeRight=null] A handler that is triggered for "right" swipes. See {@link $.fn.swipe#event:swipeRight} + * @property {function} [swipeUp=null] A handler that is triggered for "up" swipes. See {@link $.fn.swipe#event:swipeUp} + * @property {function} [swipeDown=null] A handler that is triggered for "down" swipes. See {@link $.fn.swipe#event:swipeDown} + * @property {function} [swipeStatus=null] A handler triggered for every phase of the swipe. See {@link $.fn.swipe#event:swipeStatus} + * @property {function} [pinchIn=null] A handler triggered for pinch in events. See {@link $.fn.swipe#event:pinchIn} + * @property {function} [pinchOut=null] A handler triggered for pinch out events. See {@link $.fn.swipe#event:pinchOut} + * @property {function} [pinchStatus=null] A handler triggered for every phase of a pinch. See {@link $.fn.swipe#event:pinchStatus} + * @property {function} [tap=null] A handler triggered when a user just taps on the item, rather than swipes it. If they do not move, tap is triggered, if they do move, it is not. + * @property {function} [doubleTap=null] A handler triggered when a user double taps on the item. The delay between taps can be set with the doubleTapThreshold property. See {@link $.fn.swipe.defaults#doubleTapThreshold} + * @property {function} [longTap=null] A handler triggered when a user long taps on the item. The delay between start and end can be set with the longTapThreshold property. See {@link $.fn.swipe.defaults#longTapThreshold} + * @property (function) [hold=null] A handler triggered when a user reaches longTapThreshold on the item. See {@link $.fn.swipe.defaults#longTapThreshold} + * @property {boolean} [triggerOnTouchEnd=true] If true, the swipe events are triggered when the touch end event is received (user releases finger). If false, it will be triggered on reaching the threshold, and then cancel the touch event automatically. + * @property {boolean} [triggerOnTouchLeave=false] If true, then when the user leaves the swipe object, the swipe will end and trigger appropriate handlers. + * @property {string|undefined} [allowPageScroll='auto'] How the browser handles page scrolls when the user is swiping on a touchSwipe object. See {@link $.fn.swipe.pageScroll}.

      + "auto" : all undefined swipes will cause the page to scroll in that direction.
      + "none" : the page will not scroll when user swipes.
      + "horizontal" : will force page to scroll on horizontal swipes.
      + "vertical" : will force page to scroll on vertical swipes.
      + * @property {boolean} [fallbackToMouseEvents=true] If true mouse events are used when run on a non touch device, false will stop swipes being triggered by mouse events on non tocuh devices. + * @property {string} [excludedElements="button, input, select, textarea, a, .noSwipe"] A jquery selector that specifies child elements that do NOT trigger swipes. By default this excludes all form, input, select, button, anchor and .noSwipe elements. + * @property {boolean} [preventDefaultEvents=true] by default default events are cancelled, so the page doesn't move. You can dissable this so both native events fire as well as your handlers. + + */ + var defaults = { + fingers: 1, + threshold: 75, + cancelThreshold:null, + pinchThreshold:20, + maxTimeThreshold: null, + fingerReleaseThreshold:250, + longTapThreshold:500, + doubleTapThreshold:200, + swipe: null, + swipeLeft: null, + swipeRight: null, + swipeUp: null, + swipeDown: null, + swipeStatus: null, + pinchIn:null, + pinchOut:null, + pinchStatus:null, + click:null, //Deprecated since 1.6.2 + tap:null, + doubleTap:null, + longTap:null, + hold:null, + triggerOnTouchEnd: true, + triggerOnTouchLeave:false, + allowPageScroll: "auto", + fallbackToMouseEvents: true, + excludedElements:"label, button, input, select, textarea, a, .noSwipe", + preventDefaultEvents:true + }; + + + + /** + * Applies TouchSwipe behaviour to one or more jQuery objects. + * The TouchSwipe plugin can be instantiated via this method, or methods within + * TouchSwipe can be executed via this method as per jQuery plugin architecture. + * An existing plugin can have its options changed simply by re calling .swipe(options) + * @see TouchSwipe + * @class + * @param {Mixed} method If the current DOMNode is a TouchSwipe object, and method is a TouchSwipe method, then + * the method is executed, and any following arguments are passed to the TouchSwipe method. + * If method is an object, then the TouchSwipe class is instantiated on the current DOMNode, passing the + * configuration properties defined in the object. See TouchSwipe + * + */ + $.fn.swipe = function (method) { + var $this = $(this), + plugin = $this.data(PLUGIN_NS); + + //Check if we are already instantiated and trying to execute a method + if (plugin && typeof method === 'string') { + if (plugin[method]) { + return plugin[method].apply(this, Array.prototype.slice.call(arguments, 1)); + } else { + $.error('Method ' + method + ' does not exist on jQuery.swipe'); + } + } + + //Else update existing plugin with new options hash + else if (plugin && typeof method === 'object') { + plugin['option'].apply(this, arguments); + } + + //Else not instantiated and trying to pass init object (or nothing) + else if (!plugin && (typeof method === 'object' || !method)) { + return init.apply(this, arguments); + } + + return $this; + }; + + /** + * The version of the plugin + * @readonly + */ + $.fn.swipe.version = VERSION; + + + + //Expose our defaults so a user could override the plugin defaults + $.fn.swipe.defaults = defaults; + + /** + * The phases that a touch event goes through. The phase is passed to the event handlers. + * These properties are read only, attempting to change them will not alter the values passed to the event handlers. + * @namespace + * @readonly + * @property {string} PHASE_START Constant indicating the start phase of the touch event. Value is "start". + * @property {string} PHASE_MOVE Constant indicating the move phase of the touch event. Value is "move". + * @property {string} PHASE_END Constant indicating the end phase of the touch event. Value is "end". + * @property {string} PHASE_CANCEL Constant indicating the cancel phase of the touch event. Value is "cancel". + */ + $.fn.swipe.phases = { + PHASE_START: PHASE_START, + PHASE_MOVE: PHASE_MOVE, + PHASE_END: PHASE_END, + PHASE_CANCEL: PHASE_CANCEL + }; + + /** + * The direction constants that are passed to the event handlers. + * These properties are read only, attempting to change them will not alter the values passed to the event handlers. + * @namespace + * @readonly + * @property {string} LEFT Constant indicating the left direction. Value is "left". + * @property {string} RIGHT Constant indicating the right direction. Value is "right". + * @property {string} UP Constant indicating the up direction. Value is "up". + * @property {string} DOWN Constant indicating the down direction. Value is "cancel". + * @property {string} IN Constant indicating the in direction. Value is "in". + * @property {string} OUT Constant indicating the out direction. Value is "out". + */ + $.fn.swipe.directions = { + LEFT: LEFT, + RIGHT: RIGHT, + UP: UP, + DOWN: DOWN, + IN : IN, + OUT: OUT + }; + + /** + * The page scroll constants that can be used to set the value of allowPageScroll option + * These properties are read only + * @namespace + * @readonly + * @see $.fn.swipe.defaults#allowPageScroll + * @property {string} NONE Constant indicating no page scrolling is allowed. Value is "none". + * @property {string} HORIZONTAL Constant indicating horizontal page scrolling is allowed. Value is "horizontal". + * @property {string} VERTICAL Constant indicating vertical page scrolling is allowed. Value is "vertical". + * @property {string} AUTO Constant indicating either horizontal or vertical will be allowed, depending on the swipe handlers registered. Value is "auto". + */ + $.fn.swipe.pageScroll = { + NONE: NONE, + HORIZONTAL: HORIZONTAL, + VERTICAL: VERTICAL, + AUTO: AUTO + }; + + /** + * Constants representing the number of fingers used in a swipe. These are used to set both the value of fingers in the + * options object, as well as the value of the fingers event property. + * These properties are read only, attempting to change them will not alter the values passed to the event handlers. + * @namespace + * @readonly + * @see $.fn.swipe.defaults#fingers + * @property {string} ONE Constant indicating 1 finger is to be detected / was detected. Value is 1. + * @property {string} TWO Constant indicating 2 fingers are to be detected / were detected. Value is 2. + * @property {string} THREE Constant indicating 3 finger are to be detected / were detected. Value is 3. + * @property {string} FOUR Constant indicating 4 finger are to be detected / were detected. Not all devices support this. Value is 4. + * @property {string} FIVE Constant indicating 5 finger are to be detected / were detected. Not all devices support this. Value is 5. + * @property {string} ALL Constant indicating any combination of finger are to be detected. Value is "all". + */ + $.fn.swipe.fingers = { + ONE: 1, + TWO: 2, + THREE: 3, + FOUR: 4, + FIVE: 5, + ALL: ALL_FINGERS + }; + + /** + * Initialise the plugin for each DOM element matched + * This creates a new instance of the main TouchSwipe class for each DOM element, and then + * saves a reference to that instance in the elements data property. + * @internal + */ + function init(options) { + //Prep and extend the options + if (options && (options.allowPageScroll === undefined && (options.swipe !== undefined || options.swipeStatus !== undefined))) { + options.allowPageScroll = NONE; + } + + //Check for deprecated options + //Ensure that any old click handlers are assigned to the new tap, unless we have a tap + if(options.click!==undefined && options.tap===undefined) { + options.tap = options.click; + } + + if (!options) { + options = {}; + } + + //pass empty object so we dont modify the defaults + options = $.extend({}, $.fn.swipe.defaults, options); + + //For each element instantiate the plugin + return this.each(function () { + var $this = $(this); + + //Check we havent already initialised the plugin + var plugin = $this.data(PLUGIN_NS); + + if (!plugin) { + plugin = new TouchSwipe(this, options); + $this.data(PLUGIN_NS, plugin); + } + }); + } + + /** + * Main TouchSwipe Plugin Class. + * Do not use this to construct your TouchSwipe object, use the jQuery plugin method $.fn.swipe(); {@link $.fn.swipe} + * @private + * @name TouchSwipe + * @param {DOMNode} element The HTML DOM object to apply to plugin to + * @param {Object} options The options to configure the plugin with. @link {$.fn.swipe.defaults} + * @see $.fh.swipe.defaults + * @see $.fh.swipe + * @class + */ + function TouchSwipe(element, options) { + + //take a local/instacne level copy of the options - should make it this.options really... + var options = $.extend({}, options); + + var useTouchEvents = (SUPPORTS_TOUCH || SUPPORTS_POINTER || !options.fallbackToMouseEvents), + START_EV = useTouchEvents ? (SUPPORTS_POINTER ? (SUPPORTS_POINTER_IE10 ? 'MSPointerDown' : 'pointerdown') : 'touchstart') : 'mousedown', + MOVE_EV = useTouchEvents ? (SUPPORTS_POINTER ? (SUPPORTS_POINTER_IE10 ? 'MSPointerMove' : 'pointermove') : 'touchmove') : 'mousemove', + END_EV = useTouchEvents ? (SUPPORTS_POINTER ? (SUPPORTS_POINTER_IE10 ? 'MSPointerUp' : 'pointerup') : 'touchend') : 'mouseup', + LEAVE_EV = useTouchEvents ? null : 'mouseleave', //we manually detect leave on touch devices, so null event here + CANCEL_EV = (SUPPORTS_POINTER ? (SUPPORTS_POINTER_IE10 ? 'MSPointerCancel' : 'pointercancel') : 'touchcancel'); + + + + //touch properties + var distance = 0, + direction = null, + duration = 0, + startTouchesDistance = 0, + endTouchesDistance = 0, + pinchZoom = 1, + pinchDistance = 0, + pinchDirection = 0, + maximumsMap=null; + + + + //jQuery wrapped element for this instance + var $element = $(element); + + //Current phase of th touch cycle + var phase = "start"; + + // the current number of fingers being used. + var fingerCount = 0; + + //track mouse points / delta + var fingerData = {}; + + //track times + var startTime = 0, + endTime = 0, + previousTouchEndTime=0, + fingerCountAtRelease=0, + doubleTapStartTime=0; + + //Timeouts + var singleTapTimeout=null, + holdTimeout=null; + + // Add gestures to all swipable areas if supported + try { + $element.bind(START_EV, touchStart); + $element.bind(CANCEL_EV, touchCancel); + } + catch (e) { + $.error('events not supported ' + START_EV + ',' + CANCEL_EV + ' on jQuery.swipe'); + } + + // + //Public methods + // + + /** + * re-enables the swipe plugin with the previous configuration + * @function + * @name $.fn.swipe#enable + * @return {DOMNode} The Dom element that was registered with TouchSwipe + * @example $("#element").swipe("enable"); + */ + this.enable = function () { + $element.bind(START_EV, touchStart); + $element.bind(CANCEL_EV, touchCancel); + return $element; + }; + + /** + * disables the swipe plugin + * @function + * @name $.fn.swipe#disable + * @return {DOMNode} The Dom element that is now registered with TouchSwipe + * @example $("#element").swipe("disable"); + */ + this.disable = function () { + removeListeners(); + return $element; + }; + + /** + * Destroy the swipe plugin completely. To use any swipe methods, you must re initialise the plugin. + * @function + * @name $.fn.swipe#destroy + * @example $("#element").swipe("destroy"); + */ + this.destroy = function () { + removeListeners(); + $element.data(PLUGIN_NS, null); + $element = null; + }; + + + /** + * Allows run time updating of the swipe configuration options. + * @function + * @name $.fn.swipe#option + * @param {String} property The option property to get or set, or a has of multiple options to set + * @param {Object} [value] The value to set the property to + * @return {Object} If only a property name is passed, then that property value is returned. If nothing is passed the current options hash is returned. + * @example $("#element").swipe("option", "threshold"); // return the threshold + * @example $("#element").swipe("option", "threshold", 100); // set the threshold after init + * @example $("#element").swipe("option", {threshold:100, fingers:3} ); // set multiple properties after init + * @example $("#element").swipe({threshold:100, fingers:3} ); // set multiple properties after init - the "option" method is optional! + * @example $("#element").swipe("option"); // Return the current options hash + * @see $.fn.swipe.defaults + * + */ + this.option = function (property, value) { + + if(typeof property === 'object') { + options = $.extend(options, property); + } else if(options[property]!==undefined) { + if(value===undefined) { + return options[property]; + } else { + options[property] = value; + } + } else if (!property) { + return options; + } else { + $.error('Option ' + property + ' does not exist on jQuery.swipe.options'); + } + + return null; + } + + + + // + // Private methods + // + + // + // EVENTS + // + /** + * Event handler for a touch start event. + * Stops the default click event from triggering and stores where we touched + * @inner + * @param {object} jqEvent The normalised jQuery event object. + */ + function touchStart(jqEvent) { + + //If we already in a touch event (a finger already in use) then ignore subsequent ones.. + if( getTouchInProgress() ) + return; + + //Check if this element matches any in the excluded elements selectors, or its parent is excluded, if so, DON'T swipe + if( $(jqEvent.target).closest( options.excludedElements, $element ).length>0 ) + return; + + //As we use Jquery bind for events, we need to target the original event object + //If these events are being programmatically triggered, we don't have an original event object, so use the Jq one. + var event = jqEvent.originalEvent ? jqEvent.originalEvent : jqEvent; + + var ret, + touches = event.touches, + evt = touches ? touches[0] : event; + + phase = PHASE_START; + + //If we support touches, get the finger count + if (touches) { + // get the total number of fingers touching the screen + fingerCount = touches.length; + } + //Else this is the desktop, so stop the browser from dragging content + else if(options.preventDefaultEvents !== false) { + jqEvent.preventDefault(); //call this on jq event so we are cross browser + } + + //clear vars.. + distance = 0; + direction = null; + pinchDirection=null; + duration = 0; + startTouchesDistance=0; + endTouchesDistance=0; + pinchZoom = 1; + pinchDistance = 0; + maximumsMap=createMaximumsData(); + cancelMultiFingerRelease(); + + //Create the default finger data + createFingerData( 0, evt ); + + // check the number of fingers is what we are looking for, or we are capturing pinches + if (!touches || (fingerCount === options.fingers || options.fingers === ALL_FINGERS) || hasPinches()) { + // get the coordinates of the touch + startTime = getTimeStamp(); + + if(fingerCount==2) { + //Keep track of the initial pinch distance, so we can calculate the diff later + //Store second finger data as start + createFingerData( 1, touches[1] ); + startTouchesDistance = endTouchesDistance = calculateTouchesDistance(fingerData[0].start, fingerData[1].start); + } + + if (options.swipeStatus || options.pinchStatus) { + ret = triggerHandler(event, phase); + } + } + else { + //A touch with more or less than the fingers we are looking for, so cancel + ret = false; + } + + //If we have a return value from the users handler, then return and cancel + if (ret === false) { + phase = PHASE_CANCEL; + triggerHandler(event, phase); + return ret; + } + else { + if (options.hold) { + holdTimeout = setTimeout($.proxy(function() { + //Trigger the event + $element.trigger('hold', [event.target]); + //Fire the callback + if(options.hold) { + ret = options.hold.call($element, event, event.target); + } + }, this), options.longTapThreshold ); + } + + setTouchInProgress(true); + } + + return null; + }; + + + + /** + * Event handler for a touch move event. + * If we change fingers during move, then cancel the event + * @inner + * @param {object} jqEvent The normalised jQuery event object. + */ + function touchMove(jqEvent) { + + //As we use Jquery bind for events, we need to target the original event object + //If these events are being programmatically triggered, we don't have an original event object, so use the Jq one. + var event = jqEvent.originalEvent ? jqEvent.originalEvent : jqEvent; + + //If we are ending, cancelling, or within the threshold of 2 fingers being released, don't track anything.. + if (phase === PHASE_END || phase === PHASE_CANCEL || inMultiFingerRelease()) + return; + + var ret, + touches = event.touches, + evt = touches ? touches[0] : event; + + + //Update the finger data + var currentFinger = updateFingerData(evt); + endTime = getTimeStamp(); + + if (touches) { + fingerCount = touches.length; + } + + if (options.hold) + clearTimeout(holdTimeout); + + phase = PHASE_MOVE; + + //If we have 2 fingers get Touches distance as well + if(fingerCount==2) { + + //Keep track of the initial pinch distance, so we can calculate the diff later + //We do this here as well as the start event, in case they start with 1 finger, and the press 2 fingers + if(startTouchesDistance==0) { + //Create second finger if this is the first time... + createFingerData( 1, touches[1] ); + + startTouchesDistance = endTouchesDistance = calculateTouchesDistance(fingerData[0].start, fingerData[1].start); + } else { + //Else just update the second finger + updateFingerData(touches[1]); + + endTouchesDistance = calculateTouchesDistance(fingerData[0].end, fingerData[1].end); + pinchDirection = calculatePinchDirection(fingerData[0].end, fingerData[1].end); + } + + + pinchZoom = calculatePinchZoom(startTouchesDistance, endTouchesDistance); + pinchDistance = Math.abs(startTouchesDistance - endTouchesDistance); + } + + + + + if ( (fingerCount === options.fingers || options.fingers === ALL_FINGERS) || !touches || hasPinches() ) { + + direction = calculateDirection(currentFinger.start, currentFinger.end); + + //Check if we need to prevent default event (page scroll / pinch zoom) or not + validateDefaultEvent(jqEvent, direction); + + //Distance and duration are all off the main finger + distance = calculateDistance(currentFinger.start, currentFinger.end); + duration = calculateDuration(); + + //Cache the maximum distance we made in this direction + setMaxDistance(direction, distance); + + + if (options.swipeStatus || options.pinchStatus) { + ret = triggerHandler(event, phase); + } + + + //If we trigger end events when threshold are met, or trigger events when touch leaves element + if(!options.triggerOnTouchEnd || options.triggerOnTouchLeave) { + + var inBounds = true; + + //If checking if we leave the element, run the bounds check (we can use touchleave as its not supported on webkit) + if(options.triggerOnTouchLeave) { + var bounds = getbounds( this ); + inBounds = isInBounds( currentFinger.end, bounds ); + } + + //Trigger end handles as we swipe if thresholds met or if we have left the element if the user has asked to check these.. + if(!options.triggerOnTouchEnd && inBounds) { + phase = getNextPhase( PHASE_MOVE ); + } + //We end if out of bounds here, so set current phase to END, and check if its modified + else if(options.triggerOnTouchLeave && !inBounds ) { + phase = getNextPhase( PHASE_END ); + } + + if(phase==PHASE_CANCEL || phase==PHASE_END) { + triggerHandler(event, phase); + } + } + } + else { + phase = PHASE_CANCEL; + triggerHandler(event, phase); + } + + if (ret === false) { + phase = PHASE_CANCEL; + triggerHandler(event, phase); + } + } + + + + + /** + * Event handler for a touch end event. + * Calculate the direction and trigger events + * @inner + * @param {object} jqEvent The normalised jQuery event object. + */ + function touchEnd(jqEvent) { + //As we use Jquery bind for events, we need to target the original event object + //If these events are being programmatically triggered, we don't have an original event object, so use the Jq one. + var event = jqEvent.originalEvent ? jqEvent.originalEvent : jqEvent, + touches = event.touches; + + //If we are still in a touch with the device wait a fraction and see if the other finger comes up + //if it does within the threshold, then we treat it as a multi release, not a single release and end the touch / swipe + if (touches) { + if(touches.length && !inMultiFingerRelease()) { + startMultiFingerRelease(); + return true; + } else if (touches.length && inMultiFingerRelease()) { + return true; + } + } + + //If a previous finger has been released, check how long ago, if within the threshold, then assume it was a multifinger release. + //This is used to allow 2 fingers to release fractionally after each other, whilst maintainig the event as containg 2 fingers, not 1 + if(inMultiFingerRelease()) { + fingerCount=fingerCountAtRelease; + } + + //Set end of swipe + endTime = getTimeStamp(); + + //Get duration incase move was never fired + duration = calculateDuration(); + + //If we trigger handlers at end of swipe OR, we trigger during, but they didnt trigger and we are still in the move phase + if(didSwipeBackToCancel() || !validateSwipeDistance()) { + phase = PHASE_CANCEL; + triggerHandler(event, phase); + } else if (options.triggerOnTouchEnd || (options.triggerOnTouchEnd == false && phase === PHASE_MOVE)) { + //call this on jq event so we are cross browser + if(options.preventDefaultEvents !== false) { + jqEvent.preventDefault(); + } + phase = PHASE_END; + triggerHandler(event, phase); + } + //Special cases - A tap should always fire on touch end regardless, + //So here we manually trigger the tap end handler by itself + //We dont run trigger handler as it will re-trigger events that may have fired already + else if (!options.triggerOnTouchEnd && hasTap()) { + //Trigger the pinch events... + phase = PHASE_END; + triggerHandlerForGesture(event, phase, TAP); + } + else if (phase === PHASE_MOVE) { + phase = PHASE_CANCEL; + triggerHandler(event, phase); + } + + setTouchInProgress(false); + + return null; + } + + + + /** + * Event handler for a touch cancel event. + * Clears current vars + * @inner + */ + function touchCancel() { + // reset the variables back to default values + fingerCount = 0; + endTime = 0; + startTime = 0; + startTouchesDistance=0; + endTouchesDistance=0; + pinchZoom=1; + + //If we were in progress of tracking a possible multi touch end, then re set it. + cancelMultiFingerRelease(); + + setTouchInProgress(false); + } + + + /** + * Event handler for a touch leave event. + * This is only triggered on desktops, in touch we work this out manually + * as the touchleave event is not supported in webkit + * @inner + */ + function touchLeave(jqEvent) { + //If these events are being programmatically triggered, we don't have an original event object, so use the Jq one. + var event = jqEvent.originalEvent ? jqEvent.originalEvent : jqEvent; + + //If we have the trigger on leave property set.... + if(options.triggerOnTouchLeave) { + phase = getNextPhase( PHASE_END ); + triggerHandler(event, phase); + } + } + + /** + * Removes all listeners that were associated with the plugin + * @inner + */ + function removeListeners() { + $element.unbind(START_EV, touchStart); + $element.unbind(CANCEL_EV, touchCancel); + $element.unbind(MOVE_EV, touchMove); + $element.unbind(END_EV, touchEnd); + + //we only have leave events on desktop, we manually calculate leave on touch as its not supported in webkit + if(LEAVE_EV) { + $element.unbind(LEAVE_EV, touchLeave); + } + + setTouchInProgress(false); + } + + + /** + * Checks if the time and distance thresholds have been met, and if so then the appropriate handlers are fired. + */ + function getNextPhase(currentPhase) { + + var nextPhase = currentPhase; + + // Ensure we have valid swipe (under time and over distance and check if we are out of bound...) + var validTime = validateSwipeTime(); + var validDistance = validateSwipeDistance(); + var didCancel = didSwipeBackToCancel(); + + //If we have exceeded our time, then cancel + if(!validTime || didCancel) { + nextPhase = PHASE_CANCEL; + } + //Else if we are moving, and have reached distance then end + else if (validDistance && currentPhase == PHASE_MOVE && (!options.triggerOnTouchEnd || options.triggerOnTouchLeave) ) { + nextPhase = PHASE_END; + } + //Else if we have ended by leaving and didn't reach distance, then cancel + else if (!validDistance && currentPhase==PHASE_END && options.triggerOnTouchLeave) { + nextPhase = PHASE_CANCEL; + } + + return nextPhase; + } + + + /** + * Trigger the relevant event handler + * The handlers are passed the original event, the element that was swiped, and in the case of the catch all handler, the direction that was swiped, "left", "right", "up", or "down" + * @param {object} event the original event object + * @param {string} phase the phase of the swipe (start, end cancel etc) {@link $.fn.swipe.phases} + * @inner + */ + function triggerHandler(event, phase) { + + var ret, + touches = event.touches; + + //Swipes and pinches are not mutually exclusive - can happend at same time, so need to trigger 2 events potentially + if( (didSwipe() && hasSwipes()) || (didPinch() && hasPinches()) ) { + // SWIPE GESTURES + if(didSwipe() && hasSwipes()) { //hasSwipes as status needs to fire even if swipe is invalid + //Trigger the swipe events... + ret = triggerHandlerForGesture(event, phase, SWIPE); + } + + // PINCH GESTURES (if the above didn't cancel) + if((didPinch() && hasPinches()) && ret!==false) { + //Trigger the pinch events... + ret = triggerHandlerForGesture(event, phase, PINCH); + } + } + else { + + // CLICK / TAP (if the above didn't cancel) + if(didDoubleTap() && ret!==false) { + //Trigger the tap events... + ret = triggerHandlerForGesture(event, phase, DOUBLE_TAP); + } + + // CLICK / TAP (if the above didn't cancel) + else if(didLongTap() && ret!==false) { + //Trigger the tap events... + ret = triggerHandlerForGesture(event, phase, LONG_TAP); + } + + // CLICK / TAP (if the above didn't cancel) + else if(didTap() && ret!==false) { + //Trigger the tap event.. + ret = triggerHandlerForGesture(event, phase, TAP); + } + } + + // If we are cancelling the gesture, then manually trigger the reset handler + if (phase === PHASE_CANCEL) { + if(hasSwipes() ) { + ret = triggerHandlerForGesture(event, phase, SWIPE); + } + + if(hasPinches()) { + ret = triggerHandlerForGesture(event, phase, PINCH); + } + touchCancel(event); + } + + // If we are ending the gesture, then manually trigger the reset handler IF all fingers are off + if(phase === PHASE_END) { + //If we support touch, then check that all fingers are off before we cancel + if (touches) { + if(!touches.length) { + touchCancel(event); + } + } + else { + touchCancel(event); + } + } + + return ret; + } + + + + /** + * Trigger the relevant event handler + * The handlers are passed the original event, the element that was swiped, and in the case of the catch all handler, the direction that was swiped, "left", "right", "up", or "down" + * @param {object} event the original event object + * @param {string} phase the phase of the swipe (start, end cancel etc) {@link $.fn.swipe.phases} + * @param {string} gesture the gesture to trigger a handler for : PINCH or SWIPE {@link $.fn.swipe.gestures} + * @return Boolean False, to indicate that the event should stop propagation, or void. + * @inner + */ + function triggerHandlerForGesture(event, phase, gesture) { + + var ret; + + //SWIPES.... + if(gesture==SWIPE) { + //Trigger status every time.. + + //Trigger the event... + $element.trigger('swipeStatus', [phase, direction || null, distance || 0, duration || 0, fingerCount, fingerData]); + + //Fire the callback + if (options.swipeStatus) { + ret = options.swipeStatus.call($element, event, phase, direction || null, distance || 0, duration || 0, fingerCount, fingerData); + //If the status cancels, then dont run the subsequent event handlers.. + if(ret===false) return false; + } + + + + + if (phase == PHASE_END && validateSwipe()) { + //Fire the catch all event + $element.trigger('swipe', [direction, distance, duration, fingerCount, fingerData]); + + //Fire catch all callback + if (options.swipe) { + ret = options.swipe.call($element, event, direction, distance, duration, fingerCount, fingerData); + //If the status cancels, then dont run the subsequent event handlers.. + if(ret===false) return false; + } + + //trigger direction specific event handlers + switch (direction) { + case LEFT: + //Trigger the event + $element.trigger('swipeLeft', [direction, distance, duration, fingerCount, fingerData]); + + //Fire the callback + if (options.swipeLeft) { + ret = options.swipeLeft.call($element, event, direction, distance, duration, fingerCount, fingerData); + } + break; + + case RIGHT: + //Trigger the event + $element.trigger('swipeRight', [direction, distance, duration, fingerCount, fingerData]); + + //Fire the callback + if (options.swipeRight) { + ret = options.swipeRight.call($element, event, direction, distance, duration, fingerCount, fingerData); + } + break; + + case UP: + //Trigger the event + $element.trigger('swipeUp', [direction, distance, duration, fingerCount, fingerData]); + + //Fire the callback + if (options.swipeUp) { + ret = options.swipeUp.call($element, event, direction, distance, duration, fingerCount, fingerData); + } + break; + + case DOWN: + //Trigger the event + $element.trigger('swipeDown', [direction, distance, duration, fingerCount, fingerData]); + + //Fire the callback + if (options.swipeDown) { + ret = options.swipeDown.call($element, event, direction, distance, duration, fingerCount, fingerData); + } + break; + } + } + } + + + //PINCHES.... + if(gesture==PINCH) { + //Trigger the event + $element.trigger('pinchStatus', [phase, pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData]); + + //Fire the callback + if (options.pinchStatus) { + ret = options.pinchStatus.call($element, event, phase, pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData); + //If the status cancels, then dont run the subsequent event handlers.. + if(ret===false) return false; + } + + if(phase==PHASE_END && validatePinch()) { + + switch (pinchDirection) { + case IN: + //Trigger the event + $element.trigger('pinchIn', [pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData]); + + //Fire the callback + if (options.pinchIn) { + ret = options.pinchIn.call($element, event, pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData); + } + break; + + case OUT: + //Trigger the event + $element.trigger('pinchOut', [pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData]); + + //Fire the callback + if (options.pinchOut) { + ret = options.pinchOut.call($element, event, pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData); + } + break; + } + } + } + + + + + + if(gesture==TAP) { + if(phase === PHASE_CANCEL || phase === PHASE_END) { + + + //Cancel any existing double tap + clearTimeout(singleTapTimeout); + //Cancel hold timeout + clearTimeout(holdTimeout); + + //If we are also looking for doubelTaps, wait incase this is one... + if(hasDoubleTap() && !inDoubleTap()) { + //Cache the time of this tap + doubleTapStartTime = getTimeStamp(); + + //Now wait for the double tap timeout, and trigger this single tap + //if its not cancelled by a double tap + singleTapTimeout = setTimeout($.proxy(function() { + doubleTapStartTime=null; + //Trigger the event + $element.trigger('tap', [event.target]); + + + //Fire the callback + if(options.tap) { + ret = options.tap.call($element, event, event.target); + } + }, this), options.doubleTapThreshold ); + + } else { + doubleTapStartTime=null; + + //Trigger the event + $element.trigger('tap', [event.target]); + + + //Fire the callback + if(options.tap) { + ret = options.tap.call($element, event, event.target); + } + } + } + } + + else if (gesture==DOUBLE_TAP) { + if(phase === PHASE_CANCEL || phase === PHASE_END) { + //Cancel any pending singletap + clearTimeout(singleTapTimeout); + doubleTapStartTime=null; + + //Trigger the event + $element.trigger('doubletap', [event.target]); + + //Fire the callback + if(options.doubleTap) { + ret = options.doubleTap.call($element, event, event.target); + } + } + } + + else if (gesture==LONG_TAP) { + if(phase === PHASE_CANCEL || phase === PHASE_END) { + //Cancel any pending singletap (shouldnt be one) + clearTimeout(singleTapTimeout); + doubleTapStartTime=null; + + //Trigger the event + $element.trigger('longtap', [event.target]); + + //Fire the callback + if(options.longTap) { + ret = options.longTap.call($element, event, event.target); + } + } + } + + return ret; + } + + + + + // + // GESTURE VALIDATION + // + + /** + * Checks the user has swipe far enough + * @return Boolean if threshold has been set, return true if the threshold was met, else false. + * If no threshold was set, then we return true. + * @inner + */ + function validateSwipeDistance() { + var valid = true; + //If we made it past the min swipe distance.. + if (options.threshold !== null) { + valid = distance >= options.threshold; + } + + return valid; + } + + /** + * Checks the user has swiped back to cancel. + * @return Boolean if cancelThreshold has been set, return true if the cancelThreshold was met, else false. + * If no cancelThreshold was set, then we return true. + * @inner + */ + function didSwipeBackToCancel() { + var cancelled = false; + if(options.cancelThreshold !== null && direction !==null) { + cancelled = (getMaxDistance( direction ) - distance) >= options.cancelThreshold; + } + + return cancelled; + } + + /** + * Checks the user has pinched far enough + * @return Boolean if pinchThreshold has been set, return true if the threshold was met, else false. + * If no threshold was set, then we return true. + * @inner + */ + function validatePinchDistance() { + if (options.pinchThreshold !== null) { + return pinchDistance >= options.pinchThreshold; + } + return true; + } + + /** + * Checks that the time taken to swipe meets the minimum / maximum requirements + * @return Boolean + * @inner + */ + function validateSwipeTime() { + var result; + //If no time set, then return true + + if (options.maxTimeThreshold) { + if (duration >= options.maxTimeThreshold) { + result = false; + } else { + result = true; + } + } + else { + result = true; + } + + return result; + } + + + + /** + * Checks direction of the swipe and the value allowPageScroll to see if we should allow or prevent the default behaviour from occurring. + * This will essentially allow page scrolling or not when the user is swiping on a touchSwipe object. + * @param {object} jqEvent The normalised jQuery representation of the event object. + * @param {string} direction The direction of the event. See {@link $.fn.swipe.directions} + * @see $.fn.swipe.directions + * @inner + */ + function validateDefaultEvent(jqEvent, direction) { + + //If we have no pinches, then do this + //If we have a pinch, and we we have 2 fingers or more down, then dont allow page scroll. + + //If the option is set, allways allow the event to bubble up (let user handle wiredness) + if( options.preventDefaultEvents === false) { + return; + } + + if (options.allowPageScroll === NONE) { + jqEvent.preventDefault(); + } else { + var auto = options.allowPageScroll === AUTO; + + switch (direction) { + case LEFT: + if ((options.swipeLeft && auto) || (!auto && options.allowPageScroll != HORIZONTAL)) { + jqEvent.preventDefault(); + } + break; + + case RIGHT: + if ((options.swipeRight && auto) || (!auto && options.allowPageScroll != HORIZONTAL)) { + jqEvent.preventDefault(); + } + break; + + case UP: + if ((options.swipeUp && auto) || (!auto && options.allowPageScroll != VERTICAL)) { + jqEvent.preventDefault(); + } + break; + + case DOWN: + if ((options.swipeDown && auto) || (!auto && options.allowPageScroll != VERTICAL)) { + jqEvent.preventDefault(); + } + break; + } + } + + } + + + // PINCHES + /** + * Returns true of the current pinch meets the thresholds + * @return Boolean + * @inner + */ + function validatePinch() { + var hasCorrectFingerCount = validateFingers(); + var hasEndPoint = validateEndPoint(); + var hasCorrectDistance = validatePinchDistance(); + return hasCorrectFingerCount && hasEndPoint && hasCorrectDistance; + + } + + /** + * Returns true if any Pinch events have been registered + * @return Boolean + * @inner + */ + function hasPinches() { + //Enure we dont return 0 or null for false values + return !!(options.pinchStatus || options.pinchIn || options.pinchOut); + } + + /** + * Returns true if we are detecting pinches, and have one + * @return Boolean + * @inner + */ + function didPinch() { + //Enure we dont return 0 or null for false values + return !!(validatePinch() && hasPinches()); + } + + + + + // SWIPES + /** + * Returns true if the current swipe meets the thresholds + * @return Boolean + * @inner + */ + function validateSwipe() { + //Check validity of swipe + var hasValidTime = validateSwipeTime(); + var hasValidDistance = validateSwipeDistance(); + var hasCorrectFingerCount = validateFingers(); + var hasEndPoint = validateEndPoint(); + var didCancel = didSwipeBackToCancel(); + + // if the user swiped more than the minimum length, perform the appropriate action + // hasValidDistance is null when no distance is set + var valid = !didCancel && hasEndPoint && hasCorrectFingerCount && hasValidDistance && hasValidTime; + + return valid; + } + + /** + * Returns true if any Swipe events have been registered + * @return Boolean + * @inner + */ + function hasSwipes() { + //Enure we dont return 0 or null for false values + return !!(options.swipe || options.swipeStatus || options.swipeLeft || options.swipeRight || options.swipeUp || options.swipeDown); + } + + + /** + * Returns true if we are detecting swipes and have one + * @return Boolean + * @inner + */ + function didSwipe() { + //Enure we dont return 0 or null for false values + return !!(validateSwipe() && hasSwipes()); + } + + /** + * Returns true if we have matched the number of fingers we are looking for + * @return Boolean + * @inner + */ + function validateFingers() { + //The number of fingers we want were matched, or on desktop we ignore + return ((fingerCount === options.fingers || options.fingers === ALL_FINGERS) || !SUPPORTS_TOUCH); + } + + /** + * Returns true if we have an end point for the swipe + * @return Boolean + * @inner + */ + function validateEndPoint() { + //We have an end value for the finger + return fingerData[0].end.x !== 0; + } + + // TAP / CLICK + /** + * Returns true if a click / tap events have been registered + * @return Boolean + * @inner + */ + function hasTap() { + //Enure we dont return 0 or null for false values + return !!(options.tap) ; + } + + /** + * Returns true if a double tap events have been registered + * @return Boolean + * @inner + */ + function hasDoubleTap() { + //Enure we dont return 0 or null for false values + return !!(options.doubleTap) ; + } + + /** + * Returns true if any long tap events have been registered + * @return Boolean + * @inner + */ + function hasLongTap() { + //Enure we dont return 0 or null for false values + return !!(options.longTap) ; + } + + /** + * Returns true if we could be in the process of a double tap (one tap has occurred, we are listening for double taps, and the threshold hasn't past. + * @return Boolean + * @inner + */ + function validateDoubleTap() { + if(doubleTapStartTime==null){ + return false; + } + var now = getTimeStamp(); + return (hasDoubleTap() && ((now-doubleTapStartTime) <= options.doubleTapThreshold)); + } + + /** + * Returns true if we could be in the process of a double tap (one tap has occurred, we are listening for double taps, and the threshold hasn't past. + * @return Boolean + * @inner + */ + function inDoubleTap() { + return validateDoubleTap(); + } + + + /** + * Returns true if we have a valid tap + * @return Boolean + * @inner + */ + function validateTap() { + return ((fingerCount === 1 || !SUPPORTS_TOUCH) && (isNaN(distance) || distance < options.threshold)); + } + + /** + * Returns true if we have a valid long tap + * @return Boolean + * @inner + */ + function validateLongTap() { + //slight threshold on moving finger + return ((duration > options.longTapThreshold) && (distance < DOUBLE_TAP_THRESHOLD)); + } + + /** + * Returns true if we are detecting taps and have one + * @return Boolean + * @inner + */ + function didTap() { + //Enure we dont return 0 or null for false values + return !!(validateTap() && hasTap()); + } + + + /** + * Returns true if we are detecting double taps and have one + * @return Boolean + * @inner + */ + function didDoubleTap() { + //Enure we dont return 0 or null for false values + return !!(validateDoubleTap() && hasDoubleTap()); + } + + /** + * Returns true if we are detecting long taps and have one + * @return Boolean + * @inner + */ + function didLongTap() { + //Enure we dont return 0 or null for false values + return !!(validateLongTap() && hasLongTap()); + } + + + + + // MULTI FINGER TOUCH + /** + * Starts tracking the time between 2 finger releases, and keeps track of how many fingers we initially had up + * @inner + */ + function startMultiFingerRelease() { + previousTouchEndTime = getTimeStamp(); + fingerCountAtRelease = event.touches.length+1; + } + + /** + * Cancels the tracking of time between 2 finger releases, and resets counters + * @inner + */ + function cancelMultiFingerRelease() { + previousTouchEndTime = 0; + fingerCountAtRelease = 0; + } + + /** + * Checks if we are in the threshold between 2 fingers being released + * @return Boolean + * @inner + */ + function inMultiFingerRelease() { + + var withinThreshold = false; + + if(previousTouchEndTime) { + var diff = getTimeStamp() - previousTouchEndTime + if( diff<=options.fingerReleaseThreshold ) { + withinThreshold = true; + } + } + + return withinThreshold; + } + + + /** + * gets a data flag to indicate that a touch is in progress + * @return Boolean + * @inner + */ + function getTouchInProgress() { + //strict equality to ensure only true and false are returned + return !!($element.data(PLUGIN_NS+'_intouch') === true); + } + + /** + * Sets a data flag to indicate that a touch is in progress + * @param {boolean} val The value to set the property to + * @inner + */ + function setTouchInProgress(val) { + + //Add or remove event listeners depending on touch status + if(val===true) { + $element.bind(MOVE_EV, touchMove); + $element.bind(END_EV, touchEnd); + + //we only have leave events on desktop, we manually calcuate leave on touch as its not supported in webkit + if(LEAVE_EV) { + $element.bind(LEAVE_EV, touchLeave); + } + } else { + + $element.unbind(MOVE_EV, touchMove, false); + $element.unbind(END_EV, touchEnd, false); + + //we only have leave events on desktop, we manually calcuate leave on touch as its not supported in webkit + if(LEAVE_EV) { + $element.unbind(LEAVE_EV, touchLeave, false); + } + } + + + //strict equality to ensure only true and false can update the value + $element.data(PLUGIN_NS+'_intouch', val === true); + } + + + /** + * Creates the finger data for the touch/finger in the event object. + * @param {int} id The id to store the finger data under (usually the order the fingers were pressed) + * @param {object} evt The event object containing finger data + * @return finger data object + * @inner + */ + function createFingerData(id, evt) { + var f = { + start:{ x: 0, y: 0 }, + end:{ x: 0, y: 0 } + }; + f.start.x = f.end.x = evt.pageX||evt.clientX; + f.start.y = f.end.y = evt.pageY||evt.clientY; + fingerData[id] = f; + return f; + } + + /** + * Updates the finger data for a particular event object + * @param {object} evt The event object containing the touch/finger data to upadte + * @return a finger data object. + * @inner + */ + function updateFingerData(evt) { + var id = evt.identifier!==undefined ? evt.identifier : 0; + var f = getFingerData( id ); + + if (f === null) { + f = createFingerData(id, evt); + } + + f.end.x = evt.pageX||evt.clientX; + f.end.y = evt.pageY||evt.clientY; + + return f; + } + + /** + * Returns a finger data object by its event ID. + * Each touch event has an identifier property, which is used + * to track repeat touches + * @param {int} id The unique id of the finger in the sequence of touch events. + * @return a finger data object. + * @inner + */ + function getFingerData(id) { + return fingerData[id] || null; + } + + + /** + * Sets the maximum distance swiped in the given direction. + * If the new value is lower than the current value, the max value is not changed. + * @param {string} direction The direction of the swipe + * @param {int} distance The distance of the swipe + * @inner + */ + function setMaxDistance(direction, distance) { + distance = Math.max(distance, getMaxDistance(direction) ); + maximumsMap[direction].distance = distance; + } + + /** + * gets the maximum distance swiped in the given direction. + * @param {string} direction The direction of the swipe + * @return int The distance of the swipe + * @inner + */ + function getMaxDistance(direction) { + if (maximumsMap[direction]) return maximumsMap[direction].distance; + return undefined; + } + + /** + * Creats a map of directions to maximum swiped values. + * @return Object A dictionary of maximum values, indexed by direction. + * @inner + */ + function createMaximumsData() { + var maxData={}; + maxData[LEFT]=createMaximumVO(LEFT); + maxData[RIGHT]=createMaximumVO(RIGHT); + maxData[UP]=createMaximumVO(UP); + maxData[DOWN]=createMaximumVO(DOWN); + + return maxData; + } + + /** + * Creates a map maximum swiped values for a given swipe direction + * @param {string} The direction that these values will be associated with + * @return Object Maximum values + * @inner + */ + function createMaximumVO(dir) { + return { + direction:dir, + distance:0 + } + } + + + // + // MATHS / UTILS + // + + /** + * Calculate the duration of the swipe + * @return int + * @inner + */ + function calculateDuration() { + return endTime - startTime; + } + + /** + * Calculate the distance between 2 touches (pinch) + * @param {point} startPoint A point object containing x and y co-ordinates + * @param {point} endPoint A point object containing x and y co-ordinates + * @return int; + * @inner + */ + function calculateTouchesDistance(startPoint, endPoint) { + var diffX = Math.abs(startPoint.x - endPoint.x); + var diffY = Math.abs(startPoint.y - endPoint.y); + + return Math.round(Math.sqrt(diffX*diffX+diffY*diffY)); + } + + /** + * Calculate the zoom factor between the start and end distances + * @param {int} startDistance Distance (between 2 fingers) the user started pinching at + * @param {int} endDistance Distance (between 2 fingers) the user ended pinching at + * @return float The zoom value from 0 to 1. + * @inner + */ + function calculatePinchZoom(startDistance, endDistance) { + var percent = (endDistance/startDistance) * 1; + return percent.toFixed(2); + } + + + /** + * Returns the pinch direction, either IN or OUT for the given points + * @return string Either {@link $.fn.swipe.directions.IN} or {@link $.fn.swipe.directions.OUT} + * @see $.fn.swipe.directions + * @inner + */ + function calculatePinchDirection() { + if(pinchZoom<1) { + return OUT; + } + else { + return IN; + } + } + + + /** + * Calculate the length / distance of the swipe + * @param {point} startPoint A point object containing x and y co-ordinates + * @param {point} endPoint A point object containing x and y co-ordinates + * @return int + * @inner + */ + function calculateDistance(startPoint, endPoint) { + return Math.round(Math.sqrt(Math.pow(endPoint.x - startPoint.x, 2) + Math.pow(endPoint.y - startPoint.y, 2))); + } + + /** + * Calculate the angle of the swipe + * @param {point} startPoint A point object containing x and y co-ordinates + * @param {point} endPoint A point object containing x and y co-ordinates + * @return int + * @inner + */ + function calculateAngle(startPoint, endPoint) { + var x = startPoint.x - endPoint.x; + var y = endPoint.y - startPoint.y; + var r = Math.atan2(y, x); //radians + var angle = Math.round(r * 180 / Math.PI); //degrees + + //ensure value is positive + if (angle < 0) { + angle = 360 - Math.abs(angle); + } + + return angle; + } + + /** + * Calculate the direction of the swipe + * This will also call calculateAngle to get the latest angle of swipe + * @param {point} startPoint A point object containing x and y co-ordinates + * @param {point} endPoint A point object containing x and y co-ordinates + * @return string Either {@link $.fn.swipe.directions.LEFT} / {@link $.fn.swipe.directions.RIGHT} / {@link $.fn.swipe.directions.DOWN} / {@link $.fn.swipe.directions.UP} + * @see $.fn.swipe.directions + * @inner + */ + function calculateDirection(startPoint, endPoint ) { + var angle = calculateAngle(startPoint, endPoint); + + if ((angle <= 45) && (angle >= 0)) { + return LEFT; + } else if ((angle <= 360) && (angle >= 315)) { + return LEFT; + } else if ((angle >= 135) && (angle <= 225)) { + return RIGHT; + } else if ((angle > 45) && (angle < 135)) { + return DOWN; + } else { + return UP; + } + } + + + /** + * Returns a MS time stamp of the current time + * @return int + * @inner + */ + function getTimeStamp() { + var now = new Date(); + return now.getTime(); + } + + + + /** + * Returns a bounds object with left, right, top and bottom properties for the element specified. + * @param {DomNode} The DOM node to get the bounds for. + */ + function getbounds( el ) { + el = $(el); + var offset = el.offset(); + + var bounds = { + left:offset.left, + right:offset.left+el.outerWidth(), + top:offset.top, + bottom:offset.top+el.outerHeight() + } + + return bounds; + } + + + /** + * Checks if the point object is in the bounds object. + * @param {object} point A point object. + * @param {int} point.x The x value of the point. + * @param {int} point.y The x value of the point. + * @param {object} bounds The bounds object to test + * @param {int} bounds.left The leftmost value + * @param {int} bounds.right The righttmost value + * @param {int} bounds.top The topmost value + * @param {int} bounds.bottom The bottommost value + */ + function isInBounds(point, bounds) { + return (point.x > bounds.left && point.x < bounds.right && point.y > bounds.top && point.y < bounds.bottom); + }; + + + } + + + + +/** + * A catch all handler that is triggered for all swipe directions. + * @name $.fn.swipe#swipe + * @event + * @default null + * @param {EventObject} event The original event object + * @param {int} direction The direction the user swiped in. See {@link $.fn.swipe.directions} + * @param {int} distance The distance the user swiped + * @param {int} duration The duration of the swipe in milliseconds + * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers} + * @param {object} fingerData The coordinates of fingers in event + */ + + + + +/** + * A handler that is triggered for "left" swipes. + * @name $.fn.swipe#swipeLeft + * @event + * @default null + * @param {EventObject} event The original event object + * @param {int} direction The direction the user swiped in. See {@link $.fn.swipe.directions} + * @param {int} distance The distance the user swiped + * @param {int} duration The duration of the swipe in milliseconds + * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers} + * @param {object} fingerData The coordinates of fingers in event + */ + +/** + * A handler that is triggered for "right" swipes. + * @name $.fn.swipe#swipeRight + * @event + * @default null + * @param {EventObject} event The original event object + * @param {int} direction The direction the user swiped in. See {@link $.fn.swipe.directions} + * @param {int} distance The distance the user swiped + * @param {int} duration The duration of the swipe in milliseconds + * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers} + * @param {object} fingerData The coordinates of fingers in event + */ + +/** + * A handler that is triggered for "up" swipes. + * @name $.fn.swipe#swipeUp + * @event + * @default null + * @param {EventObject} event The original event object + * @param {int} direction The direction the user swiped in. See {@link $.fn.swipe.directions} + * @param {int} distance The distance the user swiped + * @param {int} duration The duration of the swipe in milliseconds + * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers} + * @param {object} fingerData The coordinates of fingers in event + */ + +/** + * A handler that is triggered for "down" swipes. + * @name $.fn.swipe#swipeDown + * @event + * @default null + * @param {EventObject} event The original event object + * @param {int} direction The direction the user swiped in. See {@link $.fn.swipe.directions} + * @param {int} distance The distance the user swiped + * @param {int} duration The duration of the swipe in milliseconds + * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers} + * @param {object} fingerData The coordinates of fingers in event + */ + +/** + * A handler triggered for every phase of the swipe. This handler is constantly fired for the duration of the pinch. + * This is triggered regardless of swipe thresholds. + * @name $.fn.swipe#swipeStatus + * @event + * @default null + * @param {EventObject} event The original event object + * @param {string} phase The phase of the swipe event. See {@link $.fn.swipe.phases} + * @param {string} direction The direction the user swiped in. This is null if the user has yet to move. See {@link $.fn.swipe.directions} + * @param {int} distance The distance the user swiped. This is 0 if the user has yet to move. + * @param {int} duration The duration of the swipe in milliseconds + * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers} + * @param {object} fingerData The coordinates of fingers in event + */ + +/** + * A handler triggered for pinch in events. + * @name $.fn.swipe#pinchIn + * @event + * @default null + * @param {EventObject} event The original event object + * @param {int} direction The direction the user pinched in. See {@link $.fn.swipe.directions} + * @param {int} distance The distance the user pinched + * @param {int} duration The duration of the swipe in milliseconds + * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers} + * @param {int} zoom The zoom/scale level the user pinched too, 0-1. + * @param {object} fingerData The coordinates of fingers in event + */ + +/** + * A handler triggered for pinch out events. + * @name $.fn.swipe#pinchOut + * @event + * @default null + * @param {EventObject} event The original event object + * @param {int} direction The direction the user pinched in. See {@link $.fn.swipe.directions} + * @param {int} distance The distance the user pinched + * @param {int} duration The duration of the swipe in milliseconds + * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers} + * @param {int} zoom The zoom/scale level the user pinched too, 0-1. + * @param {object} fingerData The coordinates of fingers in event + */ + +/** + * A handler triggered for all pinch events. This handler is constantly fired for the duration of the pinch. This is triggered regardless of thresholds. + * @name $.fn.swipe#pinchStatus + * @event + * @default null + * @param {EventObject} event The original event object + * @param {int} direction The direction the user pinched in. See {@link $.fn.swipe.directions} + * @param {int} distance The distance the user pinched + * @param {int} duration The duration of the swipe in milliseconds + * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers} + * @param {int} zoom The zoom/scale level the user pinched too, 0-1. + * @param {object} fingerData The coordinates of fingers in event + */ + +/** + * A click handler triggered when a user simply clicks, rather than swipes on an element. + * This is deprecated since version 1.6.2, any assignment to click will be assigned to the tap handler. + * You cannot use on to bind to this event as the default jQ click event will be triggered. + * Use the tap event instead. + * @name $.fn.swipe#click + * @event + * @deprecated since version 1.6.2, please use {@link $.fn.swipe#tap} instead + * @default null + * @param {EventObject} event The original event object + * @param {DomObject} target The element clicked on. + */ + + /** + * A click / tap handler triggered when a user simply clicks or taps, rather than swipes on an element. + * @name $.fn.swipe#tap + * @event + * @default null + * @param {EventObject} event The original event object + * @param {DomObject} target The element clicked on. + */ + +/** + * A double tap handler triggered when a user double clicks or taps on an element. + * You can set the time delay for a double tap with the {@link $.fn.swipe.defaults#doubleTapThreshold} property. + * Note: If you set both doubleTap and tap handlers, the tap event will be delayed by the doubleTapThreshold + * as the script needs to check if its a double tap. + * @name $.fn.swipe#doubleTap + * @see $.fn.swipe.defaults#doubleTapThreshold + * @event + * @default null + * @param {EventObject} event The original event object + * @param {DomObject} target The element clicked on. + */ + + /** + * A long tap handler triggered once a tap has been release if the tap was longer than the longTapThreshold. + * You can set the time delay for a long tap with the {@link $.fn.swipe.defaults#longTapThreshold} property. + * @name $.fn.swipe#longTap + * @see $.fn.swipe.defaults#longTapThreshold + * @event + * @default null + * @param {EventObject} event The original event object + * @param {DomObject} target The element clicked on. + */ + + /** + * A hold tap handler triggered as soon as the longTapThreshold is reached + * You can set the time delay for a long tap with the {@link $.fn.swipe.defaults#longTapThreshold} property. + * @name $.fn.swipe#hold + * @see $.fn.swipe.defaults#longTapThreshold + * @event + * @default null + * @param {EventObject} event The original event object + * @param {DomObject} target The element clicked on. + */ + +})); + + +// THEMEPUNCH INTERNAL HANDLINGS +if(typeof(console) === 'undefined') { + var console = {}; + console.log = console.error = console.info = console.debug = console.warn = console.trace = console.dir = console.dirxml = console.group = console.groupEnd = console.time = console.timeEnd = console.assert = console.profile = console.groupCollapsed = function() {}; +} + +// THEMEPUNCH LOGS +if (window.tplogs==true) + try { + console.groupCollapsed("ThemePunch GreenSocks Logs"); + } catch(e) { } + +// SANDBOX GREENSOCK +var oldgs = window.GreenSockGlobals, + oldgs_queue = window._gsQueue; + +var punchgs = window.GreenSockGlobals = {}; + +if (window.tplogs==true) + try { + console.info("Build GreenSock SandBox for ThemePunch Plugins"); + console.info("GreenSock TweenLite Engine Initalised by ThemePunch Plugin"); + } catch(e) {} + +/*! + * VERSION: 1.15.5 + * DATE: 2016-07-08 + * UPDATES AND DOCS AT: http://greensock.com + * + * @license Copyright (c) 2008-2016, GreenSock. All rights reserved. + * This work is subject to the terms at http://greensock.com/standard-license or for + * Club GreenSock members, the software agreement that was issued with your membership. + * + * @author: Jack Doyle, jack@greensock.com + **/ +var _gsScope = (typeof(module) !== "undefined" && module.exports && typeof(global) !== "undefined") ? global : this || window; //helps ensure compatibility with AMD/RequireJS and CommonJS/Node +(_gsScope._gsQueue || (_gsScope._gsQueue = [])).push( function() { + + "use strict"; + + _gsScope._gsDefine("easing.Back", ["easing.Ease"], function(Ease) { + + var w = (_gsScope.GreenSockGlobals || _gsScope), + gs = w.com.greensock, + _2PI = Math.PI * 2, + _HALF_PI = Math.PI / 2, + _class = gs._class, + _create = function(n, f) { + var C = _class("easing." + n, function(){}, true), + p = C.prototype = new Ease(); + p.constructor = C; + p.getRatio = f; + return C; + }, + _easeReg = Ease.register || function(){}, //put an empty function in place just as a safety measure in case someone loads an OLD version of TweenLite.js where Ease.register doesn't exist. + _wrap = function(name, EaseOut, EaseIn, EaseInOut, aliases) { + var C = _class("easing."+name, { + easeOut:new EaseOut(), + easeIn:new EaseIn(), + easeInOut:new EaseInOut() + }, true); + _easeReg(C, name); + return C; + }, + EasePoint = function(time, value, next) { + this.t = time; + this.v = value; + if (next) { + this.next = next; + next.prev = this; + this.c = next.v - value; + this.gap = next.t - time; + } + }, + + //Back + _createBack = function(n, f) { + var C = _class("easing." + n, function(overshoot) { + this._p1 = (overshoot || overshoot === 0) ? overshoot : 1.70158; + this._p2 = this._p1 * 1.525; + }, true), + p = C.prototype = new Ease(); + p.constructor = C; + p.getRatio = f; + p.config = function(overshoot) { + return new C(overshoot); + }; + return C; + }, + + Back = _wrap("Back", + _createBack("BackOut", function(p) { + return ((p = p - 1) * p * ((this._p1 + 1) * p + this._p1) + 1); + }), + _createBack("BackIn", function(p) { + return p * p * ((this._p1 + 1) * p - this._p1); + }), + _createBack("BackInOut", function(p) { + return ((p *= 2) < 1) ? 0.5 * p * p * ((this._p2 + 1) * p - this._p2) : 0.5 * ((p -= 2) * p * ((this._p2 + 1) * p + this._p2) + 2); + }) + ), + + + //SlowMo + SlowMo = _class("easing.SlowMo", function(linearRatio, power, yoyoMode) { + power = (power || power === 0) ? power : 0.7; + if (linearRatio == null) { + linearRatio = 0.7; + } else if (linearRatio > 1) { + linearRatio = 1; + } + this._p = (linearRatio !== 1) ? power : 0; + this._p1 = (1 - linearRatio) / 2; + this._p2 = linearRatio; + this._p3 = this._p1 + this._p2; + this._calcEnd = (yoyoMode === true); + }, true), + p = SlowMo.prototype = new Ease(), + SteppedEase, RoughEase, _createElastic; + + p.constructor = SlowMo; + p.getRatio = function(p) { + var r = p + (0.5 - p) * this._p; + if (p < this._p1) { + return this._calcEnd ? 1 - ((p = 1 - (p / this._p1)) * p) : r - ((p = 1 - (p / this._p1)) * p * p * p * r); + } else if (p > this._p3) { + return this._calcEnd ? 1 - (p = (p - this._p3) / this._p1) * p : r + ((p - r) * (p = (p - this._p3) / this._p1) * p * p * p); + } + return this._calcEnd ? 1 : r; + }; + SlowMo.ease = new SlowMo(0.7, 0.7); + + p.config = SlowMo.config = function(linearRatio, power, yoyoMode) { + return new SlowMo(linearRatio, power, yoyoMode); + }; + + + //SteppedEase + SteppedEase = _class("easing.SteppedEase", function(steps) { + steps = steps || 1; + this._p1 = 1 / steps; + this._p2 = steps + 1; + }, true); + p = SteppedEase.prototype = new Ease(); + p.constructor = SteppedEase; + p.getRatio = function(p) { + if (p < 0) { + p = 0; + } else if (p >= 1) { + p = 0.999999999; + } + return ((this._p2 * p) >> 0) * this._p1; + }; + p.config = SteppedEase.config = function(steps) { + return new SteppedEase(steps); + }; + + + //RoughEase + RoughEase = _class("easing.RoughEase", function(vars) { + vars = vars || {}; + var taper = vars.taper || "none", + a = [], + cnt = 0, + points = (vars.points || 20) | 0, + i = points, + randomize = (vars.randomize !== false), + clamp = (vars.clamp === true), + template = (vars.template instanceof Ease) ? vars.template : null, + strength = (typeof(vars.strength) === "number") ? vars.strength * 0.4 : 0.4, + x, y, bump, invX, obj, pnt; + while (--i > -1) { + x = randomize ? Math.random() : (1 / points) * i; + y = template ? template.getRatio(x) : x; + if (taper === "none") { + bump = strength; + } else if (taper === "out") { + invX = 1 - x; + bump = invX * invX * strength; + } else if (taper === "in") { + bump = x * x * strength; + } else if (x < 0.5) { //"both" (start) + invX = x * 2; + bump = invX * invX * 0.5 * strength; + } else { //"both" (end) + invX = (1 - x) * 2; + bump = invX * invX * 0.5 * strength; + } + if (randomize) { + y += (Math.random() * bump) - (bump * 0.5); + } else if (i % 2) { + y += bump * 0.5; + } else { + y -= bump * 0.5; + } + if (clamp) { + if (y > 1) { + y = 1; + } else if (y < 0) { + y = 0; + } + } + a[cnt++] = {x:x, y:y}; + } + a.sort(function(a, b) { + return a.x - b.x; + }); + + pnt = new EasePoint(1, 1, null); + i = points; + while (--i > -1) { + obj = a[i]; + pnt = new EasePoint(obj.x, obj.y, pnt); + } + + this._prev = new EasePoint(0, 0, (pnt.t !== 0) ? pnt : pnt.next); + }, true); + p = RoughEase.prototype = new Ease(); + p.constructor = RoughEase; + p.getRatio = function(p) { + var pnt = this._prev; + if (p > pnt.t) { + while (pnt.next && p >= pnt.t) { + pnt = pnt.next; + } + pnt = pnt.prev; + } else { + while (pnt.prev && p <= pnt.t) { + pnt = pnt.prev; + } + } + this._prev = pnt; + return (pnt.v + ((p - pnt.t) / pnt.gap) * pnt.c); + }; + p.config = function(vars) { + return new RoughEase(vars); + }; + RoughEase.ease = new RoughEase(); + + + //Bounce + _wrap("Bounce", + _create("BounceOut", function(p) { + if (p < 1 / 2.75) { + return 7.5625 * p * p; + } else if (p < 2 / 2.75) { + return 7.5625 * (p -= 1.5 / 2.75) * p + 0.75; + } else if (p < 2.5 / 2.75) { + return 7.5625 * (p -= 2.25 / 2.75) * p + 0.9375; + } + return 7.5625 * (p -= 2.625 / 2.75) * p + 0.984375; + }), + _create("BounceIn", function(p) { + if ((p = 1 - p) < 1 / 2.75) { + return 1 - (7.5625 * p * p); + } else if (p < 2 / 2.75) { + return 1 - (7.5625 * (p -= 1.5 / 2.75) * p + 0.75); + } else if (p < 2.5 / 2.75) { + return 1 - (7.5625 * (p -= 2.25 / 2.75) * p + 0.9375); + } + return 1 - (7.5625 * (p -= 2.625 / 2.75) * p + 0.984375); + }), + _create("BounceInOut", function(p) { + var invert = (p < 0.5); + if (invert) { + p = 1 - (p * 2); + } else { + p = (p * 2) - 1; + } + if (p < 1 / 2.75) { + p = 7.5625 * p * p; + } else if (p < 2 / 2.75) { + p = 7.5625 * (p -= 1.5 / 2.75) * p + 0.75; + } else if (p < 2.5 / 2.75) { + p = 7.5625 * (p -= 2.25 / 2.75) * p + 0.9375; + } else { + p = 7.5625 * (p -= 2.625 / 2.75) * p + 0.984375; + } + return invert ? (1 - p) * 0.5 : p * 0.5 + 0.5; + }) + ); + + + //CIRC + _wrap("Circ", + _create("CircOut", function(p) { + return Math.sqrt(1 - (p = p - 1) * p); + }), + _create("CircIn", function(p) { + return -(Math.sqrt(1 - (p * p)) - 1); + }), + _create("CircInOut", function(p) { + return ((p*=2) < 1) ? -0.5 * (Math.sqrt(1 - p * p) - 1) : 0.5 * (Math.sqrt(1 - (p -= 2) * p) + 1); + }) + ); + + + //Elastic + _createElastic = function(n, f, def) { + var C = _class("easing." + n, function(amplitude, period) { + this._p1 = (amplitude >= 1) ? amplitude : 1; //note: if amplitude is < 1, we simply adjust the period for a more natural feel. Otherwise the math doesn't work right and the curve starts at 1. + this._p2 = (period || def) / (amplitude < 1 ? amplitude : 1); + this._p3 = this._p2 / _2PI * (Math.asin(1 / this._p1) || 0); + this._p2 = _2PI / this._p2; //precalculate to optimize + }, true), + p = C.prototype = new Ease(); + p.constructor = C; + p.getRatio = f; + p.config = function(amplitude, period) { + return new C(amplitude, period); + }; + return C; + }; + _wrap("Elastic", + _createElastic("ElasticOut", function(p) { + return this._p1 * Math.pow(2, -10 * p) * Math.sin( (p - this._p3) * this._p2 ) + 1; + }, 0.3), + _createElastic("ElasticIn", function(p) { + return -(this._p1 * Math.pow(2, 10 * (p -= 1)) * Math.sin( (p - this._p3) * this._p2 )); + }, 0.3), + _createElastic("ElasticInOut", function(p) { + return ((p *= 2) < 1) ? -0.5 * (this._p1 * Math.pow(2, 10 * (p -= 1)) * Math.sin( (p - this._p3) * this._p2)) : this._p1 * Math.pow(2, -10 *(p -= 1)) * Math.sin( (p - this._p3) * this._p2 ) * 0.5 + 1; + }, 0.45) + ); + + + //Expo + _wrap("Expo", + _create("ExpoOut", function(p) { + return 1 - Math.pow(2, -10 * p); + }), + _create("ExpoIn", function(p) { + return Math.pow(2, 10 * (p - 1)) - 0.001; + }), + _create("ExpoInOut", function(p) { + return ((p *= 2) < 1) ? 0.5 * Math.pow(2, 10 * (p - 1)) : 0.5 * (2 - Math.pow(2, -10 * (p - 1))); + }) + ); + + + //Sine + _wrap("Sine", + _create("SineOut", function(p) { + return Math.sin(p * _HALF_PI); + }), + _create("SineIn", function(p) { + return -Math.cos(p * _HALF_PI) + 1; + }), + _create("SineInOut", function(p) { + return -0.5 * (Math.cos(Math.PI * p) - 1); + }) + ); + + _class("easing.EaseLookup", { + find:function(s) { + return Ease.map[s]; + } + }, true); + + //register the non-standard eases + _easeReg(w.SlowMo, "SlowMo", "ease,"); + _easeReg(RoughEase, "RoughEase", "ease,"); + _easeReg(SteppedEase, "SteppedEase", "ease,"); + + return Back; + + }, true); + +}); if (_gsScope._gsDefine) { _gsScope._gsQueue.pop()(); } + +//export to AMD/RequireJS and CommonJS/Node (precursor to full modular build system coming at a later date) +(function() { + "use strict"; + var getGlobal = function() { + return (_gsScope.GreenSockGlobals || _gsScope); + }; + if (typeof(define) === "function" && define.amd) { //AMD + define(["TweenLite"], getGlobal); + } else if (typeof(module) !== "undefined" && module.exports) { //node + require("../TweenLite.js"); + module.exports = getGlobal(); + } +}()); + + +/*! + * VERSION: 1.18.6 + * DATE: 2016-07-08 + * UPDATES AND DOCS AT: http://greensock.com + * + * @license Copyright (c) 2008-2016, GreenSock. All rights reserved. + * This work is subject to the terms at http://greensock.com/standard-license or for + * Club GreenSock members, the software agreement that was issued with your membership. + * + * @author: Jack Doyle, jack@greensock.com + */ +var _gsScope = (typeof(module) !== "undefined" && module.exports && typeof(global) !== "undefined") ? global : this || window; //helps ensure compatibility with AMD/RequireJS and CommonJS/Node +(_gsScope._gsQueue || (_gsScope._gsQueue = [])).push( function() { + + "use strict"; + + _gsScope._gsDefine("TimelineLite", ["core.Animation","core.SimpleTimeline","TweenLite"], function(Animation, SimpleTimeline, TweenLite) { + + var TimelineLite = function(vars) { + SimpleTimeline.call(this, vars); + this._labels = {}; + this.autoRemoveChildren = (this.vars.autoRemoveChildren === true); + this.smoothChildTiming = (this.vars.smoothChildTiming === true); + this._sortChildren = true; + this._onUpdate = this.vars.onUpdate; + var v = this.vars, + val, p; + for (p in v) { + val = v[p]; + if (_isArray(val)) if (val.join("").indexOf("{self}") !== -1) { + v[p] = this._swapSelfInParams(val); + } + } + if (_isArray(v.tweens)) { + this.add(v.tweens, 0, v.align, v.stagger); + } + }, + _tinyNum = 0.0000000001, + TweenLiteInternals = TweenLite._internals, + _internals = TimelineLite._internals = {}, + _isSelector = TweenLiteInternals.isSelector, + _isArray = TweenLiteInternals.isArray, + _lazyTweens = TweenLiteInternals.lazyTweens, + _lazyRender = TweenLiteInternals.lazyRender, + _globals = _gsScope._gsDefine.globals, + _copy = function(vars) { + var copy = {}, p; + for (p in vars) { + copy[p] = vars[p]; + } + return copy; + }, + _applyCycle = function(vars, targets, i) { + var alt = vars.cycle, + p, val; + for (p in alt) { + val = alt[p]; + vars[p] = (typeof(val) === "function") ? val(i, targets[i]) : val[i % val.length]; + } + delete vars.cycle; + }, + _pauseCallback = _internals.pauseCallback = function() {}, + _slice = function(a) { //don't use [].slice because that doesn't work in IE8 with a NodeList that's returned by querySelectorAll() + var b = [], + l = a.length, + i; + for (i = 0; i !== l; b.push(a[i++])); + return b; + }, + p = TimelineLite.prototype = new SimpleTimeline(); + + TimelineLite.version = "1.19.0"; + p.constructor = TimelineLite; + p.kill()._gc = p._forcingPlayhead = p._hasPause = false; + + /* might use later... + //translates a local time inside an animation to the corresponding time on the root/global timeline, factoring in all nesting and timeScales. + function localToGlobal(time, animation) { + while (animation) { + time = (time / animation._timeScale) + animation._startTime; + animation = animation.timeline; + } + return time; + } + + //translates the supplied time on the root/global timeline into the corresponding local time inside a particular animation, factoring in all nesting and timeScales + function globalToLocal(time, animation) { + var scale = 1; + time -= localToGlobal(0, animation); + while (animation) { + scale *= animation._timeScale; + animation = animation.timeline; + } + return time * scale; + } + */ + + p.to = function(target, duration, vars, position) { + var Engine = (vars.repeat && _globals.TweenMax) || TweenLite; + return duration ? this.add( new Engine(target, duration, vars), position) : this.set(target, vars, position); + }; + + p.from = function(target, duration, vars, position) { + return this.add( ((vars.repeat && _globals.TweenMax) || TweenLite).from(target, duration, vars), position); + }; + + p.fromTo = function(target, duration, fromVars, toVars, position) { + var Engine = (toVars.repeat && _globals.TweenMax) || TweenLite; + return duration ? this.add( Engine.fromTo(target, duration, fromVars, toVars), position) : this.set(target, toVars, position); + }; + + p.staggerTo = function(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams, onCompleteAllScope) { + var tl = new TimelineLite({onComplete:onCompleteAll, onCompleteParams:onCompleteAllParams, callbackScope:onCompleteAllScope, smoothChildTiming:this.smoothChildTiming}), + cycle = vars.cycle, + copy, i; + if (typeof(targets) === "string") { + targets = TweenLite.selector(targets) || targets; + } + targets = targets || []; + if (_isSelector(targets)) { //senses if the targets object is a selector. If it is, we should translate it into an array. + targets = _slice(targets); + } + stagger = stagger || 0; + if (stagger < 0) { + targets = _slice(targets); + targets.reverse(); + stagger *= -1; + } + for (i = 0; i < targets.length; i++) { + copy = _copy(vars); + if (copy.startAt) { + copy.startAt = _copy(copy.startAt); + if (copy.startAt.cycle) { + _applyCycle(copy.startAt, targets, i); + } + } + if (cycle) { + _applyCycle(copy, targets, i); + if (copy.duration != null) { + duration = copy.duration; + delete copy.duration; + } + } + tl.to(targets[i], duration, copy, i * stagger); + } + return this.add(tl, position); + }; + + p.staggerFrom = function(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams, onCompleteAllScope) { + vars.immediateRender = (vars.immediateRender != false); + vars.runBackwards = true; + return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams, onCompleteAllScope); + }; + + p.staggerFromTo = function(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams, onCompleteAllScope) { + toVars.startAt = fromVars; + toVars.immediateRender = (toVars.immediateRender != false && fromVars.immediateRender != false); + return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams, onCompleteAllScope); + }; + + p.call = function(callback, params, scope, position) { + return this.add( TweenLite.delayedCall(0, callback, params, scope), position); + }; + + p.set = function(target, vars, position) { + position = this._parseTimeOrLabel(position, 0, true); + if (vars.immediateRender == null) { + vars.immediateRender = (position === this._time && !this._paused); + } + return this.add( new TweenLite(target, 0, vars), position); + }; + + TimelineLite.exportRoot = function(vars, ignoreDelayedCalls) { + vars = vars || {}; + if (vars.smoothChildTiming == null) { + vars.smoothChildTiming = true; + } + var tl = new TimelineLite(vars), + root = tl._timeline, + tween, next; + if (ignoreDelayedCalls == null) { + ignoreDelayedCalls = true; + } + root._remove(tl, true); + tl._startTime = 0; + tl._rawPrevTime = tl._time = tl._totalTime = root._time; + tween = root._first; + while (tween) { + next = tween._next; + if (!ignoreDelayedCalls || !(tween instanceof TweenLite && tween.target === tween.vars.onComplete)) { + tl.add(tween, tween._startTime - tween._delay); + } + tween = next; + } + root.add(tl, 0); + return tl; + }; + + p.add = function(value, position, align, stagger) { + var curTime, l, i, child, tl, beforeRawTime; + if (typeof(position) !== "number") { + position = this._parseTimeOrLabel(position, 0, true, value); + } + if (!(value instanceof Animation)) { + if ((value instanceof Array) || (value && value.push && _isArray(value))) { + align = align || "normal"; + stagger = stagger || 0; + curTime = position; + l = value.length; + for (i = 0; i < l; i++) { + if (_isArray(child = value[i])) { + child = new TimelineLite({tweens:child}); + } + this.add(child, curTime); + if (typeof(child) !== "string" && typeof(child) !== "function") { + if (align === "sequence") { + curTime = child._startTime + (child.totalDuration() / child._timeScale); + } else if (align === "start") { + child._startTime -= child.delay(); + } + } + curTime += stagger; + } + return this._uncache(true); + } else if (typeof(value) === "string") { + return this.addLabel(value, position); + } else if (typeof(value) === "function") { + value = TweenLite.delayedCall(0, value); + } else { + throw("Cannot add " + value + " into the timeline; it is not a tween, timeline, function, or string."); + } + } + + SimpleTimeline.prototype.add.call(this, value, position); + + //if the timeline has already ended but the inserted tween/timeline extends the duration, we should enable this timeline again so that it renders properly. We should also align the playhead with the parent timeline's when appropriate. + if (this._gc || this._time === this._duration) if (!this._paused) if (this._duration < this.duration()) { + //in case any of the ancestors had completed but should now be enabled... + tl = this; + beforeRawTime = (tl.rawTime() > value._startTime); //if the tween is placed on the timeline so that it starts BEFORE the current rawTime, we should align the playhead (move the timeline). This is because sometimes users will create a timeline, let it finish, and much later append a tween and expect it to run instead of jumping to its end state. While technically one could argue that it should jump to its end state, that's not what users intuitively expect. + while (tl._timeline) { + if (beforeRawTime && tl._timeline.smoothChildTiming) { + tl.totalTime(tl._totalTime, true); //moves the timeline (shifts its startTime) if necessary, and also enables it. + } else if (tl._gc) { + tl._enabled(true, false); + } + tl = tl._timeline; + } + } + + return this; + }; + + p.remove = function(value) { + if (value instanceof Animation) { + this._remove(value, false); + var tl = value._timeline = value.vars.useFrames ? Animation._rootFramesTimeline : Animation._rootTimeline; //now that it's removed, default it to the root timeline so that if it gets played again, it doesn't jump back into this timeline. + value._startTime = (value._paused ? value._pauseTime : tl._time) - ((!value._reversed ? value._totalTime : value.totalDuration() - value._totalTime) / value._timeScale); //ensure that if it gets played again, the timing is correct. + return this; + } else if (value instanceof Array || (value && value.push && _isArray(value))) { + var i = value.length; + while (--i > -1) { + this.remove(value[i]); + } + return this; + } else if (typeof(value) === "string") { + return this.removeLabel(value); + } + return this.kill(null, value); + }; + + p._remove = function(tween, skipDisable) { + SimpleTimeline.prototype._remove.call(this, tween, skipDisable); + var last = this._last; + if (!last) { + this._time = this._totalTime = this._duration = this._totalDuration = 0; + } else if (this._time > last._startTime + last._totalDuration / last._timeScale) { + this._time = this.duration(); + this._totalTime = this._totalDuration; + } + return this; + }; + + p.append = function(value, offsetOrLabel) { + return this.add(value, this._parseTimeOrLabel(null, offsetOrLabel, true, value)); + }; + + p.insert = p.insertMultiple = function(value, position, align, stagger) { + return this.add(value, position || 0, align, stagger); + }; + + p.appendMultiple = function(tweens, offsetOrLabel, align, stagger) { + return this.add(tweens, this._parseTimeOrLabel(null, offsetOrLabel, true, tweens), align, stagger); + }; + + p.addLabel = function(label, position) { + this._labels[label] = this._parseTimeOrLabel(position); + return this; + }; + + p.addPause = function(position, callback, params, scope) { + var t = TweenLite.delayedCall(0, _pauseCallback, params, scope || this); + t.vars.onComplete = t.vars.onReverseComplete = callback; + t.data = "isPause"; + this._hasPause = true; + return this.add(t, position); + }; + + p.removeLabel = function(label) { + delete this._labels[label]; + return this; + }; + + p.getLabelTime = function(label) { + return (this._labels[label] != null) ? this._labels[label] : -1; + }; + + p._parseTimeOrLabel = function(timeOrLabel, offsetOrLabel, appendIfAbsent, ignore) { + var i; + //if we're about to add a tween/timeline (or an array of them) that's already a child of this timeline, we should remove it first so that it doesn't contaminate the duration(). + if (ignore instanceof Animation && ignore.timeline === this) { + this.remove(ignore); + } else if (ignore && ((ignore instanceof Array) || (ignore.push && _isArray(ignore)))) { + i = ignore.length; + while (--i > -1) { + if (ignore[i] instanceof Animation && ignore[i].timeline === this) { + this.remove(ignore[i]); + } + } + } + if (typeof(offsetOrLabel) === "string") { + return this._parseTimeOrLabel(offsetOrLabel, (appendIfAbsent && typeof(timeOrLabel) === "number" && this._labels[offsetOrLabel] == null) ? timeOrLabel - this.duration() : 0, appendIfAbsent); + } + offsetOrLabel = offsetOrLabel || 0; + if (typeof(timeOrLabel) === "string" && (isNaN(timeOrLabel) || this._labels[timeOrLabel] != null)) { //if the string is a number like "1", check to see if there's a label with that name, otherwise interpret it as a number (absolute value). + i = timeOrLabel.indexOf("="); + if (i === -1) { + if (this._labels[timeOrLabel] == null) { + return appendIfAbsent ? (this._labels[timeOrLabel] = this.duration() + offsetOrLabel) : offsetOrLabel; + } + return this._labels[timeOrLabel] + offsetOrLabel; + } + offsetOrLabel = parseInt(timeOrLabel.charAt(i-1) + "1", 10) * Number(timeOrLabel.substr(i+1)); + timeOrLabel = (i > 1) ? this._parseTimeOrLabel(timeOrLabel.substr(0, i-1), 0, appendIfAbsent) : this.duration(); + } else if (timeOrLabel == null) { + timeOrLabel = this.duration(); + } + return Number(timeOrLabel) + offsetOrLabel; + }; + + p.seek = function(position, suppressEvents) { + return this.totalTime((typeof(position) === "number") ? position : this._parseTimeOrLabel(position), (suppressEvents !== false)); + }; + + p.stop = function() { + return this.paused(true); + }; + + p.gotoAndPlay = function(position, suppressEvents) { + return this.play(position, suppressEvents); + }; + + p.gotoAndStop = function(position, suppressEvents) { + return this.pause(position, suppressEvents); + }; + + p.render = function(time, suppressEvents, force) { + if (this._gc) { + this._enabled(true, false); + } + var totalDur = (!this._dirty) ? this._totalDuration : this.totalDuration(), + prevTime = this._time, + prevStart = this._startTime, + prevTimeScale = this._timeScale, + prevPaused = this._paused, + tween, isComplete, next, callback, internalForce, pauseTween, curTime; + if (time >= totalDur - 0.0000001) { //to work around occasional floating point math artifacts. + this._totalTime = this._time = totalDur; + if (!this._reversed) if (!this._hasPausedChild()) { + isComplete = true; + callback = "onComplete"; + internalForce = !!this._timeline.autoRemoveChildren; //otherwise, if the animation is unpaused/activated after it's already finished, it doesn't get removed from the parent timeline. + if (this._duration === 0) if ((time <= 0 && time >= -0.0000001) || this._rawPrevTime < 0 || this._rawPrevTime === _tinyNum) if (this._rawPrevTime !== time && this._first) { + internalForce = true; + if (this._rawPrevTime > _tinyNum) { + callback = "onReverseComplete"; + } + } + } + this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient. + time = totalDur + 0.0001; //to avoid occasional floating point rounding errors - sometimes child tweens/timelines were not being fully completed (their progress might be 0.999999999999998 instead of 1 because when _time - tween._startTime is performed, floating point errors would return a value that was SLIGHTLY off). Try (999999999999.7 - 999999999999) * 1 = 0.699951171875 instead of 0.7. + + } else if (time < 0.0000001) { //to work around occasional floating point math artifacts, round super small values to 0. + this._totalTime = this._time = 0; + if (prevTime !== 0 || (this._duration === 0 && this._rawPrevTime !== _tinyNum && (this._rawPrevTime > 0 || (time < 0 && this._rawPrevTime >= 0)))) { + callback = "onReverseComplete"; + isComplete = this._reversed; + } + if (time < 0) { + this._active = false; + if (this._timeline.autoRemoveChildren && this._reversed) { //ensures proper GC if a timeline is resumed after it's finished reversing. + internalForce = isComplete = true; + callback = "onReverseComplete"; + } else if (this._rawPrevTime >= 0 && this._first) { //when going back beyond the start, force a render so that zero-duration tweens that sit at the very beginning render their start values properly. Otherwise, if the parent timeline's playhead lands exactly at this timeline's startTime, and then moves backwards, the zero-duration tweens at the beginning would still be at their end state. + internalForce = true; + } + this._rawPrevTime = time; + } else { + this._rawPrevTime = (this._duration || !suppressEvents || time || this._rawPrevTime === time) ? time : _tinyNum; //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline or tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect. We set the _rawPrevTime to be a precise tiny number to indicate this scenario rather than using another property/variable which would increase memory usage. This technique is less readable, but more efficient. + if (time === 0 && isComplete) { //if there's a zero-duration tween at the very beginning of a timeline and the playhead lands EXACTLY at time 0, that tween will correctly render its end values, but we need to keep the timeline alive for one more render so that the beginning values render properly as the parent's playhead keeps moving beyond the begining. Imagine obj.x starts at 0 and then we do tl.set(obj, {x:100}).to(obj, 1, {x:200}) and then later we tl.reverse()...the goal is to have obj.x revert to 0. If the playhead happens to land on exactly 0, without this chunk of code, it'd complete the timeline and remove it from the rendering queue (not good). + tween = this._first; + while (tween && tween._startTime === 0) { + if (!tween._duration) { + isComplete = false; + } + tween = tween._next; + } + } + time = 0; //to avoid occasional floating point rounding errors (could cause problems especially with zero-duration tweens at the very beginning of the timeline) + if (!this._initted) { + internalForce = true; + } + } + + } else { + + if (this._hasPause && !this._forcingPlayhead && !suppressEvents) { + if (time >= prevTime) { + tween = this._first; + while (tween && tween._startTime <= time && !pauseTween) { + if (!tween._duration) if (tween.data === "isPause" && !tween.ratio && !(tween._startTime === 0 && this._rawPrevTime === 0)) { + pauseTween = tween; + } + tween = tween._next; + } + } else { + tween = this._last; + while (tween && tween._startTime >= time && !pauseTween) { + if (!tween._duration) if (tween.data === "isPause" && tween._rawPrevTime > 0) { + pauseTween = tween; + } + tween = tween._prev; + } + } + if (pauseTween) { + this._time = time = pauseTween._startTime; + this._totalTime = time + (this._cycle * (this._totalDuration + this._repeatDelay)); + } + } + + this._totalTime = this._time = this._rawPrevTime = time; + } + if ((this._time === prevTime || !this._first) && !force && !internalForce && !pauseTween) { + return; + } else if (!this._initted) { + this._initted = true; + } + + if (!this._active) if (!this._paused && this._time !== prevTime && time > 0) { + this._active = true; //so that if the user renders the timeline (as opposed to the parent timeline rendering it), it is forced to re-render and align it with the proper time/frame on the next rendering cycle. Maybe the timeline already finished but the user manually re-renders it as halfway done, for example. + } + + if (prevTime === 0) if (this.vars.onStart) if (this._time !== 0 || !this._duration) if (!suppressEvents) { + this._callback("onStart"); + } + + curTime = this._time; + if (curTime >= prevTime) { + tween = this._first; + while (tween) { + next = tween._next; //record it here because the value could change after rendering... + if (curTime !== this._time || (this._paused && !prevPaused)) { //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete + break; + } else if (tween._active || (tween._startTime <= curTime && !tween._paused && !tween._gc)) { + if (pauseTween === tween) { + this.pause(); + } + if (!tween._reversed) { + tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, force); + } else { + tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, force); + } + } + tween = next; + } + } else { + tween = this._last; + while (tween) { + next = tween._prev; //record it here because the value could change after rendering... + if (curTime !== this._time || (this._paused && !prevPaused)) { //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete + break; + } else if (tween._active || (tween._startTime <= prevTime && !tween._paused && !tween._gc)) { + if (pauseTween === tween) { + pauseTween = tween._prev; //the linked list is organized by _startTime, thus it's possible that a tween could start BEFORE the pause and end after it, in which case it would be positioned before the pause tween in the linked list, but we should render it before we pause() the timeline and cease rendering. This is only a concern when going in reverse. + while (pauseTween && pauseTween.endTime() > this._time) { + pauseTween.render( (pauseTween._reversed ? pauseTween.totalDuration() - ((time - pauseTween._startTime) * pauseTween._timeScale) : (time - pauseTween._startTime) * pauseTween._timeScale), suppressEvents, force); + pauseTween = pauseTween._prev; + } + pauseTween = null; + this.pause(); + } + if (!tween._reversed) { + tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, force); + } else { + tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, force); + } + } + tween = next; + } + } + + if (this._onUpdate) if (!suppressEvents) { + if (_lazyTweens.length) { //in case rendering caused any tweens to lazy-init, we should render them because typically when a timeline finishes, users expect things to have rendered fully. Imagine an onUpdate on a timeline that reports/checks tweened values. + _lazyRender(); + } + this._callback("onUpdate"); + } + + if (callback) if (!this._gc) if (prevStart === this._startTime || prevTimeScale !== this._timeScale) if (this._time === 0 || totalDur >= this.totalDuration()) { //if one of the tweens that was rendered altered this timeline's startTime (like if an onComplete reversed the timeline), it probably isn't complete. If it is, don't worry, because whatever call altered the startTime would complete if it was necessary at the new time. The only exception is the timeScale property. Also check _gc because there's a chance that kill() could be called in an onUpdate + if (isComplete) { + if (_lazyTweens.length) { //in case rendering caused any tweens to lazy-init, we should render them because typically when a timeline finishes, users expect things to have rendered fully. Imagine an onComplete on a timeline that reports/checks tweened values. + _lazyRender(); + } + if (this._timeline.autoRemoveChildren) { + this._enabled(false, false); + } + this._active = false; + } + if (!suppressEvents && this.vars[callback]) { + this._callback(callback); + } + } + }; + + p._hasPausedChild = function() { + var tween = this._first; + while (tween) { + if (tween._paused || ((tween instanceof TimelineLite) && tween._hasPausedChild())) { + return true; + } + tween = tween._next; + } + return false; + }; + + p.getChildren = function(nested, tweens, timelines, ignoreBeforeTime) { + ignoreBeforeTime = ignoreBeforeTime || -9999999999; + var a = [], + tween = this._first, + cnt = 0; + while (tween) { + if (tween._startTime < ignoreBeforeTime) { + //do nothing + } else if (tween instanceof TweenLite) { + if (tweens !== false) { + a[cnt++] = tween; + } + } else { + if (timelines !== false) { + a[cnt++] = tween; + } + if (nested !== false) { + a = a.concat(tween.getChildren(true, tweens, timelines)); + cnt = a.length; + } + } + tween = tween._next; + } + return a; + }; + + p.getTweensOf = function(target, nested) { + var disabled = this._gc, + a = [], + cnt = 0, + tweens, i; + if (disabled) { + this._enabled(true, true); //getTweensOf() filters out disabled tweens, and we have to mark them as _gc = true when the timeline completes in order to allow clean garbage collection, so temporarily re-enable the timeline here. + } + tweens = TweenLite.getTweensOf(target); + i = tweens.length; + while (--i > -1) { + if (tweens[i].timeline === this || (nested && this._contains(tweens[i]))) { + a[cnt++] = tweens[i]; + } + } + if (disabled) { + this._enabled(false, true); + } + return a; + }; + + p.recent = function() { + return this._recent; + }; + + p._contains = function(tween) { + var tl = tween.timeline; + while (tl) { + if (tl === this) { + return true; + } + tl = tl.timeline; + } + return false; + }; + + p.shiftChildren = function(amount, adjustLabels, ignoreBeforeTime) { + ignoreBeforeTime = ignoreBeforeTime || 0; + var tween = this._first, + labels = this._labels, + p; + while (tween) { + if (tween._startTime >= ignoreBeforeTime) { + tween._startTime += amount; + } + tween = tween._next; + } + if (adjustLabels) { + for (p in labels) { + if (labels[p] >= ignoreBeforeTime) { + labels[p] += amount; + } + } + } + return this._uncache(true); + }; + + p._kill = function(vars, target) { + if (!vars && !target) { + return this._enabled(false, false); + } + var tweens = (!target) ? this.getChildren(true, true, false) : this.getTweensOf(target), + i = tweens.length, + changed = false; + while (--i > -1) { + if (tweens[i]._kill(vars, target)) { + changed = true; + } + } + return changed; + }; + + p.clear = function(labels) { + var tweens = this.getChildren(false, true, true), + i = tweens.length; + this._time = this._totalTime = 0; + while (--i > -1) { + tweens[i]._enabled(false, false); + } + if (labels !== false) { + this._labels = {}; + } + return this._uncache(true); + }; + + p.invalidate = function() { + var tween = this._first; + while (tween) { + tween.invalidate(); + tween = tween._next; + } + return Animation.prototype.invalidate.call(this);; + }; + + p._enabled = function(enabled, ignoreTimeline) { + if (enabled === this._gc) { + var tween = this._first; + while (tween) { + tween._enabled(enabled, true); + tween = tween._next; + } + } + return SimpleTimeline.prototype._enabled.call(this, enabled, ignoreTimeline); + }; + + p.totalTime = function(time, suppressEvents, uncapped) { + this._forcingPlayhead = true; + var val = Animation.prototype.totalTime.apply(this, arguments); + this._forcingPlayhead = false; + return val; + }; + + p.duration = function(value) { + if (!arguments.length) { + if (this._dirty) { + this.totalDuration(); //just triggers recalculation + } + return this._duration; + } + if (this.duration() !== 0 && value !== 0) { + this.timeScale(this._duration / value); + } + return this; + }; + + p.totalDuration = function(value) { + if (!arguments.length) { + if (this._dirty) { + var max = 0, + tween = this._last, + prevStart = 999999999999, + prev, end; + while (tween) { + prev = tween._prev; //record it here in case the tween changes position in the sequence... + if (tween._dirty) { + tween.totalDuration(); //could change the tween._startTime, so make sure the tween's cache is clean before analyzing it. + } + if (tween._startTime > prevStart && this._sortChildren && !tween._paused) { //in case one of the tweens shifted out of order, it needs to be re-inserted into the correct position in the sequence + this.add(tween, tween._startTime - tween._delay); + } else { + prevStart = tween._startTime; + } + if (tween._startTime < 0 && !tween._paused) { //children aren't allowed to have negative startTimes unless smoothChildTiming is true, so adjust here if one is found. + max -= tween._startTime; + if (this._timeline.smoothChildTiming) { + this._startTime += tween._startTime / this._timeScale; + } + this.shiftChildren(-tween._startTime, false, -9999999999); + prevStart = 0; + } + end = tween._startTime + (tween._totalDuration / tween._timeScale); + if (end > max) { + max = end; + } + tween = prev; + } + this._duration = this._totalDuration = max; + this._dirty = false; + } + return this._totalDuration; + } + return (value && this.totalDuration()) ? this.timeScale(this._totalDuration / value) : this; + }; + + p.paused = function(value) { + if (!value) { //if there's a pause directly at the spot from where we're unpausing, skip it. + var tween = this._first, + time = this._time; + while (tween) { + if (tween._startTime === time && tween.data === "isPause") { + tween._rawPrevTime = 0; //remember, _rawPrevTime is how zero-duration tweens/callbacks sense directionality and determine whether or not to fire. If _rawPrevTime is the same as _startTime on the next render, it won't fire. + } + tween = tween._next; + } + } + return Animation.prototype.paused.apply(this, arguments); + }; + + p.usesFrames = function() { + var tl = this._timeline; + while (tl._timeline) { + tl = tl._timeline; + } + return (tl === Animation._rootFramesTimeline); + }; + + p.rawTime = function() { + return this._paused ? this._totalTime : (this._timeline.rawTime() - this._startTime) * this._timeScale; + }; + + return TimelineLite; + + }, true); + + +}); if (_gsScope._gsDefine) { _gsScope._gsQueue.pop()(); } + +//export to AMD/RequireJS and CommonJS/Node (precursor to full modular build system coming at a later date) +(function(name) { + "use strict"; + var getGlobal = function() { + return (_gsScope.GreenSockGlobals || _gsScope)[name]; + }; + if (typeof(define) === "function" && define.amd) { //AMD + define(["TweenLite"], getGlobal); + } else if (typeof(module) !== "undefined" && module.exports) { //node + require("./TweenLite.js"); //dependency + module.exports = getGlobal(); + } +}("TimelineLite")); + + +/*! + * VERSION: 1.19.0 + * DATE: 2016-07-16 + * UPDATES AND DOCS AT: http://greensock.com + * + * @license Copyright (c) 2008-2016, GreenSock. All rights reserved. + * This work is subject to the terms at http://greensock.com/standard-license or for + * Club GreenSock members, the software agreement that was issued with your membership. + * + * @author: Jack Doyle, jack@greensock.com + */ +(function(window, moduleName) { + + "use strict"; + var _exports = {}, + _globals = window.GreenSockGlobals = window.GreenSockGlobals || window; + if (_globals.TweenLite) { + return; //in case the core set of classes is already loaded, don't instantiate twice. + } + var _namespace = function(ns) { + var a = ns.split("."), + p = _globals, i; + for (i = 0; i < a.length; i++) { + p[a[i]] = p = p[a[i]] || {}; + } + return p; + }, + gs = _namespace("com.greensock"), + _tinyNum = 0.0000000001, + _slice = function(a) { //don't use Array.prototype.slice.call(target, 0) because that doesn't work in IE8 with a NodeList that's returned by querySelectorAll() + var b = [], + l = a.length, + i; + for (i = 0; i !== l; b.push(a[i++])) {} + return b; + }, + _emptyFunc = function() {}, + _isArray = (function() { //works around issues in iframe environments where the Array global isn't shared, thus if the object originates in a different window/iframe, "(obj instanceof Array)" will evaluate false. We added some speed optimizations to avoid Object.prototype.toString.call() unless it's absolutely necessary because it's VERY slow (like 20x slower) + var toString = Object.prototype.toString, + array = toString.call([]); + return function(obj) { + return obj != null && (obj instanceof Array || (typeof(obj) === "object" && !!obj.push && toString.call(obj) === array)); + }; + }()), + a, i, p, _ticker, _tickerActive, + _defLookup = {}, + + /** + * @constructor + * Defines a GreenSock class, optionally with an array of dependencies that must be instantiated first and passed into the definition. + * This allows users to load GreenSock JS files in any order even if they have interdependencies (like CSSPlugin extends TweenPlugin which is + * inside TweenLite.js, but if CSSPlugin is loaded first, it should wait to run its code until TweenLite.js loads and instantiates TweenPlugin + * and then pass TweenPlugin to CSSPlugin's definition). This is all done automatically and internally. + * + * Every definition will be added to a "com.greensock" global object (typically window, but if a window.GreenSockGlobals object is found, + * it will go there as of v1.7). For example, TweenLite will be found at window.com.greensock.TweenLite and since it's a global class that should be available anywhere, + * it is ALSO referenced at window.TweenLite. However some classes aren't considered global, like the base com.greensock.core.Animation class, so + * those will only be at the package like window.com.greensock.core.Animation. Again, if you define a GreenSockGlobals object on the window, everything + * gets tucked neatly inside there instead of on the window directly. This allows you to do advanced things like load multiple versions of GreenSock + * files and put them into distinct objects (imagine a banner ad uses a newer version but the main site uses an older one). In that case, you could + * sandbox the banner one like: + * + * + * + * + * + * + * + * @param {!string} ns The namespace of the class definition, leaving off "com.greensock." as that's assumed. For example, "TweenLite" or "plugins.CSSPlugin" or "easing.Back". + * @param {!Array.} dependencies An array of dependencies (described as their namespaces minus "com.greensock." prefix). For example ["TweenLite","plugins.TweenPlugin","core.Animation"] + * @param {!function():Object} func The function that should be called and passed the resolved dependencies which will return the actual class for this definition. + * @param {boolean=} global If true, the class will be added to the global scope (typically window unless you define a window.GreenSockGlobals object) + */ + Definition = function(ns, dependencies, func, global) { + this.sc = (_defLookup[ns]) ? _defLookup[ns].sc : []; //subclasses + _defLookup[ns] = this; + this.gsClass = null; + this.func = func; + var _classes = []; + this.check = function(init) { + var i = dependencies.length, + missing = i, + cur, a, n, cl, hasModule; + while (--i > -1) { + if ((cur = _defLookup[dependencies[i]] || new Definition(dependencies[i], [])).gsClass) { + _classes[i] = cur.gsClass; + missing--; + } else if (init) { + cur.sc.push(this); + } + } + if (missing === 0 && func) { + a = ("com.greensock." + ns).split("."); + n = a.pop(); + cl = _namespace(a.join("."))[n] = this.gsClass = func.apply(func, _classes); + + //exports to multiple environments + if (global) { + _globals[n] = _exports[n] = cl; //provides a way to avoid global namespace pollution. By default, the main classes like TweenLite, Power1, Strong, etc. are added to window unless a GreenSockGlobals is defined. So if you want to have things added to a custom object instead, just do something like window.GreenSockGlobals = {} before loading any GreenSock files. You can even set up an alias like window.GreenSockGlobals = windows.gs = {} so that you can access everything like gs.TweenLite. Also remember that ALL classes are added to the window.com.greensock object (in their respective packages, like com.greensock.easing.Power1, com.greensock.TweenLite, etc.) + hasModule = (typeof(module) !== "undefined" && module.exports); + if (!hasModule && typeof(define) === "function" && define.amd){ //AMD + define((window.GreenSockAMDPath ? window.GreenSockAMDPath + "/" : "") + ns.split(".").pop(), [], function() { return cl; }); + } else if (hasModule){ //node + if (ns === moduleName) { + module.exports = _exports[moduleName] = cl; + for (i in _exports) { + cl[i] = _exports[i]; + } + } else if (_exports[moduleName]) { + _exports[moduleName][n] = cl; + } + } + } + for (i = 0; i < this.sc.length; i++) { + this.sc[i].check(); + } + } + }; + this.check(true); + }, + + //used to create Definition instances (which basically registers a class that has dependencies). + _gsDefine = window._gsDefine = function(ns, dependencies, func, global) { + return new Definition(ns, dependencies, func, global); + }, + + //a quick way to create a class that doesn't have any dependencies. Returns the class, but first registers it in the GreenSock namespace so that other classes can grab it (other classes might be dependent on the class). + _class = gs._class = function(ns, func, global) { + func = func || function() {}; + _gsDefine(ns, [], function(){ return func; }, global); + return func; + }; + + _gsDefine.globals = _globals; + + + +/* + * ---------------------------------------------------------------- + * Ease + * ---------------------------------------------------------------- + */ + var _baseParams = [0, 0, 1, 1], + _blankArray = [], + Ease = _class("easing.Ease", function(func, extraParams, type, power) { + this._func = func; + this._type = type || 0; + this._power = power || 0; + this._params = extraParams ? _baseParams.concat(extraParams) : _baseParams; + }, true), + _easeMap = Ease.map = {}, + _easeReg = Ease.register = function(ease, names, types, create) { + var na = names.split(","), + i = na.length, + ta = (types || "easeIn,easeOut,easeInOut").split(","), + e, name, j, type; + while (--i > -1) { + name = na[i]; + e = create ? _class("easing."+name, null, true) : gs.easing[name] || {}; + j = ta.length; + while (--j > -1) { + type = ta[j]; + _easeMap[name + "." + type] = _easeMap[type + name] = e[type] = ease.getRatio ? ease : ease[type] || new ease(); + } + } + }; + + p = Ease.prototype; + p._calcEnd = false; + p.getRatio = function(p) { + if (this._func) { + this._params[0] = p; + return this._func.apply(null, this._params); + } + var t = this._type, + pw = this._power, + r = (t === 1) ? 1 - p : (t === 2) ? p : (p < 0.5) ? p * 2 : (1 - p) * 2; + if (pw === 1) { + r *= r; + } else if (pw === 2) { + r *= r * r; + } else if (pw === 3) { + r *= r * r * r; + } else if (pw === 4) { + r *= r * r * r * r; + } + return (t === 1) ? 1 - r : (t === 2) ? r : (p < 0.5) ? r / 2 : 1 - (r / 2); + }; + + //create all the standard eases like Linear, Quad, Cubic, Quart, Quint, Strong, Power0, Power1, Power2, Power3, and Power4 (each with easeIn, easeOut, and easeInOut) + a = ["Linear","Quad","Cubic","Quart","Quint,Strong"]; + i = a.length; + while (--i > -1) { + p = a[i]+",Power"+i; + _easeReg(new Ease(null,null,1,i), p, "easeOut", true); + _easeReg(new Ease(null,null,2,i), p, "easeIn" + ((i === 0) ? ",easeNone" : "")); + _easeReg(new Ease(null,null,3,i), p, "easeInOut"); + } + _easeMap.linear = gs.easing.Linear.easeIn; + _easeMap.swing = gs.easing.Quad.easeInOut; //for jQuery folks + + +/* + * ---------------------------------------------------------------- + * EventDispatcher + * ---------------------------------------------------------------- + */ + var EventDispatcher = _class("events.EventDispatcher", function(target) { + this._listeners = {}; + this._eventTarget = target || this; + }); + p = EventDispatcher.prototype; + + p.addEventListener = function(type, callback, scope, useParam, priority) { + priority = priority || 0; + var list = this._listeners[type], + index = 0, + listener, i; + if (this === _ticker && !_tickerActive) { + _ticker.wake(); + } + if (list == null) { + this._listeners[type] = list = []; + } + i = list.length; + while (--i > -1) { + listener = list[i]; + if (listener.c === callback && listener.s === scope) { + list.splice(i, 1); + } else if (index === 0 && listener.pr < priority) { + index = i + 1; + } + } + list.splice(index, 0, {c:callback, s:scope, up:useParam, pr:priority}); + }; + + p.removeEventListener = function(type, callback) { + var list = this._listeners[type], i; + if (list) { + i = list.length; + while (--i > -1) { + if (list[i].c === callback) { + list.splice(i, 1); + return; + } + } + } + }; + + p.dispatchEvent = function(type) { + var list = this._listeners[type], + i, t, listener; + if (list) { + i = list.length; + if (i > 1) { + list = list.slice(0); //in case addEventListener() is called from within a listener/callback (otherwise the index could change, resulting in a skip) + } + t = this._eventTarget; + while (--i > -1) { + listener = list[i]; + if (listener) { + if (listener.up) { + listener.c.call(listener.s || t, {type:type, target:t}); + } else { + listener.c.call(listener.s || t); + } + } + } + } + }; + + +/* + * ---------------------------------------------------------------- + * Ticker + * ---------------------------------------------------------------- + */ + var _reqAnimFrame = window.requestAnimationFrame, + _cancelAnimFrame = window.cancelAnimationFrame, + _getTime = Date.now || function() {return new Date().getTime();}, + _lastUpdate = _getTime(); + + //now try to determine the requestAnimationFrame and cancelAnimationFrame functions and if none are found, we'll use a setTimeout()/clearTimeout() polyfill. + a = ["ms","moz","webkit","o"]; + i = a.length; + while (--i > -1 && !_reqAnimFrame) { + _reqAnimFrame = window[a[i] + "RequestAnimationFrame"]; + _cancelAnimFrame = window[a[i] + "CancelAnimationFrame"] || window[a[i] + "CancelRequestAnimationFrame"]; + } + + _class("Ticker", function(fps, useRAF) { + var _self = this, + _startTime = _getTime(), + _useRAF = (useRAF !== false && _reqAnimFrame) ? "auto" : false, + _lagThreshold = 500, + _adjustedLag = 33, + _tickWord = "tick", //helps reduce gc burden + _fps, _req, _id, _gap, _nextTime, + _tick = function(manual) { + var elapsed = _getTime() - _lastUpdate, + overlap, dispatch; + if (elapsed > _lagThreshold) { + _startTime += elapsed - _adjustedLag; + } + _lastUpdate += elapsed; + _self.time = (_lastUpdate - _startTime) / 1000; + overlap = _self.time - _nextTime; + if (!_fps || overlap > 0 || manual === true) { + _self.frame++; + _nextTime += overlap + (overlap >= _gap ? 0.004 : _gap - overlap); + dispatch = true; + } + if (manual !== true) { //make sure the request is made before we dispatch the "tick" event so that timing is maintained. Otherwise, if processing the "tick" requires a bunch of time (like 15ms) and we're using a setTimeout() that's based on 16.7ms, it'd technically take 31.7ms between frames otherwise. + _id = _req(_tick); + } + if (dispatch) { + _self.dispatchEvent(_tickWord); + } + }; + + EventDispatcher.call(_self); + _self.time = _self.frame = 0; + _self.tick = function() { + _tick(true); + }; + + _self.lagSmoothing = function(threshold, adjustedLag) { + _lagThreshold = threshold || (1 / _tinyNum); //zero should be interpreted as basically unlimited + _adjustedLag = Math.min(adjustedLag, _lagThreshold, 0); + }; + + _self.sleep = function() { + if (_id == null) { + return; + } + if (!_useRAF || !_cancelAnimFrame) { + clearTimeout(_id); + } else { + _cancelAnimFrame(_id); + } + _req = _emptyFunc; + _id = null; + if (_self === _ticker) { + _tickerActive = false; + } + }; + + _self.wake = function(seamless) { + if (_id !== null) { + _self.sleep(); + } else if (seamless) { + _startTime += -_lastUpdate + (_lastUpdate = _getTime()); + } else if (_self.frame > 10) { //don't trigger lagSmoothing if we're just waking up, and make sure that at least 10 frames have elapsed because of the iOS bug that we work around below with the 1.5-second setTimout(). + _lastUpdate = _getTime() - _lagThreshold + 5; + } + _req = (_fps === 0) ? _emptyFunc : (!_useRAF || !_reqAnimFrame) ? function(f) { return setTimeout(f, ((_nextTime - _self.time) * 1000 + 1) | 0); } : _reqAnimFrame; + if (_self === _ticker) { + _tickerActive = true; + } + _tick(2); + }; + + _self.fps = function(value) { + if (!arguments.length) { + return _fps; + } + _fps = value; + _gap = 1 / (_fps || 60); + _nextTime = this.time + _gap; + _self.wake(); + }; + + _self.useRAF = function(value) { + if (!arguments.length) { + return _useRAF; + } + _self.sleep(); + _useRAF = value; + _self.fps(_fps); + }; + _self.fps(fps); + + //a bug in iOS 6 Safari occasionally prevents the requestAnimationFrame from working initially, so we use a 1.5-second timeout that automatically falls back to setTimeout() if it senses this condition. + setTimeout(function() { + if (_useRAF === "auto" && _self.frame < 5 && document.visibilityState !== "hidden") { + _self.useRAF(false); + } + }, 1500); + }); + + p = gs.Ticker.prototype = new gs.events.EventDispatcher(); + p.constructor = gs.Ticker; + + +/* + * ---------------------------------------------------------------- + * Animation + * ---------------------------------------------------------------- + */ + var Animation = _class("core.Animation", function(duration, vars) { + this.vars = vars = vars || {}; + this._duration = this._totalDuration = duration || 0; + this._delay = Number(vars.delay) || 0; + this._timeScale = 1; + this._active = (vars.immediateRender === true); + this.data = vars.data; + this._reversed = (vars.reversed === true); + + if (!_rootTimeline) { + return; + } + if (!_tickerActive) { //some browsers (like iOS 6 Safari) shut down JavaScript execution when the tab is disabled and they [occasionally] neglect to start up requestAnimationFrame again when returning - this code ensures that the engine starts up again properly. + _ticker.wake(); + } + + var tl = this.vars.useFrames ? _rootFramesTimeline : _rootTimeline; + tl.add(this, tl._time); + + if (this.vars.paused) { + this.paused(true); + } + }); + + _ticker = Animation.ticker = new gs.Ticker(); + p = Animation.prototype; + p._dirty = p._gc = p._initted = p._paused = false; + p._totalTime = p._time = 0; + p._rawPrevTime = -1; + p._next = p._last = p._onUpdate = p._timeline = p.timeline = null; + p._paused = false; + + + //some browsers (like iOS) occasionally drop the requestAnimationFrame event when the user switches to a different tab and then comes back again, so we use a 2-second setTimeout() to sense if/when that condition occurs and then wake() the ticker. + var _checkTimeout = function() { + if (_tickerActive && _getTime() - _lastUpdate > 2000) { + _ticker.wake(); + } + setTimeout(_checkTimeout, 2000); + }; + _checkTimeout(); + + + p.play = function(from, suppressEvents) { + if (from != null) { + this.seek(from, suppressEvents); + } + return this.reversed(false).paused(false); + }; + + p.pause = function(atTime, suppressEvents) { + if (atTime != null) { + this.seek(atTime, suppressEvents); + } + return this.paused(true); + }; + + p.resume = function(from, suppressEvents) { + if (from != null) { + this.seek(from, suppressEvents); + } + return this.paused(false); + }; + + p.seek = function(time, suppressEvents) { + return this.totalTime(Number(time), suppressEvents !== false); + }; + + p.restart = function(includeDelay, suppressEvents) { + return this.reversed(false).paused(false).totalTime(includeDelay ? -this._delay : 0, (suppressEvents !== false), true); + }; + + p.reverse = function(from, suppressEvents) { + if (from != null) { + this.seek((from || this.totalDuration()), suppressEvents); + } + return this.reversed(true).paused(false); + }; + + p.render = function(time, suppressEvents, force) { + //stub - we override this method in subclasses. + }; + + p.invalidate = function() { + this._time = this._totalTime = 0; + this._initted = this._gc = false; + this._rawPrevTime = -1; + if (this._gc || !this.timeline) { + this._enabled(true); + } + return this; + }; + + p.isActive = function() { + var tl = this._timeline, //the 2 root timelines won't have a _timeline; they're always active. + startTime = this._startTime, + rawTime; + return (!tl || (!this._gc && !this._paused && tl.isActive() && (rawTime = tl.rawTime()) >= startTime && rawTime < startTime + this.totalDuration() / this._timeScale)); + }; + + p._enabled = function (enabled, ignoreTimeline) { + if (!_tickerActive) { + _ticker.wake(); + } + this._gc = !enabled; + this._active = this.isActive(); + if (ignoreTimeline !== true) { + if (enabled && !this.timeline) { + this._timeline.add(this, this._startTime - this._delay); + } else if (!enabled && this.timeline) { + this._timeline._remove(this, true); + } + } + return false; + }; + + + p._kill = function(vars, target) { + return this._enabled(false, false); + }; + + p.kill = function(vars, target) { + this._kill(vars, target); + return this; + }; + + p._uncache = function(includeSelf) { + var tween = includeSelf ? this : this.timeline; + while (tween) { + tween._dirty = true; + tween = tween.timeline; + } + return this; + }; + + p._swapSelfInParams = function(params) { + var i = params.length, + copy = params.concat(); + while (--i > -1) { + if (params[i] === "{self}") { + copy[i] = this; + } + } + return copy; + }; + + p._callback = function(type) { + var v = this.vars, + callback = v[type], + params = v[type + "Params"], + scope = v[type + "Scope"] || v.callbackScope || this, + l = params ? params.length : 0; + switch (l) { //speed optimization; call() is faster than apply() so use it when there are only a few parameters (which is by far most common). Previously we simply did var v = this.vars; v[type].apply(v[type + "Scope"] || v.callbackScope || this, v[type + "Params"] || _blankArray); + case 0: callback.call(scope); break; + case 1: callback.call(scope, params[0]); break; + case 2: callback.call(scope, params[0], params[1]); break; + default: callback.apply(scope, params); + } + }; + +//----Animation getters/setters -------------------------------------------------------- + + p.eventCallback = function(type, callback, params, scope) { + if ((type || "").substr(0,2) === "on") { + var v = this.vars; + if (arguments.length === 1) { + return v[type]; + } + if (callback == null) { + delete v[type]; + } else { + v[type] = callback; + v[type + "Params"] = (_isArray(params) && params.join("").indexOf("{self}") !== -1) ? this._swapSelfInParams(params) : params; + v[type + "Scope"] = scope; + } + if (type === "onUpdate") { + this._onUpdate = callback; + } + } + return this; + }; + + p.delay = function(value) { + if (!arguments.length) { + return this._delay; + } + if (this._timeline.smoothChildTiming) { + this.startTime( this._startTime + value - this._delay ); + } + this._delay = value; + return this; + }; + + p.duration = function(value) { + if (!arguments.length) { + this._dirty = false; + return this._duration; + } + this._duration = this._totalDuration = value; + this._uncache(true); //true in case it's a TweenMax or TimelineMax that has a repeat - we'll need to refresh the totalDuration. + if (this._timeline.smoothChildTiming) if (this._time > 0) if (this._time < this._duration) if (value !== 0) { + this.totalTime(this._totalTime * (value / this._duration), true); + } + return this; + }; + + p.totalDuration = function(value) { + this._dirty = false; + return (!arguments.length) ? this._totalDuration : this.duration(value); + }; + + p.time = function(value, suppressEvents) { + if (!arguments.length) { + return this._time; + } + if (this._dirty) { + this.totalDuration(); + } + return this.totalTime((value > this._duration) ? this._duration : value, suppressEvents); + }; + + p.totalTime = function(time, suppressEvents, uncapped) { + if (!_tickerActive) { + _ticker.wake(); + } + if (!arguments.length) { + return this._totalTime; + } + if (this._timeline) { + if (time < 0 && !uncapped) { + time += this.totalDuration(); + } + if (this._timeline.smoothChildTiming) { + if (this._dirty) { + this.totalDuration(); + } + var totalDuration = this._totalDuration, + tl = this._timeline; + if (time > totalDuration && !uncapped) { + time = totalDuration; + } + this._startTime = (this._paused ? this._pauseTime : tl._time) - ((!this._reversed ? time : totalDuration - time) / this._timeScale); + if (!tl._dirty) { //for performance improvement. If the parent's cache is already dirty, it already took care of marking the ancestors as dirty too, so skip the function call here. + this._uncache(false); + } + //in case any of the ancestor timelines had completed but should now be enabled, we should reset their totalTime() which will also ensure that they're lined up properly and enabled. Skip for animations that are on the root (wasteful). Example: a TimelineLite.exportRoot() is performed when there's a paused tween on the root, the export will not complete until that tween is unpaused, but imagine a child gets restarted later, after all [unpaused] tweens have completed. The startTime of that child would get pushed out, but one of the ancestors may have completed. + if (tl._timeline) { + while (tl._timeline) { + if (tl._timeline._time !== (tl._startTime + tl._totalTime) / tl._timeScale) { + tl.totalTime(tl._totalTime, true); + } + tl = tl._timeline; + } + } + } + if (this._gc) { + this._enabled(true, false); + } + if (this._totalTime !== time || this._duration === 0) { + if (_lazyTweens.length) { + _lazyRender(); + } + this.render(time, suppressEvents, false); + if (_lazyTweens.length) { //in case rendering caused any tweens to lazy-init, we should render them because typically when someone calls seek() or time() or progress(), they expect an immediate render. + _lazyRender(); + } + } + } + return this; + }; + + p.progress = p.totalProgress = function(value, suppressEvents) { + var duration = this.duration(); + return (!arguments.length) ? (duration ? this._time / duration : this.ratio) : this.totalTime(duration * value, suppressEvents); + }; + + p.startTime = function(value) { + if (!arguments.length) { + return this._startTime; + } + if (value !== this._startTime) { + this._startTime = value; + if (this.timeline) if (this.timeline._sortChildren) { + this.timeline.add(this, value - this._delay); //ensures that any necessary re-sequencing of Animations in the timeline occurs to make sure the rendering order is correct. + } + } + return this; + }; + + p.endTime = function(includeRepeats) { + return this._startTime + ((includeRepeats != false) ? this.totalDuration() : this.duration()) / this._timeScale; + }; + + p.timeScale = function(value) { + if (!arguments.length) { + return this._timeScale; + } + value = value || _tinyNum; //can't allow zero because it'll throw the math off + if (this._timeline && this._timeline.smoothChildTiming) { + var pauseTime = this._pauseTime, + t = (pauseTime || pauseTime === 0) ? pauseTime : this._timeline.totalTime(); + this._startTime = t - ((t - this._startTime) * this._timeScale / value); + } + this._timeScale = value; + return this._uncache(false); + }; + + p.reversed = function(value) { + if (!arguments.length) { + return this._reversed; + } + if (value != this._reversed) { + this._reversed = value; + this.totalTime(((this._timeline && !this._timeline.smoothChildTiming) ? this.totalDuration() - this._totalTime : this._totalTime), true); + } + return this; + }; + + p.paused = function(value) { + if (!arguments.length) { + return this._paused; + } + var tl = this._timeline, + raw, elapsed; + if (value != this._paused) if (tl) { + if (!_tickerActive && !value) { + _ticker.wake(); + } + raw = tl.rawTime(); + elapsed = raw - this._pauseTime; + if (!value && tl.smoothChildTiming) { + this._startTime += elapsed; + this._uncache(false); + } + this._pauseTime = value ? raw : null; + this._paused = value; + this._active = this.isActive(); + if (!value && elapsed !== 0 && this._initted && this.duration()) { + raw = tl.smoothChildTiming ? this._totalTime : (raw - this._startTime) / this._timeScale; + this.render(raw, (raw === this._totalTime), true); //in case the target's properties changed via some other tween or manual update by the user, we should force a render. + } + } + if (this._gc && !value) { + this._enabled(true, false); + } + return this; + }; + + +/* + * ---------------------------------------------------------------- + * SimpleTimeline + * ---------------------------------------------------------------- + */ + var SimpleTimeline = _class("core.SimpleTimeline", function(vars) { + Animation.call(this, 0, vars); + this.autoRemoveChildren = this.smoothChildTiming = true; + }); + + p = SimpleTimeline.prototype = new Animation(); + p.constructor = SimpleTimeline; + p.kill()._gc = false; + p._first = p._last = p._recent = null; + p._sortChildren = false; + + p.add = p.insert = function(child, position, align, stagger) { + var prevTween, st; + child._startTime = Number(position || 0) + child._delay; + if (child._paused) if (this !== child._timeline) { //we only adjust the _pauseTime if it wasn't in this timeline already. Remember, sometimes a tween will be inserted again into the same timeline when its startTime is changed so that the tweens in the TimelineLite/Max are re-ordered properly in the linked list (so everything renders in the proper order). + child._pauseTime = child._startTime + ((this.rawTime() - child._startTime) / child._timeScale); + } + if (child.timeline) { + child.timeline._remove(child, true); //removes from existing timeline so that it can be properly added to this one. + } + child.timeline = child._timeline = this; + if (child._gc) { + child._enabled(true, true); + } + prevTween = this._last; + if (this._sortChildren) { + st = child._startTime; + while (prevTween && prevTween._startTime > st) { + prevTween = prevTween._prev; + } + } + if (prevTween) { + child._next = prevTween._next; + prevTween._next = child; + } else { + child._next = this._first; + this._first = child; + } + if (child._next) { + child._next._prev = child; + } else { + this._last = child; + } + child._prev = prevTween; + this._recent = child; + if (this._timeline) { + this._uncache(true); + } + return this; + }; + + p._remove = function(tween, skipDisable) { + if (tween.timeline === this) { + if (!skipDisable) { + tween._enabled(false, true); + } + + if (tween._prev) { + tween._prev._next = tween._next; + } else if (this._first === tween) { + this._first = tween._next; + } + if (tween._next) { + tween._next._prev = tween._prev; + } else if (this._last === tween) { + this._last = tween._prev; + } + tween._next = tween._prev = tween.timeline = null; + if (tween === this._recent) { + this._recent = this._last; + } + + if (this._timeline) { + this._uncache(true); + } + } + return this; + }; + + p.render = function(time, suppressEvents, force) { + var tween = this._first, + next; + this._totalTime = this._time = this._rawPrevTime = time; + while (tween) { + next = tween._next; //record it here because the value could change after rendering... + if (tween._active || (time >= tween._startTime && !tween._paused)) { + if (!tween._reversed) { + tween.render((time - tween._startTime) * tween._timeScale, suppressEvents, force); + } else { + tween.render(((!tween._dirty) ? tween._totalDuration : tween.totalDuration()) - ((time - tween._startTime) * tween._timeScale), suppressEvents, force); + } + } + tween = next; + } + }; + + p.rawTime = function() { + if (!_tickerActive) { + _ticker.wake(); + } + return this._totalTime; + }; + +/* + * ---------------------------------------------------------------- + * TweenLite + * ---------------------------------------------------------------- + */ + var TweenLite = _class("TweenLite", function(target, duration, vars) { + Animation.call(this, duration, vars); + this.render = TweenLite.prototype.render; //speed optimization (avoid prototype lookup on this "hot" method) + + if (target == null) { + throw "Cannot tween a null target."; + } + + this.target = target = (typeof(target) !== "string") ? target : TweenLite.selector(target) || target; + + var isSelector = (target.jquery || (target.length && target !== window && target[0] && (target[0] === window || (target[0].nodeType && target[0].style && !target.nodeType)))), + overwrite = this.vars.overwrite, + i, targ, targets; + + this._overwrite = overwrite = (overwrite == null) ? _overwriteLookup[TweenLite.defaultOverwrite] : (typeof(overwrite) === "number") ? overwrite >> 0 : _overwriteLookup[overwrite]; + + if ((isSelector || target instanceof Array || (target.push && _isArray(target))) && typeof(target[0]) !== "number") { + this._targets = targets = _slice(target); //don't use Array.prototype.slice.call(target, 0) because that doesn't work in IE8 with a NodeList that's returned by querySelectorAll() + this._propLookup = []; + this._siblings = []; + for (i = 0; i < targets.length; i++) { + targ = targets[i]; + if (!targ) { + targets.splice(i--, 1); + continue; + } else if (typeof(targ) === "string") { + targ = targets[i--] = TweenLite.selector(targ); //in case it's an array of strings + if (typeof(targ) === "string") { + targets.splice(i+1, 1); //to avoid an endless loop (can't imagine why the selector would return a string, but just in case) + } + continue; + } else if (targ.length && targ !== window && targ[0] && (targ[0] === window || (targ[0].nodeType && targ[0].style && !targ.nodeType))) { //in case the user is passing in an array of selector objects (like jQuery objects), we need to check one more level and pull things out if necessary. Also note that ' + + + '
      ' + + '
      ' + + '
      ' + + '
      ' + + + '' + + + '' + + + '' + + + '
      ' + + + '
      ' + + + '
      ' + + + '' + + + '
      ' + + + '' + + '' + + '' + + '' + + '' + + + '
      ' + + + '
      ' + + + '
      ' + + + '' + + '
      ' + + '' + + '
      ' + + '' + + '
      ' + + '' + + '' + + + '
      ' + + + '
      ' + + + '
      ' + + + '' + + + '
      ' + + + '
      ' + + + '
      ' + + + '
      ' + + + '' + + ' ' + + '' + + '' + + '' + + + '' + + ' ' + + '' + + '' + + '' + + + '
      ' + + '
      ' + + + '
      ' + + + '
      ' + + + '
      ' + + + '' + + '
      ' + + '
      ' + + '
      ' + + '' + + + '
      ' + + + '
      ' + + + '
      ' + + + '
      ' + + '
      ' + + '
      {{delete}}
      ' + + + '
      ' + + + '
      ' + + + '
      ' + + '
      ' + + '
      {{delete}}
      ' + + + '
      ' + + + '
      ' + + + '
      ' + + + '
      ' + + + '
      ' + + + '
      ' + + + '
      ' + + + '
      ' + + + '' + + + '
      ' + + + '' + + '' + + '' + + '' + + '' + + + '
      ' + + + '
      ' + + + '
      ' + + + '
      ' + + + '
      ' + + + '
      ' + + + '
      ' + + + '
      ' + + + '' + + '' + + '' + + + '
      ' + + + '
      ' + + + '
      ' + + + '
      ' + + '' + + '
      ' + + '' + + '
      ' + + '
      ' + + '
      ' + + '
      ' + + '
      ' + + '
      ' + + + '
      ' + + + '
      ' + + + '
      ' + + + '
      ' + + + '
      ' + + + '' + + + '' + + + '' + + + '
      ' + + + '
      ' + + + '' + + + '
      ' + + + '
      ' + + + '' + + '' + + '' + + + '
      ' + + + '
      ' + + + '' + + + ''; + + function changeDegree(grad, deg) { + + grad = grad.split('('); + + var begin = grad[0]; + grad.shift(); + + var end = grad.join('(').split(','); + end.shift(); + + deg = typeof deg !== 'undefined' ? deg + 'deg,' : 'ellipse at center,'; + return begin + '(' + deg + end.join(','); + + } + + function gradientView(val) { + + return changeDegree(val.replace('radial-', 'linear-'), '90'); + + } + + function replaceText() { + + this.innerHTML = curLanguage[getAttribute(this, 'data-text')]; + + } + + function replaceHolder() { + + this.setAttribute('placeholder', curLanguage[getAttribute(this, 'data-placeholder')]); + + } + + function replaceAlert() { + + this.setAttribute('data-message', curLanguage[getAttribute(this, 'data-alert')]); + + } + + function getAttribute(el, attr) { + + return el.getAttribute(attr) || ''; + + } + + function writeLanguage(language) { + + if(!language) language = {}; + if(typeof language === 'string') language = JSON.parse(language.replace(/\&/g, '"')); + + curLanguage = $.extend({}, lang, language); + langColor = curLanguage.color; + + cPicker.find('*[data-placeholder]').each(replaceHolder); + cPicker.find('*[data-alert]').each(replaceAlert); + cPicker.find('*[data-text]').each(replaceText); + + } + + function newPreset(val, core, cls, grad) { + + var titl, + obj, + el; + + if(!$.isPlainObject(val)) { + + titl = val; + + } + else { + + var angl, + tpe; + + for(var prop in val) { + + if(!val.hasOwnProperty(prop)) continue; + + val = val[prop]; + if(typeof val === 'string') { + + val = RevColor.process(val); + if(val[1] === 'gradient') { + + obj = val[2]; + angl = obj.angle; + tpe = obj.type; + + } + + val = val[0]; + + } + else { + + angl = val.angle; + tpe = val.type; + + } + + if(!isNaN(prop)) { + + titl = tpe !== 'radial' ? angl + '°' : 'radial'; + + } + else { + + titl = prop.replace(/_/g, ' ').replace(/\b\w/g, function(chr) {return chr.toUpperCase();}); + + } + + } + + } + + if(val !== 'blank') { + + var datas; + if($.isPlainObject(val)) { + + obj = val; + datas = ''; + val = grad || RevColor.processGradient(val); + + } + + var shell = '' + + '' + + ''; + + if(!core) shell += ''; + shell += ''; + + el = $(shell); + if(obj) el.data('gradient', obj); + return el[0]; + + } + else { + + el = document.createElement('span'); + el.className = 'rev-cpicker-color blank'; + return el; + + } + + } + + function checkPreset() { + + var presetColor = getAttribute(this, 'data-color').toLowerCase(), + toCheck = !supressCheck ? presetColor === openingColor.toLowerCase() : false; + + if(presetColor === selectedHex || toCheck) { + + var $this = $(this); + + $this.closest('.rev-cpicker-presets-group').find('.rev-cpicker-color.selected').removeClass('selected'); + selectedColor = $this; + + if(supressCheck && !colorView) setValue(selectedColor.data('gradient'), true); + selectedColor.addClass('selected'); + + return false; + + } + + } + + function writePresets(container, colors) { + + var frag = document.createDocumentFragment(), + core = container.search('core') !== -1, + cls = core ? '' : ' rev-picker-color-custom', + len = colors.length, + minRows = container.search('colors') !== -1 ? minColorRows : minGradRows, + rows = Math.max(Math.ceil(len / presetColumns), minRows); + + for(var i = 0; i < rows; i++) { + + while(colors.length < ((i + 1) * presetColumns)) colors[colors.length] = 'blank'; + + } + + len = colors.length; + for(i = 0; i < len; i++) { + + frag.appendChild(newPreset(colors[i], core, cls)); + + } + + return ['rev-cpicker-' + container, frag]; + + } + + function onChange(gradient, color, trans) { + + if(!currentColor) return; + if(!gradient) { + + var hex = color || colorHex.val(), + opacity = typeof trans !== 'undefined' ? trans : colorOpacity.val(); + + if(hex === 'transparent') color = 'transparent'; + else if(opacity === '100%') color = RevColor.sanitizeHex(hex); + else color = RevColor.processRgba(hex, opacity); + + } + + var isTrans = color === 'transparent', + val = !isTrans ? color : ''; + + if(!gradient) colorBtn.data('state', color); + else gradBtn.data('state', color); + + if(!isTrans) currentColor[0].style.background = val; + else currentColor.css('background', val); + + if(onEdit) onEdit(currentInput, color); + doc.trigger('revcolorpickerupdate', [currentInput, color]); + + } + + function setValue(val, fromPreset) { + + var obj = RevColor.process(val), + type = obj[1], + clr = obj[0]; + + if(isFull) reverse.removeClass('checked'); + if(type !== 'gradient') { + + switch(type) { + + case 'hex': + + val = RevColor.sanitizeHex(clr); + colorOpacity.val('100%'); + updateSlider(100); + + break; + + case 'rgba': + + var values = RevColor.rgbaToHex(clr), + opacity = parseInt(values[1] * 100, 10); + val = values[0]; + + colorOpacity.val(opacity + '%'); + updateSlider(opacity); + + break; + + case 'rgb': + + val = RevColor.rgbToHex(clr); + colorOpacity.val('100%'); + updateSlider(100); + + break; + + default: + + colorClear.click(); + colorBtn.click(); + + // end default + + } + + colorIris.val(val).change(); + if(!fromPreset) colorBtn.click(); + + } + else { + + if(isFull) { + + buildGradientInput(obj[2]); + buildGradientOutput(); + + if(!fromPreset) { + + gradViewed = true; + gradBtn.click(); + + } + + } + else { + + colorIris.val(RevColor.defaultValue).change(); + colorBtn.click(); + + } + + } + + return [clr, type]; + + } + + function getSibling(align, x) { + + var locations = points.slice(), + len = locations.length, + pnt; + + locations.sort(sortPoints); + while(len--) { + + pnt = locations[len]; + if(pnt.align === align && pnt.x < x) return pnt; + + } + + len = locations.length; + for(var i = 0; i < len; i++) { + + pnt = locations[i]; + if(pnt.align === align && pnt.x > x) return pnt; + + } + + } + + function clonePoint(align, pos) { + + var sibling = getSibling(align, pos), + clr = sibling.color, + bg = getBgVal(clr, align, true), + rgb = getRgbVal(clr, true); + + var pnt = newPoint(align, pos, rgb, bg); + if(curPoint) curPoint.removeClass('active'); + + curPoint = $(pnt).addClass('active').appendTo(pointerWrap).draggable(dragObj); + curSquare = curPoint.children('.rev-cpicker-point-square')[0]; + curCorner = curPoint.children('.rev-cpicker-point-triangle')[0]; + groupPoints = pointerWrap.children(); + + var grad = activatePoint(pos); + buildGradientOutput(pnt); + + if(align === 'bottom') gradIris.val(grad[1]).change(); + + } + + function activatePoint(pointX) { + + if(typeof pointX === 'undefined') pointX = points[pointIndex].x; + + var color = curPoint.attr('data-color'), + bottom = curPoint.hasClass('rev-cpicker-point-bottom'); + + if(bottom) { + + if(opacityDelete.hasClass('active')) { + + gradOpacity.attr('disabled', 'disabled'); + opacityLoc.attr('disabled', 'disabled'); + opacityDelete.removeClass('active'); + + } + + color = RevColor.rgbaToHex(color)[0]; + colorBox.css('background', color); + colorLoc.removeAttr('disabled').val(pointX + '%'); + + if(cPicker.find('.rev-cpicker-point-bottom').length > 2) { + colorDelete.addClass('active'); + } + + cPicker.addClass('open'); + + } + else { + + if(colorDelete.hasClass('active')) { + + colorBox.css('background', ''); + colorLoc.attr('disabled', 'disabled'); + colorDelete.removeClass('active'); + + } + + var opacity = RevColor.getOpacity(color); + gradOpacity.attr('data-opacity', opacity).val(opacity).removeAttr('disabled'); + opacityLoc.val(pointX + '%').removeAttr('disabled'); + + if(cPicker.find('.rev-cpicker-point-top').length > 2) { + opacityDelete.addClass('active'); + } + + cPicker.removeClass('open'); + + } + + return [bottom, color]; + + } + + function getBgVal(clr, align, cloned) { + + if(align === 'bottom') return 'rgb(' + clr.r + ',' + clr.g + ',' + clr.b + ')'; + var opacity = !cloned ? clr.a : '1'; + return 'rgba(0, 0, 0, ' + opacity + ')'; + + } + + function getRgbVal(clr, cloned) { + + var opacity = !cloned ? clr.a : '1'; + return 'rgba(' + clr.r + ',' + clr.g + ',' + clr.b + ',' + opacity + ')'; + + } + + function setPoints(colors) { + + var frag = document.createDocumentFragment(), + len = colors.length, + align, + clr; + + for(var i = 0; i < len; i++) { + + clr = colors[i]; + align = clr.align; + frag.appendChild( + + newPoint( + + align, + clr.position, + getRgbVal(clr), + getBgVal(clr, align) + + ) + + ); + + } + + if(groupPoints) groupPoints.draggable('destroy'); + pointerWrap.empty().append(frag); + groupPoints = pointerWrap.children().draggable(dragObj); + + } + + function newPoint(align, pos, val, bg) { + + var el = document.createElement('span'); + el.className = 'rev-cpicker-point rev-cpicker-point-' + align; + + if(typeof val === 'string') el.setAttribute('data-color', val); + else $(el).data('gradient', val); + + el.setAttribute('data-location', pos); + el.style.left = pos + '%'; + + if(align === 'bottom') { + + el.innerHTML = + '' + + ''; + + } + else { + + el.innerHTML = + '' + + ''; + + } + + return el; + + } + + function getDegree(val) { + + if(!val || val === 'radial') val = '0'; + textareas.innerHTML = val + '°'; + return textareas.value; + + } + + function deactivate() { + + if(curPoint) { + + curPoint.removeClass('active'); + curPoint = false; + + } + + colorLoc.attr('disabled', 'disabled'); + gradOpacity.attr('disabled', 'disabled'); + opacityLoc.attr('disabled', 'disabled'); + + opacityDelete.removeClass('active'); + colorDelete.removeClass('active'); + + colorBox.css('background', ''); + cPicker.removeClass('open'); + + } + + function onClose(e, changed) { + + cPicker.removeClass('active is-basic').hide(); + bodies.removeClass('rev-colorpicker-open'); + mainContainer.css({left: '', top: ''}); + + if(appended) { + + appended.remove(); + appended = false; + + } + + if(selectedColor) { + + if(selectedColor.hasClass('selected')) { + + if(changed) currentInput.data('hex', selectedColor.attr('data-color').toLowerCase()); + selectedColor.removeClass('selected'); + + } + else { + + currentInput.removeData('hex'); + + } + + selectedColor = false; + + } + else { + + currentInput.removeData('hex'); + + } + + if(!changed) { + + if(onCancel) onCancel(); + if(openingValue && openingValue !== 'transparent') { + + currentColor[0].style.background = openingValue; + + } + else { + + currentColor.css('background', ''); + + } + + doc.trigger('revcolorpickerupdate', [currentInput, openingValue]); + + } + + currentColor = false; + currentInput = false; + + } + + function checkGroup() { + + var $this = $(this), + len = $this.children('.rev-cpicker-color').not('.blank').length; + + if(len > presetColumns) $('#' + this.id + '-btn').addClass('multiplerows'); + else $('#' + this.id + '-btn').removeClass('multiplerows'); + + return len; + + } + + function checkRows() { + + var $this = $(this), + minRows = this.id.search('colors') !== -1 ? minColorRows : minGradRows, + colors = $this.children('.rev-cpicker-color'), + len = colors.length, + rows = Math.ceil(len / presetColumns), + minItems = minRows * presetColumns, + rowRemoved; + + len += 1; + for(var i = 0; i < rows; i++) { + + var start = i * presetColumns, + range = colors.slice(start, parseInt(start + presetColumns, 10) - 1); + + blankRow = true; + range.each(checkRow); + if(blankRow) { + + len -= presetColumns; + if(len >= minItems) { + + range.remove(); + rowRemoved = true; + + } + + } + + } + + return rowRemoved; + + } + + function checkRow() { + + if(this.className.search('blank') === -1) { + + blankRow = false; + return false; + + } + + } + + function buildGradientInput(obj) { + + var degree = obj.angle; + if(obj.type === 'radial') degree = 'radial'; + + directions.removeClass('selected'); + $('.rev-cpicker-orientation[data-direction="' + degree + '"]').addClass('selected'); + + angle.val(getDegree(degree)); + updateWheel(degree); + setPoints(obj.colors); + + } + + function buildGradientOutput(el, revrse, save) { + + onReverse = revrse; + calculatePoints(); + onReverse = false; + + var elm, + color, + point, + ar = [], + len = points.length; + + for(var i = 0; i < len; i++) { + + point = points[i]; + color = point.color; + ar[i] = color; + + elm = point.el; + elm.setAttribute('data-color', RevColor.rgbaString(color.r, color.g, color.b, color.a)); + elm.setAttribute('data-opacity', color.a * 100); + + if(el && el === elm) pointIndex = i; + + } + + if(!radial.hasClass('selected')) { + + gradientPreview.type = 'linear'; + gradientPreview.angle = parseInt(angle.val(), 10).toString(); + + } + else { + + gradientPreview.type = 'radial'; + gradientPreview.angle = '0'; + + } + + gradientPreview.colors = ar; + if(selectedColor) selectedColor.removeClass('selected'); + + var gradient = RevColor.processGradient(gradientPreview); + onChange(true, gradient); + + if(!save) { + + gradInput.style.background = gradientView(gradient); + gradOutput.style.background = gradient; + + } + else { + + return [gradientPreview, gradient]; + + } + + } + + function back(i, align) { + + if(i === 0) return false; + + var pnt; + while(i--) { + + pnt = points[i]; + if(pnt.align !== align) return pnt; + + } + + return false; + + } + + function front(i, align, len) { + + if(i === len) return false; + + var pnt; + while(i++ < len) { + + pnt = points[i]; + if(pnt.align !== align) return pnt; + + } + + return false; + + } + + function dist(px, bx, ex, bv, ev) { + + return Math.max(Math.min(Math.round(Math.abs((((px - bx) / (ex - bx)) * (ev - bv)) + bv)), 255), 0); + + } + + function distAlpha(px, bx, ex, bv, ev) { + + return Math.max(Math.min(Math.abs(parseFloat((((px - bx) / (ex - bx)) * (ev - bv)).toFixed(2)) + parseFloat(bv)), 1), 0); + + } + + function adjustAlpha(point, begin, end) { + + var val, + beginAlpha = begin.alpha, + endAlpha = end.alpha; + + if(beginAlpha !== endAlpha) { + + val = distAlpha(point.x, begin.x, end.x, beginAlpha, endAlpha).toFixed(2); + + } + else { + + val = beginAlpha; + + } + + point.alpha = val; + point.color.a = val; + + } + + function adjustColor(point, begin, end) { + + var p = point.color, + bv = begin.color, + ev = end.color; + + if(begin !== end) { + + var px = point.x, + bx = begin.x, + ex = end.x; + + p.r = dist(px, bx, ex, bv.r, ev.r); + p.g = dist(px, bx, ex, bv.g, ev.g); + p.b = dist(px, bx, ex, bv.b, ev.b); + + } + else { + + p.r = bv.r; + p.g = bv.g; + p.b = bv.b; + + } + + } + + function calculatePoints() { + + points = []; + topPoints = []; + botPoints = []; + + groupPoints.each(getPoints); + points.sort(sortPoints); + + var len = points.length, + iLen = len - 1, + point, + begin, + tpe, + end; + + for(var i = 0; i < len; i++) { + + point = points[i]; + tpe = point.align; + + begin = back(i, tpe); + if(begin === false) begin = front(i, tpe, iLen); + + end = front(i, tpe, iLen); + if(end === false) end = back(i, tpe); + + if(tpe === 'bottom') adjustAlpha(point, begin, end); + else adjustColor(point, begin, end); + + } + + points.sort(sortPoints); + + } + + function sortPoints(a, b) { + + return a.x < b.x ? -1 : a.x > b.x ? 1 : 0; + + } + + function getPoints(i) { + + var rgba = RevColor.rgbValues(getAttribute(this, 'data-color'), 4), + align = this.className.search('bottom') !== -1 ? 'bottom' : 'top', + alpha = rgba[3].replace(/\.?0*$/, '') || 0, + pos = parseInt(this.style.left, 10); + + if(onReverse) { + + if(pos < 50) pos += (50 - pos) * 2; + else pos -= (pos - 50) * 2; + + this.style.left = pos + '%'; + this.setAttribute('data-location', pos); + + } + + points[i] = { + + el: this, + x: pos, + alpha: alpha, + align: align, + color: { + + r: parseInt(rgba[0], 10), + g: parseInt(rgba[1], 10), + b: parseInt(rgba[2], 10), + a: alpha, + position: pos, + align: align + + } + + }; + + if(curPoint && curPoint[0] !== this) { + + if(align === 'bottom') botPoints[botPoints.length] = pos; + else topPoints[topPoints.length] = pos; + + } + + } + + function updateWheel(val) { + + val = typeof val !== 'undefined' ? val : parseInt(angle.val(), 10); + wheelPoint[0].style.transform = 'rotate(' + val + 'deg)'; + + } + + function onAngleChange(e, dir, wheel) { + + var isWheel = typeof wheel !== 'undefined', + val = isWheel ? wheel : parseInt(angle.val(), 10), + changed, + value; + + if(e && e.type === 'keyup') { + + changed = !isNaN(val) && val >= -360 && val <= 360; + value = val; + + } + else { + + var oValue = parseInt(angle.data('orig-value'), 10); + + if(!val) val = '0'; + if(isNaN(val) || val < -360 || val > 360) val = oValue; + if(val !== oValue) { + + value = val; + changed = true; + angle.val(getDegree(val)); + + if(!isWheel) { + + val = dir || val; + directions.removeClass('selected'); + $('.rev-cpicker-orientation[data-direction="' + val + '"]').addClass('selected'); + + } + + } + + } + + if(changed || dir) { + + if(value) updateWheel(value); + buildGradientOutput(); + + } + + } + + function onArrowClick() { + + var $this = $(this); + + if(this.className.search('down') !== -1) { + + $this.parent().addClass('active'); + $this.closest('.rev-cpicker-presets').addClass('active'); + $(this.id.replace('-btn', '')).addClass('active'); + gradientsOpen = cPicker.hasClass('gradient-view'); + + } + else { + + $this.parent().removeClass('active'); + $this.closest('.rev-cpicker-presets').removeClass('active'); + $(this.id.replace('-btn', '')).removeClass('active'); + gradientsOpen = false; + + } + + } + + function onDrag(e, ui) { + + var pos = parseInt((Math.round(ui.position.left) / (hitWidth - 2)).toFixed(2) * 100, 10); + if(dragPoint === 'bottom') colorLoc.val(pos + '%').trigger('keyup'); + else opacityLoc.val(pos + '%').trigger('keyup'); + + } + + function onDragStart() { + + var $this = $(this); + dragPoint = $this.hasClass('rev-cpicker-point-bottom') ? 'bottom' : 'top'; + $this.click(); + + } + + function onDragStop() { + + if(dragPoint === 'bottom') colorLoc.trigger('focusout'); + else opacityLoc.trigger('focusout'); + + } + + function updateSlider(opacity) { + + supressOpacity = true; + opacitySlider.slider('value', Math.round((opacity * 0.01) * sliderHeight)); + supressOpacity = false; + + } + + function wheelMove(e) { + + var offset = angleWheel.offset(), + posX = e.pageX - offset.left, + posY = e.pageY - offset.top; + + if(isNaN(posX) || isNaN(posY)) return; + + var val = Math.atan2(posY - centerWheel, posX - centerWheel) * (180 / Math.PI) + 90; + if(val < 0) val += 360; + + val = Math.max(0, Math.min(360, Math.round(val))); + val = 5 * (Math.round(val / 5)); + + supressWheel = true; + onAngleChange(false, false, val); + supressWheel = false; + + } + + function focusPatch(e) { + + e.stopImmediatePropagation(); + + } + + function init() { + + if(!prepped) $.tpColorPicker(); + + currentEditing = document.getElementById('rev-cpicker-current-edit'); + gradOutput = document.getElementById('rev-cpicker-gradient-output'); + gradInput = document.getElementById('rev-cpicker-gradient-input'); + editTitle = document.getElementById('rev-cpicker-edit-title'); + textareas = document.createElement('textarea'); + opacityDelete = $('#rev-cpicker-opacity-delete'); + pointerWrap = $('#rev-cpciker-point-container'); + opacityLoc = $('#rev-cpicker-opacity-location'); + presetGroups = $('.rev-cpicker-presets-group'); + colorOpacity = $('#rev-cpicker-color-opacity'); + radial = $('#rev-cpicker-orientation-radial'); + colorDelete = $('#rev-cpicker-color-delete'); + gradOpacity = $('#rev-cpicker-grad-opacity'); + colorLoc = $('#rev-cpicker-color-location'); + gradCore = $('#rev-cpicker-gradients-core'); + directions = $('.rev-cpicker-orientation'); + gradIris = $('#rev-cpicker-iris-gradient'); + wheelPoint = $('#rev-cpicker-wheel-point'); + gradSection = $('#rev-cpicker-gradients'); + colorIris = $('#rev-cpicker-iris-color'); + gradBtn = $('#rev-cpicker-gradient-btn'); + gradHex = $('#rev-cpicker-gradient-hex'); + colorClear = $('#rev-cpciker-clear-hex'); + reverse = $('#rev-cpicker-meta-reverse'); + hitBottom = $('#rev-cpicker-hit-bottom'); + opacitySlider = $('#rev-cpicker-scroll'); + colorSection = $('#rev-cpicker-colors'); + colorHex = $('#rev-cpicker-color-hex'); + colorBtn = $('#rev-cpicker-color-btn'); + colorBox = $('#rev-cpicker-color-box'); + angle = $('#rev-cpicker-meta-angle'); + angleWheel = $('#rev-cpicker-wheel'); + hitTop = $('#rev-cpicker-hit-top'); + mainContainer = $('#rev-cpicker'); + doc = $(document); + + dragObj.drag = onDrag; + dragObj.stop = onDragStop; + dragObj.start = onDragStart; + + colorBtn.data('state', colorSection.find('.rev-cpicker-color').eq(0).attr('data-color') || '#ffffff'); + gradBtn.data('state', gradSection.find('.rev-cpicker-color').eq(0).attr('data-color') || 'linear-gradient(0deg, rgba(255, 255, 255, 1) 0%, rgba(0, 0, 0, 1) 100%)'); + + mainContainer.draggable({containment: 'window', handle: '.rev-cpicker-draggable', stop: function() { + + mainContainer.css('height', 'auto'); + + }}); + + presetGroups.perfectScrollbar({wheelPropagation: false, suppressScrollX: true}); + + angleWheel.on('mousedown.revcpicker', function(e) { + + directions.removeClass('selected'); + wheelDown = true; + wheelMove(e); + + }).on('mousemove.revcpicker', function(e) { + + if(!wheelDown) return; + wheelMove(e); + + }).on('mouseleave.revcpicker mouseup.revcpicker', function() { + + wheelDown = false; + + }); + + $('.rev-cpicker-main-btn').on('click.revcpicker', function() { + + var $this, + state; + + colorView = this.id.search('gradient') === -1; + if(currentColor) { + + $this = $(this); + state = $this.data('state'); + + } + + if(colorView) { + + if(currentColor) selectedHex = colorHex.val(); + cPicker.removeClass('gradient-view').addClass('color-view'); + + } + else { + + if(currentColor) selectedHex = state; + + cPicker.removeClass('color-view').addClass('gradient-view'); + if(!gradViewed) gradCore.children('.rev-cpicker-color').not('.blank').eq(0).click(); + + } + + presetGroups.perfectScrollbar('update'); + if(state) { + + var isTrans = state === 'transparent', + val = !isTrans ? state : ''; + + if(!isTrans) currentColor[0].style.background = val; + else currentColor.css('background', val); + + supressCheck = true; + $('.rev-cpicker-color').not('.blank').each(checkPreset); + supressCheck = false; + + doc.trigger('revcolorpickerupdate', [currentInput, state]); + + } + + }); + + $('#rev-cpicker-check').on('click.revcipicker', function() { + + var ar, + color, + changed; + + if(cPicker.hasClass('color-view')) { + + var hex = colorHex.val(), + opacity = colorOpacity.val(); + + currentInput.removeData('gradient'); + if(hex === 'transparent') color = 'transparent'; + else if(opacity === '100%') color = RevColor.sanitizeHex(hex); + else color = RevColor.processRgba(hex, opacity); + ar = [currentInput, color, false]; + + } + else { + + deactivate(); + + var grad = buildGradientOutput(false, false, true), + obj = $.extend({}, grad[0]), + clr = grad[1]; + + currentInput.data('gradient', clr); + color = JSON.stringify(obj).replace(/\"/g, '&'); + ar = [currentInput, clr, obj]; + + } + + changed = ar[1] !== openingValue; + if(changed) { + + currentInput.attr('data-color', ar[1]).val(color).change(); + doc.trigger('revcolorpicker', ar); + if(changeCallback) changeCallback(ar[0], ar[1], ar[2]); + + } + + onClose(false, changed); + + }); + + cPicker.on('click.revcpicker', function(e) { + + if(cPicker.hasClass('open')) { + + var targt = e.target, + $this = $(targt), + ids = targt.id, + isTarget = targt.className.search('rev-cpicker-point') !== -1 || + ids === 'rev-cpicker-section-right' || ids.search('hit') !== -1 || + $this.closest('#rev-cpicker-section-right, #rev-cpicker-point-wrap').length; + + if(isTarget) { + + if($this.attr('type') === 'text') { + + isTarget = !$this.attr('disabled'); + + } + else if(ids === 'rev-cpicker-check-gradient') { + + isTarget = false; + + } + + } + + if(!isTarget) deactivate(); + + } + else if(wheelActive && /wheel|angle|reverse/.test(e.target.id) === false) { + + if(e.target.id.search('radial') === -1) { + + $('.rev-cpicker-orientation[data-direction="' + parseInt(angle.val()) + '"]').addClass('selected'); + + } + + angleWheel.removeClass('active'); + wheelActive = false; + + } + + }); + + $('.rev-cpicker-close').on('click.revcpicker', onClose); + + colorIris.wpColorPicker({palettes: false, width: 267, border: false, hide: false, change: function(e, ui) { + + var val = ui.color.toString(); + this.value = val; + + colorHex.val(val); + if(!supressColor) { + + var opacity = colorOpacity.val(); + if(parseInt(opacity, 10) === 0) val = 'transparent'; + onChange(false, val, opacity); + + if(selectedColor) { + + selectedColor.removeClass('selected'); + selectedColor = false; + + } + + } + + }}); + + gradIris.wpColorPicker({palettes: false, height: 250, border: false, hide: false, change: function(e, ui) { + + var val = ui.color.toString(); + this.value = val; + + gradHex.val(val); + colorBox.css('background', val); + curSquare.style.backgroundColor = val; + curCorner.style.borderBottomColor = val; + + var rgba = RevColor.processRgba(val, 100), + parsed = RevColor.rgbValues(rgba, 4), + color = gradientPreview.colors[pointIndex]; + + color.r = parsed[0]; + color.g = parsed[1]; + color.b = parsed[2]; + color.a = parsed[3]; + + curPoint.attr('data-color', rgba); + buildGradientOutput(); + + }}); + + opacitySlider.slider({orientation: 'vertical', max: sliderHeight, value: sliderHeight, + + start: function() { + + isTransparent = colorHex.val() === 'transparent'; + + }, + + slide: function(e, ui) { + + if(!supressOpacity) { + + var opacity = parseInt((ui.value / sliderHeight).toFixed(2) * 100, 10), + val; + + if(isTransparent) { + + val = opacity ? '#ffffff' : 'transparent'; + colorHex.val(val); + + } + + if(opacity === 0) val = 'transparent'; + onChange(false, val, opacity || 'transparent'); + colorOpacity.val(opacity + '%'); + + } + + } + + }); + + $('.rev-cpicker-point-location').on('keyup.revcpicker focusout.revcpicker', function(e) { + + if(!curPoint) return; + + var align = curPoint.hasClass('rev-cpicker-point-bottom') ? 'bottom' : 'top', + locations = align === 'bottom' ? botPoints : topPoints, + input = align === 'bottom' ? colorLoc : opacityLoc, + point = input.val().replace('%', '') || '0', + evt = e.type, + dir; + + if(isNaN(point)) point = evt === 'keyup' ? '0' : curPoint.attr('data-location'); + point = Math.max(0, Math.min(100, parseInt(point, 10))); + + dir = point < 50 ? 1 : -1; + + while(locations.indexOf(point) !== -1) point += dir; + + if(evt === 'focusout') { + + input.val(point + '%'); + curPoint.attr('data-location', point); + + } + + curPoint.css('left', point + '%'); + buildGradientOutput(); + + }).on('focusin.revcpicker', focusPatch); + + $('body').on('click.revcpicker', '.rev-cpicker-point', function() { + + pointerWrap.find('.rev-cpicker-point.active').removeClass('active'); + curPoint = $(this).addClass('active'); + + curSquare = curPoint.children('.rev-cpicker-point-square')[0]; + curCorner = curPoint.children('.rev-cpicker-point-triangle')[0]; + + buildGradientOutput(this); + selectedColor = false; + + var grad = activatePoint(); + if(grad[0]) gradIris.val(grad[1]).change(); + + }).on('mousedown.revcpicker', '.rev-cpicker-point', function(e) { + + curPoint = $(this).data('mousestart', e.pageY); + + }).on('mousemove.revcpicker', function(e) { + + if(!curPoint || !curPoint.data('mousestart')) return; + + var start = curPoint.data('mousestart'), + posY = e.pageY; + + if(curPoint.hasClass('rev-cpicker-point-bottom')) { + + if(posY > start && posY - start > warningBuffer && colorDelete.hasClass('active')) { + curPoint.addClass('warning'); + } + else { + curPoint.removeClass('warning'); + } + + } + else { + + if(start > posY && start - posY > warningBuffer && opacityDelete.hasClass('active')) { + curPoint.addClass('warning'); + } + else { + curPoint.removeClass('warning'); + } + + } + + }).on('mouseup.revcpicker', function(e) { + + if(!curPoint || !curPoint.data('mousestart')) return; + + var start = curPoint.data('mousestart'), + end = e.pageY; + + curPoint.removeData('mousestart'); + if(curPoint.hasClass('rev-cpicker-point-bottom')) { + + if(end > start && end - start > deleteBuffer && colorDelete.hasClass('active')) { + colorDelete.click(); + } + else { + curPoint.removeClass('warning'); + } + + } + else { + + if(start > end && start - end > deleteBuffer && opacityDelete.hasClass('active')) { + opacityDelete.click(); + } + else { + curPoint.removeClass('warning'); + } + + } + + }).on('change.revcpicker', '.rev-cpicker-component', function() { + + var $this = $(this), + val = $this.data('gradient') || $this.val() || 'transparent'; + + if(val === 'transparent' || RevColor.transparentRgba(val)) val = ''; + $this.data('tpcp').css('background', val); + + }).on('keypress.revcpicker', function(e) { + + if(cPicker.hasClass('active')) { + + var key = e.which; + if(key == 27) { + + onClose(); + + } + else if(key == 13 && inFocus) { + + inFocus.blur(); + + } + + } + + }).on('click.revcpicker', '.rev-cpicker-color:not(.blank)', function() { + + if(selectedColor) { + + if(selectedColor[0] === this && selectedColor.hasClass('selected')) return; + selectedColor.removeClass('selected'); + + } + + selectedColor = $(this); + + var ids = selectedColor.parent()[0].id, + tpe = ids.search('core') !== -1 ? 'core' : 'custom', + view = ids.search('colors') !== -1 ? 'colors' : 'gradients', + btn = $('#rev-cpicker-' + view + '-' + tpe + '-btn'); + + if(btn.hasClass('active')) btn.find('.rev-cpicker-arrow-up').click(); + if(cPicker.hasClass('color-view')) { + + var val = selectedColor.attr('data-color'); + + supressColor = true; + colorIris.val(val).change(); + if(colorHex.val() === 'transparent') colorHex.val(val.toLowerCase()); + supressColor = false; + + var opacity = colorOpacity.val(); + if(parseInt(opacity, 10) === 0) val = 'transparent'; + onChange(false, val, opacity); + + } + else { + + hitTop.removeClass('full'); + hitBottom.removeClass('full'); + + setValue(selectedColor.data('gradient'), true); + reverse.removeClass('checked'); + gradCore.find('.rev-cpicker-color.selected').removeClass('selected'); + + } + + selectedColor.addClass('selected'); + + }).on('mouseover.revcpicker', '.rev-cpicker-color:not(.blank)', function() { + + if(gradientsOpen) gradOutput.style.background = getAttribute(this, 'data-color'); + + }).on('mouseout.revcpicker', '.rev-cpicker-color:not(.blank)', function() { + + if(gradientsOpen) buildGradientOutput(); + + }).on('click.revcpicker', '.rev-cpicker-delete', function() { + + if(!onAjax) { + + console.log('Ajax callback not defined'); + return; + + } + + if(window.confirm(document.getElementById('rev-cpicker-remove-delete').innerHTML)) { + + cPicker.addClass('onajax onajaxdelete'); + + var $this = $(this), + colr = $this.parent(), + titl = colr.attr('data-title') || ''; + + if(!titl) { + + console.log('Preset does not have a name/title'); + return; + + } + + var group = $this.closest('.rev-cpicker-presets-group'), + ids = group[0].id, + tpe = ids.search('colors') !== -1 ? 'colors' : 'gradients'; + + doc.off('revcpicker_onajax_delete.revcpicker').on('revcpicker_onajax_delete.revcpicker', function(evt, err) { + + if(err) console.log(err); + + var group = $this.closest('.rev-cpicker-presets-group'), + scroller = group.find('.ps-scrollbar-x-rail'), + btn = $('#' + ids + '-btn'); + + colr.remove(); + + if(!checkRows.call(group[0])) { + + $('').insertBefore(scroller); + + } + else { + + group.perfectScrollbar('update'); + + } + + if(checkGroup.call(group[0]) < presetColumns + 1) { + + $('').insertBefore(scroller); + if(btn.hasClass('active')) btn.children('.rev-cpicker-arrow-up').click(); + + } + + cPicker.removeClass('onajax onajaxdelete'); + + }); + + titl = $.trim(titl.replace(/\W+/g, '_')).replace(/^\_|\_$/g, '').toLowerCase(); + onAjax('delete', titl, tpe, 'revcpicker_onajax_delete', currentInput); + + } + + return false; + + }); + + $('.rev-cpicker-save-preset-btn').on('click.revcpicker', function() { + + if(!onAjax) { + + console.log('Ajax callback not defined'); + return; + + } + + var presetGroup, + duplicateTitle, + $this = $(this), + input = $this.closest('.rev-cpicker-presets-save-as').find('.rev-cpicker-preset-save'), + titl = input.val(); + + if(!titl || !isNaN(titl)) { + + alert($this.attr('data-message')); + return; + + } + + presetGroup = cPicker.hasClass('color-view') ? 'colors' : 'gradients'; + titl = $.trim(titl.replace(/\W+/g, '_')).replace(/^\_|\_$/g, '').toLowerCase(); + + $('#rev-cpicker-' + presetGroup + '-custom').find('.rev-cpicker-color').not('.blank').each(function() { + + var atr = $.trim(getAttribute(this, 'data-title').replace(/\W+/g, '_')).replace(/^\_|\_$/g, '').toLowerCase(); + if(atr === titl) { + + alert($this.attr('data-message')); + duplicateTitle = true; + return false; + + } + + }); + + if(duplicateTitle) return; + cPicker.addClass('onajax onajaxsave'); + + var newColorValue = {}, + color, + grad; + + if(presetGroup === 'colors') { + + var hex = colorHex.val(), + opacity = colorOpacity.val(); + + if(hex === 'transparent') color = 'transparent'; + else if(opacity === '100%') color = RevColor.sanitizeHex(hex); + else color = RevColor.processRgba(hex, opacity); + + } + else { + + grad = gradOutput.style.background; + color = $.extend({}, buildGradientOutput(false, false, true)[0]); + + } + + newColorValue[titl] = color; + doc.off('revcpicker_onajax_save.revcpicker').on('revcpicker_onajax_save.revcpicker', function(evt, err) { + + if(err) { + + cPicker.removeClass('onajax onajaxsave'); + alert($this.attr('data-message')); + return; + + } + + var pre = $(newPreset(newColorValue, false, ' rev-picker-color-custom', grad)), + group = $('#rev-cpicker-' + presetGroup + '-custom'), + box = group.find('.rev-cpicker-color.blank'), + btn = $('#' + group[0].id + '-btn'); + + + if(box.length) pre.insertBefore(box.eq(0)); + else pre.insertBefore(group.find('.ps-scrollbar-x-rail')); + + $('#rev-cpicker-' + presetGroup + '-custom-btn').click(); + var len = checkGroup.call(group[0]); + + if(len > 6) { + + if(box.length) box.last().remove(); + btn.addClass('active').children('.rev-cpicker-arrow-down').click(); + group.perfectScrollbar('update'); + + } + + pre.click(); + cPicker.removeClass('onajax onajaxsave'); + + }); + + onAjax('save', newColorValue, presetGroup, 'revcpicker_onajax_save', currentInput); + + }); + + $('.rev-cpicker-preset-title').on('click.revcpicker', function() { + + var $this = $(this), + par = $this.parent(), + arrow = $this.hasClass('active') ? 'down' : 'up'; + + onArrowClick.call($this.find('.rev-cpicker-arrow-' + arrow)[0]); + + par.find('.rev-cpicker-preset-title').removeClass('selected'); + $this.addClass('selected'); + + par.find('.rev-cpicker-presets-group').hide(); + document.getElementById(this.id.replace('-btn', '')).style.display = 'block'; + + presetGroups.perfectScrollbar('update'); + + }); + + colorClear.on('click.revcpicker', function() { + + colorOpacity.val('0%'); + updateSlider(0); + colorIris.val(RevColor.defaultValue).change(); + colorHex.val('transparent'); + onChange(false, 'transparent'); + + }); + + cPicker.find('input[type="text"]').on('focusin.revcpicker', function() { + + inFocus = this; + + }).on('focusout.revcpicker', function() { + + inFocus = false; + + }); + + $('.rev-cpicker-input').on('focusin.revcpicker', function() { + + var $this = $(this); + $this.data('orig-value', $this.val()); + + }); + + $('.rev-cpicker-hex').on('focusout.revcpicker', function() { + + var $this, + oVal, + val; + + if(this.id === 'rev-cpicker-color-hex') { + + val = colorHex.val(); + if(val) { + + val = RevColor.sanitizeHex(val); + if(RevColor.isColor.test(val)) { + + colorHex.val(val); + + } + else { + + $this = $(this); + oVal = $this.data('orig-value'); + + if(oVal) { + + val = oVal; + colorHex.val(val); + + } + else { + + colorClear.click(); + return; + + } + + } + + } + else { + + val = 'transparent'; + + } + + colorIris.val(val).change(); + + } + else { + + val = gradHex.val() || RevColor.defaultValue; + val = RevColor.sanitizeHex(val); + + if(!RevColor.isColor.test(val)) { + + $this = $(this); + oVal = $this.data('orig-value'); + val = oVal ? oVal : RevColor.defaultValue; + + } + + gradHex.val(val); + gradIris.val(val).change(); + + } + + }).on('focusin.revcpicker', focusPatch); + + $('#rev-cpciker-clear-gradient').on('click.revcpicker', function() { + + gradIris.val(RevColor.defaultValue).change(); + + }); + + angle.on('keyup.revcpicker focusout.revcpicker', onAngleChange).on('focusin.revcpicker', function() { + + wheelActive = true; + angleWheel.addClass('active'); + + }).on('focusin.revcpicker', focusPatch); + + directions.on('click.revcpicker', function() { + + var $this = $(this), + dir = $this.attr('data-direction'); + + directions.removeClass('selected'); + $this.addClass('selected'); + + if(dir !== 'radial') angle.removeAttr('disabled').val(getDegree(dir)); + else angle.attr('disabled', 'disabled'); + + onAngleChange(false, dir); + + }); + + $('.rev-cpicker-point-delete').on('click.revcpicker', function() { + + if(this.className.search('active') === -1) return; + + var align = curPoint.hasClass('rev-cpicker-point-bottom') ? 'bottom' : 'top', + len = cPicker.find('.rev-cpicker-point-' + align).length; + + if(len > 2) { + + curPoint.draggable('destroy').remove(); + groupPoints = pointerWrap.children(); + + cPicker.click(); + buildGradientOutput(); + + } + + if(len <= maxPoints) { + + if(align === 'bottom') hitBottom.removeClass('full'); + else hitTop.removeClass('full'); + + } + + }); + + $('.rev-cpicker-preset-save').on('focusin.revcpicker', focusPatch); + $('.rev-cpicker-opacity-input').on('keyup.revcpicker focusout.revcpicker', function(e) { + + var isColor = this.id.search('grad') === -1, + $this = isColor ? colorOpacity : gradOpacity, + opacity = $this.val().replace('%', ''), + evt = e.type, + clr; + + if(isNaN(opacity)) opacity = evt === 'keyup' ? '0' : $(this).data('orig-value'); + opacity = Math.max(0, Math.min(100, opacity)); + + if(evt === 'focusout') { + + $this.val(opacity + '%'); + if(!isColor) curPoint.attr('data-opacity', opacity); + + } + + if(isColor) { + + var opaque = parseInt(opacity, 10), + val = opaque !== 0 ? false : 'transparent'; + + onChange(false, val, opacity); + updateSlider(opacity); + + } + else { + + var parsed = RevColor.rgbValues(curPoint.attr('data-color'), 3), + color = gradientPreview.colors[pointIndex]; + + opacity = (parseInt(opacity, 10) * 0.01).toFixed(2).replace(/\.?0*$/, ''); + + color.r = parsed[0]; + color.g = parsed[1]; + color.b = parsed[2]; + color.a = opacity; + + clr = RevColor.rgbaString(color.r, color.g, color.b, opacity); + curPoint.attr('data-color', clr); + buildGradientOutput(); + + clr = 'rgba(0, 0, 0, ' + opacity + ')'; + curSquare.style.backgroundColor = clr; + curCorner.style.borderTopColor = clr; + + } + + }).on('focusin.revcpicker', focusPatch); + + $('.rev-cpicker-builder-hit').on('click.revcpicker', function(e) { + + if(!points) calculatePoints(); + + var hit = parseInt(((e.pageX - hitTop.offset().left) / hitWidth).toFixed(2) * 100, 10), + align = this.id.search('bottom') !== -1 ? 'bottom' : 'top', + locations = align === 'bottom' ? botPoints : topPoints, + dir = hit < 50 ? 1 : -1; + + while(locations.indexOf(hit) !== -1) hit += dir; + if(align === 'bottom') { + + if(cPicker.find('.rev-cpicker-point-bottom').length < maxPoints) { + + clonePoint(align, hit); + selectedColor = false; + + } + else { + + hitBottom.addClass('full'); + + } + + } + else { + + if(cPicker.find('.rev-cpicker-point-top').length < maxPoints) { + + clonePoint(align, hit); + selectedColor = false; + + } + else { + + hitTop.addClass('full'); + + } + + } + + }); + + reverse.on('click.revcpicker', function() { + + var rev = !reverse.hasClass('checked'); + + if(rev) reverse.addClass('checked'); + else reverse.removeClass('checked'); + + buildGradientOutput(false, true); + + }); + + $('.rev-cpicker-arrow').on('click.revcpicker', onArrowClick); + inited = true; + + } + + function addPresets(sets) { + + var settings = $.extend({}, sets), + core = settings.core || {}, + custom = settings.custom, + container, + preset, + colors, + len, + el; + + if(!customAdded || custom) { + + len = 4; + customAdded = custom; + custom = customAdded || {'colors': [], 'gradients': []}; + + } + else { + + len = 2; + + } + + if(!core.colors) core.colors = defColors; + if(!core.gradients) core.gradients = defGradients; + + for(var i = 0; i < len; i++) { + + switch(i) { + + case 0: + + container = 'colors-core'; + colors = core.colors; + + break; + + case 1: + + container = 'gradients-core'; + colors = core.gradients; + + break; + + case 2: + + container = 'colors-custom'; + colors = custom.colors; + + break; + + case 3: + + container = 'gradients-custom'; + colors = custom.gradients; + + break; + + } + + preset = writePresets(container, colors.slice() || []); + el = $('#' + preset[0]); + el.find('.rev-cpicker-color').remove(); + el.prepend(preset[1]); + + } + + } + + $.tpColorPicker = function(settings) { + + if(!bodies) { + + bodies = $('body'); + cPicker = $('
      ' + markup + '
      ').appendTo(bodies); + + } + + if(!settings) settings = {}; + if(settings.core) { + + if(settings.core.colors) defColors = settings.core.colors; + if(settings.core.gradients) defGradients = settings.core.gradients; + + } + + addPresets(settings); + + if(!prepped) { + + writeLanguage(settings.language || lang); + defMode = settings.mode || 'full'; + + } + else { + + presetGroups.perfectScrollbar('update'); + if(settings.mode) defMode = settings.mode; + if(settings.language) writeLanguage(settings.language); + + } + + if(settings.init) onInit = settings.init; + if(settings.onAjax) defAjax = settings.onAjax; + if(settings.onEdit) defEdit = settings.onEdit; + if(settings.change) defChange = settings.change; + if(settings.cancel) defCancel = settings.cancel; + if(settings.widgetId) defWidgetId = settings.widgetId; + if(settings.defaultValue) RevColor.defaultValue = settings.defaultValue; + if(settings.wrapClasses) defaultClasses = settings.wrapClasses; + if(settings.appendedHtml) appendedHTML = settings.appendedHtml; + + prepped = true; + + }; + + var ColorPicker = { + + refresh: function() { + + var $this = $(this); + if($this.hasClass('rev-cpicker-component')) { + + var settings = $this.data('revcp') || {}, + val = $this.val() || settings.defaultValue || RevColor.defaultValue, + colorValue = RevColor.process(val); + + val = colorValue[0]; + colorValue = colorValue[1] !== 'rgba' || !RevColor.transparentRgba(val, true) ? val : ''; + + if(val !== 'transparent') $this.data('tpcp')[0].style.background = colorValue; + else $this.data('tpcp').css('background', ''); + + $this.attr('data-color', val).data('hex', val); + + } + + }, + + destroy: function() { + + var $this = $(this).removeData(); + $this.closest('.rev-cpicker-master-wrap').removeData().remove(); + + } + + }; + + function isFalsey(val) { + + if(/(?=.*false)(?=.*rgba)/.test(val)) return val.replace('false', '1'); + return false; + + } + + $.fn.tpColorPicker = function(settings) { + + if(settings && typeof settings === 'string') return this.each(ColorPicker[settings]); + + return this.each(function() { + + var $this = $(this); + if($this.hasClass('rev-cpicker-component')) { + + $this.tpColorPicker('refresh'); + return; + + } + + var wrap = $('').data('revcolorinput', $this), + box = $(''), + btn = $(''), + cls = $this.attr('data-wrap-classes'), + wrapper = $this.attr('data-wrapper'), + ids = $this.attr('data-wrap-id'), + txt = $this.attr('data-title'), + skin = $this.attr('data-skin'), + val = $this.val() || '', + falsey = isFalsey(val), + colorValue, + defValue; + + if(falsey) { + + val = falsey; + $this.val(falsey); + + } + + wrap.insertBefore($this).append([box, btn, $this]); + + if(settings && $.isPlainObject(settings)) { + + if(!wrapper) wrapper = settings.wrapper; + if(!cls) cls = settings.wrapClasses; + if(!skin) skin = settings.skin; + if(!ids) ids = settings.wrapId; + if(!txt) txt = settings.title; + + defValue = settings.defaultValue; + var sets = $this.data('revcp'); + + if(sets) settings = $.extend({}, sets, settings); + $this.data('revcp', settings); + + } + + if(!cls) cls = defaultClasses; + if(cls) wrap.addClass(cls); + if(ids) wrap.attr('id', ids); + if(!val) { + + val = defValue || RevColor.defaultValue; + $this.val(val); + + } + + colorValue = RevColor.process(val); + val = colorValue[0]; + + if(colorValue.length === 3) $this.val(val); + colorValue = colorValue[1] !== 'rgba' || !RevColor.transparentRgba(val, true) ? val : ''; + + if(colorValue !== 'transparent') box[0].style.background = colorValue; + + btn[0].innerHTML = txt || langColor || lang.color; + $this.attr({type: 'hidden', 'data-color': val}).data('tpcp', box).addClass('rev-cpicker-component'); + + if(skin) wrap.addClass(skin); + if(!wrapper) { + + wrap.addClass('rev-cpicker-master-wrap'); + + } + else { + + wrapper = $(wrapper).addClass('rev-cpicker-master-wrap'); + wrap.wrap(wrapper); + + } + + var initCallback = settings ? settings.init || onInit : false; + if(initCallback) initCallback(wrap, $this, val, settings); + + }); + + }; + + $(function() { + + $('body').on('click.revcpicker', '.rev-colorpicker', function() { + + if(!inited) init(); + currentInput = $(this).data('revcolorinput'); + + var widgetId = currentInput.attr('data-widget-id'), + html = currentInput.attr('data-appended-html'), + editing = currentInput.attr('data-editing'), + data = currentInput.attr('data-colors'), + mode = currentInput.attr('data-mode'), + settings = currentInput.data('revcp'), + lang = currentInput.attr('data-lang'), + settingsGradients, + customGradients, + settingsColors, + dataGradients, + customColors, + dataColors, + presets, + change, + cancel, + value, + edit, + ajax, + val; + + if(data) { + + data = JSON.parse(data.replace(/\&/g, '"')); + if(data.colors) dataColors = data.colors; + if(data.gradients) dataGradients = data.gradients; + + } + + if(settings) { + + var colorSets = settings.colors; + if(colorSets) { + + if(colorSets.core) { + + settingsColors = colorSets.core.colors; + settingsGradients = colorSets.core.gradients; + + } + + if(colorSets.custom) { + + customColors = colorSets.custom.colors; + customGradients = colorSets.custom.gradients; + + } + + } + + edit = settings.onEdit; + ajax = settings.onAjax; + change = settings.change; + cancel = settings.cancel; + + if(!lang) lang = settings.lang; + if(!mode) mode = settings.mode; + if(!html) html = settings.appendedHtml; + if(!editing) editing = settings.editing; + if(!widgetId) widgetId = settings.widgetId; + + } + + if(settingsGradients || settingsColors || customGradients || customColors || dataGradients || dataColors) { + + presets = {}; + if(settingsGradients || settingsColors || dataGradients || dataColors) { + + presets.core = { + + colors: dataColors || settingsColors || defColors, + gradients: dataGradients || settingsGradients || defGradients + + }; + + } + + if(customGradients || customColors) { + + presets.custom = { + + colors: customColors || defColors, + gradients: customGradients || defGradients + + }; + + } + + addPresets(presets); + + } + + if(!widgetId) widgetId = defWidgetId; + if(widgetId) cPicker[0].id = widgetId; + + if(!html) html = appendedHTML; + if(html) appended = $(html).appendTo(mainContainer); + + if(lang) writeLanguage(lang); + if(!mode) mode = defMode; + + if(!editing) { + + editing = ''; + editTitle.style.visibility = 'hidden'; + + } + else { + + editTitle.style.visibility = 'visible'; + + } + + currentEditing.innerHTML = editing; + + if(mode === 'single' || mode === 'basic') { + + isFull = false; + gradBtn.hide(); + colorBtn.show(); + if(mode === 'basic') cPicker.addClass('is-basic'); + + } + else { + + isFull = true; + gradBtn.show(); + colorBtn.show(); + + } + + val = currentInput.val() || currentInput.attr('data-color') || RevColor.defaultValue; + if(val.split('||').length > 1) { + + val = RevColor.joinToRgba(val); + currentInput.val(val); + + } + + value = setValue(val); + openingValue = value[0]; + + onEdit = edit || defEdit; + onAjax = ajax || defAjax; + onCancel = cancel || defCancel; + changeCallback = change || defChange; + + if(value[1] !== 'gradient') colorBtn.data('state', openingValue); + else gradBtn.data('state', openingValue); + + bodies.addClass('rev-colorpicker-open'); + currentColor = currentInput.data('tpcp'); + cPicker.data('revcpickerinput', currentInput).addClass('active').show(); + + presetGroups.each(checkGroup).perfectScrollbar('update'); + openingColor = currentInput.attr('data-color'); + + selectedHex = currentInput.data('hex'); + $('.rev-cpicker-color').not('.blank').each(checkPreset); + + }); + + }); + +})(jQuery !== 'undefined' ? jQuery : false); + + + + + + + + + + + diff --git a/think.greaterchiangmai.com/public/revolution/js/tp-color-picker.min.js b/think.greaterchiangmai.com/public/revolution/js/tp-color-picker.min.js new file mode 100644 index 0000000..83ab3b0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/js/tp-color-picker.min.js @@ -0,0 +1,7 @@ +/************************************************************************** + * tp-color-picker.js - Color Picker Plugin for Revolution Slider + * @version: 1.0.4 (7.9.2017) + * @author ThemePunch +**************************************************************************/ + +window.RevColor={defaultValue:"#ffffff",isColor:/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i,get:function(e){return e?RevColor.process(e,!0)[0]:"transparent"},parse:function(e,r,a){e=RevColor.process(e,!0);var t=[];return t[0]=r?r+": "+e[0]+";":e[0],a&&(t[1]=e[1]),t},convert:function(e,r){if(!e||"string"!=typeof e)return RevColor.defaultValue;if("transparent"===e)return e;if(-1!==e.search(/\[\{/)||-1!==e.search("gradient"))return RevColor.process(e,!0)[0];if(void 0===r||isNaN(r))return RevColor.process(e,!0)[0];if((r=parseFloat(r))<=1&&(r*=100),0===(r=Math.max(Math.min(parseInt(r,10),100),0)))return"transparent";try{return-1!==e.search("#")||e.length<8?(RevColor.isColor.test(e)||(e=e.replace(/[^A-Za-z0-9#]/g,"")),RevColor.processRgba(RevColor.sanitizeHex(e),r)):(e=RevColor.rgbValues(e,3),RevColor.rgbaString(e[0],e[1],e[2],.01*r))}catch(e){return RevColor.defaultValue}},process:function(e,r){if("string"!=typeof e)return r&&(e=RevColor.sanitizeGradient(e)),[RevColor.processGradient(e),"gradient",e];if("transparent"===e.trim())return["transparent","transparent"];if(-1===e.search(/\[\{/))return-1!==e.search("#")?[RevColor.sanitizeHex(e),"hex"]:-1!==e.search("rgba")?[e.replace(/\s/g,"").replace(/false/g,"1"),"rgba"]:-1!==e.search("rgb")?[e.replace(/\s/g,""),"rgb"]:RevColor.isColor.test(e)?[e,"hex"]:["transparent","transparent",!0];try{return e=JSON.parse(e.replace(/\&/g,'"')),r&&(e=RevColor.sanitizeGradient(e)),[RevColor.processGradient(e),"gradient",e]}catch(e){return console.log("RevColor.process() failed to parse JSON string"),["linear-gradient(0deg, rgba(255, 255, 255, 1) 0%, rgba(0, 0, 0, 1) 100%)","gradient",{type:"linear",angle:"0",colors:[{r:"255",g:"255",b:"255",a:"1",position:"0",align:"bottom"},{r:"0",g:"0",b:"0",a:"1",position:"100",align:"bottom"}]}]}},transparentRgba:function(e,r){return!(!r&&"rgba"!==RevColor.process(e)[1])&&"0"===RevColor.rgbValues(e,4)[3]},rgbValues:function(e,r){3===(e=e.substring(e.indexOf("(")+1,e.lastIndexOf(")")).split(",")).length&&4===r&&(e[3]="1");for(var a=0;a0&&(n+=", "),n+="rgba("+(r=o[s]).r+", "+r.g+", "+r.b+", "+r.a+") "+r.position+"%";return t+i+n+")"},sanitizeHex:function(e){if(3===(e=e.replace("#","").trim()).length){var r=e.charAt(0),a=e.charAt(1),t=e.charAt(2);e=r+r+a+a+t+t}return"#"+e},sanitizeGradient:function(e){for(var r,a=e.colors,t=a.length,i=[],o=0;o';return a||(v+=''),v+="",n=e(v),c&&n.data("gradient",c),n[0]}return n=document.createElement("span"),n.className="rev-cpicker-color blank",n}function l(){var r=c(this,"data-color").toLowerCase(),a=!kr&&r===pr.toLowerCase();if(r===ir||a){var t=e(this);return t.closest(".rev-cpicker-presets-group").find(".rev-cpicker-color.selected").removeClass("selected"),Cr=t,kr&&!De&&d(Cr.data("gradient"),!0),Cr.addClass("selected"),!1}}function p(e,r){for(var a=document.createDocumentFragment(),t=-1!==e.search("core"),i=t?"":" rev-picker-color-custom",o=r.length,c=-1!==e.search("colors")?Ar:Mr,n=Math.max(Math.ceil(o/Hr),c),l=0;lr)return a}function b(r,a){var t=g(r,a).color,i=u(t,r,!0),o=h(r,a,f(t,!0),i);xe&&xe.removeClass("active"),xe=e(o).addClass("active").appendTo(Ze).draggable(Er),He=xe.children(".rev-cpicker-point-square")[0],Se=xe.children(".rev-cpicker-point-triangle")[0],Ue=Ze.children();var c=k(a);N(o),"bottom"===r&&he.val(c[1]).change()}function k(e){void 0===e&&(e=ee[Je].x);var r=xe.attr("data-color"),a=xe.hasClass("rev-cpicker-point-bottom");if(a)hr.hasClass("active")&&(Qe.attr("disabled","disabled"),Ye.attr("disabled","disabled"),hr.removeClass("active")),r=RevColor.rgbaToHex(r)[0],ke.css("background",r),me.removeAttr("disabled").val(e+"%"),ce.find(".rev-cpicker-point-bottom").length>2&&er.addClass("active"),ce.addClass("open");else{er.hasClass("active")&&(ke.css("background",""),me.attr("disabled","disabled"),er.removeClass("active"));var t=RevColor.getOpacity(r);Qe.attr("data-opacity",t).val(t).removeAttr("disabled"),Ye.val(e+"%").removeAttr("disabled"),ce.find(".rev-cpicker-point-top").length>2&&hr.addClass("active"),ce.removeClass("open")}return[a,r]}function u(e,r,a){return"bottom"===r?"rgb("+e.r+","+e.g+","+e.b+")":"rgba(0, 0, 0, "+(a?"1":e.a)+")"}function f(e,r){var a=r?"1":e.a;return"rgba("+e.r+","+e.g+","+e.b+","+a+")"}function m(e){for(var r,a,t=document.createDocumentFragment(),i=e.length,o=0;o':'',o}function C(e){return e&&"radial"!==e||(e="0"),Ae.innerHTML=e+"°",Ae.value}function x(){xe&&(xe.removeClass("active"),xe=!1),me.attr("disabled","disabled"),Qe.attr("disabled","disabled"),Ye.attr("disabled","disabled"),hr.removeClass("active"),er.removeClass("active"),ke.css("background",""),ce.removeClass("open")}function y(e,r){ce.removeClass("active is-basic").hide(),Z.removeClass("rev-colorpicker-open"),mr.css({left:"",top:""}),ye&&(ye.remove(),ye=!1),Cr?(Cr.hasClass("selected")?(r&&or.data("hex",Cr.attr("data-color").toLowerCase()),Cr.removeClass("selected")):or.removeData("hex"),Cr=!1):or.removeData("hex"),r||(Re&&Re(),lr&&"transparent"!==lr?dr[0].style.background=lr:dr.css("background",""),X.trigger("revcolorpickerupdate",[or,lr])),dr=!1,or=!1}function w(){var r=e(this).children(".rev-cpicker-color").not(".blank").length;return r>Hr?e("#"+this.id+"-btn").addClass("multiplerows"):e("#"+this.id+"-btn").removeClass("multiplerows"),r}function R(){var r,a=e(this),t=-1!==this.id.search("colors")?Ar:Mr,i=a.children(".rev-cpicker-color"),o=i.length,c=Math.ceil(o/Hr),n=t*Hr;o+=1;for(var s=0;s=n&&(p.remove(),r=!0)}return r}function _(){if(-1===this.className.search("blank"))return Ce=!1,!1}function I(r){var a=r.angle;"radial"===r.type&&(a="radial"),$e.removeClass("selected"),e('.rev-cpicker-orientation[data-direction="'+a+'"]').addClass("selected"),Q.val(C(a)),O(a),m(r.colors)}function N(e,r,t){Oe=r,V(),Oe=!1;for(var i,o,c,n=[],s=ee.length,l=0;lr.x?1:0}function E(e){var r=RevColor.rgbValues(c(this,"data-color"),4),a=-1!==this.className.search("bottom")?"bottom":"top",t=r[3].replace(/\.?0*$/,"")||0,i=parseInt(this.style.left,10);Oe&&(i<50?i+=2*(50-i):i-=2*(i-50),this.style.left=i+"%",this.setAttribute("data-location",i)),ee[e]={el:this,x:i,alpha:t,align:a,color:{r:parseInt(r[0],10),g:parseInt(r[1],10),b:parseInt(r[2],10),a:t,position:i,align:a}},xe&&xe[0]!==this&&("bottom"===a?je[je.length]=i:Fe[Fe.length]=i)}function O(e){e=void 0!==e?e:parseInt(Q.val(),10),Be[0].style.transform="rotate("+e+"deg)"}function P(r,a,t){var i,o,c=void 0!==t,n=c?t:parseInt(Q.val(),10);if(r&&"keyup"===r.type)i=!isNaN(n)&&n>=-360&&n<=360,o=n;else{var s=parseInt(Q.data("orig-value"),10);n||(n="0"),(isNaN(n)||n<-360||n>360)&&(n=s),n!==s&&(o=n,i=!0,Q.val(C(n)),c||(n=a||n,$e.removeClass("selected"),e('.rev-cpicker-orientation[data-direction="'+n+'"]').addClass("selected")))}(i||a)&&(o&&O(o),N())}function z(){var r=e(this);-1!==this.className.search("down")?(r.parent().addClass("active"),r.closest(".rev-cpicker-presets").addClass("active"),e(this.id.replace("-btn","")).addClass("active"),ur=ce.hasClass("gradient-view")):(r.parent().removeClass("active"),r.closest(".rev-cpicker-presets").removeClass("active"),e(this.id.replace("-btn","")).removeClass("active"),ur=!1)}function D(e,r){var a=parseInt(100*(Math.round(r.position.left)/(Nr-2)).toFixed(2),10);"bottom"===Ne?me.val(a+"%").trigger("keyup"):Ye.val(a+"%").trigger("keyup")}function L(){var r=e(this);Ne=r.hasClass("rev-cpicker-point-bottom")?"bottom":"top",r.click()}function B(){"bottom"===Ne?me.trigger("focusout"):Ye.trigger("focusout")}function G(e){yr=!0,xr.slider("value",Math.round(.01*e*Tr)),yr=!1}function q(e){var r=Le.offset(),a=e.pageX-r.left,t=e.pageY-r.top;if(!isNaN(a)&&!isNaN(t)){var i=Math.atan2(t-jr,a-jr)*(180/Math.PI)+90;i<0&&(i+=360),i=Math.max(0,Math.min(360,Math.round(i))),i=5*Math.round(i/5),br=!0,P(!1,!1,i),br=!1}}function $(e){e.stopImmediatePropagation()}function J(){ne||e.tpColorPicker(),wr=document.getElementById("rev-cpicker-current-edit"),Ge=document.getElementById("rev-cpicker-gradient-output"),Ee=document.getElementById("rev-cpicker-gradient-input"),ze=document.getElementById("rev-cpicker-edit-title"),Ae=document.createElement("textarea"),hr=e("#rev-cpicker-opacity-delete"),Ze=e("#rev-cpciker-point-container"),Ye=e("#rev-cpicker-opacity-location"),cr=e(".rev-cpicker-presets-group"),sr=e("#rev-cpicker-color-opacity"),re=e("#rev-cpicker-orientation-radial"),er=e("#rev-cpicker-color-delete"),Qe=e("#rev-cpicker-grad-opacity"),me=e("#rev-cpicker-color-location"),we=e("#rev-cpicker-gradients-core"),$e=e(".rev-cpicker-orientation"),he=e("#rev-cpicker-iris-gradient"),Be=e("#rev-cpicker-wheel-point"),Ke=e("#rev-cpicker-gradients"),Ve=e("#rev-cpicker-iris-color"),le=e("#rev-cpicker-gradient-btn"),pe=e("#rev-cpicker-gradient-hex"),qe=e("#rev-cpciker-clear-hex"),se=e("#rev-cpicker-meta-reverse"),Me=e("#rev-cpicker-hit-bottom"),xr=e("#rev-cpicker-scroll"),nr=e("#rev-cpicker-colors"),fe=e("#rev-cpicker-color-hex"),ue=e("#rev-cpicker-color-btn"),ke=e("#rev-cpicker-color-box"),Q=e("#rev-cpicker-meta-angle"),Le=e("#rev-cpicker-wheel"),ae=e("#rev-cpicker-hit-top"),mr=e("#rev-cpicker"),X=e(document),Er.drag=D,Er.stop=B,Er.start=L,ue.data("state",nr.find(".rev-cpicker-color").eq(0).attr("data-color")||"#ffffff"),le.data("state",Ke.find(".rev-cpicker-color").eq(0).attr("data-color")||"linear-gradient(0deg, rgba(255, 255, 255, 1) 0%, rgba(0, 0, 0, 1) 100%)"),mr.draggable({containment:"window",handle:".rev-cpicker-draggable",stop:function(){mr.css("height","auto")}}),cr.perfectScrollbar({wheelPropagation:!1,suppressScrollX:!0}),Le.on("mousedown.revcpicker",function(e){$e.removeClass("selected"),Pe=!0,q(e)}).on("mousemove.revcpicker",function(e){Pe&&q(e)}).on("mouseleave.revcpicker mouseup.revcpicker",function(){Pe=!1}),e(".rev-cpicker-main-btn").on("click.revcpicker",function(){var r;if(De=-1===this.id.search("gradient"),dr&&(r=e(this).data("state")),De?(dr&&(ir=fe.val()),ce.removeClass("gradient-view").addClass("color-view")):(dr&&(ir=r),ce.removeClass("color-view").addClass("gradient-view"),We||we.children(".rev-cpicker-color").not(".blank").eq(0).click()),cr.perfectScrollbar("update"),r){var a="transparent"===r,t=a?"":r;a?dr.css("background",t):dr[0].style.background=t,kr=!0,e(".rev-cpicker-color").not(".blank").each(l),kr=!1,X.trigger("revcolorpickerupdate",[or,r])}}),e("#rev-cpicker-check").on("click.revcipicker",function(){var r,a,t;if(ce.hasClass("color-view")){var i=fe.val(),o=sr.val();or.removeData("gradient"),a="transparent"===i?"transparent":"100%"===o?RevColor.sanitizeHex(i):RevColor.processRgba(i,o),r=[or,a,!1]}else{x();var c=N(!1,!1,!0),n=e.extend({},c[0]),s=c[1];or.data("gradient",s),a=JSON.stringify(n).replace(/\"/g,"&"),r=[or,s,n]}(t=r[1]!==lr)&&(or.attr("data-color",r[1]).val(a).change(),X.trigger("revcolorpicker",r),_r&&_r(r[0],r[1],r[2])),y(!1,t)}),ce.on("click.revcpicker",function(r){if(ce.hasClass("open")){var a=r.target,t=e(a),i=a.id,o=-1!==a.className.search("rev-cpicker-point")||"rev-cpicker-section-right"===i||-1!==i.search("hit")||t.closest("#rev-cpicker-section-right, #rev-cpicker-point-wrap").length;o&&("text"===t.attr("type")?o=!t.attr("disabled"):"rev-cpicker-check-gradient"===i&&(o=!1)),o||x()}else Xe&&!1===/wheel|angle|reverse/.test(r.target.id)&&(-1===r.target.id.search("radial")&&e('.rev-cpicker-orientation[data-direction="'+parseInt(Q.val())+'"]').addClass("selected"),Le.removeClass("active"),Xe=!1)}),e(".rev-cpicker-close").on("click.revcpicker",y),Ve.wpColorPicker({palettes:!1,width:267,border:!1,hide:!1,change:function(e,r){var a=r.color.toString();if(this.value=a,fe.val(a),!gr){var t=sr.val();0===parseInt(t,10)&&(a="transparent"),v(!1,a,t),Cr&&(Cr.removeClass("selected"),Cr=!1)}}}),he.wpColorPicker({palettes:!1,height:250,border:!1,hide:!1,change:function(e,r){var a=r.color.toString();this.value=a,pe.val(a),ke.css("background",a),He.style.backgroundColor=a,Se.style.borderBottomColor=a;var t=RevColor.processRgba(a,100),i=RevColor.rgbValues(t,4),o=Ir.colors[Je];o.r=i[0],o.g=i[1],o.b=i[2],o.a=i[3],xe.attr("data-color",t),N()}}),xr.slider({orientation:"vertical",max:Tr,value:Tr,start:function(){fr="transparent"===fe.val()},slide:function(e,r){if(!yr){var a,t=parseInt(100*(r.value/Tr).toFixed(2),10);fr&&(a=t?"#ffffff":"transparent",fe.val(a)),0===t&&(a="transparent"),v(!1,a,t||"transparent"),sr.val(t+"%")}}}),e(".rev-cpicker-point-location").on("keyup.revcpicker focusout.revcpicker",function(e){if(xe){var r,a=xe.hasClass("rev-cpicker-point-bottom")?"bottom":"top",t="bottom"===a?je:Fe,i="bottom"===a?me:Ye,o=i.val().replace("%","")||"0",c=e.type;for(isNaN(o)&&(o="keyup"===c?"0":xe.attr("data-location")),r=(o=Math.max(0,Math.min(100,parseInt(o,10))))<50?1:-1;-1!==t.indexOf(o);)o+=r;"focusout"===c&&(i.val(o+"%"),xe.attr("data-location",o)),xe.css("left",o+"%"),N()}}).on("focusin.revcpicker",$),e("body").on("click.revcpicker",".rev-cpicker-point",function(){Ze.find(".rev-cpicker-point.active").removeClass("active"),xe=e(this).addClass("active"),He=xe.children(".rev-cpicker-point-square")[0],Se=xe.children(".rev-cpicker-point-triangle")[0],N(this),Cr=!1;var r=k();r[0]&&he.val(r[1]).change()}).on("mousedown.revcpicker",".rev-cpicker-point",function(r){xe=e(this).data("mousestart",r.pageY)}).on("mousemove.revcpicker",function(e){if(xe&&xe.data("mousestart")){var r=xe.data("mousestart"),a=e.pageY;xe.hasClass("rev-cpicker-point-bottom")?a>r&&a-r>Vr&&er.hasClass("active")?xe.addClass("warning"):xe.removeClass("warning"):r>a&&r-a>Vr&&hr.hasClass("active")?xe.addClass("warning"):xe.removeClass("warning")}}).on("mouseup.revcpicker",function(e){if(xe&&xe.data("mousestart")){var r=xe.data("mousestart"),a=e.pageY;xe.removeData("mousestart"),xe.hasClass("rev-cpicker-point-bottom")?a>r&&a-r>Sr&&er.hasClass("active")?er.click():xe.removeClass("warning"):r>a&&r-a>Sr&&hr.hasClass("active")?hr.click():xe.removeClass("warning")}}).on("change.revcpicker",".rev-cpicker-component",function(){var r=e(this),a=r.data("gradient")||r.val()||"transparent";("transparent"===a||RevColor.transparentRgba(a))&&(a=""),r.data("tpcp").css("background",a)}).on("keypress.revcpicker",function(e){if(ce.hasClass("active")){var r=e.which;27==r?y():13==r&&de&&de.blur()}}).on("click.revcpicker",".rev-cpicker-color:not(.blank)",function(){if(Cr){if(Cr[0]===this&&Cr.hasClass("selected"))return;Cr.removeClass("selected")}var r=(Cr=e(this)).parent()[0].id,a=-1!==r.search("core")?"core":"custom",t=-1!==r.search("colors")?"colors":"gradients",i=e("#rev-cpicker-"+t+"-"+a+"-btn");if(i.hasClass("active")&&i.find(".rev-cpicker-arrow-up").click(),ce.hasClass("color-view")){var o=Cr.attr("data-color");gr=!0,Ve.val(o).change(),"transparent"===fe.val()&&fe.val(o.toLowerCase()),gr=!1;var c=sr.val();0===parseInt(c,10)&&(o="transparent"),v(!1,o,c)}else ae.removeClass("full"),Me.removeClass("full"),d(Cr.data("gradient"),!0),se.removeClass("checked"),we.find(".rev-cpicker-color.selected").removeClass("selected");Cr.addClass("selected")}).on("mouseover.revcpicker",".rev-cpicker-color:not(.blank)",function(){ur&&(Ge.style.background=c(this,"data-color"))}).on("mouseout.revcpicker",".rev-cpicker-color:not(.blank)",function(){ur&&N()}).on("click.revcpicker",".rev-cpicker-delete",function(){if(oe){if(window.confirm(document.getElementById("rev-cpicker-remove-delete").innerHTML)){ce.addClass("onajax onajaxdelete");var r=e(this),a=r.parent(),t=a.attr("data-title")||"";if(!t)return void console.log("Preset does not have a name/title");var i=r.closest(".rev-cpicker-presets-group")[0].id,o=-1!==i.search("colors")?"colors":"gradients";X.off("revcpicker_onajax_delete.revcpicker").on("revcpicker_onajax_delete.revcpicker",function(t,o){o&&console.log(o);var c=r.closest(".rev-cpicker-presets-group"),n=c.find(".ps-scrollbar-x-rail"),s=e("#"+i+"-btn");a.remove(),R.call(c[0])?c.perfectScrollbar("update"):e('').insertBefore(n),w.call(c[0])').insertBefore(n),s.hasClass("active")&&s.children(".rev-cpicker-arrow-up").click()),ce.removeClass("onajax onajaxdelete")}),t=e.trim(t.replace(/\W+/g,"_")).replace(/^\_|\_$/g,"").toLowerCase(),oe("delete",t,o,"revcpicker_onajax_delete",or)}return!1}console.log("Ajax callback not defined")}),e(".rev-cpicker-save-preset-btn").on("click.revcpicker",function(){if(oe){var r,a,t=e(this),i=t.closest(".rev-cpicker-presets-save-as").find(".rev-cpicker-preset-save").val();if(i&&isNaN(i)){if(r=ce.hasClass("color-view")?"colors":"gradients",i=e.trim(i.replace(/\W+/g,"_")).replace(/^\_|\_$/g,"").toLowerCase(),e("#rev-cpicker-"+r+"-custom").find(".rev-cpicker-color").not(".blank").each(function(){if(e.trim(c(this,"data-title").replace(/\W+/g,"_")).replace(/^\_|\_$/g,"").toLowerCase()===i)return alert(t.attr("data-message")),a=!0,!1}),!a){ce.addClass("onajax onajaxsave");var o,n,l={};if("colors"===r){var p=fe.val(),v=sr.val();o="transparent"===p?"transparent":"100%"===v?RevColor.sanitizeHex(p):RevColor.processRgba(p,v)}else n=Ge.style.background,o=e.extend({},N(!1,!1,!0)[0]);l[i]=o,X.off("revcpicker_onajax_save.revcpicker").on("revcpicker_onajax_save.revcpicker",function(a,i){if(i)return ce.removeClass("onajax onajaxsave"),void alert(t.attr("data-message"));var o=e(s(l,!1," rev-picker-color-custom",n)),c=e("#rev-cpicker-"+r+"-custom"),p=c.find(".rev-cpicker-color.blank"),v=e("#"+c[0].id+"-btn");p.length?o.insertBefore(p.eq(0)):o.insertBefore(c.find(".ps-scrollbar-x-rail")),e("#rev-cpicker-"+r+"-custom-btn").click(),w.call(c[0])>6&&(p.length&&p.last().remove(),v.addClass("active").children(".rev-cpicker-arrow-down").click(),c.perfectScrollbar("update")),o.click(),ce.removeClass("onajax onajaxsave")}),oe("save",l,r,"revcpicker_onajax_save",or)}}else alert(t.attr("data-message"))}else console.log("Ajax callback not defined")}),e(".rev-cpicker-preset-title").on("click.revcpicker",function(){var r=e(this),a=r.parent(),t=r.hasClass("active")?"down":"up";z.call(r.find(".rev-cpicker-arrow-"+t)[0]),a.find(".rev-cpicker-preset-title").removeClass("selected"),r.addClass("selected"),a.find(".rev-cpicker-presets-group").hide(),document.getElementById(this.id.replace("-btn","")).style.display="block",cr.perfectScrollbar("update")}),qe.on("click.revcpicker",function(){sr.val("0%"),G(0),Ve.val(RevColor.defaultValue).change(),fe.val("transparent"),v(!1,"transparent")}),ce.find('input[type="text"]').on("focusin.revcpicker",function(){de=this}).on("focusout.revcpicker",function(){de=!1}),e(".rev-cpicker-input").on("focusin.revcpicker",function(){var r=e(this);r.data("orig-value",r.val())}),e(".rev-cpicker-hex").on("focusout.revcpicker",function(){var r,a,t;if("rev-cpicker-color-hex"===this.id){if(t=fe.val())if(t=RevColor.sanitizeHex(t),RevColor.isColor.test(t))fe.val(t);else{if(r=e(this),!(a=r.data("orig-value")))return void qe.click();t=a,fe.val(t)}else t="transparent";Ve.val(t).change()}else t=pe.val()||RevColor.defaultValue,t=RevColor.sanitizeHex(t),RevColor.isColor.test(t)||(t=(a=(r=e(this)).data("orig-value"))||RevColor.defaultValue),pe.val(t),he.val(t).change()}).on("focusin.revcpicker",$),e("#rev-cpciker-clear-gradient").on("click.revcpicker",function(){he.val(RevColor.defaultValue).change()}),Q.on("keyup.revcpicker focusout.revcpicker",P).on("focusin.revcpicker",function(){Xe=!0,Le.addClass("active")}).on("focusin.revcpicker",$),$e.on("click.revcpicker",function(){var r=e(this),a=r.attr("data-direction");$e.removeClass("selected"),r.addClass("selected"),"radial"!==a?Q.removeAttr("disabled").val(C(a)):Q.attr("disabled","disabled"),P(!1,a)}),e(".rev-cpicker-point-delete").on("click.revcpicker",function(){if(-1!==this.className.search("active")){var e=xe.hasClass("rev-cpicker-point-bottom")?"bottom":"top",r=ce.find(".rev-cpicker-point-"+e).length;r>2&&(xe.draggable("destroy").remove(),Ue=Ze.children(),ce.click(),N()),r<=Fr&&("bottom"===e?Me.removeClass("full"):ae.removeClass("full"))}}),e(".rev-cpicker-preset-save").on("focusin.revcpicker",$),e(".rev-cpicker-opacity-input").on("keyup.revcpicker focusout.revcpicker",function(r){var a,t=-1===this.id.search("grad"),i=t?sr:Qe,o=i.val().replace("%",""),c=r.type;if(isNaN(o)&&(o="keyup"===c?"0":e(this).data("orig-value")),o=Math.max(0,Math.min(100,o)),"focusout"===c&&(i.val(o+"%"),t||xe.attr("data-opacity",o)),t)v(!1,0===parseInt(o,10)&&"transparent",o),G(o);else{var n=RevColor.rgbValues(xe.attr("data-color"),3),s=Ir.colors[Je];o=(.01*parseInt(o,10)).toFixed(2).replace(/\.?0*$/,""),s.r=n[0],s.g=n[1],s.b=n[2],s.a=o,a=RevColor.rgbaString(s.r,s.g,s.b,o),xe.attr("data-color",a),N(),a="rgba(0, 0, 0, "+o+")",He.style.backgroundColor=a,Se.style.borderTopColor=a}}).on("focusin.revcpicker",$),e(".rev-cpicker-builder-hit").on("click.revcpicker",function(e){ee||V();for(var r=parseInt(100*((e.pageX-ae.offset().left)/Nr).toFixed(2),10),a=-1!==this.id.search("bottom")?"bottom":"top",t="bottom"===a?je:Fe,i=r<50?1:-1;-1!==t.indexOf(r);)r+=i;"bottom"===a?ce.find(".rev-cpicker-point-bottom").length
      \t



      \t
      {{delete}}
      {{delete}}
      ').appendTo(Z)),r||(r={}),r.core&&(r.core.colors&&(Pr=r.core.colors),r.core.gradients&&(zr=r.core.gradients)),Y(r),ne?(cr.perfectScrollbar("update"),r.mode&&(ve=r.mode),r.language&&n(r.language)):(n(r.language||Or),ve=r.mode||"full"),r.init&&(ie=r.init),r.onAjax&&(be=r.onAjax),r.onEdit&&(ge=r.onEdit),r.change&&(Ie=r.change),r.cancel&&(_e=r.cancel),r.widgetId&&(tr=r.widgetId),r.defaultValue&&(RevColor.defaultValue=r.defaultValue),r.wrapClasses&&(Rr=r.wrapClasses),r.appendedHtml&&(vr=r.appendedHtml),ne=!0};var Dr={refresh:function(){var r=e(this);if(r.hasClass("rev-cpicker-component")){var a=r.data("revcp")||{},t=r.val()||a.defaultValue||RevColor.defaultValue,i=RevColor.process(t);t=i[0],i="rgba"===i[1]&&RevColor.transparentRgba(t,!0)?"":t,"transparent"!==t?r.data("tpcp")[0].style.background=i:r.data("tpcp").css("background",""),r.attr("data-color",t).data("hex",t)}},destroy:function(){e(this).removeData().closest(".rev-cpicker-master-wrap").removeData().remove()}};e.fn.tpColorPicker=function(r){return r&&"string"==typeof r?this.each(Dr[r]):this.each(function(){var a=e(this);if(a.hasClass("rev-cpicker-component"))a.tpColorPicker("refresh");else{var t,i,o=e('').data("revcolorinput",a),c=e(''),n=e(''),s=a.attr("data-wrap-classes"),l=a.attr("data-wrapper"),p=a.attr("data-wrap-id"),v=a.attr("data-title"),d=a.attr("data-skin"),g=a.val()||"",b=W(g);if(b&&(g=b,a.val(b)),o.insertBefore(a).append([c,n,a]),r&&e.isPlainObject(r)){l||(l=r.wrapper),s||(s=r.wrapClasses),d||(d=r.skin),p||(p=r.wrapId),v||(v=r.title),i=r.defaultValue;var k=a.data("revcp");k&&(r=e.extend({},k,r)),a.data("revcp",r)}s||(s=Rr),s&&o.addClass(s),p&&o.attr("id",p),g||(g=i||RevColor.defaultValue,a.val(g)),g=(t=RevColor.process(g))[0],3===t.length&&a.val(g),"transparent"!==(t="rgba"===t[1]&&RevColor.transparentRgba(g,!0)?"":g)&&(c[0].style.background=t),n[0].innerHTML=v||Te||Or.color,a.attr({type:"hidden","data-color":g}).data("tpcp",c).addClass("rev-cpicker-component"),d&&o.addClass(d),l?(l=e(l).addClass("rev-cpicker-master-wrap"),o.wrap(l)):o.addClass("rev-cpicker-master-wrap");var u=!!r&&(r.init||ie);u&&u(o,a,g,r)}})},e(function(){e("body").on("click.revcpicker",".rev-colorpicker",function(){U||J();var r,a,t,i,o,c,s,p,v,g,b,k,u,f=(or=e(this).data("revcolorinput")).attr("data-widget-id"),m=or.attr("data-appended-html"),h=or.attr("data-editing"),C=or.attr("data-colors"),x=or.attr("data-mode"),y=or.data("revcp"),R=or.attr("data-lang");if(C&&((C=JSON.parse(C.replace(/\&/g,'"'))).colors&&(c=C.colors),C.gradients&&(i=C.gradients)),y){var _=y.colors;_&&(_.core&&(t=_.core.colors,r=_.core.gradients),_.custom&&(o=_.custom.colors,a=_.custom.gradients)),b=y.onEdit,k=y.onAjax,p=y.change,v=y.cancel,R||(R=y.lang),x||(x=y.mode),m||(m=y.appendedHtml),h||(h=y.editing),f||(f=y.widgetId)}(r||t||a||o||i||c)&&(s={},(r||t||i||c)&&(s.core={colors:c||t||Pr,gradients:i||r||zr}),(a||o)&&(s.custom={colors:o||Pr,gradients:a||zr}),Y(s)),f||(f=tr),f&&(ce[0].id=f),m||(m=vr),m&&(ye=e(m).appendTo(mr)),R&&n(R),x||(x=ve),h?ze.style.visibility="visible":(h="",ze.style.visibility="hidden"),wr.innerHTML=h,"single"===x||"basic"===x?(K=!1,le.hide(),ue.show(),"basic"===x&&ce.addClass("is-basic")):(K=!0,le.show(),ue.show()),(u=or.val()||or.attr("data-color")||RevColor.defaultValue).split("||").length>1&&(u=RevColor.joinToRgba(u),or.val(u)),g=d(u),lr=g[0],te=b||ge,oe=k||be,Re=v||_e,_r=p||Ie,"gradient"!==g[1]?ue.data("state",lr):le.data("state",lr),Z.addClass("rev-colorpicker-open"),dr=or.data("tpcp"),ce.data("revcpickerinput",or).addClass("active").show(),cr.each(w).perfectScrollbar("update"),pr=or.attr("data-color"),ir=or.data("hex"),e(".rev-cpicker-color").not(".blank").each(l)})})}("undefined"!==jQuery&&jQuery); \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/php/.DS_Store b/think.greaterchiangmai.com/public/revolution/php/.DS_Store new file mode 100644 index 0000000..d50fbf4 Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/php/.DS_Store differ diff --git a/think.greaterchiangmai.com/public/revolution/php/facebook/class-facebook.php b/think.greaterchiangmai.com/public/revolution/php/facebook/class-facebook.php new file mode 100644 index 0000000..4d4467b --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/php/facebook/class-facebook.php @@ -0,0 +1,89 @@ + + */ + +class TP_facebook { + /** + * Get User ID from its URL + * + * @since 1.0.0 + * @param string $user_url URL of the Page + */ + public function get_user_from_url($user_url){ + $theid = str_replace("https", "", $user_url); + $theid = str_replace("http", "", $theid); + $theid = str_replace("://", "", $theid); + $theid = str_replace("www.", "", $theid); + $theid = str_replace("facebook", "", $theid); + $theid = str_replace(".com", "", $theid); + $theid = str_replace("/", "", $theid); + $theid = explode("?", $theid); + return $theid[0]; + } + + /** + * Get Photosets List from User + * + * @since 1.0.0 + * @param string $user_id Facebook User id (not name) + * @param int $item_count number of photos to pull + */ + public function get_photo_sets($user_id,$item_count=10){ + //photoset params + $url = "https://graph.facebook.com/$user_id/albums"; + $photo_sets_list = json_decode(file_get_contents($url)); + return $photo_sets_list->data; + } + + /** + * Get Photoset Photos + * + * @since 1.0.0 + * @param string $photo_set_id Photoset ID + * @param int $item_count number of photos to pull + */ + public function get_photo_set_photos($photo_set_id,$item_count=10){ + $url = "https://graph.facebook.com/v2.0/$photo_set_id?fields=photos"; + $photo_set_photos = json_decode(file_get_contents($url)); + return $photo_set_photos->photos->data; + } + + /** + * Get Feed + * + * @since 1.0.0 + * @param string $user User ID + * @param int $item_count number of itmes to pull + */ + public function get_post_feed($user,$app_id,$app_secret,$item_count=10){ + $oauth = file_get_contents("https://graph.facebook.com/oauth/access_token?type=client_cred&client_id=".$app_id."&client_secret=".$app_secret); + $url = "https://graph.facebook.com/$user/feed?".$oauth."&fields=id,from,message,picture,link,name,icon,privacy,type,status_type,object_id,application,created_time,updated_time,is_hidden,is_expired,likes,comments"; + $feed = json_decode(file_get_contents($url)); + return $feed->data; + } + + /** + * Decode URL from feed + * + * @since 1.0.0 + * @param string $url facebook Output Data + */ + public static function decode_facebook_url($url) { + $url = str_replace('u00253A',':',$url); + $url = str_replace('\u00255C\u00252F','/',$url); + $url = str_replace('u00252F','/',$url); + $url = str_replace('u00253F','?',$url); + $url = str_replace('u00253D','=',$url); + $url = str_replace('u002526','&',$url); + return $url; + } +} +?> \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/php/flickr/class-flickr.php b/think.greaterchiangmai.com/public/revolution/php/flickr/class-flickr.php new file mode 100644 index 0000000..2c38bed --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/php/flickr/class-flickr.php @@ -0,0 +1,265 @@ + + */ + +class TP_flickr { + + /** + * API key + * + * @since 1.0.0 + * @access private + * @var string $api_key flickr API key + */ + private $api_key; + + /** + * API params + * + * @since 1.0.0 + * @access private + * @var array $api_param_defaults Basic params to call with API + */ + private $api_param_defaults; + + /** + * Basic URL + * + * @since 1.0.0 + * @access private + * @var string $url Url to fetch user from + */ + private $flickr_url; + + /** + * Initialize the class and set its properties. + * + * @since 1.0.0 + * @param string $api_key flickr API key. + */ + public function __construct($api_key) { + $this->api_key = $api_key; + $this->api_param_defaults = array( + 'api_key' => $this->api_key, + 'format' => 'json', + 'nojsoncallback' => 1, + ); + } + + /** + * Calls Flicker API with set of params, returns json + * + * @since 1.0.0 + * @param array $params Parameter build for API request + */ + private function call_flickr_api($params){ + //build url + $encoded_params = array(); + foreach ($params as $k => $v){ + $encoded_params[] = urlencode($k).'='.urlencode($v); + } + + //call the API and decode the response + $url = "https://api.flickr.com/services/rest/?".implode('&', $encoded_params); + $rsp = json_decode(file_get_contents($url)); + return $rsp; + } + + /** + * Get User ID from its URL + * + * @since 1.0.0 + * @param string $user_url URL of the Gallery + */ + public function get_user_from_url($user_url){ + //gallery params + $user_params = $this->api_param_defaults + array( + 'method' => 'flickr.urls.lookupUser', + 'url' => $user_url, + ); + + //set User Url + $this->flickr_url = $user_url; + + //get gallery info + $user_info = $this->call_flickr_api($user_params); + return $user_info->user->id; + } + + /** + * Get Group ID from its URL + * + * @since 1.0.0 + * @param string $group_url URL of the Gallery + */ + public function get_group_from_url($group_url){ + //gallery params + $group_params = $this->api_param_defaults + array( + 'method' => 'flickr.urls.lookupGroup', + 'url' => $group_url, + ); + + //set User Url + $this->flickr_url = $group_url; + + //get gallery info + $group_info = $this->call_flickr_api($group_params); + return $group_info->group->id; + } + + /** + * Get Public Photos + * + * @since 1.0.0 + * @param string $user_id flicker User id (not name) + * @param int $item_count number of photos to pull + */ + public function get_public_photos($user_id,$item_count=10){ + //public photos params + $public_photo_params = $this->api_param_defaults + array( + 'method' => 'flickr.people.getPublicPhotos', + 'user_id' => $user_id, + 'extras' => 'description, license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags, o_dims, views, media, path_alias, url_sq, url_t, url_s, url_q, url_m, url_n, url_z, url_c, url_l, url_o', + 'per_page'=> $item_count, + 'page' => 1 + ); + + //get photo list + $public_photos_list = $this->call_flickr_api($public_photo_params); + return $public_photos_list->photos->photo; + } + + /** + * Get Photosets List from User + * + * @since 1.0.0 + * @param string $user_id flicker User id (not name) + * @param int $item_count number of photos to pull + */ + public function get_photo_sets($user_id,$item_count=10){ + //photoset params + $photo_set_params = $this->api_param_defaults + array( + 'method' => 'flickr.photosets.getList', + 'user_id' => $user_id, + 'per_page'=> $item_count, + 'page' => 1 + ); + + //get photoset list + $photo_sets_list = $this->call_flickr_api($photo_set_params); + return $photo_sets_list->photosets->photoset; + } + + /** + * Get Photoset Photos + * + * @since 1.0.0 + * @param string $photo_set_id Photoset ID + * @param int $item_count number of photos to pull + */ + public function get_photo_set_photos($photo_set_id,$item_count=10){ + //photoset photos params + $photo_set_params = $this->api_param_defaults + array( + 'method' => 'flickr.photosets.getPhotos', + 'photoset_id' => $photo_set_id, + 'per_page' => $item_count, + 'page' => 1, + 'extras' => 'license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags, o_dims, views, media, path_alias, url_sq, url_t, url_s, url_q, url_m, url_n, url_z, url_c, url_l, url_o' + ); + + //get photo list + $photo_set_photos = $this->call_flickr_api($photo_set_params); + return $photo_set_photos->photoset->photo; + } + + /** + * Get Groop Pool Photos + * + * @since 1.0.0 + * @param string $group_id Photoset ID + * @param int $item_count number of photos to pull + */ + public function get_group_photos($group_id,$item_count=10){ + //photoset photos params + $group_pool_params = $this->api_param_defaults + array( + 'method' => 'flickr.groups.pools.getPhotos', + 'group_id' => $group_id, + 'per_page' => $item_count, + 'page' => 1, + 'extras' => 'license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags, o_dims, views, media, path_alias, url_sq, url_t, url_s, url_q, url_m, url_n, url_z, url_c, url_l, url_o' + ); + + //get photo list + $group_pool_photos = $this->call_flickr_api($group_pool_params); + return $group_pool_photos->photos->photo; + } + + /** + * Get Gallery ID from its URL + * + * @since 1.0.0 + * @param string $gallery_url URL of the Gallery + * @param int $item_count number of photos to pull + */ + public function get_gallery_from_url($gallery_url){ + //gallery params + $gallery_params = $this->api_param_defaults + array( + 'method' => 'flickr.urls.lookupGallery', + 'url' => $gallery_url, + ); + + //get gallery info + $gallery_info = $this->call_flickr_api($gallery_params); + return $gallery_info->gallery->id; + } + + /** + * Get Gallery Photos + * + * @since 1.0.0 + * @param string $gallery_id flicker Gallery id (not name) + * @param int $item_count number of photos to pull + */ + public function get_gallery_photos($gallery_id,$item_count=10){ + //gallery photos params + $gallery_photo_params = $this->api_param_defaults + array( + 'method' => 'flickr.galleries.getPhotos', + 'gallery_id' => $gallery_id, + 'extras' => 'description, license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags, o_dims, views, media, path_alias, url_sq, url_t, url_s, url_q, url_m, url_n, url_z, url_c, url_l, url_o', + 'per_page'=> $item_count, + 'page' => 1 + ); + + //get photo list + $gallery_photos_list = $this->call_flickr_api($gallery_photo_params); + return $gallery_photos_list->photos->photo; + } + + /** + * Encode the flickr ID for URL (base58) + * + * @since 1.0.0 + * @param string $num flickr photo id + */ + public static function base_encode($num, $alphabet='123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ') { + $base_count = strlen($alphabet); + $encoded = ''; + while ($num >= $base_count) { + $div = $num/$base_count; + $mod = ($num-($base_count*intval($div))); + $encoded = $alphabet[$mod] . $encoded; + $num = intval($div); + } + if ($num) $encoded = $alphabet[$num] . $encoded; + return $encoded; + } +} +?> \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/php/instagram/class-instagram.php b/think.greaterchiangmai.com/public/revolution/php/instagram/class-instagram.php new file mode 100644 index 0000000..663cb22 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/php/instagram/class-instagram.php @@ -0,0 +1,48 @@ + + */ + +class TP_instagram { + + /** + * API key + * + * @since 1.0.0 + * @access private + * @var string $api_key Instagram API key + */ + private $api_key; + + /** + * Initialize the class and set its properties. + * + * @since 1.0.0 + * @param string $api_key Instagram API key. + */ + public function __construct($api_key) { + $this->api_key = $api_key; + } + + /** + * Get Instagram Pictures + * + * @since 1.0.0 + * @param string $user_id Instagram User id (not name) + */ + public function get_public_photos($search_user_id){ + //call the API and decode the response + $url = "https://api.instagram.com/v1/users/".$search_user_id."/media/recent?access_token=".$this->api_key."&client_id=".$search_user_id; + $rsp = json_decode(file_get_contents($url)); + return $rsp->data; + } + +} +?> \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/php/twitter/.DS_Store b/think.greaterchiangmai.com/public/revolution/php/twitter/.DS_Store new file mode 100644 index 0000000..940cba2 Binary files /dev/null and b/think.greaterchiangmai.com/public/revolution/php/twitter/.DS_Store differ diff --git a/think.greaterchiangmai.com/public/revolution/php/twitter/RestApi.php b/think.greaterchiangmai.com/public/revolution/php/twitter/RestApi.php new file mode 100644 index 0000000..2861127 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/php/twitter/RestApi.php @@ -0,0 +1,93 @@ + + * @license MIT License + * @link https://github.com/vojant/Twitter-php + */ + +namespace TwitterPhp; + +use \TwitterPhp\Connection\Application; +use \TwitterPhp\Connection\User; + +require_once 'connection/ConnectionAbstract.php'; +require_once 'connection/Application.php'; +require_once 'connection/User.php'; + +/** + * Class TwitterRestApiException + */ +class RestApiException extends \Exception {}; + +/** + * Class RestApi + * @package TwitterPhp + */ +class RestApi +{ + /** + * @var string + */ + private $_consumerKey; + + /** + * @var string + */ + private $_consumerSecret; + + /** + * @var string + */ + private $_accessToken; + + /** + * @var string + */ + private $_accessTokenSecret; + + + /** + * @param string $consumerKey + * @param string $consumerSecret + * @param null|string $accessToken + * @param null|string $accessTokenSecret + * @throws TwitterRestApiException + */ + public function __construct($consumerKey,$consumerSecret,$accessToken = null,$accessTokenSecret = null) + { + if (!function_exists('curl_init')) { + throw new TwitterRestApiException('You must have the cURL extension enabled to use this library'); + } + $this->_consumerKey = $consumerKey; + $this->_consumerSecret = $consumerSecret; + $this->_accessToken = $accessToken; + $this->_accessTokenSecret = $accessTokenSecret; + } + + /** + * Connect to Twitter API as application. + * @link https://dev.twitter.com/docs/auth/application-only-auth + * + * @return \TwitterPhp\Connection\Application + */ + public function connectAsApplication() + { + return new Application($this->_consumerKey,$this->_consumerSecret); + } + + /** + * Connect to Twitter API as user. + * @link https://dev.twitter.com/docs/auth/oauth/single-user-with-examples + * + * @return \TwitterPhp\Connection\User + * @throws TwitterRestApiException + */ + public function connectAsUser() + { + if (!$this->_accessToken || !$this->_accessTokenSecret) { + throw new TwitterRestApiException('Missing ACCESS_TOKEN OR ACCESS_TOKEN_SECRET'); + } + return new User($this->_consumerKey,$this->_consumerSecret,$this->_accessToken,$this->_accessTokenSecret); + } + +} \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/php/twitter/class-twitter.php b/think.greaterchiangmai.com/public/revolution/php/twitter/class-twitter.php new file mode 100644 index 0000000..91937fd --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/php/twitter/class-twitter.php @@ -0,0 +1,122 @@ + + */ + +class TP_twitter { + + /** + * Consumer Key + * + * @since 1.0.0 + * @access private + * @var string $consumer_key Consumer Key + */ + private $consumer_key; + + /** + * Consumer Secret + * + * @since 1.0.0 + * @access private + * @var string $consumer_secret Consumer Secret + */ + private $consumer_secret; + + /** + * Access Token + * + * @since 1.0.0 + * @access private + * @var string $access_token Access Token + */ + private $access_token; + + /** + * Access Token Secret + * + * @since 1.0.0 + * @access private + * @var string $access_token_secret Access Token Secret + */ + private $access_token_secret; + + /** + * Initialize the class and set its properties. + * + * @since 1.0.0 + * @param string $api_key flickr API key. + */ + public function __construct($consumer_key,$consumer_secret,$access_token,$access_token_secret) { + $this->consumer_key = $consumer_key; + $this->consumer_secret = $consumer_secret; + $this->access_token = $access_token; + $this->access_token_secret = $access_token_secret; + } + + /** + * Get Tweets + * + * @since 1.0.0 + * @param string $twitter_account Twitter account without trailing @ char + */ + public function get_public_photos($twitter_account){ + $twitter = new \TwitterPhp\RestApi($this->consumer_key,$this->consumer_secret,$this->access_token,$this->access_token_secret); + /* + * Connect as application + * https://dev.twitter.com/docs/auth/application-only-auth + */ + $connection = $twitter->connectAsApplication(); + + /* + * Collection of the most recent Tweets posted by the user indicated by the screen_name, without replies + * https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline + */ + $tweets = $connection->get('/statuses/user_timeline',array('screen_name' => $twitter_account, 'entities' => 1, 'trim_user' => 0 , 'exclude_replies' => 'true')); + //var_dump($tweets); + return $tweets; + } + + + /** + * Find Key in array and return value (multidim array possible) + * + * @since 1.0.0 + * @param string $key Needle + * @param array $form Haystack + */ + public static function array_find_element_by_key($key, $form) { + if (array_key_exists($key, $form)) { + $ret =& $form[$key]; + return $ret; + } + foreach ($form as $k => $v) { + if (is_array($v)) { + $ret =TP_twitter::array_find_element_by_key($key, $form[$k]); + if ($ret) { + return $ret; + } + } + } + return FALSE; + } + + /** + * Prepare output array $stream + * + * @since 1.0.0 + * @param string $tweets Twitter Output Data + */ + public static function makeClickableLinks($s) { + return preg_replace('@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@', '$1', $s); + } + +} +?> \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/php/twitter/connection/Application.php b/think.greaterchiangmai.com/public/revolution/php/twitter/connection/Application.php new file mode 100644 index 0000000..3b8e7c6 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/php/twitter/connection/Application.php @@ -0,0 +1,80 @@ +_consumerKey = $consumerKey; + $this->_consumerSecret = $consumerSecret; + } + + /** + * @param string $url + * @param array $parameters + * @param $method + * @return array + */ + protected function _buildHeaders($url,array $parameters = null,$method) + { + return $headers = array( + "Authorization: Bearer " . $this->_getBearerToken() + ); + } + + /** + * Get Bearer token + * + * @link https://dev.twitter.com/docs/auth/application-only-auth + * + * @throws \TwitterPhp\RestApiException + * @return string + */ + private function _getBearerToken() { + if (!$this->_bearersToken) { + $token = urlencode($this->_consumerKey) . ':' . urlencode($this->_consumerSecret); + $token = base64_encode($token); + + $headers = array( + "Authorization: Basic " . $token + ); + + $options = array ( + CURLOPT_URL => self::TWITTER_API_AUTH_URL, + CURLOPT_HTTPHEADER => $headers, + CURLOPT_POST => 1, + CURLOPT_POSTFIELDS => "grant_type=client_credentials" + ); + + $response = $this->_callApi($options); + + if (isset($response["token_type"]) && $response["token_type"] == 'bearer') { + $this->_bearersToken = $response["access_token"]; + } else { + throw new RestApiException('Error while getting access token'); + } + } + return $this->_bearersToken; + } +} \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/php/twitter/connection/ConnectionAbstract.php b/think.greaterchiangmai.com/public/revolution/php/twitter/connection/ConnectionAbstract.php new file mode 100644 index 0000000..764b7f8 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/php/twitter/connection/ConnectionAbstract.php @@ -0,0 +1,120 @@ +_prepareUrl($resource); + $headers = $this->_buildHeaders($url,$parameters,self::METHOD_GET); + $url = $url . '?' . http_build_query($parameters); + $curlParams = array ( + CURLOPT_URL => $url, + CURLOPT_HTTPHEADER => $headers + ); + + return $this->_callApi($curlParams); + } + + /** + * Do POST request to Twitter api + * + * @link https://dev.twitter.com/docs/api/1.1 + * + * @param $resource + * @param array $parameters + * @return mixed + */ + public function post($resource, array $parameters = array()) + { + $url = $this->_prepareUrl($resource); + $headers = $this->_buildHeaders($url,$parameters,self::METHOD_POST); + $curlParams = array ( + CURLOPT_URL => $url, + CURLOPT_POST => 1, + CURLOPT_POSTFIELDS => $parameters, + CURLOPT_HTTPHEADER => $headers + ); + + return $this->_callApi($curlParams); + } + + /** + * Call Twitter api + * + * @param array $params + * @return array + */ + protected function _callApi(array $params) + { + $curl = curl_init(); + curl_setopt_array($curl,$params); + curl_setopt($curl, CURLOPT_HEADER, 0); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, self::DEFAULT_TIMEOUT); + $response = curl_exec($curl); + return json_decode($response,true); + } + + /** + * @param string $resource + * @return string + */ + private function _prepareUrl($resource) + { + return self::TWITTER_API_URL . '/' . self::TWITTER_API_VERSION . '/' . ltrim($resource,'/') . '.json'; + } +} \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/php/twitter/connection/User.php b/think.greaterchiangmai.com/public/revolution/php/twitter/connection/User.php new file mode 100644 index 0000000..c77b89d --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/php/twitter/connection/User.php @@ -0,0 +1,92 @@ +_consumerKey = $consumerKey; + $this->_consumerSecret = $consumerSecret; + $this->_accessToken = $accessToken; + $this->_accessTokenSecret = $accessTokenSecret; + } + + /** + * @param string $url + * @param array $parameters + * @param $method + * @return array + */ + protected function _buildHeaders($url,array $parameters = null,$method) + { + $oauthHeaders = array( + 'oauth_version' => '1.0', + 'oauth_consumer_key' => $this->_consumerKey, + 'oauth_nonce' => time(), + 'oauth_signature_method' => 'HMAC-SHA1', + 'oauth_token' => $this->_accessToken, + 'oauth_timestamp' => time() + ); + + $data = $oauthHeaders; + if ($method == self::METHOD_GET) { + $data = array_merge($oauthHeaders,$parameters); + } + $oauthHeaders['oauth_signature'] = $this->_buildOauthSignature($url,$data,$method); + ksort($oauthHeaders); + $oauthHeader = array(); + + foreach($oauthHeaders as $key => $value) { + $oauthHeader[] = $key . '="' . rawurlencode($value) . '"'; + } + + $headers[] = 'Authorization: OAuth ' . implode(', ', $oauthHeader); + return $headers; + } + + /** + * @param $url + * @param array $params + * @param $method + * @return string + */ + private function _buildOauthSignature($url,array $params,$method) + { + ksort($params); + $sortedParams = array(); + + foreach($params as $key=>$value) { + $sortedParams[] = $key . '=' . $value; + } + + $signatureBaseString = $method . "&" . rawurlencode($url) . '&' . rawurlencode(implode('&', $sortedParams)); + $compositeKey = rawurlencode($this->_consumerSecret) . '&' . rawurlencode($this->_accessTokenSecret); + return base64_encode(hash_hmac('sha1', $signatureBaseString, $compositeKey, true)); + } +} \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/php/vimeo/class-vimeo.php b/think.greaterchiangmai.com/public/revolution/php/vimeo/class-vimeo.php new file mode 100644 index 0000000..476ffe0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/php/vimeo/class-vimeo.php @@ -0,0 +1,74 @@ + + */ + +class TP_vimeo { + /** + * Stream Array + * + * @since 1.0.0 + * @access private + * @var array $stream Stream Data Array + */ + private $stream; + + /** + * Get Vimeo User Videos + * + * @since 1.0.0 + */ + public function get_vimeo_videos($type,$value){ + //call the API and decode the response + if($type=="user"){ + $url = "https://vimeo.com/api/v2/".$value."/videos.json"; + } + else{ + $url = "https://vimeo.com/api/v2/".$type."/".$value."/videos.json"; + } + + $rsp = json_decode(file_get_contents($url)); + + return $rsp; + } + + /** + * Prepare output array $stream for Vimeo videos + * + * @since 1.0.0 + * @param string $videos Vimeo Output Data + */ + private function vimeo_output_array($videos,$count){ + foreach ($videos as $video) { + if($count-- == 0) break; + + $stream = array(); + + $image_url = @array( + 'thumbnail_small' => array($video->thumbnail_small), + 'thumbnail_medium' => array($video->thumbnail_medium), + 'thumbnail_large' => array($video->thumbnail_large), + ); + + $stream['custom-image-url'] = $image_url; //image for entry + $stream['custom-type'] = 'vimeo'; //image, vimeo, youtube, soundcloud, html + $stream['custom-vimeo'] = $video->id; + $stream['post_url'] = $video->url; + $stream['post_link'] = $video->url; + $stream['title'] = $video->title; + $stream['content'] = $video->description; + $stream['date_modified'] = $video->upload_date; + $stream['author_name'] = $video->user_name; + + $this->stream[] = $stream; + } + } +} +?> \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/revolution/php/youtube/class-youtube.php b/think.greaterchiangmai.com/public/revolution/php/youtube/class-youtube.php new file mode 100644 index 0000000..4fb43d0 --- /dev/null +++ b/think.greaterchiangmai.com/public/revolution/php/youtube/class-youtube.php @@ -0,0 +1,85 @@ + + */ + +class TP_youtube { + + /** + * API key + * + * @since 1.0.0 + * @access private + * @var string $api_key Youtube API key + */ + private $api_key; + + /** + * Channel ID + * + * @since 1.0.0 + * @access private + * @var string $channel_id Youtube Channel ID + */ + private $channel_id; + + /** + * Initialize the class and set its properties. + * + * @since 1.0.0 + * @param string $api_key Youtube API key. + */ + public function __construct($api_key,$channel_id) { + $this->api_key = $api_key; + $this->channel_id = $channel_id; + } + + + /** + * Get Youtube Playlists + * + * @since 1.0.0 + */ + public function get_playlists(){ + //call the API and decode the response + $url = "https://www.googleapis.com/youtube/v3/playlists?part=snippet&channelId=".$this->channel_id."&key=".$this->api_key; + $rsp = json_decode(file_get_contents($url)); + return $rsp->items; + } + + /** + * Get Youtube Playlist Items + * + * @since 1.0.0 + * @param string $playlist_id Youtube Playlist ID + * @param integer $count Max videos count + */ + public function show_playlist_videos($playlist_id,$count=50){ + //call the API and decode the response + $url = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=".$playlist_id."&maxResults=".$count."&fields=items%2Fsnippet&key=".$this->api_key; + $rsp = json_decode(file_get_contents($url)); + return $rsp->items; + } + + /** + * Get Youtube Channel Items + * + * @since 1.0.0 + * @param integer $count Max videos count + */ + public function show_channel_videos($count=50){ + //call the API and decode the response + $url = "https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=".$this->channel_id."&maxResults=".$count."&key=".$this->api_key."&order=date"; + echo $url; + $rsp = json_decode(file_get_contents($url)); + return $rsp->items; + } +} +?> \ No newline at end of file diff --git a/think.greaterchiangmai.com/public/robots.txt b/think.greaterchiangmai.com/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/think.greaterchiangmai.com/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/think.greaterchiangmai.com/resources/css/app.css b/think.greaterchiangmai.com/resources/css/app.css new file mode 100644 index 0000000..e69de29 diff --git a/think.greaterchiangmai.com/resources/js/app.js b/think.greaterchiangmai.com/resources/js/app.js new file mode 100644 index 0000000..e69de29 diff --git a/think.greaterchiangmai.com/resources/js/bootstrap.js b/think.greaterchiangmai.com/resources/js/bootstrap.js new file mode 100644 index 0000000..846d350 --- /dev/null +++ b/think.greaterchiangmai.com/resources/js/bootstrap.js @@ -0,0 +1,32 @@ +/** + * 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 ? 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/think.greaterchiangmai.com/resources/lang/.DS_Store b/think.greaterchiangmai.com/resources/lang/.DS_Store new file mode 100644 index 0000000..73c3fec Binary files /dev/null and b/think.greaterchiangmai.com/resources/lang/.DS_Store differ diff --git a/think.greaterchiangmai.com/resources/lang/en/global.php b/think.greaterchiangmai.com/resources/lang/en/global.php new file mode 100644 index 0000000..3b2a1f2 --- /dev/null +++ b/think.greaterchiangmai.com/resources/lang/en/global.php @@ -0,0 +1,9 @@ + 'Home', + 'menu_about' => 'About us', + 'menu_category' => 'Categories', + 'menu_contact' => 'Contact us', + 'enter_keyword' => 'Search', +]; diff --git a/think.greaterchiangmai.com/resources/lang/th/global.php b/think.greaterchiangmai.com/resources/lang/th/global.php new file mode 100644 index 0000000..bea227a --- /dev/null +++ b/think.greaterchiangmai.com/resources/lang/th/global.php @@ -0,0 +1,10 @@ + 'หน้าแรก', + 'menu_about' => 'เกี่ยวกับเรา', + 'menu_category' => 'หมวดหมู่', + 'menu_contact' => 'ติดต่อเรา', + 'menu_pdpa' => 'นโยบายความเป็นส่วนตัว', + 'enter_keyword' => 'ค้นหา', +]; diff --git a/think.greaterchiangmai.com/resources/views/about/index-en.blade.php b/think.greaterchiangmai.com/resources/views/about/index-en.blade.php new file mode 100644 index 0000000..38c7820 --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/about/index-en.blade.php @@ -0,0 +1,278 @@ +@extends('layouts.frontendTemplate') + +@section('main') + + +
      +
      +
      +
      + +

      About us

      + +
      + +
      +
      +
      + + +
      +
      +
      +
      + GREATER CHIANG MAI + +
      +

      Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, + when an unknown printer took a galley of type and scrambled it to make a type specimen book.

      + +
      +
      + GREATER CHIANG MAI +
      +
      + GREATER CHIANG MAI +
      +
      +
      +
      + + +
      +
      +
      +
      +
      +
      +
      +
      GREATER CHIANG MAI
      +
      +
      +
      + +
      +
      01.We believe in Tradition
      +

      Lorem Ipsum is simply text the printing and typesetting standard industry. Lorem Ipsum has been the industry's standard dummy text.

      +
      + + +
      +
      02.We believe in Culture
      +

      Lorem Ipsum is simply text the printing and typesetting standard industry. Lorem Ipsum has been the industry's standard dummy text.

      +
      + + +
      +
      03.We believe in Rituals
      +

      Lorem Ipsum is simply text the printing and typesetting standard industry. Lorem Ipsum has been the industry's standard dummy text.

      +
      + + +
      +
      04.We believe in relation
      +

      Lorem Ipsum is simply text the printing and typesetting standard industry. Lorem Ipsum has been the industry's standard dummy text.

      +
      + +
      +
      +
      +
      +
      + + +
      +
      +
      + +
      +
      +
      + +
      450
      + IMAGES +
      +
      +
      + + +
      +
      +
      + +
      390
      + VDO +
      +
      +
      + + +
      +
      +
      + +
      580
      + SOUND +
      +
      +
      + + +
      +
      +
      + +
      674
      + DOCUMENTS +
      +
      +
      + +
      +
      +
      + + +
      + + +
      +
      +
      + +
      +
      01
      + Title +

      Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been standard dummy text ever since. Lorem Ipsum been the industry. Lorem Ipsum has been.

      +
      +
      + + +
      +
      02
      + Title +

      Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been standard dummy text ever since. Lorem Ipsum been the industry. Lorem Ipsum has been.

      +
      +
      + + +
      +
      03
      + Title +

      Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been standard dummy text ever since. Lorem Ipsum been the industry. Lorem Ipsum has been.

      +
      +
      + +
      +
      +
      + + +
      +
      +
      +
      +
      +
      Greater Chiang Mai
      +
      Lorem Ipsum has been standard dummy text ever since. Lorem Ipsum been the industry.
      + +
      +
      +
      +
      + + +
      +
      +
      + +
      + +
      + + +
      + +
      + + +
      + +
      + + +
      + +
      + + +
      + +
      + + +
      + +
      + + +
      + +
      + + +
      + +
      + +
      +
      +
      + + +
      +
      +
      +
      + +
      Lorem Ipsum is simply dummy text of the printing and typesetting industry.
      +

      Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, + when an unknown printer took a galley of type and scrambled it to make a type specimen book.

      + + Name Surname + Greater Chiang Mai +
      +
      + GREATER CHIANG MAI +
      +
      +
      +
      + + +
      +
      +
      +
      +
      +
      +
      +
      + + +@stop + +@section('js') + +@endsection + + + diff --git a/think.greaterchiangmai.com/resources/views/about/index.blade.php b/think.greaterchiangmai.com/resources/views/about/index.blade.php new file mode 100644 index 0000000..8572f66 --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/about/index.blade.php @@ -0,0 +1,278 @@ +@extends('layouts.frontendTemplate') + +@section('main') + + +
      +
      +
      +
      + +

      About us

      + +
      + +
      +
      +
      + + +
      +
      +
      +
      + GREATER CHIANG MAI + +
      +

      Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, + when an unknown printer took a galley of type and scrambled it to make a type specimen book.

      + +
      +
      + GREATER CHIANG MAI +
      +
      + GREATER CHIANG MAI +
      +
      +
      +
      + + +
      +
      +
      +
      +
      +
      +
      +
      GREATER CHIANG MAI
      +
      +
      +
      + +
      +
      01.We believe in Tradition
      +

      Lorem Ipsum is simply text the printing and typesetting standard industry. Lorem Ipsum has been the industry's standard dummy text.

      +
      + + +
      +
      02.We believe in Culture
      +

      Lorem Ipsum is simply text the printing and typesetting standard industry. Lorem Ipsum has been the industry's standard dummy text.

      +
      + + +
      +
      03.We believe in Rituals
      +

      Lorem Ipsum is simply text the printing and typesetting standard industry. Lorem Ipsum has been the industry's standard dummy text.

      +
      + + +
      +
      04.We believe in relation
      +

      Lorem Ipsum is simply text the printing and typesetting standard industry. Lorem Ipsum has been the industry's standard dummy text.

      +
      + +
      +
      +
      +
      +
      + + +
      +
      +
      + +
      +
      +
      + +
      450
      + IMAGES +
      +
      +
      + + +
      +
      +
      + +
      390
      + VDO +
      +
      +
      + + +
      +
      +
      + +
      580
      + SOUND +
      +
      +
      + + +
      +
      +
      + +
      674
      + DOCUMENTS +
      +
      +
      + +
      +
      +
      + + +
      + + +
      +
      +
      + +
      +
      01
      + Title +

      Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been standard dummy text ever since. Lorem Ipsum been the industry. Lorem Ipsum has been.

      +
      +
      + + +
      +
      02
      + Title +

      Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been standard dummy text ever since. Lorem Ipsum been the industry. Lorem Ipsum has been.

      +
      +
      + + +
      +
      03
      + Title +

      Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been standard dummy text ever since. Lorem Ipsum been the industry. Lorem Ipsum has been.

      +
      +
      + +
      +
      +
      + + +
      +
      +
      +
      +
      +
      Greater Chiang Mai
      +
      Lorem Ipsum has been standard dummy text ever since. Lorem Ipsum been the industry.
      + +
      +
      +
      +
      + + +
      +
      +
      + +
      + +
      + + +
      + +
      + + +
      + +
      + + +
      + +
      + + +
      + +
      + + +
      + +
      + + +
      + +
      + + +
      + +
      + +
      +
      +
      + + +
      +
      +
      +
      + +
      Lorem Ipsum is simply dummy text of the printing and typesetting industry.
      +

      Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, + when an unknown printer took a galley of type and scrambled it to make a type specimen book.

      + + Name Surname + Greater Chiang Mai +
      +
      + GREATER CHIANG MAI +
      +
      +
      +
      + + +
      +
      +
      +
      +
      +
      +
      +
      + + +@stop + +@section('js') + +@endsection + + + diff --git a/think.greaterchiangmai.com/resources/views/article/index-en.blade.php b/think.greaterchiangmai.com/resources/views/article/index-en.blade.php new file mode 100644 index 0000000..cd7abef --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/article/index-en.blade.php @@ -0,0 +1,133 @@ +@extends('layouts.frontendTemplate') + + + +@section('main') + +
      +
      +
      +
      + +

      + {{-- {{ $subCategoryView->name_en }}

      --}} + +
      + +
      +
      +
      + +
      +
      +
      +
      + GREATER CHIANG MAI +

      {{ count($itemView) }} + Subjects

      +
      + {{-- {{ $subCategoryView->name_en }} --}} +
      + +
      + + +
      +
      +
      + +
      +
      + +
      + @include('uc.pagination', ['data' => $itemView]) +
      +
      +
      + +@stop + + +@section('js') + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/article/index.blade.php b/think.greaterchiangmai.com/resources/views/article/index.blade.php new file mode 100644 index 0000000..b10635c --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/article/index.blade.php @@ -0,0 +1,132 @@ +@extends('layouts.frontendTemplate') + + + +@section('main') + +
      +
      +
      +
      + +

      + {{-- {{ $subCategoryView->name }} --}} +

      + +
      + +
      +
      +
      + +
      +
      +
      +
      + GREATER CHIANG MAI +

      {{ count($itemView) }} + เรื่องราว

      +
      + {{-- {{ $subCategoryView->name }} --}} +
      + +
      + +
      +
      +
      +
        +
      • + + @foreach ($itemView as $item) +
      • +
        +
        + @if ($item->category_id == 1) + + +
        + +
        +
        + @else + + +
        + +
        +
        + @endif +
        +
        + @if ($item->category_id == 1) + + {{ $item->name }} + + @else + + {{ $item->name }} + + @endif +
        +
        + + {{ Carbon\Carbon::parse($item->due_date)->setTimezone('Asia/Bangkok')->locale('th_TH')->isoFormat('Do MMMM') }} + {{ Carbon\Carbon::parse($item->due_date)->setTimezone('Asia/Bangkok')->locale('th_TH')->isoFormat('YYYY') + 543 }} + +
        +
        +
        +
      • + @endforeach + +
      +
      +
      + +
      + @include('uc.pagination', ['data' => $itemView]) +
      +
      +
      + +@stop + +@section('js') + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/category-where-else/article/detail-en.blade.php b/think.greaterchiangmai.com/resources/views/category-where-else/article/detail-en.blade.php new file mode 100644 index 0000000..9698de8 --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/category-where-else/article/detail-en.blade.php @@ -0,0 +1,405 @@ +@extends('layouts.frontendTemplate') + + + +@section('main') + + +
      +
      +
      +
      + +

      {{ $itemView->name_en }}

      + +
      + +
      +
      +
      + + + +
      +
      +
      +
      + THE GREATER CHIANG MAI +

      + {{ Carbon\Carbon::parse($itemView->due_date)->setTimezone('Asia/Bangkok')->isoFormat('D MMMM YYYY') }} +

      +
      + {{ $itemView->name_en }}
      + +
      + +
      + +

      {{ $itemView->name_en }}

      +
      View: {{ $itemView->count_view ?? 0 }}
      + + +
      +
      + + +
      +
      +
      + + + + {{-- Random Articles --}} +
      +
      +
        +
      • + + @foreach ($randomArticlesView as $item) +
      • +
        +
        + + +
        + +
        +
        +
        +
        + + {{ $item->name_en }} + +
        +
        + + {{ Carbon\Carbon::parse($item->due_date)->setTimezone('Asia/Bangkok')->isoFormat('Do MMMM') }} + {{ Carbon\Carbon::parse($item->due_date)->setTimezone('Asia/Bangkok')->isoFormat('YYYY') }} + +
        +
        +
        +
      • + @endforeach + +
      +
      +
      +@stop + +@section('js') + + + + + + + + + + + + + + + + + + + + + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/category-where-else/article/detail.blade.php b/think.greaterchiangmai.com/resources/views/category-where-else/article/detail.blade.php new file mode 100644 index 0000000..c4c9258 --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/category-where-else/article/detail.blade.php @@ -0,0 +1,405 @@ +@extends('layouts.frontendTemplate') + + + +@section('main') + + +
      +
      +
      +
      + +

      {{ $itemView->name }}

      + +
      + +
      +
      +
      + + + +
      +
      +
      +
      + THE GREATER CHIANG MAI +

      + {{ Carbon\Carbon::parse($itemView->due_date)->setTimezone('Asia/Bangkok')->isoFormat('D MMMM YYYY') }} +

      +
      + {{ $itemView->name }}
      + +
      + +
      + +

      {{ $itemView->name }}

      +
      View: {{ $itemView->count_view ?? 0 }}
      + + +
      +
      + + +
      +
      +
      + + + {{-- Random Articles --}} +
      +
      +
        +
      • + + @foreach ($randomArticlesView as $item) +
      • +
        +
        + + +
        + +
        +
        +
        +
        + + {{ $item->name }} + +
        +
        + + {{ Carbon\Carbon::parse($item->due_date)->setTimezone('Asia/Bangkok')->locale('th_TH')->isoFormat('Do MMMM') }} + {{ Carbon\Carbon::parse($item->due_date)->setTimezone('Asia/Bangkok')->locale('th_TH')->isoFormat('YYYY') + 543 }} + +
        +
        +
        +
      • + @endforeach + +
      +
      +
      + +@stop + +@section('js') + + + + + + + + + + + + + + + + + + + + + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/category-where-else/article/index-en.blade.php b/think.greaterchiangmai.com/resources/views/category-where-else/article/index-en.blade.php new file mode 100644 index 0000000..0fa90d6 --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/category-where-else/article/index-en.blade.php @@ -0,0 +1,196 @@ +@extends('layouts.frontendTemplate') + + + +@section('main') + +
      +
      +
      +
      + +

      + {{ $subCategoryView->name_en }}

      + +
      + +
      +
      +
      + +
      +
      +
      +
      + GREATER CHIANGMAI +

      {{ count($itemView) }} + Subjects

      +
      + {{ $subCategoryView->name_en }} +
      + +
      + + + +
      +
      +
      +
        +
      • + + @foreach ($itemView as $item) +
      • +
        +
        + + +
        + +
        +
        +
        +
        + + {{ $item->name_en }} + +
        +
        + + {{ Carbon\Carbon::parse($item->due_date)->setTimezone('Asia/Bangkok')->isoFormat('D MMMM YYYY') }} + +
        +
        +
        +
      • + @endforeach + +
      +
      +
      + +
      + @include('uc.pagination', ['data' => $itemView]) +
      +
      +
      + +@stop + + +@section('js') + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/category-where-else/article/index.blade.php b/think.greaterchiangmai.com/resources/views/category-where-else/article/index.blade.php new file mode 100644 index 0000000..66181dc --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/category-where-else/article/index.blade.php @@ -0,0 +1,196 @@ +@extends('layouts.frontendTemplate') + + + +@section('main') + +
      +
      +
      +
      + +

      + {{ $subCategoryView->name }} +

      + +
      + +
      +
      +
      + +
      +
      +
      +
      + GREATER CHIANGMAI +

      {{ count($itemView) }} + เรื่องราว

      +
      + {{ $subCategoryView->name }} +
      + +
      + + +
      +
      +
      +
        +
      • + + @foreach ($itemView as $item) +
      • +
        +
        + + +
        + +
        +
        +
        +
        + + {{ $item->name }} + +
        +
        + + {{ Carbon\Carbon::parse($item->due_date)->setTimezone('Asia/Bangkok')->locale('th_TH')->isoFormat('Do MMMM') }} + {{ Carbon\Carbon::parse($item->due_date)->setTimezone('Asia/Bangkok')->locale('th_TH')->isoFormat('YYYY') + 543 }} + +
        +
        +
        +
      • + @endforeach + +
      +
      +
      + +
      + @include('uc.pagination', ['data' => $itemView]) +
      +
      +
      + +@stop + +@section('js') + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/category-where-else/index-en.blade.php b/think.greaterchiangmai.com/resources/views/category-where-else/index-en.blade.php new file mode 100644 index 0000000..9d975d3 --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/category-where-else/index-en.blade.php @@ -0,0 +1,102 @@ +@extends('layouts.frontendTemplate') + + + +@section('main') + +
      +
      +
      +
      + +

      Categories

      + +
      + +
      +
      +
      + + +
      +
      +
      +
      + GREATER CHIANG MAI +

      Categories +

      +
      + WHERE ELSE
      + +
      +
      +
      +
      + +
      +
      +
      +
      + +@stop + +@section('js') + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/category-where-else/index.blade.php b/think.greaterchiangmai.com/resources/views/category-where-else/index.blade.php new file mode 100644 index 0000000..00ecc80 --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/category-where-else/index.blade.php @@ -0,0 +1,110 @@ +@extends('layouts.frontendTemplate') + + + +@section('main') + + +
      +
      +
      +
      + +

      หมวดหมู่

      + +
      + +
      +
      +
      + + + +
      +
      +
      +
      + GREATER CHIANGMAI +

      หมวดหมู่ที่น่าสนใจ

      +
      + WHERE ELSE
      + +
      +
      +
      +
      + +
      + +
      + @include('uc.pagination', ['data' => $itemView['sub_category']]) +
      + +
      +
      +
      + + +@stop + +@section('js') + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/category/article/detail-en.blade.php b/think.greaterchiangmai.com/resources/views/category/article/detail-en.blade.php new file mode 100644 index 0000000..8f2cd6c --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/category/article/detail-en.blade.php @@ -0,0 +1,406 @@ +@extends('layouts.frontendTemplate') + + + +@section('main') + + +
      +
      +
      +
      + +

      {{ $itemView->name_en }}

      + +
      + +
      +
      +
      + + + +
      +
      +
      +
      + GREATER CHIANG MAI +

      + {{ Carbon\Carbon::parse($itemView->due_date)->setTimezone('Asia/Bangkok')->isoFormat('D MMMM YYYY') }} +

      +
      + {{ $itemView->name_en }}
      + +
      + +
      + +

      {{ $itemView->name_en }}

      +
      View: {{ $itemView->count_view ?? 0 }}
      +
      +
      + + +
      +
      +
      + + + {{-- Random Articles --}} +
      +
      +
        +
      • + + @foreach ($randomArticlesView as $item) +
      • +
        +
        + + +
        + +
        +
        +
        +
        + + {{ $item->name_en }} + +
        +
        + + {{ Carbon\Carbon::parse($item->due_date)->setTimezone('Asia/Bangkok')->isoFormat('Do MMMM') }} + {{ Carbon\Carbon::parse($item->due_date)->setTimezone('Asia/Bangkok')->isoFormat('YYYY') }} + +
        +
        +
        +
      • + @endforeach + +
      +
      +
      + +@stop + +@section('js') + + + + + + + + + + + + + + + + + + + + + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/category/article/detail.blade.php b/think.greaterchiangmai.com/resources/views/category/article/detail.blade.php new file mode 100644 index 0000000..c8aac8f --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/category/article/detail.blade.php @@ -0,0 +1,407 @@ +@extends('layouts.frontendTemplate') + + + +@section('main') + + +
      +
      +
      +
      + +

      {{ $itemView->name }}

      + +
      + +
      +
      +
      + + + +
      +
      +
      +
      + GREATER CHIANG MAI +

      + {{ Carbon\Carbon::parse($itemView->due_date)->setTimezone('Asia/Bangkok')->isoFormat('D MMMM YYYY') }} +

      +
      + {{ $itemView->name }}
      + +
      + +
      + +

      {{ $itemView->name }}

      +
      View: {{ $itemView->count_view ?? 0 }}
      + +
      +
      + + +
      +
      +
      + + + + {{-- Random Articles --}} +
      +
      +
        +
      • + + @foreach ($randomArticlesView as $item) +
      • +
        +
        + + +
        + +
        +
        +
        +
        + + {{ $item->name }} + +
        +
        + + {{ Carbon\Carbon::parse($item->due_date)->setTimezone('Asia/Bangkok')->locale('th_TH')->isoFormat('Do MMMM') }} + {{ Carbon\Carbon::parse($item->due_date)->setTimezone('Asia/Bangkok')->locale('th_TH')->isoFormat('YYYY') + 543 }} + +
        +
        +
        +
      • + @endforeach + +
      +
      +
      + + +@stop + +@section('js') + + + + + + + + + + + + + + + + + + + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/category/article/index-en.blade.php b/think.greaterchiangmai.com/resources/views/category/article/index-en.blade.php new file mode 100644 index 0000000..2cdf42c --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/category/article/index-en.blade.php @@ -0,0 +1,197 @@ +@extends('layouts.frontendTemplate') + + + +@section('main') + +
      +
      +
      +
      + +

      + {{ $subCategoryView->name_en }}

      + +
      + +
      +
      +
      + +
      +
      +
      +
      + GREATER CHIANG MAI +

      {{ count($itemView) }} + Subjects

      +
      + {{ $subCategoryView->name_en }} +
      + +
      + + + +
      +
      +
      +
        +
      • + + @foreach ($itemView as $item) +
      • +
        +
        + + +
        + +
        +
        +
        +
        + + {{ $item->name_en }} + +
        +
        + + {{ Carbon\Carbon::parse($item->due_date)->setTimezone('Asia/Bangkok')->isoFormat('D MMMM YYYY') }} + +
        +
        +
        +
      • + @endforeach + +
      +
      +
      + +
      + @include('uc.pagination', ['data' => $itemView]) +
      +
      +
      + +@stop + + +@section('js') + + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/category/article/index.blade.php b/think.greaterchiangmai.com/resources/views/category/article/index.blade.php new file mode 100644 index 0000000..393c9cf --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/category/article/index.blade.php @@ -0,0 +1,195 @@ +@extends('layouts.frontendTemplate') + + + +@section('main') + +
      +
      +
      +
      + +

      + {{ $subCategoryView->name }} +

      + +
      + +
      +
      +
      + +
      +
      +
      +
      + GREATER CHIANG MAI +

      {{ count($itemView) }} + เรื่องราว

      +
      + {{ $subCategoryView->name }} +
      + +
      + + +
      +
      +
      +
        +
      • + + @foreach ($itemView as $item) +
      • +
        +
        + + +
        + +
        +
        +
        +
        + + {{ $item->name }} + +
        +
        + + {{ Carbon\Carbon::parse($item->due_date)->setTimezone('Asia/Bangkok')->locale('th_TH')->isoFormat('Do MMMM') }} + {{ Carbon\Carbon::parse($item->due_date)->setTimezone('Asia/Bangkok')->locale('th_TH')->isoFormat('YYYY') + 543 }} + +
        +
        +
        +
      • + @endforeach + +
      +
      +
      + +
      + @include('uc.pagination', ['data' => $itemView]) +
      +
      +
      + +@stop + +@section('js') + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/category/index-en.blade.php b/think.greaterchiangmai.com/resources/views/category/index-en.blade.php new file mode 100644 index 0000000..9498e08 --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/category/index-en.blade.php @@ -0,0 +1,102 @@ +@extends('layouts.frontendTemplate') + + + +@section('main') + +
      +
      +
      +
      + +

      Categories

      + +
      + +
      +
      +
      + + +
      +
      +
      +
      + GREATER CHIANG MAI +

      Categories +

      +
      + CHIANG MAI AND NOWHERE ELSE
      + +
      +
      +
      +
      + +
      +
      +
      +
      + +@stop + +@section('js') + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/category/index.blade.php b/think.greaterchiangmai.com/resources/views/category/index.blade.php new file mode 100644 index 0000000..5fce308 --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/category/index.blade.php @@ -0,0 +1,110 @@ +@extends('layouts.frontendTemplate') + + + +@section('main') + + +
      +
      +
      +
      + +

      หมวดหมู่

      + +
      + +
      +
      +
      + + + +
      +
      +
      +
      + THE GREATER CHIANGMAI +

      หมวดหมู่ที่น่าสนใจ

      +
      + CHIANG MAI AND NOWHERE ELSE
      + +
      +
      +
      +
      + +
      + +
      + @include('uc.pagination', ['data' => $itemView['sub_category']]) +
      + +
      +
      +
      + + +@stop + +@section('js') + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/category/subject/detail-en.blade.php b/think.greaterchiangmai.com/resources/views/category/subject/detail-en.blade.php new file mode 100644 index 0000000..2422b9b --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/category/subject/detail-en.blade.php @@ -0,0 +1,362 @@ +@extends('layouts.frontendTemplate') + + + +@section('main') + + +
      +
      +
      +
      + +

      {{ $itemView->name_en }}

      + +
      + +
      +
      +
      + + + +
      +
      +
      +
      + GREATER CHIANG MAI +

      + {{ Carbon\Carbon::parse($itemView->due_date)->setTimezone('Asia/Bangkok')->isoFormat('D MMMM YYYY') }} +

      +
      + {{ $itemView->name_en }}
      + +
      +
      + +

      {{ $itemView->name_en }}

      + + {{--

      + {!! $itemView->description_en !!}

      + +
      --}} + +
      + +
      + +
      + @foreach ($categoriesView as $item) + + @endforeach + +
      + +
      + +
      +
      + + + + + + + + + + + + + +
      +
      + +
      + + +
      + + +
      + + +
      + + +
      + +
      +
      +
      +
      +
      + + +@stop + +@section('js') + + + + + + + + + + + + + + + + + + + + + + + + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/category/subject/detail.blade.php b/think.greaterchiangmai.com/resources/views/category/subject/detail.blade.php new file mode 100644 index 0000000..8442422 --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/category/subject/detail.blade.php @@ -0,0 +1,295 @@ +@extends('layouts.frontendTemplate') + + + +@section('main') + + +
      +
      +
      +
      + +

      {{ $itemView->name }}

      + +
      + +
      +
      +
      + + + +
      +
      +
      +
      + GREATER CHIANG MAI +

      + {{ Carbon\Carbon::parse($itemView->due_date)->setTimezone('Asia/Bangkok')->isoFormat('D MMMM YYYY') }} +

      +
      + {{ $itemView->name }}
      + +
      + +
      + +

      {{ $itemView->name }}

      + + +
      +
      + + +
      +
      +
      + + + +@stop + +@section('js') + + + + + + + + + + + > + + + + + + + + + + + + + + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/category/subject/index-en.blade.php b/think.greaterchiangmai.com/resources/views/category/subject/index-en.blade.php new file mode 100644 index 0000000..c55b176 --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/category/subject/index-en.blade.php @@ -0,0 +1,213 @@ +@extends('layouts.frontendTemplate') + + + +@section('main') + +
      +
      +
      +
      + +

      + {{ $categoryView->name_en }}

      + +
      + +
      +
      +
      + +
      +
      +
      +
      + GREATER CHIANG MAI +

      {{ count($itemView) }} + Subjects

      +
      + CULTURE
      + +
      + + + +
      +
      +
      +
        +
      • + + @foreach ($itemView as $item) +
      • +
        +
        + + +
        + +
        +
        +
        +
        + + {{ $item->name_en }} + +
        +
        + + {{ Carbon\Carbon::parse($item->due_date)->setTimezone('Asia/Bangkok')->isoFormat('D MMMM YYYY') }} + +
        +
        +
        +
      • + @endforeach + +
      +
      +
      + +
      + @include('uc.pagination', ['data' => $itemView]) +
      + {{--
      + +
      --}} + +
      +
      + +@stop + + +@section('js') + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/category/subject/index.blade.php b/think.greaterchiangmai.com/resources/views/category/subject/index.blade.php new file mode 100644 index 0000000..c68c62d --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/category/subject/index.blade.php @@ -0,0 +1,213 @@ +@extends('layouts.frontendTemplate') + + + +@section('main') + +
      +
      +
      +
      + +

      + {{ $categoryView->name }} +

      + +
      + +
      +
      +
      + +
      +
      +
      +
      + GREATER CHIANG MAI +

      {{ count($itemView) }} + หัวข้อ

      +
      + {{ $categoryView->name }} +
      + +
      + + +
      +
      +
      +
        +
      • + + @foreach ($itemView as $item) +
      • +
        +
        + + +
        + +
        +
        +
        +
        + + {{ $item->name }} + +
        +
        + + {{ Carbon\Carbon::parse($item->due_date)->setTimezone('Asia/Bangkok')->locale('th_TH')->isoFormat('Do MMMM') }} + {{ Carbon\Carbon::parse($item->due_date)->setTimezone('Asia/Bangkok')->locale('th_TH')->isoFormat('YYYY') + 543 }} + +
        +
        +
        +
      • + @endforeach + +
      +
      +
      + +
      + @include('uc.pagination', ['data' => $itemView]) +
      + {{-- --}} + +
      +
      + +@stop + +@section('js') + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/contact/index-en.blade.php b/think.greaterchiangmai.com/resources/views/contact/index-en.blade.php new file mode 100644 index 0000000..94083b3 --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/contact/index-en.blade.php @@ -0,0 +1,156 @@ +@extends('layouts.frontendTemplate') + +@section('main') + + +
      +
      +
      +
      + +

      Contact us

      + +
      + +
      +
      +
      + + + + +
      +
      +
      +
      + GREATER CHIANG MAI +

      We appreciate your contact.

      +

      How we can help

      +

      Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since. Lorem Ipsum has been the industry. Lorem Ipsum is simply dummy text of the printing and industry.

      + Start your Project +
      +
      +
      +
      + + +
      +
      +
      +
      +
      +
      + +
      + +
      Contact Address
      +

      Greater Chiang Mai , Chiang Mai , Thailand.

      +
      + + +
      + +
      Let's Talk
      +

      Line : @thegreaterchiangmai

      + +
      + + +
      + +
      Email Us
      +

      greaterchiangmai@gmail.com

      + +
      + + +
      + +
      Working Hours
      +

      Mon to Sat - 9 AM to 11 PM

      +

      Sunday - 10 AM to 6 PM

      +
      + +
      +
      +
      +
      +
      + + +
      +
      +
      +
      +
      tell us about your project
      +

      Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since. Lorem Ipsum has been the industry. Lorem Ipsum is simply dummy text.

      +
      +
      +
      +
      +
      +
      +
      +
      + +
      +
      + +
      +
      + +
      + +
      + +
      +
      + +
      +
      +
      +
      +
      + + + +@stop + +@section('js') + +@endsection + diff --git a/think.greaterchiangmai.com/resources/views/contact/index.blade.php b/think.greaterchiangmai.com/resources/views/contact/index.blade.php new file mode 100644 index 0000000..697f93c --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/contact/index.blade.php @@ -0,0 +1,156 @@ +@extends('layouts.frontendTemplate') + +@section('main') + + +
      +
      +
      +
      + +

      ติดต่อเรา

      + +
      + +
      +
      +
      + + + + +
      +
      +
      +
      + GREATER CHIANG MAI +

      ยินดีที่คุณติดต่อเรามา

      +

      ให้เราเป็นส่วนหนึ่งของคุณ

      +

      Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since. Lorem Ipsum has been the industry. Lorem Ipsum is simply dummy text of the printing and industry.

      + Start your Project +
      +
      +
      +
      + + +
      +
      +
      +
      +
      +
      + +
      + +
      ที่ติดต่อ
      +

      Greater Chiang Mai , เชียงใหม่ , ไทยแลนด์.

      +
      + + +
      + +
      คุยกับเราผ่านช่องทาง
      +

      Line : @thegreaterchiangmai

      + +
      + + +
      + +
      อีเมล
      +

      greaterchiangmai@gmail.com

      + +
      + + +
      + +
      เวลาทำการ
      +

      จันทร์ to เสาร์ - 9.00 - 16.00 น.

      +

      อาทิตย์ - 10.00 - 11.00 น

      +
      + +
      +
      +
      +
      +
      + + +
      +
      +
      +
      +
      tell us about your project
      +

      Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since. Lorem Ipsum has been the industry. Lorem Ipsum is simply dummy text.

      +
      +
      +
      +
      +
      +
      +
      +
      + +
      +
      + +
      +
      + +
      + +
      + +
      +
      + +
      +
      +
      +
      +
      + + + +@stop + +@section('js') + +@endsection + diff --git a/think.greaterchiangmai.com/resources/views/index-en.blade.php b/think.greaterchiangmai.com/resources/views/index-en.blade.php new file mode 100644 index 0000000..d7954ca --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/index-en.blade.php @@ -0,0 +1,216 @@ +@extends('layouts.frontendTemplate') + +{{-- @extends('uc.header') --}} + +@section('main') + + +
      +
      +
      +
      +
      +
      +

      GREATER CHIANG MAI

      +

      Lorem + Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the + industry's standard dummy text ever since the 1500s.

      + CHIANG MAI + AND NOWHERE ELSE + WHERE + ELSE +
      +
      +
      +
      + +
      +
      +
      +
      + GREATER CHIANG MAI +
      About Greater + Chiang Mai
      +
      Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has + been the dummy text ever since the 1500s.
      +
      +
      +
      + +
      +
      +
      + +
      + Tradition
      +

      Lorem Ipsum is simply dummy text of the printing and + typesetting industry.

      +
      +
      +
      + + +
      +
      +
      + +
      + Culture
      +

      Lorem Ipsum is simply dummy text of the printing and + typesetting industry.

      +
      +
      +
      + + +
      +
      +
      +
      + Way of life
      +

      Lorem Ipsum is simply dummy text of the printing and + typesetting industry.

      +
      +
      +
      + +
      +
      +
      + +
      +
      +
      +
      +
      + +

      Culture and Heritage Think tank

      +

      Lorem ipsum dolor sit amet consectetur adipisicing elit. Praesentium dicta quos + laboriosam, cupiditate repellat voluptates illo, libero ex dolore doloribus corrupti veritatis, + suscipit quod deserunt sunt? Odit dolore expedita veniam?

      +
      +
      +
      +
      + +
      +
      +
      +
      +

      Selected latest Story +

      +
      + Articles
      + +
      +
      + + {{-- Chiangmai --}} +
      + CHIANGMAI AND NOWHERE ELSE +
      +
      +
      + +
      +
      + + + {{-- Where Else --}} +
      + WHERE ELSE +
      +
      +
      + +
      +
      +
      +
      + + +@stop + +@section('js') + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/index.blade.php b/think.greaterchiangmai.com/resources/views/index.blade.php new file mode 100644 index 0000000..89f64d6 --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/index.blade.php @@ -0,0 +1,216 @@ +@extends('layouts.frontendTemplate') + +{{-- @extends('uc.header') --}} + +@section('main') + + +
      +
      +
      +
      +
      +
      +

      GREATER CHIANG MAI

      +

      Lorem + Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the + industry's standard dummy text ever since the 1500s.

      + CHIANG MAI + AND NOWHERE ELSE + WHERE + ELSE +
      +
      +
      +
      + +
      +
      +
      +
      + GREATER CHIANG MAI +
      เกี่ยวกับ Greater + Chiang Mai
      +
      Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has + been the dummy text ever since the 1500s.
      +
      +
      +
      + +
      +
      +
      + +
      + Tradition
      +

      Lorem Ipsum is simply dummy text of the printing and + typesetting industry.

      +
      +
      +
      + + +
      +
      +
      + +
      + Culture
      +

      Lorem Ipsum is simply dummy text of the printing and + typesetting industry.

      +
      +
      +
      + + +
      +
      +
      + +
      + Way of life
      +

      Lorem Ipsum is simply dummy text of the printing and + typesetting industry.

      +
      +
      +
      + +
      +
      +
      + +
      +
      +
      +
      +
      + +

      Culture and Heritage Think tank

      +

      Lorem ipsum dolor sit amet consectetur adipisicing elit. Praesentium dicta quos + laboriosam, cupiditate repellat voluptates illo, libero ex dolore doloribus corrupti veritatis, + suscipit quod deserunt sunt? Odit dolore expedita veniam?

      +
      +
      +
      +
      + +
      +
      +
      +
      +

      Selected latest Story +

      +
      + บทความ
      + +
      +
      + + + {{-- Chiangmai --}} +
      + CHIANGMAI AND NOWHERE ELSE +
      +
      +
      + +
      +
      + + {{-- Where Else --}} +
      + WHERE ELSE +
      +
      +
      + +
      +
      +
      +
      +@stop + +@section('js') + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/layouts/frontendTemplate.blade.php b/think.greaterchiangmai.com/resources/views/layouts/frontendTemplate.blade.php new file mode 100644 index 0000000..8ee4108 --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/layouts/frontendTemplate.blade.php @@ -0,0 +1,341 @@ + + + + + + GREATER CHIANG MAI + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + +
      + + + @yield('main') + + + + + + + + + + + + + + + + + + + + @yield('js') + + + diff --git a/think.greaterchiangmai.com/resources/views/privacy-policy/index-en.blade.php b/think.greaterchiangmai.com/resources/views/privacy-policy/index-en.blade.php new file mode 100644 index 0000000..350b184 --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/privacy-policy/index-en.blade.php @@ -0,0 +1,146 @@ +@extends('layouts.frontendTemplate') + +@section('main') + + +
      +
      +
      +
      + +

      + Personal Data Protection Policy

      + +
      + +
      +
      +
      + + +
      +
      +

      + GREATER CHIANG MAI welcomes all service users to the website. www.greaterchiangmai.com which is under the + supervision of GREATER CHIANG MAI and is being prepared This “Privacy Policy” was created to protect the + personal information of users who come to use the website's services. www.greaterchiangmai.com by GREATER + CHIANG MAI has a duty to maintain reliability. Therefore, the following actions are taken in order to + protect users' personal information from other people as follows: +

      +

      +

        +
      • 1. GREATER CHIANG MAI implements personal information security according to specified standards.
      • +
      • 2. Dissemination of information or sharing must be in accordance with the law.
      • +
      • 3. GREATER CHIANG MAI will release personal information only with consent.
      • +
      +

      + +

      + This privacy policy will be used to deal with www.greaterchiangmai.com and , or other platforms located + under the domain name www.greaterchiangmai.com If there are + any changes If something happens to the Personal + Data Protection Policy, GREATER CHIANG MAI will immediately notify the user. +

      + + +

      Collection of personal information +

      +

      +

        +
      • + 1. For the benefit of providing services And to improve the quality of service even further, GREATER + CHIANG MAI needs to collect additional information including IP Address, Browser, Domain name, time of + visit, service usage before coming to the website. www.greaterchiangmai.com Viewed content and user + experience within the website www.greaterchiangmai.com +
      • +
      • 2. Contact information includes first name, last name, email, telephone number.
      • +
      • + 3. www.greaterchiangmai.com Users are advised to check + the privacy policy. If the user deems it + inappropriate and do not want to accept such conditions Users can cancel immediately. +
      • +
      +

      + +

      Use of personal information

      +

      +

        +
      • + 1. www.greaterchiangmai.com We certify that we will not + use the personal information of users that we + have collected. Do not distribute it to outsiders unless you receive it. User consent only +
      • +
      • + 2. In the case where www.greaterchiangmai.com has hired + another agency to process users' personal + information, such as statistical data analysis or Carrying out various activities + www.greaterchiangmai.com will require the company or + person assigned to do so Maintain confidentiality + and Safety of user information It is strictly prohibited to distribute personal information outside of + the Company's activities. www.greaterchiangmai.com only +
      • + +
      +

      + +

      Right to control personal + information +

      +

      + For the sake of maintaining the security and confidentiality of personal information. + www.greaterchiangmai.com Therefore, it sets rules and rights + to access personal information and provides a + secure communication channel for information by encrypting information by using Secure Socket (SSL) Protocol + to use in data transmission. +

      + +

      + Using cookies (Cookies) +

      +

      + Cookies are information that www.greaterchiangmai.com sends + to the user's browser. And when cookies are + installed into the user's system will make the website www.greaterchiangmai.com. User information can be + saved until the user exits the browser or deletes cookies. or do not allow cookies to function first +

      + +

      + Privacy policy updates +

      +

      + Cookies are information at www.greaterchiangmai.com. May + update or amend the Privacy Policy without prior + notice to users. This is for the suitability and efficiency of providing services. We therefore recommend + that users read the privacy policy every time they visit the website. +

      +

      In case of any questions, suggestions or criticisms regarding the privacy policy. or privacy policy + www.greaterchiangmai.com. Happy to answer questions and + suggestions that will be beneficial to service + improvement. You can contact us via the channels below. +

      +

      Email : greaterchiangmai@gmail.com

      +
      +
      + + + + +@stop + +@section('js') + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/privacy-policy/index.blade.php b/think.greaterchiangmai.com/resources/views/privacy-policy/index.blade.php new file mode 100644 index 0000000..dc07526 --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/privacy-policy/index.blade.php @@ -0,0 +1,127 @@ +@extends('layouts.frontendTemplate') + +@section('main') + + +
      +
      +
      +
      + +

      + นโยบายคุ้มครองข้อมูลส่วนบุคคล

      + +
      + +
      +
      +
      + + +
      +
      +

      GREATER CHIANG MAI ยินดีต้อนรับผู้ใช้บริการทุกท่านเข้าสู่เว็บไซต์ www.greaterchiangmai.com + ซึ่งอยู่ในความดูแลของ GREATER CHIANG MAI และดำเนินการจัดทำ “นโยบายสิทธิส่วนบุคคล” (Privacy Policy) + ฉบับนี้ขึ้น เพื่อคุ้มครองข้อมูลส่วนบุคคลของผู้ใช้ที่เข้ามาใช้บริการของเว็บไซต์ www.greaterchiangmai.com โดย + GREATER CHIANG MAI มีหน้าที่ในการรักษาความน่าเชื่อถือ + จึงดำเนินการดังต่อไปนี้เพื่อเป็นการปกป้องข้อมูลส่วนตัวของผู้ใช้จากบุคคลอื่นดังนี้

      +

      +

        +
      • • GREATER CHIANG MAI ดำเนินการรักษาความปลอดภัยข้อมูลส่วนบุคคลตามมาตรฐานที่กำหนด
      • +
      • • การเผยแพร่ข้อมูลหรือการแบ่งปันให้เป็นไปตามที่กฎหมายกำหนด
      • +
      • • GREATER CHIANG MAI จะเผยแพร่ข้อมูลส่วนบุคคลเมื่อได้รับความยินยอมเท่านั้น
      • +
      +

      + +

      นโยบายสิทธิส่วนบุคคลนี้จะใช้ดำเนินการกับ www.greaterchiangmai.com และ , หรือ แพลตฟอร์มอื่นๆ + ที่อยู่ภายใต้โดเมนเนม www.greaterchiangmai.com + หากมีการเปลี่ยนแปลงใดๆ + เกิดขึ้นกับนโยบายคุ้มครองข้อมูลส่วนบุคคล GREATER CHIANG MAI จะดำเนินการแจ้งผู้ใช้ทันที

      + + +

      การเก็บรวบรวมข้อมูลส่วนบุคคล

      +

      +

        +
      • • เพื่อประโยชน์ในการให้บริการ และการปรับปรุงคุณภาพการบริการให้ดียิ่งขึ้น GREATER CHIANG MAI + จำเป็นต้องเก็บรวบรวมข้อมูลเพิ่มเติม ได้แก่ IP Address, Browser, Domain name, เวลาที่เยี่ยมชม,​ + การใช้บริการก่อนที่เข้ามาที่เว็บไซต์ www.greaterchiangmai.com + เนื้อหาที่รับชม + และประสบการณ์ของผู้ใช้ภายในเว็บ www.greaterchiangmai.com
      • +
      • • ข้อมูลติดต่อ ได้แก่ ชื่อ , นามสกุล , อีเมล , หมายเลขโทรศัพท์
      • +
      • www.greaterchiangmai.com + ขอแนะนำให้ผู้ใช้ตรวจสอบนโยบายสิทธิส่วนบุคคล หากผู้ใช้เห็นว่าไม่สมควร + และไม่ต้องการยอมรับเงื่อนไขดังกล่าว ผู้ใช้สามารถยกเลิกได้ทันที
      • +
      +

      + +

      การใช้ข้อมูลส่วนบุคคล

      +

      +

        +
      • www.greaterchiangmai.com + ขอรับรองว่าจะไม่นำข้อมูลส่วนบุคคลของผู้ใช้ที่ได้เก็บรวบรวมไว้ + ไปเผยแพร่แก่บุคคลภายนอกโดยเด็ดขาดเว้นเสียแต่จะได้รับ การยินยอมจากผู้ใช้เท่านั้น
      • +
      • • ในกรณีที่ + www.greaterchiangmai.comได้ว่าจ้างหน่วยงานอื่นเพื่อดำเนินการเกี่ยวกับข้อมูลส่วนบุคคลของผู้ใช้ + เช่น + การวิเคราะห์ข้อมูลเชิงสถิติหรือการ ดำเนินกิจกรรมต่างๆ www.greaterchiangmai.com + จะกำหนดให้บริษัทหรือบุคคลที่ได้รับมอบหมายให้ดำเนินการดังกล่าว เก็บรักษาความลับและความ + ปลอดภัยของข้อมูลผู้ใช้ ห้ามมิให้นำข้อมูลส่วนบุคคลไปเผยแพร่โดยเด็ดขาดนอกเหนือจากกิจกรรมของ + www.greaterchiangmai.com เท่านั้น +
      • + +
      +

      + +

      สิทธิในการควบคุมข้อมูลส่วนบุคคล +

      +

      เพื่อประโยชน์ในการรักษาความปลอดภัยและความลับของข้อมูลส่วนบุคคล www.greaterchiangmai.com + จึงกำหนดกฎและสิทธิในการเข้าถึงข้อมูลส่วนบุคคลและจัดให้มีช่องทางการสื่อสารแบบปลอดภัยสำหรับข้อมูลด้วยการเข้ารหัสข้อมูล + โดยการใช้ Secure Socket (SSL) Protocal เข้ามาใช้ในการรับส่งข้อมูล

      + +

      การใช้คุกกี้ (Cookies) +

      +

      คุกกี้ คือ ข้อมูลที่ www.greaterchiangmai.com ส่งไปยัง Browser + ของผู้ใช้บริการ + และเมื่อมีการติดตั้งคุกกี้ลงไปในระบบของผู้ใช้แล้ว จะทำให้เว็บไซต์ www.greaterchiangmai.com + สามารถบันทึกข้อมูลของผู้ใช้ไว้จนกว่าผู้ใช้จะออกจาก Browser หรือ ทำการลบคุกกี้ + หรือไม่อนุญาตให้คุกกี้ทำงานก่อน

      + +

      การปรับปรุงนโยบายความเป็นส่วนตัว +

      +

      คุกกี้ คือ ข้อมูลที่ www.greaterchiangmai.com + อาจจะทำการปรับปรุงหรือแก้ไขนโยบายความเป็นส่วนตัวโดยไม่แจ้งให้ผู้ใช้ทราบล่วงหน้า + ทั้งนี้เพื่อความเหมาะสมและประสิทธิภาพในการให้บริการ + จึงขอแนะนำให้ผู้ใช้บริการอ่านนโยบายความเป็นส่วนตัวทุกครั้งที่เข้าเยี่ยมชมเว็บไซต์

      +

      ในกรณีที่มีข้อสงสัย ข้อเสนอแนะ หรือติชมเกี่ยวกับนโยบายสิทธิส่วนบุคคล หรือนโยบายความเป็นส่วนตัว + www.greaterchiangmai.com ยินดีที่จะตอบข้อสงสัย ข้อเสนอแนะ + อันจะเป็นประโยชน์ต่อการปรับปรุงบริการ + สามารถติดต่อได้ตามช่องทางด้านล่างนี้ +

      +

      อีเมล : greaterchiangmai@gmail.com

      +
      +
      + + + + +@stop + +@section('js') + +@endsection diff --git a/think.greaterchiangmai.com/resources/views/uc/header.blade.php b/think.greaterchiangmai.com/resources/views/uc/header.blade.php new file mode 100644 index 0000000..634c84c --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/uc/header.blade.php @@ -0,0 +1,22 @@ + + + diff --git a/think.greaterchiangmai.com/resources/views/uc/pagination.blade.php b/think.greaterchiangmai.com/resources/views/uc/pagination.blade.php new file mode 100644 index 0000000..965c8a0 --- /dev/null +++ b/think.greaterchiangmai.com/resources/views/uc/pagination.blade.php @@ -0,0 +1,99 @@ + + + +@if (is_object($data) && $data->hasPages()) +
        + {{-- Previous Page Link --}} + @if ($data->onFirstPage()) +
      • + « +
      • + @else +
      • + +
      • + @endif + + {{-- Pagination Elements --}} + @foreach ($data->links()->elements as $element) + {{-- "Three Dots" Separator --}} + @if (is_string($element)) +
      • + {{ $element }} +
      • + @endif + + {{-- Array of Links --}} + @if (is_array($element)) + @foreach ($element as $page => $url) + @if ($page == $data->currentPage()) +
      • + {{ $page }} +
      • + @else +
      • + {{ $page }} +
      • + @endif + @endforeach + @endif + @endforeach + + {{-- Next Page Link --}} + @if ($data->hasMorePages()) +
      • + +
      • + @else +
      • + » +
      • + @endif +
      +@endif diff --git a/think.greaterchiangmai.com/routes/api.php b/think.greaterchiangmai.com/routes/api.php new file mode 100644 index 0000000..889937e --- /dev/null +++ b/think.greaterchiangmai.com/routes/api.php @@ -0,0 +1,19 @@ +get('/user', function (Request $request) { + return $request->user(); +}); diff --git a/think.greaterchiangmai.com/routes/channels.php b/think.greaterchiangmai.com/routes/channels.php new file mode 100644 index 0000000..5d451e1 --- /dev/null +++ b/think.greaterchiangmai.com/routes/channels.php @@ -0,0 +1,18 @@ +id === (int) $id; +}); diff --git a/think.greaterchiangmai.com/routes/console.php b/think.greaterchiangmai.com/routes/console.php new file mode 100644 index 0000000..e05f4c9 --- /dev/null +++ b/think.greaterchiangmai.com/routes/console.php @@ -0,0 +1,19 @@ +comment(Inspiring::quote()); +})->purpose('Display an inspiring quote'); diff --git a/think.greaterchiangmai.com/routes/web.php b/think.greaterchiangmai.com/routes/web.php new file mode 100644 index 0000000..ebd7edb --- /dev/null +++ b/think.greaterchiangmai.com/routes/web.php @@ -0,0 +1,27 @@ +name('home'); + +Route::get('privacy-policy', [HomeController::class, 'privacyPolicy'])->name('privacyPolicy'); +Route::get('about', [HomeController::class, 'about'])->name('about'); +Route::get('contact', [HomeController::class, 'contact'])->name('contact'); +Route::post('update-article-count', [HomeController::class, 'updateArticleCount'])->name('updateArticleCount'); + +Route::get('category/chiangmai', [HomeController::class, 'category'])->name('category'); +Route::get('category/chiangmai/article/{subCateId}', [HomeController::class, 'article'])->name('article'); +Route::get('category/chiangmai/article-detail/{id}', [HomeController::class, 'articleDetail'])->name('articleDetail'); + +Route::get('category/where-else', [HomeController::class, 'categoryWhereElse'])->name('categoryWhereElse'); +Route::get('category/where-else/article/{subCateId}/{fromDate?}/{toDate?}', [HomeController::class, 'articleWhereElse'])->name('articleWhereElse'); +Route::get('category/where-else/article-detail/{id}', [HomeController::class, 'articleDetailWhereElse'])->name('articleDetailWhereElse'); + +Route::get('article', [HomeController::class, 'articleAll'])->name('articleAll'); \ No newline at end of file diff --git a/think.greaterchiangmai.com/storage/app/.gitignore b/think.greaterchiangmai.com/storage/app/.gitignore new file mode 100644 index 0000000..8f4803c --- /dev/null +++ b/think.greaterchiangmai.com/storage/app/.gitignore @@ -0,0 +1,3 @@ +* +!public/ +!.gitignore diff --git a/think.greaterchiangmai.com/storage/app/public/.gitignore b/think.greaterchiangmai.com/storage/app/public/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/think.greaterchiangmai.com/storage/app/public/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/think.greaterchiangmai.com/storage/framework/.gitignore b/think.greaterchiangmai.com/storage/framework/.gitignore new file mode 100644 index 0000000..05c4471 --- /dev/null +++ b/think.greaterchiangmai.com/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/think.greaterchiangmai.com/storage/framework/cache/.gitignore b/think.greaterchiangmai.com/storage/framework/cache/.gitignore new file mode 100644 index 0000000..01e4a6c --- /dev/null +++ b/think.greaterchiangmai.com/storage/framework/cache/.gitignore @@ -0,0 +1,3 @@ +* +!data/ +!.gitignore diff --git a/think.greaterchiangmai.com/storage/framework/cache/data/.gitignore b/think.greaterchiangmai.com/storage/framework/cache/data/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/think.greaterchiangmai.com/storage/framework/cache/data/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/think.greaterchiangmai.com/storage/framework/sessions/.gitignore b/think.greaterchiangmai.com/storage/framework/sessions/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/think.greaterchiangmai.com/storage/framework/sessions/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/think.greaterchiangmai.com/storage/framework/testing/.gitignore b/think.greaterchiangmai.com/storage/framework/testing/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/think.greaterchiangmai.com/storage/framework/testing/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/think.greaterchiangmai.com/storage/framework/views/.gitignore b/think.greaterchiangmai.com/storage/framework/views/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/think.greaterchiangmai.com/storage/framework/views/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/think.greaterchiangmai.com/storage/logs/.gitignore b/think.greaterchiangmai.com/storage/logs/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/think.greaterchiangmai.com/storage/logs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/think.greaterchiangmai.com/tests/CreatesApplication.php b/think.greaterchiangmai.com/tests/CreatesApplication.php new file mode 100644 index 0000000..cc68301 --- /dev/null +++ b/think.greaterchiangmai.com/tests/CreatesApplication.php @@ -0,0 +1,21 @@ +make(Kernel::class)->bootstrap(); + + return $app; + } +} diff --git a/think.greaterchiangmai.com/tests/Feature/ExampleTest.php b/think.greaterchiangmai.com/tests/Feature/ExampleTest.php new file mode 100644 index 0000000..8364a84 --- /dev/null +++ b/think.greaterchiangmai.com/tests/Feature/ExampleTest.php @@ -0,0 +1,19 @@ +get('/'); + + $response->assertStatus(200); + } +} diff --git a/think.greaterchiangmai.com/tests/TestCase.php b/think.greaterchiangmai.com/tests/TestCase.php new file mode 100644 index 0000000..2932d4a --- /dev/null +++ b/think.greaterchiangmai.com/tests/TestCase.php @@ -0,0 +1,10 @@ +assertTrue(true); + } +} diff --git a/think.greaterchiangmai.com/vite.config.js b/think.greaterchiangmai.com/vite.config.js new file mode 100644 index 0000000..421b569 --- /dev/null +++ b/think.greaterchiangmai.com/vite.config.js @@ -0,0 +1,11 @@ +import { defineConfig } from 'vite'; +import laravel from 'laravel-vite-plugin'; + +export default defineConfig({ + plugins: [ + laravel({ + input: ['resources/css/app.css', 'resources/js/app.js'], + refresh: true, + }), + ], +});